1 /* ============================================================
2 * StatusBarIcons - Extra icons in statusbar for Falkon
3 * Copyright (C) 2013-2018 David Rosca <nowrep@gmail.com>
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
17 * ============================================================ */
18 #include "sbi_iconsmanager.h"
19 #include "sbi_imagesicon.h"
20 #include "sbi_javascripticon.h"
21 #include "sbi_zoomwidget.h"
22 #include "sbi_networkicon.h"
23 #include "sbi_networkmanager.h"
24 #include "browserwindow.h"
25 #include "statusbar.h"
26
27 #include <QSettings>
28
SBI_IconsManager(const QString & settingsPath,QObject * parent)29 SBI_IconsManager::SBI_IconsManager(const QString &settingsPath, QObject* parent)
30 : QObject(parent)
31 , m_settingsPath(settingsPath)
32 , m_showImagesIcon(false)
33 , m_showJavaScriptIcon(false)
34 , m_showNetworkIcon(false)
35 , m_showZoomWidget(false)
36 , m_networkManager(0)
37 {
38 loadSettings();
39 }
40
loadSettings()41 void SBI_IconsManager::loadSettings()
42 {
43 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat);
44 settings.beginGroup("StatusBarIcons");
45 m_showImagesIcon = settings.value("showImagesIcon", true).toBool();
46 m_showJavaScriptIcon = settings.value("showJavaScriptIcon", true).toBool();
47 m_showNetworkIcon = settings.value("showNetworkIcon", true).toBool();
48 m_showZoomWidget = settings.value("showZoomWidget", true).toBool();
49 settings.endGroup();
50 }
51
showImagesIcon() const52 bool SBI_IconsManager::showImagesIcon() const
53 {
54 return m_showImagesIcon;
55 }
56
setShowImagesIcon(bool show)57 void SBI_IconsManager::setShowImagesIcon(bool show)
58 {
59 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat);
60 settings.setValue("StatusBarIcons/showImagesIcon", show);
61
62 m_showImagesIcon = show;
63 }
64
showJavaScriptIcon() const65 bool SBI_IconsManager::showJavaScriptIcon() const
66 {
67 return m_showJavaScriptIcon;
68 }
69
setShowJavaScriptIcon(bool show)70 void SBI_IconsManager::setShowJavaScriptIcon(bool show)
71 {
72 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat);
73 settings.setValue("StatusBarIcons/showJavaScriptIcon", show);
74
75 m_showJavaScriptIcon = show;
76 }
77
showNetworkIcon() const78 bool SBI_IconsManager::showNetworkIcon() const
79 {
80 return m_showNetworkIcon;
81 }
82
setShowNetworkIcon(bool show)83 void SBI_IconsManager::setShowNetworkIcon(bool show)
84 {
85 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat);
86 settings.setValue("StatusBarIcons/showNetworkIcon", show);
87
88 m_showNetworkIcon = show;
89 }
90
showZoomWidget() const91 bool SBI_IconsManager::showZoomWidget() const
92 {
93 return m_showZoomWidget;
94 }
95
setShowZoomWidget(bool show)96 void SBI_IconsManager::setShowZoomWidget(bool show)
97 {
98 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat);
99 settings.setValue("StatusBarIcons/showZoomWidget", show);
100
101 m_showZoomWidget = show;
102 }
103
reloadIcons()104 void SBI_IconsManager::reloadIcons()
105 {
106 QHashIterator<BrowserWindow*, QWidgetList> it(m_windows);
107
108 while (it.hasNext()) {
109 it.next();
110 mainWindowDeleted(it.key());
111 mainWindowCreated(it.key());
112 }
113 }
114
destroyIcons()115 void SBI_IconsManager::destroyIcons()
116 {
117 QHashIterator<BrowserWindow*, QWidgetList> it(m_windows);
118
119 while (it.hasNext()) {
120 it.next();
121 mainWindowDeleted(it.key());
122 }
123 }
124
mainWindowCreated(BrowserWindow * window)125 void SBI_IconsManager::mainWindowCreated(BrowserWindow* window)
126 {
127 if (m_showImagesIcon) {
128 SBI_ImagesIcon* w = new SBI_ImagesIcon(window, m_settingsPath);
129 window->statusBar()->addPermanentWidget(w);
130 m_windows[window].append(w);
131 }
132
133 if (m_showJavaScriptIcon) {
134 SBI_JavaScriptIcon* w = new SBI_JavaScriptIcon(window);
135 window->statusBar()->addPermanentWidget(w);
136 m_windows[window].append(w);
137 }
138
139 if (m_showNetworkIcon) {
140 if (!m_networkManager) {
141 m_networkManager = new SBI_NetworkManager(m_settingsPath, this);
142 }
143
144 SBI_NetworkIcon* w = new SBI_NetworkIcon(window);
145 window->statusBar()->addPermanentWidget(w);
146 m_windows[window].append(w);
147 }
148
149 if (m_showZoomWidget) {
150 SBI_ZoomWidget* w = new SBI_ZoomWidget(window);
151 window->statusBar()->addPermanentWidget(w);
152 m_windows[window].append(w);
153 }
154 }
155
mainWindowDeleted(BrowserWindow * window)156 void SBI_IconsManager::mainWindowDeleted(BrowserWindow* window)
157 {
158 const auto windows = m_windows[window];
159 for (QWidget* w : windows) {
160 window->statusBar()->removeWidget(w);
161 delete w;
162 }
163
164 m_windows[window].clear();
165 }
166
~SBI_IconsManager()167 SBI_IconsManager::~SBI_IconsManager()
168 {
169 delete m_networkManager;
170 }
171