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

knode

knconfig.cpp

Go to the documentation of this file.
00001 /*
00002     KNode, the KDE newsreader
00003     Copyright (c) 1999-2006 the KNode authors.
00004     See file AUTHORS for details
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010     You should have received a copy of the GNU General Public License
00011     along with this program; if not, write to the Free Software Foundation,
00012     Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, US
00013 */
00014 
00015 #include "knconfig.h"
00016 
00017 #include "kndisplayedheader.h"
00018 #include "knglobals.h"
00019 #include "settings.h"
00020 #include "utilities.h"
00021 
00022 #include <klocale.h>
00023 #include <kstandarddirs.h>
00024 #include <kdebug.h>
00025 #include <kiconloader.h>
00026 #include <kiconeffect.h>
00027 
00028 
00029 KNode::Appearance::Appearance()
00030 {
00031   recreateLVIcons();
00032   i_cons[newFups]         = UserIcon("newsubs");
00033   i_cons[eyes]            = UserIcon("eyes");
00034   i_cons[ignore]          = UserIcon("ignore");
00035   i_cons[mail]            = SmallIcon("mail-message");
00036   i_cons[posting]         = UserIcon("article");
00037   i_cons[canceledPosting] = SmallIcon("edit-delete");
00038   i_cons[savedRemote]     = SmallIcon("edit-copy");
00039   i_cons[group]           = UserIcon("group");
00040 }
00041 
00042 
00043 void KNode::Appearance::recreateLVIcons()
00044 {
00045   QPixmap tempPix = UserIcon("greyball");
00046 
00047   QImage tempImg=tempPix.toImage();
00048   KIconEffect::colorize(tempImg, knGlobals.settings()->readArticleColor(), 1.0);
00049   i_cons[greyBall] = QPixmap::fromImage(tempImg);
00050 
00051   tempImg=tempPix.toImage();
00052   KIconEffect::colorize(tempImg, knGlobals.settings()->unreadArticleColor(), 1.0);
00053   i_cons[redBall] = QPixmap::fromImage(tempImg);
00054 
00055   tempPix = UserIcon("greyballchk");
00056 
00057   tempImg=tempPix.toImage();
00058   KIconEffect::colorize(tempImg, knGlobals.settings()->readArticleColor(), 1.0);
00059   i_cons[greyBallChkd] = QPixmap::fromImage(tempImg);
00060 
00061   tempImg=tempPix.toImage();
00062   KIconEffect::colorize(tempImg, knGlobals.settings()->unreadArticleColor(), 1.0);
00063   i_cons[redBallChkd] = QPixmap::fromImage(tempImg);
00064 }
00065 
00066 
00067 //==============================================================================================================
00068 
00069 
00070 KNode::DisplayedHeaders::DisplayedHeaders()
00071 {
00072   QString fname( KStandardDirs::locate( "data","knode/headers.rc" ) );
00073 
00074   if (!fname.isNull()) {
00075     KConfig headerConf( fname, KConfig::SimpleConfig);
00076     QStringList headers = headerConf.groupList();
00077     headers.removeAll("<default>");
00078     headers.sort();
00079 
00080     KNDisplayedHeader *h;
00081     QList<int> flags;
00082 
00083     QStringList::Iterator it;
00084     for( it = headers.begin(); it != headers.end(); ++it ) {
00085       h=createNewHeader();
00086       KConfigGroup cg(&headerConf, (*it));
00087       h->setName(cg.readEntry("Name"));
00088       h->setTranslateName(cg.readEntry("Translate_Name",true));
00089       h->setHeader(cg.readEntry("Header"));
00090       flags=cg.readEntry("Flags",QList<int>());
00091       if(h->name().isNull() || h->header().isNull() || (flags.count()!=8)) {
00092         kDebug(5003) <<"KNConfig::DisplayedHeaders::DisplayedHeaders() : ignoring invalid/incomplete Header";
00093         remove(h);
00094       }
00095       else {
00096         for (int i=0; i<8; i++)
00097           h->setFlag(i, (flags[i]>0));
00098         h->createTags();
00099       }
00100     }
00101   }
00102 }
00103 
00104 
00105 KNode::DisplayedHeaders::~DisplayedHeaders()
00106 {
00107   for ( KNDisplayedHeader::List::Iterator it = mHeaderList.begin(); it != mHeaderList.end(); ++it )
00108     delete (*it);
00109 }
00110 
00111 
00112 void KNode::DisplayedHeaders::save()
00113 {
00114   if(!d_irty)
00115     return;
00116 
00117   kDebug(5003) <<"KNConfig::DisplayedHeaders::save()";
00118 
00119   QString dir( KStandardDirs::locateLocal( "data", "knode/" ) );
00120   if (dir.isNull()) {
00121     KNHelper::displayInternalFileError();
00122     return;
00123   }
00124   KConfig headerConf(dir+"headers.rc", KConfig::SimpleConfig);
00125   QStringList oldHeaders = headerConf.groupList();
00126 
00127   QStringList::Iterator oldIt=oldHeaders.begin();
00128   for( ;oldIt != oldHeaders.end(); ++oldIt )      // remove all old groups
00129     headerConf.deleteGroup((*oldIt));             // find a better way to do it?
00130 
00131   QList<int> flags;
00132   int idx=0;
00133   QString group;
00134 
00135   for ( KNDisplayedHeader::List::Iterator it = mHeaderList.begin(); it != mHeaderList.end(); ++it ) {
00136     group.setNum(idx++);
00137     while (group.length()<3)
00138       group.prepend("0");
00139     KConfigGroup cg(&headerConf, group);
00140     cg.writeEntry("Name",(*it)->name());
00141     cg.writeEntry("Translate_Name",(*it)->translateName());
00142     cg.writeEntry("Header",(*it)->header());
00143     flags.clear();
00144     for (int i=0; i<8; i++) {
00145       if ((*it)->flag(i))
00146         flags << 1;
00147       else
00148         flags << 0;
00149     }
00150     cg.writeEntry("Flags",flags);
00151   }
00152   headerConf.sync();
00153   d_irty = false;
00154 }
00155 
00156 
00157 KNDisplayedHeader* KNode::DisplayedHeaders::createNewHeader()
00158 {
00159   KNDisplayedHeader *h=new KNDisplayedHeader();
00160   mHeaderList.append( h );
00161 
00162   return h;
00163 }
00164 
00165 
00166 void KNode::DisplayedHeaders::remove(KNDisplayedHeader *h)
00167 {
00168   if ( !mHeaderList.removeAll( h ) )
00169     kDebug(5003) <<"KNConfig::DisplayedHeaders::remove() : cannot find pointer in list!";
00170 
00171 }
00172 
00173 
00174 void KNode::DisplayedHeaders::up(KNDisplayedHeader *h)
00175 {
00176   int idx = mHeaderList.indexOf( h );
00177   if ( idx != -1 ) {
00178     mHeaderList.takeAt( idx );
00179     mHeaderList.insert( idx - 1, h );
00180   }
00181   else kDebug(5003) <<"KNConfig::DisplayedHeaders::up() : item not found in list";
00182 }
00183 
00184 
00185 void KNode::DisplayedHeaders::down(KNDisplayedHeader *h)
00186 {
00187   int idx = mHeaderList.indexOf( h );
00188   if ( idx != -1 ) {
00189     mHeaderList.takeAt( idx );
00190     mHeaderList.insert( idx + 1, h );
00191   }
00192   else kDebug(5003) <<"KNConfig::DisplayedHeaders::down() : item not found in list";
00193 }
00194 
00195 
00196 //==============================================================================================================
00197 
00198 
00199 KNode::XHeader::XHeader(const QString &s)
00200 {
00201   int pos = s.indexOf(": ");
00202   if ( pos != -1 ) {
00203     mName = s.left( pos );
00204     pos += 2;
00205     mValue = s.right( s.length() - pos );
00206   }
00207 }
00208 
00209 
00210 //==============================================================================================================
00211 
00212 
00213 
00214 //BEGIN: Cleanup configuration ===============================================
00215 
00216 
00217 KNode::Cleanup::Cleanup( bool global ) :
00218   // default values for new accounts / groups
00219   d_oExpire( true ), r_emoveUnavailable( true ), p_reserveThr( true ),
00220   e_xpireInterval( 5 ), r_eadMaxAge( 10 ), u_nreadMaxAge( 15 ),
00221   mGlobal(global), mDefault(!global), mLastExpDate( QDate::currentDate() )
00222 {
00223   if (mGlobal) {
00224     loadConfig( knGlobals.config()->group( "EXPIRE" ) );
00225   }
00226 }
00227 
00228 
00229 void KNode::Cleanup::loadConfig(const KConfigGroup &conf)
00230 {
00231   // group expire settings
00232   d_oExpire = conf.readEntry( "doExpire", true );
00233   r_emoveUnavailable = conf.readEntry( "removeUnavailable", true );
00234   p_reserveThr = conf.readEntry( "saveThreads", true );
00235   e_xpireInterval = conf.readEntry( "expInterval", 5 );
00236   r_eadMaxAge = conf.readEntry( "readDays", 10 );
00237   u_nreadMaxAge = conf.readEntry( "unreadDays", 15 );
00238   mLastExpDate = conf.readEntry( "lastExpire", QDateTime() ).date();
00239 
00240   // folder compaction settings (only available globally)
00241   if (mGlobal) {
00242     d_oCompact = conf.readEntry( "doCompact", true );
00243     c_ompactInterval = conf.readEntry( "comInterval", 5 );
00244     mLastCompDate = conf.readEntry( "lastCompact", QDateTime() ).date();
00245   }
00246 
00247   if (!mGlobal)
00248     mDefault = conf.readEntry( "UseDefaultExpConf", true );
00249 }
00250 
00251 
00252 void KNode::Cleanup::saveConfig(KConfigGroup &conf)
00253 {
00254   // group expire settings
00255   conf.writeEntry( "doExpire", d_oExpire );
00256   conf.writeEntry( "removeUnavailable", r_emoveUnavailable );
00257   conf.writeEntry( "saveThreads", p_reserveThr );
00258   conf.writeEntry( "expInterval", e_xpireInterval );
00259   conf.writeEntry( "readDays", r_eadMaxAge );
00260   conf.writeEntry( "unreadDays", u_nreadMaxAge );
00261   conf.writeEntry( "lastExpire", QDateTime(mLastExpDate) );
00262 
00263   // folder compaction settings (only available globally)
00264   if (mGlobal) {
00265     conf.writeEntry( "doCompact", d_oCompact );
00266     conf.writeEntry( "comInterval", c_ompactInterval );
00267     conf.writeEntry( "lastCompact", QDateTime(mLastCompDate) );
00268   }
00269 
00270   if (!mGlobal)
00271     conf.writeEntry( "UseDefaultExpConf", mDefault );
00272 
00273   conf.sync();
00274 }
00275 
00276 
00277 void KNode::Cleanup::save()
00278 {
00279   kDebug(5003) <<"KNConfig::Cleanup::save()";
00280   if (mGlobal) {
00281     KConfigGroup conf( knGlobals.config(), "EXPIRE" );
00282     saveConfig( conf );
00283   }
00284 }
00285 
00286 
00287 bool KNode::Cleanup::expireToday()
00288 {
00289   if (!d_oExpire)
00290     return false;
00291 
00292   QDate today = QDate::currentDate();
00293   if (mLastExpDate == today)
00294     return false;
00295 
00296   return (mLastExpDate.daysTo( today ) >= e_xpireInterval);
00297 }
00298 
00299 
00300 void KNode::Cleanup::setLastExpireDate()
00301 {
00302   mLastExpDate = QDateTime::currentDateTime().date();
00303 }
00304 
00305 
00306 bool KNode::Cleanup::compactToday()
00307 {
00308   if (!d_oCompact)
00309     return false;
00310 
00311   QDate today = QDate::currentDate();
00312   if (mLastCompDate == today)
00313     return false;
00314 
00315   return (mLastCompDate.daysTo( today ) >= c_ompactInterval);
00316 }
00317 
00318 
00319 void KNode::Cleanup::setLastCompactDate()
00320 {
00321   mLastCompDate = QDateTime::currentDateTime().date();
00322 }
00323 
00324 
00325 //END: Cleanup configuration =================================================
00326 
00327 
00328 #include "knconfig.moc"

knode

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

kdepim

Skip menu "kdepim"
  •   akonadi_next
  •   kcal
  • akregator
  • console
  •   kabcclient
  •   konsolekalendar
  • kalarm
  •   lib
  • kdgantt
  • kdgantt1
  • kjots
  • kleopatra
  • kmail
  • knode
  • knotes
  • kontact
  • korganizer
  •   korgac
  • ktimetracker
  • libkdepim
  • libkleo
  • libkpgp
  • messageviewer
  • runtime
  •   kcm
  •       libmaildir
Generated for kdepim by doxygen 1.5.9-20090814
This website is maintained by Adriaan de Groot and Allen Winter.
KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal