1 /* kmail folder-list combo-box */
2 /* Author: Ronen Tzur <rtzur@shani.net> */
5 #include "kmfoldercombobox.h"
6 #include "kmfoldermgr.h"
8 //-----------------------------------------------------------------------------
10 KMFolderComboBox::KMFolderComboBox( QWidget
*parent
) : KComboBox( parent
)
16 //-----------------------------------------------------------------------------
18 void KMFolderComboBox::init()
24 connect( this, SIGNAL( activated(int) ),
25 this, SLOT( slotActivated(int) ) );
26 connect( kmkernel
->folderMgr(), SIGNAL(changed()),
27 this, SLOT(refreshFolders()) );
28 connect( kmkernel
->dimapFolderMgr(), SIGNAL(changed()),
29 this, SLOT(refreshFolders()) );
31 connect( kmkernel
->imapFolderMgr(), SIGNAL(changed()),
32 this, SLOT(refreshFolders()) );
36 //-----------------------------------------------------------------------------
38 void KMFolderComboBox::showOutboxFolder(bool shown
)
44 //-----------------------------------------------------------------------------
46 void KMFolderComboBox::showImapFolders(bool shown
)
51 connect( kmkernel
->imapFolderMgr(), SIGNAL(changed()),
52 this, SLOT(refreshFolders()) );
54 disconnect( kmkernel
->imapFolderMgr(), SIGNAL(changed()),
55 this, SLOT(refreshFolders()) );
58 //-----------------------------------------------------------------------------
60 void KMFolderComboBox::createFolderList(QStringList
*names
,
61 QList
<QPointer
<KMFolder
> > *folders
)
63 kmkernel
->folderMgr()->createI18nFolderList( names
, folders
);
64 if ( !mOutboxShown
) {
65 QList
< QPointer
<KMFolder
> >::iterator folderIt
= folders
->begin();
66 QStringList::iterator namesIt
= names
->begin();
67 for ( ; folderIt
!= folders
->end(); ++folderIt
, ++namesIt
) {
68 KMFolder
*folder
= *folderIt
;
69 if ( folder
== kmkernel
->outboxFolder() )
72 if ( folderIt
!= folders
->end() ) {
73 folders
->erase( folderIt
);
74 names
->erase( namesIt
);
79 kmkernel
->imapFolderMgr()->createI18nFolderList( names
, folders
);
81 kmkernel
->dimapFolderMgr()->createI18nFolderList( names
, folders
);
84 //-----------------------------------------------------------------------------
86 void KMFolderComboBox::refreshFolders()
89 QList
<QPointer
<KMFolder
> > folders
;
90 createFolderList( &names
, &folders
);
92 KMFolder
*folder
= getFolder();
98 //-----------------------------------------------------------------------------
100 void KMFolderComboBox::setFolder( KMFolder
*aFolder
)
103 QList
<QPointer
<KMFolder
> > folders
;
104 createFolderList( &names
, &folders
);
106 int idx
= folders
.indexOf( aFolder
);
108 idx
= folders
.indexOf( kmkernel
->draftsFolder() );
109 setCurrentIndex( idx
>= 0 ? idx
: 0 );
114 void KMFolderComboBox::setFolder( const QString
&idString
)
116 KMFolder
* folder
= kmkernel
->findFolderById( idString
);
117 if (!folder
&& !idString
.isEmpty())
119 if (mSpecialIdx
>= 0)
120 removeItem(mSpecialIdx
);
121 mSpecialIdx
= count();
122 insertItem(-1, idString
);
123 setCurrentIndex(mSpecialIdx
);
131 //-----------------------------------------------------------------------------
133 KMFolder
*KMFolderComboBox::getFolder()
139 QList
<QPointer
<KMFolder
> > folders
;
140 createFolderList( &names
, &folders
);
142 if (currentIndex() == mSpecialIdx
)
145 QString text
= currentText();
147 QStringList::Iterator it
;
148 for ( it
= names
.begin(); it
!= names
.end(); ++it
) {
149 if ( ! (*it
).compare( text
) )
150 return folders
.at( idx
);
154 return kmkernel
->draftsFolder();
157 //-----------------------------------------------------------------------------
159 void KMFolderComboBox::slotActivated(int index
)
162 QList
<QPointer
<KMFolder
> > folders
;
163 createFolderList( &names
, &folders
);
165 if (index
== mSpecialIdx
)
171 mFolder
= folders
.at( index
);
175 //-----------------------------------------------------------------------------
177 #include "kmfoldercombobox.moc"