summaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/dialogs
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/dialogs')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.cpp32
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.h4
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui68
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp44
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp1
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.cpp11
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.h6
7 files changed, 144 insertions, 22 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.cpp
index 0d291e5..82d5e14 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.cpp
@@ -9,6 +9,8 @@
#include "iconmanager.h"
#include <QDebug>
#include <QFile>
+#include <QApplication>
+#include <QClipboard>
AboutDialog::AboutDialog(InitialMode initialMode, QWidget *parent) :
QDialog(parent),
@@ -73,16 +75,21 @@ void AboutDialog::init(InitialMode initialMode)
licenseContents.clear();
// Environment
- copyAct = new QAction(tr("Copy"), this);
ui->appDirEdit->setText(qApp->applicationDirPath());
ui->cfgDirEdit->setText(CFG->getConfigDir());
ui->pluginDirList->addItems(filterResourcePaths(PLUGINS->getPluginDirs()));
ui->iconDirList->addItems(filterResourcePaths(ICONMANAGER->getIconDirs()));
ui->formDirList->addItems(filterResourcePaths(FORMS->getFormDirs()));
ui->qtVerEdit->setText(QT_VERSION_STR);
- ui->pluginDirList->addAction(copyAct);
- ui->iconDirList->addAction(copyAct);
- ui->formDirList->addAction(copyAct);
+ ui->sqlite3Edit->setText(CFG->getSqlite3Version());
+
+ QAction* copyAct;
+ for (QListWidget* w : {ui->pluginDirList, ui->iconDirList, ui->formDirList})
+ {
+ copyAct = new QAction(tr("Copy"), w);
+ w->addAction(copyAct);
+ connect(copyAct, SIGNAL(triggered()), this, SLOT(copy()));
+ }
}
void AboutDialog::buildIndex()
@@ -132,3 +139,20 @@ QStringList AboutDialog::filterResourcePaths(const QStringList& paths)
}
return output;
}
+
+void AboutDialog::copy()
+{
+ QListWidget* list = dynamic_cast<QListWidget*>(sender()->parent());
+ if (!list)
+ return;
+
+ QList<QListWidgetItem*> items = list->selectedItems();
+ if (items.size() == 0)
+ return;
+
+ QStringList lines;
+ for (QListWidgetItem* item : items)
+ lines << item->text();
+
+ QApplication::clipboard()->setText(lines.join("\n"));
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.h
index 4d49145..a43daec 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.h
@@ -34,7 +34,9 @@ class GUI_API_EXPORT AboutDialog : public QDialog
Ui::AboutDialog *ui = nullptr;
QStringList indexContents;
QString licenseContents;
- QAction* copyAct = nullptr;
+
+ private slots:
+ void copy();
};
#endif // ABOUTDIALOG_H
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui b/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui
index 1239cf5..179ee3b 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/aboutdialog.ui
@@ -60,6 +60,9 @@
<property name="text">
<string>Icon directories</string>
</property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
</widget>
</item>
<item row="2" column="2">
@@ -67,6 +70,9 @@
<property name="contextMenuPolicy">
<enum>Qt::ActionsContextMenu</enum>
</property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
</widget>
</item>
<item row="4" column="0">
@@ -74,6 +80,9 @@
<property name="text">
<string>Form directories</string>
</property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
</widget>
</item>
<item row="3" column="2">
@@ -81,6 +90,9 @@
<property name="contextMenuPolicy">
<enum>Qt::ActionsContextMenu</enum>
</property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
</widget>
</item>
<item row="2" column="0">
@@ -88,6 +100,19 @@
<property name="text">
<string>Plugin directories</string>
</property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="1" column="0">
+ <widget class="QLabel" name="cfgDirLabel">
+ <property name="text">
+ <string>Configuration directory</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
</widget>
</item>
<item row="0" column="0">
@@ -95,6 +120,19 @@
<property name="text">
<string>Application directory</string>
</property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
+ </property>
+ </widget>
+ </item>
+ <item row="4" column="2">
+ <widget class="QListWidget" name="formDirList">
+ <property name="contextMenuPolicy">
+ <enum>Qt::ActionsContextMenu</enum>
+ </property>
+ <property name="selectionMode">
+ <enum>QAbstractItemView::ExtendedSelection</enum>
+ </property>
</widget>
</item>
<item row="0" column="2">
@@ -104,17 +142,20 @@
</property>
</widget>
</item>
- <item row="1" column="0">
- <widget class="QLabel" name="cfgDirLabel">
+ <item row="5" column="0">
+ <widget class="QLabel" name="qtVerLabel">
<property name="text">
- <string>Configuration directory</string>
+ <string>Qt version:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
- <item row="4" column="2">
- <widget class="QListWidget" name="formDirList">
- <property name="contextMenuPolicy">
- <enum>Qt::ActionsContextMenu</enum>
+ <item row="5" column="2">
+ <widget class="QLabel" name="qtVerEdit">
+ <property name="text">
+ <string/>
</property>
</widget>
</item>
@@ -125,15 +166,18 @@
</property>
</widget>
</item>
- <item row="5" column="0">
- <widget class="QLabel" name="qtVerLabel">
+ <item row="6" column="0">
+ <widget class="QLabel" name="sqlite3Label">
<property name="text">
- <string>Qt version:</string>
+ <string>SQLite 3 version:</string>
+ </property>
+ <property name="alignment">
+ <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
</property>
</widget>
</item>
- <item row="5" column="2">
- <widget class="QLabel" name="qtVerEdit">
+ <item row="6" column="2">
+ <widget class="QLabel" name="sqlite3Edit">
<property name="text">
<string/>
</property>
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
index c9a7f28..a2a9c36 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/dbdialog.cpp
@@ -446,17 +446,55 @@ bool DbDialog::testDatabase()
bool DbDialog::validate()
{
+ // Name
+ if (!ui->generateCheckBox->isChecked())
+ {
+ if (ui->nameEdit->text().isEmpty())
+ {
+ setValidState(ui->nameEdit, false, tr("Enter an unique database name."));
+ return false;
+ }
+ }
+
+ Db* registeredDb = DBLIST->getByName(ui->nameEdit->text());
+ if (registeredDb && (mode == Mode::ADD || registeredDb != db))
+ {
+ qDebug() << ui->generateCheckBox->isChecked();
+ setValidState(ui->nameEdit, false, tr("This name is already in use. Please enter unique name."));
+ return false;
+ }
+ setValidState(ui->nameEdit, true);
+
+ // File
if (ui->fileEdit->text().isEmpty())
+ {
+ setValidState(ui->fileEdit, false, tr("Enter a database file path."));
return false;
+ }
- if (ui->nameEdit->text().isEmpty())
+ registeredDb = DBLIST->getByPath(ui->fileEdit->text());
+ if (registeredDb && (mode == Mode::ADD || registeredDb != db))
+ {
+ setValidState(ui->fileEdit, false, tr("This database is already on the list under name: %1").arg(registeredDb->getName()));
return false;
+ }
+ setValidState(ui->fileEdit, true);
+ // Type
if (ui->typeCombo->count() == 0)
+ {
+ // No need to set validation message here. SQLite3 plugin is built in,
+ // so if this happens, something is really, really wrong.
+ qCritical() << "No db plugins loaded in db dialog!";
return false;
+ }
if (ui->typeCombo->currentIndex() < 0)
+ {
+ setValidState(ui->typeCombo, false, tr("Select a database type."));
return false;
+ }
+ setValidState(ui->typeCombo, true);
return true;
}
@@ -480,11 +518,9 @@ void DbDialog::typeChanged(int index)
void DbDialog::valueForNameGenerationChanged()
{
+ updateState();
if (!ui->generateCheckBox->isChecked())
- {
- updateState();
return;
- }
DbPlugin* plugin = nullptr;
if (dbPlugins.count() > 0)
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp
index d835dd1..efb2e6c 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/indexdialog.cpp
@@ -309,6 +309,7 @@ void IndexDialog::applyIndex()
{
applyColumnValues();
+ ui->uniqueCheck->setChecked(createIndex->uniqueKw);
ui->partialIndexCheck->setChecked(createIndex->where != nullptr);
if (createIndex->where)
ui->partialIndexEdit->setPlainText(createIndex->where->detokenize());
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.cpp b/SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.cpp
index 38f6fe0..d9f05ff 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.cpp
@@ -1,5 +1,6 @@
#include "languagedialog.h"
#include "ui_languagedialog.h"
+#include "uiconfig.h"
LanguageDialog::LanguageDialog(QWidget *parent) :
QDialog(parent),
@@ -32,3 +33,13 @@ void LanguageDialog::setSelectedLang(const QString& lang)
ui->comboBox->setCurrentIndex(idx);
}
+
+bool LanguageDialog::didAskForDefaultLanguage()
+{
+ return CFG_UI.General.LanguageAsked.get();
+}
+
+void LanguageDialog::askedForDefaultLanguage()
+{
+ CFG_UI.General.LanguageAsked.set(true);
+}
diff --git a/SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.h b/SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.h
index 7fc0607..d5fbed4 100644
--- a/SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.h
+++ b/SQLiteStudio3/guiSQLiteStudio/dialogs/languagedialog.h
@@ -1,6 +1,7 @@
#ifndef LANGUAGEDIALOG_H
#define LANGUAGEDIALOG_H
+#include "guiSQLiteStudio_global.h"
#include <QMap>
#include <QDialog>
@@ -8,7 +9,7 @@ namespace Ui {
class LanguageDialog;
}
-class LanguageDialog : public QDialog
+class GUI_API_EXPORT LanguageDialog : public QDialog
{
Q_OBJECT
@@ -20,6 +21,9 @@ class LanguageDialog : public QDialog
QString getSelectedLang() const;
void setSelectedLang(const QString& lang);
+ static bool didAskForDefaultLanguage();
+ static void askedForDefaultLanguage();
+
private:
Ui::LanguageDialog *ui;
};