#include "SavedQueryWidget.h" #include "ui_SavedQueryWidget.h" #include #include SavedQueryWidget::SavedQueryWidget(QWidget *parent) : QWidget(parent), ui(new Ui::SavedQueryWidget) { ui->setupUi(this); } SavedQueryWidget::~SavedQueryWidget() { delete ui; } void SavedQueryWidget::setDatabase(QSqlDatabase *database) { m_database = database; loadQueries(); } void SavedQueryWidget::addQuery(QString query) { QListWidgetItem *item = new QListWidgetItem(); item->setData(Qt::DisplayRole, query); //item->setData(Qt::DisplayRole, "Title"); //item->setData(Qt::UserRole, query); ui->listWidget->addItem(item); //http://stackoverflow.com/questions/6905147/qt-qlistwidgetitem-multiple-lines saveQueries(); } void SavedQueryWidget::on_addButton_clicked() { emit addButtonClicked(); } void SavedQueryWidget::on_removeButton_clicked() { QListWidgetItem *item = ui->listWidget->currentItem(); ui->listWidget->takeItem(ui->listWidget->currentRow()); delete item; saveQueries(); } void SavedQueryWidget::loadQueries() { // Load saved connections QSettings settings; int size = settings.beginReadArray(m_database->connectionName()); for (int i = 0; i < size; i++) { settings.setArrayIndex(i); // Add item to combo box ui->listWidget->addItem(settings.value("query").toString()); } settings.endArray(); } void SavedQueryWidget::saveQueries() { // Save queries QSettings settings; settings.beginWriteArray(m_database->connectionName()); for (int i = 0; i < ui->listWidget->count(); i++) { settings.setArrayIndex(i); settings.setValue("query", ui->listWidget->item(i)->text()); } settings.endArray(); } void SavedQueryWidget::on_listWidget_itemActivated(QListWidgetItem *item) { emit querySelected(item->text()); }