From: Clay Stan Date: Tue, 2 Aug 2022 05:11:03 +0000 (+0800) Subject: New upstream version 5.5.33 X-Git-Tag: archive/raspbian/5.7.12-2+rpi1^2~3^2~5 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=1b650c53a478373e0ca45c5231dcaa8b6234c22a;p=dtkcore.git New upstream version 5.5.33 --- diff --git a/.github/workflows/call-clacheck.yml b/.github/workflows/call-clacheck.yml new file mode 100644 index 0000000..3fa07a3 --- /dev/null +++ b/.github/workflows/call-clacheck.yml @@ -0,0 +1,16 @@ +name: Call CLA check +on: + issue_comment: + types: [created] + pull_request_target: + types: [opened, closed, synchronize] + +concurrency: + group: ${{ github.workflow }}-pull/${{ github.event.number }} + cancel-in-progress: true + +jobs: + clacheck: + uses: linuxdeepin/.github/.github/workflows/cla-check.yml@master + secrets: + APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..4b69a49 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,16 @@ +cmake_minimum_required (VERSION 3.10) + +project (DtkCore + VERSION "${DTK_REPO_MODULE_VERSION}" + DESCRIPTION "DTK Core module" + HOMEPAGE_URL "" + LANGUAGES CXX C +) + +find_package (Qt5 CONFIG REQUIRED COMPONENTS DBus Xml) + +set (BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation") + +if (BUILD_DOCS) + add_subdirectory(doc) +endif () diff --git a/archlinux/PKGBUILD b/archlinux/PKGBUILD new file mode 100644 index 0000000..099b590 --- /dev/null +++ b/archlinux/PKGBUILD @@ -0,0 +1,30 @@ +# Maintainer: justforlxz +pkgname=dtkcore-git +pkgver=5.5.23.r5.g74f86b0 +pkgrel=1 +pkgdesc='DTK core modules' +arch=('x86_64' 'aarch64') +url="https://github.com/linuxdeepin/dtkcore" +license=('LGPL3') +depends=('dconf' 'deepin-desktop-base-git' 'python' 'gsettings-qt' 'lshw') +makedepends=('git' 'qt5-tools' 'gtest' 'dtkcommon-git') +conflicts=('dtkcore') +provides=('dtkcore') +groups=('deepin-git') +source=('source.tar.gz') +sha512sums=('SKIP') + +prepare() { + cd $deepin_source_name +} + +build() { + cd $deepin_source_name + qmake-qt5 PREFIX=/usr DTK_VERSION=$pkgver LIB_INSTALL_DIR=/usr/lib + make +} + +package() { + cd $deepin_source_name + make INSTALL_ROOT="$pkgdir" install +} diff --git a/debian/rules b/debian/rules index 7abf4a2..63b9b64 100755 --- a/debian/rules +++ b/debian/rules @@ -15,7 +15,7 @@ else endif %: - dh $@ --parallel + dh $@ --buildsystem=qmake --parallel override_dh_auto_configure: dh_auto_configure -- LIB_INSTALL_DIR=/usr/lib/$(DEB_HOST_MULTIARCH) VERSION=$(CONFIG_VERSION) diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt new file mode 100644 index 0000000..6ec0386 --- /dev/null +++ b/doc/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required (VERSION 3.10) + +find_package (Doxygen REQUIRED) + +set (QCH_INSTALL_DESTINATION ${CMAKE_INSTALLL_PREFIX}/share/DDE/dtk CACHE STRING "QCH install location") + +set (DOXYGEN_GENERATE_HTML "NO" CACHE STRING "Doxygen HTML output") +set (DOXYGEN_GENERATE_XML "NO" CACHE STRING "Doxygen XML output") +set (DOXYGEN_GENERATE_QHP "YES" CACHE STRING "Doxygen QHP output") +set (DOXYGEN_FILE_PATTERNS *.cpp *.h *.md *.zh_CN.dox CACHE STRING "Doxygen File Patterns") +set (DOXYGEN_PROJECT_NUMBER ${CMAKE_PROJECT_VERSION} CACHE STRING "") # Should be the same as this project is using. +set (DOXYGEN_EXTRACT_STATIC YES) +set (DOXYGEN_OUTPUT_LANGUAGE "Chinese") +set (DOXYGEN_OUTPUT_DIRECTORY ${PROJECT_BINARY_DIR}/docs/) +set (DOXYGEN_QHG_LOCATION "qhelpgenerator") +set (DOXYGEN_QHP_NAMESPACE "org.deepin.dtk.core") +set (DOXYGEN_QCH_FILE "dtkcore.qch") +set (DOXYGEN_QHP_VIRTUAL_FOLDER "dtkcore") +set (DOXYGEN_HTML_EXTRA_STYLESHEET "" CACHE STRING "Doxygen custom stylesheet for HTML output") +set (DOXYGEN_TAGFILES "qtcore.tags=qthelp://org.qt-project.qtcore/qtcore/" CACHE STRING "Doxygen tag files") + +set (DOXYGEN_PREDEFINED + "\"DCORE_BEGIN_NAMESPACE=namespace Dtk { namespace Core {\"" + "\"DCORE_END_NAMESPACE=}}\"" + "\"DCORE_USE_NAMESPACE=using Dtk::Core\"" +) +set (DOXYGEN_MACRO_EXPANSION "YES") +set (DOXYGEN_EXPAND_ONLY_PREDEF "YES") + +doxygen_add_docs (doxygen + ${PROJECT_SOURCE_DIR}/src + ${PROJECT_SOURCE_DIR}/doc + ALL + WORKING_DIRECTORY ${PROJECT_SOURCE_DIR} + COMMENT "Generate documentation via Doxygen" +) + +install (FILES ${PROJECT_BINARY_DIR}/docs/html/dtkcore.qch DESTINATION ${QCH_INSTALL_DESTINATION}) diff --git a/src/dconfig.cpp b/src/dconfig.cpp index 33b04df..18bc6cc 100644 --- a/src/dconfig.cpp +++ b/src/dconfig.cpp @@ -341,9 +341,13 @@ public: virtual QVariant value(const QString &key, const QVariant &fallback) const override { - const QDBusVariant &dv = config->value(key); - const QVariant &v = dv.variant(); - return v.isValid() ? decodeQDBusArgument(v) : fallback; + auto reply = config->value(key); + reply.waitForFinished(); + if (reply.isError()) { + qWarning() << "value error key:" << key << ", error message:" << reply.error().message(); + return fallback; + } + return decodeQDBusArgument(reply.value().variant()); } virtual void setValue(const QString &key, const QVariant &value) override diff --git a/src/dconfigfile.cpp b/src/dconfigfile.cpp index 8db11d5..98d6424 100644 --- a/src/dconfigfile.cpp +++ b/src/dconfigfile.cpp @@ -386,14 +386,18 @@ public: values.remove(key); } - inline void update(const QString &key, const QVariantHash &value) + inline bool update(const QString &key, const QVariantHash &value) { + if (!value.contains("value")) { + return false; + } values[key] = value; + return true; } - inline void updateValue(const QString &key, const QJsonValue &value) + inline bool updateValue(const QString &key, const QJsonValue &value) { - overrideValue(key, "value", value); + return overrideValue(key, "value", value); } inline void updateSerial(const QString &key, const QJsonValue &value) @@ -415,11 +419,15 @@ public: return contents; } private: - void overrideValue(const QString &key, const QString &subkey, const QJsonValue &from) { + bool overrideValue(const QString &key, const QString &subkey, const QJsonValue &from) { const QJsonValue &v = from[subkey]; - if (!v.isUndefined()) - values[key][subkey] = v.toVariant(); + if (v.isUndefined()) { + return false; + } + + values[key][subkey] = v.toVariant(); + return true; } QHash values; @@ -698,14 +706,15 @@ public: // 初始化原始值 for (; i != contents.constEnd(); ++i) { - values.update(i.key(), i.value().toObject().toVariantHash()); + if (!values.update(i.key(), i.value().toObject().toVariantHash())) { + qWarning() << "key:" << i.key() << "has no value"; + return false; + } } } - // for override Q_FOREACH(auto override, overrides) { const QJsonDocument &doc = loadJsonFile(override); - if (doc.isObject()) { const QJsonObject &root = doc.object(); if (!checkMagic(root, MAGIC_OVERRIDE)) { @@ -734,7 +743,10 @@ public: if (values.flags(i.key()) & DConfigFile::NoOverride) continue; - values.updateValue(i.key(), i.value()); + if (!values.updateValue(i.key(), i.value())) { + qWarning() << "key (override):" << i.key() << "has no value"; + return false; + } values.updateSerial(i.key(), i.value()); values.updatePermissions(i.key(), i.value()); } diff --git a/src/dsysinfo.cpp b/src/dsysinfo.cpp index 02c5789..715a84f 100644 --- a/src/dsysinfo.cpp +++ b/src/dsysinfo.cpp @@ -250,10 +250,10 @@ bool DSysInfoPrivate::ensureOsVersion() D_ASSET_EXIT(entry.status() == DDesktopEntry::NoError, entry.status()); // 先获取版本信息 - // ABCDE.xyz + // ABCDE.xyz.abc QString osb = entry.stringValue("OsBuild", "Version"); QStringList osbs = osb.split("."); - ok = (osbs.size() == 2 && osbs.value(0).size() == 5); + ok = (osbs.size() >= 2 && osbs.value(0).size() == 5); D_ASSET_EXIT(ok, "OsBuild version invalid!"); const QStringList &left = osbs.value(0).split(QString(), QString::SkipEmptyParts); @@ -261,19 +261,19 @@ bool DSysInfoPrivate::ensureOsVersion() int idx = 0; osBuild.A = left.value(idx++, "0").toUInt(&ok); - D_ASSET_EXIT(ok, "OsBuild version(a) invalid!"); + D_ASSET_EXIT(ok, "OsBuild version(A) invalid!"); osBuild.B = left.value(idx++, "0").toUInt(&ok); - D_ASSET_EXIT(ok, "OsBuild version(b) invalid!"); + D_ASSET_EXIT(ok, "OsBuild version(B) invalid!"); osBuild.C = left.value(idx++, "0").toUInt(&ok); if (!ok) { auto c = left.value(idx-1, "0").toLatin1(); - D_ASSET_EXIT(c.size()>0, "OsBuild version(c) invalid!"); + D_ASSET_EXIT(c.size()>0, "OsBuild version(C) invalid!"); osBuild.C = uint(c.at(0)); } osBuild.D = left.value(idx++, "0").toUInt(&ok); - D_ASSET_EXIT(ok, "OsBuild version(d) invalid!"); + D_ASSET_EXIT(ok, "OsBuild version(D) invalid!"); osBuild.E = left.value(idx++, "0").toUInt(&ok); - D_ASSET_EXIT(ok, "OsBuild version(e) invalid!"); + D_ASSET_EXIT(ok, "OsBuild version(E) invalid!"); // xyz osBuild.xyz = osbs.value(1).trimmed().toUInt(&ok); @@ -802,8 +802,9 @@ QString DSysInfo::minorVersion() */ QString DSysInfo::buildVersion() { - siGlobal->ensureOsVersion(); - return QString::number(siGlobal->osBuild.xyz); + DDesktopEntry entry(OS_VERSION_FILE); + QString osb = entry.stringValue("OsBuild", "Version"); + return osb.mid(6).trimmed(); } #endif diff --git a/tests/ut_dutil.cpp b/tests/ut_dutil.cpp index e021e96..e904014 100644 --- a/tests/ut_dutil.cpp +++ b/tests/ut_dutil.cpp @@ -309,7 +309,7 @@ TEST_F(ut_DUtil, testOsVersion) entry.setStringValue("专业版", "EditionName[zh_CN]", "Version"); entry.setStringValue("20", "MajorVersion", "Version"); entry.setStringValue("100A", "MinorVersion", "Version"); - entry.setStringValue("11Z18.107", "OsBuild", "Version"); + entry.setStringValue("11Z18.107.109", "OsBuild", "Version"); ASSERT_TRUE(entry.save()); ASSERT_TRUE(DSysInfo::uosSystemName(QLocale("C")) == "UnionTech OS Desktop"); @@ -320,7 +320,7 @@ TEST_F(ut_DUtil, testOsVersion) ASSERT_TRUE(DSysInfo::uosEditionName(QLocale("C")) == "Professional"); ASSERT_TRUE(DSysInfo::majorVersion() == "20"); ASSERT_TRUE(DSysInfo::minorVersion() == "100A"); - ASSERT_TRUE(DSysInfo::buildVersion() == "107"); + ASSERT_TRUE(DSysInfo::buildVersion() == "107.109"); // test minVersion.BC SP1….SP99 for (int i = 0; i < 100; ++i) {