ConnectionWidget Class Reference

#include <connectionwidget.h>

Inheritance diagram for ConnectionWidget:

Inheritance graph
[legend]
Collaboration diagram for ConnectionWidget:

Collaboration graph
[legend]
List of all members.

Detailed Description

Definition at line 34 of file connectionwidget.h.

Public Slots

void refresh ()
void showMetaData ()
void on_tree_itemActivated (QTreeWidgetItem *item, int column)
void on_tree_currentItemChanged (QTreeWidgetItem *current, QTreeWidgetItem *previous)

Signals

void tableActivated (const QString &table)
void metaDataRequested (const QString &tableName)

Public Member Functions

 ConnectionWidget (QWidget *parent=0)
virtual ~ConnectionWidget ()
QSqlDatabase currentDatabase () const

Private Member Functions

void setActive (QTreeWidgetItem *)

Private Attributes

QTreeWidgettree
QActionmetaDataAction
QString activeDb


Constructor & Destructor Documentation

ConnectionWidget::ConnectionWidget ( QWidget parent = 0  ) 

Definition at line 29 of file connectionwidget.cpp.

References Qt::ActionsContextMenu, QWidget::addAction(), QLayout::addWidget(), QObject::connect(), QMetaObject::connectSlotsByName(), QTreeView::header(), QWidget::layout(), metaDataAction, refresh(), QWidget::setContextMenuPolicy(), QTreeWidget::setHeaderLabels(), QObject::setObjectName(), QHeaderView::setResizeMode(), showMetaData(), SIGNAL, SLOT, QHeaderView::Stretch, and tree.

00030     : QWidget(parent)
00031 {
00032     QVBoxLayout *layout = new QVBoxLayout(this);
00033     tree = new QTreeWidget(this);
00034     tree->setObjectName(QLatin1String("tree"));
00035     tree->setHeaderLabels(QStringList(tr("database")));
00036     tree->header()->setResizeMode(QHeaderView::Stretch);
00037     QAction *refreshAction = new QAction(tr("Refresh"), tree);
00038     metaDataAction = new QAction(tr("Show Schema"), tree);
00039     connect(refreshAction, SIGNAL(triggered()), SLOT(refresh()));
00040     connect(metaDataAction, SIGNAL(triggered()), SLOT(showMetaData()));
00041     tree->addAction(refreshAction);
00042     tree->addAction(metaDataAction);
00043     tree->setContextMenuPolicy(Qt::ActionsContextMenu);
00044 
00045     layout->addWidget(tree);
00046 
00047     QMetaObject::connectSlotsByName(this);
00048 }

Here is the call graph for this function:

ConnectionWidget::~ConnectionWidget (  )  [virtual]

Definition at line 50 of file connectionwidget.cpp.

00051 {
00052 }


Member Function Documentation

QSqlDatabase ConnectionWidget::currentDatabase (  )  const

Definition at line 94 of file connectionwidget.cpp.

References activeDb, and QSqlDatabase::database().

00095 {
00096     return QSqlDatabase::database(activeDb);
00097 }

Here is the call graph for this function:

void ConnectionWidget::tableActivated ( const QString table  )  [signal]

Referenced by on_tree_itemActivated().

void ConnectionWidget::metaDataRequested ( const QString tableName  )  [signal]

Referenced by showMetaData().

void ConnectionWidget::refresh (  )  [slot]

Definition at line 64 of file connectionwidget.cpp.

References activeDb, QList< T >::at(), QTreeWidget::clear(), QSqlDatabase::connectionNames(), QList< T >::count(), QSqlDatabase::database(), QTreeView::doItemsLayout(), i, QSqlDatabase::isOpen(), qDBCaption(), setActive(), t, QSqlDatabase::tables(), QTreeWidget::topLevelItem(), tree, and QList< T >::value().

Referenced by ConnectionWidget().

