You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
2.2 KiB
87 lines
2.2 KiB
// kmfolderseldlg.cpp |
|
|
|
#include <config.h> |
|
#include "kmfolderseldlg.h" |
|
#include "kmfoldertree.h" |
|
#include "kmmainwidget.h" |
|
|
|
#include <qvbox.h> |
|
|
|
#include <assert.h> |
|
|
|
QString KMFolderSelDlg::oldSelection; |
|
|
|
//----------------------------------------------------------------------------- |
|
KMFolderSelDlg::KMFolderSelDlg(KMMainWidget * parent, const QString& caption) |
|
: KMFolderSelDlgInherited(parent, "folder dialog", true, caption, |
|
Ok|Cancel, Ok, true) // mainwin as parent, modal |
|
{ |
|
QGuardedPtr<KMFolder> cur; |
|
|
|
mListBox = new QListBox(makeVBoxMainWidget()); |
|
connect(mListBox, SIGNAL(selected(int)), this, SLOT(slotSelect(int))); |
|
|
|
resize(220, 300); |
|
|
|
QStringList str; |
|
KMFolderTree * ft = parent->folderTree(); |
|
assert( ft ); |
|
ft->createFolderList( &str, &mFolder ); |
|
mListBox->insertStringList( str ); |
|
int i = 0; |
|
while (mFolder.at(i) != mFolder.end()) { |
|
cur = *mFolder.at(i); |
|
// cur will be 0 for accounts. Don't crash on that, |
|
// but ignore them for now. |
|
if(!cur) |
|
mListBox->item(i)->setSelectable(false); |
|
else if (!oldSelection.isNull() && oldSelection == cur->idString()) |
|
mListBox->setCurrentItem(i); |
|
++i; |
|
} |
|
|
|
// make sure that the current item is visible |
|
mListBox->centerCurrentItem(); |
|
|
|
mListBox->setFocus(); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
KMFolderSelDlg::~KMFolderSelDlg() |
|
{ |
|
if(mListBox->currentItem() != -1) { |
|
QGuardedPtr<KMFolder> cur = *mFolder.at(mListBox->currentItem()); |
|
if( cur ) |
|
oldSelection = cur->idString(); |
|
} |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
KMFolder* KMFolderSelDlg::folder(void) |
|
{ |
|
int idx = mListBox->currentItem(); |
|
|
|
if (idx < 0) return 0; |
|
return *mFolder.at(idx); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
void KMFolderSelDlg::slotSelect(int) |
|
{ |
|
accept(); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
void KMFolderSelDlg::slotCancel() |
|
{ |
|
disconnect(mListBox, SIGNAL(selected(int)), this, SLOT(slotSelect(int))); |
|
reject(); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
#include "kmfolderseldlg.moc"
|
|
|