tdesktop/Telegram/SourceFiles/platform/win/main_window_win.h
John Preston 1e6d4d6b41 Activate mediaview instead of main window.
If the mediaview is currently shown and we receive an activation
event for the main window we should activate and focus mediaview.
2017-05-24 16:25:08 +03:00

132 lines
3.1 KiB
C++

/*
This file is part of Telegram Desktop,
the official desktop version of Telegram messaging app, see https://telegram.org
Telegram Desktop is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
It is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
In addition, as a special exception, the copyright holders give permission
to link the code of portions of this program with the OpenSSL library.
Full license: https://github.com/telegramdesktop/tdesktop/blob/master/LICENSE
Copyright (c) 2014-2017 John Preston, https://desktop.telegram.org
*/
#pragma once
#include "platform/platform_main_window.h"
#include <windows.h>
namespace Ui {
class PopupMenu;
} // namespace Ui
namespace Platform {
class MainWindow : public Window::MainWindow {
Q_OBJECT
public:
MainWindow();
HWND psHwnd() const;
HMENU psMenu() const;
void psFirstShow();
void psInitSysMenu();
void updateSystemMenu(Qt::WindowState state);
void psUpdateMargins();
void psRefreshTaskbarIcon();
virtual QImage iconWithCounter(int size, int count, style::color bg, style::color fg, bool smallIcon) = 0;
static UINT TaskbarCreatedMsgId() {
return _taskbarCreatedMsgId;
}
static void TaskbarCreated();
// Custom shadows.
enum class ShadowsChange {
Moved = 0x01,
Resized = 0x02,
Shown = 0x04,
Hidden = 0x08,
Activate = 0x10,
};
Q_DECLARE_FLAGS(ShadowsChanges, ShadowsChange);
bool shadowsWorking() const {
return _shadowsWorking;
}
void shadowsActivate();
void shadowsDeactivate();
void shadowsUpdate(ShadowsChanges changes, WINDOWPOS *position = nullptr);
int deltaLeft() const {
return _deltaLeft;
}
int deltaTop() const {
return _deltaTop;
}
~MainWindow();
public slots:
void psShowTrayMenu();
protected:
void initHook() override;
int32 screenNameChecksum(const QString &name) const override;
void unreadCounterChangedHook() override;
void stateChangedHook(Qt::WindowState state) override;
bool hasTrayIcon() const override {
return trayIcon;
}
QSystemTrayIcon *trayIcon = nullptr;
Ui::PopupMenu *trayIconMenu = nullptr;
void psTrayMenuUpdated();
void psSetupTrayIcon();
virtual void placeSmallCounter(QImage &img, int size, int count, style::color bg, const QPoint &shift, style::color color) = 0;
void showTrayTooltip() override;
void workmodeUpdated(DBIWorkMode mode) override;
QTimer psUpdatedPositionTimer;
private:
void updateIconCounters();
void psDestroyIcons();
static UINT _taskbarCreatedMsgId;
bool _shadowsWorking = false;
bool _themeInited = false;
HWND ps_hWnd = nullptr;
HWND ps_tbHider_hWnd = nullptr;
HMENU ps_menu = nullptr;
HICON ps_iconBig = nullptr;
HICON ps_iconSmall = nullptr;
HICON ps_iconOverlay = nullptr;
int _deltaLeft = 0;
int _deltaTop = 0;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(MainWindow::ShadowsChanges);
} // namespace Platform