Desktop: Support solid color

This commit is contained in:
cutefishd 2021-03-21 17:00:14 +08:00
parent 93b99bcf4b
commit aa449f52ad
3 changed files with 54 additions and 17 deletions

View file

@ -56,28 +56,45 @@ FolderViewDropArea {
id: settings
}
Image {
id: wallpaper
Loader {
id: backgroundLoader
anchors.fill: parent
source: "file://" + settings.wallpaper
sourceSize: Qt.size(width, height)
fillMode: Image.PreserveAspectCrop
clip: true
cache: false
sourceComponent: settings.backgroundType === 0 ? wallpaper : background
}
ColorOverlay {
id: dimsWallpaper
anchors.fill: wallpaper
source: wallpaper
color: "#000000"
opacity: Meui.Theme.darkMode && settings.dimsWallpaper ? 0.4 : 0.0
Component {
id: wallpaper
Behavior on opacity {
NumberAnimation {
duration: 200
Image {
source: "file://" + settings.wallpaper
sourceSize: Qt.size(width, height)
fillMode: Image.PreserveAspectCrop
clip: true
cache: false
ColorOverlay {
id: dimsWallpaper
anchors.fill: parent
source: parent
color: "#000000"
opacity: Meui.Theme.darkMode && settings.dimsWallpaper ? 0.4 : 0.0
Behavior on opacity {
NumberAnimation {
duration: 200
}
}
}
}
}
}
Component {
id: background
Rectangle {
anchors.fill: parent
color: settings.backgroundColor
}
}

View file

@ -27,6 +27,16 @@ bool DesktopSettings::dimsWallpaper() const
return m_interface.property("darkModeDimsWallpaer").toBool();
}
int DesktopSettings::backgroundType() const
{
return m_interface.property("backgroundType").toInt();
}
QString DesktopSettings::backgroundColor() const
{
return m_interface.property("backgroundColor").toString();
}
void DesktopSettings::launch(const QString &command, const QStringList &args)
{
QProcess process;
@ -40,6 +50,8 @@ void DesktopSettings::init()
if (m_interface.isValid()) {
connect(&m_interface, SIGNAL(wallpaperChanged(QString)), this, SLOT(onWallpaperChanged(QString)));
connect(&m_interface, SIGNAL(darkModeDimsWallpaerChanged()), this, SIGNAL(dimsWallpaperChanged()));
connect(&m_interface, SIGNAL(backgroundTypeChanged()), this, SIGNAL(backgroundTypeChanged()));
connect(&m_interface, SIGNAL(backgroundColorChanged()), this, SIGNAL(backgroundColorChanged()));
m_wallpaper = m_interface.property("wallpaper").toString();
emit wallpaperChanged();

View file

@ -10,17 +10,25 @@ class DesktopSettings : public QObject
Q_PROPERTY(QString wallpaper READ wallpaper NOTIFY wallpaperChanged)
Q_PROPERTY(bool dimsWallpaper READ dimsWallpaper NOTIFY dimsWallpaperChanged)
Q_PROPERTY(int backgroundType READ backgroundType NOTIFY backgroundTypeChanged)
Q_PROPERTY(QString backgroundColor READ backgroundColor NOTIFY backgroundColorChanged)
public:
explicit DesktopSettings(QObject *parent = nullptr);
QString wallpaper() const;
bool dimsWallpaper() const;
int backgroundType() const;
QString backgroundColor() const;
Q_INVOKABLE void launch(const QString &command, const QStringList &args);
signals:
void wallpaperChanged();
void dimsWallpaperChanged();
void backgroundColorChanged();
void backgroundTypeChanged();
private slots:
void init();