Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37705100
en ru br
Репозитории ALT

Группа :: Редакторы
Пакет: deepin-editor

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: 0001-feat-adapt-V23-DDE-DBus.patch
Скачать


From cce2939d85991ccf7954ad6fcb7cf3a757cf7a5d Mon Sep 17 00:00:00 2001
From: renbin <renbin@uniontech.com>
Date: Tue, 31 Jan 2023 15:44:06 +0800
Subject: [PATCH] feat: И─┌И┘█V23 DDE DBusФ▌╔Е▐ё
Description: Х╟┐Ф∙╢И┐╗Е┬├Д©╝Ф■╧Г └DBusФ▌╔Е▐ёД╫©Г■╗Ф√╧Е╪▐О╪▄Ф═╧Ф█╝Г┴┬Ф°╛Е▄╨Е┬├Е╓└Г░├V20Е▓▄V23Г └Ф▌╔Е▐ёХ╟┐Г■╗
ActiveWindowФ▌╔Е▐ёФ ┌Ф°╙Е╝·Г▌╟О╪▄Д╫©Г■╗V20Ф▌╔Е▐ёЕ┘╪Е╝╧
Log: И─┌И┘█V23 DDE DBusФ▌╔Е▐ё
Influence: DBusФ▌╔Е▐ё
---
 src/common/utils.cpp     | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------
 src/common/utils.h       | 10 ++++++++++
 src/editor/dtextedit.cpp | 18 ++++++++++++++----
 src/widgets/window.cpp   | 30 +++++++++++++++++++++++++-----
 4 files changed, 122 insertions(+), 23 deletions(-)
diff --git a/src/common/utils.cpp b/src/common/utils.cpp
index 95e7a49..7fe7743 100644
--- a/src/common/utils.cpp
+++ b/src/common/utils.cpp
@@ -8,4 +8,6 @@
 #include <DSettingsOption>
 #include <DMessageManager>
+#include <DSysInfo>
+
 #include <QRegularExpression>
 #include <QJsonDocument>
@@ -27,4 +29,6 @@
 #include "qprocess.h"
 
+DCORE_USE_NAMESPACE
+
 QT_BEGIN_NAMESPACE
 extern Q_WIDGETS_EXPORT void qt_blurImage(QPainter *p, QImage &blurImage, qreal radius, bool quality, bool alphaOnly, int transposed = 0);
@@ -781,12 +785,27 @@ bool Utils::activeWindowFromDock(quintptr winId)
 {
     bool bRet = true;
-    // new interface use application as id
-    QDBusInterface dockDbusInterface("com.deepin.dde.daemon.Dock",
-                                     "/com/deepin/dde/daemon/Dock",
-                                     "com.deepin.dde.daemon.Dock");
-    QDBusReply<void> reply = dockDbusInterface.call("ActivateWindow", winId);
-    if (!reply.isValid()) {
-        qDebug() << "call org.deepin.dde.daemon.Dock1 failed" << reply.error();
-        bRet = false;
+    // Д╪≤Е┘┬И┤┤Г■╗V23Ф▌╔Е▐ё
+    QDBusInterface dockDbusInterfaceV23("org.deepin.dde.daemon.Dock1",
+                                        "/org/deepin/dde/daemon/Dock1",
+                                        "org.deepin.dde.daemon.Dock1");
+    if (dockDbusInterfaceV23.isValid()) {
+        QDBusReply<void> reply = dockDbusInterfaceV23.call("ActivateWindow", winId);
+        if (!reply.isValid()) {
+            qDebug() << "call v23 org.deepin.dde.daemon.Dock1 failed" << reply.error();
+            bRet = false;
+        } else {
+            return bRet;
+        }
+    }
+
+    QDBusInterface dockDbusInterfaceV20("com.deepin.dde.daemon.Dock",
+                                        "/com/deepin/dde/daemon/Dock",
+                                        "com.deepin.dde.daemon.Dock");
+    if (dockDbusInterfaceV20.isValid() && !bRet) {
+        QDBusReply<void> reply = dockDbusInterfaceV20.call("ActivateWindow", winId);
+        if (!reply.isValid()) {
+            qDebug() << "call v20 com.deepin.dde.daemon.Dock failed" << reply.error();
+            bRet = false;
+        }
     }
 
@@ -823,10 +842,37 @@ QString Utils::getSystemLan()
         return m_systemLanguage;
     } else {
-        m_systemLanguage = QLocale::system().name();
+        switch (getSystemVersion()) {
+            case V23:
+                m_systemLanguage = QLocale::system().name();
+                break;
+            default: {
+                QDBusInterface ie("com.deepin.daemon.LangSelector",
+                                "/com/deepin/daemon/LangSelector",
+                                "com.deepin.daemon.LangSelector",
+                                QDBusConnection::sessionBus());
+                m_systemLanguage = ie.property("CurrentLocale").toString();
+                break;
+            }
+        }
+
         qWarning() << "getSystemLan is" << m_systemLanguage;
         return m_systemLanguage;
     }
 }
 
