summary refs log tree commit diff
path: root/src/UserSettingsPage.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/UserSettingsPage.h')
-rw-r--r--src/UserSettingsPage.h191
1 files changed, 114 insertions, 77 deletions
diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h

index e9e41d8c..bcf34655 100644 --- a/src/UserSettingsPage.h +++ b/src/UserSettingsPage.h
@@ -6,6 +6,7 @@ #pragma once +#include <QAbstractListModel> #include <QFontDatabase> #include <QFrame> #include <QProcessEnvironment> @@ -353,89 +354,125 @@ private: static QSharedPointer<UserSettings> instance_; }; -class HorizontalLine : public QFrame +class UserSettingsModel : public QAbstractListModel { Q_OBJECT -public: - HorizontalLine(QWidget *parent = nullptr); -}; - -class UserSettingsPage : public QWidget -{ - Q_OBJECT + enum Indices + { + GeneralSection, + Theme, + MobileMode, +#ifndef Q_OS_MAC + ScaleFactor, +#endif + Font, + FontSize, + EmojiFont, + AvatarCircles, + UseIdenticon, + PrivacyScreen, + PrivacyScreenTimeout, + + TimelineSection, + TimelineMaxWidth, + MessageHoverHighlight, + EnlargeEmojiOnlyMessages, + AnimateImagesOnHover, + TypingNotifications, + ReadReceipts, + ButtonsInTimeline, + Markdown, + + SidebarSection, + GroupView, + SortByImportance, + DecryptSidebar, + + TraySection, + Tray, + StartInTray, + + NotificationsSection, + DesktopNotifications, + AlertOnNotification, + + VoipSection, + UseStunServer, + Microphone, + Camera, + CameraResolution, + CameraFrameRate, + Ringtone, + + EncryptionSection, + OnlyShareKeysWithVerifiedUsers, + ShareKeysWithTrustedUsers, + SessionKeys, + UseOnlineKeyBackup, + OnlineBackupKey, + SelfSigningKey, + UserSigningKey, + MasterKey, + CrossSigningSecrets, + DeviceId, + DeviceFingerprint, + + LoginInfoSection, + UserId, + Homeserver, + Profile, + Version, + Platform, + COUNT, + // hidden for now + AccessToken, +#ifdef Q_OS_MAC + ScaleFactor, +#endif + }; public: - UserSettingsPage(QSharedPointer<UserSettings> settings, QWidget *parent = nullptr); - -protected: - void showEvent(QShowEvent *event) override; - void paintEvent(QPaintEvent *event) override; - -signals: - void moveBack(); - void trayOptionChanged(bool value); - void themeChanged(); - void decryptSidebarChanged(); + enum Types + { + Toggle, + ReadOnlyText, + Options, + Number, + SectionTitle, + SectionBar, + KeyStatus, + SessionKeyImportExport, + XSignKeysRequestDownload, + }; + Q_ENUM(Types); -public slots: - void updateSecretStatus(); + enum Roles + { + Name, + Description, + Value, + Type, + ValueLowerBound, + ValueUpperBound, + ValueStep, + Values, + Good, + Enabled, + }; -private slots: - void importSessionKeys(); - void exportSessionKeys(); + UserSettingsModel(QObject *parent = nullptr); + QHash<int, QByteArray> roleNames() const override; + int rowCount(const QModelIndex &parent = QModelIndex()) const override + { + (void)parent; + return (int)COUNT; + } + QVariant data(const QModelIndex &index, int role) const override; + bool setData(const QModelIndex &index, const QVariant &value, int role) override; -private: - // Layouts - QVBoxLayout *topLayout_; - QHBoxLayout *topBarLayout_; - QFormLayout *formLayout_; - - // Shared settings object. - QSharedPointer<UserSettings> settings_; - - Toggle *trayToggle_; - Toggle *startInTrayToggle_; - Toggle *groupViewToggle_; - Toggle *timelineButtonsToggle_; - Toggle *typingNotifications_; - Toggle *messageHoverHighlight_; - Toggle *enlargeEmojiOnlyMessages_; - Toggle *sortByImportance_; - Toggle *readReceipts_; - Toggle *markdown_; - Toggle *animateImagesOnHover_; - Toggle *desktopNotifications_; - Toggle *alertOnNotification_; - Toggle *avatarCircles_; - Toggle *useIdenticon_; - Toggle *useStunServer_; - Toggle *decryptSidebar_; - Toggle *privacyScreen_; - QSpinBox *privacyScreenTimeout_; - Toggle *shareKeysWithTrustedUsers_; - Toggle *onlyShareKeysWithVerifiedUsers_; - Toggle *useOnlineKeyBackup_; - Toggle *mobileMode_; - QLabel *deviceFingerprintValue_; - QLabel *deviceIdValue_; - QLabel *backupSecretCached; - QLabel *masterSecretCached; - QLabel *selfSigningSecretCached; - QLabel *userSigningSecretCached; - - QComboBox *themeCombo_; - QComboBox *scaleFactorCombo_; - QComboBox *fontSizeCombo_; - QFontComboBox *fontSelectionCombo_; - QComboBox *emojiFontSelectionCombo_; - QComboBox *ringtoneCombo_; - QComboBox *microphoneCombo_; - QComboBox *cameraCombo_; - QComboBox *cameraResolutionCombo_; - QComboBox *cameraFrameRateCombo_; - - QSpinBox *timelineMaxWidthSpin_; - - int sideMargin_ = 0; + Q_INVOKABLE void importSessionKeys(); + Q_INVOKABLE void exportSessionKeys(); + Q_INVOKABLE void requestCrossSigningSecrets(); + Q_INVOKABLE void downloadCrossSigningSecrets(); };