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

index bcc6ef52..9cb69c85 100644 --- a/src/UserSettingsPage.cpp +++ b/src/UserSettingsPage.cpp
@@ -82,10 +82,12 @@ UserSettings::load(std::optional<QString> profile) font_ = settings.value(QStringLiteral("user/font_family"), "").toString(); - avatarCircles_ = settings.value(QStringLiteral("user/avatar_circles"), true).toBool(); - useIdenticon_ = settings.value(QStringLiteral("user/use_identicon"), true).toBool(); - decryptSidebar_ = settings.value(QStringLiteral("user/decrypt_sidebar"), true).toBool(); - privacyScreen_ = settings.value(QStringLiteral("user/privacy_screen"), false).toBool(); + avatarCircles_ = settings.value(QStringLiteral("user/avatar_circles"), true).toBool(); + useIdenticon_ = settings.value(QStringLiteral("user/use_identicon"), true).toBool(); + openImageExternal_ = settings.value(QStringLiteral("user/open_image_external"), false).toBool(); + openVideoExternal_ = settings.value(QStringLiteral("user/open_video_external"), false).toBool(); + decryptSidebar_ = settings.value(QStringLiteral("user/decrypt_sidebar"), true).toBool(); + privacyScreen_ = settings.value(QStringLiteral("user/privacy_screen"), false).toBool(); privacyScreenTimeout_ = settings.value(QStringLiteral("user/privacy_screen_timeout"), 0).toInt(); mobileMode_ = settings.value(QStringLiteral("user/mobile_mode"), false).toBool(); @@ -688,6 +690,26 @@ UserSettings::setUseIdenticon(bool state) } void +UserSettings::setOpenImageExternal(bool state) +{ + if (state == openImageExternal_) + return; + openImageExternal_ = state; + emit openImageExternalChanged(openImageExternal_); + save(); +} + +void +UserSettings::setOpenVideoExternal(bool state) +{ + if (state == openVideoExternal_) + return; + openVideoExternal_ = state; + emit openVideoExternalChanged(openVideoExternal_); + save(); +} + +void UserSettings::applyTheme() { QFile stylefile; @@ -764,6 +786,8 @@ UserSettings::save() settings.setValue(QStringLiteral("use_stun_server"), useStunServer_); settings.setValue(QStringLiteral("currentProfile"), profile_); settings.setValue(QStringLiteral("use_identicon"), useIdenticon_); + settings.setValue(QStringLiteral("open_image_external"), openImageExternal_); + settings.setValue(QStringLiteral("open_video_external"), openVideoExternal_); settings.endGroup(); // user @@ -868,6 +892,10 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return tr("Circular Avatars"); case UseIdenticon: return tr("Use identicons"); + case OpenImageExternal: + return tr("Open images with external program"); + case OpenVideoExternal: + return tr("Open videos with external program"); case DecryptSidebar: return tr("Decrypt messages in sidebar"); case PrivacyScreen: @@ -992,6 +1020,10 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return i->avatarCircles(); case UseIdenticon: return i->useIdenticon(); + case OpenImageExternal: + return i->openImageExternal(); + case OpenVideoExternal: + return i->openVideoExternal(); case DecryptSidebar: return i->decryptSidebar(); case PrivacyScreen: @@ -1134,6 +1166,14 @@ UserSettingsModel::data(const QModelIndex &index, int role) const "Change the appearance of user avatars in chats.\nOFF - square, ON - circle."); case UseIdenticon: return tr("Display an identicon instead of a letter when no avatar is set."); + case OpenImageExternal: + return tr("Toggles the behavior of \"Right-Click>Open with external program\" " + "when tapping the image.\nNote that when this option is ON, opened " + "files are left unencrypted on disk and must be manually deleted."); + case OpenVideoExternal: + return tr("Toggles the behavior of \"Right-Click>Open with external program\" " + "when tapping the video.\nNote that when this option is ON, opened " + "files are left unencrypted on disk and must be manually deleted."); case DecryptSidebar: return tr("Decrypt the messages shown in the sidebar.\nOnly affects messages in " "encrypted chats."); @@ -1230,6 +1270,8 @@ UserSettingsModel::data(const QModelIndex &index, int role) const case AlertOnNotification: case AvatarCircles: case UseIdenticon: + case OpenImageExternal: + case OpenVideoExternal: case DecryptSidebar: case PrivacyScreen: case MobileMode: @@ -1522,6 +1564,20 @@ UserSettingsModel::setData(const QModelIndex &index, const QVariant &value, int } else return false; } + case OpenImageExternal: { + if (value.userType() == QMetaType::Bool) { + i->setOpenImageExternal(value.toBool()); + return true; + } else + return false; + } + case OpenVideoExternal: { + if (value.userType() == QMetaType::Bool) { + i->setOpenVideoExternal(value.toBool()); + return true; + } else + return false; + } case DecryptSidebar: { if (value.userType() == QMetaType::Bool) { i->setDecryptSidebar(value.toBool()); @@ -1782,6 +1838,12 @@ UserSettingsModel::UserSettingsModel(QObject *p) connect(s.get(), &UserSettings::useIdenticonChanged, this, [this]() { emit dataChanged(index(UseIdenticon), index(UseIdenticon), {Value}); }); + connect(s.get(), &UserSettings::openImageExternalChanged, this, [this]() { + emit dataChanged(index(OpenImageExternal), index(OpenImageExternal), {Value}); + }); + connect(s.get(), &UserSettings::openVideoExternalChanged, this, [this]() { + emit dataChanged(index(OpenVideoExternal), index(OpenVideoExternal), {Value}); + }); connect(s.get(), &UserSettings::privacyScreenChanged, this, [this]() { emit dataChanged(index(PrivacyScreen), index(PrivacyScreen), {Value}); emit dataChanged(index(PrivacyScreenTimeout), index(PrivacyScreenTimeout), {Enabled});