+/**
+ * @return Х▌╥Е▐√Е╫⌠Е┴█ГЁ╩Г╩÷Г┴┬Ф°╛Е╧╤Х©■Е⌡·
+ */
+Utils::SystemVersion Utils::getSystemVersion()
+{
+    QString version = DSysInfo::majorVersion();
+    if ("23" == version) {
+        return V23;
+    }
+
+    // Е┘╤Е╝┐Г┴┬Ф°╛И╩≤Х╝╓V20
+    return V20;
+}
+
 
 //judge whether the protocol is wayland
@@ -849,10 +895,23 @@ QString Utils::getActiveColor()
         return activeColor;
     } else {
-        QDBusInterface d("org.deepin.dde.Appearance1",
-                         "/org/deepin/dde/Appearance1",
-                         "org.deepin.dde.Appearance1",
-                         QDBusConnection::sessionBus());
+        switch (getSystemVersion()) {
+            case V23: {
+                QDBusInterface d("org.deepin.dde.Appearance1",
+                             "/org/deepin/dde/Appearance1",
+                             "org.deepin.dde.Appearance1",
+                             QDBusConnection::sessionBus());
+                activeColor = d.property("QtActiveColor").toString();
+                break;
+            }
+            default: {
 
-        activeColor = d.property("QtActiveColor").toString();
+                QDBusInterface d("com.deepin.daemon.Appearance",
+                                "/com/deepin/daemon/Appearance",
+                                "com.deepin.daemon.Appearance",
+                              QDBusConnection::sessionBus());
+                activeColor = d.property("QtActiveColor").toString();
+                break;
+            }
+        }
         qDebug() << "getActiveColor is " << activeColor;
 
diff --git a/src/common/utils.h b/src/common/utils.h
index 60c79db..fc40693 100644
--- a/src/common/utils.h
+++ b/src/common/utils.h
@@ -47,4 +47,12 @@ public:
     };
 
+    /**
+     * @brief Е╫⌠Е┴█Х©░Х║▄Ф≈╤ГЁ╩Г╩÷Г▌╞Е╒┐
+     */
+    enum SystemVersion {
+        V20,
+        V23,
+    };
+
     static QString getQrcPath(const QString &imageName);
     static QString getQssPath(const QString &qssName);
@@ -107,4 +115,6 @@ public:
     //return system language
     static QString getSystemLan();
+    // Е▐√Е╬≈ГЁ╩Г╩÷Г┴┬Ф°╛Ф≤╞Е░╕Д╦╨ V23
+    static SystemVersion getSystemVersion();
 
     static bool isWayland();
diff --git a/src/editor/dtextedit.cpp b/src/editor/dtextedit.cpp
index 7fe4abd..855c18e 100644
--- a/src/editor/dtextedit.cpp
+++ b/src/editor/dtextedit.cpp
@@ -110,8 +110,18 @@ TextEdit::TextEdit(QWidget *parent)
 
     QDBusConnection dbus = QDBusConnection::sessionBus();
