mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-10-07 01:37:08 +02:00
Add dynamic screen changes
This commit is contained in:
parent
2efec7bdae
commit
529e961df2
@ -64,6 +64,7 @@ int main(int argc, char* argv[])
|
||||
QCoreApplication::setApplicationName("ScreenPlay");
|
||||
QCoreApplication::setApplicationVersion("0.1.0");
|
||||
|
||||
|
||||
app.setWindowIcon(QIcon(":/assets/icons/favicon.ico"));
|
||||
|
||||
bool steamErrorRestart = false;
|
||||
@ -81,7 +82,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
GlobalNavigationHelper gnh;
|
||||
InstalledListModel installedListModel;
|
||||
MonitorListModel monitorListModel;
|
||||
MonitorListModel monitorListModel(&app);
|
||||
PackageFileHandler packageFileHandler;
|
||||
ProfileListModel profileListModel;
|
||||
SteamWorkshopListModel steamWorkshopListModel;
|
||||
@ -127,6 +128,7 @@ int main(int argc, char* argv[])
|
||||
|
||||
QQmlApplicationEngine mainWindowEngine;
|
||||
|
||||
|
||||
mainWindowEngine.rootContext()->setContextProperty("globalNavigationHelper", &gnh);
|
||||
mainWindowEngine.rootContext()->setContextProperty("installedListFilter", &installedListFilter);
|
||||
mainWindowEngine.rootContext()->setContextProperty("workshopListModel", &steamWorkshopListModel);
|
||||
|
@ -1,9 +1,12 @@
|
||||
#include "monitorlistmodel.h"
|
||||
|
||||
MonitorListModel::MonitorListModel(QObject* parent)
|
||||
MonitorListModel::MonitorListModel(QGuiApplication* guiapp, QObject* parent)
|
||||
: QAbstractListModel(parent)
|
||||
{
|
||||
loadMonitors();
|
||||
m_qGuiApplication = guiapp;
|
||||
connect(m_qGuiApplication, &QGuiApplication::screenAdded, this, &MonitorListModel::screenAdded);
|
||||
connect(m_qGuiApplication, &QGuiApplication::screenRemoved, this, &MonitorListModel::screenRemoved);
|
||||
}
|
||||
|
||||
QHash<int, QByteArray> MonitorListModel::roleNames() const
|
||||
@ -139,9 +142,6 @@ void MonitorListModel::loadMonitors()
|
||||
|
||||
qDebug() << offsetX << offsetY;
|
||||
|
||||
|
||||
|
||||
|
||||
beginInsertRows(QModelIndex(), 0, QApplication::screens().count());
|
||||
for (int i = 0; i < QApplication::screens().count(); i++) {
|
||||
QScreen* screen = QApplication::screens().at(i);
|
||||
@ -151,10 +151,10 @@ void MonitorListModel::loadMonitors()
|
||||
screen->model(),
|
||||
screen->name(),
|
||||
screen->size(),
|
||||
QRect(screen->availableGeometry().x() + offsetX , screen->availableGeometry().y() + offsetY , screen->geometry().width(), screen->geometry().height()),
|
||||
QRect(screen->availableGeometry().x() + offsetX, screen->availableGeometry().y() + offsetY, screen->geometry().width(), screen->geometry().height()),
|
||||
// More convenient for the user if the first monitor == 1
|
||||
i + 1,
|
||||
QRect(screen->availableVirtualGeometry().x() , screen->availableVirtualGeometry().y() , screen->availableVirtualGeometry().width(), screen->availableVirtualGeometry().height()),
|
||||
QRect(screen->availableVirtualGeometry().x(), screen->availableVirtualGeometry().y(), screen->availableVirtualGeometry().width(), screen->availableVirtualGeometry().height()),
|
||||
QRect(screen->geometry().x() + offsetX, screen->geometry().y() + offsetY, screen->geometry().width(), screen->geometry().height()),
|
||||
screen));
|
||||
}
|
||||
@ -178,11 +178,31 @@ bool MonitorListModel::getMonitorListItemAt(int position, Monitor* monitor)
|
||||
}
|
||||
}
|
||||
|
||||
void MonitorListModel::screenAdded(QScreen* screen)
|
||||
{
|
||||
reset();
|
||||
loadMonitors();
|
||||
}
|
||||
|
||||
void MonitorListModel::screenRemoved(QScreen* screen)
|
||||
{
|
||||
reset();
|
||||
loadMonitors();
|
||||
}
|
||||
|
||||
void MonitorListModel::reset()
|
||||
{
|
||||
beginResetModel();
|
||||
m_monitorList.clear();
|
||||
m_monitorList.squeeze();
|
||||
endResetModel();
|
||||
}
|
||||
|
||||
Monitor::Monitor()
|
||||
{
|
||||
}
|
||||
|
||||
Monitor::Monitor(QString manufacturer, QString model, QString name, QSize size, QRect availableGeometry, int number, QRect availableVirtualGeometry, QRect geometry, QScreen *screen)
|
||||
Monitor::Monitor(QString manufacturer, QString model, QString name, QSize size, QRect availableGeometry, int number, QRect availableVirtualGeometry, QRect geometry, QScreen* screen)
|
||||
{
|
||||
m_screen = screen;
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include <QScreen>
|
||||
#include <QDebug>
|
||||
#include <QApplication>
|
||||
|
||||
#include <QGuiApplication>
|
||||
|
||||
class Monitor;
|
||||
|
||||
@ -18,7 +18,7 @@ class MonitorListModel : public QAbstractListModel
|
||||
|
||||
|
||||
public:
|
||||
explicit MonitorListModel(QObject *parent = nullptr);
|
||||
explicit MonitorListModel(QGuiApplication *guiapp, QObject *parent = nullptr);
|
||||
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
Q_INVOKABLE QRect getAbsoluteDesktopSize();
|
||||
@ -64,9 +64,14 @@ public:
|
||||
|
||||
bool getMonitorListItemAt(int position, Monitor *monitor);
|
||||
|
||||
void screenAdded(QScreen *screen);
|
||||
void screenRemoved(QScreen *screen);
|
||||
|
||||
void reset();
|
||||
|
||||
private:
|
||||
QVector<Monitor> m_monitorList;
|
||||
QGuiApplication* m_qGuiApplication;
|
||||
|
||||
signals:
|
||||
void monitorReloadCompleted();
|
||||
|
Loading…
Reference in New Issue
Block a user