File indexing completed on 2024-05-12 05:12:44

0001 /*
0002     SPDX-FileCopyrightText: 2009 Volker Krause <vkrause@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "dbbrowser.h"
0008 #include <Akonadi/DbAccess>
0009 
0010 #include <QSqlTableModel>
0011 
0012 #include <QIcon>
0013 
0014 DbBrowser::DbBrowser(QWidget *parent)
0015     : QWidget(parent)
0016 {
0017     ui.setupUi(this);
0018 
0019     if (DbAccess::database().isOpen()) {
0020         QStringList userTables = DbAccess::database().tables(QSql::Tables);
0021         userTables.sort();
0022         QStringList systemTables = DbAccess::database().tables(QSql::SystemTables);
0023         systemTables.sort();
0024 
0025         ui.tableBox->addItems(QStringList() << userTables << systemTables);
0026     }
0027 
0028     ui.refreshButton->setIcon(QIcon::fromTheme(QStringLiteral("view-refresh")));
0029     connect(ui.refreshButton, &QPushButton::clicked, this, &DbBrowser::refreshClicked);
0030     connect(ui.tableBox, &KComboBox::currentTextChanged, this, &DbBrowser::refreshClicked);
0031 }
0032 
0033 void DbBrowser::refreshClicked()
0034 {
0035     const QString table = ui.tableBox->currentText();
0036     if (table.isEmpty()) {
0037         return;
0038     }
0039     delete mTableModel;
0040     mTableModel = new QSqlTableModel(this, DbAccess::database());
0041     mTableModel->setTable(table);
0042     mTableModel->setEditStrategy(QSqlTableModel::OnRowChange);
0043     mTableModel->select();
0044     ui.tableView->setModel(mTableModel);
0045     connect(ui.tableView->horizontalHeader(), &QHeaderView::sortIndicatorChanged, this, &DbBrowser::onSortIndicatorChanged);
0046 }
0047 
0048 void DbBrowser::onSortIndicatorChanged(int column, Qt::SortOrder order)
0049 {
0050     mTableModel->sort(column, order);
0051 }
0052 
0053 #include "moc_dbbrowser.cpp"