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"