aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/uiutils.cpp')
-rw-r--r--SQLiteStudio3/guiSQLiteStudio/uiutils.cpp79
1 files changed, 52 insertions, 27 deletions
diff --git a/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp b/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp
index fbdc4b3..a73b8ee 100644
--- a/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp
+++ b/SQLiteStudio3/guiSQLiteStudio/uiutils.cpp
@@ -17,30 +17,46 @@
#include <QApplication>
#include <QStyle>
#include <QScreen>
-
-const QStringList pageSizes = {
- "A4", "B5", "Letter", "Legal", "Executive", "A0", "A1", "A2", "A3", "A5", "A6", "A7", "A8", "A9", "B0", "B1",
- "B10", "B2", "B3", "B4", "B6", "B7", "B8", "B9", "C5E", "Comm10E", "DLE", "Folio", "Ledger", "Tabloid", "Custom"
+#include <QToolBar>
+#include <QToolButton>
+
+const QList<QPageSize::PageSizeId> pageSizeIds = {
+ QPageSize::A4, QPageSize::B5, QPageSize::Letter, QPageSize::Legal, QPageSize::Executive, QPageSize::A0, QPageSize::A1,
+ QPageSize::A2, QPageSize::A3, QPageSize::A5, QPageSize::A6, QPageSize::A7, QPageSize::A8, QPageSize::A9, QPageSize::B0,
+ QPageSize::B1, QPageSize::B10, QPageSize::B2, QPageSize::B3, QPageSize::B4, QPageSize::B6, QPageSize::B7, QPageSize::B8,
+ QPageSize::B9, QPageSize::C5E, QPageSize::Comm10E, QPageSize::DLE, QPageSize::Folio, QPageSize::Ledger, QPageSize::Tabloid,
+ QPageSize::Custom
};
+const QStringList pageSizes = map<QPageSize::PageSizeId, QString>(pageSizeIds, [](QPageSize::PageSizeId id) -> QString
+{
+ return QPageSize::name(id);
+});
+
const QStringList pageSizesWithDimensions;
-QString getDbPath(bool newFileMode, const QString &startWith)
+QString getDbPath(const QString &startWith)
{
QString dir = startWith;
if (dir.isNull())
dir = CFG->get("dialogCache", "lastDbDir").toString();
- QStringList filters;
- filters += QObject::tr("All SQLite databases")+" (*.db *.sdb *.sqlite *.db3 *.s3db *.sqlite3 *.sl3)";
- filters += "SQLite3 (*.db3 *.s3db *.sqlite3 *.sl3)";
- filters += QObject::tr("All files")+" (*)";
- QString filter = filters.join(";;");
+ QStringList filters({
+ QObject::tr("All SQLite databases")+" (*.db *.sdb *.sqlite *.db3 *.s3db *.sqlite3 *.sl3)",
+ "SQLite3 (*.db3 *.s3db *.sqlite3 *.sl3)",
+ QObject::tr("All files")+" (*)"
+ });
+
+ QFileDialog dialog(nullptr, QObject::tr("Select database file"), dir, QString());
+ dialog.setAcceptMode(QFileDialog::AcceptOpen);
+ dialog.setOption(QFileDialog::DontConfirmOverwrite, true);
+ dialog.setLabelText(QFileDialog::Accept, QObject::tr("Select"));
+ dialog.setLabelText(QFileDialog::FileType, QObject::tr("File type"));
+ dialog.setNameFilters(filters);
+ if (dialog.exec() != QDialog::Accepted || dialog.selectedFiles().empty())
+ return QString();
- if (newFileMode)
- return QFileDialog::getSaveFileName(0, QObject::tr("Database file"), dir, filter, &filters[0], QFileDialog::DontConfirmOverwrite);
- else
- return QFileDialog::getOpenFileName(0, QObject::tr("Database file"), dir, filter, &filters[0]);
+ return dialog.selectedFiles().constFirst();
}
void setValidState(QWidget *widget, bool valid, const QString& message)
@@ -81,23 +97,14 @@ void setValidStateTooltip(QWidget* widget, const QString& tip)
INDICATOR(widget)->setVisible(widget->isEnabled(), tip);
}
-QString convertPageSize(QPagedPaintDevice::PageSize size)
+QString convertPageSize(QPageSize::PageSizeId size)
{
- const int pageSizesSize = pageSizes.size();
-
- int idx = static_cast<int>(size);
- if (idx < 0 || idx >= pageSizesSize)
- {
- qDebug() << "Asked to convertPageSize() with page side enum value out of range:" << idx;
- return QString();
- }
-
- return pageSizes[idx];
+ return QPageSize::name(size);
}
-QPagedPaintDevice::PageSize convertPageSize(const QString& size)
+QPageSize convertPageSize(const QString& size)
{
- return static_cast<QPagedPaintDevice::PageSize>(indexOf(pageSizes, size, Qt::CaseInsensitive));
+ return QPageSize(static_cast<QPageSize::PageSizeId>(indexOf(pageSizes, size, Qt::CaseInsensitive)));
}
const QStringList& getAllPageSizes()
@@ -146,3 +153,21 @@ QBrush styleEditorLineColor()
return palette.alternateBase();
}
+
+void fixToolbarTooltips(QToolBar* toolbar)
+{
+ for (QAction*& action : toolbar->actions())
+ {
+ QToolButton* button = dynamic_cast<QToolButton*>(toolbar->widgetForAction(action));
+ if (!button)
+ continue;
+
+ QString text = action->text();
+ text = text.replace(QRegExp("\\s?\\(&.\\)$"),""); // issue #4261, for Chinese
+ text = text.replace("&", ""); // issue #4218
+ if (!action->shortcut().isEmpty())
+ text += QString(" (%1)").arg(action->shortcut().toString());
+
+ button->setToolTip(text);
+ }
+}