From 181ad2560d7a6233ec91c47295f7c723a48c0ae2 Mon Sep 17 00:00:00 2001 From: Peter Morgan Date: Tue, 5 Oct 2010 04:35:34 +0100 Subject: [PATCH] Nuked listview and replaces with treeview --- sqlitebrowser/sqlitebrowser/form1.cpp | 63 +++++++++--------- sqlitebrowser/sqlitebrowser/form1.h | 51 ++++++-------- sqlitebrowser/sqlitebrowser/icons/icons.qrc | 2 + sqlitebrowser/sqlitebrowser/icons/table.png | Bin 0 -> 566 bytes .../sqlitebrowser/icons/tag_blue.png | Bin 0 -> 586 bytes 5 files changed, 56 insertions(+), 60 deletions(-) create mode 100755 sqlitebrowser/sqlitebrowser/icons/table.png create mode 100755 sqlitebrowser/sqlitebrowser/icons/tag_blue.png diff --git a/sqlitebrowser/sqlitebrowser/form1.cpp b/sqlitebrowser/sqlitebrowser/form1.cpp index e113e892..0ac36182 100644 --- a/sqlitebrowser/sqlitebrowser/form1.cpp +++ b/sqlitebrowser/sqlitebrowser/form1.cpp @@ -183,42 +183,45 @@ void mainForm::fileNew() void mainForm::populateStructure() { - dblistView->clear(); - dblistView->setSorting(-1); + dbTreeWidget->model()->removeRows(0, dbTreeWidget->model()->rowCount()); if (!db.isOpen()){ - return; + return; } db.updateSchema(); tableMap::Iterator it; tableMap tmap = db.tbmap; - Q3ListViewItem * lasttbitem = 0; - for ( it = tmap.begin(); it != tmap.end(); ++it ) { - Q3ListViewItem * tbitem = new Q3ListViewItem( dblistView, lasttbitem ); - //tbitem->setOpen( TRUE ); - tbitem->setText( 0, it.data().getname() ); - tbitem->setText( 1, "table" ); - tbitem->setText( 3, it.data().getsql() ); - fieldMap::Iterator fit; - fieldMap fmap = it.data().fldmap; - Q3ListViewItem * lastflditem = 0; - for ( fit = fmap.begin(); fit != fmap.end(); ++fit ) { - Q3ListViewItem * fielditem = new Q3ListViewItem(tbitem, lastflditem); - fielditem->setText( 0, fit.data().getname() ); - fielditem->setText( 1, "field" ); - fielditem->setText( 2, fit.data().gettype() ); - lastflditem = fielditem; - } - lasttbitem = tbitem; - } - indexMap::Iterator it2; - indexMap imap = db.idxmap; - for ( it2 = imap.begin(); it2 != imap.end(); ++it2 ) { - Q3ListViewItem * item = new Q3ListViewItem( dblistView, lasttbitem ); - item->setText( 0, it2.data().getname()); - item->setText( 1, "index" ); - item->setText( 3, it2.data().getsql() ); - lasttbitem = item ; + + for ( it = tmap.begin(); it != tmap.end(); ++it ) { + + //* Table node + QTreeWidgetItem *tableItem = new QTreeWidgetItem(); + tableItem->setText(0, it.data().getname()); + tableItem->setText(1, "table"); + tableItem->setText(3, it.data().getsql()); + tableItem->setIcon(0, QIcon(":/icons/table")); + dbTreeWidget->addTopLevelItem(tableItem); + + //* Field Nodes + fieldMap::Iterator fit; + fieldMap fmap = it.data().fldmap; + for ( fit = fmap.begin(); fit != fmap.end(); ++fit ) { + QTreeWidgetItem *fldItem = new QTreeWidgetItem(tableItem); + fldItem->setText( 0, fit.data().getname() ); + fldItem->setText( 1, "field" ); + fldItem->setText( 2, fit.data().gettype() ); + fldItem->setIcon(0, QIcon(":/icons/field")); } + } + indexMap::Iterator it2; + indexMap imap = db.idxmap; + for ( it2 = imap.begin(); it2 != imap.end(); ++it2 ) { + QTreeWidgetItem *idxItem = new QTreeWidgetItem(); + idxItem->setText( 0, it2.data().getname() ); + idxItem->setText( 1, "index" ); + idxItem->setText( 3, it2.data().getsql() ); + idxItem->setIcon(0, QIcon(":/icons/index")); + dbTreeWidget->addTopLevelItem(idxItem); + } } void mainForm::populateTable( const QString & tablename) diff --git a/sqlitebrowser/sqlitebrowser/form1.h b/sqlitebrowser/sqlitebrowser/form1.h index c10840e6..58eb2c7c 100644 --- a/sqlitebrowser/sqlitebrowser/form1.h +++ b/sqlitebrowser/sqlitebrowser/form1.h @@ -14,6 +14,10 @@ #include #include +#include +#include +#include + #include #include #include @@ -80,7 +84,9 @@ public: QTabWidget *mainTab; QWidget *structure; QVBoxLayout *vboxLayout1; - Q3ListView *dblistView; + + QTreeWidget *dbTreeWidget; + QWidget *browser; QVBoxLayout *vboxLayout2; QHBoxLayout *hboxLayout; @@ -225,7 +231,6 @@ public: editCreateTableAction->setObjectName(QString::fromUtf8("editCreateTableAction")); editCreateTableAction->setName("editCreateTableAction"); editCreateTableAction->setEnabled(false); - //const QIcon icon7 = QIcon(qPixmapFromMimeSource("create_table.png")); editCreateTableAction->setIcon(QIcon(":/icons/table_create")); //** Delete table @@ -233,7 +238,6 @@ public: editDeleteTableAction->setObjectName(QString::fromUtf8("editDeleteTableAction")); editDeleteTableAction->setName("editDeleteTableAction"); editDeleteTableAction->setEnabled(false); - //const QIcon icon8 = QIcon(qPixmapFromMimeSource("delete_table.png")); editDeleteTableAction->setIcon(QIcon(":/icons/table_delete")); //** Modify Table @@ -241,7 +245,6 @@ public: editModifyTableAction->setObjectName(QString::fromUtf8("editModifyTableAction")); editModifyTableAction->setName("editModifyTableAction"); editModifyTableAction->setEnabled(false); - // const QIcon icon9 = QIcon(qPixmapFromMimeSource("modify_table.png")); editModifyTableAction->setIcon(QIcon(":/icons/table_modify")); //** Create Index @@ -249,14 +252,12 @@ public: editCreateIndexAction->setObjectName(QString::fromUtf8("editCreateIndexAction")); editCreateIndexAction->setName("editCreateIndexAction"); editCreateIndexAction->setEnabled(false); - //const QIcon icon10 = QIcon(qPixmapFromMimeSource("create_index.png")); editCreateIndexAction->setIcon(QIcon(":/icons/index_create")); editDeleteIndexAction = new QAction(mainForm); editDeleteIndexAction->setObjectName(QString::fromUtf8("editDeleteIndexAction")); editDeleteIndexAction->setName("editDeleteIndexAction"); editDeleteIndexAction->setEnabled(false); - //const QIcon icon11 = QIcon(qPixmapFromMimeSource("delete_index.png")); editDeleteIndexAction->setIcon(QIcon(":/icons/index_delete")); fileImportSQLAction = new QAction(mainForm); @@ -283,26 +284,19 @@ public: vboxLayout1->setSpacing(6); vboxLayout1->setContentsMargins(11, 11, 11, 11); vboxLayout1->setObjectName(QString::fromUtf8("vboxLayout1")); - dblistView = new Q3ListView(structure); - dblistView->addColumn(QApplication::translate("mainForm", "Name", 0, QApplication::UnicodeUTF8)); - dblistView->header()->setClickEnabled(false, dblistView->header()->count() - 1); - dblistView->header()->setResizeEnabled(true, dblistView->header()->count() - 1); - dblistView->addColumn(QApplication::translate("mainForm", "Object", 0, QApplication::UnicodeUTF8)); - dblistView->header()->setClickEnabled(false, dblistView->header()->count() - 1); - dblistView->header()->setResizeEnabled(true, dblistView->header()->count() - 1); - dblistView->addColumn(QApplication::translate("mainForm", "Type", 0, QApplication::UnicodeUTF8)); - dblistView->header()->setClickEnabled(false, dblistView->header()->count() - 1); - dblistView->header()->setResizeEnabled(true, dblistView->header()->count() - 1); - dblistView->addColumn(QApplication::translate("mainForm", "Schema", 0, QApplication::UnicodeUTF8)); - dblistView->header()->setClickEnabled(false, dblistView->header()->count() - 1); - dblistView->header()->setResizeEnabled(true, dblistView->header()->count() - 1); - dblistView->setObjectName(QString::fromUtf8("dblistView")); - dblistView->setResizePolicy(Q3ScrollView::Manual); - dblistView->setSelectionMode(Q3ListView::NoSelection); - dblistView->setRootIsDecorated(true); - dblistView->setResizeMode(Q3ListView::LastColumn); - vboxLayout1->addWidget(dblistView); + //*** Tree Widget Setup + dbTreeWidget = new QTreeWidget(); + vboxLayout1->addWidget(dbTreeWidget); + QTreeWidgetItem *headerItem = dbTreeWidget->headerItem(); + headerItem->setText(0, QApplication::translate("mainForm", "Name", 0, QApplication::UnicodeUTF8)); + headerItem->setText(1, QApplication::translate("mainForm", "Object", 0, QApplication::UnicodeUTF8)); + headerItem->setText(2, QApplication::translate("mainForm", "Type", 0, QApplication::UnicodeUTF8)); + headerItem->setText(3, QApplication::translate("mainForm", "Schema", 0, QApplication::UnicodeUTF8)); + dbTreeWidget->setAlternatingRowColors(true); + dbTreeWidget->setRootIsDecorated(true); + dbTreeWidget->setAnimated(true); + mainTab->addTab(structure, QString()); browser = new QWidget(); @@ -740,12 +734,9 @@ public: #ifndef QT_NO_TOOLTIP mainTab->setProperty("toolTip", QVariant(QString())); #endif // QT_NO_TOOLTIP - dblistView->header()->setLabel(0, QApplication::translate("mainForm", "Name", 0, QApplication::UnicodeUTF8)); - dblistView->header()->setLabel(1, QApplication::translate("mainForm", "Object", 0, QApplication::UnicodeUTF8)); - dblistView->header()->setLabel(2, QApplication::translate("mainForm", "Type", 0, QApplication::UnicodeUTF8)); - dblistView->header()->setLabel(3, QApplication::translate("mainForm", "Schema", 0, QApplication::UnicodeUTF8)); + #ifndef QT_NO_WHATSTHIS - dblistView->setProperty("whatsThis", QVariant(QApplication::translate("mainForm", "This area shows the structure of your database, including all tables and indexes.", 0, QApplication::UnicodeUTF8))); + #endif // QT_NO_WHATSTHIS mainTab->setTabText(mainTab->indexOf(structure), QApplication::translate("mainForm", "Database Structure", 0, QApplication::UnicodeUTF8)); textLabel1->setText(QApplication::translate("mainForm", "Table:", 0, QApplication::UnicodeUTF8)); diff --git a/sqlitebrowser/sqlitebrowser/icons/icons.qrc b/sqlitebrowser/sqlitebrowser/icons/icons.qrc index 40ed88d4..3423906a 100644 --- a/sqlitebrowser/sqlitebrowser/icons/icons.qrc +++ b/sqlitebrowser/sqlitebrowser/icons/icons.qrc @@ -16,5 +16,7 @@ accept.png bullet_black.png page_green.png + table.png + tag_blue.png diff --git a/sqlitebrowser/sqlitebrowser/icons/table.png b/sqlitebrowser/sqlitebrowser/icons/table.png new file mode 100755 index 0000000000000000000000000000000000000000..abcd93689a08ec9bdbf0984927e8da06c043c7cd GIT binary patch literal 566 zcmV-60?GY}P)>q?GuNnCdgP^*Bj5V_b?dAq2Ppn9^MBB^YUM zad0N-T{Ujg*A6d~mYV4na=hT4Nz+_}SGTgW|Iir!%$ z;@OGkWI6+j0H}~K4RYR%!7y|zM`O@*K>rL{*&}x3lR**HrMXC1->#slU>X|w!U1xQ zqc6YY{78#rvt}vj%qrc zN=UU@y$E6COaj9&r1NAlaUpajQlL~SorN%pOwHs*2laYgHBA$?ZOd~4Rw@5yFm2?1ZIg`0V-$-;GT1Fi5dB7wUSNi^%`^Ge62m>OBeX610Nsukl}DhDG-mxT?nhyYH!4he7Ri8 zrq0Ti&UXUvqX&F@JcJAe14@BNBqAY_QZAPjF(Y3r7P9H_kB#@LgFAf>xz>Qp&n=|a z>ro1XLZK^nmO`PRh#C2OK0ktd7l6-A;O5?fz1gNnCX)yR0