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