From feda8a7db8d1d7c5439aa8f8feef7cc0dd2b59a0 Mon Sep 17 00:00:00 2001 From: Unit 193 Date: Fri, 27 Jul 2018 23:51:12 -0400 Subject: New upstream version 3.2.1+dfsg1 --- .../guiSQLiteStudio/multieditor/multieditor.cpp | 145 ++++++++++++++++++--- .../guiSQLiteStudio/multieditor/multieditor.h | 18 ++- .../multieditor/multieditorbool.cpp | 10 +- .../guiSQLiteStudio/multieditor/multieditorbool.h | 2 +- .../multieditor/multieditordate.cpp | 10 +- .../guiSQLiteStudio/multieditor/multieditordate.h | 3 +- .../multieditor/multieditordatetime.cpp | 12 +- .../multieditor/multieditordatetime.h | 2 +- .../guiSQLiteStudio/multieditor/multieditorhex.cpp | 12 +- .../guiSQLiteStudio/multieditor/multieditorhex.h | 2 +- .../multieditor/multieditornumeric.cpp | 12 +- .../multieditor/multieditornumeric.h | 2 +- .../multieditor/multieditortext.cpp | 11 +- .../guiSQLiteStudio/multieditor/multieditortext.h | 2 +- .../multieditor/multieditortime.cpp | 10 +- .../guiSQLiteStudio/multieditor/multieditortime.h | 3 +- .../multieditor/multieditorwidget.cpp | 12 +- .../multieditor/multieditorwidget.h | 7 +- .../multieditor/multieditorwidgetplugin.h | 1 + 19 files changed, 207 insertions(+), 69 deletions(-) (limited to 'SQLiteStudio3/guiSQLiteStudio/multieditor') diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp index c99b774..d766738 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.cpp @@ -30,13 +30,13 @@ static QHash missingEditorPluginsAlreadyWarned; -MultiEditor::MultiEditor(QWidget *parent) : +MultiEditor::MultiEditor(QWidget *parent, TabsMode tabsMode) : QWidget(parent) { - init(); + init(tabsMode); } -void MultiEditor::init() +void MultiEditor::init(TabsMode tabsMode) { QVBoxLayout* vbox = new QVBoxLayout(); vbox->setMargin(margins); @@ -73,14 +73,39 @@ void MultiEditor::init() layout()->addWidget(tabs); tabs->tabBar()->installEventFilter(this); - configBtn = new QToolButton(); - configBtn->setToolTip(tr("Configure editors for this data type")); - configBtn->setIcon(ICONS.CONFIGURE); - configBtn->setFocusPolicy(Qt::NoFocus); - configBtn->setAutoRaise(true); - configBtn->setEnabled(false); - connect(configBtn, SIGNAL(clicked()), this, SLOT(configClicked())); - tabs->setCornerWidget(configBtn); + switch (tabsMode) + { + case CONFIGURABLE: + { + configBtn = new QToolButton(); + configBtn->setToolTip(tr("Configure editors for this data type")); + configBtn->setIcon(ICONS.CONFIGURE); + configBtn->setFocusPolicy(Qt::NoFocus); + configBtn->setAutoRaise(true); + configBtn->setEnabled(false); + connect(configBtn, SIGNAL(clicked()), this, SLOT(configClicked())); + tabs->setCornerWidget(configBtn); + break; + } + case DYNAMIC: + { + initAddTabMenu(); + addTabBtn = new QToolButton(); + addTabBtn->setToolTip(tr("Open another tab")); + addTabBtn->setIcon(ICONS.PLUS); + addTabBtn->setFocusPolicy(Qt::NoFocus); + addTabBtn->setAutoRaise(true); + addTabBtn->setEnabled(true); + addTabBtn->setPopupMode(QToolButton::InstantPopup); + addTabBtn->setMenu(addTabMenu); + tabs->setCornerWidget(addTabBtn); + tabs->setTabsClosable(true); + connect(tabs, &QTabWidget::tabCloseRequested, this, &MultiEditor::removeTab); + break; + } + case PRECONFIGURED: + break; + } QGraphicsColorizeEffect* effect = new QGraphicsColorizeEffect(); effect->setColor(Qt::black); @@ -167,6 +192,25 @@ void MultiEditor::addEditor(MultiEditorWidget* editorWidget) tabs->addTab(editorWidget, editorWidget->getTabLabel().replace("&", "&&")); THEME_TUNER->manageCompactLayout(editorWidget); editorWidget->installEventFilter(this); + + connect(editorWidget, &MultiEditorWidget::aboutToBeDeleted, [this, editorWidget]() + { + int idx = tabs->indexOf(editorWidget); + tabs->removeTab(idx); + }); + + if (addTabMenu) + { + QAction* addTabAction = findFirst(addTabMenu->actions(), [editorWidget](QAction* a) + { + return a->data().toString() == editorWidget->getTabLabel(); + }); + + if (addTabAction) + addTabMenu->removeAction(addTabAction); + else + qWarning() << "Could not find action associated with added MultiEditorWidget:" << editorWidget->getTabLabel(); + } } void MultiEditor::showTab(int idx) @@ -235,11 +279,12 @@ void MultiEditor::setDataType(const DataType& dataType) { this->dataType = dataType; - foreach (MultiEditorWidget* editorWidget, getEditorTypes(dataType)) + for (MultiEditorWidget* editorWidget : getEditorTypes(dataType)) addEditor(editorWidget); showTab(0); - configBtn->setEnabled(true); + if (configBtn) + configBtn->setEnabled(true); } void MultiEditor::focusThisEditor() @@ -271,6 +316,7 @@ void MultiEditor::loadBuiltInEditors() QList MultiEditor::getEditorTypes(const DataType& dataType) { QList editors; + MultiEditorWidget* editor = nullptr; QString typeStr = dataType.toString().trimmed().toUpper(); QHash editorsOrder = CFG_UI.General.DataEditorsOrder.get(); @@ -290,7 +336,9 @@ QList MultiEditor::getEditorTypes(const DataType& dataType) continue; } - editors << plugin->getInstance(); + editor = plugin->getInstance(); + editor->setTabLabel(plugin->getTabLabel()); + editors << editor; } } @@ -313,6 +361,7 @@ QList MultiEditor::getEditorTypes(const DataType& dataType) editorWithPrio.first = plugin->getPriority(dataType); editorWithPrio.second = plugin->getInstance(); + editorWithPrio.second->setTabLabel(plugin->getTabLabel()); sortedEditors << editorWithPrio; } @@ -360,12 +409,17 @@ void MultiEditor::updateValue(const QVariant& newValue) for (int i = 0; i < tabs->count(); i++) { editorWidget = dynamic_cast(tabs->widget(i)); - editorWidget->setValue(newValue); - editorWidget->setUpToDate(true); + setValueToWidget(editorWidget, newValue); } invalidatingDisabled = false; } +void MultiEditor::setValueToWidget(MultiEditorWidget* editorWidget, const QVariant& newValue) +{ + editorWidget->setValue(newValue); + editorWidget->setUpToDate(true); +} + void MultiEditor::updateLabel() { if (deleted) @@ -380,3 +434,62 @@ QVariant MultiEditor::getValueOmmitNull() const { return dynamic_cast(tabs->currentWidget())->getValue(); } + +void MultiEditor::initAddTabMenu() +{ + addTabMenu = new QMenu(addTabBtn); + for (MultiEditorWidgetPlugin* plugin : PLUGINS->getLoadedPlugins()) + addPluginToMenu(plugin); + + sortAddTabMenu(); +} + +void MultiEditor::addPluginToMenu(MultiEditorWidgetPlugin* plugin) +{ + QAction* addTabAction = addTabMenu->addAction(plugin->getTabLabel()); + addTabAction->setData(plugin->getTabLabel()); // for display-independent identification of action to avoid ampersand issue + connect(addTabAction, &QAction::triggered, [plugin, this]() + { + MultiEditorWidget* editor = plugin->getInstance(); + editor->setTabLabel(plugin->getTabLabel()); + addEditor(editor); + setValueToWidget(editor, valueBeforeNull); + showTab(tabs->count() - 1); + }); +} + +void MultiEditor::sortAddTabMenu() +{ + QList editorActions = addTabMenu->actions(); + std::sort(editorActions.begin(), editorActions.end(), [](QAction* a1, QAction* a2) + { + return a1->data().toString().compare(a2->data().toString(), Qt::CaseInsensitive) < 0; + }); + + for (QAction* action : editorActions) + addTabMenu->removeAction(action); + + addTabMenu->insertActions(nullptr, editorActions); +} + +void MultiEditor::removeTab(int idx) +{ + MultiEditorWidget* editor = dynamic_cast(tabs->widget(idx)); + QString label = editor->getTabLabel(); + tabs->removeTab(idx); + + // Re-add it to menu + MultiEditorWidgetPlugin* plugin = findFirst( + PLUGINS->getLoadedPlugins(), + [label](MultiEditorWidgetPlugin* p) {return p->getTabLabel() == label;} + ); + + if (!plugin) + { + qWarning() << "Missing MultiEditorWidgetPlugin after removing its tab for label:" << label; + return; + } + + addPluginToMenu(plugin); + sortAddTabMenu(); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h index 04b9af7..55d7f2e 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditor.h @@ -12,6 +12,7 @@ class MultiEditorWidget; class QLabel; class MultiEditorWidgetPlugin; class QToolButton; +class QMenu; class GUI_API_EXPORT MultiEditor : public QWidget { @@ -31,7 +32,13 @@ class GUI_API_EXPORT MultiEditor : public QWidget HEX }; - explicit MultiEditor(QWidget *parent = 0); + enum TabsMode { + CONFIGURABLE, /**< Tabs are loaded from datatype and also have configure button visible. */ + PRECONFIGURED, /**< Tabs are loaded from datatype. No config button is present. */ + DYNAMIC /**< No tabs are loaded, but user has button to add new tabs, can close them and reorder them. */ + }; + + explicit MultiEditor(QWidget *parent = nullptr, TabsMode tabsMode = CONFIGURABLE); void addEditor(MultiEditorWidget* editorWidget); void showTab(int idx); @@ -50,12 +57,16 @@ class GUI_API_EXPORT MultiEditor : public QWidget static void loadBuiltInEditors(); private: - void init(); + void init(TabsMode tabsMode); void updateVisibility(); void updateNullEffect(); void updateValue(const QVariant& newValue); + void setValueToWidget(MultiEditorWidget* editorWidget, const QVariant& newValue); void updateLabel(); QVariant getValueOmmitNull() const; + void initAddTabMenu(); + void addPluginToMenu(MultiEditorWidgetPlugin* plugin); + void sortAddTabMenu(); static QList getEditorTypes(const DataType& dataType); @@ -74,6 +85,8 @@ class GUI_API_EXPORT MultiEditor : public QWidget bool valueModified = false; QVariant valueBeforeNull; QToolButton* configBtn = nullptr; + QToolButton* addTabBtn = nullptr; + QMenu* addTabMenu = nullptr; DataType dataType; /** @@ -90,6 +103,7 @@ class GUI_API_EXPORT MultiEditor : public QWidget void nullStateChanged(int state); void invalidateValue(); void setModified(); + void removeTab(int idx); signals: void modified(); diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp index ed7c260..1882335 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.cpp @@ -125,11 +125,6 @@ QList MultiEditorBool::getNoScrollWidgets() return list; } -QString MultiEditorBool::getTabLabel() -{ - return tr("Boolean"); -} - void MultiEditorBool::focusThisWidget() { checkBox->setFocus(); @@ -213,3 +208,8 @@ int MultiEditorBoolPlugin::getPriority(const DataType& dataType) } return 100; } + +QString MultiEditorBoolPlugin::getTabLabel() +{ + return tr("Boolean"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h index f328cf0..6aa11d5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorbool.h @@ -22,7 +22,6 @@ class GUI_API_EXPORT MultiEditorBool : public MultiEditorWidget QVariant getValue(); void setReadOnly(bool boolValue); QList getNoScrollWidgets(); - QString getTabLabel(); void focusThisWidget(); private: @@ -63,6 +62,7 @@ class GUI_API_EXPORT MultiEditorBoolPlugin : public BuiltInPlugin, public MultiE MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORBOOL_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp index 44178f8..4059f96 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.cpp @@ -9,11 +9,6 @@ MultiEditorDate::MultiEditorDate(QWidget* parent) setDisplayFormat(formats.first()); } -QString MultiEditorDate::getTabLabel() -{ - return tr("Date"); -} - void MultiEditorDate::staticInit() { formats << "yyyy-MM-dd"; @@ -85,3 +80,8 @@ int MultiEditorDatePlugin::getPriority(const DataType& dataType) } return 10; } + +QString MultiEditorDatePlugin::getTabLabel() +{ + return tr("Date"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h index d51150b..3b53c32 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordate.h @@ -10,8 +10,6 @@ class GUI_API_EXPORT MultiEditorDate : public MultiEditorDateTime public: explicit MultiEditorDate(QWidget *parent = 0); - QString getTabLabel(); - static void staticInit(); protected: @@ -34,6 +32,7 @@ class GUI_API_EXPORT MultiEditorDatePlugin : public BuiltInPlugin, public MultiE MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORDATE_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp index bd1e244..99053b0 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.cpp @@ -106,7 +106,7 @@ QList MultiEditorDateTime::getNoScrollWidgets() QDateTime MultiEditorDateTime::fromString(const QString& value) { QDateTime dateTime; - foreach (const QString& format, getParsingFormats()) + for (const QString& format : getParsingFormats()) { dateTime = QDateTime::fromString(value, format); if (dateTime.isValid()) @@ -176,11 +176,6 @@ void MultiEditorDateTime::setReadOnly(bool value) updateReadOnlyDisplay(); } -QString MultiEditorDateTime::getTabLabel() -{ - return tr("Date & time"); -} - void MultiEditorDateTime::focusThisWidget() { dateTimeEdit->setFocus(); @@ -273,3 +268,8 @@ int MultiEditorDateTimePlugin::getPriority(const DataType& dataType) } return 10; } + +QString MultiEditorDateTimePlugin::getTabLabel() +{ + return tr("Date & time"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h index 59bd111..9038ede 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditordatetime.h @@ -27,7 +27,6 @@ class GUI_API_EXPORT MultiEditorDateTime : public MultiEditorWidget bool getReadOnly() const; void setReadOnly(bool value); - QString getTabLabel(); void focusThisWidget(); protected: @@ -79,6 +78,7 @@ class GUI_API_EXPORT MultiEditorDateTimePlugin : public BuiltInPlugin, public Mu MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORDATETIME_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp index 5a3cd28..a959e53 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.cpp @@ -9,8 +9,6 @@ MultiEditorHex::MultiEditorHex() hexEdit = new QHexEdit(); layout()->addWidget(hexEdit); - //hexEdit->setTabChangesFocus(true); - connect(hexEdit, SIGNAL(dataChanged()), this, SLOT(modificationChanged())); setFocusProxy(hexEdit); } @@ -34,11 +32,6 @@ void MultiEditorHex::setReadOnly(bool value) hexEdit->setReadOnly(value); } -QString MultiEditorHex::getTabLabel() -{ - return tr("Hex"); -} - void MultiEditorHex::focusThisWidget() { hexEdit->setFocus(); @@ -92,3 +85,8 @@ int MultiEditorHexPlugin::getPriority(const DataType& dataType) } return 100; } + +QString MultiEditorHexPlugin::getTabLabel() +{ + return tr("Hex"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h index 5fd32a0..e647f12 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorhex.h @@ -20,7 +20,6 @@ class GUI_API_EXPORT MultiEditorHex : public MultiEditorWidget void setValue(const QVariant& value); QVariant getValue(); void setReadOnly(bool value); - QString getTabLabel(); void focusThisWidget(); QList getNoScrollWidgets(); @@ -45,6 +44,7 @@ class GUI_API_EXPORT MultiEditorHexPlugin : public BuiltInPlugin, public MultiEd MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORHEX_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp index 526f5c4..6b1dd09 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.cpp @@ -18,7 +18,7 @@ MultiEditorNumeric::MultiEditorNumeric(QWidget* parent) void MultiEditorNumeric::setValue(const QVariant& value) { - spinBox->setValue(value); + spinBox->setValue(value, false); } QVariant MultiEditorNumeric::getValue() @@ -31,11 +31,6 @@ void MultiEditorNumeric::setReadOnly(bool value) spinBox->setReadOnly(value); } -QString MultiEditorNumeric::getTabLabel() -{ - return tr("Number", "numeric multi editor tab name"); -} - void MultiEditorNumeric::focusThisWidget() { spinBox->setFocus(); @@ -108,3 +103,8 @@ int MultiEditorNumericPlugin::getPriority(const DataType& dataType) } return 10; } + +QString MultiEditorNumericPlugin::getTabLabel() +{ + return tr("Number", "numeric multi editor tab name"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h index c74d27a..224c6d4 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditornumeric.h @@ -17,7 +17,6 @@ class GUI_API_EXPORT MultiEditorNumeric : public MultiEditorWidget void setValue(const QVariant& value); QVariant getValue(); void setReadOnly(bool value); - QString getTabLabel(); void focusThisWidget(); QList getNoScrollWidgets(); @@ -39,6 +38,7 @@ class GUI_API_EXPORT MultiEditorNumericPlugin : public BuiltInPlugin, public Mul MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORNUMERIC_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp index 05db8e0..0d963a5 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.cpp @@ -5,6 +5,7 @@ #include #include #include +#include CFG_KEYS_DEFINE(MultiEditorText) @@ -40,11 +41,6 @@ void MultiEditorText::setReadOnly(bool value) textEdit->setReadOnly(value); } -QString MultiEditorText::getTabLabel() -{ - return tr("Text"); -} - QToolBar* MultiEditorText::getToolBar(int toolbar) const { UNUSED(toolbar); @@ -182,3 +178,8 @@ int MultiEditorTextPlugin::getPriority(const DataType& dataType) } return 1; } + +QString MultiEditorTextPlugin::getTabLabel() +{ + return tr("Text"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h index bd814ce..59d2a44 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortext.h @@ -44,7 +44,6 @@ class GUI_API_EXPORT MultiEditorText : public MultiEditorWidget, public ExtActio void setValue(const QVariant& value); QVariant getValue(); void setReadOnly(bool value); - QString getTabLabel(); QToolBar* getToolBar(int toolbar) const; void focusThisWidget(); QList getNoScrollWidgets(); @@ -82,6 +81,7 @@ class GUI_API_EXPORT MultiEditorTextPlugin : public BuiltInPlugin, public MultiE MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORTEXT_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp index 8b49715..35800ce 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.cpp @@ -11,11 +11,6 @@ MultiEditorTime::MultiEditorTime(QWidget *parent) setDisplayFormat(formats.first()); } -QString MultiEditorTime::getTabLabel() -{ - return tr("Time"); -} - void MultiEditorTime::staticInit() { formats << "hh:mm:ss" @@ -88,3 +83,8 @@ int MultiEditorTimePlugin::getPriority(const DataType& dataType) } return 10; } + +QString MultiEditorTimePlugin::getTabLabel() +{ + return tr("Time"); +} diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h index 1fb05f3..e5b64a8 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditortime.h @@ -11,8 +11,6 @@ class GUI_API_EXPORT MultiEditorTime : public MultiEditorDateTime public: explicit MultiEditorTime(QWidget *parent = 0); - QString getTabLabel(); - static void staticInit(); protected: @@ -35,6 +33,7 @@ class GUI_API_EXPORT MultiEditorTimePlugin : public BuiltInPlugin, public MultiE MultiEditorWidget* getInstance(); bool validFor(const DataType& dataType); int getPriority(const DataType& dataType); + QString getTabLabel(); }; #endif // MULTIEDITORTIME_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp index caea9a5..826728a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.cpp @@ -8,10 +8,20 @@ MultiEditorWidget::MultiEditorWidget(QWidget *parent) : void MultiEditorWidget::installEventFilter(QObject* filterObj) { QObject::installEventFilter(filterObj); - foreach (QWidget* w, getNoScrollWidgets()) + for (QWidget* w : getNoScrollWidgets()) w->installEventFilter(filterObj); } +void MultiEditorWidget::setTabLabel(const QString& value) +{ + tabLabel = value; +} + +QString MultiEditorWidget::getTabLabel() +{ + return tabLabel; +} + bool MultiEditorWidget::isUpToDate() const { return upToDate; diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h index 14bac26..dc98b1a 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidget.h @@ -9,25 +9,28 @@ class GUI_API_EXPORT MultiEditorWidget : public QWidget Q_OBJECT public: - explicit MultiEditorWidget(QWidget *parent = 0); + explicit MultiEditorWidget(QWidget *parent = nullptr); virtual void setValue(const QVariant& value) = 0; virtual QVariant getValue() = 0; virtual void setReadOnly(bool value) = 0; virtual QList getNoScrollWidgets() = 0; - virtual QString getTabLabel() = 0; virtual void focusThisWidget() = 0; void installEventFilter(QObject* filterObj); + void setTabLabel(const QString& value); + QString getTabLabel(); bool isUpToDate() const; void setUpToDate(bool value); private: bool upToDate = true; + QString tabLabel; signals: void valueModified(); + void aboutToBeDeleted(); }; #endif // MULTIEDITORWIDGET_H diff --git a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h index 011bde5..7426006 100644 --- a/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h +++ b/SQLiteStudio3/guiSQLiteStudio/multieditor/multieditorwidgetplugin.h @@ -12,6 +12,7 @@ class GUI_API_EXPORT MultiEditorWidgetPlugin : public virtual Plugin virtual MultiEditorWidget* getInstance() = 0; virtual bool validFor(const DataType& dataType) = 0; virtual int getPriority(const DataType& dataType) = 0; + virtual QString getTabLabel() = 0; }; #endif // MULTIEDITORWIDGETPLUGIN_H -- cgit v1.2.3