akregator/src
addfeeddialog.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #include "feed.h"
00026 #include "addfeeddialog.h"
00027
00028 #include <qcheckbox.h>
00029
00030 #include <kapplication.h>
00031 #include <kurl.h>
00032 #include <klocale.h>
00033 #include <klineedit.h>
00034 #include <kiconloader.h>
00035 #include <kicontheme.h>
00036 #include <kdebug.h>
00037 #include <ksqueezedtextlabel.h>
00038 #include <kmessagebox.h>
00039
00040 namespace Akregator {
00041
00042 AddFeedWidget::AddFeedWidget(QWidget *parent, const char *name)
00043 : AddFeedWidgetBase(parent, name)
00044 {
00045 pixmapLabel1->setPixmap(kapp->iconLoader()->loadIcon( "package_network",KIcon::Desktop,KIcon::SizeHuge, KIcon::DefaultState, 0, true));
00046 statusLabel->setText(QString::null);
00047 }
00048
00049 AddFeedWidget::~AddFeedWidget()
00050 {}
00051
00052 AddFeedDialog::AddFeedDialog(QWidget *parent, const char *name)
00053 : KDialogBase(KDialogBase::Swallow, Qt::WStyle_DialogBorder, parent, name, true, i18n("Add Feed"), KDialogBase::Ok|KDialogBase::Cancel)
00054 {
00055 widget = new AddFeedWidget(this);
00056 connect(widget->urlEdit, SIGNAL(textChanged(const QString&)), this, SLOT(textChanged(const QString&)));
00057 enableButtonOK(false);
00058 setMainWidget(widget);
00059 }
00060
00061 AddFeedDialog::~AddFeedDialog()
00062 {}
00063
00064 void AddFeedDialog::setURL(const QString& t)
00065 {
00066 widget->urlEdit->setText(t);
00067 }
00068
00069 void AddFeedDialog::slotOk( )
00070 {
00071 enableButtonOK(false);
00072 feedURL = widget->urlEdit->text().stripWhiteSpace();
00073
00074 Feed *f=new Feed();
00075
00076 feed=f;
00077
00078
00079 if (feedURL.startsWith("feed:"))
00080 feedURL = feedURL.right( feedURL.length() - 5 );
00081
00082 if (feedURL.find(":/") == -1)
00083 feedURL.prepend("http://");
00084 f->setXmlUrl(feedURL);
00085
00086 widget->statusLabel->setText( i18n("Downloading %1").arg(feedURL) );
00087
00088 connect( feed, SIGNAL(fetched(Feed* )),
00089 this, SLOT(fetchCompleted(Feed *)) );
00090 connect( feed, SIGNAL(fetchError(Feed* )),
00091 this, SLOT(fetchError(Feed *)) );
00092 connect( feed, SIGNAL(fetchDiscovery(Feed* )),
00093 this, SLOT(fetchDiscovery(Feed *)) );
00094
00095 f->fetch(true);
00096 }
00097
00098 void AddFeedDialog::fetchCompleted(Feed *)
00099 {
00100 KDialogBase::slotOk();
00101 }
00102
00103 void AddFeedDialog::fetchError(Feed *)
00104 {
00105 KMessageBox::error(this, i18n("Feed not found from %1.").arg(feedURL));
00106 KDialogBase::slotCancel();
00107 }
00108
00109 void AddFeedDialog::fetchDiscovery(Feed *f)
00110 {
00111 widget->statusLabel->setText( i18n("Feed found, downloading...") );
00112 feedURL=f->xmlUrl();
00113 }
00114
00115 void AddFeedDialog::textChanged(const QString& text)
00116 {
00117 enableButtonOK(!text.isEmpty());
00118 }
00119
00120 }
00121
00122 #include "addfeeddialog.moc"
00123
|