Add mobile mode which improves scrolling

This commit is contained in:
Nicolas Werner 2020-10-24 16:21:00 +02:00
parent 53734607cf
commit 3172811ca7
3 changed files with 28 additions and 1 deletions

View file

@ -6,7 +6,7 @@ TextEdit {
textFormat: TextEdit.RichText textFormat: TextEdit.RichText
readOnly: true readOnly: true
wrapMode: Text.Wrap wrapMode: Text.Wrap
selectByMouse: true selectByMouse: !Settings.mobileMode
color: colors.text color: colors.text
onLinkActivated: { onLinkActivated: {
if (/^https:\/\/matrix.to\/#\/(@.*)$/.test(link)) { if (/^https:\/\/matrix.to\/#\/(@.*)$/.test(link)) {

View file

@ -75,6 +75,7 @@ UserSettings::load()
decryptSidebar_ = settings.value("user/decrypt_sidebar", true).toBool(); decryptSidebar_ = settings.value("user/decrypt_sidebar", true).toBool();
shareKeysWithTrustedUsers_ = shareKeysWithTrustedUsers_ =
settings.value("user/share_keys_with_trusted_users", true).toBool(); settings.value("user/share_keys_with_trusted_users", true).toBool();
mobileMode_ = settings.value("user/mobile_mode", false).toBool();
emojiFont_ = settings.value("user/emoji_font_family", "default").toString(); emojiFont_ = settings.value("user/emoji_font_family", "default").toString();
baseFontSize_ = settings.value("user/font_size", QFont().pointSizeF()).toDouble(); baseFontSize_ = settings.value("user/font_size", QFont().pointSizeF()).toDouble();
presence_ = presence_ =
@ -123,6 +124,16 @@ UserSettings::setStartInTray(bool state)
save(); save();
} }
void
UserSettings::setMobileMode(bool state)
{
if (state == mobileMode_)
return;
mobileMode_ = state;
emit mobileModeChanged(state);
save();
}
void void
UserSettings::setGroupView(bool state) UserSettings::setGroupView(bool state)
{ {
@ -389,6 +400,7 @@ UserSettings::save()
settings.setValue("avatar_circles", avatarCircles_); settings.setValue("avatar_circles", avatarCircles_);
settings.setValue("decrypt_sidebar", decryptSidebar_); settings.setValue("decrypt_sidebar", decryptSidebar_);
settings.setValue("share_keys_with_trusted_users", shareKeysWithTrustedUsers_); settings.setValue("share_keys_with_trusted_users", shareKeysWithTrustedUsers_);
settings.setValue("mobile_mode", mobileMode_);
settings.setValue("font_size", baseFontSize_); settings.setValue("font_size", baseFontSize_);
settings.setValue("typing_notifications", typingNotifications_); settings.setValue("typing_notifications", typingNotifications_);
settings.setValue("minor_events", sortByImportance_); settings.setValue("minor_events", sortByImportance_);
@ -470,6 +482,7 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
desktopNotifications_ = new Toggle{this}; desktopNotifications_ = new Toggle{this};
alertOnNotification_ = new Toggle{this}; alertOnNotification_ = new Toggle{this};
useStunServer_ = new Toggle{this}; useStunServer_ = new Toggle{this};
mobileMode_ = new Toggle{this};
scaleFactorCombo_ = new QComboBox{this}; scaleFactorCombo_ = new QComboBox{this};
fontSizeCombo_ = new QComboBox{this}; fontSizeCombo_ = new QComboBox{this};
fontSelectionCombo_ = new QFontComboBox{this}; fontSelectionCombo_ = new QFontComboBox{this};
@ -637,6 +650,9 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
formLayout_->addRow(uiLabel_); formLayout_->addRow(uiLabel_);
formLayout_->addRow(new HorizontalLine{this}); formLayout_->addRow(new HorizontalLine{this});
boxWrap(tr("Mobile mode"),
mobileMode_,
tr("Will prevent text selection in the timeline to make scrolling easier."));
#if !defined(Q_OS_MAC) #if !defined(Q_OS_MAC)
boxWrap(tr("Scale factor"), boxWrap(tr("Scale factor"),
scaleFactorCombo_, scaleFactorCombo_,
@ -728,6 +744,10 @@ UserSettingsPage::UserSettingsPage(QSharedPointer<UserSettings> settings, QWidge
settings_->setStartInTray(!disabled); settings_->setStartInTray(!disabled);
}); });
connect(mobileMode_, &Toggle::toggled, this, [this](bool disabled) {
settings_->setMobileMode(!disabled);
});
connect(groupViewToggle_, &Toggle::toggled, this, [this](bool disabled) { connect(groupViewToggle_, &Toggle::toggled, this, [this](bool disabled) {
settings_->setGroupView(!disabled); settings_->setGroupView(!disabled);
}); });
@ -820,6 +840,7 @@ UserSettingsPage::showEvent(QShowEvent *)
typingNotifications_->setState(!settings_->typingNotifications()); typingNotifications_->setState(!settings_->typingNotifications());
sortByImportance_->setState(!settings_->sortByImportance()); sortByImportance_->setState(!settings_->sortByImportance());
timelineButtonsToggle_->setState(!settings_->buttonsInTimeline()); timelineButtonsToggle_->setState(!settings_->buttonsInTimeline());
mobileMode_->setState(!settings_->mobileMode());
readReceipts_->setState(!settings_->readReceipts()); readReceipts_->setState(!settings_->readReceipts());
markdown_->setState(!settings_->markdown()); markdown_->setState(!settings_->markdown());
desktopNotifications_->setState(!settings_->hasDesktopNotifications()); desktopNotifications_->setState(!settings_->hasDesktopNotifications());

View file

@ -67,6 +67,7 @@ class UserSettings : public QObject
decryptSidebarChanged) decryptSidebarChanged)
Q_PROPERTY(int timelineMaxWidth READ timelineMaxWidth WRITE setTimelineMaxWidth NOTIFY Q_PROPERTY(int timelineMaxWidth READ timelineMaxWidth WRITE setTimelineMaxWidth NOTIFY
timelineMaxWidthChanged) timelineMaxWidthChanged)
Q_PROPERTY(bool mobileMode READ mobileMode WRITE setMobileMode NOTIFY mobileModeChanged)
Q_PROPERTY(double fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged) Q_PROPERTY(double fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged)
Q_PROPERTY(QString font READ font WRITE setFontFamily NOTIFY fontChanged) Q_PROPERTY(QString font READ font WRITE setFontFamily NOTIFY fontChanged)
Q_PROPERTY( Q_PROPERTY(
@ -99,6 +100,7 @@ public:
void setEnlargeEmojiOnlyMessages(bool state); void setEnlargeEmojiOnlyMessages(bool state);
void setTray(bool state); void setTray(bool state);
void setStartInTray(bool state); void setStartInTray(bool state);
void setMobileMode(bool mode);
void setFontSize(double size); void setFontSize(double size);
void setFontFamily(QString family); void setFontFamily(QString family);
void setEmojiFontFamily(QString family); void setEmojiFontFamily(QString family);
@ -130,6 +132,7 @@ public:
bool typingNotifications() const { return typingNotifications_; } bool typingNotifications() const { return typingNotifications_; }
bool sortByImportance() const { return sortByImportance_; } bool sortByImportance() const { return sortByImportance_; }
bool buttonsInTimeline() const { return buttonsInTimeline_; } bool buttonsInTimeline() const { return buttonsInTimeline_; }
bool mobileMode() const { return mobileMode_; }
bool readReceipts() const { return readReceipts_; } bool readReceipts() const { return readReceipts_; }
bool hasDesktopNotifications() const { return hasDesktopNotifications_; } bool hasDesktopNotifications() const { return hasDesktopNotifications_; }
bool hasAlertOnNotification() const { return hasAlertOnNotification_; } bool hasAlertOnNotification() const { return hasAlertOnNotification_; }
@ -163,6 +166,7 @@ signals:
void avatarCirclesChanged(bool state); void avatarCirclesChanged(bool state);
void decryptSidebarChanged(bool state); void decryptSidebarChanged(bool state);
void timelineMaxWidthChanged(int state); void timelineMaxWidthChanged(int state);
void mobileModeChanged(bool mode);
void fontSizeChanged(double state); void fontSizeChanged(double state);
void fontChanged(QString state); void fontChanged(QString state);
void emojiFontChanged(QString state); void emojiFontChanged(QString state);
@ -193,6 +197,7 @@ private:
bool avatarCircles_; bool avatarCircles_;
bool decryptSidebar_; bool decryptSidebar_;
bool shareKeysWithTrustedUsers_; bool shareKeysWithTrustedUsers_;
bool mobileMode_;
int timelineMaxWidth_; int timelineMaxWidth_;
double baseFontSize_; double baseFontSize_;
QString font_; QString font_;
@ -256,6 +261,7 @@ private:
Toggle *useStunServer_; Toggle *useStunServer_;
Toggle *decryptSidebar_; Toggle *decryptSidebar_;
Toggle *shareKeysWithTrustedUsers_; Toggle *shareKeysWithTrustedUsers_;
Toggle *mobileMode_;
QLabel *deviceFingerprintValue_; QLabel *deviceFingerprintValue_;
QLabel *deviceIdValue_; QLabel *deviceIdValue_;