#pragma once #include #include #include #include #include "Emu/NP/rpcn_client.h" class rpcn_settings_dialog : public QDialog { Q_OBJECT public: rpcn_settings_dialog(QWidget* parent = nullptr); }; class rpcn_account_dialog : public QDialog { Q_OBJECT public: rpcn_account_dialog(QWidget* parent = nullptr); private: void refresh_combobox(); private: QComboBox* cbx_servers = nullptr; }; class rpcn_add_server_dialog : public QDialog { Q_OBJECT public: rpcn_add_server_dialog(QWidget* parent = nullptr); const std::optional>& get_new_server() const; private: std::optional> m_new_server; }; class rpcn_ask_username_dialog : public QDialog { Q_OBJECT public: rpcn_ask_username_dialog(QWidget* parent, const QString& description); const std::optional& get_username() const; private: std::optional m_username; }; class rpcn_ask_password_dialog : public QDialog { Q_OBJECT public: rpcn_ask_password_dialog(QWidget* parent, const QString& description); const std::optional& get_password() const; private: std::optional m_password; }; class rpcn_ask_email_dialog : public QDialog { Q_OBJECT public: rpcn_ask_email_dialog(QWidget* parent, const QString& description); const std::optional& get_email() const; private: std::optional m_email; }; class rpcn_ask_token_dialog : public QDialog { Q_OBJECT public: rpcn_ask_token_dialog(QWidget* parent, const QString& description); const std::optional& get_token() const; private: std::optional m_token; }; class rpcn_account_edit_dialog : public QDialog { Q_OBJECT public: rpcn_account_edit_dialog(QWidget* parent = nullptr); private: bool save_config(); private Q_SLOTS: void resend_token(); void change_password(); protected: QLineEdit *m_edit_username, *m_edit_token; }; class rpcn_friends_dialog : public QDialog { Q_OBJECT public: rpcn_friends_dialog(QWidget* parent = nullptr); ~rpcn_friends_dialog(); void callback_handler(rpcn::NotificationType ntype, std::string username, bool status); bool is_ok() const; private: void add_update_list(QListWidget* list, const QString& name, const QIcon& icon, const QVariant& data); void remove_list(QListWidget* list, const QString& name); private Q_SLOTS: void add_update_friend(QString name, bool status); void remove_friend(QString name); void add_query(QString name); Q_SIGNALS: void signal_add_update_friend(QString name, bool status); void signal_remove_friend(QString name); void signal_add_query(QString name); private: const QIcon m_green_icon, m_red_icon, m_yellow_icon, m_orange_icon, m_black_icon; // list of friends QListWidget* m_lst_friends = nullptr; // list of friend requests sent by/to the current user QListWidget* m_lst_requests = nullptr; // list of people blocked by the user QListWidget* m_lst_blocks = nullptr; std::shared_ptr m_rpcn; bool m_rpcn_ok = false; };