Группа :: Редакторы
Пакет: 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