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 &parameters = {}) const;
62 	ToolBarsManager::ToolBarDefinition::Entry getEntry(QStandardItem *item) const;
63 	QMap<int, QVariant> createEntryData(const QString &identifier, const QVariantMap &options = {}, const QVariantMap &parameters = {}) 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