• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdepim API Reference
  • KDE Home
  • Contact Us
 

akregator

  • sources
  • kde-4.12
  • kdepim
  • akregator
  • src
feedpropertiesdialog.cpp
Go to the documentation of this file.
1 /*
2  This file is part of Akregator.
3 
4  Copyright (C) 2004 Stanislav Karchebny <Stanislav.Karchebny@kdemail.net>
5 
6  This program is free software; you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation; either version 2 of the License, or
9  (at your option) any later version.
10 
11  This program is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with this program; if not, write to the Free Software
18  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
19 
20  As a special exception, permission is given to link this program
21  with any edition of Qt, and distribute the resulting executable,
22  without including the source code for Qt in the source distribution.
23 */
24 
25 #include "feedpropertiesdialog.h"
26 #include "akregatorconfig.h"
27 
28 #include <kcombobox.h>
29 #include <klineedit.h>
30 #include <klocale.h>
31 #include <knuminput.h>
32 #include <kpassworddialog.h>
33 
34 #include <QCheckBox>
35 
36 namespace Akregator {
37 
38 FeedPropertiesWidget::FeedPropertiesWidget(QWidget *parent, const char *name)
39  : QWidget(parent)
40 {
41  setObjectName(name);
42  setupUi(this);
43  connect( cb_updateInterval, SIGNAL(toggled(bool)),
44  updateSpinBox, SLOT(setEnabled(bool)) );
45  connect( cb_updateInterval, SIGNAL(toggled(bool)),
46  updateComboBox, SLOT(setEnabled(bool)) );
47  connect( cb_updateInterval, SIGNAL(toggled(bool)),
48  updateLabel, SLOT(setEnabled(bool)) );
49  connect( updateComboBox, SIGNAL(activated(int)),
50  this, SLOT(slotUpdateComboBoxActivated(int)) );
51  connect( updateSpinBox, SIGNAL(valueChanged(int)),
52  this, SLOT(slotUpdateComboBoxLabels(int)) );
53  connect( rb_limitArticleAge, SIGNAL(toggled(bool)),
54  sb_maxArticleAge, SLOT(setEnabled(bool)) );
55  connect( rb_limitArticleNumber, SIGNAL(toggled(bool)),
56  sb_maxArticleNumber, SLOT(setEnabled(bool)) );
57 }
58 
59 FeedPropertiesWidget::~FeedPropertiesWidget()
60 {}
61 
62 
63 void FeedPropertiesWidget::slotUpdateComboBoxActivated( int index )
64 {
65  updateSpinBox->setEnabled( index != Never );
66 }
67 
68 
69 void FeedPropertiesWidget::slotUpdateComboBoxLabels( int value )
70 {
71  updateComboBox->setItemText(FeedPropertiesWidget::Minutes, i18np("Minute", "Minutes", value));
72  updateComboBox->setItemText(FeedPropertiesWidget::Hours, i18np("Hour", "Hours", value));
73  updateComboBox->setItemText(FeedPropertiesWidget::Days, i18np("Day", "Days", value));
74 }
75 
76 
77 void FeedPropertiesWidget::slotUpdateCheckBoxToggled( bool enabled )
78 {
79  updateSpinBox->setEnabled( enabled && updateComboBox->currentIndex() != Never );
80 }
81 
82 
83 FeedPropertiesDialog::FeedPropertiesDialog(QWidget *parent, const char *name)
84  : KDialog(parent/*, Qt::WStyle_DialogBorder*/)
85 {
86  setObjectName(name);
87  widget=new FeedPropertiesWidget(this);
88  setWindowTitle(i18n("Feed Properties"));
89  setButtons(KDialog::Ok|KDialog::Cancel);
90  setDefaultButton(KDialog::Ok);
91  setModal(true);
92 
93  setMainWidget(widget);
94  widget->feedNameEdit->setFocus();
95 
96  widget->updateComboBox->insertItem(FeedPropertiesWidget::Minutes, i18np("Minute", "Minutes", 0));
97  widget->updateComboBox->insertItem(FeedPropertiesWidget::Hours, i18np("Hour", "Hours", 0));
98  widget->updateComboBox->insertItem(FeedPropertiesWidget::Days, i18np("Day", "Days", 0));
99  widget->updateComboBox->insertItem(FeedPropertiesWidget::Never,
100  i18nc("never fetch new articles", "Never"));
101  widget->sb_maxArticleAge->setSuffix(ki18np(" day", " days"));
102  widget->sb_maxArticleNumber->setSuffix(ki18np(" article", " articles"));
103 
104  connect(widget->feedNameEdit, SIGNAL(textChanged(QString)), this, SLOT(slotSetWindowTitle(QString)));
105 }
106 
107 FeedPropertiesDialog::~FeedPropertiesDialog()
108 {}
109 
110 void FeedPropertiesDialog::accept()
111 {
112  m_feed->setNotificationMode(false);
113  m_feed->setTitle( feedName() );
114  m_feed->setXmlUrl( url() );
115  m_feed->setCustomFetchIntervalEnabled(autoFetch());
116  if (autoFetch())
117  m_feed->setFetchInterval(fetchInterval());
118  m_feed->setArchiveMode(archiveMode());
119  m_feed->setMaxArticleAge(maxArticleAge());
120  m_feed->setMaxArticleNumber(maxArticleNumber());
121  m_feed->setMarkImmediatelyAsRead(markImmediatelyAsRead());
122  m_feed->setUseNotification(useNotification());
123  m_feed->setLoadLinkedWebsite(loadLinkedWebsite());
124  m_feed->setNotificationMode(true);
125 
126  KDialog::accept();
127 }
128 
129 void FeedPropertiesDialog::slotSetWindowTitle(const QString& title)
130 {
131  setWindowTitle(title.isEmpty() ? i18n("Feed Properties")
132  : i18n("Properties of %1", title));
133 }
134 
135 void FeedPropertiesDialog::setFeed(Feed* feed)
136 {
137  m_feed = feed;
138  if (!feed)
139  return;
140 
141  setFeedName( feed->title() );
142  setUrl( feed->xmlUrl() );
143  setAutoFetch(feed->useCustomFetchInterval());
144  if (feed->useCustomFetchInterval())
145  setFetchInterval(feed->fetchInterval());
146  else
147  setFetchInterval(Settings::autoFetchInterval());
148  setArchiveMode(feed->archiveMode());
149  setMaxArticleAge(feed->maxArticleAge());
150  setMaxArticleNumber(feed->maxArticleNumber());
151  setMarkImmediatelyAsRead(feed->markImmediatelyAsRead());
152  setUseNotification(feed->useNotification());
153  setLoadLinkedWebsite(feed->loadLinkedWebsite());
154  slotSetWindowTitle(feedName());
155 }
156 
157 
158 QString FeedPropertiesDialog::feedName() const
159 {
160  return widget->feedNameEdit->text();
161 }
162 
163 QString FeedPropertiesDialog::url() const
164 {
165  return widget->urlEdit->text();
166 }
167 
168 bool FeedPropertiesDialog::autoFetch() const
169 {
170  return widget->cb_updateInterval->isChecked();
171 }
172 
173 int FeedPropertiesDialog::fetchInterval() const
174 {
175  switch (widget->updateComboBox->currentIndex() )
176  {
177  case FeedPropertiesWidget::Minutes:
178  return widget->updateSpinBox->value();
179  case FeedPropertiesWidget::Hours:
180  return widget->updateSpinBox->value()*60;
181  case FeedPropertiesWidget::Days:
182  return widget->updateSpinBox->value()*60*24;
183  case FeedPropertiesWidget::Never:
184  default:
185  return -1; // never
186  }
187 }
188 
189 Feed::ArchiveMode FeedPropertiesDialog::archiveMode() const
190 {
191  // i could check the button group's int, but order could change...
192  if ( widget->rb_globalDefault->isChecked() )
193  return Feed::globalDefault;
194 
195  if ( widget->rb_keepAllArticles->isChecked() )
196  return Feed::keepAllArticles;
197 
198  if ( widget->rb_limitArticleAge->isChecked() )
199  return Feed::limitArticleAge;
200 
201  if ( widget->rb_limitArticleNumber->isChecked() )
202  return Feed::limitArticleNumber;
203 
204  if ( widget->rb_disableArchiving->isChecked() )
205  return Feed::disableArchiving;
206 
207  // in a perfect world, this is never reached
208 
209  return Feed::globalDefault;
210 }
211 
212 
213 int FeedPropertiesDialog::maxArticleAge() const
214 {
215  return widget->sb_maxArticleAge->value();
216 }
217 
218 int FeedPropertiesDialog::maxArticleNumber() const
219 {
220  return widget->sb_maxArticleNumber->value();
221 }
222 
223 void FeedPropertiesDialog::setArchiveMode(Feed::ArchiveMode mode)
224  {
225  switch (mode)
226  {
227  case Feed::globalDefault:
228  widget->rb_globalDefault->setChecked(true);
229  break;
230  case Feed::keepAllArticles:
231  widget->rb_keepAllArticles->setChecked(true);
232  break;
233  case Feed::disableArchiving:
234  widget->rb_disableArchiving->setChecked(true);
235  break;
236  case Feed::limitArticleAge:
237  widget->rb_limitArticleAge->setChecked(true);
238  break;
239  case Feed::limitArticleNumber:
240  widget->rb_limitArticleNumber->setChecked(true);
241  }
242 }
243 void FeedPropertiesDialog::setFeedName(const QString& title)
244 {
245  widget->feedNameEdit->setText(title);
246 }
247 
248 void FeedPropertiesDialog::setUrl(const QString& url)
249 {
250  widget->urlEdit->setText(url);
251 }
252 
253 void FeedPropertiesDialog::setAutoFetch(bool customFetchEnabled)
254 {
255  widget->cb_updateInterval->setChecked(customFetchEnabled);
256  widget->updateComboBox->setEnabled(customFetchEnabled);
257 
258  if (widget->updateSpinBox->value() > -1)
259  widget->updateSpinBox->setEnabled(customFetchEnabled);
260  else
261  widget->updateSpinBox->setEnabled(false);
262 }
263 
264 void FeedPropertiesDialog::setFetchInterval(int interval)
265 {
266  if (interval == -1) // never update
267  {
268  widget->updateSpinBox->setValue(0);
269  widget->updateSpinBox->setDisabled(true);
270  widget->updateComboBox->setCurrentIndex( FeedPropertiesWidget::Never );
271  return;
272  }
273 
274  if (interval == 0)
275  {
276  widget->updateSpinBox->setValue(0);
277  widget->updateSpinBox->setEnabled(widget->cb_updateInterval->isChecked());
278  widget->updateComboBox->setCurrentIndex( FeedPropertiesWidget::Minutes );
279  return;
280  }
281 
282  if (interval % (60*24) == 0)
283  {
284  widget->updateSpinBox->setValue(interval / (60*24) );
285  widget->updateSpinBox->setEnabled(widget->cb_updateInterval->isChecked());
286  widget->updateComboBox->setCurrentIndex( FeedPropertiesWidget::Days );
287  return;
288  }
289 
290  if (interval % 60 == 0)
291  {
292  widget->updateSpinBox->setValue(interval / 60 );
293  widget->updateSpinBox->setEnabled(widget->cb_updateInterval->isChecked());
294  widget->updateComboBox->setCurrentIndex( FeedPropertiesWidget::Hours );
295  return;
296  }
297 
298  widget->updateSpinBox->setValue(interval);
299  widget->updateSpinBox->setEnabled(widget->cb_updateInterval->isChecked());
300  widget->updateComboBox->setCurrentIndex( FeedPropertiesWidget::Minutes );
301 }
302 
303 void FeedPropertiesDialog::setMaxArticleAge(int age)
304  {
305  widget->sb_maxArticleAge->setValue(age);
306 }
307 
308 void FeedPropertiesDialog::setMaxArticleNumber(int number)
309 {
310  widget->sb_maxArticleNumber->setValue(number);
311 }
312 
313 void FeedPropertiesDialog::setMarkImmediatelyAsRead(bool enabled)
314 {
315  widget->checkBox_markRead->setChecked(enabled);
316 }
317 
318 bool FeedPropertiesDialog::markImmediatelyAsRead() const
319 {
320  return widget->checkBox_markRead->isChecked();
321 }
322 
323 void FeedPropertiesDialog::setUseNotification(bool enabled)
324 {
325  widget->checkBox_useNotification->setChecked(enabled);
326 }
327 
328 bool FeedPropertiesDialog::useNotification() const
329 {
330  return widget->checkBox_useNotification->isChecked();
331 }
332 
333 bool FeedPropertiesDialog::loadLinkedWebsite() const
334 {
335  return widget->checkBox_loadWebsite->isChecked();
336 }
337 
338 void FeedPropertiesDialog::setLoadLinkedWebsite(bool enabled)
339 {
340  widget->checkBox_loadWebsite->setChecked(enabled);
341 }
342 
343 void FeedPropertiesDialog::selectFeedName()
344 {
345  widget->feedNameEdit->selectAll();
346 }
347 
348 } // namespace Akregator
349 
350 #include "feedpropertiesdialog.moc"
Akregator::Feed::maxArticleAge
int maxArticleAge() const
returns the maximum age of articles used for expiration by age (used in limitArticleAge archive mode)...
Definition: feed.cpp:333
Akregator::Feed::useCustomFetchInterval
bool useCustomFetchInterval() const
returns whether this feed uses its own fetch interval or the global setting
Definition: feed.cpp:325
Akregator::FeedPropertiesWidget
Definition: feedpropertiesdialog.h:38
Akregator::FeedPropertiesDialog::setLoadLinkedWebsite
void setLoadLinkedWebsite(bool enabled)
Definition: feedpropertiesdialog.cpp:338
Akregator::Feed::useNotification
bool useNotification() const
Definition: feed.cpp:357
Akregator::FeedPropertiesWidget::slotUpdateComboBoxLabels
void slotUpdateComboBoxLabels(int value)
Definition: feedpropertiesdialog.cpp:69
Akregator::Feed::setMarkImmediatelyAsRead
void setMarkImmediatelyAsRead(bool enabled)
Definition: feed.cpp:345
Akregator::Feed::setFetchInterval
void setFetchInterval(int interval)
Sets custom auto fetch interval.
Definition: feed.cpp:331
Akregator::TreeNode::title
QString title() const
Get title of node.
Definition: treenode.cpp:87
QWidget
Akregator::Feed::setUseNotification
void setUseNotification(bool enabled)
Definition: feed.cpp:352
Akregator::FeedPropertiesDialog::url
QString url() const
Definition: feedpropertiesdialog.cpp:163
Akregator::FeedPropertiesDialog::useNotification
bool useNotification() const
Definition: feedpropertiesdialog.cpp:328
Akregator::Feed::fetchInterval
int fetchInterval() const
Returns custom auto fetch interval of this feed.
Definition: feed.cpp:329
Akregator::Feed::markImmediatelyAsRead
bool markImmediatelyAsRead() const
if true, new articles are marked immediately as read instead of new/unread.
Definition: feed.cpp:341
Akregator::FeedPropertiesDialog::setMaxArticleNumber
void setMaxArticleNumber(int number)
Definition: feedpropertiesdialog.cpp:308
KDialog
Akregator::Feed::setMaxArticleNumber
void setMaxArticleNumber(int maxArticleNumber)
sets the article count limit used in limitArticleNumber archive mode
Definition: feed.cpp:339
Akregator::FeedPropertiesWidget::slotUpdateComboBoxActivated
void slotUpdateComboBoxActivated(int index)
Definition: feedpropertiesdialog.cpp:63
Akregator::FeedPropertiesWidget::FeedPropertiesWidget
FeedPropertiesWidget(QWidget *parent=0, const char *name=0)
Definition: feedpropertiesdialog.cpp:38
Akregator::Feed::keepAllArticles
Don't delete any articles.
Definition: feed.h:62
Akregator::FeedPropertiesDialog::setUseNotification
void setUseNotification(bool enabled)
Definition: feedpropertiesdialog.cpp:323
Akregator::FeedPropertiesDialog::setMarkImmediatelyAsRead
void setMarkImmediatelyAsRead(bool enabled)
Definition: feedpropertiesdialog.cpp:313
Akregator::FeedPropertiesDialog::~FeedPropertiesDialog
~FeedPropertiesDialog()
Definition: feedpropertiesdialog.cpp:107
Akregator::FeedPropertiesDialog::selectFeedName
void selectFeedName()
selects the text in the feed title lineedit
Definition: feedpropertiesdialog.cpp:343
Akregator::FeedPropertiesWidget::slotUpdateCheckBoxToggled
void slotUpdateCheckBoxToggled(bool enabled)
Definition: feedpropertiesdialog.cpp:77
Akregator::FeedPropertiesDialog::setMaxArticleAge
void setMaxArticleAge(int age)
Definition: feedpropertiesdialog.cpp:303
akregatorconfig.h
feedpropertiesdialog.h
Akregator::Feed::archiveMode
ArchiveMode archiveMode() const
returns the archiving mode which is used for this feed
Definition: feed.cpp:738
Akregator::FeedPropertiesWidget::~FeedPropertiesWidget
~FeedPropertiesWidget()
Definition: feedpropertiesdialog.cpp:59
Akregator::TreeNode::setTitle
void setTitle(const QString &title)
Sets the title of the node.
Definition: treenode.cpp:92
Akregator::FeedPropertiesDialog::setFeedName
void setFeedName(const QString &title)
Definition: feedpropertiesdialog.cpp:243
Akregator::FeedPropertiesDialog::archiveMode
Feed::ArchiveMode archiveMode() const
Definition: feedpropertiesdialog.cpp:189
Akregator::FeedPropertiesDialog::loadLinkedWebsite
bool loadLinkedWebsite() const
Definition: feedpropertiesdialog.cpp:333
Akregator::Feed::xmlUrl
QString xmlUrl() const
returns the url of the actual feed source (rss/rdf/atom file)
Definition: feed.cpp:374
Akregator::FeedPropertiesDialog::setFeed
void setFeed(Feed *feed)
Definition: feedpropertiesdialog.cpp:135
Akregator::Feed::globalDefault
use default from Settings (default)
Definition: feed.h:61
Akregator::FeedPropertiesDialog::fetchInterval
int fetchInterval() const
Definition: feedpropertiesdialog.cpp:173
Akregator::Feed::ArchiveMode
ArchiveMode
the archiving modes
Definition: feed.h:60
Akregator::FeedPropertiesWidget::Minutes
Definition: feedpropertiesdialog.h:47
Akregator::Feed::setLoadLinkedWebsite
void setLoadLinkedWebsite(bool enabled)
if true, the linked URL is loaded directly in the article viewer instead of showing the description ...
Definition: feed.cpp:362
Akregator::Settings::autoFetchInterval
static int autoFetchInterval()
Get Interval for autofetching.
Definition: akregatorconfig.h:562
Akregator::Feed::loadLinkedWebsite
bool loadLinkedWebsite() const
Definition: feed.cpp:367
Akregator::Feed::setXmlUrl
void setXmlUrl(const QString &s)
sets the url of the actual feed source (rss/rdf/atom file)
Definition: feed.cpp:376
Akregator::FeedPropertiesDialog::FeedPropertiesDialog
FeedPropertiesDialog(QWidget *parent=0, const char *name=0)
Definition: feedpropertiesdialog.cpp:83
Akregator::FeedPropertiesDialog::setArchiveMode
void setArchiveMode(Feed::ArchiveMode mode)
Definition: feedpropertiesdialog.cpp:223
Akregator::FeedPropertiesWidget::Never
Definition: feedpropertiesdialog.h:50
Akregator::FeedPropertiesDialog::maxArticleAge
int maxArticleAge() const
Definition: feedpropertiesdialog.cpp:213
Akregator::Feed
represents a feed
Definition: feed.h:52
Akregator::FeedPropertiesWidget::Days
Definition: feedpropertiesdialog.h:49
Akregator::FeedPropertiesDialog::feedName
QString feedName() const
Definition: feedpropertiesdialog.cpp:158
Akregator::FeedPropertiesDialog::setFetchInterval
void setFetchInterval(int)
Definition: feedpropertiesdialog.cpp:264
Akregator::Feed::setArchiveMode
void setArchiveMode(ArchiveMode archiveMode)
sets the archiving mode for this feed
Definition: feed.cpp:743
Akregator::FeedPropertiesWidget::Hours
Definition: feedpropertiesdialog.h:48
Akregator::Feed::limitArticleAge
Save articles not older than maxArticleAge() (or keep flag set)
Definition: feed.h:65
Akregator::FeedPropertiesDialog::maxArticleNumber
int maxArticleNumber() const
Definition: feedpropertiesdialog.cpp:218
Akregator::FeedPropertiesDialog::autoFetch
bool autoFetch() const
Definition: feedpropertiesdialog.cpp:168
Akregator::Feed::maxArticleNumber
int maxArticleNumber() const
returns the article count limit used in limitArticleNumber archive mode
Definition: feed.cpp:337
Akregator::Feed::limitArticleNumber
Save maxArticleNumber() articles, plus the ones with keep flag set.
Definition: feed.h:64
Akregator::Feed::setMaxArticleAge
void setMaxArticleAge(int maxArticleAge)
sets the maximum age of articles used for expiration by age (used in limitArticleAge archive mode) ...
Definition: feed.cpp:335
Akregator::FeedPropertiesDialog::markImmediatelyAsRead
bool markImmediatelyAsRead() const
Definition: feedpropertiesdialog.cpp:318
Akregator::FeedPropertiesDialog::setUrl
void setUrl(const QString &url)
Definition: feedpropertiesdialog.cpp:248
Akregator::TreeNode::setNotificationMode
virtual void setNotificationMode(bool doNotify)
Definition: treenode.cpp:178
Akregator::FeedPropertiesDialog::accept
void accept()
Definition: feedpropertiesdialog.cpp:110
Akregator::FeedPropertiesDialog::setAutoFetch
void setAutoFetch(bool)
Definition: feedpropertiesdialog.cpp:253
Akregator::Feed::setCustomFetchIntervalEnabled
void setCustomFetchIntervalEnabled(bool enabled)
set if the feed has its custom fetch interval or uses the global setting
Definition: feed.cpp:327
Akregator::Feed::disableArchiving
Don't save any articles except articles with keep flag set (equal to maxArticleNumber() == 0) ...
Definition: feed.h:63
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:58:14 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

akregator

Skip menu "akregator"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdepim API Reference

Skip menu "kdepim API Reference"
  • akonadi_next
  • akregator
  • blogilo
  • calendarsupport
  • console
  •   kabcclient
  •   konsolekalendar
  • kaddressbook
  • kalarm
  •   lib
  • kdgantt2
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korgac
  • korganizer
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • mailcommon
  • messagelist
  • messageviewer

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal