aboutsummaryrefslogtreecommitdiff
path: root/src/mainwindow.h
blob: fb68e11995b26ef280ea2f081920dd8280f5f3dd (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QAction>
#include <QApplication>
#include <QFileDialog>
#include <QGraphicsOpacityEffect>
#include <QIcon>
#include <QMainWindow>
#include <QMenu>
#include <QMessageBox>
#include <QProgressBar>
#include <QRegExp>
#include <QSettings>
#include <QStatusBar>
#include <QStyle>
#include <QStyleFactory>
#include <QSystemTrayIcon>
#include <QWebEngineCookieStore>
#include <QWebEngineFullScreenRequest>
#include <QWebEngineProfile>
#include <QWebEngineView>
#include <QWebEngineSettings>

#include "notificationpopup.h"
#include "requestinterceptor.h"
#include "settingswidget.h"
#include "webenginepage.h"

#include "downloadmanagerwidget.h"


class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    explicit MainWindow(QWidget *parent = nullptr);
public slots:
    void updateWindowTheme();
    void updatePageTheme();
protected:
    void closeEvent(QCloseEvent *event) override;

private:
    QPalette lightPalette;
    void createActions();
    void createStatusBar();
    void createTrayIcon();
    void createWebEngine();

    QSettings settings;

    QRegExp notificationsTitleRegExp;
    QIcon trayIconRead;
    QIcon trayIconUnread;

    QAction *reloadAction;
    QAction *minimizeAction;
    QAction *restoreAction;
    QAction *aboutAction;
    QAction *settingsAction;
    QAction *quitAction;

    QMenu *trayIconMenu;
    QSystemTrayIcon *trayIcon;

    QWebEngineView *webEngine;
    QStatusBar *statusBar;


    SettingsWidget * settingsWidget = nullptr;

    //void reload();

    DownloadManagerWidget m_downloadManagerWidget;
    QScopedPointer<QWebEngineProfile> m_otrProfile;


private slots:

    void readSettings();
    void handleWebViewTitleChanged(QString title);
    void handleLoadStarted();
    void handleLoadProgress(int progress);
    void handleDownloadRequested(QWebEngineDownloadItem *download);
    void iconActivated(QSystemTrayIcon::ActivationReason reason);
    void messageClicked();
    void doReload();
    void showAbout();
    void notify(QString title, QString message);
    void showSettings();
    void handleCookieAdded(const QNetworkCookie &cookie);
    void handleLoadFinished(bool loaded);

    QString getPageTheme();
    void toggleMute(const bool checked);
    void doAppReload();
    void askToReloadPage();
    void updateSettingsUserAgentWidget();
    void fullScreenRequested(QWebEngineFullScreenRequest request);

    void createWebPage(bool offTheRecord =false);
    void init_settingWidget();
    void init_globalWebProfile();
    void check_window_state();
};

#endif // MAINWINDOW_H