20#include "KexiProjectSelector.h"
22#include <kexidb/drivermanager.h>
23#include <kexidb/connectiondata.h>
26#include <tdeapplication.h>
27#include <kiconloader.h>
33#include <tqpushbutton.h>
35#include <tqlistview.h>
40class KexiProjectSelectorWidgetPrivate
43 KexiProjectSelectorWidgetPrivate()
47 TQPixmap fileicon, dbicon;
48 bool showProjectNameColumn : 1;
49 bool showConnectionColumns : 1;
56class ProjectDataLVItem : public TQListViewItem
61 : TQListViewItem(selector->list)
66 if (selector->d->showProjectNameColumn)
67 setText(colnum++, data->caption()+ " ");
69 setText(colnum++, data->databaseName()+ " ");
71 if (selector->d->showConnectionColumns) {
72 TQString drvname = info.caption.isEmpty() ? cdata-> driverName : info.caption;
74 setText(colnum++, i18n( "File") + " ("+drvname+ ") " );
76 setText(colnum++, drvname+ " " );
83 setText(3, conn + " ");
86 ~ProjectDataLVItem() {}
98 TQWidget* parent, const char* name,
100 bool showConnectionColumns )
101 : KexiProjectSelectorBase( parent, name )
103 ,d(new KexiProjectSelectorWidgetPrivate())
105 d->showProjectNameColumn = showProjectNameColumn;
106 d->showConnectionColumns = showConnectionColumns;
108 d->fileicon = TDEGlobal::iconLoader()->loadIcon( iconname, TDEIcon::Desktop );
109 setIcon( d->fileicon );
110 d->dbicon = SmallIcon( "application-vnd.oasis.opendocument.database");
113 if (!d->showConnectionColumns) {
114 list->removeColumn(2);
115 list->removeColumn(2);
117 if (!d->showProjectNameColumn) {
118 list->removeColumn(0);
124 connect(list,TQ_SIGNAL(doubleClicked(TQListViewItem*)), this,TQ_SLOT(slotItemExecuted(TQListViewItem*)));
125 connect(list,TQ_SIGNAL(returnPressed(TQListViewItem*)), this,TQ_SLOT(slotItemExecuted(TQListViewItem*)));
126 connect(list,TQ_SIGNAL(selectionChanged()), this,TQ_SLOT(slotItemSelected()));
139 ProjectDataLVItem *item = static_cast<ProjectDataLVItem* >(list->selectedItem());
145void KexiProjectSelectorWidget::slotItemExecuted(TQListViewItem *item)
149 ProjectDataLVItem *ditem = static_cast<ProjectDataLVItem* >(item);
151 emit projectExecuted( ditem->data );
154void KexiProjectSelectorWidget::slotItemSelected()
158 ProjectDataLVItem *ditem = static_cast<ProjectDataLVItem* >(list->selectedItem());
159 emit selectionChanged( ditem ? ditem->data : 0 );
172 if (m_prj_set-> error()) {
173 kdDebug() << "KexiProjectSelectorWidget::setProjectSet() : m_prj_set->error() !"<<endl;
177 KexiProjectData::List prjlist = m_prj_set-> list();
181 if (!info.name.isEmpty()) {
182 ProjectDataLVItem *item = new ProjectDataLVItem(data, info, this);
184 item->setSelectable( false);
186 item->setPixmap( 0, d->fileicon );
188 item->setPixmap( 0, d->dbicon );
191 kdWarning() << "KexiProjectSelector::KexiProjectSelector(): no driver found for '"
192 << data->constConnectionData()-> driverName << "'!" << endl;
196 if (list->firstChild()) {
197 list->setSelected(list->firstChild(), true);
203 if (d->selectable == set)
207 TQListViewItemIterator it( list );
208 while ( it.current() ) {
209 it.current()->setSelectable( d->selectable );
215 return d->selectable;
221 KexiProjectSet* prj_set, bool showProjectNameColumn, bool showConnectionColumns)
222 : KDialogBase( Plain, i18n( "Open Recent Project"),
223#ifndef KEXI_NO_UNFINISHED
227 Ok | Cancel, Ok, parent, name )
229 init(prj_set, showProjectNameColumn, showConnectionColumns);
234 bool showProjectNameColumn, bool showConnectionColumns)
236 Plain, i18n( "Open Project"),
237#ifndef KEXI_NO_UNFINISHED
241 Ok | Cancel, Ok, parent, name, true, false )
243 setButtonGuiItem(Ok, KGuiItem(i18n( "&Open"), "document-open", i18n( "Open Database Connection")));
248 init(prj_set, showProjectNameColumn, showConnectionColumns);
250 m_sel->label->setText( i18n( "Select a project on <b>%1</b> database server to open:")
254KexiProjectSelectorDialog::~KexiProjectSelectorDialog()
258void KexiProjectSelectorDialog::init( KexiProjectSet* prj_set, bool showProjectNameColumn,
259 bool showConnectionColumns)
261 setSizeGripEnabled( true);
263 TQVBoxLayout *lyr = new TQVBoxLayout(plainPage(), 0, KDialogBase::spacingHint(), "lyr");
265 prj_set, showProjectNameColumn, showConnectionColumns);
266 lyr->addWidget(m_sel);
267 setIcon(*m_sel->icon());
286void KexiProjectSelectorDialog::slotProjectSelectionChanged( KexiProjectData* pdata)
288 enableButtonOK(pdata);
291void KexiProjectSelectorDialog::show()
294 KDialog::centerOnScreen( this);
297#include "KexiProjectSelector.moc"
TQString caption The caption of the connection.
TQString driverName the name of the driver that should be used to create a connection
Database specific connection data, e.g. host, port.
TQString serverInfoString(bool addUser=true) const A user-friendly string for the server.
Database driver management, e.g. finding and loading drivers.
KexiDB::Driver::Info driverInfo(const TQString &name)
bool fileBased true is the driver is for file-based database backend
static TQString defaultFileBasedDriverMimeType()
Kexi project core data member.
KexiProjectSelectorDialog(TQWidget *parent, const char *name, KexiProjectSet *prj_set, bool showProjectNameColumn=true, bool showConnectionColumns=true)
KexiProjectData * selectedProjectData() const
Stores information about multiple kexi project-data items.
KexiProjectData::List list() const
|