summaryrefslogtreecommitdiff
path: root/src/application.hpp
blob: cc38bda9fec3e89b1c4e38f8463254416b915045 (plain)
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
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* ============================================================
 *     The rekonq project
 * ============================================================
 * SPDX-License-Identifier: GPL-2.0-or-later
 * Copyright (C) 2012-2013 by Andrea Diamantini <adjam7 at gmail dot com>
 * SPDX-License-Identifier: GPL-3.0-only
 * Copyright (C) 2022 aqua <aqua@iserlohn-fortress.net>
 * ============================================================
 * Description: Application Main Class
 * ============================================================ */

#pragma once

#include "rekonq.hpp"
#include <QPointer>
#include <QUrl>
#include <QWidget>
#include <SingleApplication>

// Forward Declarations
class RekonqView;
class RekonqWindow;
class PluginLoader;
class RekonqSettings;

typedef QList<QPointer<PluginLoader>> RekonqPluginList;
typedef QList<QPointer<RekonqWindow>> RekonqWindowList;
typedef QList<QPointer<RekonqView>> RekonqViewList;

// ---------------------------------------------------------------------------------------------------------------

/**
 * Rekonq Application class
 */
class Application : public SingleApplication {
  Q_OBJECT

public:
  Application(int &argc, char *argv[]);
  ~Application() override;

  REKONQ_TEST_VIRTUAL bool registerPlugin(const QString &path) REKONQ_TEST_PURE;
  [[nodiscard]] auto pluginList() const { return m_plugins; };

  // int newInstance();
  static Application *instance() { return (qobject_cast<Application *>(QCoreApplication::instance())); }
  [[nodiscard]] auto *settings() const { return m_settings; }

  // RekonqWindow *rekonqWindow(const QString &activityID = QString());
  [[nodiscard]] auto windowList() const { return m_windows; }
  [[nodiscard]] auto viewList() const { return m_views; }

  /**
   * @returns the list of windows associated with activity whose id is @param activityID
   * @param activityID the ID of the activity  (if empty, it is interpreted as the current activity)
   * @note If activities are disabled, returns the function returns the list of all tabs.
   */
  // RekonqWindowList tabsForActivity(const QString &activityID = QString());

  /**
   * @returns the true if there are windows associated with activity whose id is @param activityID
   * @param activityID the ID of the activity  (if empty, it is interpreted as the current activity)
   * @note If activities are disabled, returns true if there are any tabs.
   */
  // bool haveWindowsForActivity(const QString &activityID = QString());

  // WebAppList webAppList();

  // void bookmarksToolbarToggled(bool);

public slots:
  /**
   * Parse the command line in @param message and carry out the required actions
   * @param instanceId if the current instance, check QCoreApplication::arguments instead of @param message
   * @param message the command line
   */
  void parseCommandLine(quint32 instanceId, const QByteArray &message);

  /**
   * Save application's configuration
   *
   * @see ReKonfig::self()->writeConfig();
   */
  // void saveConfiguration() const;

  /**
   * @short load url
   *
   * @param url The url to load
   * @param type the type where loading the url. @see Rekonq::OpenType
   */
  // void loadUrl(const KUrl& url, const Rekonq::OpenType& type = Rekonq::CurrentTab);

  // RekonqWindow *newWindow(bool withTab = true, bool PrivateBrowsingMode = false);
  // RekonqWindow *newWindow(WebPage *pg);
  REKONQ_TEST_VIRTUAL RekonqWindow *newWindow() REKONQ_TEST_PURE;
  REKONQ_TEST_VIRTUAL RekonqView *newView(const QUrl &url = QUrl(), RekonqWindow *window = nullptr) REKONQ_TEST_PURE;

  // void createWebAppShortcut(const QString & urlString = QString(), const QString & titleString = QString());

protected:
  // This is used to track which window was activated most recently
  // bool eventFilter(QObject *watched, QEvent *event);

signals:
  void toggleBookmarksToolbar(bool);

private:
  // void setWindowInfo(RekonqWindow *);

private slots:
  // void updateConfiguration();

  // clear private data
  // void clearPrivateData();

  // void queryQuit();

  // void newPrivateBrowsingWindow();

  // void pageCreated(WebPage *);

private:
  RekonqSettings *m_settings;

  RekonqPluginList m_plugins;
  RekonqWindowList m_windows;
  RekonqViewList m_views;
};