diff options
Diffstat (limited to 'SQLiteStudio3/guiSQLiteStudio/uiutils.cpp')
| -rw-r--r-- | SQLiteStudio3/guiSQLiteStudio/uiutils.cpp | 79 |
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); + } +} |
