mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-04-18 15:17:07 +02:00
Moved DBIWorkMode to Core::Settings.
This commit is contained in:
parent
da3e140069
commit
707b36dc12
16 changed files with 63 additions and 52 deletions
Telegram/SourceFiles
|
@ -525,11 +525,11 @@ void Settings::addFromSerialized(const QByteArray &serialized) {
|
|||
|| Ui::Integration::Instance().openglLastCheckFailed());
|
||||
}
|
||||
_groupCallNoiseSuppression = (groupCallNoiseSuppression == 1);
|
||||
const auto uncheckedWorkMode = static_cast<DBIWorkMode>(workMode);
|
||||
const auto uncheckedWorkMode = static_cast<WorkMode>(workMode);
|
||||
switch (uncheckedWorkMode) {
|
||||
case dbiwmWindowAndTray:
|
||||
case dbiwmTrayOnly:
|
||||
case dbiwmWindowOnly: _workMode = uncheckedWorkMode; break;
|
||||
case WorkMode::WindowAndTray:
|
||||
case WorkMode::TrayOnly:
|
||||
case WorkMode::WindowOnly: _workMode = uncheckedWorkMode; break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -791,7 +791,7 @@ void Settings::resetOnLastLogout() {
|
|||
_recentEmoji.clear();
|
||||
_emojiVariants.clear();
|
||||
|
||||
_workMode = dbiwmWindowAndTray;
|
||||
_workMode = WorkMode::WindowAndTray;
|
||||
}
|
||||
|
||||
bool Settings::ThirdColumnByDefault() {
|
||||
|
|
|
@ -53,6 +53,11 @@ public:
|
|||
ShowName = 1,
|
||||
ShowNothing = 2,
|
||||
};
|
||||
enum class WorkMode {
|
||||
WindowAndTray = 0,
|
||||
TrayOnly = 1,
|
||||
WindowOnly = 2,
|
||||
};
|
||||
|
||||
static constexpr auto kDefaultVolume = 0.9;
|
||||
|
||||
|
@ -526,16 +531,16 @@ public:
|
|||
void setWindowPosition(const WindowPosition &position) {
|
||||
_windowPosition = position;
|
||||
}
|
||||
void setWorkMode(DBIWorkMode value) {
|
||||
void setWorkMode(WorkMode value) {
|
||||
_workMode = value;
|
||||
}
|
||||
[[nodiscard]] DBIWorkMode workMode() const {
|
||||
[[nodiscard]] WorkMode workMode() const {
|
||||
return _workMode.current();
|
||||
}
|
||||
[[nodiscard]] rpl::producer<DBIWorkMode> workModeValue() const {
|
||||
[[nodiscard]] rpl::producer<WorkMode> workModeValue() const {
|
||||
return _workMode.value();
|
||||
}
|
||||
[[nodiscard]] rpl::producer<DBIWorkMode> workModeChanges() const {
|
||||
[[nodiscard]] rpl::producer<WorkMode> workModeChanges() const {
|
||||
return _workMode.changes();
|
||||
}
|
||||
|
||||
|
@ -658,7 +663,7 @@ private:
|
|||
rpl::variable<bool> _systemDarkModeEnabled = false;
|
||||
WindowPosition _windowPosition; // per-window
|
||||
bool _disableOpenGL = false;
|
||||
rpl::variable<DBIWorkMode> _workMode = dbiwmWindowAndTray;
|
||||
rpl::variable<WorkMode> _workMode = WorkMode::WindowAndTray;
|
||||
|
||||
bool _tabbedReplacedWithInfo = false; // per-window
|
||||
rpl::event_stream<bool> _tabbedReplacedWithInfoValue; // per-window
|
||||
|
|
|
@ -121,12 +121,6 @@ void memset_rand(void *data, uint32 len);
|
|||
QString translitRusEng(const QString &rus);
|
||||
QString rusKeyboardLayoutSwitch(const QString &from);
|
||||
|
||||
enum DBIWorkMode {
|
||||
dbiwmWindowAndTray = 0,
|
||||
dbiwmTrayOnly = 1,
|
||||
dbiwmWindowOnly = 2,
|
||||
};
|
||||
|
||||
static const int MatrixRowShift = 40000;
|
||||
|
||||
inline int rowscount(int fullCount, int countPerRow) {
|
||||
|
|
|
@ -188,7 +188,8 @@ void MainWindow::applyInitialWorkMode() {
|
|||
const auto minimizeAndHide = [=] {
|
||||
DEBUG_LOG(("Window Pos: First show, setting minimized after."));
|
||||
setWindowState(windowState() | Qt::WindowMinimized);
|
||||
if (workMode == dbiwmTrayOnly || workMode == dbiwmWindowAndTray) {
|
||||
if (workMode == Core::Settings::WorkMode::TrayOnly
|
||||
|| workMode == Core::Settings::WorkMode::WindowAndTray) {
|
||||
hide();
|
||||
}
|
||||
};
|
||||
|
|
|
@ -61,6 +61,7 @@ namespace Platform {
|
|||
namespace {
|
||||
|
||||
using internal::WaylandIntegration;
|
||||
using WorkMode = Core::Settings::WorkMode;
|
||||
|
||||
constexpr auto kPanelTrayIconName = "telegram-panel"_cs;
|
||||
constexpr auto kMutePanelTrayIconName = "telegram-mute-panel"_cs;
|
||||
|
@ -809,7 +810,7 @@ void MainWindow::handleSNIHostRegistered() {
|
|||
|
||||
_sniAvailable = true;
|
||||
|
||||
if (Core::App().settings().workMode() == dbiwmWindowOnly) {
|
||||
if (Core::App().settings().workMode() == WorkMode::WindowOnly) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -825,7 +826,7 @@ void MainWindow::handleSNIHostRegistered() {
|
|||
|
||||
SkipTaskbar(
|
||||
windowHandle(),
|
||||
Core::App().settings().workMode() == dbiwmTrayOnly);
|
||||
Core::App().settings().workMode() == WorkMode::TrayOnly);
|
||||
}
|
||||
|
||||
void MainWindow::handleSNIOwnerChanged(
|
||||
|
@ -834,7 +835,7 @@ void MainWindow::handleSNIOwnerChanged(
|
|||
const QString &newOwner) {
|
||||
_sniAvailable = IsSNIAvailable();
|
||||
|
||||
if (Core::App().settings().workMode() == dbiwmWindowOnly) {
|
||||
if (Core::App().settings().workMode() == WorkMode::WindowOnly) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -860,7 +861,7 @@ void MainWindow::handleSNIOwnerChanged(
|
|||
|
||||
SkipTaskbar(
|
||||
windowHandle(),
|
||||
(Core::App().settings().workMode() == dbiwmTrayOnly)
|
||||
(Core::App().settings().workMode() == WorkMode::TrayOnly)
|
||||
&& trayAvailable());
|
||||
}
|
||||
|
||||
|
@ -918,10 +919,10 @@ void MainWindow::psSetupTrayIcon() {
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::workmodeUpdated(DBIWorkMode mode) {
|
||||
void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
|
||||
if (!trayAvailable()) {
|
||||
return;
|
||||
} else if (mode == dbiwmWindowOnly) {
|
||||
} else if (mode == WorkMode::WindowOnly) {
|
||||
#ifndef DESKTOP_APP_DISABLE_DBUS_INTEGRATION
|
||||
if (_sniTrayIcon) {
|
||||
_sniTrayIcon->setContextMenu(0);
|
||||
|
@ -939,7 +940,7 @@ void MainWindow::workmodeUpdated(DBIWorkMode mode) {
|
|||
psSetupTrayIcon();
|
||||
}
|
||||
|
||||
SkipTaskbar(windowHandle(), mode == dbiwmTrayOnly);
|
||||
SkipTaskbar(windowHandle(), mode == WorkMode::TrayOnly);
|
||||
}
|
||||
|
||||
void MainWindow::unreadCounterChangedHook() {
|
||||
|
@ -1331,7 +1332,7 @@ void MainWindow::handleNativeSurfaceChanged(bool exist) {
|
|||
if (exist) {
|
||||
SkipTaskbar(
|
||||
windowHandle(),
|
||||
(Core::App().settings().workMode() == dbiwmTrayOnly)
|
||||
(Core::App().settings().workMode() == WorkMode::TrayOnly)
|
||||
&& trayAvailable());
|
||||
}
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ protected:
|
|||
void initTrayMenuHook() override;
|
||||
bool hasTrayIcon() const override;
|
||||
|
||||
void workmodeUpdated(DBIWorkMode mode) override;
|
||||
void workmodeUpdated(Core::Settings::WorkMode mode) override;
|
||||
void createGlobalMenu() override;
|
||||
|
||||
QSystemTrayIcon *trayIcon = nullptr;
|
||||
|
|
|
@ -71,7 +71,7 @@ protected:
|
|||
|
||||
void updateGlobalMenuHook() override;
|
||||
|
||||
void workmodeUpdated(DBIWorkMode mode) override;
|
||||
void workmodeUpdated(Core::Settings::WorkMode mode) override;
|
||||
|
||||
QSystemTrayIcon *trayIcon = nullptr;
|
||||
QMenu *trayIconMenu = nullptr;
|
||||
|
|
|
@ -541,9 +541,9 @@ void MainWindow::psSetupTrayIcon() {
|
|||
trayIcon->show();
|
||||
}
|
||||
|
||||
void MainWindow::workmodeUpdated(DBIWorkMode mode) {
|
||||
void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
|
||||
psSetupTrayIcon();
|
||||
if (mode == dbiwmWindowOnly) {
|
||||
if (mode == Core::Settings::WorkMode::WindowOnly) {
|
||||
if (trayIcon) {
|
||||
trayIcon->setContextMenu(0);
|
||||
delete trayIcon;
|
||||
|
|
|
@ -234,7 +234,7 @@ Manager::Private::Private(Manager *manager)
|
|||
, _managerIdString(QString::number(_managerId))
|
||||
, _delegate([[NotificationDelegate alloc] initWithManager:manager managerId:_managerId]) {
|
||||
Core::App().settings().workModeValue(
|
||||
) | rpl::start_with_next([=](DBIWorkMode mode) {
|
||||
) | rpl::start_with_next([=](Core::Settings::WorkMode mode) {
|
||||
// We need to update the delegate _after_ the tray icon change was done in Qt.
|
||||
// Because Qt resets the delegate.
|
||||
crl::on_main(this, [=] {
|
||||
|
|
|
@ -268,9 +268,11 @@ void MainWindow::showTrayTooltip() {
|
|||
}
|
||||
}
|
||||
|
||||
void MainWindow::workmodeUpdated(DBIWorkMode mode) {
|
||||
void MainWindow::workmodeUpdated(Core::Settings::WorkMode mode) {
|
||||
using WorkMode = Core::Settings::WorkMode;
|
||||
|
||||
switch (mode) {
|
||||
case dbiwmWindowAndTray: {
|
||||
case WorkMode::WindowAndTray: {
|
||||
psSetupTrayIcon();
|
||||
HWND psOwner = (HWND)GetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT);
|
||||
if (psOwner) {
|
||||
|
@ -279,7 +281,7 @@ void MainWindow::workmodeUpdated(DBIWorkMode mode) {
|
|||
}
|
||||
} break;
|
||||
|
||||
case dbiwmTrayOnly: {
|
||||
case WorkMode::TrayOnly: {
|
||||
psSetupTrayIcon();
|
||||
HWND psOwner = (HWND)GetWindowLongPtr(ps_hWnd, GWLP_HWNDPARENT);
|
||||
if (!psOwner) {
|
||||
|
@ -287,7 +289,7 @@ void MainWindow::workmodeUpdated(DBIWorkMode mode) {
|
|||
}
|
||||
} break;
|
||||
|
||||
case dbiwmWindowOnly: {
|
||||
case WorkMode::WindowOnly: {
|
||||
if (trayIcon) {
|
||||
trayIcon->setContextMenu(0);
|
||||
trayIcon->deleteLater();
|
||||
|
|
|
@ -85,7 +85,7 @@ protected:
|
|||
|
||||
void showTrayTooltip() override;
|
||||
|
||||
void workmodeUpdated(DBIWorkMode mode) override;
|
||||
void workmodeUpdated(Core::Settings::WorkMode mode) override;
|
||||
|
||||
bool initSizeFromSystem() override;
|
||||
|
||||
|
|
|
@ -318,6 +318,8 @@ void SetupSpellchecker(
|
|||
void SetupSystemIntegrationContent(
|
||||
Window::SessionController *controller,
|
||||
not_null<Ui::VerticalLayout*> container) {
|
||||
using WorkMode = Core::Settings::WorkMode;
|
||||
|
||||
const auto checkbox = [&](rpl::producer<QString> &&label, bool checked) {
|
||||
return object_ptr<Ui::Checkbox>(
|
||||
container,
|
||||
|
@ -344,8 +346,8 @@ void SetupSystemIntegrationContent(
|
|||
if (Platform::TrayIconSupported()) {
|
||||
const auto trayEnabled = [] {
|
||||
const auto workMode = Core::App().settings().workMode();
|
||||
return (workMode == dbiwmTrayOnly)
|
||||
|| (workMode == dbiwmWindowAndTray);
|
||||
return (workMode == WorkMode::TrayOnly)
|
||||
|| (workMode == WorkMode::WindowAndTray);
|
||||
};
|
||||
const auto tray = addCheckbox(
|
||||
tr::lng_settings_workmode_tray(),
|
||||
|
@ -353,8 +355,8 @@ void SetupSystemIntegrationContent(
|
|||
|
||||
const auto taskbarEnabled = [] {
|
||||
const auto workMode = Core::App().settings().workMode();
|
||||
return (workMode == dbiwmWindowOnly)
|
||||
|| (workMode == dbiwmWindowAndTray);
|
||||
return (workMode == WorkMode::WindowOnly)
|
||||
|| (workMode == WorkMode::WindowAndTray);
|
||||
};
|
||||
const auto taskbar = Platform::SkipTaskbarSupported()
|
||||
? addCheckbox(
|
||||
|
@ -365,10 +367,11 @@ void SetupSystemIntegrationContent(
|
|||
const auto updateWorkmode = [=] {
|
||||
const auto newMode = tray->checked()
|
||||
? ((!taskbar || taskbar->checked())
|
||||
? dbiwmWindowAndTray
|
||||
: dbiwmTrayOnly)
|
||||
: dbiwmWindowOnly;
|
||||
if ((newMode == dbiwmWindowAndTray || newMode == dbiwmTrayOnly)
|
||||
? WorkMode::WindowAndTray
|
||||
: WorkMode::TrayOnly)
|
||||
: WorkMode::WindowOnly;
|
||||
if ((newMode == WorkMode::WindowAndTray
|
||||
|| newMode == WorkMode::TrayOnly)
|
||||
&& Core::App().settings().workMode() != newMode) {
|
||||
cSetSeenTrayTooltip(false);
|
||||
}
|
||||
|
|
|
@ -428,11 +428,12 @@ bool ReadSetting(
|
|||
if (!CheckStreamStatus(stream)) return false;
|
||||
|
||||
const auto newMode = [v] {
|
||||
switch (v) {
|
||||
case dbiwmTrayOnly: return dbiwmTrayOnly;
|
||||
case dbiwmWindowOnly: return dbiwmWindowOnly;
|
||||
using WorkMode = Core::Settings::WorkMode;
|
||||
switch (static_cast<WorkMode>(v)) {
|
||||
case WorkMode::TrayOnly: return WorkMode::TrayOnly;
|
||||
case WorkMode::WindowOnly: return WorkMode::WindowOnly;
|
||||
};
|
||||
return dbiwmWindowAndTray;
|
||||
return WorkMode::WindowAndTray;
|
||||
}();
|
||||
Core::App().settings().setWorkMode(newMode);
|
||||
|
||||
|
|
|
@ -179,7 +179,7 @@ MainWindow::MainWindow(not_null<Controller*> controller)
|
|||
}, lifetime());
|
||||
|
||||
Core::App().settings().workModeChanges(
|
||||
) | rpl::start_with_next([=](DBIWorkMode mode) {
|
||||
) | rpl::start_with_next([=](Core::Settings::WorkMode mode) {
|
||||
workmodeUpdated(mode);
|
||||
}, lifetime());
|
||||
|
||||
|
@ -211,7 +211,8 @@ bool MainWindow::hideNoQuit() {
|
|||
return false;
|
||||
}
|
||||
const auto workMode = Core::App().settings().workMode();
|
||||
if (workMode == dbiwmTrayOnly || workMode == dbiwmWindowAndTray) {
|
||||
if (workMode == Core::Settings::WorkMode::TrayOnly
|
||||
|| workMode == Core::Settings::WorkMode::WindowAndTray) {
|
||||
if (minimizeToTray()) {
|
||||
if (const auto controller = sessionController()) {
|
||||
Ui::showChatsList(&controller->session());
|
||||
|
@ -316,8 +317,9 @@ void MainWindow::handleStateChanged(Qt::WindowState state) {
|
|||
controller().updateIsActiveFocus();
|
||||
}
|
||||
Core::App().updateNonIdle();
|
||||
using WorkMode = Core::Settings::WorkMode;
|
||||
if (state == Qt::WindowMinimized
|
||||
&& (Core::App().settings().workMode() == dbiwmTrayOnly)) {
|
||||
&& (Core::App().settings().workMode() == WorkMode::TrayOnly)) {
|
||||
minimizeToTray();
|
||||
}
|
||||
savePosition(state);
|
||||
|
|
|
@ -11,6 +11,7 @@ https://github.com/telegramdesktop/tdesktop/blob/master/LEGAL
|
|||
#include "ui/rp_widget.h"
|
||||
#include "base/timer.h"
|
||||
#include "base/object_ptr.h"
|
||||
#include "core/core_settings.h"
|
||||
|
||||
#include <QtWidgets/QSystemTrayIcon>
|
||||
|
||||
|
@ -174,7 +175,7 @@ protected:
|
|||
virtual void showTrayTooltip() {
|
||||
}
|
||||
|
||||
virtual void workmodeUpdated(DBIWorkMode mode) {
|
||||
virtual void workmodeUpdated(Core::Settings::WorkMode mode) {
|
||||
}
|
||||
|
||||
virtual void createGlobalMenu() {
|
||||
|
|
|
@ -316,7 +316,8 @@ void Controller::updateIsActive() {
|
|||
}
|
||||
|
||||
void Controller::minimize() {
|
||||
if (Core::App().settings().workMode() == dbiwmTrayOnly) {
|
||||
if (Core::App().settings().workMode()
|
||||
== Core::Settings::WorkMode::TrayOnly) {
|
||||
_widget.minimizeToTray();
|
||||
} else {
|
||||
_widget.setWindowState(_widget.windowState() | Qt::WindowMinimized);
|
||||
|
|
Loading…
Add table
Reference in a new issue