You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
169 lines
4.8 KiB
169 lines
4.8 KiB
/* ============================================================ |
|
* StatusBarIcons - Extra icons in statusbar for Falkon |
|
* Copyright (C) 2013-2018 David Rosca <nowrep@gmail.com> |
|
* |
|
* This program is free software: you can redistribute it and/or modify |
|
* it under the terms of the GNU General Public License as published by |
|
* the Free Software Foundation, either version 3 of the License, or |
|
* (at your option) any later version. |
|
* |
|
* This program is distributed in the hope that it will be useful, |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
* GNU General Public License for more details. |
|
* |
|
* You should have received a copy of the GNU General Public License |
|
* along with this program. If not, see <http://www.gnu.org/licenses/>. |
|
* ============================================================ */ |
|
#include "sbi_iconsmanager.h" |
|
#include "sbi_imagesicon.h" |
|
#include "sbi_javascripticon.h" |
|
#include "sbi_zoomwidget.h" |
|
#include "sbi_networkicon.h" |
|
#include "sbi_networkmanager.h" |
|
#include "browserwindow.h" |
|
#include "statusbar.h" |
|
|
|
#include <QSettings> |
|
|
|
SBI_IconsManager::SBI_IconsManager(const QString &settingsPath, QObject* parent) |
|
: QObject(parent) |
|
, m_settingsPath(settingsPath) |
|
, m_showImagesIcon(false) |
|
, m_showJavaScriptIcon(false) |
|
, m_showNetworkIcon(false) |
|
, m_showZoomWidget(false) |
|
, m_networkManager(0) |
|
{ |
|
loadSettings(); |
|
} |
|
|
|
void SBI_IconsManager::loadSettings() |
|
{ |
|
QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); |
|
settings.beginGroup("StatusBarIcons"); |
|
m_showImagesIcon = settings.value("showImagesIcon", true).toBool(); |
|
m_showJavaScriptIcon = settings.value("showJavaScriptIcon", true).toBool(); |
|
m_showNetworkIcon = settings.value("showNetworkIcon", true).toBool(); |
|
m_showZoomWidget = settings.value("showZoomWidget", true).toBool(); |
|
settings.endGroup(); |
|
} |
|
|
|
bool SBI_IconsManager::showImagesIcon() const |
|
{ |
|
return m_showImagesIcon; |
|
} |
|
|
|
void SBI_IconsManager::setShowImagesIcon(bool show) |
|
{ |
|
QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); |
|
settings.setValue("StatusBarIcons/showImagesIcon", show); |
|
|
|
m_showImagesIcon = show; |
|
} |
|
|
|
bool SBI_IconsManager::showJavaScriptIcon() const |
|
{ |
|
return m_showJavaScriptIcon; |
|
} |
|
|
|
void SBI_IconsManager::setShowJavaScriptIcon(bool show) |
|
{ |
|
QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); |
|
settings.setValue("StatusBarIcons/showJavaScriptIcon", show); |
|
|
|
m_showJavaScriptIcon = show; |
|
} |
|
|
|
bool SBI_IconsManager::showNetworkIcon() const |
|
{ |
|
return m_showNetworkIcon; |
|
} |
|
|
|
void SBI_IconsManager::setShowNetworkIcon(bool show) |
|
{ |
|
QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); |
|
settings.setValue("StatusBarIcons/showNetworkIcon", show); |
|
|
|
m_showNetworkIcon = show; |
|
} |
|
|
|
bool SBI_IconsManager::showZoomWidget() const |
|
{ |
|
return m_showZoomWidget; |
|
} |
|
|
|
void SBI_IconsManager::setShowZoomWidget(bool show) |
|
{ |
|
QSettings settings(m_settingsPath + QL1S("/extensions.ini"), QSettings::IniFormat); |
|
settings.setValue("StatusBarIcons/showZoomWidget", show); |
|
|
|
m_showZoomWidget = show; |
|
} |
|
|
|
void SBI_IconsManager::reloadIcons() |
|
{ |
|
QHashIterator<BrowserWindow*, QWidgetList> it(m_windows); |
|
|
|
while (it.hasNext()) { |
|
it.next(); |
|
mainWindowDeleted(it.key()); |
|
mainWindowCreated(it.key()); |
|
} |
|
} |
|
|
|
void SBI_IconsManager::destroyIcons() |
|
{ |
|
QHashIterator<BrowserWindow*, QWidgetList> it(m_windows); |
|
|
|
while (it.hasNext()) { |
|
it.next(); |
|
mainWindowDeleted(it.key()); |
|
} |
|
} |
|
|
|
void SBI_IconsManager::mainWindowCreated(BrowserWindow* window) |
|
{ |
|
if (m_showImagesIcon) { |
|
SBI_ImagesIcon* w = new SBI_ImagesIcon(window, m_settingsPath); |
|
window->statusBar()->addPermanentWidget(w); |
|
m_windows[window].append(w); |
|
} |
|
|
|
if (m_showJavaScriptIcon) { |
|
SBI_JavaScriptIcon* w = new SBI_JavaScriptIcon(window); |
|
window->statusBar()->addPermanentWidget(w); |
|
m_windows[window].append(w); |
|
} |
|
|
|
if (m_showNetworkIcon) { |
|
if (!m_networkManager) { |
|
m_networkManager = new SBI_NetworkManager(m_settingsPath, this); |
|
} |
|
|
|
SBI_NetworkIcon* w = new SBI_NetworkIcon(window); |
|
window->statusBar()->addPermanentWidget(w); |
|
m_windows[window].append(w); |
|
} |
|
|
|
if (m_showZoomWidget) { |
|
SBI_ZoomWidget* w = new SBI_ZoomWidget(window); |
|
window->statusBar()->addPermanentWidget(w); |
|
m_windows[window].append(w); |
|
} |
|
} |
|
|
|
void SBI_IconsManager::mainWindowDeleted(BrowserWindow* window) |
|
{ |
|
foreach (QWidget* w, m_windows[window]) { |
|
window->statusBar()->removeWidget(w); |
|
delete w; |
|
} |
|
|
|
m_windows[window].clear(); |
|
} |
|
|
|
SBI_IconsManager::~SBI_IconsManager() |
|
{ |
|
delete m_networkManager; |
|
}
|
|
|