messageproperty.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifdef HAVE_CONFIG_H
00032 #include <config.h>
00033 #endif
00034
00035 #include "messageproperty.h"
00036 using namespace KMail;
00037
00038 QMap<Q_UINT32, QGuardedPtr<KMFolder> > MessageProperty::sFolders;
00039 QMap<Q_UINT32, QGuardedPtr<ActionScheduler> > MessageProperty::sHandlers;
00040 QMap<Q_UINT32, bool > MessageProperty::sCompletes;
00041 QMap<Q_UINT32, bool > MessageProperty::sReadyToShows;
00042 QMap<Q_UINT32, int > MessageProperty::sTransfers;
00043 QMap<const KMMsgBase*, long > MessageProperty::sSerialCache;
00044
00045 bool MessageProperty::filtering( Q_UINT32 serNum )
00046 {
00047 return sFolders.contains( serNum );
00048 }
00049
00050 void MessageProperty::setFiltering( Q_UINT32 serNum, bool filter )
00051 {
00052 assert(!filtering(serNum) || !filter);
00053 if (filter && !filtering(serNum))
00054 sFolders.replace(serNum, QGuardedPtr<KMFolder>(0) );
00055 else if (!filter)
00056 sFolders.remove(serNum);
00057 }
00058
00059 bool MessageProperty::filtering( const KMMsgBase *msgBase )
00060 {
00061 return filtering( msgBase->getMsgSerNum() );
00062 }
00063
00064 void MessageProperty::setFiltering( const KMMsgBase *msgBase, bool filter )
00065 {
00066 setFiltering( msgBase->getMsgSerNum(), filter );
00067 }
00068
00069 KMFolder* MessageProperty::filterFolder( Q_UINT32 serNum )
00070 {
00071 if (sFolders.contains(serNum))
00072 return sFolders[serNum].operator->();
00073 return 0;
00074 }
00075
00076 void MessageProperty::setFilterFolder( Q_UINT32 serNum, KMFolder* folder )
00077 {
00078 sFolders.replace(serNum, QGuardedPtr<KMFolder>(folder) );
00079 }
00080
00081 KMFolder* MessageProperty::filterFolder( const KMMsgBase *msgBase )
00082 {
00083 return filterFolder( msgBase->getMsgSerNum() );
00084 }
00085
00086 void MessageProperty::setFilterFolder( const KMMsgBase *msgBase, KMFolder* folder )
00087 {
00088 setFilterFolder( msgBase->getMsgSerNum(), folder );
00089 }
00090
00091 ActionScheduler* MessageProperty::filterHandler( Q_UINT32 serNum )
00092 {
00093 if ( sHandlers.contains( serNum ))
00094 return sHandlers[serNum].operator->();
00095 return 0;
00096 }
00097
00098 void MessageProperty::setFilterHandler( Q_UINT32 serNum, ActionScheduler* handler )
00099 {
00100 if (handler)
00101 sHandlers.replace( serNum, QGuardedPtr<ActionScheduler>(handler) );
00102 else
00103 sHandlers.remove( serNum );
00104 }
00105
00106 ActionScheduler* MessageProperty::filterHandler( const KMMsgBase *msgBase )
00107 {
00108 return filterHandler( msgBase->getMsgSerNum() );
00109 }
00110
00111 void MessageProperty::setFilterHandler( const KMMsgBase *msgBase, ActionScheduler* handler )
00112 {
00113 setFilterHandler( msgBase->getMsgSerNum(), handler );
00114 }
00115
00116 bool MessageProperty::complete( Q_UINT32 serNum )
00117 {
00118 if (sCompletes.contains( serNum ))
00119 return sCompletes[serNum];
00120 return false;
00121 }
00122
00123 void MessageProperty::setComplete( Q_UINT32 serNum, bool complete )
00124 {
00125 if (complete)
00126 sCompletes.replace( serNum, complete );
00127 else
00128 sCompletes.remove( serNum);
00129 }
00130
00131 bool MessageProperty::complete( const KMMsgBase *msgBase )
00132 {
00133 return complete( msgBase->getMsgSerNum() );
00134 }
00135
00136 void MessageProperty::setComplete( const KMMsgBase *msgBase, bool complete )
00137 {
00138 setComplete( msgBase->getMsgSerNum(), complete );
00139 }
00140
00141 bool MessageProperty::readyToShow( Q_UINT32 serNum )
00142 {
00143 if (sReadyToShows.contains( serNum ))
00144 return sReadyToShows[serNum];
00145 return false;
00146 }
00147
00148 void MessageProperty::setReadyToShow( Q_UINT32 serNum, bool show )
00149 {
00150 if (show)
00151 sReadyToShows.replace( serNum, show );
00152 else
00153 sReadyToShows.remove( serNum);
00154 }
00155
00156 bool MessageProperty::readyToShow( const KMMsgBase *msgBase )
00157 {
00158 return readyToShow( msgBase->getMsgSerNum() );
00159 }
00160
00161 void MessageProperty::setReadyToShow( const KMMsgBase *msgBase, bool show )
00162 {
00163 setReadyToShow( msgBase->getMsgSerNum(), show );
00164 }
00165
00166 bool MessageProperty::transferInProgress( Q_UINT32 serNum )
00167 {
00168 if (sTransfers.contains(serNum))
00169 return sTransfers[serNum];
00170 return false;
00171 }
00172
00173 void MessageProperty::setTransferInProgress( Q_UINT32 serNum, bool transfer, bool force )
00174 {
00175 int transferInProgress = 0;
00176 if (sTransfers.contains(serNum))
00177 transferInProgress = sTransfers[serNum];
00178 if ( force && !transfer )
00179 transferInProgress = 0;
00180 else
00181 transfer ? ++transferInProgress : --transferInProgress;
00182 if ( transferInProgress < 0 )
00183 transferInProgress = 0;
00184 if (transferInProgress)
00185 sTransfers.replace( serNum, transferInProgress );
00186 else
00187 sTransfers.remove( serNum );
00188 }
00189
00190 bool MessageProperty::transferInProgress( const KMMsgBase *msgBase )
00191 {
00192 return transferInProgress( msgBase->getMsgSerNum() );
00193 }
00194
00195 void MessageProperty::setTransferInProgress( const KMMsgBase *msgBase, bool transfer, bool force )
00196 {
00197 setTransferInProgress( msgBase->getMsgSerNum(), transfer, force );
00198 }
00199
00200 Q_UINT32 MessageProperty::serialCache( const KMMsgBase *msgBase )
00201 {
00202 if (sSerialCache.contains( msgBase ))
00203 return sSerialCache[msgBase];
00204 return 0;
00205 }
00206
00207 void MessageProperty::setSerialCache( const KMMsgBase *msgBase, Q_UINT32 serNum )
00208 {
00209 if (serNum)
00210 sSerialCache.replace( msgBase, serNum );
00211 else
00212 sSerialCache.remove( msgBase );
00213 }
00214
00215 void MessageProperty::forget( const KMMsgBase *msgBase )
00216 {
00217 Q_UINT32 serNum = serialCache( msgBase );
00218 if (serNum) {
00219 Q_ASSERT( !transferInProgress( serNum ) );
00220 sCompletes.remove( serNum );
00221 sTransfers.remove( serNum );
00222 sReadyToShows.remove( serNum );
00223 sSerialCache.remove( msgBase );
00224 }
00225 }
00226
00227 #include "messageproperty.moc"
This file is part of the documentation for kmail Library Version 3.2.2.