-    dbus.systemBus().connect("org.deepin.dde.Gesture1",
-                             "/org/deepin/dde/Gesture1", "org.deepin.dde.Gesture1",
-                             "Event",
-                             this, SLOT(fingerZoom(QString, QString, int)));
+    switch (Utils::getSystemVersion()) {
+        case Utils::V23:
+            dbus.systemBus().connect("org.deepin.dde.Gesture1",
+                                    "/org/deepin/dde/Gesture1", "org.deepin.dde.Gesture1",
+                                    "Event",
+                                    this, SLOT(fingerZoom(QString, QString, int)));
+            break;
+        default:
+            dbus.systemBus().connect("com.deepin.daemon.Gesture",
+                                    "/com/deepin/daemon/Gesture", "com.deepin.daemon.Gesture",
+                                    "Event",
+                                    this, SLOT(fingerZoom(QString, QString, int)));
+            break;
+    }
 
     //Е┬²Е╖▀Е▄√Е▐ЁИ■╝Х▐°Е█∙
diff --git a/src/widgets/window.cpp b/src/widgets/window.cpp
index f02b65e..2d27164 100644
--- a/src/widgets/window.cpp
+++ b/src/widgets/window.cpp
@@ -632,8 +632,18 @@ void Window::addTabWithWrapper(EditWrapper *wrapper, const QString &filepath, co
     //Х©≥И┤▄Д╪ И┤█Е╓█Х©·Ф▌╔Д©║Е▐╥Е▓▄Ф╖╫О╪▄Е┘┬Е┘╗И┐╗Е▐√Ф╤┬
     QDBusConnection dbus = QDBusConnection::sessionBus();
-    dbus.systemBus().disconnect("org.deepin.dde.Gesture1",
+    switch (Utils::getSystemVersion()) {
+        case Utils::V23:
+            dbus.systemBus().disconnect("org.deepin.dde.Gesture1",
                                 "/org/deepin/dde/Gesture1", "org.deepin.dde.Gesture1",
                                 "Event",
                                 wrapper->textEditor(), SLOT(fingerZoom(QString, QString, int)));
+            break;
+        default:
+            dbus.systemBus().disconnect("com.deepin.daemon.Gesture",
+                                        "/com/deepin/daemon/Gesture", "com.deepin.daemon.Gesture",
+                                        "Event",
+                                        wrapper->textEditor(), SLOT(fingerZoom(QString, QString, int)));
+            break;
+    }
     wrapper->textEditor()->disconnect();
     connect(wrapper->textEditor(), &TextEdit::cursorModeChanged, wrapper, &EditWrapper::handleCursorModeChanged);
@@ -645,8 +655,18 @@ void Window::addTabWithWrapper(EditWrapper *wrapper, const QString &filepath, co
     connect(wrapper->textEditor(), &TextEdit::signal_setTitleFocus, this, &Window::slot_setTitleFocus, Qt::QueuedConnection);
 
-    dbus.systemBus().connect("org.deepin.dde.Gesture1",
-                             "/org/deepin/dde/Gesture1", "org.deepin.dde.Gesture1",
-                             "Event",
-                             wrapper->textEditor(), SLOT(fingerZoom(QString, QString, int)));
+    switch (Utils::getSystemVersion()) {
+        case Utils::V23:
+            dbus.systemBus().connect("org.deepin.dde.Gesture1",
+                                "/org/deepin/dde/Gesture1", "org.deepin.dde.Gesture1",
+                                "Event",
+                                wrapper->textEditor(), SLOT(fingerZoom(QString, QString, int)));
+            break;
+        default:
+            dbus.systemBus().connect("com.deepin.daemon.Gesture",
+                                    "/com/deepin/daemon/Gesture", "com.deepin.daemon.Gesture",
+                                    "Event",
+                                    wrapper->textEditor(), SLOT(fingerZoom(QString, QString, int)));
+            break;
+    }
     connect(wrapper->textEditor(), &QPlainTextEdit::cursorPositionChanged, wrapper->textEditor(), &TextEdit::cursorPositionChanged);
 
--
libgit2 1.3.2
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin