feather/src/WindowManager.h

123 lines
3.9 KiB
C
Raw Permalink Normal View History

2021-05-18 17:59:18 +02:00
// SPDX-License-Identifier: BSD-3-Clause
2024-01-01 18:07:58 +01:00
// SPDX-FileCopyrightText: 2020-2024 The Monero Project
2021-05-18 17:59:18 +02:00
#ifndef FEATHER_WINDOWMANAGER_H
#define FEATHER_WINDOWMANAGER_H
#include <QObject>
2021-06-28 19:48:23 +02:00
#include "dialog/DocsDialog.h"
2021-06-28 19:48:23 +02:00
#include "dialog/TorInfoDialog.h"
2021-05-18 17:59:18 +02:00
#include "libwalletqt/WalletManager.h"
#include "libwalletqt/Wallet.h"
2021-06-28 19:48:23 +02:00
#include "MainWindow.h"
#include "utils/nodes.h"
2021-05-18 17:59:18 +02:00
#include "wizard/WalletWizard.h"
#include "Utils.h"
2021-05-18 17:59:18 +02:00
class MainWindow;
class WindowManager : public QObject {
Q_OBJECT
public:
explicit WindowManager(QObject *parent);
2021-07-11 17:55:42 +02:00
~WindowManager() override;
2021-05-18 17:59:18 +02:00
void setEventFilter(EventFilter *eventFilter);
2021-05-18 17:59:18 +02:00
void wizardOpenWallet();
void close();
void closeWindow(MainWindow *window);
void showWizard(WalletWizard::Page startPage);
void restartApplication(const QString &binaryFilename);
2022-03-03 23:27:54 +01:00
void raise();
2021-05-18 17:59:18 +02:00
void showSettings(Nodes *nodes, QWidget *parent, bool showProxyTab = false);
2023-02-11 18:11:21 +01:00
void showDocs(QObject *parent, const QString &doc = "", bool modal = false);
void setDocsHighlight(const QString &highlight);
void notify(const QString &title, const QString &message, int duration);
2022-03-04 17:20:17 +01:00
EventFilter *eventFilter;
static WindowManager* instance();
2021-05-18 17:59:18 +02:00
signals:
2023-02-11 18:11:21 +01:00
void proxySettingsChanged();
void websocketStatusChanged(bool enabled);
2023-02-11 18:11:21 +01:00
void updateBalance();
2023-11-30 15:01:39 +01:00
void preferredFiatCurrencyChanged();
2023-02-11 18:11:21 +01:00
void offlineMode(bool offline);
2023-11-30 15:01:39 +01:00
void pluginConfigured(const QString &id);
void manualFeeSelectionEnabled(bool enabled);
void subtractFeeFromAmountEnabled(bool enabled);
2021-05-18 17:59:18 +02:00
public slots:
2023-02-11 18:11:21 +01:00
void onProxySettingsChanged();
void onWebsocketStatusChanged(bool enabled);
2021-05-18 17:59:18 +02:00
void tryOpenWallet(const QString &path, const QString &password);
private slots:
void onWalletOpened(Wallet *wallet);
void onWalletCreated(Wallet *wallet);
void onWalletOpenPasswordRequired(bool invalidPassword, const QString &path);
void onInitialNetworkConfigured();
void onDeviceButtonRequest(quint64 code);
void onDeviceButtonPressed();
2021-05-18 17:59:18 +02:00
void onDeviceError(const QString &errorMessage);
2021-07-08 02:34:27 +02:00
void onWalletPassphraseNeeded(bool on_device);
2023-02-11 18:11:21 +01:00
void onChangeTheme(const QString &themeName);
2021-05-18 17:59:18 +02:00
private:
void tryCreateWallet(Seed seed, const QString &path, const QString &password, const QString &seedLanguage, const QString &seedOffset, const QString &subaddressLookahead, bool newWallet);
void tryCreateWalletFromDevice(const QString &path, const QString &password, const QString &deviceName, int restoreHeight, const QString &subaddressLookahead);
void tryCreateWalletFromKeys(const QString &path, const QString &password, const QString &address, const QString &viewkey, const QString &spendkey, quint64 restoreHeight, const QString &subaddressLookahead);
2021-05-18 17:59:18 +02:00
bool autoOpenWallet();
void initWizard();
2023-02-11 18:11:21 +01:00
WalletWizard* createWizard(WalletWizard::Page startPage);
2021-05-18 17:59:18 +02:00
void handleWalletError(const Utils::Message &message);
void handleDeviceError(const QString &error, Utils::Message &msg);
2021-05-18 17:59:18 +02:00
void displayWalletErrorMessage(const QString &message);
void initSkins();
QString loadStylesheet(const QString &resource);
2023-02-11 18:11:21 +01:00
void patchMacStylesheet();
2021-05-18 17:59:18 +02:00
void buildTrayMenu();
2021-05-27 01:20:37 +02:00
void startupWarning();
void showWarningMessageBox(const QString &title, const QString &message);
2023-01-26 13:12:33 +01:00
void showCrashLogs();
2021-05-18 17:59:18 +02:00
void quitAfterLastWindow();
static QPointer<WindowManager> m_instance;
2021-05-18 17:59:18 +02:00
QVector<MainWindow*> m_windows;
WalletManager *m_walletManager;
WalletWizard *m_wizard = nullptr;
SplashDialog *m_splashDialog = nullptr;
DocsDialog *m_docsDialog = nullptr;
2021-05-18 17:59:18 +02:00
2024-04-03 01:28:19 +02:00
QSystemTrayIcon *m_tray = nullptr;
2021-05-18 17:59:18 +02:00
QMap<QString, QString> m_skins;
bool m_openWalletTriedOnce = false;
bool m_openingWallet = false;
bool m_initialNetworkConfigured = false;
QThread *m_cleanupThread;
2021-05-18 17:59:18 +02:00
};
inline WindowManager* windowManager()
{
return WindowManager::instance();
}
2021-05-18 17:59:18 +02:00
#endif //FEATHER_WINDOWMANAGER_H