UI: Move taskbar overlay functions into platform.hpp
Refactors the existing implementation for Windows into platform-windows.cpp, allowing for other OS implementations in the future.master
parent
5ac6c03a8a
commit
41521b2816
|
@ -215,6 +215,10 @@ bool ProcessIsRosettaTranslated()
|
|||
#endif
|
||||
}
|
||||
|
||||
// Not implemented yet
|
||||
void TaskbarOverlayInit() {}
|
||||
void TaskbarOverlaySetStatus(TaskbarOverlayStatus) {}
|
||||
|
||||
/*
|
||||
* This custom NSApplication subclass makes the app compatible with CEF. Qt
|
||||
* also has an NSApplication subclass, but it doesn't conflict thanks to Qt
|
||||
|
|
|
@ -37,6 +37,11 @@
|
|||
#include <util/windows/HRError.hpp>
|
||||
#include <util/windows/ComPtr.hpp>
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
#include <QWinTaskbarButton>
|
||||
#include <QMainWindow>
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
|
||||
static inline bool check_path(const char *data, const char *path,
|
||||
|
@ -464,3 +469,36 @@ bool IsRunningOnWine()
|
|||
|
||||
return false;
|
||||
}
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
QWinTaskbarButton *taskBtn;
|
||||
|
||||
void TaskbarOverlayInit()
|
||||
{
|
||||
QMainWindow *main = App()->GetMainWindow();
|
||||
taskBtn = new QWinTaskbarButton(main);
|
||||
taskBtn->setWindow(main->windowHandle());
|
||||
}
|
||||
|
||||
void TaskbarOverlaySetStatus(TaskbarOverlayStatus status)
|
||||
{
|
||||
if (status == TaskbarOverlayStatusInactive) {
|
||||
taskBtn->clearOverlayIcon();
|
||||
return;
|
||||
}
|
||||
|
||||
QIcon icon;
|
||||
if (status == TaskbarOverlayStatusActive) {
|
||||
icon = QIcon::fromTheme("obs-active",
|
||||
QIcon(":/res/images/active.png"));
|
||||
} else {
|
||||
icon = QIcon::fromTheme("obs-paused",
|
||||
QIcon(":/res/images/paused.png"));
|
||||
}
|
||||
taskBtn->setOverlayIcon(icon);
|
||||
}
|
||||
#else
|
||||
// Needs to be re-implemented for Qt6, perhaps natively without Qt
|
||||
void TaskbarOverlayInit() {}
|
||||
void TaskbarOverlaySetStatus(TaskbarOverlayStatus) {}
|
||||
#endif
|
||||
|
|
|
@ -251,3 +251,7 @@ bool SetDisplayAffinitySupported(void)
|
|||
// Not implemented yet
|
||||
return false;
|
||||
}
|
||||
|
||||
// Not implemented yet
|
||||
void TaskbarOverlayInit() {}
|
||||
void TaskbarOverlaySetStatus(TaskbarOverlayStatus) {}
|
||||
|
|
|
@ -36,6 +36,14 @@ void SetAlwaysOnTop(QWidget *window, bool enable);
|
|||
|
||||
bool SetDisplayAffinitySupported(void);
|
||||
|
||||
enum TaskbarOverlayStatus {
|
||||
TaskbarOverlayStatusInactive,
|
||||
TaskbarOverlayStatusActive,
|
||||
TaskbarOverlayStatusPaused,
|
||||
};
|
||||
void TaskbarOverlayInit();
|
||||
void TaskbarOverlaySetStatus(TaskbarOverlayStatus status);
|
||||
|
||||
#ifdef _WIN32
|
||||
class RunOnceMutex;
|
||||
RunOnceMutex
|
||||
|
|
|
@ -2011,9 +2011,7 @@ void OBSBasic::OBSInit()
|
|||
|
||||
SystemTray(true);
|
||||
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
taskBtn->setWindow(windowHandle());
|
||||
#endif
|
||||
TaskbarOverlayInit();
|
||||
|
||||
#ifdef __APPLE__
|
||||
disableColorSpaceConversion(this);
|
||||
|
@ -6713,10 +6711,7 @@ inline void OBSBasic::OnActivate(bool force)
|
|||
App()->IncrementSleepInhibition();
|
||||
UpdateProcessPriority();
|
||||
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
taskBtn->setOverlayIcon(QIcon::fromTheme(
|
||||
"obs-active", QIcon(":/res/images/active.png")));
|
||||
#endif
|
||||
TaskbarOverlaySetStatus(TaskbarOverlayStatusActive);
|
||||
if (trayIcon && trayIcon->isVisible()) {
|
||||
#ifdef __APPLE__
|
||||
QIcon trayMask =
|
||||
|
@ -6744,9 +6739,7 @@ inline void OBSBasic::OnDeactivate()
|
|||
App()->DecrementSleepInhibition();
|
||||
ClearProcessPriority();
|
||||
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
taskBtn->clearOverlayIcon();
|
||||
#endif
|
||||
TaskbarOverlaySetStatus(TaskbarOverlayStatusInactive);
|
||||
if (trayIcon && trayIcon->isVisible()) {
|
||||
#ifdef __APPLE__
|
||||
QIcon trayIconFile =
|
||||
|
@ -6771,11 +6764,7 @@ inline void OBSBasic::OnDeactivate()
|
|||
#endif
|
||||
trayIcon->setIcon(QIcon::fromTheme("obs-tray-paused",
|
||||
trayIconFile));
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
taskBtn->setOverlayIcon(QIcon::fromTheme(
|
||||
"obs-paused",
|
||||
QIcon(":/res/images/paused.png")));
|
||||
#endif
|
||||
TaskbarOverlaySetStatus(TaskbarOverlayStatusPaused);
|
||||
} else {
|
||||
#ifdef __APPLE__
|
||||
QIcon trayIconFile =
|
||||
|
@ -6787,11 +6776,7 @@ inline void OBSBasic::OnDeactivate()
|
|||
#endif
|
||||
trayIcon->setIcon(QIcon::fromTheme("obs-tray-active",
|
||||
trayIconFile));
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
taskBtn->setOverlayIcon(QIcon::fromTheme(
|
||||
"obs-active",
|
||||
QIcon(":/res/images/active.png")));
|
||||
#endif
|
||||
TaskbarOverlaySetStatus(TaskbarOverlayStatusActive);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -9773,10 +9758,7 @@ void OBSBasic::PauseRecording()
|
|||
|
||||
ui->statusbar->RecordingPaused();
|
||||
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
taskBtn->setOverlayIcon(QIcon::fromTheme(
|
||||
"obs-paused", QIcon(":/res/images/paused.png")));
|
||||
#endif
|
||||
TaskbarOverlaySetStatus(TaskbarOverlayStatusPaused);
|
||||
if (trayIcon && trayIcon->isVisible()) {
|
||||
#ifdef __APPLE__
|
||||
QIcon trayIconFile =
|
||||
|
@ -9820,10 +9802,7 @@ void OBSBasic::UnpauseRecording()
|
|||
|
||||
ui->statusbar->RecordingUnpaused();
|
||||
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
taskBtn->setOverlayIcon(QIcon::fromTheme(
|
||||
"obs-active", QIcon(":/res/images/active.png")));
|
||||
#endif
|
||||
TaskbarOverlaySetStatus(TaskbarOverlayStatusActive);
|
||||
if (trayIcon && trayIcon->isVisible()) {
|
||||
#ifdef __APPLE__
|
||||
QIcon trayIconFile =
|
||||
|
|
|
@ -22,9 +22,6 @@
|
|||
#include <QThread>
|
||||
#include <QWidgetAction>
|
||||
#include <QSystemTrayIcon>
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
#include <QWinTaskbarButton>
|
||||
#endif
|
||||
#include <QStyledItemDelegate>
|
||||
#include <obs.hpp>
|
||||
#include <vector>
|
||||
|
@ -325,10 +322,6 @@ private:
|
|||
QPointer<QAction> renameScene;
|
||||
QPointer<QAction> renameSource;
|
||||
|
||||
#if defined(_WIN32) && QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
|
||||
QWinTaskbarButton *taskBtn = new QWinTaskbarButton(this);
|
||||
#endif
|
||||
|
||||
QPointer<QWidget> programWidget;
|
||||
QPointer<QVBoxLayout> programLayout;
|
||||
QPointer<QLabel> programLabel;
|
||||
|
|
Loading…
Reference in New Issue