kexi
kexidbdrivercombobox.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kexidbdrivercombobox.h"
00021
00022 #include <qlistbox.h>
00023
00024 #include <kiconloader.h>
00025
00026 KexiDBDriverComboBox::KexiDBDriverComboBox(QWidget* parent, const KexiDB::Driver::InfoMap& driversInfo,
00027 Options options)
00028 : KComboBox(parent, "KexiDBDriverComboBox")
00029 {
00030
00031 QStringList captionsForFileBasedDrivers, captionsForServerBasedDrivers;
00032 QMap<QString,QString> fileBasedDriversDict, serverBasedDriversDict;
00033 foreach(KexiDB::Driver::InfoMap::ConstIterator, it, driversInfo) {
00034 if (it.data().fileBased) {
00035 captionsForFileBasedDrivers += it.data().caption;
00036 fileBasedDriversDict[it.data().caption] = it.data().name.lower();
00037 }
00038 else {
00039 captionsForServerBasedDrivers += it.data().caption;
00040 serverBasedDriversDict[it.data().caption] = it.data().name.lower();
00041 }
00042 }
00043 captionsForFileBasedDrivers.sort();
00044 captionsForServerBasedDrivers.sort();
00045
00046 if (options & ShowFileDrivers) {
00047 foreach(QStringList::ConstIterator, it, captionsForFileBasedDrivers) {
00048 const KexiDB::Driver::Info& info = driversInfo[ fileBasedDriversDict[ *it ] ];
00050 insertItem( SmallIcon("gear"), info.caption );
00051 m_driversMap.insert(info.caption, info.name.lower());
00052 }
00053 }
00054
00055 if (options & ShowServerDrivers) {
00056 foreach(QStringList::ConstIterator, it, captionsForServerBasedDrivers) {
00057 const KexiDB::Driver::Info& info = driversInfo[ serverBasedDriversDict[ *it ] ];
00059 insertItem( SmallIcon("gear"), info.caption );
00060 m_driversMap.insert(info.caption, info.name.lower());
00061 }
00062 }
00063
00064
00065
00066
00067 for (int i=0; i<count(); i++)
00068 m_driverNames += m_driversMap[ text(i) ];
00069 }
00070
00071 KexiDBDriverComboBox::~KexiDBDriverComboBox()
00072 {
00073 }
00074
00075 QString KexiDBDriverComboBox::selectedDriverName() const
00076 {
00077 QMapConstIterator<QString,QString> it( m_driversMap.find( text( currentItem() ) ) );
00078 if (it==m_driversMap.constEnd())
00079 return QString::null;
00080 return it.data();
00081 }
00082
00083 void KexiDBDriverComboBox::setDriverName(const QString& driverName)
00084 {
00085 int index = m_driverNames.findIndex( driverName.lower() );
00086 if (index==-1) {
00087 return;
00088 }
00089 setCurrentItem(index);
00090 }
00091
00092 #include "kexidbdrivercombobox.moc"
|