/*
- * Copyright © 2022 Soren Stoutner <soren@stoutner.com>.
+ * Copyright 2022-2024 Soren Stoutner <soren@stoutner.com>.
*
* This file is part of Privacy Browser PC <https://www.stoutner.com/privacy-browser-pc>.
*
#define BROWSERWINDOW_H
// Application headers.
-#include "views/BrowserView.h"
+#include "widgets/TabWidget.h"
// KDE Frameworks headers.
#include <KConfigDialog>
+#include <KToggleFullScreenAction>
+#include <KToolBar>
#include <KXmlGuiWindow>
// Qt toolkit headers.
+#include <QComboBox>
#include <QLabel>
#include <QProgressBar>
-// C++ headers.
-#include <list>
-
class BrowserWindow : public KXmlGuiWindow
{
// Include the Q_OBJECT macro.
public:
// The default constructor.
- BrowserWindow();
+ BrowserWindow(bool firstWindow=true, QString *initialUrlStringPointer = nullptr);
// The public functions.
QSize sizeHint() const override;
+ // The public variables.
+ TabWidget *tabWidgetPointer;
+
+public Q_SLOTS:
+ // The public slots.
+ void populateBookmarksInThisWindow(); // This is public so that the bookmarks can be repopulated over D-Bus when changed by another instance of Privacy Browser.
+
private Q_SLOTS:
// The private slots.
- void addCookieToList(const QNetworkCookie &newCookie) const;
void addOrEditDomainSettings() const;
void back() const;
void clearUrlLineEditFocus() const;
- void fileNew() const;
+ void decrementZoom();
+ void editBookmarks() const;
+ void escape() const;
+ void findNext() const;
+ void findPrevious() const;
void forward() const;
+ void fullScreenRequested(const bool toggleOn);
void getZoomFactorFromUser();
+ void hideFindTextActions() const;
+ void hideProgressBar() const;
void home() const;
+ void incrementZoom();
void loadUrlFromLineEdit(const QString &url) const;
- void openCookiesDialog();
- void openDomainSettings() const;
+ void newWindow() const;
+ void populateBookmarksInAllWindows() const;
void refresh() const;
- void removeCookieFromList(const QNetworkCookie &cookie) const;
- void settingsConfigure();
+ void reloadAndBypassCache() const;
+ void showBookmarkContextMenu(const QPoint &point);
+ void showCookiesDialog();
+ void showDownloadDirectoryBrowseDialog() const;
+ void showDomainSettingsDialog() const;
+ void showFindTextActions() const;
void showProgressBar(const int &progress) const;
+ void showSettingsDialog();
+ void toggleBookmark();
+ void toggleDeveloperTools() const;
void toggleDomStorage() const;
+ void toggleFindCaseSensitive() const;
void toggleJavaScript() const;
void toggleLocalStorage() const;
+ void toggleFullScreen();
+ void toggleViewBookmarksToolBar();
+ void toggleViewSource() const;
+ void toggleViewSourceInNewTab() const;
+ void updateCookiesAction(const int numberOfCookies) const;
+ void updateDefaultZoomFactor(const double newDefaultZoomFactorDouble);
void updateDomStorageAction(const bool &isEnabled) const;
- void updateDomainSettingsIndicator(const bool &status, const QString &domainSettingsDomain);
+ void updateDomainSettingsIndicator(const bool status);
+ void updateFindText(const QString &text, const bool findCaseSensitive) const;
+ void updateFindTextResults(const QWebEngineFindTextResult &findTextResult) const;
void updateJavaScriptAction(const bool &isEnabled);
void updateLocalStorageAction(const bool &isEnabled);
void updateSearchEngineActions(const QString &searchEngine, const bool &updateCustomSearchEngineStatus);
void updateUserAgentActions(const QString &userAgent, const bool &updateCustomUserAgentStatus);
- void updateZoomFactorAction(const double &zoomFactor);
+ void updateZoomActions(const double zoomFactorDouble);
void updateSearchEngineLabel(const QString &searchEngineString) const;
void updateUrlLineEdit(const QUrl &newUrl);
void updateUserAgentLabel(const QString &userAgentDatabaseName) const;
+ void updateViewBookmarksToolBarCheckbox(const bool visible);
+ void updateWindowTitle(const QString &title);
+ void zoomDefault();
private:
// The private variables.
- BrowserView *browserViewPointer;
+ KActionCollection *actionCollectionPointer;
+ QAction *bookmarkedActionPointer;
+ QList<QPair<QMenu *, QAction *> *> bookmarksMenuActionList;
+ QMenu *bookmarksMenuPointer;
+ QList<QPair<QMenu *, QMenu *> *> bookmarksMenuSubmenuList;
+ QList<QAction*> bookmarksToolBarActionList;
+ QList<QPair<QMenu *, const double> *> bookmarksToolBarMenuList;
+ KToolBar *bookmarksToolBarPointer;
+ QList<QPair<QMenu *, QAction *> *> bookmarksToolBarSubfolderActionList;
+ bool bookmarksToolBarIsVisible = false;
+ bool bookmarksToolBarUninitialized = true;
KConfigDialog *configDialogPointer;
- std::list<QNetworkCookie> *cookieListPointer;
QAction *cookiesActionPointer;
- QString currentDomainSettingsDomain;
QUrl currentUrl;
- double currentZoomFactor;
+ QPushButton *currentZoomButtonPointer;
+ double currentZoomFactorDouble;
bool customSearchEngineEnabled;
bool customUserAgentEnabled;
+ double defaultZoomFactorDouble;
+ QAction *developerToolsActionPointer;
QAction *domStorageActionPointer;
- QPalette domainSettingsPalette;
+ QComboBox *downloadDirectoryComboBoxPointer;
+ QList<QPair<QMenu *, QAction *> *> finalBookmarkFolderMenuActionList;
+ QAction *findCaseSensitiveActionPointer;
+ QAction *findNextActionPointer;
+ QAction *findPreviousActionPointer;
+ QAction *findTextLabelActionPointer;
+ QLabel *findTextLabelPointer;
+ QAction *findTextLineEditActionPointer;
+ KLineEdit *findTextLineEditPointer;
+ KToggleFullScreenAction *fullScreenActionPointer;
+ QAction *hideFindTextActionPointer;
QAction *javaScriptActionPointer;
bool javaScriptEnabled;
QAction *localStorageActionPointer;
bool localStorageEnabled;
- QPalette noDomainSettingsPalette;
+ KToolBar *navigationToolBarPointer;
+ QPalette negativeBackgroundPalette;
+ QPalette normalBackgroundPalette;
+ QPalette positiveBackgroundPalette;
QProgressBar *progressBarPointer;
+ QAction *refreshActionPointer;
QLabel *searchEngineLabelPointer;
QAction *searchEngineMenuActionPointer;
QAction *searchEngineMojeekActionPointer;
QAction *searchEngineBingActionPointer;
QAction *searchEngineYahooActionPointer;
QAction *searchEngineCustomActionPointer;
+ QAction *stopActionPointer;
QLabel *userAgentLabelPointer;
QAction *userAgentMenuActionPointer;
QAction *userAgentPrivacyBrowserActionPointer;
QAction *userAgentSafariMacosActionPointer;
QAction *userAgentCustomActionPointer;
KLineEdit *urlLineEditPointer;
+ KToolBar *urlToolBarPointer;
+ QAction *viewBookmarksToolBarActionPointer;
+ QAction *viewSourceActionPointer;
+ QAction *viewSourceInNewTabActionPointer;
+ QAction *zoomDefaultActionPointer;
QAction *zoomFactorActionPointer;
+ QAction *zoomInActionPointer;
+ QPushButton *zoomMinusButtonPointer;
+ QAction *zoomOutActionPointer;
+ QPushButton *zoomPlusButtonPointer;
+
+ // The private functions.
+ void addFinalBookmarkFolderMenuActions(QMenu *menuPointer, double folderId);
+ int calculateSettingsInt(const bool settingCurrentlyEnabled, const bool settingEnabledByDefault) const;
+ void populateBookmarksMenuSubfolders(const double folderId, QMenu *menuPointer);
+ void populateBookmarksToolBar();
+ void populateBookmarksToolBarSubfolders(const double folderId, QMenu *menuPointer);
+ void updateBookmarkedAction() const;
};
#endif