File indexing completed on 2024-05-19 04:59:18
0001 /* ============================================================ 0002 * StatusBarIcons - Extra icons in statusbar for Falkon 0003 * Copyright (C) 2013-2018 David Rosca <nowrep@gmail.com> 0004 * 0005 * This program is free software: you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation, either version 3 of the License, or 0008 * (at your option) any later version. 0009 * 0010 * This program is distributed in the hope that it will be useful, 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0013 * GNU General Public License for more details. 0014 * 0015 * You should have received a copy of the GNU General Public License 0016 * along with this program. If not, see <http://www.gnu.org/licenses/>. 0017 * ============================================================ */ 0018 #include "sbi_iconsmanager.h" 0019 #include "sbi_imagesicon.h" 0020 #include "sbi_javascripticon.h" 0021 #include "sbi_zoomwidget.h" 0022 #include "sbi_networkicon.h" 0023 #include "sbi_networkmanager.h" 0024 #include "browserwindow.h" 0025 #include "statusbar.h" 0026 0027 #include <QSettings> 0028 0029 SBI_IconsManager::SBI_IconsManager(const QString &settingsPath, QObject* parent) 0030 : QObject(parent) 0031 , m_settingsPath(settingsPath) 0032 , m_showImagesIcon(false) 0033 , m_showJavaScriptIcon(false) 0034 , m_showNetworkIcon(false) 0035 , m_showZoomWidget(false) 0036 , m_networkManager(nullptr) 0037 { 0038 loadSettings(); 0039 } 0040 0041 void SBI_IconsManager::loadSettings() 0042 { 0043 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); 0044 settings.beginGroup("StatusBarIcons"); 0045 m_showImagesIcon = settings.value("showImagesIcon", true).toBool(); 0046 m_showJavaScriptIcon = settings.value("showJavaScriptIcon", true).toBool(); 0047 m_showNetworkIcon = settings.value("showNetworkIcon", true).toBool(); 0048 m_showZoomWidget = settings.value("showZoomWidget", true).toBool(); 0049 settings.endGroup(); 0050 } 0051 0052 bool SBI_IconsManager::showImagesIcon() const 0053 { 0054 return m_showImagesIcon; 0055 } 0056 0057 void SBI_IconsManager::setShowImagesIcon(bool show) 0058 { 0059 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); 0060 settings.setValue("StatusBarIcons/showImagesIcon", show); 0061 0062 m_showImagesIcon = show; 0063 } 0064 0065 bool SBI_IconsManager::showJavaScriptIcon() const 0066 { 0067 return m_showJavaScriptIcon; 0068 } 0069 0070 void SBI_IconsManager::setShowJavaScriptIcon(bool show) 0071 { 0072 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); 0073 settings.setValue("StatusBarIcons/showJavaScriptIcon", show); 0074 0075 m_showJavaScriptIcon = show; 0076 } 0077 0078 bool SBI_IconsManager::showNetworkIcon() const 0079 { 0080 return m_showNetworkIcon; 0081 } 0082 0083 void SBI_IconsManager::setShowNetworkIcon(bool show) 0084 { 0085 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); 0086 settings.setValue("StatusBarIcons/showNetworkIcon", show); 0087 0088 m_showNetworkIcon = show; 0089 } 0090 0091 bool SBI_IconsManager::showZoomWidget() const 0092 { 0093 return m_showZoomWidget; 0094 } 0095 0096 void SBI_IconsManager::setShowZoomWidget(bool show) 0097 { 0098 QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); 0099 settings.setValue("StatusBarIcons/showZoomWidget", show); 0100 0101 m_showZoomWidget = show; 0102 } 0103 0104 void SBI_IconsManager::reloadIcons() 0105 { 0106 QHashIterator<BrowserWindow*, QWidgetList> it(m_windows); 0107 0108 while (it.hasNext()) { 0109 it.next(); 0110 mainWindowDeleted(it.key()); 0111 mainWindowCreated(it.key()); 0112 } 0113 } 0114 0115 void SBI_IconsManager::destroyIcons() 0116 { 0117 QHashIterator<BrowserWindow*, QWidgetList> it(m_windows); 0118 0119 while (it.hasNext()) { 0120 it.next(); 0121 mainWindowDeleted(it.key()); 0122 } 0123 } 0124 0125 void SBI_IconsManager::mainWindowCreated(BrowserWindow* window) 0126 { 0127 if (m_showImagesIcon) { 0128 auto* w = new SBI_ImagesIcon(window, m_settingsPath); 0129 window->statusBar()->addPermanentWidget(w); 0130 m_windows[window].append(w); 0131 } 0132 0133 if (m_showJavaScriptIcon) { 0134 auto* w = new SBI_JavaScriptIcon(window); 0135 window->statusBar()->addPermanentWidget(w); 0136 m_windows[window].append(w); 0137 } 0138 0139 if (m_showNetworkIcon) { 0140 if (!m_networkManager) { 0141 m_networkManager = new SBI_NetworkManager(m_settingsPath, this); 0142 } 0143 0144 auto* w = new SBI_NetworkIcon(window); 0145 window->statusBar()->addPermanentWidget(w); 0146 m_windows[window].append(w); 0147 } 0148 0149 if (m_showZoomWidget) { 0150 auto* w = new SBI_ZoomWidget(window); 0151 window->statusBar()->addPermanentWidget(w); 0152 m_windows[window].append(w); 0153 } 0154 } 0155 0156 void SBI_IconsManager::mainWindowDeleted(BrowserWindow* window) 0157 { 0158 const auto windows = m_windows[window]; 0159 for (QWidget* w : windows) { 0160 window->statusBar()->removeWidget(w); 0161 delete w; 0162 } 0163 0164 m_windows[window].clear(); 0165 } 0166 0167 SBI_IconsManager::~SBI_IconsManager() 0168 { 0169 delete m_networkManager; 0170 }