| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- /*
- This file is part of Telegram Desktop,
- the official desktop application for the Telegram messaging service.
- For license and copyright information please follow this link:
- https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
- */
- #pragma once
- #include "base/integration.h"
- #include "ui/style/style_core.h"
- #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(Qt::LayoutDirection, LangDir);
- inline bool rtl() {
- return style::RightToLeft();
- }
- DeclareSetting(bool, InstallBetaVersion);
- DeclareSetting(uint64, AlphaVersion);
- DeclareSetting(uint64, RealAlphaVersion);
- DeclareSetting(QByteArray, AlphaPrivateKey);
- DeclareSetting(bool, AutoStart);
- DeclareSetting(bool, StartMinimized);
- DeclareSetting(bool, StartInTray);
- DeclareSetting(bool, SendToMenu);
- enum LaunchMode {
- LaunchModeNormal = 0,
- LaunchModeAutoStart,
- LaunchModeFixPrevious,
- LaunchModeCleanup,
- };
- DeclareReadSetting(LaunchMode, LaunchMode);
- DeclareSetting(QString, WorkingDir);
- inline void cForceWorkingDir(const QString &newDir) {
- cSetWorkingDir(newDir);
- if (!gWorkingDir.isEmpty()) {
- cSetWorkingDir(QDir(gWorkingDir).absolutePath() + '/');
- QDir().mkpath(gWorkingDir);
- QFile::setPermissions(gWorkingDir,
- QFileDevice::ReadUser | QFileDevice::WriteUser | QFileDevice::ExeUser);
- }
- }
- inline QString cExeName() {
- return base::Integration::Instance().executableName();
- }
- inline QString cExeDir() {
- return base::Integration::Instance().executableDir();
- }
- DeclareSetting(QString, DialogLastPath);
- DeclareSetting(QString, DialogHelperPath);
- inline QString cDialogHelperPathFinal() {
- return cDialogHelperPath().isEmpty() ? cExeDir() : cDialogHelperPath();
- }
- DeclareSetting(bool, AutoUpdate);
- DeclareSetting(bool, SeenTrayTooltip);
- DeclareSetting(bool, RestartingUpdate);
- DeclareSetting(bool, Restarting);
- DeclareSetting(bool, RestartingToSettings);
- DeclareSetting(bool, WriteProtected);
- DeclareSetting(int32, LastUpdateCheck);
- DeclareSetting(bool, NoStartUpdate);
- DeclareSetting(bool, StartToSettings);
- DeclareSetting(bool, DebugMode);
- DeclareReadSetting(bool, ManyInstance);
- DeclareSetting(bool, Quit);
- DeclareSetting(QByteArray, LocalSalt);
- DeclareSetting(int, ScreenScale);
- DeclareSetting(int, ConfigScale);
- class DocumentData;
- typedef QList<QPair<DocumentData*, int16>> RecentStickerPackOld;
- typedef QVector<QPair<uint64, ushort>> RecentStickerPreload;
- typedef QVector<QPair<DocumentData*, ushort>> RecentStickerPack;
- DeclareSetting(RecentStickerPreload, RecentStickersPreload);
- DeclareRefSetting(RecentStickerPack, RecentStickers);
- typedef QList<QPair<QString, ushort>> RecentHashtagPack;
- DeclareRefSetting(RecentHashtagPack, RecentWriteHashtags);
- DeclareSetting(RecentHashtagPack, RecentSearchHashtags);
- class UserData;
- typedef QVector<UserData*> RecentInlineBots;
- DeclareRefSetting(RecentInlineBots, RecentInlineBots);
- DeclareSetting(bool, PasswordRecovered);
- DeclareSetting(int32, PasscodeBadTries);
- DeclareSetting(crl::time, PasscodeLastTry);
- DeclareSetting(QStringList, SendPaths);
- DeclareSetting(QString, StartUrl);
- DeclareSetting(int, OtherOnline);
- inline bool passcodeCanTry() {
- if (cPasscodeBadTries() < 3) return true;
- auto dt = crl::now() - cPasscodeLastTry();
- switch (cPasscodeBadTries()) {
- case 3: return dt >= 5000;
- case 4: return dt >= 10000;
- case 5: return dt >= 15000;
- case 6: return dt >= 20000;
- case 7: return dt >= 25000;
- }
- return dt >= 30000;
- }
- inline int cEvalScale(int scale) {
- return (scale == style::kScaleAuto) ? cScreenScale() : scale;
- }
- inline int cScale() {
- return style::Scale();
- }
- inline void SetScaleChecked(int scale) {
- cSetConfigScale(style::CheckScale(scale));
- }
- inline void ValidateScale() {
- SetScaleChecked(cConfigScale());
- style::SetScale(cEvalScale(cConfigScale()));
- }
|