$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r76304 - sandbox/icl/libs/xplore/br1/sqlbrowser
From: afojgo_at_[hidden]
Date: 2012-01-04 09:55:45
Author: jofaber
Date: 2012-01-04 09:55:44 EST (Wed, 04 Jan 2012)
New Revision: 76304
URL: http://svn.boost.org/trac/boost/changeset/76304
Log:
Tree and table view on an Sql-model.
Binary files modified: 
   sandbox/icl/libs/xplore/br1/sqlbrowser/media1.db
Text files modified: 
   sandbox/icl/libs/xplore/br1/sqlbrowser/browser.cpp      |    84 +++++++++++++++++++++++---------------- 
   sandbox/icl/libs/xplore/br1/sqlbrowser/browser.h        |    12 ++++                                    
   sandbox/icl/libs/xplore/br1/sqlbrowser/browserwidget.ui |     9 ++-                                     
   3 files changed, 65 insertions(+), 40 deletions(-)
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/browser.cpp
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/browser.cpp	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/browser.cpp	2012-01-04 09:55:44 EST (Wed, 04 Jan 2012)
@@ -51,8 +51,11 @@
 {
     setupUi(this);
 
-    table->addAction(insertRowAction);
-    table->addAction(deleteRowAction);
+    ext_table->addAction(insertRowAction);
+    ext_table->addAction(deleteRowAction);
+
+    ext_tree->addAction(insertRowAction);
+    ext_tree->addAction(deleteRowAction);
 
     if (QSqlDatabase::drivers().isEmpty())
         QMessageBox::information(this, tr("No database drivers found"),
@@ -69,17 +72,18 @@
 
 void Browser::exec()
 {
-    QSqlQueryModel *model = new QSqlQueryModel(table);
+    QSqlQueryModel *model = new QSqlQueryModel(ext_table);
     model->setQuery(QSqlQuery(sqlEdit->toPlainText(), connectionWidget->currentDatabase()));
 
-    table->setModel(model);
+    ext_table->setModel(model);
+    ext_tree->setModel(model);//JOFA
 
     //JOFA additions ----------------------------------------------------------
-    table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
+    ext_table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
 
-    table->setSortingEnabled(true);
-    table->setAlternatingRowColors(true);
-    table->resizeColumnsToContents();
+    ext_table->setSortingEnabled(true);
+    ext_table->setAlternatingRowColors(true);
+    ext_table->resizeColumnsToContents();
     //JOFA additions ----------------------------------------------------------
 
 
@@ -184,25 +188,37 @@
     }
 }
 
-void Browser::showTable(const QString &t)
+QSqlTableModel* Browser::showTable(const QString &t)
 {
-    QSqlTableModel *model = new QSqlTableModel(table, connectionWidget->currentDatabase());
+    QSqlTableModel *model = new QSqlTableModel(ext_table, connectionWidget->currentDatabase());
     model->setEditStrategy(QSqlTableModel::OnRowChange);
     model->setTable(connectionWidget->currentDatabase().driver()->escapeIdentifier(t, QSqlDriver::TableName));
     model->select();
     if (model->lastError().type() != QSqlError::NoError)
         emit statusMessage(model->lastError().text());
-    table->setModel(model);
-    table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
+    ext_table->setModel(model);
+    ext_table->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
 
     //JOFA additions ----------------------------------------------------------
-    table->setSortingEnabled(true);
-    table->setAlternatingRowColors(true);
-    table->resizeColumnsToContents();
+    ext_table->setSortingEnabled(true);
+    ext_table->setAlternatingRowColors(true);
+    ext_table->resizeColumnsToContents();
     //JOFA additions ----------------------------------------------------------
 
     //REV connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), this, SLOT(currentChanged()));
-    connect(table->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(on_rowSelectChanged()));
+    connect(ext_table->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(on_rowSelectChanged()));
+
+    updateActions();
+    return model;
+}
+
+void Browser::showTree(QSqlTableModel *model)
+{
+    ext_tree->setModel(model);
+    //JODO? ext_tree->setEditTriggers(QAbstractItemView::DoubleClicked|QAbstractItemView::EditKeyPressed);
+
+    //REV connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), this, SLOT(currentChanged()));
+    connect(ext_tree->selectionModel(), SIGNAL(selectionChanged(const QItemSelection&, const QItemSelection&)), this, SLOT(on_rowSelectChanged()));
 
     updateActions();
 }
@@ -210,7 +226,7 @@
 void Browser::showMetaData(const QString &t)
 {
     QSqlRecord rec = connectionWidget->currentDatabase().record(t);
-    QStandardItemModel *model = new QStandardItemModel(table);
+    QStandardItemModel *model = new QStandardItemModel(ext_table);
 
     model->insertRows(0, rec.count());
     model->insertColumns(0, 7);
@@ -238,35 +254,35 @@
         model->setData(model->index(i, 6), fld.defaultValue());
     }
 
-    table->setModel(model);
-    table->setEditTriggers(QAbstractItemView::NoEditTriggers);
+    ext_table->setModel(model);
+    ext_table->setEditTriggers(QAbstractItemView::NoEditTriggers);
 
     updateActions();
 }
 
 void Browser::insertRow()
 {
-    QSqlTableModel *model = qobject_cast<QSqlTableModel *>(table->model());
+    QSqlTableModel *model = qobject_cast<QSqlTableModel *>(ext_table->model());
     if (!model)
         return;
 
-    QModelIndex insertIndex = table->currentIndex();
+    QModelIndex insertIndex = ext_table->currentIndex();
     int row = insertIndex.row() == -1 ? 0 : insertIndex.row();
     model->insertRow(row);
     insertIndex = model->index(row, 0);
-    table->setCurrentIndex(insertIndex);
-    table->edit(insertIndex);
+    ext_table->setCurrentIndex(insertIndex);
+    ext_table->edit(insertIndex);
 }
 
 void Browser::deleteRow()
 {
-    QSqlTableModel *model = qobject_cast<QSqlTableModel *>(table->model());
+    QSqlTableModel *model = qobject_cast<QSqlTableModel *>(ext_table->model());
     if (!model)
         return;
 
     model->setEditStrategy(QSqlTableModel::OnManualSubmit);
 
-    QModelIndexList currentSelection = table->selectionModel()->selectedIndexes();
+    QModelIndexList currentSelection = ext_table->selectionModel()->selectedIndexes();
     for (int i = 0; i < currentSelection.count(); ++i) {
         if (currentSelection.at(i).column() != 0)
             continue;
@@ -282,8 +298,8 @@
 void Browser::updateActions()
 {
     //CL emit statusMessage(tr("updateActions()"));
-    bool enableIns = qobject_cast<QSqlTableModel *>(table->model());
-    bool enableDel = enableIns && table->currentIndex().isValid();
+    bool enableIns = qobject_cast<QSqlTableModel *>(ext_table->model());
+    bool enableDel = enableIns && ext_table->currentIndex().isValid();
 
     insertRowAction->setEnabled(enableIns);
     deleteRowAction->setEnabled(enableDel);
@@ -308,18 +324,18 @@
 
 void Browser::deselectFirstCell(int selectedRow)
 {
-    QSqlTableModel *model = qobject_cast<QSqlTableModel *>(table->model());
+    QSqlTableModel *model = qobject_cast<QSqlTableModel *>(ext_table->model());
     QModelIndex firstCell;
     const int firstCol = 0;
     firstCell = model->index(selectedRow, firstCol, QModelIndex());
     QItemSelection toggleSelection;
     toggleSelection.select(firstCell, firstCell);
-    table->selectionModel()->select(toggleSelection, QItemSelectionModel::Toggle);
+    ext_table->selectionModel()->select(toggleSelection, QItemSelectionModel::Toggle);
 }
 
 void Browser::on_rowSelectChanged()
 {
-    QModelIndexList currentSelection = table->selectionModel()->selectedIndexes();
+    QModelIndexList currentSelection = ext_table->selectionModel()->selectedIndexes();
     int selCount    = currentSelection.count();
     int firstRow    = selCount > 0 ? currentSelection.at(1).row() : -1;
     int firstColumn = selCount > 0 ? currentSelection.at(1).column() : -1;
@@ -329,15 +345,15 @@
     emit statusMessage(selectedRowInfo);
 
     int nextRow = firstRow + 1;
-    if     (firstRow > -1 && firstColumn == 1 && !table->isRowHidden(nextRow))
+    if     (firstRow > -1 && firstColumn == 1 && !ext_table->isRowHidden(nextRow))
     {
         deselectFirstCell(firstRow);
-        table->hideRow(nextRow);
+        ext_table->hideRow(nextRow);
     }
-    else if(firstRow > -1 && firstColumn == 1 &&  table->isRowHidden(nextRow))
+    else if(firstRow > -1 && firstColumn == 1 &&  ext_table->isRowHidden(nextRow))
     {
         deselectFirstCell(firstRow);
-        table->showRow(nextRow);
+        ext_table->showRow(nextRow);
     }
 }
 
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/browser.h
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/browser.h	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/browser.h	2012-01-04 09:55:44 EST (Wed, 04 Jan 2012)
@@ -43,10 +43,12 @@
 #define BROWSER_H
 
 #include <QWidget>
+#include <QSqlTableModel>
 #include "exttableview.h"
 #include "ui_browserwidget.h"
 
 class ConnectionWidget;
+QT_FORWARD_DECLARE_CLASS(QSqlTableModel)
 QT_FORWARD_DECLARE_CLASS(QTableView)
 QT_FORWARD_DECLARE_CLASS(QPushButton)
 QT_FORWARD_DECLARE_CLASS(QTextEdit)
@@ -69,7 +71,8 @@
 
 public slots:
     void exec();
-    void showTable(const QString &table);
+    QSqlTableModel* showTable(const QString &table);
+    void showTree(QSqlTableModel *model);
     void showMetaData(const QString &table);
     void addConnection();
     void openFile();
@@ -80,8 +83,13 @@
     { insertRow(); }
     void on_deleteRowAction_triggered()
     { deleteRow(); }
+
     void on_connectionWidget_tableActivated(const QString &table)
-    { showTable(table); }
+    {
+        QSqlTableModel* model = showTable(table);
+        showTree(model);
+    }
+
     void on_connectionWidget_metaDataRequested(const QString &table)
     { showMetaData(table); }
     void on_submitButton_clicked()
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/browserwidget.ui
==============================================================================
--- sandbox/icl/libs/xplore/br1/sqlbrowser/browserwidget.ui	(original)
+++ sandbox/icl/libs/xplore/br1/sqlbrowser/browserwidget.ui	2012-01-04 09:55:44 EST (Wed, 04 Jan 2012)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>765</width>
-    <height>515</height>
+    <width>850</width>
+    <height>516</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -86,7 +86,7 @@
        </sizepolicy>
       </property>
      </widget>
-     <widget class="ExtTableView" name="table">
+     <widget class="ExtTableView" name="ext_table">
       <property name="sizePolicy">
        <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
         <horstretch>2</horstretch>
@@ -596,6 +596,7 @@
        <enum>QAbstractItemView::SelectRows</enum>
       </property>
      </widget>
+     <widget class="QTreeView" name="ext_tree"/>
     </widget>
    </item>
    <item>
@@ -725,7 +726,7 @@
   <tabstop>clearButton</tabstop>
   <tabstop>submitButton</tabstop>
   <tabstop>connectionWidget</tabstop>
-  <tabstop>table</tabstop>
+  <tabstop>ext_table</tabstop>
  </tabstops>
  <resources/>
  <connections/>
Modified: sandbox/icl/libs/xplore/br1/sqlbrowser/media1.db
==============================================================================
Binary files. No diff available.