mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-16 14:17:12 +02:00
feat: implement showGhostToggleInDrawer
feat: implement `markReadAfterSend` feat: tweak defaults fix: remove comma if a message is deleted
This commit is contained in:
parent
a53c40e03b
commit
45497bc444
8 changed files with 119 additions and 29 deletions
|
@ -3864,6 +3864,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
"ayu_EnableAds" = "Enable ads";
|
||||
"ayu_CustomizationHeader" = "Customization";
|
||||
"ayu_DeletedMarkText" = "Deleted mark";
|
||||
"ayu_EditedMarkText" = "Edited mark";
|
||||
"ayu_ShowGhostToggleInDrawer" = "Show ghost mode toggle";
|
||||
"ayu_CleanDatabase" = "Clean database";
|
||||
"ayu_CleanDatabaseNotification" = "AyuGram database cleaned";
|
||||
|
@ -3874,6 +3875,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
"ayu_EditsHistoryTitle" = "Edits history";
|
||||
"ayu_EditsHistoryMenuText" = "History";
|
||||
"ayu_ReadUntilMenuText" = "Read until";
|
||||
"ayu_ForwardsRestrictedInfoDeleted" = "Forwarding of deleted message is not supported.";
|
||||
"ayu_LikelyOfflineStatus" = "offline ?";
|
||||
"ayu_GhostModeShortcut" = "Enter with Ghost";
|
||||
"ayu_SettingsWatermark" = "AyuGram developed and maintained by Radolyn Labs";
|
||||
|
|
|
@ -9,13 +9,19 @@ namespace AyuSettings {
|
|||
|
||||
rpl::variable<bool> sendReadPacketsReactive;
|
||||
rpl::variable<bool> sendOnlinePacketsReactive;
|
||||
rpl::variable<bool> sendOfflinePacketAfterOnlineReactive;
|
||||
rpl::variable<bool> sendUploadProgressReactive;
|
||||
|
||||
rpl::variable<bool> sendOfflinePacketAfterOnlineReactive;
|
||||
rpl::variable<bool> markReadAfterSendReactive;
|
||||
|
||||
rpl::variable<bool> useScheduledMessagesReactive;
|
||||
|
||||
rpl::variable<bool> keepDeletedMessagesReactive;
|
||||
rpl::variable<bool> keepMessagesHistoryReactive;
|
||||
|
||||
rpl::variable<QString> deletedMarkReactive;
|
||||
rpl::variable<QString> editedMarkReactive;
|
||||
rpl::variable<bool> showGhostToggleInDrawerReactive;
|
||||
rpl::variable<int> showPeerIdReactive;
|
||||
|
||||
rpl::variable<bool> ghostModeEnabled;
|
||||
|
@ -44,13 +50,19 @@ namespace AyuSettings {
|
|||
void postinitialize() {
|
||||
sendReadPacketsReactive = settings->sendReadPackets;
|
||||
sendOnlinePacketsReactive = settings->sendOnlinePackets;
|
||||
sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline;
|
||||
sendUploadProgressReactive = settings->sendUploadProgress;
|
||||
|
||||
sendOfflinePacketAfterOnlineReactive = settings->sendOfflinePacketAfterOnline;
|
||||
markReadAfterSendReactive = settings->markReadAfterSend;
|
||||
|
||||
useScheduledMessagesReactive = settings->useScheduledMessages;
|
||||
|
||||
keepDeletedMessagesReactive = settings->keepDeletedMessages;
|
||||
keepMessagesHistoryReactive = settings->keepMessagesHistory;
|
||||
|
||||
deletedMarkReactive = settings->deletedMark;
|
||||
editedMarkReactive = settings->editedMark;
|
||||
showGhostToggleInDrawerReactive = settings->showGhostToggleInDrawer;
|
||||
showPeerIdReactive = settings->showPeerId;
|
||||
|
||||
ghostModeEnabled = !settings->sendReadPackets && !settings->sendOnlinePackets;
|
||||
|
@ -98,14 +110,19 @@ namespace AyuSettings {
|
|||
sendOnlinePacketsReactive = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_sendUploadProgress(bool val) {
|
||||
sendUploadProgress = val;
|
||||
sendUploadProgressReactive = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_sendOfflinePacketAfterOnline(bool val) {
|
||||
sendOfflinePacketAfterOnline = val;
|
||||
sendOfflinePacketAfterOnlineReactive = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_sendUploadProgress(bool val) {
|
||||
sendUploadProgress = val;
|
||||
sendUploadProgressReactive = val;
|
||||
void AyuGramSettings::set_markReadAfterSend(bool val) {
|
||||
markReadAfterSend = val;
|
||||
markReadAfterSendReactive = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_useScheduledMessages(bool val) {
|
||||
|
@ -133,6 +150,11 @@ namespace AyuSettings {
|
|||
editedMarkReactive = editedMark;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_showGhostToggleInDrawer(bool val) {
|
||||
showGhostToggleInDrawer = val;
|
||||
showGhostToggleInDrawerReactive = val;
|
||||
}
|
||||
|
||||
void AyuGramSettings::set_showPeerId(int val) {
|
||||
showPeerId = val;
|
||||
showPeerIdReactive = val;
|
||||
|
@ -146,12 +168,16 @@ namespace AyuSettings {
|
|||
return sendOnlinePacketsReactive.value();
|
||||
}
|
||||
|
||||
rpl::producer<bool> get_sendUploadProgressReactive() {
|
||||
return sendUploadProgressReactive.value();
|
||||
}
|
||||
|
||||
rpl::producer<bool> get_sendOfflinePacketAfterOnlineReactive() {
|
||||
return sendOfflinePacketAfterOnlineReactive.value();
|
||||
}
|
||||
|
||||
rpl::producer<bool> get_sendUploadProgressReactive() {
|
||||
return sendUploadProgressReactive.value();
|
||||
rpl::producer<bool> get_markReadAfterSend() {
|
||||
return markReadAfterSendReactive.value();
|
||||
}
|
||||
|
||||
rpl::producer<bool> get_useScheduledMessagesReactive() {
|
||||
|
@ -174,6 +200,10 @@ namespace AyuSettings {
|
|||
return editedMarkReactive.value();
|
||||
}
|
||||
|
||||
rpl::producer<bool> get_showGhostToggleInDrawerReactive() {
|
||||
return showGhostToggleInDrawerReactive.value();
|
||||
}
|
||||
|
||||
rpl::producer<int> get_showPeerId() {
|
||||
return showPeerIdReactive.value();
|
||||
}
|
||||
|
|
|
@ -13,15 +13,24 @@ namespace AyuSettings {
|
|||
|
||||
public:
|
||||
AyuGramSettings() {
|
||||
// ~ Ghost essentials
|
||||
sendReadPackets = true;
|
||||
sendOnlinePackets = true;
|
||||
sendOfflinePacketAfterOnline = false;
|
||||
sendUploadProgress = true;
|
||||
|
||||
sendOfflinePacketAfterOnline = false;
|
||||
markReadAfterSend = false;
|
||||
|
||||
useScheduledMessages = false;
|
||||
keepDeletedMessages = false;
|
||||
keepMessagesHistory = false;
|
||||
|
||||
// ~ Message edits & deletion history
|
||||
keepDeletedMessages = true;
|
||||
keepMessagesHistory = true;
|
||||
|
||||
// ~ Customization
|
||||
deletedMark = "🧹";
|
||||
editedMark = tr::lng_edited(tr::now);
|
||||
showGhostToggleInDrawer = true;
|
||||
|
||||
/*
|
||||
* showPeerId = 0 means no ID shown
|
||||
|
@ -37,9 +46,11 @@ namespace AyuSettings {
|
|||
|
||||
QS_FIELD(bool, sendOnlinePackets)
|
||||
|
||||
QS_FIELD(bool, sendUploadProgress)
|
||||
|
||||
QS_FIELD(bool, sendOfflinePacketAfterOnline)
|
||||
|
||||
QS_FIELD(bool, sendUploadProgress)
|
||||
QS_FIELD(bool, markReadAfterSend)
|
||||
|
||||
QS_FIELD(bool, useScheduledMessages)
|
||||
|
||||
|
@ -51,18 +62,26 @@ namespace AyuSettings {
|
|||
|
||||
QS_FIELD(QString, editedMark)
|
||||
|
||||
QS_FIELD(bool, showGhostToggleInDrawer)
|
||||
|
||||
QS_FIELD(int, showPeerId)
|
||||
|
||||
public:
|
||||
void set_sendReadPackets(bool val);
|
||||
void set_sendOnlinePackets(bool val);
|
||||
void set_sendOfflinePacketAfterOnline(bool val);
|
||||
void set_sendUploadProgress(bool val);
|
||||
|
||||
void set_sendOfflinePacketAfterOnline(bool val);
|
||||
void set_markReadAfterSend(bool val);
|
||||
|
||||
void set_useScheduledMessages(bool val);
|
||||
|
||||
void set_keepDeletedMessages(bool val);
|
||||
void set_keepMessagesHistory(bool val);
|
||||
|
||||
void set_deletedMark(QString val);
|
||||
void set_editedMark(QString val);
|
||||
void set_showGhostToggleInDrawer(bool val);
|
||||
void set_showPeerId(int val);
|
||||
};
|
||||
|
||||
|
@ -81,6 +100,7 @@ namespace AyuSettings {
|
|||
rpl::producer<bool> get_keepMessagesHistoryReactive();
|
||||
rpl::producer<QString> get_deletedMarkReactive();
|
||||
rpl::producer<QString> get_editedMarkReactive();
|
||||
rpl::producer<QString> get_showGhostToggleInDrawer();
|
||||
rpl::producer<int> get_showPeerId();
|
||||
|
||||
// computed fields
|
||||
|
|
|
@ -97,6 +97,20 @@ namespace Settings {
|
|||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_MarkReadAfterSend(),
|
||||
st::settingsButtonNoIcon
|
||||
)->toggleOn(
|
||||
rpl::single(settings->markReadAfterSend)
|
||||
)->toggledValue(
|
||||
) | rpl::filter([=](bool enabled) {
|
||||
return (enabled != settings->markReadAfterSend);
|
||||
}) | rpl::start_with_next([=](bool enabled) {
|
||||
settings->set_markReadAfterSend(enabled);
|
||||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_UseScheduledMessages(),
|
||||
|
@ -147,6 +161,8 @@ namespace Settings {
|
|||
}
|
||||
|
||||
void Ayu::SetupCustomization(not_null<Ui::VerticalLayout *> container, not_null<Window::SessionController *> controller) {
|
||||
auto settings = &AyuSettings::getInstance();
|
||||
|
||||
AddSubsectionTitle(container, tr::ayu_CustomizationHeader());
|
||||
|
||||
auto btn = AddButtonWithLabel(
|
||||
|
@ -162,7 +178,7 @@ namespace Settings {
|
|||
|
||||
auto btn2 = AddButtonWithLabel(
|
||||
container,
|
||||
rpl::single(QString("Edited mark")),
|
||||
tr::ayu_EditedMarkText(),
|
||||
AyuSettings::get_editedMarkReactive(),
|
||||
st::settingsButtonNoIcon
|
||||
);
|
||||
|
@ -171,6 +187,20 @@ namespace Settings {
|
|||
Ui::show(std::move(box));
|
||||
});
|
||||
|
||||
AddButton(
|
||||
container,
|
||||
tr::ayu_ShowGhostToggleInDrawer(),
|
||||
st::settingsButtonNoIcon
|
||||
)->toggleOn(
|
||||
rpl::single(settings->showGhostToggleInDrawer)
|
||||
)->toggledValue(
|
||||
) | rpl::filter([=](bool enabled) {
|
||||
return (enabled != settings->showGhostToggleInDrawer);
|
||||
}) | rpl::start_with_next([=](bool enabled) {
|
||||
settings->set_showGhostToggleInDrawer(enabled);
|
||||
AyuSettings::save();
|
||||
}, container->lifetime());
|
||||
|
||||
SetupShowPeerId(container, controller);
|
||||
}
|
||||
|
||||
|
|
|
@ -173,6 +173,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include <QtCore/QMimeData>
|
||||
|
||||
#include "ayu/ayu_settings.h"
|
||||
#include "ayu/ayu_state.h"
|
||||
|
||||
namespace {
|
||||
|
||||
|
@ -3873,6 +3874,11 @@ void HistoryWidget::send(Api::SendOptions options) {
|
|||
options.scheduled = current + 12;
|
||||
}
|
||||
|
||||
if (!settings->sendReadPackets && settings->markReadAfterSend) {
|
||||
AyuState::setAllowSendReadPacket(true);
|
||||
_history->session().data().histories().readInboxOnNewMessage(_history->lastMessage());
|
||||
}
|
||||
|
||||
if (!_history) {
|
||||
return;
|
||||
} else if (_editMsgId) {
|
||||
|
|
|
@ -463,14 +463,13 @@ void BottomInfo::layout() {
|
|||
}
|
||||
|
||||
void BottomInfo::layoutDateText() {
|
||||
const auto ayuSettings = &AyuSettings::getInstance();
|
||||
auto editedMarkValue = ayuSettings->editedMark;
|
||||
const auto settings = &AyuSettings::getInstance();
|
||||
|
||||
const auto edited = (_data.flags & Data::Flag::Edited)
|
||||
? (editedMarkValue + ' ')
|
||||
? (settings->editedMark + ' ')
|
||||
: QString();
|
||||
const auto author = _data.author;
|
||||
const auto prefix = !author.isEmpty() ? u", "_q : QString();
|
||||
const auto prefix = !author.isEmpty() ? (author == settings->deletedMark ? u" "_q : u", "_q) : QString();
|
||||
const auto date = edited + QLocale().toString(
|
||||
_data.date.time(),
|
||||
QLocale::ShortFormat);
|
||||
|
|
|
@ -54,6 +54,7 @@ base::options::toggle SendLargePhotos({
|
|||
.id = kOptionSendLargePhotos,
|
||||
.name = "Send large photos",
|
||||
.description = "Increase the side limit on compressed images to 2560px.",
|
||||
.defaultValue = true
|
||||
});
|
||||
std::atomic<bool> SendLargePhotosAtomic/* = false*/;
|
||||
|
||||
|
|
|
@ -845,21 +845,23 @@ void MainMenu::setupMenu() {
|
|||
}, _nightThemeToggle->lifetime());
|
||||
|
||||
const auto settings = &AyuSettings::getInstance();
|
||||
_ghostModeToggle = addAction(
|
||||
tr::ayu_DrawerGhostModeToggle(),
|
||||
{ &st::menuIconFake, kIconPurple }
|
||||
)->toggleOn(AyuSettings::get_ghostModeEnabled());
|
||||
if (settings->showGhostToggleInDrawer) {
|
||||
_ghostModeToggle = addAction(
|
||||
tr::ayu_DrawerGhostModeToggle(),
|
||||
{&st::menuIconFake, kIconPurple}
|
||||
)->toggleOn(AyuSettings::get_ghostModeEnabled());
|
||||
|
||||
_ghostModeToggle->toggledChanges(
|
||||
) | rpl::start_with_next([=](bool ghostMode) {
|
||||
settings->set_sendReadPackets(!ghostMode);
|
||||
settings->set_sendOnlinePackets(!ghostMode);
|
||||
settings->set_sendUploadProgress(!ghostMode);
|
||||
_ghostModeToggle->toggledChanges(
|
||||
) | rpl::start_with_next([=](bool ghostMode) {
|
||||
settings->set_sendReadPackets(!ghostMode);
|
||||
settings->set_sendOnlinePackets(!ghostMode);
|
||||
settings->set_sendUploadProgress(!ghostMode);
|
||||
|
||||
settings->set_sendOfflinePacketAfterOnline(ghostMode);
|
||||
settings->set_sendOfflinePacketAfterOnline(ghostMode);
|
||||
|
||||
AyuSettings::save();
|
||||
}, _ghostModeToggle->lifetime());
|
||||
AyuSettings::save();
|
||||
}, _ghostModeToggle->lifetime());
|
||||
}
|
||||
|
||||
Core::App().settings().systemDarkModeValue(
|
||||
) | rpl::start_with_next([=](std::optional<bool> darkMode) {
|
||||
|
|
Loading…
Add table
Reference in a new issue