diff options
author | Casper van Donderen <casper.vandonderen@nokia.com> | 2011-06-22 13:54:56 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2011-06-24 16:47:24 +0200 |
commit | e0d5221957bf0d7857f924f1f2ae63d490de0a0a (patch) | |
tree | 580dfcaf67d95c18c3fb548b0ffa6f79f1cd60a7 /demos/sqlbrowser/browser.cpp | |
parent | d7c37d9bacc016b1156e15780080cfc8c24f6e6a (diff) |
Move all other demos in qtbase to examples.
Change-Id: Iab0e7364d1f6b348d0e3033ea9304139f5bd6d0d
Reviewed-on: http://codereview.qt.nokia.com/617
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: David Boddie
Diffstat (limited to 'demos/sqlbrowser/browser.cpp')
-rw-r--r-- | demos/sqlbrowser/browser.cpp | 247 |
1 files changed, 0 insertions, 247 deletions
diff --git a/demos/sqlbrowser/browser.cpp b/demos/sqlbrowser/browser.cpp deleted file mode 100644 index 1c53743059..0000000000 --- a/demos/sqlbrowser/browser.cpp +++ /dev/null @@ -1,247 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies). -** All rights reserved. -** Contact: Nokia Corporation (qt-info@nokia.com) -** -** This file is part of the demonstration applications of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** GNU Lesser General Public License Usage -** This file may be used under the terms of the GNU Lesser General Public -** License version 2.1 as published by the Free Software Foundation and -** appearing in the file LICENSE.LGPL included in the packaging of this -** file. Please review the following information to ensure the GNU Lesser -** General Public License version 2.1 requirements will be met: -** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -** -** In addition, as a special exception, Nokia gives you certain additional -** rights. These rights are described in the Nokia Qt LGPL Exception -** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU General -** Public License version 3.0 as published by the Free Software Foundation -** and appearing in the file LICENSE.GPL included in the packaging of this -** file. Please review the following information to ensure the GNU General -** Public License version 3.0 requirements will be met: -** http://www.gnu.org/copyleft/gpl.html. -** -** Other Usage -** Alternatively, this file may be used in accordance with the terms and -** conditions contained in a signed written agreement between you and Nokia. -** -** -** -** -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include "browser.h" -#include "qsqlconnectiondialog.h" - -#include <QtGui> -#include <QtSql> - -Browser::Browser(QWidget *parent) - : QWidget(parent) -{ - setupUi(this); - - table->addAction(insertRowAction); - table->addAction(deleteRowAction); - - if (QSqlDatabase::drivers().isEmpty()) - QMessageBox::information(this, tr("No database drivers found"), - tr("This demo requires at least one Qt database driver. " - "Please check the documentation how to build the " - "Qt SQL plugins.")); - - emit statusMessage(tr("Ready.")); -} - -Browser::~Browser() -{ -} - -void Browser::exec() -{ - QSqlQueryModel *model = new QSqlQueryModel(table); - model->setQuery(QSqlQuery(sqlEdit->toPlainText(), connectionWidget->currentDatabase())); - table->setModel(model); - - if (model->lastError().type() != QSqlError::NoError) - emit statusMessage(model->lastError().text()); - else if (model->query().isSelect()) - emit statusMessage(tr("Query OK.")); - else - emit statusMessage(tr("Query OK, number of affected rows: %1").arg( - model->query().numRowsAffected())); - - updateActions(); -} - -QSqlError Browser::addConnection(const QString &driver, const QString &dbName, const QString &host, - const QString &user, const QString &passwd, int port) -{ - static int cCount = 0; - - QSqlError err; - QSqlDatabase db = QSqlDatabase::addDatabase(driver, QString("Browser%1").arg(++cCount)); - db.setDatabaseName(dbName); - db.setHostName(host); - db.setPort(port); - if (!db.open(user, passwd)) { - err = db.lastError(); - db = QSqlDatabase(); - QSqlDatabase::removeDatabase(QString("Browser%1").arg(cCount)); - } - connectionWidget->refresh(); - - return err; -} - -void Browser::addConnection() -{ - QSqlConnectionDialog dialog(this); - if (dialog.exec() != QDialog::Accepted) - return; - - if (dialog.useInMemoryDatabase()) { - QSqlDatabase::database("in_mem_db", false).close(); - QSqlDatabase::removeDatabase("in_mem_db"); - QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", "in_mem_db"); - db.setDatabaseName(":memory:"); - if (!db.open()) - QMessageBox::warning(this, tr("Unable to open database"), tr("An error occurred while " - "opening the connection: ") + db.lastError().text()); - QSqlQuery q("", db); - q.exec("drop table Movies"); - q.exec("drop table Names"); - q.exec("create table Movies (id integer primary key, Title varchar, Director varchar, Rating number)"); - q.exec("insert into Movies values (0, 'Metropolis', 'Fritz Lang', '8.4')"); - q.exec("insert into Movies values (1, 'Nosferatu, eine Symphonie des Grauens', 'F.W. Murnau', '8.1')"); - q.exec("insert into Movies values (2, 'Bis ans Ende der Welt', 'Wim Wenders', '6.5')"); - q.exec("insert into Movies values (3, 'Hardware', 'Richard Stanley', '5.2')"); - q.exec("insert into Movies values (4, 'Mitchell', 'Andrew V. McLaglen', '2.1')"); - q.exec("create table Names (id integer primary key, Firstname varchar, Lastname varchar, City varchar)"); - q.exec("insert into Names values (0, 'Sala', 'Palmer', 'Morristown')"); - q.exec("insert into Names values (1, 'Christopher', 'Walker', 'Morristown')"); - q.exec("insert into Names values (2, 'Donald', 'Duck', 'Andeby')"); - q.exec("insert into Names values (3, 'Buck', 'Rogers', 'Paris')"); - q.exec("insert into Names values (4, 'Sherlock', 'Holmes', 'London')"); - connectionWidget->refresh(); - } else { - QSqlError err = addConnection(dialog.driverName(), dialog.databaseName(), dialog.hostName(), - dialog.userName(), dialog.password(), dialog.port()); - if (err.type() != QSqlError::NoError) - QMessageBox::warning(this, tr("Unable to open database"), tr("An error occurred while " - "opening the connection: ") + err.text()); - } -} - -void Browser::showTable(const QString &t) -{ - QSqlTableModel *model = new QSqlTableModel(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); - - connect(table->selectionModel(), SIGNAL(currentRowChanged(QModelIndex,QModelIndex)), - this, SLOT(currentChanged())); - updateActions(); -} - -void Browser::showMetaData(const QString &t) -{ - QSqlRecord rec = connectionWidget->currentDatabase().record(t); - QStandardItemModel *model = new QStandardItemModel(table); - - model->insertRows(0, rec.count()); - model->insertColumns(0, 7); - - model->setHeaderData(0, Qt::Horizontal, "Fieldname"); - model->setHeaderData(1, Qt::Horizontal, "Type"); - model->setHeaderData(2, Qt::Horizontal, "Length"); - model->setHeaderData(3, Qt::Horizontal, "Precision"); - model->setHeaderData(4, Qt::Horizontal, "Required"); - model->setHeaderData(5, Qt::Horizontal, "AutoValue"); - model->setHeaderData(6, Qt::Horizontal, "DefaultValue"); - - - for (int i = 0; i < rec.count(); ++i) { - QSqlField fld = rec.field(i); - model->setData(model->index(i, 0), fld.name()); - model->setData(model->index(i, 1), fld.typeID() == -1 - ? QString(QVariant::typeToName(fld.type())) - : QString("%1 (%2)").arg(QVariant::typeToName(fld.type())).arg(fld.typeID())); - model->setData(model->index(i, 2), fld.length()); - model->setData(model->index(i, 3), fld.precision()); - model->setData(model->index(i, 4), fld.requiredStatus() == -1 ? QVariant("?") - : QVariant(bool(fld.requiredStatus()))); - model->setData(model->index(i, 5), fld.isAutoValue()); - model->setData(model->index(i, 6), fld.defaultValue()); - } - - table->setModel(model); - table->setEditTriggers(QAbstractItemView::NoEditTriggers); - - updateActions(); -} - -void Browser::insertRow() -{ - QSqlTableModel *model = qobject_cast<QSqlTableModel *>(table->model()); - if (!model) - return; - - QModelIndex insertIndex = table->currentIndex(); - int row = insertIndex.row() == -1 ? 0 : insertIndex.row(); - model->insertRow(row); - insertIndex = model->index(row, 0); - table->setCurrentIndex(insertIndex); - table->edit(insertIndex); -} - -void Browser::deleteRow() -{ - QSqlTableModel *model = qobject_cast<QSqlTableModel *>(table->model()); - if (!model) - return; - - model->setEditStrategy(QSqlTableModel::OnManualSubmit); - - QModelIndexList currentSelection = table->selectionModel()->selectedIndexes(); - for (int i = 0; i < currentSelection.count(); ++i) { - if (currentSelection.at(i).column() != 0) - continue; - model->removeRow(currentSelection.at(i).row()); - } - - model->submitAll(); - model->setEditStrategy(QSqlTableModel::OnRowChange); - - updateActions(); -} - -void Browser::updateActions() -{ - bool enableIns = qobject_cast<QSqlTableModel *>(table->model()); - bool enableDel = enableIns && table->currentIndex().isValid(); - - insertRowAction->setEnabled(enableIns); - deleteRowAction->setEnabled(enableDel); -} - -void Browser::about() -{ - QMessageBox::about(this, tr("About"), tr("The SQL Browser demonstration " - "shows how a data browser can be used to visualize the results of SQL" - "statements on a live database")); -} |