00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "./kshowmailview.h"
00019
00020
00021 KShowmailView::KShowmailView( AccountViewModel* accountModel, MailViewModel* mailModel, QItemSelectionModel* mailSelectModel, QItemSelectionModel* accountSelectModel, QWidget* parent ) : QSplitter( Qt::Vertical, parent )
00022 {
00023
00024
00025 splitter = new QSplitter( Qt::Vertical, this );
00026
00027
00028 viewAccounts = new QTreeView( splitter );
00029 viewAccounts->setModel( accountModel );
00030 viewAccounts->setIndentation( 0 );
00031 viewAccounts->setContextMenuPolicy( Qt::ActionsContextMenu );
00032 AccountViewDelegate* delegateAccounts = new AccountViewDelegate( this );
00033 viewAccounts->setItemDelegate( delegateAccounts );
00034 viewAccounts->setContextMenuPolicy( Qt::ActionsContextMenu );
00035 viewAccounts->setSelectionModel( accountSelectModel );
00036 viewAccounts->setSortingEnabled( true );
00037
00038
00039 viewMails = new QTreeView( splitter );
00040 viewMails->setModel( mailModel );
00041 viewMails->setIndentation( 0 );
00042 viewMails->setSelectionMode( QAbstractItemView::ExtendedSelection );
00043 viewMails->setSelectionModel( mailSelectModel );
00044 viewMails->setSortingEnabled( true );
00045 viewMails->setContextMenuPolicy( Qt::ActionsContextMenu );
00046
00047
00048 this->mailModel = mailModel;
00049 this->accountModel = accountModel;
00050
00051 loadSetup();
00052
00053
00054 }
00055
00056 KShowmailView::~KShowmailView(){}
00057
00058 void KShowmailView::refreshViews( QItemSelectionModel* mailSelectModel )
00059 {
00060 AccountViewModel* accountModel = dynamic_cast<AccountViewModel*>( viewAccounts->model() );
00061 accountModel->refresh();
00062
00063 MailViewModel* mailModel = dynamic_cast<MailViewModel*>( viewMails->model() );
00064 mailModel->refresh();
00065
00066
00067 QModelIndexList markedMails = mailModel->getMarkedMails();
00068 QListIterator<QModelIndex> itMark( markedMails );
00069 while( itMark.hasNext() )
00070 {
00071 QModelIndex index = itMark.next();
00072 mailSelectModel->select( index, QItemSelectionModel::Select | QItemSelectionModel::Rows );
00073 }
00074 }
00075
00076 void KShowmailView::saveSetup() {
00077
00078
00079 KConfigGroup* configAcc = new KConfigGroup( KGlobal::config(), CONFIG_GROUP_ACCOUNT_LIST );
00080 KConfigGroup* configMail = new KConfigGroup( KGlobal::config(), CONFIG_GROUP_MESSAGE_LIST );
00081 KConfigGroup* configView = new KConfigGroup( KGlobal::config(), CONFIG_GROUP_VIEW );
00082
00083
00084 if( !viewAccounts->isColumnHidden( 0 ) )
00085 configAcc->writeEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_ACTIVE, viewAccounts->columnWidth( 0 ) );
00086
00087 if( !viewAccounts->isColumnHidden( 1 ) )
00088 configAcc->writeEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_ACCOUNT, viewAccounts->columnWidth( 1 ) );
00089
00090 if( !viewAccounts->isColumnHidden( 2 ) )
00091 configAcc->writeEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_SERVER, viewAccounts->columnWidth( 2 ) );
00092
00093 if( !viewAccounts->isColumnHidden( 3 ) )
00094 configAcc->writeEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_USER, viewAccounts->columnWidth( 3 ) );
00095
00096 if( !viewAccounts->isColumnHidden( 4 ) )
00097 configAcc->writeEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_MESSAGES, viewAccounts->columnWidth( 4 ) );
00098
00099 if( !viewAccounts->isColumnHidden( 5 ) )
00100 configAcc->writeEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_SIZE, viewAccounts->columnWidth( 5 ) );
00101
00102
00103 if( !viewMails->isColumnHidden( 0 ) )
00104 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_STATE, viewMails->columnWidth( 0 ) );
00105
00106 if( !viewMails->isColumnHidden( 1 ) )
00107 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_NUMBER, viewMails->columnWidth( 1 ) );
00108
00109 if( !viewMails->isColumnHidden( 2 ) )
00110 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_ACCOUNT, viewMails->columnWidth( 2 ) );
00111
00112 if( !viewMails->isColumnHidden( 3 ) )
00113 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_FROM, viewMails->columnWidth( 3 ) );
00114
00115 if( !viewMails->isColumnHidden( 4 ) )
00116 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_TO, viewMails->columnWidth( 4 ) );
00117
00118 if( !viewMails->isColumnHidden( 5 ) )
00119 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_SUBJECT, viewMails->columnWidth( 5 ) );
00120
00121 if( !viewMails->isColumnHidden( 6 ) )
00122 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_DATE, viewMails->columnWidth( 6 ) );
00123
00124 if( !viewMails->isColumnHidden( 7 ) )
00125 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_SIZE, viewMails->columnWidth( 7 ) );
00126
00127 if( !viewMails->isColumnHidden( 8 ) )
00128 configMail->writeEntry( CONFIG_ENTRY_WIDTH_MESSAGE_CONTENT, viewMails->columnWidth( 8 ) );
00129
00130
00131 configView->writeEntry( CONFIG_ENTRY_VIEW_MAIN_WINDOW_SPLITTER, splitter->saveState() );
00132
00133
00134 accountModel->saveSetup();
00135 mailModel->saveSetup();
00136
00137 configAcc->sync();
00138 configMail->sync();
00139 configView->sync();
00140
00141 delete configAcc;
00142 delete configMail;
00143 delete configView;
00144 }
00145
00146 void KShowmailView::loadSetup() {
00147
00148
00149 KConfigGroup* configAcc = new KConfigGroup( KGlobal::config(), CONFIG_GROUP_ACCOUNT_LIST );
00150 KConfigGroup* configMail = new KConfigGroup( KGlobal::config(), CONFIG_GROUP_MESSAGE_LIST );
00151 KConfigGroup* configView = new KConfigGroup( KGlobal::config(), CONFIG_GROUP_VIEW );
00152
00153 viewAccounts->setColumnWidth( 0, configAcc->readEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_ACTIVE, DEFAULT_WIDTH_ACCOUNT_ACTIVE ) );
00154 viewAccounts->setColumnWidth( 1, configAcc->readEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_ACCOUNT, DEFAULT_WIDTH_ACCOUNT_ACCOUNT ) );
00155 viewAccounts->setColumnWidth( 2, configAcc->readEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_SERVER, DEFAULT_WIDTH_ACCOUNT_SERVER ) );
00156 viewAccounts->setColumnWidth( 3, configAcc->readEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_USER, DEFAULT_WIDTH_ACCOUNT_USER ) );
00157 viewAccounts->setColumnWidth( 4, configAcc->readEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_MESSAGES, DEFAULT_WIDTH_ACCOUNT_MESSAGES ) );
00158 viewAccounts->setColumnWidth( 5, configAcc->readEntry( CONFIG_ENTRY_WIDTH_ACCOUNT_SIZE, DEFAULT_WIDTH_ACCOUNT_SIZE ) );
00159
00160 viewMails->setColumnWidth( 0, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_STATE, DEFAULT_WIDTH_MESSAGE_STATE ) );
00161 viewMails->setColumnWidth( 1, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_NUMBER, DEFAULT_WIDTH_MESSAGE_NUMBER ) );
00162 viewMails->setColumnWidth( 2, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_ACCOUNT, DEFAULT_WIDTH_MESSAGE_ACCOUNT ) );
00163 viewMails->setColumnWidth( 3, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_FROM, DEFAULT_WIDTH_MESSAGE_FROM ) );
00164 viewMails->setColumnWidth( 4, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_TO, DEFAULT_WIDTH_MESSAGE_TO ) );
00165 viewMails->setColumnWidth( 5, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_SUBJECT, DEFAULT_WIDTH_MESSAGE_SUBJECT ) );
00166 viewMails->setColumnWidth( 6, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_DATE, DEFAULT_WIDTH_MESSAGE_DATE ) );
00167 viewMails->setColumnWidth( 7, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_SIZE, DEFAULT_WIDTH_MESSAGE_SIZE ) );
00168 viewMails->setColumnWidth( 8, configMail->readEntry( CONFIG_ENTRY_WIDTH_MESSAGE_CONTENT, DEFAULT_WIDTH_MESSAGE_CONTENT ) );
00169
00170 viewAccounts->setColumnHidden( 0 , !configAcc->readEntry( CONFIG_ENTRY_DISPLAY_ACCOUNT_ACTIVE, DEFAULT_DISPLAY_ACCOUNT_ACTIVE ) );
00171 viewAccounts->setColumnHidden( 1 , !configAcc->readEntry( CONFIG_ENTRY_DISPLAY_ACCOUNT_ACCOUNT, DEFAULT_DISPLAY_ACCOUNT_ACCOUNT ) );
00172 viewAccounts->setColumnHidden( 2 , !configAcc->readEntry( CONFIG_ENTRY_DISPLAY_ACCOUNT_SERVER, DEFAULT_DISPLAY_ACCOUNT_SERVER ) );
00173 viewAccounts->setColumnHidden( 3 , !configAcc->readEntry( CONFIG_ENTRY_DISPLAY_ACCOUNT_USER, DEFAULT_DISPLAY_ACCOUNT_USER ) );
00174 viewAccounts->setColumnHidden( 4 , !configAcc->readEntry( CONFIG_ENTRY_DISPLAY_ACCOUNT_MESSAGES, DEFAULT_DISPLAY_ACCOUNT_MESSAGES ) );
00175 viewAccounts->setColumnHidden( 5 , !configAcc->readEntry( CONFIG_ENTRY_DISPLAY_ACCOUNT_SIZE, DEFAULT_DISPLAY_ACCOUNT_SIZE ) );
00176
00177 viewMails->setColumnHidden( 0 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_STATE, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00178 viewMails->setColumnHidden( 1 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_NUMBER, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00179 viewMails->setColumnHidden( 2 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_ACCOUNT, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00180 viewMails->setColumnHidden( 3 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_FROM, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00181 viewMails->setColumnHidden( 4 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_TO, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00182 viewMails->setColumnHidden( 5 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_SUBJECT, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00183 viewMails->setColumnHidden( 6 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_DATE, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00184 viewMails->setColumnHidden( 7 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_SIZE, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00185 viewMails->setColumnHidden( 8 , !configMail->readEntry( CONFIG_ENTRY_DISPLAY_MESSAGE_CONTENT, DEFAULT_DISPLAY_MESSAGE_STATE ) );
00186
00187
00188 KConfigGroup* confSort = new KConfigGroup( KGlobal::config(), CONFIG_GROUP_VIEW );
00189
00190 QString strSortOrderAcc = confSort->readEntry( CONFIG_ENTRY_SORT_ORDER_ACCOUNT, DEFAULT_SORT_ORDER );
00191 int sortColumnAcc = confSort->readEntry( CONFIG_ENTRY_SORT_COLUMN_ACCOUNT, DEFAULT_SORT_COLUMN_ACCOUNT );
00192 if( strSortOrderAcc == CONFIG_VALUE_SORT_ORDER_DESCENDING ) {
00193
00194 viewAccounts->sortByColumn( sortColumnAcc, Qt::DescendingOrder );
00195
00196 } else {
00197
00198 viewAccounts->sortByColumn( sortColumnAcc, Qt::AscendingOrder );
00199 }
00200
00201 QString strSortOderMail = confSort->readEntry( CONFIG_ENTRY_SORT_ORDER_MESSAGE, DEFAULT_SORT_ORDER );
00202 int sortColumnMail = confSort->readEntry( CONFIG_ENTRY_SORT_COLUMN_MESSAGE, DEFAULT_SORT_COLUMN_MESSAGE );
00203 if( strSortOderMail == CONFIG_VALUE_SORT_ORDER_DESCENDING ) {
00204
00205 viewMails->sortByColumn( sortColumnMail, Qt::DescendingOrder );
00206
00207 } else {
00208
00209 viewMails->sortByColumn( sortColumnMail, Qt::AscendingOrder );
00210 }
00211
00212
00213 splitter->restoreState( configView->readEntry( CONFIG_ENTRY_VIEW_MAIN_WINDOW_SPLITTER, QByteArray() ) );
00214
00215 delete confSort;
00216 delete configAcc;
00217 delete configMail;
00218 delete configView;
00219
00220 }
00221
00222 void KShowmailView::addActionToAccountList( KAction* action ) {
00223
00224 viewAccounts->addAction( action );
00225
00226 }
00227
00228 void KShowmailView::addActionToMailList(KAction* action)
00229 {
00230 viewMails->addAction( action );
00231 }