Introduce online-only mode as non-default option, fixes #77
This commit is contained in:
parent
90a3d8ad2b
commit
d4935a4968
20 changed files with 169 additions and 9 deletions
|
@ -67,7 +67,7 @@ CoverBackground {
|
||||||
coverPage.authenticated = (tdLibWrapper.getAuthorizationState() === TelegramAPI.AuthorizationReady);
|
coverPage.authenticated = (tdLibWrapper.getAuthorizationState() === TelegramAPI.AuthorizationReady);
|
||||||
coverPage.connectionState = tdLibWrapper.getConnectionState();
|
coverPage.connectionState = tdLibWrapper.getConnectionState();
|
||||||
coverPage.unreadMessages = tdLibWrapper.getUnreadMessageInformation().unread_count || 0;
|
coverPage.unreadMessages = tdLibWrapper.getUnreadMessageInformation().unread_count || 0;
|
||||||
coverPage.unreadChats = tdLibWrapper.getUnreadChatInformation().unread_count;
|
coverPage.unreadChats = tdLibWrapper.getUnreadChatInformation().unread_count || 0;
|
||||||
setUnreadInfoText();
|
setUnreadInfoText();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,6 +91,15 @@ CoverBackground {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: chatListModel
|
||||||
|
onUnreadStateChanged: {
|
||||||
|
coverPage.unreadMessages = unreadMessagesCount;
|
||||||
|
coverPage.unreadChats = unreadChatsCount;
|
||||||
|
setUnreadInfoText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BackgroundImage {
|
BackgroundImage {
|
||||||
id: backgroundImage
|
id: backgroundImage
|
||||||
width: parent.height - Theme.paddingLarge
|
width: parent.height - Theme.paddingLarge
|
||||||
|
|
|
@ -87,6 +87,7 @@ Page {
|
||||||
id: updateSecondaryContentTimer
|
id: updateSecondaryContentTimer
|
||||||
interval: 600
|
interval: 600
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
|
chatListModel.calculateUnreadState();
|
||||||
tdLibWrapper.getRecentStickers();
|
tdLibWrapper.getRecentStickers();
|
||||||
tdLibWrapper.getInstalledStickerSets();
|
tdLibWrapper.getInstalledStickerSets();
|
||||||
tdLibWrapper.getContacts();
|
tdLibWrapper.getContacts();
|
||||||
|
@ -192,11 +193,15 @@ Page {
|
||||||
onChatLastMessageUpdated: {
|
onChatLastMessageUpdated: {
|
||||||
if (!overviewPage.chatListCreated) {
|
if (!overviewPage.chatListCreated) {
|
||||||
chatListCreatedTimer.restart();
|
chatListCreatedTimer.restart();
|
||||||
|
} else {
|
||||||
|
chatListModel.calculateUnreadState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onChatOrderUpdated: {
|
onChatOrderUpdated: {
|
||||||
if (!overviewPage.chatListCreated) {
|
if (!overviewPage.chatListCreated) {
|
||||||
chatListCreatedTimer.restart();
|
chatListCreatedTimer.restart();
|
||||||
|
} else {
|
||||||
|
chatListModel.calculateUnreadState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onChatsReceived: {
|
onChatsReceived: {
|
||||||
|
|
|
@ -172,6 +172,16 @@ Page {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TextSwitch {
|
||||||
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Item {
|
Item {
|
||||||
width: 1
|
width: 1
|
||||||
height: Theme.paddingLarge // Some space at the bottom
|
height: Theme.paddingLarge // Some space at the bottom
|
||||||
|
|
|
@ -30,6 +30,7 @@ namespace {
|
||||||
const QString KEY_NOTIFICATION_FEEDBACK("notificationFeedback");
|
const QString KEY_NOTIFICATION_FEEDBACK("notificationFeedback");
|
||||||
const QString KEY_STORAGE_OPTIMIZER("storageOptimizer");
|
const QString KEY_STORAGE_OPTIMIZER("storageOptimizer");
|
||||||
const QString KEY_REMAINING_INTERACTION_HINTS("remainingInteractionHints");
|
const QString KEY_REMAINING_INTERACTION_HINTS("remainingInteractionHints");
|
||||||
|
const QString KEY_ONLINE_ONLY_MODE("onlineOnlyMode");
|
||||||
}
|
}
|
||||||
|
|
||||||
AppSettings::AppSettings(QObject *parent) : QObject(parent), settings("harbour-fernschreiber", "settings")
|
AppSettings::AppSettings(QObject *parent) : QObject(parent), settings("harbour-fernschreiber", "settings")
|
||||||
|
@ -161,3 +162,17 @@ void AppSettings::setRemainingInteractionHints(int remainingHints)
|
||||||
emit remainingInteractionHintsChanged();
|
emit remainingInteractionHintsChanged();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool AppSettings::onlineOnlyMode() const
|
||||||
|
{
|
||||||
|
return settings.value(KEY_ONLINE_ONLY_MODE, false).toBool();
|
||||||
|
}
|
||||||
|
|
||||||
|
void AppSettings::setOnlineOnlyMode(bool enable)
|
||||||
|
{
|
||||||
|
if (onlineOnlyMode() != enable) {
|
||||||
|
LOG(KEY_ONLINE_ONLY_MODE << enable);
|
||||||
|
settings.setValue(KEY_ONLINE_ONLY_MODE, enable);
|
||||||
|
emit onlineOnlyModeChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -32,6 +32,7 @@ class AppSettings : public QObject {
|
||||||
Q_PROPERTY(NotificationFeedback notificationFeedback READ notificationFeedback WRITE setNotificationFeedback NOTIFY notificationFeedbackChanged)
|
Q_PROPERTY(NotificationFeedback notificationFeedback READ notificationFeedback WRITE setNotificationFeedback NOTIFY notificationFeedbackChanged)
|
||||||
Q_PROPERTY(bool storageOptimizer READ storageOptimizer WRITE setStorageOptimizer NOTIFY storageOptimizerChanged)
|
Q_PROPERTY(bool storageOptimizer READ storageOptimizer WRITE setStorageOptimizer NOTIFY storageOptimizerChanged)
|
||||||
Q_PROPERTY(int remainingInteractionHints READ remainingInteractionHints WRITE setRemainingInteractionHints NOTIFY remainingInteractionHintsChanged)
|
Q_PROPERTY(int remainingInteractionHints READ remainingInteractionHints WRITE setRemainingInteractionHints NOTIFY remainingInteractionHintsChanged)
|
||||||
|
Q_PROPERTY(bool onlineOnlyMode READ onlineOnlyMode WRITE setOnlineOnlyMode NOTIFY onlineOnlyModeChanged)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum NotificationFeedback {
|
enum NotificationFeedback {
|
||||||
|
@ -71,6 +72,9 @@ public:
|
||||||
int remainingInteractionHints() const;
|
int remainingInteractionHints() const;
|
||||||
void setRemainingInteractionHints(int remainingHints);
|
void setRemainingInteractionHints(int remainingHints);
|
||||||
|
|
||||||
|
bool onlineOnlyMode() const;
|
||||||
|
void setOnlineOnlyMode(bool enable);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void sendByEnterChanged();
|
void sendByEnterChanged();
|
||||||
void focusTextAreaAfterSendChanged();
|
void focusTextAreaAfterSendChanged();
|
||||||
|
@ -81,6 +85,7 @@ signals:
|
||||||
void notificationFeedbackChanged();
|
void notificationFeedbackChanged();
|
||||||
void storageOptimizerChanged();
|
void storageOptimizerChanged();
|
||||||
void remainingInteractionHintsChanged();
|
void remainingInteractionHintsChanged();
|
||||||
|
void onlineOnlyModeChanged();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QSettings settings;
|
QSettings settings;
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
#include "chatlistmodel.h"
|
#include "chatlistmodel.h"
|
||||||
#include "fernschreiberutils.h"
|
#include "fernschreiberutils.h"
|
||||||
|
#include <QListIterator>
|
||||||
|
|
||||||
#define DEBUG_MODULE ChatListModel
|
#define DEBUG_MODULE ChatListModel
|
||||||
#include "debuglog.h"
|
#include "debuglog.h"
|
||||||
|
@ -353,9 +354,10 @@ QVector<int> ChatListModel::ChatData::updateSecretChat(const QVariantMap &secret
|
||||||
return changedRoles;
|
return changedRoles;
|
||||||
}
|
}
|
||||||
|
|
||||||
ChatListModel::ChatListModel(TDLibWrapper *tdLibWrapper) : showHiddenChats(false)
|
ChatListModel::ChatListModel(TDLibWrapper *tdLibWrapper, AppSettings *appSettings) : showHiddenChats(false)
|
||||||
{
|
{
|
||||||
this->tdLibWrapper = tdLibWrapper;
|
this->tdLibWrapper = tdLibWrapper;
|
||||||
|
this->appSettings = appSettings;
|
||||||
connect(tdLibWrapper, SIGNAL(newChatDiscovered(QString, QVariantMap)), this, SLOT(handleChatDiscovered(QString, QVariantMap)));
|
connect(tdLibWrapper, SIGNAL(newChatDiscovered(QString, QVariantMap)), this, SLOT(handleChatDiscovered(QString, QVariantMap)));
|
||||||
connect(tdLibWrapper, SIGNAL(chatLastMessageUpdated(QString, QString, QVariantMap)), this, SLOT(handleChatLastMessageUpdated(QString, QString, QVariantMap)));
|
connect(tdLibWrapper, SIGNAL(chatLastMessageUpdated(QString, QString, QVariantMap)), this, SLOT(handleChatLastMessageUpdated(QString, QString, QVariantMap)));
|
||||||
connect(tdLibWrapper, SIGNAL(chatOrderUpdated(QString, QString)), this, SLOT(handleChatOrderUpdated(QString, QString)));
|
connect(tdLibWrapper, SIGNAL(chatOrderUpdated(QString, QString)), this, SLOT(handleChatOrderUpdated(QString, QString)));
|
||||||
|
@ -519,6 +521,26 @@ int ChatListModel::updateChatOrder(int chatIndex)
|
||||||
return newIndex;
|
return newIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ChatListModel::calculateUnreadState()
|
||||||
|
{
|
||||||
|
if (this->appSettings->onlineOnlyMode()) {
|
||||||
|
LOG("Online-only mode: Calculating unread state on my own...");
|
||||||
|
int unreadMessages = 0;
|
||||||
|
int unreadChats = 0;
|
||||||
|
QListIterator<ChatData*> chatIterator(this->chatList);
|
||||||
|
while (chatIterator.hasNext()) {
|
||||||
|
ChatData *currentChat = chatIterator.next();
|
||||||
|
int unreadCount = currentChat->unreadCount();
|
||||||
|
if (unreadCount > 0) {
|
||||||
|
unreadChats++;
|
||||||
|
unreadMessages += unreadCount;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
LOG("Online-only mode: New unread state:" << unreadMessages << unreadChats);
|
||||||
|
emit unreadStateChanged(unreadMessages, unreadChats);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ChatListModel::addVisibleChat(ChatData *chat)
|
void ChatListModel::addVisibleChat(ChatData *chat)
|
||||||
{
|
{
|
||||||
const int n = chatList.size();
|
const int n = chatList.size();
|
||||||
|
@ -719,6 +741,7 @@ void ChatListModel::handleChatReadInboxUpdated(const QString &id, const QString
|
||||||
}
|
}
|
||||||
const QModelIndex modelIndex(index(chatIndex));
|
const QModelIndex modelIndex(index(chatIndex));
|
||||||
emit dataChanged(modelIndex, modelIndex, changedRoles);
|
emit dataChanged(modelIndex, modelIndex, changedRoles);
|
||||||
|
this->calculateUnreadState();
|
||||||
} else {
|
} else {
|
||||||
ChatData *chat = hiddenChats.value(chatId);
|
ChatData *chat = hiddenChats.value(chatId);
|
||||||
if (chat) {
|
if (chat) {
|
||||||
|
|
|
@ -22,6 +22,7 @@
|
||||||
|
|
||||||
#include <QAbstractListModel>
|
#include <QAbstractListModel>
|
||||||
#include "tdlibwrapper.h"
|
#include "tdlibwrapper.h"
|
||||||
|
#include "appsettings.h"
|
||||||
|
|
||||||
class ChatListModel : public QAbstractListModel
|
class ChatListModel : public QAbstractListModel
|
||||||
{
|
{
|
||||||
|
@ -53,7 +54,7 @@ public:
|
||||||
RoleDraftMessageDate
|
RoleDraftMessageDate
|
||||||
};
|
};
|
||||||
|
|
||||||
ChatListModel(TDLibWrapper *tdLibWrapper);
|
ChatListModel(TDLibWrapper *tdLibWrapper, AppSettings *appSettings);
|
||||||
~ChatListModel() override;
|
~ChatListModel() override;
|
||||||
|
|
||||||
virtual QHash<int,QByteArray> roleNames() const override;
|
virtual QHash<int,QByteArray> roleNames() const override;
|
||||||
|
@ -63,6 +64,7 @@ public:
|
||||||
Q_INVOKABLE void redrawModel();
|
Q_INVOKABLE void redrawModel();
|
||||||
Q_INVOKABLE QVariantMap get(int row);
|
Q_INVOKABLE QVariantMap get(int row);
|
||||||
Q_INVOKABLE QVariantMap getById(qlonglong chatId);
|
Q_INVOKABLE QVariantMap getById(qlonglong chatId);
|
||||||
|
Q_INVOKABLE void calculateUnreadState();
|
||||||
|
|
||||||
bool showAllChats() const;
|
bool showAllChats() const;
|
||||||
void setShowAllChats(bool showAll);
|
void setShowAllChats(bool showAll);
|
||||||
|
@ -89,6 +91,7 @@ signals:
|
||||||
void showAllChatsChanged();
|
void showAllChatsChanged();
|
||||||
void chatChanged(const qlonglong &changedChatId);
|
void chatChanged(const qlonglong &changedChatId);
|
||||||
void chatJoined(const qlonglong &chatId, const QString &chatTitle);
|
void chatJoined(const qlonglong &chatId, const QString &chatTitle);
|
||||||
|
void unreadStateChanged(int unreadMessagesCount, int unreadChatsCount);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
class ChatData;
|
class ChatData;
|
||||||
|
@ -99,6 +102,7 @@ private:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
TDLibWrapper *tdLibWrapper;
|
TDLibWrapper *tdLibWrapper;
|
||||||
|
AppSettings *appSettings;
|
||||||
QTimer *relativeTimeRefreshTimer;
|
QTimer *relativeTimeRefreshTimer;
|
||||||
QList<ChatData*> chatList;
|
QList<ChatData*> chatList;
|
||||||
QHash<qlonglong,int> chatIndexMap;
|
QHash<qlonglong,int> chatIndexMap;
|
||||||
|
|
|
@ -87,7 +87,7 @@ int main(int argc, char *argv[])
|
||||||
DBusAdaptor *dBusAdaptor = tdLibWrapper->getDBusAdaptor();
|
DBusAdaptor *dBusAdaptor = tdLibWrapper->getDBusAdaptor();
|
||||||
context->setContextProperty("dBusAdaptor", dBusAdaptor);
|
context->setContextProperty("dBusAdaptor", dBusAdaptor);
|
||||||
|
|
||||||
ChatListModel chatListModel(tdLibWrapper);
|
ChatListModel chatListModel(tdLibWrapper, appSettings);
|
||||||
context->setContextProperty("chatListModel", &chatListModel);
|
context->setContextProperty("chatListModel", &chatListModel);
|
||||||
QSortFilterProxyModel chatListProxyModel(view.data());
|
QSortFilterProxyModel chatListProxyModel(view.data());
|
||||||
chatListProxyModel.setSourceModel(&chatListModel);
|
chatListProxyModel.setSourceModel(&chatListModel);
|
||||||
|
|
|
@ -1476,9 +1476,10 @@ void TDLibWrapper::setInitialParameters()
|
||||||
initialParameters.insert("api_id", TDLIB_API_ID);
|
initialParameters.insert("api_id", TDLIB_API_ID);
|
||||||
initialParameters.insert("api_hash", TDLIB_API_HASH);
|
initialParameters.insert("api_hash", TDLIB_API_HASH);
|
||||||
initialParameters.insert("database_directory", QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/tdlib");
|
initialParameters.insert("database_directory", QStandardPaths::writableLocation(QStandardPaths::AppDataLocation) + "/tdlib");
|
||||||
initialParameters.insert("use_file_database", true);
|
bool onlineOnlyMode = this->appSettings->onlineOnlyMode();
|
||||||
initialParameters.insert("use_chat_info_database", true);
|
initialParameters.insert("use_file_database", !onlineOnlyMode);
|
||||||
initialParameters.insert("use_message_database", true);
|
initialParameters.insert("use_chat_info_database", !onlineOnlyMode);
|
||||||
|
initialParameters.insert("use_message_database", !onlineOnlyMode);
|
||||||
initialParameters.insert("use_secret_chats", true);
|
initialParameters.insert("use_secret_chats", true);
|
||||||
initialParameters.insert("system_language_code", QLocale::system().name());
|
initialParameters.insert("system_language_code", QLocale::system().name());
|
||||||
QSettings hardwareSettings("/etc/hw-release", QSettings::NativeFormat);
|
QSettings hardwareSettings("/etc/hw-release", QSettings::NativeFormat);
|
||||||
|
|
|
@ -1433,6 +1433,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>Fokussiert die Texteingabe nach Senden einer Nachricht</translation>
|
<translation>Fokussiert die Texteingabe nach Senden einer Nachricht</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation>Nur-Online-Modus einschalten</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation>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.</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -177,11 +177,11 @@
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Unmute Chat</source>
|
<source>Unmute Chat</source>
|
||||||
<translation type="unfinished">Unmute Chat</translation>
|
<translation>Unmute Chat</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Mute Chat</source>
|
<source>Mute Chat</source>
|
||||||
<translation type="unfinished">Mute Chat</translation>
|
<translation>Mute Chat</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
@ -1433,6 +1433,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>Focus the text input area after sending a message</translation>
|
<translation>Focus the text input area after sending a message</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation>Enable online-only mode</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1412,6 +1412,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>Enfoca el área de entrada de texto después de enviar un mensaje</translation>
|
<translation>Enfoca el área de entrada de texto después de enviar un mensaje</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1434,6 +1434,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>Kohdista tekstinsyöttökenttä viestin lähetyksen jälkeen</translation>
|
<translation>Kohdista tekstinsyöttökenttä viestin lähetyksen jälkeen</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1412,6 +1412,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1433,6 +1433,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>Mantieni la tastiera in primo piano dopo aver inviato un messaggio</translation>
|
<translation>Mantieni la tastiera in primo piano dopo aver inviato un messaggio</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1454,6 +1454,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>Po wysłaniu wiadomości zaznacz pole wprowadzania tekstu</translation>
|
<translation>Po wysłaniu wiadomości zaznacz pole wprowadzania tekstu</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1454,6 +1454,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>Сфокусироваться на поле ввода текста после отправки сообщения</translation>
|
<translation>Сфокусироваться на поле ввода текста после отправки сообщения</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1433,6 +1433,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>Fokusera textinmatningsfältet efter att ett meddelande skickats</translation>
|
<translation>Fokusera textinmatningsfältet efter att ett meddelande skickats</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1413,6 +1413,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation>发送消息后聚焦文本输入区域</translation>
|
<translation>发送消息后聚焦文本输入区域</translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
|
@ -1433,6 +1433,14 @@
|
||||||
<source>Focus the text input area after sending a message</source>
|
<source>Focus the text input area after sending a message</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Enable online-only mode</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Disables offline caching. Certain features may be limited or missing in this mode. Changes require a restart of Fernschreiber to take effect.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
<name>StickerPicker</name>
|
<name>StickerPicker</name>
|
||||||
|
|
Loading…
Reference in a new issue