00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "filterlogviewdeletedmodel.h"
00019
00020 FilterLogViewDeletedModel::FilterLogViewDeletedModel( QObject* parent, FilterLog* log ): QAbstractItemModel( parent )
00021 {
00022 this->log = log;
00023
00024
00025 lastSortOrder = Qt::AscendingOrder;
00026 lastSortColumn = 0;
00027
00028
00029 picManualDeleted = KIcon( KStandardDirs::locate( "data", "kshowmail/pics/deletedManual.png" ) );
00030 picFilterDeleted = KIcon( KStandardDirs::locate( "data", "kshowmail/pics/deletedFilter.png" ) );
00031
00032
00033
00034 list.append( log->getDeletedMails() );
00035
00036 }
00037
00038 QVariant FilterLogViewDeletedModel::data( const QModelIndex& index, int role ) const
00039 {
00040
00041 if( !index.isValid() ) return QVariant();
00042
00043 if( index.row() > rowCount() || index.column() > NUMBER_VIEWDELETED_COLUMNS - 1 ) return QVariant();
00044
00045 if( index.row() > list.size() - 1 ) return QVariant();
00046
00047
00048 FilterLogEntry entry = list.at( index.row() );
00049
00050 switch( role ) {
00051
00052 case( Qt::DisplayRole ) : {
00053
00054 switch( index.column() ) {
00055
00056 case 1 : return QVariant( entry.getDate().toString( KDateTime::LocalDate) ); break;
00057 case 2 : return QVariant( entry.getSender() ); break;
00058 case 3 : return QVariant( entry.getAccount() ); break;
00059 case 4 : return QVariant( entry.getSubject() ); break;
00060 default : return QVariant(); break;
00061 }
00062
00063 break;
00064 }
00065
00066 case( Qt::DecorationRole ) : {
00067
00068 switch( index.column() )
00069 {
00070 case 0 :
00071
00072 if( entry.getKindOfDeleting() == DelManual )
00073 {
00074 return QVariant( picManualDeleted );
00075 }
00076 else
00077 {
00078 return QVariant( picFilterDeleted );
00079 }
00080
00081 break;
00082
00083 default : return QVariant();
00084 }
00085
00086 break;
00087 }
00088
00089 case( Qt::ToolTipRole ) : {
00090
00091 switch( index.column() ) {
00092
00093 case 0 : {
00094
00095 if( entry.getKindOfDeleting() == DelManual ) {
00096 return QVariant( i18nc( "@Info:tooltip Filter-Log: The mail was manually deleted", "This mail was manually deleted.") );
00097 } else {
00098 return QVariant( i18nc( "@Info:tooltip Filter-Log: The mail was deleted by the filter" , "This mail was deleted by filter: %1", entry.getFilter() ) );
00099 }
00100
00101 break;
00102 }
00103
00104 default: return QVariant();
00105 }
00106
00107 break;
00108 }
00109
00110 default : return QVariant();
00111
00112 }
00113
00114
00115 }
00116
00117 int FilterLogViewDeletedModel::columnCount(const QModelIndex& ) const
00118 {
00119 return NUMBER_VIEWDELETED_COLUMNS;
00120 }
00121
00122 int FilterLogViewDeletedModel::rowCount( const QModelIndex& parent ) const
00123 {
00124
00125 if( parent.isValid() ) return 0;
00126
00127 return list.size();
00128
00129 }
00130
00131 QModelIndex FilterLogViewDeletedModel::parent( const QModelIndex& ) const
00132 {
00133 return QModelIndex();
00134 }
00135
00136 QModelIndex FilterLogViewDeletedModel::index(int row, int column, const QModelIndex& parent) const
00137 {
00138
00139
00140 if( parent.isValid() ) return QModelIndex();
00141
00142 return createIndex( row, column );
00143
00144 }
00145
00146 QVariant FilterLogViewDeletedModel::headerData(int section, Qt::Orientation orientation, int role) const
00147 {
00148
00149 if( role != Qt::DisplayRole || orientation != Qt::Horizontal )
00150 return QVariant();
00151
00152 switch( section )
00153 {
00154 case 0 : return QVariant();
00155 case 1 : return QVariant( i18nc( "@title:column send date", "Date" ) ); break;
00156 case 2 : return QVariant( i18nc( "@title:column sender of the mail", "Sender" ) ); break;
00157 case 3 : return QVariant( i18nc( "@title:column account name", "Account" ) ); break;
00158 case 4 : return QVariant( i18nc( "@title:column mail subject", "Subject" ) ); break;
00159 default : return QVariant();
00160 }
00161 }
00162
00163 void FilterLogViewDeletedModel::sort(int column, Qt::SortOrder order)
00164 {
00165
00166
00167 lastSortOrder = order;
00168 lastSortColumn = column;
00169
00170 if( list.isEmpty() ) return;
00171
00172
00173 LogViewSort prop;
00174 switch( column ) {
00175
00176 case 0 : prop = LogViewSortKind; break;
00177 case 1 : prop = LogViewSortDate; break;
00178 case 2 : prop = LogViewSortFrom; break;
00179 case 3 : prop = LogViewSortAccount; break;
00180 case 4 : prop = LogViewSortSubject; break;
00181 default : prop = LogViewSortDate; break;
00182 }
00183
00184
00185 QList<FilterLogEntry> sortedList;
00186
00187 QListIterator<FilterLogEntry> itUnsort( list );
00188 while( itUnsort.hasNext() ) {
00189
00190
00191 FilterLogEntry entryUnsorted = itUnsort.next();
00192
00193
00194 if( sortedList.size() == 0 ) {
00195
00196 sortedList.append( entryUnsorted );
00197
00198 } else {
00199
00200 int sizeSortedList = sortedList.size();
00201 int indexSort = 0;
00202 bool placed = false;
00203 while( indexSort < sizeSortedList && !placed ) {
00204
00205
00206 FilterLogEntry entrySorted = sortedList.at( indexSort );
00207
00208
00209
00210 if( order == Qt::AscendingOrder ) {
00211
00212 if( entryUnsorted.compare( entrySorted, prop ) <= 0 ) {
00213
00214 sortedList.insert( indexSort, entryUnsorted );
00215 placed = true;
00216 }
00217
00218 } else {
00219
00220 if( entryUnsorted.compare( entrySorted, prop ) > 0 ) {
00221
00222 sortedList.insert( indexSort, entryUnsorted );
00223 placed = true;
00224 }
00225 }
00226
00227 indexSort++;
00228 }
00229
00230
00231 if( !placed )
00232 sortedList.append( entryUnsorted );
00233 }
00234 }
00235
00236
00237 list.clear();
00238 list.append( sortedList );
00239
00240 reset();
00241 }
00242
00243 void FilterLogViewDeletedModel::sort()
00244 {
00245 sort( lastSortColumn, lastSortOrder );
00246 }
00247
00248 void FilterLogViewDeletedModel::refresh()
00249 {
00250 list.clear();
00251 list.append( log->getDeletedMails() );
00252 sort();
00253 reset();
00254 }
00255
00256 void FilterLogViewDeletedModel::saveSetup()
00257 {
00258 KConfigGroup* conf = new KConfigGroup( KGlobal::config(), CONFIG_GROUP_VIEW );
00259
00260 conf->writeEntry( CONFIG_ENTRY_SORT_COLUMN_LOGVIEW_DELETED, lastSortColumn );
00261
00262 if( lastSortOrder == Qt::AscendingOrder ) {
00263
00264 conf->writeEntry( CONFIG_ENTRY_SORT_ORDER_LOGVIEW_DELETED, CONFIG_VALUE_SORT_ORDER_ASCENDING );
00265
00266 } else {
00267
00268 conf->writeEntry( CONFIG_ENTRY_SORT_ORDER_LOGVIEW_DELETED, CONFIG_VALUE_SORT_ORDER_DESCENDING );
00269 }
00270
00271 conf->sync();
00272
00273 }