2
0
mirror of https://github.com/kotatogram/kotatogram-desktop synced 2025-09-05 17:15:16 +00:00
Files
kotatogram-desktop/Telegram/SourceFiles/kotato/settings.h

178 lines
5.0 KiB
C
Raw Normal View History

2020-04-21 06:49:33 +03:00
/*
This file is part of Kotatogram Desktop,
the unofficial app based on Telegram Desktop.
For license and copyright information please follow this link:
https://github.com/kotatogram/kotatogram-desktop/blob/dev/LEGAL
*/
#pragma once
2021-03-31 12:34:17 +04:00
#include "platform/platform_file_utilities.h"
2020-04-21 06:49:33 +03:00
#define DeclareReadSetting(Type, Name) extern Type g##Name; \
inline const Type &c##Name() { \
return g##Name; \
}
#define DeclareSetting(Type, Name) DeclareReadSetting(Type, Name) \
inline void cSet##Name(const Type &Name) { \
g##Name = Name; \
}
#define DeclareRefSetting(Type, Name) DeclareSetting(Type, Name) \
inline Type &cRef##Name() { \
return g##Name; \
}
DeclareSetting(bool, KotatoFirstRun);
DeclareSetting(QString, MainFont);
DeclareSetting(QString, SemiboldFont);
DeclareSetting(bool, SemiboldFontIsBold);
DeclareSetting(QString, MonospaceFont);
DeclareSetting(bool, UseSystemFont);
DeclareSetting(bool, UseOriginalMetrics);
void SetBigEmojiOutline(bool enabled);
[[nodiscard]] bool BigEmojiOutline();
[[nodiscard]] rpl::producer<bool> BigEmojiOutlineChanges();
void SetStickerHeight(int height);
[[nodiscard]] int StickerHeight();
[[nodiscard]] rpl::producer<int> StickerHeightChanges();
2020-05-06 02:27:04 +03:00
void SetStickerScaleBoth(bool scale);
[[nodiscard]] bool StickerScaleBoth();
[[nodiscard]] rpl::producer<bool> StickerScaleBothChanges();
2020-04-21 06:49:33 +03:00
void SetAdaptiveBubbles(bool enabled);
[[nodiscard]] bool AdaptiveBubbles();
[[nodiscard]] rpl::producer<bool> AdaptiveBubblesChanges();
void SetMonospaceLargeBubbles(bool enabled);
[[nodiscard]] bool MonospaceLargeBubbles();
[[nodiscard]] rpl::producer<bool> MonospaceLargeBubblesChanges();
2020-04-21 06:49:33 +03:00
DeclareSetting(bool, AlwaysShowScheduled);
2020-05-05 06:46:11 +03:00
DeclareSetting(int, ShowChatId);
2020-04-21 06:49:33 +03:00
DeclareSetting(int, NetSpeedBoost);
DeclareSetting(int, NetRequestsCount);
DeclareSetting(int, NetUploadSessionsCount);
DeclareSetting(int, NetUploadRequestInterval);
inline void SetNetworkBoost(int boost) {
if (boost < 0) {
cSetNetSpeedBoost(0);
} else if (boost > 3) {
cSetNetSpeedBoost(3);
} else {
cSetNetSpeedBoost(boost);
}
cSetNetRequestsCount(2 + (2 * cNetSpeedBoost()));
cSetNetUploadSessionsCount(2 + (2 * cNetSpeedBoost()));
cSetNetUploadRequestInterval(500 - (100 * cNetSpeedBoost()));
}
DeclareSetting(bool, ShowPhoneInDrawer);
using ScaleVector = std::vector<int>;
DeclareRefSetting(ScaleVector, InterfaceScales);
bool HasCustomScales();
bool AddCustomScale(int scale);
void ClearCustomScales();
void SetDialogListLines(int lines);
[[nodiscard]] int DialogListLines();
[[nodiscard]] rpl::producer<int> DialogListLinesChanges();
DeclareSetting(bool, DisableUpEdit);
using CustomReplacementsMap = QMap<QString, QString>;
DeclareRefSetting(CustomReplacementsMap, CustomReplaces);
bool AddCustomReplace(QString from, QString to);
DeclareSetting(bool, ConfirmBeforeCall);
DeclareSetting(bool, UseNativeDecorations);
[[nodiscard]] bool UseNativeDecorations();
2020-04-21 06:49:33 +03:00
void SetRecentStickersLimit(int limit);
[[nodiscard]] int RecentStickersLimit();
[[nodiscard]] rpl::producer<int> RecentStickersLimitChanges();
DeclareSetting(int, UserpicCornersType);
DeclareSetting(bool, ShowTopBarUserpic);
DeclareSetting(bool, QtScale);
DeclareSetting(bool, GtkIntegration);
void SetFileDialogType(Platform::FileDialog::ImplementationType t);
[[nodiscard]] Platform::FileDialog::ImplementationType FileDialogType();
[[nodiscard]] rpl::producer<Platform::FileDialog::ImplementationType> FileDialogTypeChanges();
DeclareSetting(bool, DisableTrayCounter);
DeclareSetting(bool, UseTelegramPanelIcon);
2020-04-21 06:49:33 +03:00
DeclareSetting(int, CustomAppIcon);
2020-07-02 03:34:22 +03:00
using DefaultFilterMap = QMap<int, int>;
DeclareRefSetting(DefaultFilterMap, DefaultFilterId);
void SetDefaultFilterId(int account, int filter);
int DefaultFilterId(int account);
bool HasDefaultFilterId(int account);
bool ClearDefaultFilterId(int account);
2020-04-21 06:49:33 +03:00
DeclareSetting(bool, UnmutedFilterCounterOnly);
DeclareSetting(bool, HideFilterEditButton);
DeclareSetting(bool, HideFilterNames);
DeclareSetting(bool, HideFilterAllChats);
DeclareSetting(bool, ProfileTopBarNotifications);
2020-05-15 20:20:12 +03:00
void SetHoverEmojiPanel(bool enabled);
[[nodiscard]] bool HoverEmojiPanel();
[[nodiscard]] rpl::producer<bool> HoverEmojiPanelChanges();
DeclareSetting(bool, ForwardRetainSelection);
2020-07-09 11:42:10 +03:00
DeclareSetting(bool, ForwardChatOnClick);
DeclareSetting(int, ApiId);
DeclareSetting(QString, ApiHash);
DeclareSetting(bool, UseEnvApi);
DeclareSetting(bool, ApiFromStartParams);
2020-07-15 16:47:26 +03:00
DeclareSetting(bool, ForwardQuoted);
DeclareSetting(bool, ForwardCaptioned);
DeclareSetting(bool, ForwardAlbumsAsIs);
DeclareSetting(bool, ForwardGrouped);
2020-08-16 03:48:17 +03:00
struct LocalFolder {
struct Peer {
enum Type {
User = 0,
Chat = 1,
Channel = 2,
};
Type type;
int32 id;
inline bool operator==(const Peer& other) {
return type == other.type
&& id == other.id;
}
};
int id;
int ownerId;
int cloudOrder;
QString name;
QString emoticon;
std::vector<Peer> always;
std::vector<Peer> never;
std::vector<Peer> pinned;
ushort flags;
};
using LocalFolderVector = std::vector<LocalFolder>;
DeclareRefSetting(LocalFolderVector, LocalFolders);