00065 {
00066     tree->clear();
00067     QStringList connectionNames = QSqlDatabase::connectionNames();
00068 
00069     bool gotActiveDb = false;
00070     for (int i = 0; i < connectionNames.count(); ++i) {
00071         QTreeWidgetItem *root = new QTreeWidgetItem(tree);
00072         QSqlDatabase db = QSqlDatabase::database(connectionNames.at(i), false);
00073         root->setText(0, qDBCaption(db));
00074         if (connectionNames.at(i) == activeDb) {
00075             gotActiveDb = true;
00076             setActive(root);
00077         }
00078         if (db.isOpen()) {
00079             QStringList tables = db.tables();
00080             for (int t = 0; t < tables.count(); ++t) {
00081                 QTreeWidgetItem *table = new QTreeWidgetItem(root);
00082                 table->setText(0, tables.at(t));
00083             }
00084         }
00085     }
00086     if (!gotActiveDb) {
00087         activeDb = connectionNames.value(0);
00088         setActive(tree->topLevelItem(0));
00089     }
00090 
00091     tree->doItemsLayout(); // HACK
00092 }

void ConnectionWidget::showMetaData (  )  [slot]

Definition at line 134 of file connectionwidget.cpp.

References QTreeWidget::currentItem(), emit, metaDataRequested(), QTreeWidgetItem::parent(), setActive(), QTreeWidgetItem::text(), and tree.

Referenced by ConnectionWidget().

00135 {
00136     QTreeWidgetItem *cItem = tree->currentItem();
00137     if (!cItem || !cItem->parent())
00138         return;
00139     setActive(cItem->parent());
00140     emit metaDataRequested(cItem->text(0));
00141 }

void ConnectionWidget::on_tree_itemActivated ( QTreeWidgetItem item,
int  column 
) [slot]

Definition at line 120 of file connectionwidget.cpp.

References emit, QTreeWidgetItem::parent(), setActive(), tableActivated(), and QTreeWidgetItem::text().

00121 {
00122 
00123     if (!item)
00124         return;
00125 
00126     if (!item->parent()) {
00127         setActive(item);
00128     } else {
00129         setActive(item->parent());
00130         emit tableActivated(item->text(0));
00131     }
00132 }

void ConnectionWidget::on_tree_currentItemChanged ( QTreeWidgetItem current,
QTreeWidgetItem previous 
) [slot]

Definition at line 143 of file connectionwidget.cpp.

References metaDataAction, QTreeWidgetItem::parent(), and QAction::setEnabled().

00144 {
00145     metaDataAction->setEnabled(current && current->parent());
00146 }

void ConnectionWidget::setActive ( QTreeWidgetItem  )  [private]

Definition at line 106 of file connectionwidget.cpp.

References activeDb, QFont::bold(), QSqlDatabase::connectionNames(), QTreeWidgetItem::font(), i, QTreeWidget::indexOfTopLevelItem(), qSetBold(), QTreeWidget::topLevelItem(), QTreeWidget::topLevelItemCount(), tree, and QList< T >::value().

Referenced by on_tree_itemActivated(), refresh(), and showMetaData().

00107 {
00108     for (int i = 0; i < tree->topLevelItemCount(); ++i) {
00109         if (tree->topLevelItem(i)->font(0).bold())
00110             qSetBold(tree->topLevelItem(i), false);
00111     }
00112 
00113     if (!item)
00114         return;
00115 
00116     qSetBold(item, true);
00117     activeDb = QSqlDatabase::connectionNames().value(tree->indexOfTopLevelItem(item));
00118 }

Here is the call graph for this function:


Member Data Documentation

QTreeWidget* ConnectionWidget::tree [private]

Definition at line 56 of file connectionwidget.h.

Referenced by ConnectionWidget(), refresh(), setActive(), and showMetaData().

QAction* ConnectionWidget::metaDataAction [private]

Definition at line 57 of file connectionwidget.h.

Referenced by ConnectionWidget(), and on_tree_currentItemChanged().

QString ConnectionWidget::activeDb [private]

Definition at line 58 of file connectionwidget.h.

Referenced by currentDatabase(), refresh(), and setActive().


The documentation for this class was generated from the following files:
Generated on Thu Mar 15 14:50:14 2007 for Qt 4.2 User's Guide by  doxygen 1.5.1