1 /************************************************************************** 2 * Otter Browser: Web browser controlled by the user, not vice-versa. 3 * Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek <michal@emdek.pl> 4 * Copyright (C) 2016 - 2017 Piotr Wójcik <chocimier@tlen.pl> 5 * 6 * This program is free software: you can redistribute it and/or modify 7 * it under the terms of the GNU General Public License as published by 8 * the Free Software Foundation, either version 3 of the License, or 9 * (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 * GNU General Public License for more details. 15 * 16 * You should have received a copy of the GNU General Public License 17 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 * 19 **************************************************************************/ 20 21 #ifndef OTTER_TOOLBARDIALOG_H 22 #define OTTER_TOOLBARDIALOG_H 23 24 #include "Dialog.h" 25 #include "../core/ToolBarsManager.h" 26 27 #include <QtGui/QStandardItemModel> 28 29 namespace Otter 30 { 31 32 namespace Ui 33 { 34 class ToolBarDialog; 35 } 36 37 class OptionWidget; 38 39 class ToolBarDialog final : public Dialog 40 { 41 Q_OBJECT 42 43 public: 44 enum DataRole 45 { 46 IdentifierRole = Qt::UserRole, 47 OptionsRole, 48 ParametersRole, 49 HasOptionsRole 50 }; 51 52 explicit ToolBarDialog(const ToolBarsManager::ToolBarDefinition &definition = {}, QWidget *parent = nullptr); 53 ~ToolBarDialog(); 54 55 ToolBarsManager::ToolBarDefinition getDefinition() const; 56 bool eventFilter(QObject *object, QEvent *event) override; 57 58 protected: 59 void changeEvent(QEvent *event) override; 60 void addEntry(const ToolBarsManager::ToolBarDefinition::Entry &entry, QStandardItem *parent = nullptr); 61 QStandardItem* createEntry(const QString &identifier, const QVariantMap &options = {}, const QVariantMap ¶meters = {}) const; 62 ToolBarsManager::ToolBarDefinition::Entry getEntry(QStandardItem *item) const; 63 QMap<int, QVariant> createEntryData(const QString &identifier, const QVariantMap &options = {}, const QVariantMap ¶meters = {}) const; 64 65 protected slots: 66 void addNewEntry(); 67 void editEntry(); 68 void addBookmark(QAction *action); 69 void restoreDefaults(); 70 void showAvailableEntriesContextMenu(const QPoint &position); 71 void showCurrentEntriesContextMenu(const QPoint &position); 72 void updateActions(); 73 74 private: 75 QStandardItemModel *m_currentEntriesModel; 76 ToolBarsManager::ToolBarDefinition m_definition; 77 Ui::ToolBarDialog *m_ui; 78 }; 79 80 } 81 82 #endif 83