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

knode

  • sources
  • kde-4.12
  • kdepim
  • knode
knconfig.cpp
Go to the documentation of this file.
1 /*
2  KNode, the KDE newsreader
3  Copyright (c) 1999-2006 the KNode authors.
4  See file AUTHORS for details
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  You should have received a copy of the GNU General Public License
11  along with this program; if not, write to the Free Software Foundation,
12  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
13 */
14 
15 #include "knconfig.h"
16 
17 #include "kndisplayedheader.h"
18 #include "knglobals.h"
19 #include "settings.h"
20 #include "utilities.h"
21 
22 #include <klocale.h>
23 #include <kstandarddirs.h>
24 #include <kdebug.h>
25 #include <kiconloader.h>
26 #include <kiconeffect.h>
27 
28 
29 KNode::Appearance::Appearance()
30 {
31  recreateLVIcons();
32  i_cons[newFups] = UserIcon("newsubs");
33  i_cons[eyes] = UserIcon("eyes");
34  i_cons[ignore] = UserIcon("ignore");
35  i_cons[mail] = SmallIcon("mail-message");
36  i_cons[posting] = UserIcon("article");
37  i_cons[canceledPosting] = SmallIcon("edit-delete");
38  i_cons[savedRemote] = SmallIcon("edit-copy");
39  i_cons[group] = UserIcon("group");
40 }
41 
42 
43 void KNode::Appearance::recreateLVIcons()
44 {
45  QPixmap tempPix = UserIcon("greyball");
46 
47  QImage tempImg=tempPix.toImage();
48  KIconEffect::colorize(tempImg, knGlobals.settings()->readArticleColor(), 1.0);
49  i_cons[greyBall] = QPixmap::fromImage(tempImg);
50 
51  tempImg=tempPix.toImage();
52  KIconEffect::colorize(tempImg, knGlobals.settings()->unreadArticleColor(), 1.0);
53  i_cons[redBall] = QPixmap::fromImage(tempImg);
54 
55  tempPix = UserIcon("greyballchk");
56 
57  tempImg=tempPix.toImage();
58  KIconEffect::colorize(tempImg, knGlobals.settings()->readArticleColor(), 1.0);
59  i_cons[greyBallChkd] = QPixmap::fromImage(tempImg);
60 
61  tempImg=tempPix.toImage();
62  KIconEffect::colorize(tempImg, knGlobals.settings()->unreadArticleColor(), 1.0);
63  i_cons[redBallChkd] = QPixmap::fromImage(tempImg);
64 }
65 
66 
67 //==============================================================================================================
68 
69 
70 KNode::DisplayedHeaders::DisplayedHeaders()
71 {
72  QString fname( KStandardDirs::locate( "data","knode/headers.rc" ) );
73 
74  if (!fname.isNull()) {
75  KConfig headerConf( fname, KConfig::SimpleConfig);
76  QStringList headers = headerConf.groupList();
77  headers.removeAll("<default>");
78  headers.sort();
79 
80  KNDisplayedHeader *h;
81  QList<int> flags;
82 
83  QStringList::Iterator it;
84  for( it = headers.begin(); it != headers.end(); ++it ) {
85  h=createNewHeader();
86  KConfigGroup cg(&headerConf, (*it));
87  h->setName(cg.readEntry("Name"));
88  h->setTranslateName(cg.readEntry("Translate_Name",true));
89  h->setHeader(cg.readEntry("Header"));
90  flags=cg.readEntry("Flags",QList<int>());
91  if(h->name().isNull() || h->header().isNull() || (flags.count()!=8)) {
92  kDebug(5003) <<"KNConfig::DisplayedHeaders::DisplayedHeaders() : ignoring invalid/incomplete Header";
93  remove(h);
94  }
95  else {
96  for (int i=0; i<8; ++i)
97  h->setFlag(i, (flags[i]>0));
98  h->createTags();
99  }
100  }
101  }
102 }
103 
104 
105 KNode::DisplayedHeaders::~DisplayedHeaders()
106 {
107  for ( KNDisplayedHeader::List::Iterator it = mHeaderList.begin(); it != mHeaderList.end(); ++it )
108  delete (*it);
109 }
110 
111 
112 void KNode::DisplayedHeaders::save()
113 {
114  if(!d_irty)
115  return;
116 
117  kDebug(5003) <<"KNConfig::DisplayedHeaders::save()";
118 
119  QString dir( KStandardDirs::locateLocal( "data", "knode/" ) );
120  if (dir.isNull()) {
121  KNHelper::displayInternalFileError();
122  return;
123  }
124  KConfig headerConf(dir+"headers.rc", KConfig::SimpleConfig);
125  QStringList oldHeaders = headerConf.groupList();
126 
127  QStringList::Iterator oldIt=oldHeaders.begin();
128  for( ;oldIt != oldHeaders.end(); ++oldIt ) // remove all old groups
129  headerConf.deleteGroup((*oldIt)); // find a better way to do it?
130 
131  QList<int> flags;
132  int idx=0;
133  QString group;
134 
135  for ( KNDisplayedHeader::List::Iterator it = mHeaderList.begin(); it != mHeaderList.end(); ++it ) {
136  group.setNum(idx++);
137  while (group.length()<3)
138  group.prepend("0");
139  KConfigGroup cg(&headerConf, group);
140  cg.writeEntry("Name",(*it)->name());
141  cg.writeEntry("Translate_Name",(*it)->translateName());
142  cg.writeEntry("Header",(*it)->header());
143  flags.clear();
144  for (int i=0; i<8; ++i) {
145  if ((*it)->flag(i))
146  flags << 1;
147  else
148  flags << 0;
149  }
150  cg.writeEntry("Flags",flags);
151  }
152  headerConf.sync();
153  d_irty = false;
154 }
155 
156 
157 KNDisplayedHeader* KNode::DisplayedHeaders::createNewHeader()
158 {
159  KNDisplayedHeader *h=new KNDisplayedHeader();
160  mHeaderList.append( h );
161 
162  return h;
163 }
164 
165 
166 void KNode::DisplayedHeaders::remove(KNDisplayedHeader *h)
167 {
168  if ( !mHeaderList.removeAll( h ) )
169  kDebug(5003) <<"KNConfig::DisplayedHeaders::remove() : cannot find pointer in list!";
170 
171 }
172 
173 
174 void KNode::DisplayedHeaders::up(KNDisplayedHeader *h)
175 {
176  int idx = mHeaderList.indexOf( h );
177  if ( idx != -1 ) {
178  mHeaderList.takeAt( idx );
179  mHeaderList.insert( idx - 1, h );
180  }
181  else kDebug(5003) <<"KNConfig::DisplayedHeaders::up() : item not found in list";
182 }
183 
184 
185 void KNode::DisplayedHeaders::down(KNDisplayedHeader *h)
186 {
187  int idx = mHeaderList.indexOf( h );
188  if ( idx != -1 ) {
189  mHeaderList.takeAt( idx );
190  mHeaderList.insert( idx + 1, h );
191  }
192  else kDebug(5003) <<"KNConfig::DisplayedHeaders::down() : item not found in list";
193 }
194 
195 
196 //==============================================================================================================
197 
198 
199 KNode::XHeader::XHeader(const QString &s)
200 {
201  int pos = s.indexOf(": ");
202  if ( pos != -1 ) {
203  mName = s.left( pos );
204  pos += 2;
205  mValue = s.right( s.length() - pos );
206  }
207 }
208 
209 
210 //==============================================================================================================
211 
212 
213 
214 //BEGIN: Cleanup configuration ===============================================
215 
216 
217 KNode::Cleanup::Cleanup( bool global ) :
218  // default values for new accounts / groups
219  d_oExpire( true ), r_emoveUnavailable( true ), p_reserveThr( true ),
220  e_xpireInterval( 5 ), r_eadMaxAge( 10 ), u_nreadMaxAge( 15 ),
221  mGlobal(global), mDefault(!global), mLastExpDate( QDate::currentDate() )
222 {
223  if (mGlobal) {
224  loadConfig( knGlobals.config()->group( "EXPIRE" ) );
225  }
226 }
227 
228 
229 void KNode::Cleanup::loadConfig(const KConfigGroup &conf)
230 {
231  // group expire settings
232  d_oExpire = conf.readEntry( "doExpire", true );
233  r_emoveUnavailable = conf.readEntry( "removeUnavailable", true );
234  p_reserveThr = conf.readEntry( "saveThreads", true );
235  e_xpireInterval = conf.readEntry( "expInterval", 5 );
236  r_eadMaxAge = conf.readEntry( "readDays", 10 );
237  u_nreadMaxAge = conf.readEntry( "unreadDays", 15 );
238  mLastExpDate = conf.readEntry( "lastExpire", QDateTime() ).date();
239 
240  // folder compaction settings (only available globally)
241  if (mGlobal) {
242  d_oCompact = conf.readEntry( "doCompact", true );
243  c_ompactInterval = conf.readEntry( "comInterval", 5 );
244  mLastCompDate = conf.readEntry( "lastCompact", QDateTime() ).date();
245  }
246 
247  if (!mGlobal)
248  mDefault = conf.readEntry( "UseDefaultExpConf", true );
249 }
250 
251 
252 void KNode::Cleanup::saveConfig(KConfigGroup &conf)
253 {
254  // group expire settings
255  conf.writeEntry( "doExpire", d_oExpire );
256  conf.writeEntry( "removeUnavailable", r_emoveUnavailable );
257  conf.writeEntry( "saveThreads", p_reserveThr );
258  conf.writeEntry( "expInterval", e_xpireInterval );
259  conf.writeEntry( "readDays", r_eadMaxAge );
260  conf.writeEntry( "unreadDays", u_nreadMaxAge );
261  conf.writeEntry( "lastExpire", QDateTime(mLastExpDate) );
262 
263  // folder compaction settings (only available globally)
264  if (mGlobal) {
265  conf.writeEntry( "doCompact", d_oCompact );
266  conf.writeEntry( "comInterval", c_ompactInterval );
267  conf.writeEntry( "lastCompact", QDateTime(mLastCompDate) );
268  }
269 
270  if (!mGlobal)
271  conf.writeEntry( "UseDefaultExpConf", mDefault );
272 
273  conf.sync();
274 }
275 
276 
277 void KNode::Cleanup::save()
278 {
279  kDebug(5003) <<"KNConfig::Cleanup::save()";
280  if (mGlobal) {
281  KConfigGroup conf( knGlobals.config(), "EXPIRE" );
282  saveConfig( conf );
283  }
284 }
285 
286 
287 bool KNode::Cleanup::expireToday()
288 {
289  if (!d_oExpire)
290  return false;
291 
292  QDate today = QDate::currentDate();
293  if (mLastExpDate == today)
294  return false;
295 
296  return (mLastExpDate.daysTo( today ) >= e_xpireInterval);
297 }
298 
299 
300 void KNode::Cleanup::setLastExpireDate()
301 {
302  mLastExpDate = QDateTime::currentDateTime().date();
303 }
304 
305 
306 bool KNode::Cleanup::compactToday()
307 {
308  if (!d_oCompact)
309  return false;
310 
311  QDate today = QDate::currentDate();
312  if (mLastCompDate == today)
313  return false;
314 
315  return (mLastCompDate.daysTo( today ) >= c_ompactInterval);
316 }
317 
318 
319 void KNode::Cleanup::setLastCompactDate()
320 {
321  mLastCompDate = QDateTime::currentDateTime().date();
322 }
323 
324 
325 //END: Cleanup configuration =================================================
326 
327 
KNode::Appearance::Appearance
Appearance()
Definition: knconfig.cpp:29
KNDisplayedHeader::header
const QString & header()
Definition: kndisplayedheader.h:44
KNode::Cleanup::compactToday
bool compactToday()
Definition: knconfig.cpp:306
KNode::Cleanup::expireToday
bool expireToday()
Definition: knconfig.cpp:287
utilities.h
KNode::Cleanup::setLastCompactDate
void setLastCompactDate()
Definition: knconfig.cpp:319
KNode::Appearance::ignore
Definition: knconfig.h:64
KNode::Cleanup::saveConfig
void saveConfig(KConfigGroup &conf)
Definition: knconfig.cpp:252
KNDisplayedHeader::setTranslateName
void setTranslateName(bool b)
Definition: kndisplayedheader.h:40
KNDisplayedHeader
A header displayed in the article viewer.
Definition: kndisplayedheader.h:23
KNode::Appearance::savedRemote
Definition: knconfig.h:65
KNode::Appearance::eyes
Definition: knconfig.h:63
KNDisplayedHeader::createTags
void createTags()
Definition: kndisplayedheader.cpp:160
KNDisplayedHeader::setFlag
void setFlag(int i, bool b)
Definition: kndisplayedheader.h:49
KNode::Cleanup::setLastExpireDate
void setLastExpireDate()
Definition: knconfig.cpp:300
KNode::Appearance::group
Definition: knconfig.h:65
KNode::DisplayedHeaders::up
void up(KNDisplayedHeader *h)
Definition: knconfig.cpp:174
KNHelper::displayInternalFileError
static void displayInternalFileError(QWidget *w=0)
use this for all internal files
Definition: utilities.cpp:344
KNode::XHeader::XHeader
XHeader(const QString &s)
Create a new XHeader object from the given string representation.
Definition: knconfig.cpp:199
KNode::DisplayedHeaders::createNewHeader
KNDisplayedHeader * createNewHeader()
Definition: knconfig.cpp:157
KNode::DisplayedHeaders::down
void down(KNDisplayedHeader *h)
Definition: knconfig.cpp:185
KNDisplayedHeader::name
const QString & name()
Definition: kndisplayedheader.h:33
KNode::DisplayedHeaders::~DisplayedHeaders
~DisplayedHeaders()
Definition: knconfig.cpp:105
KNode::Cleanup::Cleanup
Cleanup(bool global=true)
Definition: knconfig.cpp:217
KNode::Appearance::canceledPosting
Definition: knconfig.h:65
KNode::DisplayedHeaders::save
void save()
Definition: knconfig.cpp:112
kndisplayedheader.h
KNode::Appearance::newFups
Definition: knconfig.h:63
KNode::Appearance::i_cons
QPixmap i_cons[ICON_CNT]
Definition: knconfig.h:74
knglobals.h
settings.h
KNode::Cleanup::save
void save()
Definition: knconfig.cpp:277
KNode::DisplayedHeaders::DisplayedHeaders
DisplayedHeaders()
Definition: knconfig.cpp:70
KNode::Appearance::recreateLVIcons
void recreateLVIcons()
Definition: knconfig.cpp:43
KNDisplayedHeader::setHeader
void setHeader(const QString &s)
Definition: kndisplayedheader.h:45
knconfig.h
KNode::Cleanup::loadConfig
void loadConfig(const KConfigGroup &conf)
Definition: knconfig.cpp:229
knGlobals
#define knGlobals
Keep compatibility with the old way.
Definition: knglobals.h:28
KNode::Appearance::posting
Definition: knconfig.h:64
KNDisplayedHeader::setName
void setName(const QString &s)
Definition: kndisplayedheader.h:34
QList< int >
KNode::DisplayedHeaders::remove
void remove(KNDisplayedHeader *h)
Definition: knconfig.cpp:166
KNode::Appearance::mail
Definition: knconfig.h:64
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 22:58:36 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

knode

Skip menu "knode"
  • Main Page
  • Namespace List
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

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