diff --git a/harbour-fernschreiber.pro b/harbour-fernschreiber.pro
index 46bf66b..bd59210 100644
--- a/harbour-fernschreiber.pro
+++ b/harbour-fernschreiber.pro
@@ -108,6 +108,14 @@ DISTFILES += qml/harbour-fernschreiber.qml \
qml/components/messageContent/MessageVideo.qml \
qml/components/messageContent/MessageVoiceNote.qml \
qml/components/messageContent/WebPagePreview.qml \
+ qml/components/settingsPage/Accordion.qml \
+ qml/components/settingsPage/AccordionItem.qml \
+ qml/components/settingsPage/ResponsiveGrid.qml \
+ qml/components/settingsPage/SettingsAppearance.qml \
+ qml/components/settingsPage/SettingsBehavior.qml \
+ qml/components/settingsPage/SettingsPrivacy.qml \
+ qml/components/settingsPage/SettingsStorage.qml \
+ qml/components/settingsPage/SettingsUserProfile.qml \
qml/js/debug.js \
qml/js/functions.js \
qml/pages/ActiveSessionsPage.qml \
diff --git a/qml/components/settingsPage/Accordion.qml b/qml/components/settingsPage/Accordion.qml
new file mode 100644
index 0000000..6d1d942
--- /dev/null
+++ b/qml/components/settingsPage/Accordion.qml
@@ -0,0 +1,42 @@
+/*
+ Copyright (C) 2021 Sebastian J. Wolf and other contributors
+
+ This file is part of Fernschreiber.
+
+ Fernschreiber is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Fernschreiber is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fernschreiber. If not, see .
+*/
+
+import QtQuick 2.6
+import Sailfish.Silica 1.0
+
+
+Column {
+ width: parent.width
+ property SilicaFlickable flickable
+ property bool animate: false
+ signal setActiveArea(string activeAreaTitle)
+ function scrollUpFlickable(amount) {
+ if(flickable) {
+ flickableAnimation.to = Math.max(0, flickable.contentY - amount);
+ flickableAnimation.start()
+ }
+ }
+
+ NumberAnimation {
+ id: flickableAnimation
+ target: flickable
+ property: "contentY"
+ duration: 200
+ }
+}
diff --git a/qml/components/settingsPage/AccordionItem.qml b/qml/components/settingsPage/AccordionItem.qml
new file mode 100644
index 0000000..b6539d2
--- /dev/null
+++ b/qml/components/settingsPage/AccordionItem.qml
@@ -0,0 +1,106 @@
+/*
+ Copyright (C) 2021 Sebastian J. Wolf and other contributors
+
+ This file is part of Fernschreiber.
+
+ Fernschreiber is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Fernschreiber is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fernschreiber. If not, see .
+*/
+
+import QtQuick 2.6
+import Sailfish.Silica 1.0
+
+Item {
+ id: area
+ width: parent.width
+ height: button.height + content.height
+ property alias icon: image
+ property alias text: label.text
+ property alias asynchronous: content.asynchronous
+ property bool expanded: false
+ default property alias els: content.sourceComponent
+ states: [
+ State {
+ when: area.expanded
+ PropertyChanges { target: image; rotation: -90 }
+ PropertyChanges { target: content; height: content.implicitHeight + Theme.paddingLarge; opacity: 1.0 }
+ }
+ ]
+ transitions: Transition {
+ to: "*"
+ enabled: area.parent.animate
+ NumberAnimation { target: content; properties: "height, opacity"; duration: 200}
+ }
+ Connections {
+ target: area.parent
+ onSetActiveArea: {
+ var expand = (activeAreaTitle === area.text);
+ if(area.expanded && !expand && area.parent.scrollUpFlickable) {
+ area.parent.scrollUpFlickable(content.implicitHeight + Theme.paddingLarge);
+ }
+
+ area.expanded = expand;
+ }
+ }
+ BackgroundItem {
+ id: button
+ height: Theme.itemSizeMedium
+ onClicked: {
+ area.parent.animate = true;
+ area.parent.setActiveArea(area.expanded ? -1 : area.text)
+ }
+ Rectangle {
+ anchors.fill: parent
+ gradient: Gradient {
+ GradientStop { position: 0.0; color: Theme.rgba(Theme.highlightBackgroundColor, 0.15) }
+ GradientStop { position: 1.0; color: "transparent" }
+ }
+ }
+ Label {
+ id: label
+ anchors {
+ left: parent.left
+ right: image.left
+ verticalCenter: parent.verticalCenter
+ leftMargin: Theme.horizontalPageMargin + Theme.paddingLarge
+ rightMargin: Theme.paddingMedium
+ }
+ horizontalAlignment: Text.AlignRight
+ truncationMode: TruncationMode.Fade
+ font.pixelSize: Theme.fontSizeSmall
+ color: button.highlighted ? Theme.highlightColor : Theme.primaryColor
+ textFormat: Text.PlainText
+ }
+ HighlightImage {
+ id: image
+ anchors {
+ right: parent.right
+ verticalCenter: parent.verticalCenter
+ rightMargin: Theme.horizontalPageMargin
+ }
+ width: visible ? Theme.iconSizeMedium : 0
+ highlighted: parent.highlighted
+ source: "image://theme/icon-m-right"
+ rotation: 90
+ }
+ }
+ Loader {
+ id: content
+ width: parent.width
+ height: 0
+ opacity: 0
+ anchors.top: button.bottom
+ asynchronous: true
+ clip: true
+ }
+}
diff --git a/qml/components/settingsPage/ResponsiveGrid.qml b/qml/components/settingsPage/ResponsiveGrid.qml
new file mode 100644
index 0000000..1d1bb55
--- /dev/null
+++ b/qml/components/settingsPage/ResponsiveGrid.qml
@@ -0,0 +1,27 @@
+/*
+ Copyright (C) 2021 Sebastian J. Wolf and other contributors
+
+ This file is part of Fernschreiber.
+
+ Fernschreiber is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Fernschreiber is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fernschreiber. If not, see .
+*/
+
+import QtQuick 2.6
+import Sailfish.Silica 1.0
+
+Grid {
+ width: parent.width - ( 2 * x )
+ columns: (appWindow.deviceOrientation & Orientation.LandscapeMask) || Screen.sizeCategory === Screen.Large || Screen.sizeCategory === Screen.ExtraLarge ? 2 : 1
+ readonly property real columnWidth: width/columns
+}
diff --git a/qml/components/settingsPage/SettingsAppearance.qml b/qml/components/settingsPage/SettingsAppearance.qml
new file mode 100644
index 0000000..f0a3d39
--- /dev/null
+++ b/qml/components/settingsPage/SettingsAppearance.qml
@@ -0,0 +1,64 @@
+/*
+ Copyright (C) 2021 Sebastian J. Wolf and other contributors
+
+ This file is part of Fernschreiber.
+
+ Fernschreiber is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Fernschreiber is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fernschreiber. If not, see .
+*/
+
+import QtQuick 2.6
+import Sailfish.Silica 1.0
+
+AccordionItem {
+ text: qsTr("Appearance")
+ Component {
+ ResponsiveGrid {
+ bottomPadding: Theme.paddingMedium
+ TextSwitch {
+ id: stickersAsEmojisTextSwitch
+ width: parent.columnWidth
+ checked: appSettings.showStickersAsEmojis
+ text: qsTr("Show stickers as emojis")
+ description: qsTr("Only display emojis instead of the actual stickers")
+ automaticCheck: false
+ onClicked: {
+ appSettings.showStickersAsEmojis = !checked
+ }
+ }
+
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.showStickersAsImages
+ text: qsTr("Show stickers as images")
+ description: qsTr("Show background for stickers and align them centrally like images")
+ automaticCheck: false
+ onClicked: {
+ appSettings.showStickersAsImages = !checked
+ }
+ enabled: !stickersAsEmojisTextSwitch.checked
+ }
+
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.animateStickers
+ text: qsTr("Animate stickers")
+ automaticCheck: false
+ onClicked: {
+ appSettings.animateStickers = !checked
+ }
+ enabled: !stickersAsEmojisTextSwitch.checked
+ }
+ }
+ }
+}
diff --git a/qml/components/settingsPage/SettingsBehavior.qml b/qml/components/settingsPage/SettingsBehavior.qml
new file mode 100644
index 0000000..f0b2ea2
--- /dev/null
+++ b/qml/components/settingsPage/SettingsBehavior.qml
@@ -0,0 +1,170 @@
+/*
+ Copyright (C) 2021 Sebastian J. Wolf and other contributors
+
+ This file is part of Fernschreiber.
+
+ Fernschreiber is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Fernschreiber is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fernschreiber. If not, see .
+*/
+
+import QtQuick 2.6
+import Sailfish.Silica 1.0
+import WerkWolf.Fernschreiber 1.0
+
+AccordionItem {
+ text: qsTr("Behavior")
+ Component {
+ ResponsiveGrid {
+ bottomPadding: Theme.paddingMedium
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.sendByEnter
+ text: qsTr("Send message by enter")
+ description: qsTr("Send your message by pressing the enter key")
+ automaticCheck: false
+ onClicked: {
+ appSettings.sendByEnter = !checked
+ }
+ }
+
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.focusTextAreaOnChatOpen
+ text: qsTr("Focus text input on chat open")
+ description: qsTr("Focus the text input area when entering a chat")
+ automaticCheck: false
+ onClicked: {
+ appSettings.focusTextAreaOnChatOpen = !checked
+ }
+ }
+
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.focusTextAreaAfterSend
+ text: qsTr("Focus text input area after send")
+ description: qsTr("Focus the text input area after sending a message")
+ automaticCheck: false
+ onClicked: {
+ appSettings.focusTextAreaAfterSend = !checked
+ }
+ }
+
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.delayMessageRead
+ text: qsTr("Delay before marking messages as read")
+ description: qsTr("Fernschreiber will wait a bit before messages are marked as read")
+ automaticCheck: false
+ onClicked: {
+ appSettings.delayMessageRead = !checked
+ }
+ }
+
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.useOpenWith
+ text: qsTr("Open-with menu integration")
+ description: qsTr("Integrate Fernschreiber into open-with menu of Sailfish OS")
+ automaticCheck: false
+ onClicked: {
+ appSettings.useOpenWith = !checked
+ }
+ }
+
+ ComboBox {
+ id: feedbackComboBox
+ width: parent.columnWidth
+ label: qsTr("Notification feedback")
+ description: qsTr("Use non-graphical feedback (sound, vibration) for notifications")
+ menu: ContextMenu {
+ id: feedbackMenu
+ x: 0
+ width: feedbackComboBox.width
+
+ MenuItem {
+ readonly property int value: AppSettings.NotificationFeedbackAll
+ text: qsTr("All events")
+ onClicked: {
+ appSettings.notificationFeedback = value
+ }
+ }
+ MenuItem {
+ readonly property int value: AppSettings.NotificationFeedbackNew
+ text: qsTr("Only new events")
+ onClicked: {
+ appSettings.notificationFeedback = value
+ }
+ }
+ MenuItem {
+ readonly property int value: AppSettings.NotificationFeedbackNone
+ text: qsTr("None")
+ onClicked: {
+ appSettings.notificationFeedback = value
+ }
+ }
+ }
+
+ Component.onCompleted: updateFeedbackSelection()
+
+ function updateFeedbackSelection() {
+ var menuItems = feedbackMenu.children
+ var n = menuItems.length
+ for (var i=0; i 0
+ automaticCheck: false
+ onClicked: {
+ appSettings.notificationTurnsDisplayOn = !checked
+ }
+ Behavior on height { SmoothedAnimation { duration: 200 } }
+ }
+
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.notificationSoundsEnabled && enabled
+ text: qsTr("Enable notification sounds")
+ description: qsTr("When sounds are enabled, Fernschreiber will use the current Sailfish OS notification sound for chats, which can be configured in the system settings.")
+ enabled: appSettings.notificationFeedback !== AppSettings.NotificationFeedbackNone
+ height: enabled ? implicitHeight: 0
+ clip: height < implicitHeight
+ visible: height > 0
+ automaticCheck: false
+ onClicked: {
+ appSettings.notificationSoundsEnabled = !checked
+ }
+ Behavior on height { SmoothedAnimation { duration: 200 } }
+ }
+ }
+ }
+}
diff --git a/qml/components/settingsPage/SettingsPrivacy.qml b/qml/components/settingsPage/SettingsPrivacy.qml
new file mode 100644
index 0000000..b085d4b
--- /dev/null
+++ b/qml/components/settingsPage/SettingsPrivacy.qml
@@ -0,0 +1,266 @@
+/*
+ Copyright (C) 2021 Sebastian J. Wolf and other contributors
+
+ This file is part of Fernschreiber.
+
+ Fernschreiber is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Fernschreiber is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fernschreiber. If not, see .
+*/
+
+import QtQuick 2.6
+import Sailfish.Silica 1.0
+import WerkWolf.Fernschreiber 1.0
+
+AccordionItem {
+ text: qsTr("Privacy")
+ Component {
+ Column {
+ bottomPadding: Theme.paddingMedium
+ Connections {
+ target: tdLibWrapper
+ onUserPrivacySettingUpdated: {
+ Debug.log("Received updated privacy setting: " + setting + ":" + rule);
+ switch (setting) {
+ case TelegramAPI.SettingAllowChatInvites:
+ allowChatInvitesComboBox.currentIndex = rule;
+ break;
+ case TelegramAPI.SettingAllowFindingByPhoneNumber:
+ allowFindingByPhoneNumberComboBox.currentIndex = rule;
+ break;
+ case TelegramAPI.SettingShowLinkInForwardedMessages:
+ showLinkInForwardedMessagesComboBox.currentIndex = rule;
+ break;
+ case TelegramAPI.SettingShowPhoneNumber:
+ showPhoneNumberComboBox.currentIndex = rule;
+ break;
+ case TelegramAPI.SettingShowProfilePhoto:
+ showProfilePhotoComboBox.currentIndex = rule;
+ break;
+ case TelegramAPI.SettingShowStatus:
+ showStatusComboBox.currentIndex = rule;
+ break;
+ }
+ }
+ }
+ ResponsiveGrid {
+ ComboBox {
+ id: allowChatInvitesComboBox
+ width: parent.columnWidth
+ label: qsTr("Allow chat invites")
+ description: qsTr("Privacy setting for managing whether you can be invited to chats.")
+ menu: ContextMenu {
+ x: 0
+ width: allowChatInvitesComboBox.width
+
+ MenuItem {
+ text: qsTr("Yes")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowChatInvites, TelegramAPI.RuleAllowAll);
+ }
+ }
+ MenuItem {
+ text: qsTr("Your contacts only")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowChatInvites, TelegramAPI.RuleAllowContacts);
+ }
+ }
+ MenuItem {
+ text: qsTr("No")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowChatInvites, TelegramAPI.RuleRestrictAll);
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingAllowChatInvites);
+ }
+ }
+
+ ComboBox {
+ id: allowFindingByPhoneNumberComboBox
+ width: parent.columnWidth
+ label: qsTr("Allow finding by phone number")
+ description: qsTr("Privacy setting for managing whether you can be found by your phone number.")
+ menu: ContextMenu {
+ x: 0
+ width: allowFindingByPhoneNumberComboBox.width
+
+ MenuItem {
+ text: qsTr("Yes")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowFindingByPhoneNumber, TelegramAPI.RuleAllowAll);
+ }
+ }
+ MenuItem {
+ text: qsTr("Your contacts only")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowFindingByPhoneNumber, TelegramAPI.RuleAllowContacts);
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingAllowFindingByPhoneNumber);
+ }
+ }
+
+ ComboBox {
+ id: showLinkInForwardedMessagesComboBox
+ width: parent.columnWidth
+ label: qsTr("Show link in forwarded messages")
+ description: qsTr("Privacy setting for managing whether a link to your account is included in forwarded messages.")
+ menu: ContextMenu {
+ x: 0
+ width: showLinkInForwardedMessagesComboBox.width
+
+ MenuItem {
+ text: qsTr("Yes")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowLinkInForwardedMessages, TelegramAPI.RuleAllowAll);
+ }
+ }
+ MenuItem {
+ text: qsTr("Your contacts only")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowLinkInForwardedMessages, TelegramAPI.RuleAllowContacts);
+ }
+ }
+ MenuItem {
+ text: qsTr("No")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowLinkInForwardedMessages, TelegramAPI.RuleRestrictAll);
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingShowLinkInForwardedMessages);
+ }
+ }
+
+ ComboBox {
+ id: showPhoneNumberComboBox
+ width: parent.columnWidth
+ label: qsTr("Show phone number")
+ description: qsTr("Privacy setting for managing whether your phone number is visible.")
+ menu: ContextMenu {
+ x: 0
+ width: showPhoneNumberComboBox.width
+
+ MenuItem {
+ text: qsTr("Yes")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowPhoneNumber, TelegramAPI.RuleAllowAll);
+ }
+ }
+ MenuItem {
+ text: qsTr("Your contacts only")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowPhoneNumber, TelegramAPI.RuleAllowContacts);
+ }
+ }
+ MenuItem {
+ text: qsTr("No")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowPhoneNumber, TelegramAPI.RuleRestrictAll);
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingShowPhoneNumber);
+ }
+ }
+
+ ComboBox {
+ id: showProfilePhotoComboBox
+ width: parent.columnWidth
+ label: qsTr("Show profile photo")
+ description: qsTr("Privacy setting for managing whether your profile photo is visible.")
+ menu: ContextMenu {
+ x: 0
+ width: showProfilePhotoComboBox.width
+
+ MenuItem {
+ text: qsTr("Yes")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowProfilePhoto, TelegramAPI.RuleAllowAll);
+ }
+ }
+ MenuItem {
+ text: qsTr("Your contacts only")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowProfilePhoto, TelegramAPI.RuleAllowContacts);
+ }
+ }
+ MenuItem {
+ text: qsTr("No")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowProfilePhoto, TelegramAPI.RuleRestrictAll);
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingShowProfilePhoto);
+ }
+ }
+
+ ComboBox {
+ id: showStatusComboBox
+ width: parent.columnWidth
+ label: qsTr("Show status")
+ description: qsTr("Privacy setting for managing whether your online status is visible.")
+ menu: ContextMenu {
+ x: 0
+ width: showStatusComboBox.width
+
+ MenuItem {
+ text: qsTr("Yes")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowStatus, TelegramAPI.RuleAllowAll);
+ }
+ }
+ MenuItem {
+ text: qsTr("Your contacts only")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowStatus, TelegramAPI.RuleAllowContacts);
+ }
+ }
+ MenuItem {
+ text: qsTr("No")
+ onClicked: {
+ tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowStatus, TelegramAPI.RuleRestrictAll);
+ }
+ }
+ }
+
+ Component.onCompleted: {
+ currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingShowStatus);
+ }
+ }
+ }
+
+ TextSwitch {
+ checked: appSettings.allowInlineBotLocationAccess
+ text: qsTr("Allow sending Location to inline bots")
+ description: qsTr("Some inline bots request location data when using them")
+ automaticCheck: false
+ onClicked: {
+ appSettings.allowInlineBotLocationAccess = !checked
+ }
+ }
+ }
+ }
+}
diff --git a/qml/components/settingsPage/SettingsStorage.qml b/qml/components/settingsPage/SettingsStorage.qml
new file mode 100644
index 0000000..8423e0e
--- /dev/null
+++ b/qml/components/settingsPage/SettingsStorage.qml
@@ -0,0 +1,51 @@
+/*
+ Copyright (C) 2021 Sebastian J. Wolf and other contributors
+
+ This file is part of Fernschreiber.
+
+ Fernschreiber is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Fernschreiber is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fernschreiber. If not, see .
+*/
+
+import QtQuick 2.6
+import Sailfish.Silica 1.0
+import WerkWolf.Fernschreiber 1.0
+
+AccordionItem {
+ text: qsTr("Storage")
+ Component {
+ ResponsiveGrid {
+ bottomPadding: Theme.paddingMedium
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.onlineOnlyMode
+ text: qsTr("Enable online-only mode")
+ description: qsTr("Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.")
+ automaticCheck: false
+ onClicked: {
+ appSettings.onlineOnlyMode = !checked
+ }
+ }
+
+ TextSwitch {
+ width: parent.columnWidth
+ checked: appSettings.storageOptimizer
+ text: qsTr("Enable storage optimizer")
+ automaticCheck: false
+ onClicked: {
+ appSettings.storageOptimizer = !checked
+ }
+ }
+ }
+ }
+}
diff --git a/qml/components/settingsPage/SettingsUserProfile.qml b/qml/components/settingsPage/SettingsUserProfile.qml
new file mode 100644
index 0000000..0b6f901
--- /dev/null
+++ b/qml/components/settingsPage/SettingsUserProfile.qml
@@ -0,0 +1,261 @@
+/*
+ Copyright (C) 2021 Sebastian J. Wolf and other contributors
+
+ This file is part of Fernschreiber.
+
+ Fernschreiber is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ Fernschreiber is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with Fernschreiber. If not, see .
+*/
+
+import QtQuick 2.6
+import Sailfish.Silica 1.0
+import Sailfish.Pickers 1.0
+import WerkWolf.Fernschreiber 1.0
+import "../"
+import "../../pages/"
+import "../../js/functions.js" as Functions
+
+AccordionItem {
+ text: qsTr("User Profile")
+ Component {
+ Column {
+ id: accordionContent
+ bottomPadding: Theme.paddingMedium
+
+ readonly property var userInformation: tdLibWrapper.getUserInformation()
+ property bool uploadInProgress: false
+
+ Component.onCompleted: {
+ tdLibWrapper.getUserProfilePhotos(userInformation.id, 100, 0);
+ }
+
+ Connections {
+ target: tdLibWrapper
+ onOwnUserUpdated: {
+ firstNameEditArea.text = userInformation.first_name;
+ lastNameEditArea.text = userInformation.last_name;
+ userNameEditArea.text = userInformation.username;
+ }
+ onUserProfilePhotosReceived: {
+ if (extra === userInformation.id.toString()) {
+ imageContainer.thumbnailModel = photos;
+ }
+ }
+ onFileUpdated: {
+ if (uploadInProgress) {
+ profilePictureButtonColumn.visible = !fileInformation.remote.is_uploading_active;
+ uploadInProgress = fileInformation.remote.is_uploading_active;
+ if (!fileInformation.remote.is_uploading_active) {
+ uploadInProgress = false;
+ tdLibWrapper.getUserProfilePhotos(userInformation.id, 100, 0);
+ }
+ }
+ }
+ onOkReceived: {
+ if (request === "deleteProfilePhoto") {
+ tdLibWrapper.getUserProfilePhotos(userInformation.id, 100, 0);
+ }
+ if (request === "setProfilePhoto") {
+ tdLibWrapper.getUserProfilePhotos(userInformation.id, 100, 0);
+ profilePictureButtonColumn.visible = true;
+ uploadInProgress = false;
+ }
+ }
+ }
+
+ ResponsiveGrid {
+ x: Theme.horizontalPageMargin
+
+ InformationEditArea {
+ id: firstNameEditArea
+ visible: true
+ canEdit: true
+ headerText: qsTr("First Name", "first name of the logged-in profile - header")
+ text: userInformation.first_name
+ width: parent.columnWidth
+ headerLeftAligned: true
+
+ onSaveButtonClicked: {
+ if(!editItem.errorHighlight) {
+ tdLibWrapper.setName(textValue, lastNameEditArea.text);
+ } else {
+ isEditing = true;
+ }
+ }
+
+ onTextEdited: {
+ if(textValue.length > 0 && textValue.length < 65) {
+ editItem.errorHighlight = false;
+ editItem.label = "";
+ editItem.placeholderText = "";
+ } else {
+ editItem.label = qsTr("Enter 1-64 characters");
+ editItem.placeholderText = editItem.label;
+ editItem.errorHighlight = true;
+ }
+ }
+ }
+
+ InformationEditArea {
+ id: lastNameEditArea
+ visible: true
+ canEdit: true
+ headerText: qsTr("Last Name", "last name of the logged-in profile - header")
+ text: userInformation.last_name
+ width: parent.columnWidth
+ headerLeftAligned: true
+
+ onSaveButtonClicked: {
+ if(!editItem.errorHighlight) {
+ tdLibWrapper.setName(firstNameEditArea.text, textValue);
+ } else {
+ isEditing = true;
+ }
+ }
+
+ onTextEdited: {
+ if(textValue.length >= 0 && textValue.length < 65) {
+ editItem.errorHighlight = false;
+ editItem.label = "";
+ editItem.placeholderText = "";
+ } else {
+ editItem.label = qsTr("Enter 0-64 characters");
+ editItem.placeholderText = editItem.label;
+ editItem.errorHighlight = true;
+ }
+ }
+ }
+
+ InformationEditArea {
+ id: userNameEditArea
+ visible: true
+ canEdit: true
+ headerText: qsTr("Username", "user name of the logged-in profile - header")
+ text: userInformation.username
+ width: parent.columnWidth
+ headerLeftAligned: true
+
+ onSaveButtonClicked: {
+ tdLibWrapper.setUsername(textValue);
+ }
+ }
+
+ }
+
+ SectionHeader {
+ horizontalAlignment: Text.AlignLeft
+ text: qsTr("Profile Pictures")
+ }
+
+ Row {
+ width: parent.width - ( 2 * Theme.horizontalPageMargin )
+ spacing: Theme.paddingMedium
+
+ Item {
+ id: imageContainer
+ anchors.verticalCenter: parent.verticalCenter
+ width: parent.width / 2
+ height: profilePictureLoader.height
+ property var thumbnailModel: ({})
+ property bool thumbnailVisible: true
+ property bool thumbnailActive: thumbnailModel.length > 0
+ property int thumbnailRadius: imageContainer.width / 2
+
+ Loader {
+ id: profilePictureLoader
+ active: imageContainer.thumbnailActive
+ asynchronous: true
+ width: Theme.itemSizeExtraLarge
+ height: Theme.itemSizeExtraLarge
+ anchors.horizontalCenter: parent.horizontalCenter
+ source: "../ProfilePictureList.qml"
+ }
+
+ ProfileThumbnail {
+ id: chatPictureReplacement
+ visible: !profilePictureLoader.active
+ replacementStringHint: Functions.getUserName(accordionContent.userInformation)
+ radius: imageContainer.thumbnailRadius
+ anchors.horizontalCenter: parent.horizontalCenter
+ width: Theme.itemSizeExtraLarge
+ height: Theme.itemSizeExtraLarge
+ }
+ }
+
+ Column {
+ id: profilePictureButtonColumn
+ spacing: Theme.paddingSmall
+ width: parent.width / 2
+
+ Button {
+ id: addProfilePictureButton
+ text: qsTr("Add Picture")
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ }
+ onClicked: {
+ pageStack.push(imagePickerPage);
+ }
+ }
+
+ Button {
+ id: removeProfilePictureButton
+ text: qsTr("Delete Picture")
+ anchors {
+ horizontalCenter: parent.horizontalCenter
+ }
+ onClicked: {
+ var pictureIdForDeletion = imageContainer.thumbnailModel[profilePictureLoader.item.currentPictureIndex].id;
+ Remorse.popupAction(settingsPage, qsTr("Deleting profile picture"), function() { tdLibWrapper.deleteProfilePhoto(pictureIdForDeletion) });
+ }
+ }
+ }
+
+ Column {
+ id: uploadStatusColumn
+ visible: !profilePictureButtonColumn.visible
+ spacing: Theme.paddingMedium
+ width: parent.width / 2
+
+ Text {
+ id: uploadingText
+ font.pixelSize: Theme.fontSizeSmall
+ text: qsTr("Uploading...")
+ horizontalAlignment: Text.AlignHCenter
+ color: Theme.secondaryColor
+ width: parent.width
+ }
+
+ BusyIndicator {
+ anchors.horizontalCenter: parent.horizontalCenter
+ running: uploadStatusColumn.visible
+ size: BusyIndicatorSize.Medium
+ }
+
+ }
+
+ }
+
+ Component {
+ id: imagePickerPage
+ ImagePickerPage {
+ onSelectedContentPropertiesChanged: {
+ profilePictureButtonColumn.visible = false;
+ uploadInProgress = true;
+ tdLibWrapper.setProfilePhoto(selectedContentProperties.filePath);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/qml/pages/OverviewPage.qml b/qml/pages/OverviewPage.qml
index b5f49f6..4911a34 100644
--- a/qml/pages/OverviewPage.qml
+++ b/qml/pages/OverviewPage.qml
@@ -37,7 +37,7 @@ Page {
property bool chatListCreated: false;
// link handler:
- property string urlToOpen: null;
+ property string urlToOpen;
property var chatToOpen: null; //null or [chatId, messageId]
onStatusChanged: {
@@ -137,7 +137,7 @@ Page {
if(chatListCreated && urlToOpen && urlToOpen.length > 1) {
Debug.log("[OverviewPage] Opening URL: ", urlToOpen);
Functions.handleLink(urlToOpen);
- urlToOpen = null;
+ urlToOpen = "";
}
}
diff --git a/qml/pages/SettingsPage.qml b/qml/pages/SettingsPage.qml
index 2796198..b1cf4f9 100644
--- a/qml/pages/SettingsPage.qml
+++ b/qml/pages/SettingsPage.qml
@@ -21,6 +21,7 @@ import Sailfish.Silica 1.0
import Sailfish.Pickers 1.0
import WerkWolf.Fernschreiber 1.0
import "../components"
+import "../components/settingsPage"
import "../js/functions.js" as Functions
import "../js/debug.js" as Debug
@@ -28,50 +29,6 @@ Page {
id: settingsPage
allowedOrientations: Orientation.All
- readonly property bool landscapeLayout: settingsPage.isLandscape
- readonly property var userInformation: tdLibWrapper.getUserInformation()
- property bool uploadInProgress: false
-
- onStatusChanged: {
- if (status === PageStatus.Active) {
- tdLibWrapper.getUserProfilePhotos(userInformation.id, 100, 0);
- }
- }
-
- Connections {
- target: tdLibWrapper
- onOwnUserUpdated: {
- firstNameEditArea.text = userInformation.first_name;
- lastNameEditArea.text = userInformation.last_name;
- userNameEditArea.text = userInformation.username;
- }
- onUserProfilePhotosReceived: {
- if (extra === userInformation.id.toString()) {
- imageContainer.thumbnailModel = photos;
- }
- }
- onFileUpdated: {
- if (uploadInProgress) {
- profilePictureButtonColumn.visible = !fileInformation.remote.is_uploading_active;
- uploadInProgress = fileInformation.remote.is_uploading_active;
- if (!fileInformation.remote.is_uploading_active) {
- uploadInProgress = false;
- tdLibWrapper.getUserProfilePhotos(userInformation.id, 100, 0);
- }
- }
- }
- onOkReceived: {
- if (request === "deleteProfilePhoto") {
- tdLibWrapper.getUserProfilePhotos(userInformation.id, 100, 0);
- }
- if (request === "setProfilePhoto") {
- tdLibWrapper.getUserProfilePhotos(userInformation.id, 100, 0);
- profilePictureButtonColumn.visible = true;
- uploadInProgress = false;
- }
- }
- }
-
SilicaFlickable {
id: settingsContainer
contentHeight: column.height
@@ -80,686 +37,19 @@ Page {
Column {
id: column
width: settingsPage.width
+ bottomPadding: Theme.paddingLarge
PageHeader {
title: qsTr("Settings")
}
- SectionHeader {
- text: qsTr("User Profile")
- }
-
- Grid {
- width: parent.width - ( 2 * Theme.horizontalPageMargin )
- columns: landscapeLayout ? 2 : 1
- columnSpacing: Theme.paddingLarge
- anchors.horizontalCenter: parent.horizontalCenter
-
- readonly property real columnWidth: width/columns
-
- InformationEditArea {
- id: firstNameEditArea
- visible: true
- canEdit: true
- headerText: qsTr("First Name", "first name of the logged-in profile - header")
- text: userInformation.first_name
- width: parent.columnWidth
- headerLeftAligned: true
-
- onSaveButtonClicked: {
- if(!editItem.errorHighlight) {
- tdLibWrapper.setName(textValue, lastNameEditArea.text);
- } else {
- isEditing = true;
- }
- }
-
- onTextEdited: {
- if(textValue.length > 0 && textValue.length < 65) {
- editItem.errorHighlight = false;
- editItem.label = "";
- editItem.placeholderText = "";
- } else {
- editItem.label = qsTr("Enter 1-64 characters");
- editItem.placeholderText = editItem.label;
- editItem.errorHighlight = true;
- }
- }
- }
-
- InformationEditArea {
- id: lastNameEditArea
- visible: true
- canEdit: true
- headerText: qsTr("Last Name", "last name of the logged-in profile - header")
- text: userInformation.last_name
- width: parent.columnWidth
- headerLeftAligned: true
-
- onSaveButtonClicked: {
- if(!editItem.errorHighlight) {
- tdLibWrapper.setName(firstNameEditArea.text, textValue);
- } else {
- isEditing = true;
- }
- }
-
- onTextEdited: {
- if(textValue.length >= 0 && textValue.length < 65) {
- editItem.errorHighlight = false;
- editItem.label = "";
- editItem.placeholderText = "";
- } else {
- editItem.label = qsTr("Enter 0-64 characters");
- editItem.placeholderText = editItem.label;
- editItem.errorHighlight = true;
- }
- }
- }
-
- InformationEditArea {
- id: userNameEditArea
- visible: true
- canEdit: true
- headerText: qsTr("Username", "user name of the logged-in profile - header")
- text: userInformation.username
- width: parent.columnWidth
- headerLeftAligned: true
-
- onSaveButtonClicked: {
- tdLibWrapper.setUsername(textValue);
- }
- }
-
- }
-
- SectionHeader {
- horizontalAlignment: Text.AlignLeft
- text: qsTr("Profile Pictures")
- }
-
- Row {
- width: parent.width - ( 2 * Theme.horizontalPageMargin )
- spacing: Theme.paddingMedium
-
- Item {
- id: imageContainer
- anchors.verticalCenter: parent.verticalCenter
- width: parent.width / 2
- height: profilePictureLoader.height
- property var thumbnailModel: ({})
- property bool thumbnailVisible: true
- property bool thumbnailActive: thumbnailModel.length > 0
- property int thumbnailRadius: imageContainer.width / 2
-
- Loader {
- id: profilePictureLoader
- active: imageContainer.thumbnailActive
- asynchronous: true
- width: Theme.itemSizeExtraLarge
- height: Theme.itemSizeExtraLarge
- anchors.horizontalCenter: parent.horizontalCenter
- source: "../components/ProfilePictureList.qml"
- }
-
- ProfileThumbnail {
- id: chatPictureReplacement
- visible: !profilePictureLoader.active
- replacementStringHint: Functions.getUserName(settingsPage.userInformation)
- radius: imageContainer.thumbnailRadius
- anchors.horizontalCenter: parent.horizontalCenter
- width: Theme.itemSizeExtraLarge
- height: Theme.itemSizeExtraLarge
- }
- }
-
- Column {
- id: profilePictureButtonColumn
- spacing: Theme.paddingSmall
- width: parent.width / 2
-
- Button {
- id: addProfilePictureButton
- text: qsTr("Add Picture")
- anchors {
- horizontalCenter: parent.horizontalCenter
- }
- onClicked: {
- pageStack.push(imagePickerPage);
- }
- }
-
- Button {
- id: removeProfilePictureButton
- text: qsTr("Delete Picture")
- anchors {
- horizontalCenter: parent.horizontalCenter
- }
- onClicked: {
- var pictureIdForDeletion = imageContainer.thumbnailModel[profilePictureLoader.item.currentPictureIndex].id;
- Remorse.popupAction(settingsPage, qsTr("Deleting profile picture"), function() { tdLibWrapper.deleteProfilePhoto(pictureIdForDeletion) });
- }
- }
- }
-
- Column {
- id: uploadStatusColumn
- visible: !profilePictureButtonColumn.visible
- spacing: Theme.paddingMedium
- width: parent.width / 2
-
- Text {
- id: uploadingText
- font.pixelSize: Theme.fontSizeSmall
- text: qsTr("Uploading...")
- horizontalAlignment: Text.AlignHCenter
- color: Theme.secondaryColor
- width: parent.width
- }
-
- BusyIndicator {
- anchors.horizontalCenter: parent.horizontalCenter
- running: uploadStatusColumn.visible
- size: BusyIndicatorSize.Medium
- }
-
- }
-
- }
-
- Component {
- id: imagePickerPage
- ImagePickerPage {
- onSelectedContentPropertiesChanged: {
- profilePictureButtonColumn.visible = false;
- uploadInProgress = true;
- tdLibWrapper.setProfilePhoto(selectedContentProperties.filePath);
- }
- }
- }
-
- SectionHeader {
- horizontalAlignment: Text.AlignLeft
- text: qsTr("Privacy")
- }
-
- Grid {
- width: parent.width
- columns: landscapeLayout ? 2 : 1
- anchors.horizontalCenter: parent.horizontalCenter
-
- readonly property real columnWidth: width/columns
-
- Connections {
- target: tdLibWrapper
- onUserPrivacySettingUpdated: {
- Debug.log("Received updated privacy setting: " + setting + ":" + rule);
- switch (setting) {
- case TelegramAPI.SettingAllowChatInvites:
- allowChatInvitesComboBox.currentIndex = rule;
- break;
- case TelegramAPI.SettingAllowFindingByPhoneNumber:
- allowFindingByPhoneNumberComboBox.currentIndex = rule;
- break;
- case TelegramAPI.SettingShowLinkInForwardedMessages:
- showLinkInForwardedMessagesComboBox.currentIndex = rule;
- break;
- case TelegramAPI.SettingShowPhoneNumber:
- showPhoneNumberComboBox.currentIndex = rule;
- break;
- case TelegramAPI.SettingShowProfilePhoto:
- showProfilePhotoComboBox.currentIndex = rule;
- break;
- case TelegramAPI.SettingShowStatus:
- showStatusComboBox.currentIndex = rule;
- break;
- }
- }
- }
-
- ComboBox {
- id: allowChatInvitesComboBox
- width: parent.columnWidth
- label: qsTr("Allow chat invites")
- description: qsTr("Privacy setting for managing whether you can be invited to chats.")
- menu: ContextMenu {
- x: 0
- width: allowChatInvitesComboBox.width
-
- MenuItem {
- text: qsTr("Yes")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowChatInvites, TelegramAPI.RuleAllowAll);
- }
- }
- MenuItem {
- text: qsTr("Your contacts only")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowChatInvites, TelegramAPI.RuleAllowContacts);
- }
- }
- MenuItem {
- text: qsTr("No")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowChatInvites, TelegramAPI.RuleRestrictAll);
- }
- }
- }
-
- Component.onCompleted: {
- currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingAllowChatInvites);
- }
- }
-
- ComboBox {
- id: allowFindingByPhoneNumberComboBox
- width: parent.columnWidth
- label: qsTr("Allow finding by phone number")
- description: qsTr("Privacy setting for managing whether you can be found by your phone number.")
- menu: ContextMenu {
- x: 0
- width: allowFindingByPhoneNumberComboBox.width
-
- MenuItem {
- text: qsTr("Yes")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowFindingByPhoneNumber, TelegramAPI.RuleAllowAll);
- }
- }
- MenuItem {
- text: qsTr("Your contacts only")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingAllowFindingByPhoneNumber, TelegramAPI.RuleAllowContacts);
- }
- }
- }
-
- Component.onCompleted: {
- currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingAllowFindingByPhoneNumber);
- }
- }
-
- ComboBox {
- id: showLinkInForwardedMessagesComboBox
- width: parent.columnWidth
- label: qsTr("Show link in forwarded messages")
- description: qsTr("Privacy setting for managing whether a link to your account is included in forwarded messages.")
- menu: ContextMenu {
- x: 0
- width: showLinkInForwardedMessagesComboBox.width
-
- MenuItem {
- text: qsTr("Yes")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowLinkInForwardedMessages, TelegramAPI.RuleAllowAll);
- }
- }
- MenuItem {
- text: qsTr("Your contacts only")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowLinkInForwardedMessages, TelegramAPI.RuleAllowContacts);
- }
- }
- MenuItem {
- text: qsTr("No")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowLinkInForwardedMessages, TelegramAPI.RuleRestrictAll);
- }
- }
- }
-
- Component.onCompleted: {
- currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingShowLinkInForwardedMessages);
- }
- }
-
- ComboBox {
- id: showPhoneNumberComboBox
- width: parent.columnWidth
- label: qsTr("Show phone number")
- description: qsTr("Privacy setting for managing whether your phone number is visible.")
- menu: ContextMenu {
- x: 0
- width: showPhoneNumberComboBox.width
-
- MenuItem {
- text: qsTr("Yes")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowPhoneNumber, TelegramAPI.RuleAllowAll);
- }
- }
- MenuItem {
- text: qsTr("Your contacts only")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowPhoneNumber, TelegramAPI.RuleAllowContacts);
- }
- }
- MenuItem {
- text: qsTr("No")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowPhoneNumber, TelegramAPI.RuleRestrictAll);
- }
- }
- }
-
- Component.onCompleted: {
- currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingShowPhoneNumber);
- }
- }
-
- ComboBox {
- id: showProfilePhotoComboBox
- width: parent.columnWidth
- label: qsTr("Show profile photo")
- description: qsTr("Privacy setting for managing whether your profile photo is visible.")
- menu: ContextMenu {
- x: 0
- width: showProfilePhotoComboBox.width
-
- MenuItem {
- text: qsTr("Yes")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowProfilePhoto, TelegramAPI.RuleAllowAll);
- }
- }
- MenuItem {
- text: qsTr("Your contacts only")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowProfilePhoto, TelegramAPI.RuleAllowContacts);
- }
- }
- MenuItem {
- text: qsTr("No")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowProfilePhoto, TelegramAPI.RuleRestrictAll);
- }
- }
- }
-
- Component.onCompleted: {
- currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingShowProfilePhoto);
- }
- }
-
- ComboBox {
- id: showStatusComboBox
- width: parent.columnWidth
- label: qsTr("Show status")
- description: qsTr("Privacy setting for managing whether your online status is visible.")
- menu: ContextMenu {
- x: 0
- width: showStatusComboBox.width
-
- MenuItem {
- text: qsTr("Yes")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowStatus, TelegramAPI.RuleAllowAll);
- }
- }
- MenuItem {
- text: qsTr("Your contacts only")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowStatus, TelegramAPI.RuleAllowContacts);
- }
- }
- MenuItem {
- text: qsTr("No")
- onClicked: {
- tdLibWrapper.setUserPrivacySettingRule(TelegramAPI.SettingShowStatus, TelegramAPI.RuleRestrictAll);
- }
- }
- }
-
- Component.onCompleted: {
- currentIndex = tdLibWrapper.getUserPrivacySettingRule(TelegramAPI.SettingShowStatus);
- }
- }
-
- }
-
- TextSwitch {
- checked: appSettings.allowInlineBotLocationAccess
- text: qsTr("Allow sending Location to inline bots")
- description: qsTr("Some inline bots request location data when using them")
- automaticCheck: false
- onClicked: {
- appSettings.allowInlineBotLocationAccess = !checked
- }
- }
-
- SectionHeader {
- text: qsTr("Behavior")
- }
-
- Grid {
- width: parent.width
- columns: landscapeLayout ? 2 : 1
-
- readonly property real columnWidth: width/columns
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.sendByEnter
- text: qsTr("Send message by enter")
- description: qsTr("Send your message by pressing the enter key")
- automaticCheck: false
- onClicked: {
- appSettings.sendByEnter = !checked
- }
- }
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.focusTextAreaOnChatOpen
- text: qsTr("Focus text input on chat open")
- description: qsTr("Focus the text input area when entering a chat")
- automaticCheck: false
- onClicked: {
- appSettings.focusTextAreaOnChatOpen = !checked
- }
- }
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.focusTextAreaAfterSend
- text: qsTr("Focus text input area after send")
- description: qsTr("Focus the text input area after sending a message")
- automaticCheck: false
- onClicked: {
- appSettings.focusTextAreaAfterSend = !checked
- }
- }
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.delayMessageRead
- text: qsTr("Delay before marking messages as read")
- description: qsTr("Fernschreiber will wait a bit before messages are marked as read")
- automaticCheck: false
- onClicked: {
- appSettings.delayMessageRead = !checked
- }
- }
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.useOpenWith
- text: qsTr("Open-with menu integration")
- description: qsTr("Integrate Fernschreiber into open-with menu of Sailfish OS")
- automaticCheck: false
- onClicked: {
- appSettings.useOpenWith = !checked
- }
- }
-
- ComboBox {
- id: feedbackComboBox
- width: parent.columnWidth
- label: qsTr("Notification feedback")
- description: qsTr("Use non-graphical feedback (sound, vibration) for notifications")
- menu: ContextMenu {
- id: feedbackMenu
- x: 0
- width: feedbackComboBox.width
-
- MenuItem {
- readonly property int value: AppSettings.NotificationFeedbackAll
- text: qsTr("All events")
- onClicked: {
- appSettings.notificationFeedback = value
- }
- }
- MenuItem {
- readonly property int value: AppSettings.NotificationFeedbackNew
- text: qsTr("Only new events")
- onClicked: {
- appSettings.notificationFeedback = value
- }
- }
- MenuItem {
- readonly property int value: AppSettings.NotificationFeedbackNone
- text: qsTr("None")
- onClicked: {
- appSettings.notificationFeedback = value
- }
- }
- }
-
- Component.onCompleted: updateFeedbackSelection()
-
- function updateFeedbackSelection() {
- var menuItems = feedbackMenu.children
- var n = menuItems.length
- for (var i=0; i 0
- automaticCheck: false
- onClicked: {
- appSettings.notificationTurnsDisplayOn = !checked
- }
- Behavior on height { SmoothedAnimation { duration: 200 } }
- }
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.notificationSoundsEnabled && enabled
- text: qsTr("Enable notification sounds")
- description: qsTr("When sounds are enabled, Fernschreiber will use the current Sailfish OS notification sound for chats, which can be configured in the system settings.")
- enabled: appSettings.notificationFeedback !== AppSettings.NotificationFeedbackNone
- height: enabled ? implicitHeight: 0
- clip: height < implicitHeight
- visible: height > 0
- automaticCheck: false
- onClicked: {
- appSettings.notificationSoundsEnabled = !checked
- }
- Behavior on height { SmoothedAnimation { duration: 200 } }
- }
-
- }
-
- SectionHeader {
- text: qsTr("Appearance")
- }
-
- Grid {
- width: parent.width
- columns: landscapeLayout ? 2 : 1
-
- readonly property real columnWidth: width/columns
-
- TextSwitch {
- id: stickersAsEmojisTextSwitch
- width: parent.columnWidth
- checked: appSettings.showStickersAsEmojis
- text: qsTr("Show stickers as emojis")
- description: qsTr("Only display emojis instead of the actual stickers")
- automaticCheck: false
- onClicked: {
- appSettings.showStickersAsEmojis = !checked
- }
- }
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.showStickersAsImages
- text: qsTr("Show stickers as images")
- description: qsTr("Show background for stickers and align them centrally like images")
- automaticCheck: false
- onClicked: {
- appSettings.showStickersAsImages = !checked
- }
- enabled: !stickersAsEmojisTextSwitch.checked
- }
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.animateStickers
- text: qsTr("Animate stickers")
- automaticCheck: false
- onClicked: {
- appSettings.animateStickers = !checked
- }
- enabled: !stickersAsEmojisTextSwitch.checked
- }
- }
-
- SectionHeader {
- text: qsTr("Storage")
- }
-
- Grid {
- width: parent.width
- columns: landscapeLayout ? 2 : 1
-
- readonly property real columnWidth: width/columns
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.onlineOnlyMode
- text: qsTr("Enable online-only mode")
- description: qsTr("Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.")
- automaticCheck: false
- onClicked: {
- appSettings.onlineOnlyMode = !checked
- }
- }
-
- TextSwitch {
- width: parent.columnWidth
- checked: appSettings.storageOptimizer
- text: qsTr("Enable storage optimizer")
- automaticCheck: false
- onClicked: {
- appSettings.storageOptimizer = !checked
- }
- }
- }
-
- Item {
- width: 1
- height: Theme.paddingLarge // Some space at the bottom
+ Accordion {
+ flickable: settingsContainer
+ SettingsUserProfile { expanded: true; asynchronous: false }
+ SettingsPrivacy {}
+ SettingsBehavior {}
+ SettingsAppearance {}
+ SettingsStorage {}
}
}
diff --git a/translations/harbour-fernschreiber-de.ts b/translations/harbour-fernschreiber-de.ts
index de14338..70ced0b 100644
--- a/translations/harbour-fernschreiber-de.ts
+++ b/translations/harbour-fernschreiber-de.ts
@@ -309,7 +309,7 @@
- Keine Nachricht in diesem Chat
+ Keine Nachricht in diesem Chat.
@@ -1501,11 +1501,34 @@
- SettingsPage
+ SettingsAppearance
-
- Einstellungen
+
+ Erscheinungsbild
+
+
+ Sticker als Emojis anzeigen
+
+
+
+ Nur Emojis anstelle der eigentlichen Sticker anzeigen
+
+
+
+ Sticker als Bilder anzeigen
+
+
+
+ Hintergrund für Sticker anzeigen und sie wie Bilder mittig platzieren
+
+
+
+ Sticker animieren
+
+
+
+ SettingsBehavior
Verhalten
@@ -1519,21 +1542,45 @@
Senden Sie Ihre Nachricht, indem Sie die Enter-Taste drücken
-
- Erscheinungsbild
+
+ Texteingabe fokussieren beim Öffnen eines Chats
-
- Sticker als Bilder anzeigen
+
+ Texteingabe fokussieren, wenn ein Chat betreten wird
-
- Hintergrund für Sticker anzeigen und sie wie Bilder mittig platzieren
+
+ Texteingabe nach Senden fokussieren
+
+
+
+ Fokussiert die Texteingabe nach Senden einer Nachricht
+
+
+
+ Verzögerung bevor Nachrichten als gelesen markiert werden
+
+
+
+ Fernschreiber wird ein bisschen warten, bevor Nachrichten als gelesen markiert werden
+
+
+
+ Integration im Öffnen-Mit-Menü
+
+
+
+ Fernschreiber ins Öffnen-Mit-Menü von Sailfish OS integrieren
Rückmeldung bei Hinweisen
+
+
+ Nicht-grafische Rückmeldungen (Klänge, Vibration) bei Hinweisen nutzen
+
Alle Ereignisse
@@ -1546,89 +1593,32 @@
Keine
-
-
- Nicht-grafische Rückmeldungen (Klänge, Vibration) bei Hinweisen nutzen
-
-
-
- Integration im Öffnen-Mit-Menü
-
-
-
- Fernschreiber ins Öffnen-Mit-Menü von Sailfish OS integrieren
-
-
-
- Sticker animieren
-
Hinweis schaltet den Bildschirm an
-
- Speicher
+
+ Hinweistöne einschalten
-
- Speicheroptimierer einschalten
+
+ Wenn Töne eingeschaltet sind, wird Fernschreiber den aktuellen Sailfish OS-Hinweiston für Chats verwenden, der in den Systemeinstellungen konfiguriert werden kann.
+
+
+ SettingsPage
-
- Texteingabe nach Senden fokussieren
-
-
-
- Fokussiert die Texteingabe nach Senden einer Nachricht
-
-
-
- Nur-Online-Modus einschalten
-
-
-
- Schaltet das Offline-Caching aus. Bestimmte Features können in diesem Modus eingeschränkt sein oder fehlen. Änderungen erfordern einen Neustart von Fernschreiber, um in Kraft zu treten.
+
+ Einstellungen
+
+
+ SettingsPrivacy
Privatsphäre
-
-
- Erlaubt Standortsendung an Inline-Bots
-
-
-
- Einige Inline-Bots fragen bei Nutzung Standortdaten an
-
-
-
- Nutzungsprofil
-
-
-
- first name of the logged-in profile - header
- Vorname
-
-
-
- Geben Sie 1-64 Zeichen ein
-
-
-
- last name of the logged-in profile - header
- Nachname
-
-
-
- Geben Sie 0-64 Zeichen ein
-
-
-
- user name of the logged-in profile - header
- Benutzername
-
Chateinladungen erlauben
@@ -1690,56 +1680,81 @@
Privatsphären-Einstellung zur Regelung, ob Ihr Onlinestatus sichtbar ist.
-
- Bild hinzufügen
+
+ Erlaubt Standortsendung an Inline-Bots
+
+
+
+ Einige Inline-Bots fragen bei Nutzung Standortdaten an
+
+
+
+ SettingsStorage
+
+
+ Speicher
+
+
+
+ Nur-Online-Modus einschalten
+
+
+
+ Schaltet das Offline-Caching aus. Bestimmte Features können in diesem Modus eingeschränkt sein oder fehlen. Änderungen erfordern einen Neustart von Fernschreiber, um in Kraft zu treten.
+
+
+
+ Speicheroptimierer einschalten
+
+
+
+ SettingsUserProfile
+
+
+ Nutzungsprofil
+
+
+
+ first name of the logged-in profile - header
+ Vorname
+
+
+
+ Geben Sie 1-64 Zeichen ein
+
+
+
+ last name of the logged-in profile - header
+ Nachname
+
+
+
+ Geben Sie 0-64 Zeichen ein
+
+
+
+ user name of the logged-in profile - header
+ Benutzername
Profilbilder
-
- Bild löschen
+
+ Bild hinzufügen
-
- Lade hoch...
+
+ Bild löschen
Lösche Profilbild
-
- Hinweistöne einschalten
-
-
-
- Wenn Töne eingeschaltet sind, wird Fernschreiber den aktuellen Sailfish OS-Hinweiston für Chats verwenden, der in den Systemeinstellungen konfiguriert werden kann.
-
-
-
- Verzögerung bevor Nachrichten als gelesen markiert werden
-
-
-
- Fernschreiber wird ein bisschen warten, bevor Nachrichten als gelesen markiert werden
-
-
-
- Texteingabe fokussieren, wenn ein Chat betreten wird
-
-
-
- Texteingabe fokussieren beim Öffnen eines Chats
-
-
-
- Sticker als Emojis anzeigen
-
-
-
- Nur Emojis anstelle der eigentlichen Sticker anzeigen
+
+ Lade hoch...
diff --git a/translations/harbour-fernschreiber-en.ts b/translations/harbour-fernschreiber-en.ts
index 6ec8ac2..aca08b4 100644
--- a/translations/harbour-fernschreiber-en.ts
+++ b/translations/harbour-fernschreiber-en.ts
@@ -1503,11 +1503,34 @@ messages
- SettingsPage
+ SettingsAppearance
-
- Settings
+
+ Appearance
+
+
+ Show stickers as emojis
+
+
+
+ Only display emojis instead of the actual stickers
+
+
+
+ Show stickers as images
+
+
+
+ Show background for stickers and align them centrally like images
+
+
+
+ Animate stickers
+
+
+
+ SettingsBehavior
Behavior
@@ -1521,21 +1544,45 @@ messages
Send your message by pressing the enter key
-
- Appearance
+
+ Focus text input on chat open
-
- Show stickers as images
+
+ Focus the text input area when entering a chat
-
- Show background for stickers and align them centrally like images
+
+ Focus text input area after send
+
+
+
+ Focus the text input area after sending a message
+
+
+
+ Delay before marking messages as read
+
+
+
+ Fernschreiber will wait a bit before messages are marked as read
+
+
+
+ Open-with menu integration
+
+
+
+ Integrate Fernschreiber into open-with menu of Sailfish OS
Notification feedback
+
+
+ Use non-graphical feedback (sound, vibration) for notifications
+
All events
@@ -1548,89 +1595,32 @@ messages
None
-
-
- Use non-graphical feedback (sound, vibration) for notifications
-
-
-
- Open-with menu integration
-
-
-
- Integrate Fernschreiber into open-with menu of Sailfish OS
-
-
-
- Animate stickers
-
Notification turns on the display
-
- Storage
+
+ Enable notification sounds
-
- Enable storage optimizer
+
+ When sounds are enabled, Fernschreiber will use the current Sailfish OS notification sound for chats, which can be configured in the system settings.
+
+
+ SettingsPage
-
- Focus text input area after send
-
-
-
- Focus the text input area after sending a message
-
-
-
- Enable online-only mode
-
-
-
- Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.
+
+ Settings
+
+
+ SettingsPrivacy
Privacy
-
-
- Allow sending Location to inline bots
-
-
-
- Some inline bots request location data when using them
-
-
-
- User Profile
-
-
-
- first name of the logged-in profile - header
- First Name
-
-
-
- Enter 1-64 characters
-
-
-
- last name of the logged-in profile - header
- Last Name
-
-
-
- Enter 0-64 characters
-
-
-
- user name of the logged-in profile - header
- Username
-
Allow chat invites
@@ -1692,56 +1682,81 @@ messages
Privacy setting for managing whether your online status is visible.
-
- Add Picture
+
+ Allow sending Location to inline bots
+
+
+
+ Some inline bots request location data when using them
+
+
+
+ SettingsStorage
+
+
+ Storage
+
+
+
+ Enable online-only mode
+
+
+
+ Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.
+
+
+
+ Enable storage optimizer
+
+
+
+ SettingsUserProfile
+
+
+ User Profile
+
+
+
+ first name of the logged-in profile - header
+ First Name
+
+
+
+ Enter 1-64 characters
+
+
+
+ last name of the logged-in profile - header
+ Last Name
+
+
+
+ Enter 0-64 characters
+
+
+
+ user name of the logged-in profile - header
+ Username
Profile Pictures
-
- Delete Picture
+
+ Add Picture
-
- Uploading...
+
+ Delete Picture
Deleting profile picture
-
- Enable notification sounds
-
-
-
- When sounds are enabled, Fernschreiber will use the current Sailfish OS notification sound for chats, which can be configured in the system settings.
-
-
-
- Delay before marking messages as read
-
-
-
- Fernschreiber will wait a bit before messages are marked as read
-
-
-
- Focus the text input area when entering a chat
-
-
-
- Focus text input on chat open
-
-
-
- Show stickers as emojis
-
-
-
- Only display emojis instead of the actual stickers
+
+ Uploading...
diff --git a/translations/harbour-fernschreiber-es.ts b/translations/harbour-fernschreiber-es.ts
index b515a81..fe7de69 100644
--- a/translations/harbour-fernschreiber-es.ts
+++ b/translations/harbour-fernschreiber-es.ts
@@ -1501,11 +1501,34 @@
- SettingsPage
+ SettingsAppearance
-
- Ajustes
+
+ Apariencia
+
+
+
+
+
+
+
+
+
+
+ Mostrar pegatinas como imágenes
+
+
+
+ Muestra un fondo para pegatinas y las alinea como imágenes
+
+
+
+ Mostrar pegatinas animadas
+
+
+
+ SettingsBehavior
Comportamiento
@@ -1519,21 +1542,45 @@
Envía el mensajes pulsando la tecla Entrar
-
- Apariencia
+
+
-
- Mostrar pegatinas como imágenes
+
+
-
- Muestra un fondo para pegatinas y las alinea como imágenes
+
+ Enfocar área de entrada de texto
+
+
+
+ Enfoca el área de entrada de texto después de enviar un mensaje
+
+
+
+ Marcar mensajes como leídos
+
+
+
+ Si esta habilitado, la apl espera un segundo hasta que un mensaje que está en la pantalla se marque como leído. Si deshabilitas esta función, los mensajes se marcarán inmediatamente como leído una vez que esté en la pantalla sin desplazarse al mensaje
+
+
+
+ Integrar la opción Abrir-con
+
+
+
+ Fernschreiber usa la opción abrir-con de Sailfish SO
Notificar en
+
+
+ Usa comentarios no gráficos (sonido, vibración) para las notificaciones
+
Eventos
@@ -1544,44 +1591,109 @@
- Ninguno
-
-
-
- Usa comentarios no gráficos (sonido, vibración) para las notificaciones
-
-
-
- Integrar la opción Abrir-con
-
-
-
- Fernschreiber usa la opción abrir-con de Sailfish SO
-
-
-
- Mostrar pegatinas animadas
+ Ninguno
Mostrar notificación por pantalla
+
+
+ Habilitar sonidos de notificación
+
+
+
+ Cuando los sonidos están habilitados, Fernschreiber utilizará el sonido de notificación actual de Sailfish OS para los grupos, que se puede configurar en la configuración del sistema.
+
+
+
+ SettingsPage
+
+
+ Ajustes
+
+
+
+ SettingsPrivacy
+
+
+ Privacidad
+
+
+
+ Permitir invitaciones de grupo
+
+
+
+ Configuración de privacidad para administrar si puede ser invitado a grupos.
+
+
+
+ Si
+
+
+
+ Solo contactos
+
+
+
+ No
+
+
+
+ Permitir buscarme por número
+
+
+
+ Configuración de privacidad para administrar si puede ser encontrado por su número de teléfono.
+
+
+
+ Mostrar enlace en mensajes reenviados
+
+
+
+ Configuración de privacidad para administrar si un enlace de la cuenta está incluido en los mensajes reenviados.
+
+
+
+ Mostrar número telefónico
+
+
+
+ Configuración de privacidad para administrar si su número de teléfono es visible.
+
+
+
+ Mostrar foto de perfil
+
+
+
+ Configuración de privacidad para administrar si la foto de perfil es visible.
+
+
+
+ Mostrar estado
+
+
+
+ Configuración de privacidad para administrar si el estado en línea es visible.
+
+
+
+ Enviar ubicación a bots en línea
+
+
+
+ Algunos bots en línea solicitan datos de ubicación cuando los usan
+
+
+
+ SettingsStorage
Almacenamiento
-
-
- Optimizador de almacenamiento
-
-
-
- Enfocar área de entrada de texto
-
-
-
- Enfoca el área de entrada de texto después de enviar un mensaje
-
Modo solo en línea
@@ -1591,17 +1703,12 @@
Deshabilita el almacenamiento en caché sin conexión. Algunas funciones pueden estar limitadas o ausentes en este modo. Se requiere reiniciar Fernschreiber para su efecto.
-
- Privacidad
-
-
-
- Enviar ubicación a bots en línea
-
-
-
- Algunos bots en línea solicitan datos de ubicación cuando los usan
+
+ Optimizador de almacenamiento
+
+
+ SettingsUserProfile
Perfil de usuario
@@ -1627,119 +1734,27 @@
user name of the logged-in profile - header
- Usuario
-
-
-
- Permitir invitaciones de grupo
-
-
-
- Configuración de privacidad para administrar si puede ser invitado a grupos.
-
-
-
- Si
-
-
-
- Solo contactos
-
-
-
- No
-
-
-
- Permitir buscarme por número
-
-
-
- Configuración de privacidad para administrar si puede ser encontrado por su número de teléfono.
-
-
-
- Mostrar enlace en mensajes reenviados
-
-
-
- Configuración de privacidad para administrar si un enlace de la cuenta está incluido en los mensajes reenviados.
-
-
-
- Mostrar número telefónico
-
-
-
- Configuración de privacidad para administrar si su número de teléfono es visible.
-
-
-
- Mostrar foto de perfil
-
-
-
- Configuración de privacidad para administrar si la foto de perfil es visible.
-
-
-
- Mostrar estado
-
-
-
- Configuración de privacidad para administrar si el estado en línea es visible.
-
-
-
- Agregar imagen
+ Usuario
Perfil de imagen
-
- Borrar imagen
+
+ Agregar imagen
-
- Subiendo...
+
+ Borrar imagen
Borrando la imagen de perfil
-
- Habilitar sonidos de notificación
-
-
-
- Cuando los sonidos están habilitados, Fernschreiber utilizará el sonido de notificación actual de Sailfish OS para los grupos, que se puede configurar en la configuración del sistema.
-
-
-
- Marcar mensajes como leídos
-
-
-
- Si esta habilitado, la apl espera un segundo hasta que un mensaje que está en la pantalla se marque como leído. Si deshabilitas esta función, los mensajes se marcarán inmediatamente como leído una vez que esté en la pantalla sin desplazarse al mensaje
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ Subiendo...
diff --git a/translations/harbour-fernschreiber-fi.ts b/translations/harbour-fernschreiber-fi.ts
index 71ba985..eb6c5cf 100644
--- a/translations/harbour-fernschreiber-fi.ts
+++ b/translations/harbour-fernschreiber-fi.ts
@@ -1502,11 +1502,34 @@
- SettingsPage
+ SettingsAppearance
-
- Asetukset
+
+ Ulkoasu
+
+
+
+
+
+
+
+
+
+
+ Näytä tarrat kuvina
+
+
+
+ Näytä tarroissa tausta ja keskitä ne kuten kuvat
+
+
+
+ Animoi tarrat
+
+
+
+ SettingsBehavior
Toiminta
@@ -1520,21 +1543,45 @@
Lähetä viestisi painamalla rivinvaihtonäppäintä (enter)
-
- Ulkoasu
+
+
-
- Näytä tarrat kuvina
+
+
-
- Näytä tarroissa tausta ja keskitä ne kuten kuvat
+
+ Kohdista tekstinsyöttökenttä lähetyksen jälkeen
+
+
+
+ Kohdista tekstinsyöttökenttä viestin lähetyksen jälkeen
+
+
+
+ Viive viestien merkitsemisessä luetuksi
+
+
+
+ Fernschreiber odottaa hetken ennen kuin viestit merkitään luetuiksi
+
+
+
+ Avaa sovelluksessa ‑integraatio
+
+
+
+ Sisällytä Fernschreiber Sailfish OS:n avaa sovelluksella ‑valikkoon
Ilmoitusten palaute
+
+
+ Käytä ei-graafista palautetta (ääni, värinä) ilmoituksille
+
Kaikki tapahtumat
@@ -1547,89 +1594,32 @@
Ei mitään
-
-
- Käytä ei-graafista palautetta (ääni, värinä) ilmoituksille
-
-
-
- Avaa sovelluksessa ‑integraatio
-
-
-
- Sisällytä Fernschreiber Sailfish OS:n avaa sovelluksella ‑valikkoon
-
-
-
- Animoi tarrat
-
Ilmoitus kytkee näytön päälle
-
- Tallennustila
+
+ Käytä äänimerkkejä
-
- Käytä tallennustilan optimointia
+
+ Kun äänet ovat käytössä, Fernschreiber käyttää Sailfish OS:n ilmoitusääniä keskusteluille, jotia voit muuttaa järjestelmäasetuksista.
+
+
+ SettingsPage
-
- Kohdista tekstinsyöttökenttä lähetyksen jälkeen
-
-
-
- Kohdista tekstinsyöttökenttä viestin lähetyksen jälkeen
-
-
-
- Älä käytä välimuistia
-
-
-
- Estää tietojen tallennuksen välimuistiin. Jotkin sovelluksen ominaisuudet voivat olla rajoitettuja tai poistettu käytöstä tässä tilassa. Muutos vaatii Fernschreiberin uudelleenkäynnistyksen.
+
+ Asetukset
+
+
+ SettingsPrivacy
Yksityisyys
-
-
- Salli sijainnin lähettäminen upotetuille boteille
-
-
-
- Jotkin viestinsyöttöriville upotetut botit pyytävät sijaintitietoja niitä käytettäessä
-
-
-
- Käyttäjäprofiili
-
-
-
- first name of the logged-in profile - header
- Etunimi
-
-
-
- Syötä 1-64 merkkiä
-
-
-
- last name of the logged-in profile - header
- Sukunimi
-
-
-
- Syötä 1-64 merkkiä
-
-
-
- user name of the logged-in profile - header
- Käyttäjätunnus
-
Salli keskustelukutsut
@@ -1688,59 +1678,84 @@
- Yksityisyysasetus joka määrittää näytetäänkö muille käyttäjille kun olet online-tilassa
+ Yksityisyysasetus joka määrittää näytetäänkö muille käyttäjille kun olet online-tilassa.
-
- Lisää kuva
+
+ Salli sijainnin lähettäminen upotetuille boteille
+
+
+
+ Jotkin viestinsyöttöriville upotetut botit pyytävät sijaintitietoja niitä käytettäessä
+
+
+
+ SettingsStorage
+
+
+ Tallennustila
+
+
+
+ Älä käytä välimuistia
+
+
+
+ Estää tietojen tallennuksen välimuistiin. Jotkin sovelluksen ominaisuudet voivat olla rajoitettuja tai poistettu käytöstä tässä tilassa. Muutos vaatii Fernschreiberin uudelleenkäynnistyksen.
+
+
+
+ Käytä tallennustilan optimointia
+
+
+
+ SettingsUserProfile
+
+
+ Käyttäjäprofiili
+
+
+
+ first name of the logged-in profile - header
+ Etunimi
+
+
+
+ Syötä 1-64 merkkiä
+
+
+
+ last name of the logged-in profile - header
+ Sukunimi
+
+
+
+ Syötä 1-64 merkkiä
+
+
+
+ user name of the logged-in profile - header
+ Käyttäjätunnus
Profiilikuvat
-
- Poista kuva
+
+ Lisää kuva
-
- Lähetetään...
+
+ Poista kuva
Poistetaan profiilikuvaa
-
- Käytä äänimerkkejä
-
-
-
- Kun äänet ovat käytössä, Fernschreiber käyttää Sailfish OS:n ilmoitusääniä keskusteluille, jotia voit muuttaa järjestelmäasetuksista.
-
-
-
- Viive viestien merkitsemisessä luetuksi
-
-
-
- Fernschreiber odottaa hetken ennen kuin viestit merkitään luetuiksi
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ Lähetetään...
diff --git a/translations/harbour-fernschreiber-hu.ts b/translations/harbour-fernschreiber-hu.ts
index 200c297..b217643 100644
--- a/translations/harbour-fernschreiber-hu.ts
+++ b/translations/harbour-fernschreiber-hu.ts
@@ -1,6 +1,6 @@
-
+
AboutPage
@@ -1474,11 +1474,34 @@
- SettingsPage
+ SettingsAppearance
-
- Beállítások
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SettingsBehavior
Működés
@@ -1492,21 +1515,45 @@
Üzenet küldése az enter gomb lenyomásával
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1519,89 +1566,32 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
+
+
+ SettingsPage
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ Beállítások
+
+
+ SettingsPrivacy
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- first name of the logged-in profile - header
-
-
-
-
-
-
-
-
- last name of the logged-in profile - header
-
-
-
-
-
-
-
-
- user name of the logged-in profile - header
-
-
@@ -1663,7 +1653,60 @@
-
+
+
+
+
+
+
+
+
+
+ SettingsStorage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SettingsUserProfile
+
+
+
+
+
+
+ first name of the logged-in profile - header
+
+
+
+
+
+
+
+
+ last name of the logged-in profile - header
+
+
+
+
+
+
+
+
+ user name of the logged-in profile - header
@@ -1671,11 +1714,11 @@
-
+
-
+
@@ -1683,35 +1726,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/translations/harbour-fernschreiber-it.ts b/translations/harbour-fernschreiber-it.ts
index 31fc4c7..cf3d994 100644
--- a/translations/harbour-fernschreiber-it.ts
+++ b/translations/harbour-fernschreiber-it.ts
@@ -1501,11 +1501,34 @@
- SettingsPage
+ SettingsAppearance
-
- Impostazioni
+
+ Aspetto
+
+
+
+
+
+
+
+
+
+
+ Mostra sticker come immagini
+
+
+
+ Mostra sfondo per gli sticker e centrali come le immagini
+
+
+
+ Riproduci sticker animati
+
+
+
+ SettingsBehavior
Comportamento
@@ -1519,21 +1542,45 @@
Invia il tuo messaggio con il tasto invio
-
- Aspetto
+
+
-
- Mostra sticker come immagini
+
+
-
- Mostra sfondo per gli sticker e centrali come le immagini
+
+ Tastiera in primo piano dopo invio
+
+
+
+ Mantieni la tastiera in primo piano dopo aver inviato un messaggio
+
+
+
+ Attendi prima di segnare i messaggi come già letti
+
+
+
+ Fernschreiber attende un attimo prima di segnare i messaggi come già letti
+
+
+
+ Integrazione menù Apri con
+
+
+
+ Aggiungi Fernschreiber al menù Apri con di Sailfish OS
Feedback notifiche
+
+
+ Usa feedback non visuale come suoni e/o vibrazione per le notifiche
+
Tutti gli eventi
@@ -1546,42 +1593,107 @@
Nessuno
-
-
- Usa feedback non visuale come suoni e/o vibrazione per le notifiche
-
-
-
- Integrazione menù Apri con
-
-
-
- Aggiungi Fernschreiber al menù Apri con di Sailfish OS
-
-
-
- Riproduci sticker animati
-
Notifiche attivano il display
+
+
+ Abilita suoni notifiche
+
+
+
+ Quando i suoni di notifica sono attivi, Fernschreiber utilizza l'attuale suono di notifica per i messaggi scelto per Sailfish OS, il quale può essere modificato dalle impostazioni di sistema.
+
+
+
+ SettingsPage
+
+
+ Impostazioni
+
+
+
+ SettingsPrivacy
+
+
+ Privacy
+
+
+
+ Consenti inviti chat
+
+
+
+ Impostazione per consentire di essere invitato in una chat.
+
+
+
+ Si
+
+
+
+ Solo tuoi contatti
+
+
+
+ No
+
+
+
+ Consenti ricerca con il tuo numero di telefono
+
+
+
+ Impostazione per consentire di essere trovato con il tuo numero di telefono.
+
+
+
+ Mostra link nei messaggi inoltrati
+
+
+
+ Impostazione per consentire di inserire un link al tuo account quando vengono inoltrati i tuoi messaggi.
+
+
+
+ Mostra il tuo numero
+
+
+
+ Indica chi può vedere il tuo numero di telefono.
+
+
+
+ Mostra foto del profilo
+
+
+
+ Impostazioni per gestire chi può vedere la tua foto del profilo.
+
+
+
+ Mostra stato
+
+
+
+ Impostazioni per rendere visibile il tuo ultimo accesso con precisione.
+
+
+
+ Consenti di inviare la posizione a inline bot
+
+
+
+ Alcuni inline bot richiedono la tua posizione mentre li usi
+
+
+
+ SettingsStorage
Memoria
-
-
- Abilita ottimizzazione memoria
-
-
-
- Tastiera in primo piano dopo invio
-
-
-
- Mantieni la tastiera in primo piano dopo aver inviato un messaggio
-
Abilita modalità solo online
@@ -1591,17 +1703,12 @@
Disabilita offline caching. Alcune funzionalità potrebbero non essere presenti in questa modalità. Riavvia Fernschreiber per rendere attive le modifiche.
-
- Privacy
-
-
-
- Consenti di inviare la posizione a inline bot
-
-
-
- Alcuni inline bot richiedono la tua posizione mentre li usi
+
+ Abilita ottimizzazione memoria
+
+
+ SettingsUserProfile
Profilo utente
@@ -1630,116 +1737,24 @@
Nome utente
-
- Consenti inviti chat
-
-
-
- Impostazione per consentire di essere invitato in una chat
-
-
-
- Si
-
-
-
- Solo tuoi contatti
-
-
-
- No
-
-
-
- Consenti ricerca con il tuo numero di telefono
-
-
-
- Impostazione per consentire di essere trovato con il tuo numero di telefono
-
-
-
- Mostra link nei messaggi inoltrati
-
-
-
- Impostazione per consentire di inserire un link al tuo account quando vengono inoltrati i tuoi messaggi
-
-
-
- Mostra il tuo numero
-
-
-
- Indica chi può vedere il tuo numero di telefono
-
-
-
- Mostra foto del profilo
-
-
-
- Impostazioni per gestire chi può vedere la tua foto del profilo
-
-
-
- Mostra stato
-
-
-
- Impostazioni per rendere visibile il tuo ultimo accesso con precisione
+
+ Foto del profilo
Aggiungi foto
-
-
- Foto del profilo
-
Elimina foto
-
-
- Carica...
-
Elimina foto del profilo
-
- Abilita suoni notifiche
-
-
-
- Quando i suoni di notifica sono attivi, Fernschreiber utilizza l'attuale suono di notifica per i messaggi scelto per Sailfish OS, il quale può essere modificato dalle impostazioni di sistema.
-
-
-
- Attendi prima di segnare i messaggi come già letti
-
-
-
- Fernschreiber attende un attimo prima di segnare i messaggi come già letti
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ Carica...
diff --git a/translations/harbour-fernschreiber-pl.ts b/translations/harbour-fernschreiber-pl.ts
index f257c65..bfbb223 100644
--- a/translations/harbour-fernschreiber-pl.ts
+++ b/translations/harbour-fernschreiber-pl.ts
@@ -1528,11 +1528,34 @@
- SettingsPage
+ SettingsAppearance
-
- Ustawienia
+
+ Wygląd
+
+
+ Pokaż naklejki jako emoji
+
+
+
+ Pokaż tylko emoji zamiast najklejek
+
+
+
+ Pokaż naklejki jako obrazy
+
+
+
+ Pokaż tło naklejek i wyrównaj je centralnie, jak obrazy
+
+
+
+ Animowane naklejki
+
+
+
+ SettingsBehavior
Zachowanie
@@ -1546,21 +1569,45 @@
Wyślij wiadomość przez naciśniecie przycisku enter
-
- Wygląd
+
+
-
- Pokaż naklejki jako obrazy
+
+
-
- Pokaż tło naklejek i wyrównaj je centralnie, jak obrazy
+
+ Po wysłaniu zaznacz pole wprowadzania tekstu
+
+
+
+ Po wysłaniu wiadomości zaznacz pole wprowadzania tekstu
+
+
+
+ Opóźnienie przed oznaczeniem wiadomości jako przeczytanych
+
+
+
+ Fernschreiber odczeka chwilę, zanim wiadomości zostaną oznaczone jako przeczytane
+
+
+
+ Integracja z menu "otwórz za pomocą"
+
+
+
+ Zintegruj Fernschreiber z menu "otwórz za pomocą" w SailfishOS
Rodzaj powiadomienia
+
+
+ Użyj niewizualnych powiadomień (dźwięk, wibracja)
+
Wszystkie wydarzenia
@@ -1573,62 +1620,122 @@
Żadne
-
-
- Użyj niewizualnych powiadomień (dźwięk, wibracja)
-
-
-
- Integracja z menu "otwórz za pomocą"
-
-
-
- Zintegruj Fernschreiber z menu "otwórz za pomocą" w SailfishOS
-
-
-
- Animowane naklejki
-
Powiadomienie włącza wyświetlacz
-
- Pamięć
+
+ Włącz dźwięk powiadomień
-
- Włącz optymalizację pamięci
+
+ Gdy dźwięki są włączone, Fernschreiber użyje bieżącego dźwięku powiadomienia Sailfish OS do czatów, które można skonfigurować w ustawieniach systemu.
+
+
+ SettingsPage
-
- Po wysłaniu zaznacz pole wprowadzania tekstu
-
-
-
- Po wysłaniu wiadomości zaznacz pole wprowadzania tekstu
-
-
-
- Włącz tryb tylko online
-
-
-
- Wyłącza buforowanie offline. W tym trybie niektóre funkcje mogą być ograniczone lub może ich brakować. Zmiany wymagają ponownego uruchomienia Fernschreibera, aby odniosły skutek.
+
+ Ustawienia
+
+
+ SettingsPrivacy
Prywatność
+
+
+ Zezwól na zaproszenia do czatu
+
+
+
+ Ustawienia prywatności umożliwiające zarządzanie zaproszeniami do czatów.
+
+
+
+ Tak
+
+
+
+ Tylko twoje kontakty
+
+
+
+ Nie
+
+
+
+ Pozwól na wyszukiwanie po numerze telefonu
+
+
+
+ Ustawienie prywatności umożliwiające określenie, czy można Cię znaleźć według numeru telefonu.
+
+
+
+ Pokaż odnośnik w przekazanych wiadomościach
+
+
+
+ Ustawienie prywatności umożliwiające okreslenie, czy odnośnik do twojego konta jest dodawany do przekazanych wiadomości.
+
+
+
+ Pokaż numer telefonu
+
+
+
+ Ustawienie prywatności umożliwiające określenie, czy Twój numer telefonu jest widoczny.
+
+
+
+ Pokaż zdjęcie profilowe
+
+
+
+ Ustawienie prywatności umożliwiające określenie, czy Twoje zdjęcie profilowe jest widoczne.
+
+
+
+ Pokaż status
+
+
+
+ Ustawienie prywatności umożliwiające zarządzanie widocznością statusu online.
+
Zezwalaj na wysyłanie lokalizacji do wbudowanych botów
- Niektóre roboty wbudowane żądają danych o lokalizacji podczas ich używania
+ Niektóre roboty wbudowane żądają danych o lokalizacji podczas ich używania
+
+
+ SettingsStorage
+
+
+ Pamięć
+
+
+
+ Włącz tryb tylko online
+
+
+
+ Wyłącza buforowanie offline. W tym trybie niektóre funkcje mogą być ograniczone lub może ich brakować. Zmiany wymagają ponownego uruchomienia Fernschreibera, aby odniosły skutek.
+
+
+
+ Włącz optymalizację pamięci
+
+
+
+ SettingsUserProfile
Profil użytkownika
@@ -1657,116 +1764,24 @@
Nazwa użytkownika
-
- Zezwól na zaproszenia do czatu
-
-
-
- Ustawienia prywatności umożliwiające zarządzanie zaproszeniami do czatów.
-
-
-
- Tak
-
-
-
- Tylko twoje kontakty
-
-
-
- Nie
-
-
-
- Pozwól na wyszukiwanie po numerze telefonu
-
-
-
- Ustawienie prywatności umożliwiające określenie, czy można Cię znaleźć według numeru telefonu.
-
-
-
- Pokaż odnośnik w przekazanych wiadomościach
-
-
-
- Ustawienie prywatności umożliwiające okreslenie, czy odnośnik do twojego konta jest dodawany do przekazanych wiadomości
-
-
-
- Pokaż numer telefonu
-
-
-
- Ustawienie prywatności umożliwiające określenie, czy Twój numer telefonu jest widoczny.
-
-
-
- Pokaż zdjęcie profilowe
-
-
-
- Ustawienie prywatności umożliwiające określenie, czy Twoje zdjęcie profilowe jest widoczne.
-
-
-
- Pokaż status
-
-
-
- Ustawienie prywatności umożliwiające zarządzanie widocznością statusu online.
+
+ Zdjęcia profilowe
Dodaj zdjęcie
-
-
- Zdjęcia profilowe
-
usuń zdjęcie
-
-
- Przesyłanie...
-
Usuwanie zjęcia profilowego
-
- Włącz dźwięk powiadomień
-
-
-
- Gdy dźwięki są włączone, Fernschreiber użyje bieżącego dźwięku powiadomienia Sailfish OS do czatów, które można skonfigurować w ustawieniach systemu.
-
-
-
- Opóźnienie przed oznaczeniem wiadomości jako przeczytanych
-
-
-
- Fernschreiber odczeka chwilę, zanim wiadomości zostaną oznaczone jako przeczytane
-
-
-
-
-
-
-
-
-
-
-
- Pokaż naklejki jako emoji
-
-
-
- Pokaż tylko emoji zamiast najklejek
+
+ Przesyłanie...
diff --git a/translations/harbour-fernschreiber-ru.ts b/translations/harbour-fernschreiber-ru.ts
index b9e9b25..6549fee 100644
--- a/translations/harbour-fernschreiber-ru.ts
+++ b/translations/harbour-fernschreiber-ru.ts
@@ -1531,11 +1531,34 @@
- SettingsPage
+ SettingsAppearance
-
- Настройки
+
+ Внешний вид
+
+
+ Эмодзи вместо стикеров
+
+
+
+ Показывать только эмодзи при отображении актуальных стикеров
+
+
+
+ Показывать стикеры как обычные изображения
+
+
+
+ То есть рисовать под ними фон и позиционировать по центру.
+
+
+
+ Анимировать стикеры
+
+
+
+ SettingsBehavior
Поведение
@@ -1549,21 +1572,45 @@
Тогда клавиша ввода на клавиатуре будет отправлять сообщение, а не переносить строку.
-
- Внешний вид
+
+ При открытии чата фокусироваться на поле ввода текста
-
- Показывать стикеры как обычные изображения
+
+ Приоритет фокусировки при открытии чата
-
- То есть рисовать под ними фон и позиционировать по центру.
+
+ Приоритет фокусировки при разговоре в чате
+
+
+
+ Сфокусироваться на поле ввода текста после отправки сообщения
+
+
+
+ Задержка перед отметкой о прочтении
+
+
+
+ Fernschreiber может отмечать сообщения как прочитанные с некоторой задержкой, а не сразу как только они показываются на экране.
+
+
+
+ Меню "открыть с помощью"
+
+
+
+ Встроить Fernschreiber в системное меню "открыть с помощью"
Уведомления
+
+
+ Сопровождать уведомления звуками и вибрацией.
+
На каждое событие
@@ -1576,89 +1623,32 @@
Никогда
-
-
- Сопровождать уведомления звуками и вибрацией.
-
-
-
- Меню "открыть с помощью"
-
-
-
- Встроить Fernschreiber в системное меню "открыть с помощью"
-
-
-
- Анимировать стикеры
-
Уведомления включают дисплей
-
- Хранилище
+
+ Уведомления издают звук
-
- Включить оптимизацию хранилища
+
+ Если звуки разрешены, Fernschreiber использует звук, выбранный для чатов в настройках Sailfish OS.
+
+
+ SettingsPage
-
- Приоритет фокусировки при разговоре в чате
-
-
-
- Сфокусироваться на поле ввода текста после отправки сообщения
-
-
-
- Включить режим "только онлайн"
-
-
-
- В этом режиме не будет использоваться кэширование и некоторые функции могут быть ограничены или отсутствовать. Изменения вступят в силу после перезапуска Fernschreiber.
+
+ Настройки
+
+
+ SettingsPrivacy
Приватность
-
-
- Отправлять мои координаты инлайн-ботам
-
-
-
- Некоторые инлайн-боты просят отправить свои координаты при обращении к ним
-
-
-
- Профиль
-
-
-
- first name of the logged-in profile - header
- Имя
-
-
-
- Введите 1-64 символа
-
-
-
- last name of the logged-in profile - header
- Фамилия
-
-
-
- Введите 0-64 символа
-
-
-
- user name of the logged-in profile - header
- Ник
-
Разрешить приглашения в чаты
@@ -1720,56 +1710,81 @@
Виден ли мой статус другим пользователям.
-
- Добавить
+
+ Отправлять мои координаты инлайн-ботам
+
+
+
+ Некоторые инлайн-боты просят отправить свои координаты при обращении к ним
+
+
+
+ SettingsStorage
+
+
+ Хранилище
+
+
+
+ Включить режим "только онлайн"
+
+
+
+ В этом режиме не будет использоваться кэширование и некоторые функции могут быть ограничены или отсутствовать. Изменения вступят в силу после перезапуска Fernschreiber.
+
+
+
+ Включить оптимизацию хранилища
+
+
+
+ SettingsUserProfile
+
+
+ Профиль
+
+
+
+ first name of the logged-in profile - header
+ Имя
+
+
+
+ Введите 1-64 символа
+
+
+
+ last name of the logged-in profile - header
+ Фамилия
+
+
+
+ Введите 0-64 символа
+
+
+
+ user name of the logged-in profile - header
+ Ник
Картинки профиля
-
- Удалить
+
+ Добавить
-
- Отправка...
+
+ Удалить
Удаление картинки из профиля
-
- Уведомления издают звук
-
-
-
- Если звуки разрешены, Fernschreiber использует звук, выбранный для чатов в настройках Sailfish OS.
-
-
-
- Задержка перед отметкой о прочтении
-
-
-
- Fernschreiber может отмечать сообщения как прочитанные с некоторой задержкой, а не сразу как только они показываются на экране.
-
-
-
- Приоритет фокусировки при открытии чата
-
-
-
- При открытии чата фокусироваться на поле ввода текста
-
-
-
- Эмодзи вместо стикеров
-
-
-
- Показывать только эмодзи при отображении актуальных стикеров
+
+ Отправка...
diff --git a/translations/harbour-fernschreiber-sk.ts b/translations/harbour-fernschreiber-sk.ts
index 90a0bec..4342e73 100644
--- a/translations/harbour-fernschreiber-sk.ts
+++ b/translations/harbour-fernschreiber-sk.ts
@@ -1528,11 +1528,34 @@
- SettingsPage
+ SettingsAppearance
-
- Nastavenia
+
+ Vzhľad
+
+
+ Nálepky zobraziť ako emotikony
+
+
+
+ Namiesto nálepiek zobrazovať emotikony
+
+
+
+ Zobraziť nálepky ako obrázky
+
+
+
+ Zobraziť pozadie pre nálepky a vycentrovať ich ako obrázky
+
+
+
+ Animované nálepky
+
+
+
+ SettingsBehavior
Správanie
@@ -1546,21 +1569,45 @@
Správu odošlite stlačením klávesu Enter
-
- Vzhľad
+
+ Pri otvorení četu aktivovať vstupné pole
-
- Zobraziť nálepky ako obrázky
+
+ Pri vstupe do četu aktivovať vstupné pole
-
- Zobraziť pozadie pre nálepky a vycentrovať ich ako obrázky
+
+ Po odoslaní aktivovať vkladanie textu
+
+
+
+ Po odoslaní správy aktivovať vkladanie textu
+
+
+
+ Oneskorenie pred označením správ ako prečítaných
+
+
+
+ Fernschreiber chvíľu počká, kým budú správy označené ako prečítané
+
+
+
+ Zaradiť do ponuky "otvoriť pomocou"
+
+
+
+ Fernschreiber zaradiť do ponuky Sailfish OS "otvoriť pomocou"
Reakcia oznámenia
+
+
+ Pre upozornenia použiť negrafickú reakciu (zvuk, vibrovanie)
+
Všetky udalosti
@@ -1573,109 +1620,32 @@
Žiadne
-
-
- Pre upozornenia použiť negrafickú reakciu (zvuk, vibrovanie)
-
-
-
- Zaradiť do ponuky "otvoriť pomocou"
-
-
-
- Fernschreiber zaradiť do ponuky Sailfish OS "otvoriť pomocou"
-
-
-
- Animované nálepky
-
Oznámenie zapne displej
-
- Pamäť
+
+ Povoliť zvukové upozornenia
-
- Povoliť optimalizátor pamäte
+
+ Keď sú povolené zvukové upozornenia, Fernschreiber použije aktuálne zvukové upozornenia Sailfish OS pre čety, ktoré môžu byť upravené v nastaveniach systému.
+
+
+ SettingsPage
-
- Po odoslaní aktivovať vkladanie textu
-
-
-
- Po odoslaní správy aktivovať vkladanie textu
-
-
-
- Povoliť režim "iba pripojený"
-
-
-
- Zakázať ukladanie do off-line vyrovnávacej pamäte. Niektoré funkcie môžu byť v tomto režime obmedzené alebo môžu chýbať. Zmeny sa prejavia až po reštartovaní Fernschreiber.
+
+ Nastavenia
+
+
+ SettingsPrivacy
Ochrana osobných údajov
-
-
- Povoliť odosielanie polohy inline robotom
-
-
-
- Niektorí inline roboti požadujú údaje o polohe ak ich používajú
-
-
-
- Profil používateľa
-
-
-
- first name of the logged-in profile - header
- Meno
-
-
-
- Zadať 1-64 znakov
-
-
-
- last name of the logged-in profile - header
- Priezvisko
-
-
-
- Zadať 0-64 znakov
-
-
-
- user name of the logged-in profile - header
- Prihlasovacie meno
-
-
-
- Profilová fotografia
-
-
-
- Pridať fotografiu
-
-
-
- Odstrániť fotografiu
-
-
-
- Odstraňovanie profilovej fotografie
-
-
-
- Zapisovanie...
-
Povoliť pozvánky do četu
@@ -1737,36 +1707,81 @@
Nastavenie ochrany súkromia pre možnosť zobrazenia Vášho statusu pripojenia.
-
- Povoliť zvukové upozornenia
+
+ Povoliť odosielanie polohy inline robotom
-
- Keď sú povolené zvukové upozornenia, Fernschreiber použije aktuálne zvukové upozornenia Sailfish OS pre čety, ktoré môžu byť upravené v nastaveniach systému.
+
+ Niektorí inline roboti požadujú údaje o polohe ak ich používajú
+
+
+
+ SettingsStorage
+
+
+ Pamäť
-
- Oneskorenie pred označením správ ako prečítaných
+
+ Povoliť režim "iba pripojený"
-
- Fernschreiber chvíľu počká, kým budú správy označené ako prečítané
+
+ Zakázať ukladanie do off-line vyrovnávacej pamäte. Niektoré funkcie môžu byť v tomto režime obmedzené alebo môžu chýbať. Zmeny sa prejavia až po reštartovaní Fernschreiber.
-
- Pri vstupe do četu aktivovať vstupné pole
+
+ Povoliť optimalizátor pamäte
+
+
+
+ SettingsUserProfile
+
+
+ Profil používateľa
-
- Pri otvorení četu aktivovať vstupné pole
+
+ first name of the logged-in profile - header
+ Meno
-
- Nálepky zobraziť ako emotikony
+
+ Zadať 1-64 znakov
-
- Namiesto nálepiek zobrazovať emotikony
+
+ last name of the logged-in profile - header
+ Priezvisko
+
+
+
+ Zadať 0-64 znakov
+
+
+
+ user name of the logged-in profile - header
+ Prihlasovacie meno
+
+
+
+ Profilová fotografia
+
+
+
+ Pridať fotografiu
+
+
+
+ Odstrániť fotografiu
+
+
+
+ Odstraňovanie profilovej fotografie
+
+
+
+ Zapisovanie...
diff --git a/translations/harbour-fernschreiber-sv.ts b/translations/harbour-fernschreiber-sv.ts
index 5ffa3ce..20c7557 100644
--- a/translations/harbour-fernschreiber-sv.ts
+++ b/translations/harbour-fernschreiber-sv.ts
@@ -1501,11 +1501,34 @@
- SettingsPage
+ SettingsAppearance
-
- Inställningar
+
+ Utseende
+
+
+ Visa dekaler som emoji
+
+
+
+ Visa bara emoji istället för de faktiska dekalerna
+
+
+
+ Visa dekaler som bilder
+
+
+
+ Visa bakgrund för dekaler och justera dem centralt som bilder
+
+
+
+ Animera dekaler
+
+
+
+ SettingsBehavior
Beteende
@@ -1519,21 +1542,45 @@
Skicka meddelanden genom att trycka på returtangenten
-
- Utseende
+
+ Fokusera textinmatningen vid chatt-öppning
-
- Visa dekaler som bilder
+
+ Fokusera textinmatningsområdet vid anslutning till en chatt
-
- Visa bakgrund för dekaler och justera dem centralt som bilder
+
+ Fokusera textinmatningsfältet efter sändning
+
+
+
+ Fokusera textinmatningsfältet efter att ett meddelande skickats
+
+
+
+ Fördröjning innan meddelanden markeras som lästa
+
+
+
+ Fernschreiber väntar en stund innan meddelanden markeras som lästa
+
+
+
+ Integrering av menyn "Öppna med"
+
+
+
+ Integrera Fernschreiber med menyn "Öppna med", i Sailfish OS
Aviseringsåterkoppling
+
+
+ Använd icke-grafisk återkoppling (ljud, vibration) för avisering
+
Alla händelser
@@ -1546,89 +1593,32 @@
Inget
-
-
- Använd icke-grafisk återkoppling (ljud, vibration) för avisering
-
-
-
- Integrering av menyn "Öppna med"
-
-
-
- Integrera Fernschreiber med menyn "Öppna med", i Sailfish OS
-
-
-
- Animera dekaler
-
Avisering tänder skärmen
-
- Lagring
+
+ Aktivera aviseringsljud
-
- Aktivera lagringsoptimering
+
+ När ljud är aktiverat, använder Fernschreiber aktuell Sailfish-signal för chatt-avisering, vilken kan ställas in i systemets ljudinställningar.
+
+
+ SettingsPage
-
- Fokusera textinmatningsfältet efter sändning
-
-
-
- Fokusera textinmatningsfältet efter att ett meddelande skickats
-
-
-
- Aktivera endast-online-läge
-
-
-
- Inaktiverar cachelagring offline. Vissa funktioner kan vara begränsade eller saknas helt i det här läget. Ändringar kräver omstart av Fernschreiber för att träda i kraft.
+
+ Inställningar
+
+
+ SettingsPrivacy
Sekretess
-
-
- Tillåt att skicka plats till infogade robotar
-
-
-
- Vissa infogade robotar begär platsdata när de används
-
-
-
- Användarprofil
-
-
-
- first name of the logged-in profile - header
- Förnamn
-
-
-
- Ange 1-64 tecken
-
-
-
- last name of the logged-in profile - header
- Efternamn
-
-
-
- Ange 1-64 tecken
-
-
-
- user name of the logged-in profile - header
- Användarnamn
-
Tillåt chattinbjudningar
@@ -1690,56 +1680,81 @@
Sekretessinställning för att hantera om din online-status är synlig.
-
- Lägg till bild
+
+ Tillåt att skicka plats till infogade robotar
+
+
+
+ Vissa infogade robotar begär platsdata när de används
+
+
+
+ SettingsStorage
+
+
+ Lagring
+
+
+
+ Aktivera endast-online-läge
+
+
+
+ Inaktiverar cachelagring offline. Vissa funktioner kan vara begränsade eller saknas helt i det här läget. Ändringar kräver omstart av Fernschreiber för att träda i kraft.
+
+
+
+ Aktivera lagringsoptimering
+
+
+
+ SettingsUserProfile
+
+
+ Användarprofil
+
+
+
+ first name of the logged-in profile - header
+ Förnamn
+
+
+
+ Ange 1-64 tecken
+
+
+
+ last name of the logged-in profile - header
+ Efternamn
+
+
+
+ Ange 1-64 tecken
+
+
+
+ user name of the logged-in profile - header
+ Användarnamn
Profilbilder
-
- Ta bort bild
+
+ Lägg till bild
-
- Laddar upp...
+
+ Ta bort bild
Tar bort profilbild
-
- Aktivera aviseringsljud
-
-
-
- När ljud är aktiverat, använder Fernschreiber aktuell Sailfish-signal för chatt-avisering, vilken kan ställas in i systemets ljudinställningar.
-
-
-
- Fördröjning innan meddelanden markeras som lästa
-
-
-
- Fernschreiber väntar en stund innan meddelanden markeras som lästa
-
-
-
- Fokusera textinmatningsområdet vid anslutning till en chatt
-
-
-
- Fokusera textinmatningen vid chatt-öppning
-
-
-
- Visa dekaler som emoji
-
-
-
- Visa bara emoji istället för de faktiska dekalerna
+
+ Ladda upp...
diff --git a/translations/harbour-fernschreiber-zh_CN.ts b/translations/harbour-fernschreiber-zh_CN.ts
index ad2e6e8..9500bb7 100644
--- a/translations/harbour-fernschreiber-zh_CN.ts
+++ b/translations/harbour-fernschreiber-zh_CN.ts
@@ -97,11 +97,11 @@
-
+ 该项目使用 OpenStreetMap Nominatim 对位置附件进行反向地理编码。感谢把它作为网络服务提供给我们!
-
+ 打开 OSM Nominatim Wiki
@@ -506,11 +506,11 @@
-
+ 未知位置
-
+ 精度: %1m
@@ -1475,11 +1475,34 @@
- SettingsPage
+ SettingsAppearance
-
- 设置
+
+ 外观
+
+
+ 显示表情贴图为 emoji
+
+
+
+ 仅显示 emoji 而非实际的表情贴图
+
+
+
+ 以图片形式显示表情贴图
+
+
+
+ 显示表情贴图背景并以图片形式自动居中
+
+
+
+ 动态表情贴图
+
+
+
+ SettingsBehavior
状态
@@ -1493,21 +1516,45 @@
通过按下回车键发送消息
-
- 外观
+
+ 开启对话时聚焦文本输入区域
-
- 以图片形式显示表情贴图
+
+ 进入对话时聚焦文本输入区域
-
- 显示表情贴图背景并以图片形式自动居中
+
+ 发送后聚焦文本输入区域
+
+
+
+ 发送消息后聚焦文本输入区域
+
+
+
+ 标记消息已读前延迟
+
+
+
+ Fernschreiber 将会在标记消息已读之前延迟一下
+
+
+
+ 整合打开方式菜单
+
+
+
+ 整合 Fernschreiber 到旗鱼系统打开方式菜单
通知反馈
+
+
+ 使用非图像反馈方式通知消息(例如声音及振动)
+
全部事件
@@ -1520,89 +1567,32 @@
无
-
-
- 使用非图像反馈方式通知消息(例如声音及振动)
-
-
-
- 整合打开方式菜单
-
-
-
- 整合 Fernschreiber 到旗鱼系统打开方式菜单
-
-
-
- 动态表情贴图
-
收到通知时点亮屏幕
-
- 储存
+
+ 开启通知声音
-
- 开启储存加速器
+
+ 如果开启声音,Fernschreiber 会采用当前旗鱼系统通知声音作为对话通知声音,你可以在系统设置进行配置。
+
+
+ SettingsPage
-
- 发送后聚焦文本输入区域
-
-
-
- 发送消息后聚焦文本输入区域
-
-
-
- 开启仅在线模式
-
-
-
- 禁用离线缓存。某些特定功能会在此模式中受限或消失。切换模式需要重启 fernschreiber 才能生效。
+
+ 设置
+
+
+ SettingsPrivacy
隐私
-
-
- 允许发送位置到内联机器人
-
-
-
- 使用某些内联机器人时会请求位置数据
-
-
-
- 用户简介
-
-
-
- first name of the logged-in profile - header
- 名字
-
-
-
- 输入 1-64 个字符
-
-
-
- last name of the logged-in profile - header
- 姓氏
-
-
-
- 输入 0-64 个字符
-
-
-
- user name of the logged-in profile - header
- 用户名
-
允许对话邀请
@@ -1664,56 +1654,81 @@
隐私设置,用于管理是否你的在线状态可见。
-
- 添加图片
+
+ 允许发送位置到内联机器人
+
+
+
+ 使用某些内联机器人时会请求位置数据
+
+
+
+ SettingsStorage
+
+
+ 储存
+
+
+
+ 开启仅在线模式
+
+
+
+ 禁用离线缓存。某些特定功能会在此模式中受限或消失。切换模式需要重启 fernschreiber 才能生效。
+
+
+
+ 开启储存加速器
+
+
+
+ SettingsUserProfile
+
+
+ 用户简介
+
+
+
+ first name of the logged-in profile - header
+ 名字
+
+
+
+ 输入 1-64 个字符
+
+
+
+ last name of the logged-in profile - header
+ 姓氏
+
+
+
+ 输入 0-64 个字符
+
+
+
+ user name of the logged-in profile - header
+ 用户名
简介图片
-
- 删除图片
+
+ 添加图片
-
- 正在上传…
+
+ 删除图片
删除简介图片
-
- 开启通知声音
-
-
-
- 如果开启声音,Fernschreiber 会采用当前旗鱼系统通知声音作为对话通知声音,你可以在系统设置进行配置。
-
-
-
- 标记消息已读前延迟
-
-
-
- Fernschreiber 将会在标记消息已读之前延迟一下
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ 正在上传…
diff --git a/translations/harbour-fernschreiber.ts b/translations/harbour-fernschreiber.ts
index 7cac97a..6b751c7 100644
--- a/translations/harbour-fernschreiber.ts
+++ b/translations/harbour-fernschreiber.ts
@@ -1501,77 +1501,52 @@
- SettingsPage
-
-
- Settings
-
-
-
- Behavior
-
-
-
- Send message by enter
-
-
-
- Send your message by pressing the enter key
-
+ SettingsAppearance
- Appearance
+ Appearance
+
+
+
+
+
+
+
+
- Show stickers as images
+ Show stickers as images
- Show background for stickers and align them centrally like images
-
-
-
- Notification feedback
-
-
-
- All events
-
-
-
- Only new events
-
-
-
- None
-
-
-
- Use non-graphical feedback (sound, vibration) for notifications
-
-
-
- Open-with menu integration
-
-
-
- Integrate Fernschreiber into open-with menu of Sailfish OS
+ Show background for stickers and align them centrally like images
- Animate stickers
+ Animate stickers
+
+
+
+ SettingsBehavior
+
+
+ Behavior
-
+
+ Send message by enter
+
+
+
+ Send your message by pressing the enter key
+
+
+
-
-
-
-
-
+
@@ -1583,52 +1558,67 @@
-
+
-
-
+
+
+
+
+ Open-with menu integration
+
+
+
+ Integrate Fernschreiber into open-with menu of Sailfish OS
+
+
+
+ Notification feedback
+
+
+
+ Use non-graphical feedback (sound, vibration) for notifications
+
+
+
+ All events
+
+
+
+ Only new events
+
+
+
+ None
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SettingsPage
+
+
+ Settings
+
+
+
+ SettingsPrivacy
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- first name of the logged-in profile - header
-
-
-
-
- Enter 1-128 characters {1-64 ?}
-
-
-
- last name of the logged-in profile - header
-
-
-
-
- Enter 1-128 characters {0-64 ?}
-
-
-
- user name of the logged-in profile - header
-
-
@@ -1690,7 +1680,60 @@
-
+
+
+
+
+
+
+
+
+
+ SettingsStorage
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SettingsUserProfile
+
+
+
+
+
+
+ first name of the logged-in profile - header
+
+
+
+
+ Enter 1-128 characters {1-64 ?}
+
+
+
+ last name of the logged-in profile - header
+
+
+
+
+ Enter 1-128 characters {0-64 ?}
+
+
+
+ user name of the logged-in profile - header
@@ -1698,48 +1741,20 @@
-
+
-
- Uploading...
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ Uploading...