Multi screen support
parent
5b4ac68385
commit
56e64491de
@ -0,0 +1,51 @@
|
||||
/*
|
||||
* Copyright (C) 2021 CutefishOS Team.
|
||||
*
|
||||
* Author: Reion Wong <reionwong@gmail.com>
|
||||
*
|
||||
* This program 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
|
||||
* any later version.
|
||||
*
|
||||
* This program 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "desktop.h"
|
||||
#include <QGuiApplication>
|
||||
|
||||
Desktop::Desktop(QObject *parent)
|
||||
: QObject(parent)
|
||||
{
|
||||
for (QScreen *screen : QGuiApplication::screens()) {
|
||||
screenAdded(screen);
|
||||
}
|
||||
|
||||
connect(qApp, &QGuiApplication::screenAdded, this, &Desktop::screenAdded);
|
||||
connect(qApp, &QGuiApplication::screenRemoved, this, &Desktop::screenRemoved);
|
||||
}
|
||||
|
||||
void Desktop::screenAdded(QScreen *screen)
|
||||
{
|
||||
if (!m_list.contains(screen)) {
|
||||
DesktopView *view = new DesktopView(screen);
|
||||
view->show();
|
||||
m_list.insert(screen, view);
|
||||
}
|
||||
}
|
||||
|
||||
void Desktop::screenRemoved(QScreen *screen)
|
||||
{
|
||||
if (m_list.contains(screen)) {
|
||||
DesktopView *view = m_list.find(screen).value();
|
||||
view->setVisible(false);
|
||||
view->deleteLater();
|
||||
m_list.remove(screen);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (C) 2021 CutefishOS Team.
|
||||
*
|
||||
* Author: Reion Wong <reionwong@gmail.com>
|
||||
*
|
||||
* This program 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
|
||||
* any later version.
|
||||
*
|
||||
* This program 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.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef DESKTOP_H
|
||||
#define DESKTOP_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QScreen>
|
||||
|
||||
#include "desktopview.h"
|
||||
|
||||
class Desktop : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit Desktop(QObject *parent = nullptr);
|
||||
|
||||
private slots:
|
||||
void screenAdded(QScreen *qscreen);
|
||||
void screenRemoved(QScreen *qscreen);
|
||||
|
||||
private:
|
||||
QMap<QScreen *, DesktopView *> m_list;
|
||||
};
|
||||
|
||||
#endif // DESKTOP_H
|
||||
@ -0,0 +1,60 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
import QtQuick.Window 2.12
|
||||
import QtGraphicalEffects 1.0
|
||||
|
||||
import Cutefish.FileManager 1.0 as FM
|
||||
import FishUI 1.0 as FishUI
|
||||
|
||||
Item {
|
||||
id: control
|
||||
|
||||
FM.DesktopSettings {
|
||||
id: settings
|
||||
}
|
||||
|
||||
Loader {
|
||||
id: backgroundLoader
|
||||
anchors.fill: parent
|
||||
anchors.margins: 0
|
||||
sourceComponent: settings.backgroundType === 0 ? wallpaper : background
|
||||
}
|
||||
|
||||
Component {
|
||||
id: background
|
||||
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
color: settings.backgroundColor
|
||||
}
|
||||
}
|
||||
|
||||
Component {
|
||||
id: wallpaper
|
||||
|
||||
Image {
|
||||
source: "file://" + settings.wallpaper
|
||||
sourceSize: Qt.size(width * Screen.devicePixelRatio,
|
||||
height * Screen.devicePixelRatio)
|
||||
fillMode: Image.PreserveAspectCrop
|
||||
clip: true
|
||||
cache: false
|
||||
|
||||
ColorOverlay {
|
||||
id: dimsWallpaper
|
||||
anchors.fill: parent
|
||||
source: parent
|
||||
color: "#000000"
|
||||
opacity: FishUI.Theme.darkMode && settings.dimsWallpaper ? 0.4 : 0.0
|
||||
|
||||
Behavior on opacity {
|
||||
NumberAnimation {
|
||||
duration: 200
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue