akregator/src
propertiesdialog.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 "akregatorconfig.h"
00026 #include "feed.h"
00027 #include "propertiesdialog.h"
00028
00029 #include <kcombobox.h>
00030 #include <klineedit.h>
00031 #include <kpassdlg.h>
00032 #include <klocale.h>
00033 #include <knuminput.h>
00034
00035 #include <qcheckbox.h>
00036 #include <qbuttongroup.h>
00037 #include <qradiobutton.h>
00038
00039 namespace Akregator {
00040
00041 FeedPropertiesWidget::FeedPropertiesWidget(QWidget *parent, const char *name)
00042 : FeedPropertiesWidgetBase(parent, name)
00043 {
00044 }
00045
00046 FeedPropertiesWidget::~FeedPropertiesWidget()
00047 {}
00048
00049
00050 void FeedPropertiesWidget::slotUpdateComboBoxActivated( int index )
00051 {
00052 if ( index == 3 )
00053 updateSpinBox->setEnabled(false);
00054 else
00055 updateSpinBox->setEnabled(true);
00056 }
00057
00058
00059 void FeedPropertiesWidget::slotUpdateCheckBoxToggled( bool enabled )
00060 {
00061 if (enabled && updateComboBox->currentItem() != 3 )
00062 updateSpinBox->setEnabled(true);
00063 else
00064 updateSpinBox->setEnabled(false);
00065 }
00066
00067
00068 FeedPropertiesDialog::FeedPropertiesDialog(QWidget *parent, const char *name)
00069 : KDialogBase(KDialogBase::Swallow, Qt::WStyle_DialogBorder, parent, name, true, i18n("Feed Properties"), KDialogBase::Ok|KDialogBase::Cancel)
00070 {
00071 widget=new FeedPropertiesWidget(this);
00072 setMainWidget(widget);
00073 widget->feedNameEdit->setFocus();
00074
00075 connect(widget->feedNameEdit, SIGNAL(textChanged(const QString&)), this, SLOT(slotSetCaption(const QString&)));
00076 }
00077
00078 FeedPropertiesDialog::~FeedPropertiesDialog()
00079 {}
00080
00081 void FeedPropertiesDialog::slotOk()
00082 {
00083 m_feed->setNotificationMode(false);
00084 m_feed->setTitle( feedName() );
00085 m_feed->setXmlUrl( url() );
00086 m_feed->setCustomFetchIntervalEnabled(autoFetch());
00087 if (autoFetch())
00088 m_feed->setFetchInterval(fetchInterval());
00089 m_feed->setArchiveMode(archiveMode());
00090 m_feed->setMaxArticleAge(maxArticleAge());
00091 m_feed->setMaxArticleNumber(maxArticleNumber());
00092 m_feed->setMarkImmediatelyAsRead(markImmediatelyAsRead());
00093 m_feed->setUseNotification(useNotification());
00094 m_feed->setLoadLinkedWebsite(loadLinkedWebsite());
00095 m_feed->setNotificationMode(true, true);
00096
00097 KDialogBase::slotOk();
00098 }
00099
00100 void FeedPropertiesDialog::slotSetCaption(const QString& c)
00101 {
00102 if(c.isEmpty())
00103 setCaption(i18n("Feed Properties"));
00104 else
00105 setCaption(i18n("Properties of %1").arg(c));
00106
00107 }
00108
00109 void FeedPropertiesDialog::setFeed(Feed* feed)
00110 {
00111 m_feed = feed;
00112 if (!feed)
00113 return;
00114
00115 setFeedName( feed->title() );
00116 setUrl( feed->xmlUrl() );
00117 setAutoFetch(feed->useCustomFetchInterval());
00118 if (feed->useCustomFetchInterval())
00119 setFetchInterval(feed->fetchInterval());
00120 else
00121 setFetchInterval(Settings::autoFetchInterval());
00122 setArchiveMode(feed->archiveMode());
00123 setMaxArticleAge(feed->maxArticleAge());
00124 setMaxArticleNumber(feed->maxArticleNumber());
00125 setMarkImmediatelyAsRead(feed->markImmediatelyAsRead());
00126 setUseNotification(feed->useNotification());
00127 setLoadLinkedWebsite(feed->loadLinkedWebsite());
00128 slotSetCaption(feedName());
00129 }
00130
00131
00132 const QString FeedPropertiesDialog::feedName() const
00133 {
00134 return widget->feedNameEdit->text();
00135 }
00136
00137 const QString FeedPropertiesDialog::url() const
00138 {
00139 return widget->urlEdit->text();
00140 }
00141
00142 bool FeedPropertiesDialog::autoFetch() const
00143 {
00144 return widget->upChkbox->isChecked();
00145 }
00146
00147 int FeedPropertiesDialog::fetchInterval() const
00148 {
00149 switch (widget->updateComboBox->currentItem() )
00150 {
00151 case 0:
00152 return widget->updateSpinBox->value();
00153 case 1:
00154 return widget->updateSpinBox->value()*60;
00155 case 2:
00156 return widget->updateSpinBox->value()*60*24;
00157 default:
00158 return -1;
00159 }
00160 }
00161
00162 Feed::ArchiveMode FeedPropertiesDialog::archiveMode() const
00163 {
00164
00165 if ( widget->rb_globalDefault->isChecked() )
00166 return Feed::globalDefault;
00167
00168 if ( widget->rb_keepAllArticles->isChecked() )
00169 return Feed::keepAllArticles;
00170
00171 if ( widget->rb_limitArticleAge->isChecked() )
00172 return Feed::limitArticleAge;
00173
00174 if ( widget->rb_limitArticleNumber->isChecked() )
00175 return Feed::limitArticleNumber;
00176
00177 if ( widget->rb_disableArchiving->isChecked() )
00178 return Feed::disableArchiving;
00179
00180
00181
00182 return Feed::globalDefault;
00183 }
00184
00185
00186 int FeedPropertiesDialog::maxArticleAge() const
00187 {
00188 return widget->sb_maxArticleAge->value();
00189 }
00190
00191 int FeedPropertiesDialog::maxArticleNumber() const
00192 {
00193 return widget->sb_maxArticleNumber->value();
00194 }
00195
00196 void FeedPropertiesDialog::setArchiveMode(Feed::ArchiveMode mode)
00197 {
00198 switch (mode)
00199 {
00200 case Feed::globalDefault:
00201 widget->rb_globalDefault->setChecked(true);
00202 break;
00203 case Feed::keepAllArticles:
00204 widget->rb_keepAllArticles->setChecked(true);
00205 break;
00206 case Feed::disableArchiving:
00207 widget->rb_disableArchiving->setChecked(true);
00208 break;
00209 case Feed::limitArticleAge:
00210 widget->rb_limitArticleAge->setChecked(true);
00211 break;
00212 case Feed::limitArticleNumber:
00213 widget->rb_limitArticleNumber->setChecked(true);
00214 }
00215 }
00216 void FeedPropertiesDialog::setFeedName(const QString& title)
00217 {
00218 widget->feedNameEdit->setText(title);
00219 }
00220
00221 void FeedPropertiesDialog::setUrl(const QString& url)
00222 {
00223 widget->urlEdit->setText(url);
00224 }
00225
00226 void FeedPropertiesDialog::setAutoFetch(bool customFetchEnabled)
00227 {
00228 widget->upChkbox->setChecked(customFetchEnabled);
00229 widget->updateComboBox->setEnabled(customFetchEnabled);
00230
00231 if (widget->updateSpinBox->value() > -1)
00232 widget->updateSpinBox->setEnabled(customFetchEnabled);
00233 else
00234 widget->updateSpinBox->setEnabled(false);
00235 }
00236
00237 void FeedPropertiesDialog::setFetchInterval(int interval)
00238 {
00239 if (interval == -1)
00240 {
00241 widget->updateSpinBox->setValue(0);
00242 widget->updateSpinBox->setDisabled(true);
00243 widget->updateComboBox->setCurrentItem(3);
00244 return;
00245 }
00246
00247 if (interval == 0)
00248 {
00249 widget->updateSpinBox->setValue(0);
00250 widget->updateSpinBox->setEnabled(widget->upChkbox->isChecked());
00251 widget->updateComboBox->setCurrentItem(0);
00252 return;
00253 }
00254
00255 if (interval % (60*24) == 0)
00256 {
00257 widget->updateSpinBox->setValue(interval / (60*24) );
00258 widget->updateSpinBox->setEnabled(widget->upChkbox->isChecked());
00259 widget->updateComboBox->setCurrentItem(2);
00260 return;
00261 }
00262
00263 if (interval % 60 == 0)
00264 {
00265 widget->updateSpinBox->setValue(interval / 60 );
00266 widget->updateSpinBox->setEnabled(widget->upChkbox->isChecked());
00267 widget->updateComboBox->setCurrentItem(1);
00268 return;
00269 }
00270
00271 widget->updateSpinBox->setValue(interval);
00272 widget->updateSpinBox->setEnabled(widget->upChkbox->isChecked());
00273 widget->updateComboBox->setCurrentItem(0);
00274 }
00275
00276 void FeedPropertiesDialog::setMaxArticleAge(int age)
00277 {
00278 widget->sb_maxArticleAge->setValue(age);
00279 }
00280
00281 void FeedPropertiesDialog::setMaxArticleNumber(int number)
00282 {
00283 widget->sb_maxArticleNumber->setValue(number);
00284 }
00285
00286 void FeedPropertiesDialog::setMarkImmediatelyAsRead(bool enabled)
00287 {
00288 widget->checkBox_markRead->setChecked(enabled);
00289 }
00290
00291 bool FeedPropertiesDialog::markImmediatelyAsRead() const
00292 {
00293 return widget->checkBox_markRead->isChecked();
00294 }
00295
00296 void FeedPropertiesDialog::setUseNotification(bool enabled)
00297 {
00298 widget->checkBox_useNotification->setChecked(enabled);
00299 }
00300
00301 bool FeedPropertiesDialog::useNotification() const
00302 {
00303 return widget->checkBox_useNotification->isChecked();
00304 }
00305
00306 bool FeedPropertiesDialog::loadLinkedWebsite() const
00307 {
00308 return widget->checkBox_loadWebsite->isChecked();
00309 }
00310
00311 void FeedPropertiesDialog::setLoadLinkedWebsite(bool enabled)
00312 {
00313 widget->checkBox_loadWebsite->setChecked(enabled);
00314 }
00315
00316 void FeedPropertiesDialog::selectFeedName()
00317 {
00318 widget->feedNameEdit->selectAll();
00319 }
00320
00321 }
00322
00323 #include "propertiesdialog.moc"
00324
|