mirror of
https://github.com/kotatogram/kotatogram-desktop
synced 2025-08-27 21:07:09 +00:00
XDG is inventing new tray specification, so SNI will be outdated soon and it's better to just use QSystemTrayIcon. I believe all the major drawbacks of QSystemTrayIcon are solved and we can live with minor ones. Given the planned MainWindow refactoring, it seems it's the best time to do that.
73 lines
1.7 KiB
C++
73 lines
1.7 KiB
C++
/*
|
|
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 "platform/platform_main_window.h"
|
|
|
|
namespace Platform {
|
|
|
|
class MainWindow : public Window::MainWindow {
|
|
public:
|
|
explicit MainWindow(not_null<Window::Controller*> controller);
|
|
|
|
void psShowTrayMenu();
|
|
|
|
bool isActiveForTrayMenu() override;
|
|
|
|
~MainWindow();
|
|
|
|
protected:
|
|
void initHook() override;
|
|
void unreadCounterChangedHook() override;
|
|
void updateGlobalMenuHook() override;
|
|
|
|
void initTrayMenuHook() override;
|
|
bool hasTrayIcon() const override;
|
|
|
|
void workmodeUpdated(Core::Settings::WorkMode mode) override;
|
|
void createGlobalMenu() override;
|
|
|
|
QSystemTrayIcon *trayIcon = nullptr;
|
|
QMenu *trayIconMenu = nullptr;
|
|
|
|
void psTrayMenuUpdated();
|
|
void psSetupTrayIcon();
|
|
|
|
private:
|
|
class Private;
|
|
friend class Private;
|
|
const std::unique_ptr<Private> _private;
|
|
|
|
QMenu *psMainMenu = nullptr;
|
|
QAction *psLogout = nullptr;
|
|
QAction *psUndo = nullptr;
|
|
QAction *psRedo = nullptr;
|
|
QAction *psCut = nullptr;
|
|
QAction *psCopy = nullptr;
|
|
QAction *psPaste = nullptr;
|
|
QAction *psDelete = nullptr;
|
|
QAction *psSelectAll = nullptr;
|
|
QAction *psContacts = nullptr;
|
|
QAction *psAddContact = nullptr;
|
|
QAction *psNewGroup = nullptr;
|
|
QAction *psNewChannel = nullptr;
|
|
|
|
QAction *psBold = nullptr;
|
|
QAction *psItalic = nullptr;
|
|
QAction *psUnderline = nullptr;
|
|
QAction *psStrikeOut = nullptr;
|
|
QAction *psMonospace = nullptr;
|
|
QAction *psClearFormat = nullptr;
|
|
|
|
void updateIconCounters();
|
|
void handleNativeSurfaceChanged(bool exist);
|
|
|
|
};
|
|
|
|
} // namespace Platform
|