diff --git a/.github/workflows/backup-to-gitlab.yml b/.github/workflows/backup-to-gitlab.yml index c17633593..9863040fd 100644 --- a/.github/workflows/backup-to-gitlab.yml +++ b/.github/workflows/backup-to-gitlab.yml @@ -8,10 +8,8 @@ concurrency: jobs: backup-to-gitlabwh: uses: linuxdeepin/.github/.github/workflows/backup-to-gitlabwh.yml@master - secrets: - BRIDGETOKEN: ${{ secrets.BRIDGETOKEN }} + secrets: inherit backup-to-gitee: uses: linuxdeepin/.github/.github/workflows/backup-to-gitee.yml@master - secrets: - GITEE_SYNC_TOKEN: ${{ secrets.GITEE_SYNC_TOKEN }} + secrets: inherit diff --git a/.github/workflows/call-build-deb.yml b/.github/workflows/call-build-deb.yml deleted file mode 100644 index fd67cbec9..000000000 --- a/.github/workflows/call-build-deb.yml +++ /dev/null @@ -1,17 +0,0 @@ -name: Call build-deb -on: - pull_request_target: - paths-ignore: - - ".github/workflows/**" - types: [ opened, closed, synchronize ] - -concurrency: - group: ${{ github.workflow }}-pull/${{ github.event.number }} - cancel-in-progress: true - -jobs: - check_job: - if: github.event.action != 'closed' || github.event.pull_request.merged - uses: linuxdeepin/.github/.github/workflows/build-deb.yml@master - secrets: - BridgeToken: ${{ secrets.BridgeToken }} diff --git a/.github/workflows/call-build-distribution.yml b/.github/workflows/call-build-distribution.yml index c4c277ef3..a509d5f89 100644 --- a/.github/workflows/call-build-distribution.yml +++ b/.github/workflows/call-build-distribution.yml @@ -10,8 +10,4 @@ on: jobs: check_job: uses: linuxdeepin/.github/.github/workflows/build-distribution.yml@master - secrets: - BUILD_GPG_PRIVATE_KEY: ${{ secrets.BUILD_GPG_PRIVATE_KEY }} - BUILD_SSH_PRIVATE_KEY: ${{ secrets.BUILD_SSH_PRIVATE_KEY }} - WEBDAV_PASSWD: ${{ secrets.WEBDAV_PASSWD }} - WEBDAV_USER: ${{ secrets.WEBDAV_USER }} + secrets: inherit diff --git a/.github/workflows/call-chatOps.yml b/.github/workflows/call-chatOps.yml index 0eb0b7bc2..18c76bc33 100644 --- a/.github/workflows/call-chatOps.yml +++ b/.github/workflows/call-chatOps.yml @@ -6,5 +6,4 @@ on: jobs: chatopt: uses: linuxdeepin/.github/.github/workflows/chatOps.yml@master - secrets: - APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} + secrets: inherit diff --git a/.github/workflows/call-clacheck.yml b/.github/workflows/call-clacheck.yml index 3fa07a302..fe16a0733 100644 --- a/.github/workflows/call-clacheck.yml +++ b/.github/workflows/call-clacheck.yml @@ -12,5 +12,4 @@ concurrency: jobs: clacheck: uses: linuxdeepin/.github/.github/workflows/cla-check.yml@master - secrets: - APP_PRIVATE_KEY: ${{ secrets.APP_PRIVATE_KEY }} + secrets: inherit diff --git a/.github/workflows/call-tag-build.yml b/.github/workflows/call-tag-build.yml deleted file mode 100644 index 6420b293b..000000000 --- a/.github/workflows/call-tag-build.yml +++ /dev/null @@ -1,13 +0,0 @@ -name: tag build -on: - push: - tags: "*" - -concurrency: - group: ${{ github.workflow }} - cancel-in-progress: true - -jobs: - build: - uses: linuxdeepin/.github/.github/workflows/tag-build.yml@master - secrets: inherit diff --git a/.github/workflows/cppcheck.yml b/.github/workflows/cppcheck.yml index 6a92b5467..e808a89b1 100644 --- a/.github/workflows/cppcheck.yml +++ b/.github/workflows/cppcheck.yml @@ -14,7 +14,7 @@ jobs: runs-on: ubuntu-latest steps: - run: export - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha }} persist-credentials: false diff --git a/.obs/workflows.yml b/.obs/workflows.yml new file mode 100644 index 000000000..9a3e95dab --- /dev/null +++ b/.obs/workflows.yml @@ -0,0 +1,44 @@ +test_build: + steps: + - link_package: + source_project: deepin:Develop:dde + source_package: %{SCM_REPOSITORY_NAME} + target_project: deepin:CI + + - configure_repositories: + project: deepin:CI + repositories: + - name: deepin_develop + paths: + - target_project: deepin:CI + target_repository: deepin_develop + architectures: + - x86_64 + - aarch64 + + - name: debian + paths: + - target_project: deepin:CI + target_repository: debian_sid + architectures: + - x86_64 + + filters: + event: pull_request + +tag_build: + steps: + - branch_package: + source_project: deepin:Develop:dde + source_package: %{SCM_REPOSITORY_NAME} + target_project: deepin:Unstable:dde + filters: + event: tag_push + +commit_build: + steps: + - trigger_services: + project: deepin:Develop:dde + package: %{SCM_REPOSITORY_NAME} + filters: + event: push diff --git a/.reuse/dep5 b/.reuse/dep5 index bd692c110..7696d29f8 100644 --- a/.reuse/dep5 +++ b/.reuse/dep5 @@ -4,7 +4,7 @@ Upstream-Contact: UnionTech Software Technology Co., Ltd. <> Source: https://github.com/linuxdeepin/deepin-devicemanager # ci -Files: .github/* +Files: .github/* .obs/workflows.yml Copyright: None License: CC0-1.0 @@ -18,8 +18,8 @@ Files: *.toml *.json *conf *.yaml *.sh Copyright: UnionTech Software Technology Co., Ltd. License: CC0-1.0 -# debian -Files: debian/* +# debian rpm +Files: debian/* rpm/* Copyright: UnionTech Software Technology Co., Ltd. License: CC0-1.0 @@ -34,7 +34,7 @@ Copyright: UnionTech Software Technology Co., Ltd. License: CC-BY-4.0 # deepin-devicemanager-server -Files: deepin-devicemanager-server/deepin-devicemanager-server.service +Files: deepin-devicemanager-server/deepin-devicecontrol/*.service Copyright: UnionTech Software Technology Co., Ltd. License: CC-BY-4.0 @@ -49,7 +49,7 @@ Copyright: UnionTech Software Technology Co., Ltd. License: LGPL-3.0-or-later # src -Files: deepin-devicemanager/src/* deepin-devicemanager-server/src/* +Files: deepin-devicemanager/src/* deepin-devicemanager-server/deepin-devicecontrol/src/* deepin-devicemanager-server/deepin-deviceinfo/src/* Copyright: UnionTech Software Technology Co., Ltd. License: GPL-3.0-or-later @@ -66,5 +66,4 @@ License: GPL-3.0-or-later # 3rdparty/QtXlsxWriter Files: deepin-devicemanager/3rdparty/QtXlsxWriter/* Copyright: 2013-2014 Debao Zhang -License: MIT - +License: MIT \ No newline at end of file diff --git a/.tx/config b/.tx/config index a2b52d743..136f1e465 100644 --- a/.tx/config +++ b/.tx/config @@ -3,21 +3,21 @@ host = https://www.transifex.com minimum_perc = 80 mode = developer -[deepin-device-manager.deepin-device-manager] +[o:linuxdeepin:p:deepin-device-manager:r:deepin-device-manager] file_filter = deepin-devicemanager/translations/deepin-devicemanager_.ts source_file = deepin-devicemanager/translations/deepin-devicemanager.ts preTranslate_file = deepin-devicemanager/translations/policy source_lang = en type = QT -[deepin-device-manager.deepin-device-manager-desktop] +[o:linuxdeepin:p:deepin-device-manager:r:deepin-device-manager-desktop] file_filter = deepin-devicemanager/translations/desktop/desktop_.ts source_file = deepin-devicemanager/translations/desktop/desktop.ts preTranslate_file = deepin-devicemanager/translations/policy source_lang = en type = QT -[deepin-device-manager.deepin-device-manager-policy] +[o:linuxdeepin:p:deepin-device-manager:r:deepin-device-manager-policy] file_filter = deepin-devicemanager/translations/policy/policy_.ts source_file = deepin-devicemanager/translations/policy/policy.ts preTranslate_file = deepin-devicemanager/translations/policy diff --git a/.tx/deepin.conf b/.tx/deepin.conf index 45cd054c3..c230b4f88 100644 --- a/.tx/deepin.conf +++ b/.tx/deepin.conf @@ -1,2 +1,2 @@ [transifex] -branch = m20 \ No newline at end of file +branch = m20 diff --git a/.tx/transifex.yaml b/.tx/transifex.yaml new file mode 100644 index 000000000..5fc304101 --- /dev/null +++ b/.tx/transifex.yaml @@ -0,0 +1,21 @@ +# SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd. +# +# SPDX-License-Identifier: CC0-1.0 +filters: + - filter_type: file + source_file: deepin-devicemanager/translations/deepin-devicemanager.ts + file_format: QT + source_language: en_US + translation_files_expression: deepin-devicemanager/translations/deepin-devicemanager_.ts + - filter_type: file + source_file: deepin-devicemanager/translations/desktop/desktop.ts + file_format: QT + source_language: en_US + translation_files_expression: deepin-devicemanager/translations/desktop/desktop_.ts + - filter_type: file + source_file: deepin-devicemanager/translations/policy/policy.ts + file_format: QT + source_language: en_US + translation_files_expression: deepin-devicemanager/translations/policy/policy_.ts +settings: + pr_branch_name: transifex_update_ diff --git a/CMakeLists.txt b/CMakeLists.txt index f925fe2dc..bb4f46ca7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,16 @@ if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX /usr) endif() +set(DISABLE_DRIVER false CACHE BOOL "disable driver") +if (DISABLE_DRIVER) + add_definitions(-DDISABLE_DRIVER) +endif() + +set(DISABLE_POLKIT false CACHE BOOL "disable polkit debug") +if(CMAKE_BUILD_TYPE STREQUAL "Debug") + add_definitions(-DDISABLE_POLKIT) +endif() + add_subdirectory(${CMAKE_SOURCE_DIR}/deepin-devicemanager) add_subdirectory(${CMAKE_SOURCE_DIR}/deepin-devicemanager-server) @@ -12,4 +22,4 @@ add_subdirectory(${CMAKE_SOURCE_DIR}/deepin-devicemanager-server) if(CMAKE_COVERAGE_ARG STREQUAL "CMAKE_COVERAGE_ARG_ON") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -fprofile-arcs -ftest-coverage") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -fprofile-arcs -ftest-coverage") -endif() +endif() \ No newline at end of file diff --git a/debian/changelog b/debian/changelog index f12a87537..2d14d1897 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,203 @@ +deepin-devicemanager (6.0.29) unstable; urgency=medium + + * fix: toml filename del serialnumber(Bug: 272885) + * fix: bluetooth add alias proper(Bug: 269257) + * fix: [cmd] Remove bash calls and system script calls(Task: 362323) + * fix: [cmd] Add handling of the 'cat/boot/config*' command(Task: 362323) + * fix: adpator V23 dde for PS2 mouse wakeup(Bug: 271823) + * chore: [security] add polkit support (#355) + Thanks to nullptr + * feat: [translation]add transifex config(Task: 361363) + * fix: add polkit support for root app(Bug: 273929) + * fix: add S3 wakeup detect support(Bug: 273929) + * fix: after S3 wakeup init hardware must delay(Bug: 273929) + * chore: [security] add polkit with setSingleInstance(Task: 364005) + * fix:rounded ufs disk capacity(Bug: 276121) + * fix: the screen size unbelive(Bug: 277559) + * chore: [security] strong the dbus interface(Task: 365257) + * fix: display of the number of a logical processor (Bug: 278565) + * chore: Solve the problem that the plug-in service fails to start + due to security reinforcement. + * fix: support ext plugin monitor(Bug: 283735) + * fix: Resolve the issue of empty device information display(Bug: 281813) + * fix: fixed the issue that deb verify failed + + -- renbin Fri, 22 Nov 2024 17:33:20 +0800 + +deepin-devicemanager (6.0.28) unstable; urgency=medium + + * new version 6.0.28. + + -- shuaijie Mon, 02 Sep 2024 17:02:00 +0800 + +deepin-devicemanager (6.0.27) unstable; urgency=medium + + * new version 6.0.27. + + -- shuaijie Thu, 26 Jun 2024 11:19:00 +0800 + +deepin-devicemanager (6.0.26) unstable; urgency=medium + + * new version 6.0.26. + + -- shuaijie Thu, 17 Apr 2024 16:19:06 +0800 + +deepin-devicemanager (6.0.25) unstable; urgency=medium + + * new version 6.0.25. + + -- shuaijie Sun, 07 Apr 2024 10:19:06 +0800 + +deepin-devicemanager (6.0.24) unstable; urgency=medium + + * Update tag to 6.0.24. + + -- lvwujun Thu, 28 Mar 2024 17:03:34 +0800 + +deepin-devicemanager (6.0.23) unstable; urgency=medium + + * new version 6.0.23 + + -- shuaijie Wed, 13 Mar 2024 14:50:06 +0800 + +deepin-devicemanager (6.0.22) unstable; urgency=medium + + * new version 6.0.22 + + -- shuaijie Fri, 01 Mar 2024 14:50:01 +0800 + +deepin-devicemanager (6.0.21) unstable; urgency=medium + + * fix some bugs. + + -- fengli Wed, 21 Feb 2024 16:57:16 +0800 + +deepin-devicemanager (6.0.20) unstable; urgency=medium + + * new version 6.0.20 + + -- shuaijie Thu, 01 Feb 2024 14:10:01 +0800 + +deepin-devicemanager (6.0.19) unstable; urgency=medium + + * new version 6.0.19 + + -- shuaijie Fri, 19 Jan 2024 13:20:01 +0800 + +deepin-devicemanager (6.0.18) unstable; urgency=medium + + * new version 6.0.18 + + -- shuaijie Thu, 10 Jan 2024 13:40:06 +0800 + +deepin-devicemanager (6.0.17) unstable; urgency=medium + + * new version 6.0.17 + + -- shuaijie Fri, 05 Jan 2024 10:20:11 +0800 + +deepin-devicemanager (6.0.16) unstable; urgency=medium + + * new version 6.0.16 + + -- shuaijie Fri, 22 Dec 2023 11:20:11 +0800 + +deepin-devicemanager (6.0.15) unstable; urgency=medium + + * new version 6.0.15 + + -- shuaijie Wed, 6 Dec 2023 13:26:01 +0800 + +deepin-devicemanager (6.0.14) unstable; urgency=medium + + * feat: drivers backup and restore + + -- fengli Thu, 09 Nov 2023 13:13:41 +0800 + +deepin-devicemanager (6.0.13) unstable; urgency=medium + + * new version 6.0.13 + + -- fengli Thu, 09 Nov 2023 13:08:31 +0800 + +deepin-devicemanager (6.0.12) unstable; urgency=medium + + * Community Edition removal devicemanager.list. + + -- LiChengGang Tue, 29 Aug 2023 17:11:02 +0800 + +deepin-devicemanager (6.0.11) unstable; urgency=medium + + * new version 6.0.11 + + -- shuaijie Wed, 16 Aug 2023 15:44:01 +0800 + +deepin-devicemanager (6.0.10) unstable; urgency=medium + + * new version 6.0.10 + + -- shuaijie Wed, 19 Jul 2023 13:12:08 +0800 + +deepin-devicemanager (6.0.9) unstable; urgency=medium + + * new version 6.0.9 + + -- shuaijie Fri, 16 Jun 2023 11:46:16 +0800 + +deepin-devicemanager (6.0.8) unstable; urgency=medium + + * new version 6.0.8 + + -- shuaijie Wed, 7 Jun 2023 10:35:06 +0800 + +deepin-devicemanager (6.0.7) unstable; urgency=medium + + * new version 6.0.7 + + -- shuaijie Fri, 12 May 2023 11:17:25 +0800 + +deepin-devicemanager (6.0.6) unstable; urgency=medium + + * New version 6.0.6 + + -- liuzheng Mon, 13 Mar 2023 15:31:31 +0800 + +deepin-devicemanager (6.0.5) unstable; urgency=medium + + * update version. + + -- liuzheng Mon, 16 Jan 2023 17:46:54 +0800 + +deepin-devicemanager (6.0.4) unstable; urgency=medium + + * New version 6.0.4 + + -- wangyu Fri, 6 Jan 2023 10:01:18 +0800 + +deepin-devicemanager (6.0.3) unstable; urgency=medium + + * New version 6.0.3 + + -- wangyu Wed, 9 Nov 2022 10:03:18 +0800 + +deepin-devicemanager (6.0.2) unstable; urgency=medium + + * New version 6.0.2 + + -- wangyu Sat, 29 Oct 2022 15:44:00 +0800 + +deepin-devicemanager (6.0.1) unstable; urgency=medium + + * New version 6.0.1 + + -- liuzheng Fri, 21 Oct 2022 10:08:00 +0800 + +deepin-devicemanager (6.0.0) unstable; urgency=medium + + * New version 6.0.0 + + -- wangyu Fri, 21 Oct 2022 10:08:00 +0800 + deepin-devicemanager (5.9.5) unstable; urgency=medium * New version 5.9.5 diff --git a/debian/control b/debian/control index 529bf198e..318d2ddf9 100644 --- a/debian/control +++ b/debian/control @@ -2,12 +2,12 @@ Source: deepin-devicemanager Section: devel Priority: optional Maintainer: Packages -Build-Depends: debhelper (>= 11), pkg-config, cmake, qtbase5-dev, libzmq3-dev, libdtkwidget-dev, libdtkgui-dev, qtbase5-private-dev, libdframeworkdbus-dev, libcups2-dev, libdtkcore-dev (>= 5.2.2.2),libgtest-dev,libkmod-dev,libqapt-dev,libqapt3-runtime,libpolkit-qt5-1-dev,qttools5-dev,qttools5-dev-tools,deepin-desktop-base +Build-Depends: debhelper (>= 11), pkg-config, cmake, qtbase5-dev, libzmq3-dev, libdtkwidget-dev, libdtkgui-dev, qtbase5-private-dev, libcups2-dev, libdtkcore-dev (>= 5.2.2.2),libgtest-dev,libkmod-dev,libqapt-dev,libqapt3-runtime,libpolkit-qt5-1-dev,qttools5-dev,qttools5-dev-tools,deepin-desktop-base,libdeepin-service-framework-dev Standards-Version: 4.1.3 Package: deepin-devicemanager Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends}, dmidecode, x11-xserver-utils, hwinfo, cups, upower, deepin-shortcut-viewer, lshw, libdtkcore5 (>= 5.2.2.2),libkmod2 +Depends: ${shlibs:Depends}, ${misc:Depends}, dmidecode, x11-xserver-utils, hwinfo, cups, upower, deepin-shortcut-viewer, lshw, libdtkcore5 (>= 5.2.2.2),libkmod2,libdeepin-service-framework,deepin-service-manager Recommends: uos-reporter, deepin-event-log, deepin-elf-sign-tool Description: Device Manager is a handy tool for viewing hardware information and managing the devices. Device Manager helps users manage hardware devices installed on computers, diff --git a/debian/deepin-devicemanager.postinst b/debian/deepin-devicemanager.postinst new file mode 100644 index 000000000..54ebad5ad --- /dev/null +++ b/debian/deepin-devicemanager.postinst @@ -0,0 +1,17 @@ +#!/bin/bash +export APTFILEPATH="/etc/apt/sources.list.d/devicemanager.list" +OS_VERSION=/etc/os-version +if [[ ! -e $OS_VERSION ]] +then + echo "Not Support System! /etc/os-version NOT FOUND!!" && exit +fi + +if [ -f $APTFILEPATH ]; then + Edition=`grep "EditionName" $OS_VERSION |head -n 1 |cut -d '=' -f 2` + if [ $Edition == "Community" ]; then + echo "del devicemanager.list" + rm $APTFILEPATH + fi + +fi + diff --git a/deepin-devicemanager-server/CMakeLists.txt b/deepin-devicemanager-server/CMakeLists.txt index 59397dc4d..c8b62421c 100644 --- a/deepin-devicemanager-server/CMakeLists.txt +++ b/deepin-devicemanager-server/CMakeLists.txt @@ -1,87 +1,8 @@ -cmake_minimum_required(VERSION 3.7) +project(deepin-devicemanager-server C CXX) -set(APP_BIN_NAME "deepin-devicemanager-server") -set(SYSTEMD_SERVER "${CMAKE_CURRENT_SOURCE_DIR}/deepin-devicemanager-server.service") -set(DBUS_CONFIG "${CMAKE_CURRENT_SOURCE_DIR}/com.deepin.devicemanager.conf") -project(${APP_BIN_NAME}) - -set(CMAKE_INCLUDE_CURRENT_DIR ON) - -set(CMAKE_AUTOUIC ON) -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) - -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED ON) -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong -D_FORTITY_SOURCE=1 -z noexecstack -pie -fPIC -z lazy") - -# Find the library -FIND_PACKAGE(PkgConfig REQUIRED) -FIND_PACKAGE(QApt REQUIRED) -find_package(PolkitQt5-1 REQUIRED) -find_package(DFrameworkdbus REQUIRED) - -PKG_SEARCH_MODULE(kmod REQUIRED libkmod IMPORTED_TARGET) - -# 设置包含头文件的时候不用包含路径 begin **************************************************************************************** -MACRO(SUBDIRLIST result curdir) - FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) - SET(dirlist "") - FOREACH(child ${children}) - IF(IS_DIRECTORY ${curdir}/${child}) - LIST(APPEND dirlist ${child}) - ENDIF() - ENDFOREACH() - SET(${result} ${dirlist}) -ENDMACRO() -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) -SUBDIRLIST(dirs ${CMAKE_CURRENT_SOURCE_DIR}/src) -foreach(dir ${dirs}) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/${dir}) -endforeach() -# 设置包含头文件的时候不用包含路径 end **************************************************************************************** - -#定义社区版宏begin -message("begin") -execute_process(COMMAND cat "/etc/os-version" - OUTPUT_VARIABLE output_var) - -if(output_var MATCHES "Community") - option(COMMUNITY "OS community" ON) - if(COMMUNITY) - add_definitions(-DCOMMUNITY) - endif() -endif() - -message("end") -#定义社区版宏end - -# 引用ZeroMQ的库 begin **************************************************************** -include_directories("/usr/include/cups/") -link_libraries("cups") -link_libraries("udev") -# 引用ZeroMQ的库 end ***************************************************************** - -find_package(Qt5 COMPONENTS - Core - DBus - Sql - Network REQUIRED) -find_package(DtkCore REQUIRED) - -file(GLOB_RECURSE SRC_CPP ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp) -file(GLOB_RECURSE SRC_H ${CMAKE_CURRENT_LIST_DIR}/src/*.h) -add_executable(${PROJECT_NAME} ${SRC_CPP} ${SRC_H}) - -target_link_libraries(${APP_BIN_NAME} - ${DtkCore_LIBRARIES} - ${DFrameworkdbus_LIBRARIES} - Qt5::Core Qt5::DBus Qt5::Sql Qt5::Network PolkitQt5-1::Agent kmod QApt) - -# Install files -install(TARGETS ${APP_BIN_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) -install(FILES ${SYSTEMD_SERVER} DESTINATION /lib/systemd/system) -install(FILES ${DBUS_CONFIG} DESTINATION ${CMAKE_INSTALL_SYSCONFDIR}/dbus-1/system.d) +add_subdirectory(deepin-deviceinfo) +add_subdirectory(deepin-devicecontrol) +add_subdirectory(customgpuinfo) #TEST-------------------------------------------------- if (CMAKE_COVERAGE_ARG STREQUAL "CMAKE_COVERAGE_ARG_ON") diff --git a/deepin-devicemanager-server/com.deepin.devicemanager.conf b/deepin-devicemanager-server/com.deepin.devicemanager.conf deleted file mode 100755 index 730d1040c..000000000 --- a/deepin-devicemanager-server/com.deepin.devicemanager.conf +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/deepin-devicemanager-server/customgpuinfo/CMakeLists.txt b/deepin-devicemanager-server/customgpuinfo/CMakeLists.txt new file mode 100644 index 000000000..e9071dde6 --- /dev/null +++ b/deepin-devicemanager-server/customgpuinfo/CMakeLists.txt @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.7) + +set(BIN_NAME "customgpuinfo") + +find_package(Qt5 COMPONENTS Core REQUIRED) + +file(GLOB_RECURSE SRC + "${CMAKE_CURRENT_SOURCE_DIR}/*.h" + "${CMAKE_CURRENT_SOURCE_DIR}/*.cpp" +) + +add_executable(${BIN_NAME} + ${SRC} +) + +target_include_directories(${BIN_NAME} PUBLIC + Qt5::Core +) + +target_link_libraries(${BIN_NAME} PRIVATE + Qt5::Core +) + +install(TARGETS ${BIN_NAME} DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/deepin-devicemanager) diff --git a/deepin-devicemanager-server/customgpuinfo/main.cpp b/deepin-devicemanager-server/customgpuinfo/main.cpp new file mode 100644 index 000000000..c26460bd4 --- /dev/null +++ b/deepin-devicemanager-server/customgpuinfo/main.cpp @@ -0,0 +1,121 @@ +// SPDX-FileCopyrightText: 2025 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include +#include +#include +#include +#include + +#include + +// 名称("Name") 厂商("Vendor") 型号("Model") 版本(Version) 显存("Graphics Memory") + +constexpr char kName[] { "Name" }; +constexpr char kVendor[] { "Vendor" }; +constexpr char kModel[] { "Model" }; +constexpr char kVersion[] { "Version" }; +constexpr char kGraphicsMemory[] { "Graphics Memory" }; + +bool getGpuBaseInfo(QMap &mapInfo) +{ + QProcess process; + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + process.setProcessEnvironment(env); + process.start("/usr/bin/glxinfo", QStringList() << "-B"); + if (!process.waitForFinished(3000)) { + qCritical() << "Error executing glxinfo:" << process.errorString(); + return false; + } + + QString output = QString::fromLocal8Bit(process.readAllStandardOutput()); + QStringList lines = output.split('\n'); + QRegularExpression regex("^([^:]+):\\s*(.+)$"); + for (const QString &line : lines) { + QRegularExpressionMatch match = regex.match(line); + if (match.hasMatch()) { + QString key = match.captured(1).trimmed(); + QString value = match.captured(2).trimmed(); + if (key == "OpenGL renderer string") { + mapInfo.insert(kName, value); + mapInfo.insert(kModel, value); + } else if (key == "OpenGL vendor string") { + mapInfo.insert(kVendor, value); + } + } + } + + return true; +} + +bool getGpuMemInfoForFTDTM(QMap &mapInfo) +{ + const QString filePath = "/sys/kernel/debug/gc/meminfo"; + QString totalValue; + bool foundTotal = false; + + QFile file(filePath); + if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { + qCritical() << "Error opening /sys/kernel/debug/gc/meminfo:" << file.errorString(); + return false; + } + + QString content = QString::fromUtf8(file.readAll()); + file.close(); + + if (content.isEmpty()) { + qCritical() << "Error: /sys/kernel/debug/gc/meminfo File is empty!"; + return false; + } + + QRegularExpression system0Regex(R"(POOL SYSTEM0:*(.*?)POOL VIRTUAL:)", + QRegularExpression::DotMatchesEverythingOption); + QRegularExpressionMatch system0Match = system0Regex.match(content); + + if (!system0Match.hasMatch()) { + qCritical() << "Error: Failed to find SYSTEM0 section"; + return false; + } + + QString system0Content = system0Match.captured(1); + QRegularExpression totalRegex(R"(Total\s*:\s*(\d+)\s+B)"); + QRegularExpressionMatch totalMatch = totalRegex.match(system0Content); + if (totalMatch.hasMatch()) { + totalValue = totalMatch.captured(1); + foundTotal = true; + } + + if (!foundTotal || totalValue.isEmpty()) { + qCritical() << "Error: Failed to find Total value in SYSTEM0 content"; + return false; + } + + bool ok; + quint64 memSize = totalValue.trimmed().toULong(&ok, 10); + if (ok && memSize >= 1048576) { + memSize /= 1048576; + auto curSize = memSize / 1024.0; + if (curSize >= 1) { + totalValue = QString::number(curSize) + "GB"; + } else { + totalValue = QString::number(memSize) + "MB"; + } + } + + mapInfo.insert(kGraphicsMemory, totalValue); + + return true; +} + +int main(int argc, char *argv[]) +{ + QMap mapInfo; + if (getGpuBaseInfo(mapInfo) && getGpuMemInfoForFTDTM(mapInfo)) { + for (auto it = mapInfo.begin(); it != mapInfo.end(); ++it) + std::cout << it.key().toStdString() << ": " << it.value().toStdString() << std::endl; + return 0; + } else { + return 1; + } +} diff --git a/deepin-devicemanager-server/deepin-devicecontrol/CMakeLists.txt b/deepin-devicemanager-server/deepin-devicecontrol/CMakeLists.txt new file mode 100644 index 000000000..7521bb0fb --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/CMakeLists.txt @@ -0,0 +1,86 @@ +cmake_minimum_required(VERSION 3.7) + +set(BIN_NAME "deepin-devicecontrol") + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong -D_FORTITY_SOURCE=1 -z noexecstack -pie -fPIC -z lazy") + +# 设置包含头文件的时候不用包含路径 begin **************************************************************************************** +MACRO(SUBDIRLIST result curdir) + FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) + SET(dirlist "") + FOREACH(child ${children}) + IF(IS_DIRECTORY ${curdir}/${child}) + LIST(APPEND dirlist ${child}) + ENDIF() + ENDFOREACH() + SET(${result} ${dirlist}) +ENDMACRO() +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../deepin-devicemanager/src/DDLog) +SUBDIRLIST(dirs ${CMAKE_CURRENT_SOURCE_DIR}/src) +foreach(dir ${dirs}) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/${dir}) +endforeach() +# 设置包含头文件的时候不用包含路径 end **************************************************************************************** + +file(GLOB_RECURSE SRC_CPP ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp) +file(GLOB_RECURSE SRC_H ${CMAKE_CURRENT_LIST_DIR}/src/*.h) + +find_package(PkgConfig REQUIRED) +find_package(Qt5 COMPONENTS Core DBus Network Sql REQUIRED) +find_package(DtkCore REQUIRED) +find_package(PolkitQt5-1 REQUIRED) +find_package(deepin-qdbus-service REQUIRED) + +if(NOT DISABLE_DRIVER) + find_package(QApt REQUIRED) + PKG_SEARCH_MODULE(kmod REQUIRED libkmod IMPORTED_TARGET) +endif() + +add_executable(${BIN_NAME} + ${SRC_CPP} + ${SRC_H} +) + +include_directories("/usr/include/cups/") + +add_definitions(-DSERVICE_CONFIG_DIR="${CMAKE_INSTALL_PREFIX}/share/deepin-service-manager/") + +target_include_directories(${BIN_NAME} PUBLIC + Qt5::Core + Qt5::DBus + Qt5::Network + Qt5::Sql + ${deepin-qdbus-service_INCLUDE_DIR} +) + +target_link_libraries(${BIN_NAME} PRIVATE + Qt5::Core + Qt5::DBus + Qt5::Network + Qt5::Sql + PolkitQt5-1::Agent + ${DtkCore_LIBRARIES} + ${deepin-qdbus-service_LIBRARIES} + cups + ) +if(NOT DISABLE_DRIVER) + target_link_libraries(${BIN_NAME} PRIVATE + kmod + QApt + ) +endif() + +install(TARGETS ${BIN_NAME} DESTINATION ${CMAKE_INSTALL_BINDIR}) +install(FILES ${BIN_NAME}.json DESTINATION share/deepin-service-manager/other/) +install(FILES org.deepin.devicecontrol.conf DESTINATION share/dbus-1/system.d/) +install(FILES org.deepin.DeviceControl.service DESTINATION share/dbus-1/system-services/) +install(FILES deepin-devicecontrol.service DESTINATION lib/systemd/system/) +# 添加安全加固策略 +install(DIRECTORY deepin-service-group@.service.d DESTINATION /etc/systemd/system/) \ No newline at end of file diff --git a/deepin-devicemanager-server/deepin-devicecontrol/deepin-devicecontrol.json b/deepin-devicemanager-server/deepin-devicecontrol/deepin-devicecontrol.json new file mode 100644 index 000000000..6391c805e --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/deepin-devicecontrol.json @@ -0,0 +1,16 @@ +{ + "name": "org.deepin.DeviceControl", + "policyStartType": "OnDemand", + "idleTime": 10, + "whitelists": [ + { + "name": "w1", + "process": ["/usr/bin/deepin-devicemanager"] + } + ], + "policy": [ + { + "path": "/org/deepin/DeviceControl" + } + ] +} diff --git a/deepin-devicemanager-server/deepin-devicecontrol/deepin-devicecontrol.service b/deepin-devicemanager-server/deepin-devicecontrol/deepin-devicecontrol.service new file mode 100644 index 000000000..25a1ec2e3 --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/deepin-devicecontrol.service @@ -0,0 +1,12 @@ +[Unit] +Description=Deepin Device Control Daemon + +[Service] +Type=dbus +BusName=org.deepin.DeviceControl +ExecStart=/usr/bin/deepin-devicecontrol +CapabilityBoundingSet=~CAP_NET_RAW +MemoryLimit=8G + +[Install] +WantedBy=multi-user.target diff --git a/deepin-devicemanager-server/deepin-devicecontrol/deepin-service-group@.service.d/deepin-service-manager-override.conf b/deepin-devicemanager-server/deepin-devicecontrol/deepin-service-group@.service.d/deepin-service-manager-override.conf new file mode 100644 index 000000000..f107f8ca4 --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/deepin-service-group@.service.d/deepin-service-manager-override.conf @@ -0,0 +1,6 @@ +# 由于设备管理器对于系统资源的访问,安全加固时需要放开一些权限 +[Service] +DevicePolicy= +PrivateDevices=no +PrivateNetwork=no +RestrictAddressFamilies= diff --git a/deepin-devicemanager-server/deepin-devicecontrol/org.deepin.DeviceControl.service b/deepin-devicemanager-server/deepin-devicecontrol/org.deepin.DeviceControl.service new file mode 100644 index 000000000..5ded09195 --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/org.deepin.DeviceControl.service @@ -0,0 +1,4 @@ +[D-BUS Service] +Name=org.deepin.DeviceControl +Exec=/usr/bin/false +SystemdService=deepin-devicecontrol.service diff --git a/deepin-devicemanager-server/deepin-devicecontrol/org.deepin.devicecontrol.conf b/deepin-devicemanager-server/deepin-devicecontrol/org.deepin.devicecontrol.conf new file mode 100644 index 000000000..89c75e80c --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/org.deepin.devicecontrol.conf @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/controlinterface.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/controlinterface.cpp new file mode 100644 index 000000000..23f19260d --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/controlinterface.cpp @@ -0,0 +1,520 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "controlinterface.h" +#include "drivermanager.h" +#include "modcore.h" +#include "utils.h" +#include "debinstaller.h" +#include "enablesqlmanager.h" +#include "enableutils.h" +#include "wakeuputils.h" +#include "DDLog.h" + +#include +#include +#include +#include +#include +#include + +#include + +// 系统库文件 +#include +#include +#include + +using namespace PolkitQt1; +using namespace DDLog; +static int getPidByName(const QString &taskName) +{ + DIR *dir = opendir("/proc"); + int pid = -1; + if (nullptr == dir) + return pid; + + struct dirent *ptr = nullptr; + while ((ptr = readdir(dir)) != nullptr) { + if ((strcmp(ptr->d_name, ".") == 0) || (strcmp(ptr->d_name, "..") == 0) || DT_DIR != ptr->d_type) + continue; + char filepath[1024] = { 0 }; + sprintf(filepath, "/proc/%s/cmdline", ptr->d_name); + FILE *fp = fopen(filepath, "r"); + if (nullptr == fp) + continue; + + char buf[1024] = { 0 }; + if (fgets(buf, 1023, fp) == nullptr) { + fclose(fp); + continue; + } + char cur_task_name[1024] = { 0 }; + sscanf(buf, "%s", cur_task_name); + fclose(fp); + if (QString(cur_task_name).endsWith(taskName)) { + bool ok = false; + int curPid = QString(ptr->d_name).toInt(&ok); + if (ok) { + pid = curPid; + break; + } + } + } + closedir(dir); + + return pid; +} + + +bool ControlInterface::getUserAuthorPasswd() +{ +#ifdef DISABLE_POLKIT + return true; +#endif + if (connection().interface()->serviceUid(message().service()).value() == 0) { + return true; + } + + int pid = getPidByName("deepin-devicemanager"); + if (pid >= 0) { + Authority::Result result = Authority::instance()->checkAuthorizationSync("com.deepin.deepin-devicemanager.checkAuthentication", + UnixProcessSubject(pid), + Authority::AllowUserInteraction); + return result == Authority::Yes; + } + + return false; +} +ControlInterface::ControlInterface(QObject *parent) + : QDBusService(parent) +#ifndef DISABLE_DRIVER + , + mp_drivermanager(new DriverManager(this)), + pcore(new ModCore(this)) +#endif +{ + initPolicy(QDBusConnection::SystemBus, QString(SERVICE_CONFIG_DIR) + "other/deepin-devicecontrol.json"); + initConnects(); +} + +void ControlInterface::initConnects() +{ +#ifndef DISABLE_DRIVER + connect(mp_drivermanager, &DriverManager::sigProgressDetail, this, &ControlInterface::sigProgressDetail); + connect(mp_drivermanager, &DriverManager::sigDownloadProgressChanged, this, &ControlInterface::sigDownloadProgressChanged); + connect(mp_drivermanager, &DriverManager::sigDownloadFinished, this, &ControlInterface::sigDownloadFinished); + connect(mp_drivermanager, &DriverManager::sigInstallProgressChanged, this, &ControlInterface::sigInstallProgressChanged); + connect(mp_drivermanager, &DriverManager::sigFinished, this, [=](bool bsuccess, QString msg) { + lockTimer(false); + emit sigFinished(bsuccess, msg); + }); + connect(mp_drivermanager, &DriverManager::sigInstallProgressFinished, this, [=](bool bsuccess, int err) { + lockTimer(false); + emit sigInstallProgressFinished(bsuccess, err); + }); +#endif +} + +QString ControlInterface::getRemoveInfo() +{ + return EnableSqlManager::getInstance()->removedInfo(); +} + +QString ControlInterface::getAuthorizedInfo() +{ + return EnableSqlManager::getInstance()->authorizedInfo(); +} + +bool ControlInterface::enable(const QString &hclass, const QString &name, const QString &path, const QString &value, bool enable_device, const QString strDriver) +{ + if (!getUserAuthorPasswd()) + return {}; + // 网卡通过ioctl禁用 + // 先判断是否是网卡 + QRegExp reg("^[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}$"); + if (reg.exactMatch(value)) { + return ioctlEnableNetwork(hclass, name, path, value, enable_device, strDriver); + } + + // 先从数据库中查找路径,防止设备更换usb接口 + QString sPath = EnableSqlManager::getInstance()->authorizedPath(value); + sPath = path; + + // 判断是内置设备,还是外设,内置设备通过remove文件禁用,外设通过authorized文件禁用 + bool res = false; + if (QFile::exists("/sys" + sPath + QString("/authorized"))) { + modifyPath(sPath); + res = authorizedEnable(hclass, name, sPath, value, enable_device, strDriver); + } else { /* if(QFile::exists("/sys" + sPath + QString("/remove")))*/ + res = removeEnable(hclass, name, path, value, enable_device, strDriver); + } + emit sigUpdate(); + return res; +} + +bool ControlInterface::enablePrinter(const QString &hclass, const QString &name, const QString &path, bool enable_device) +{ + if (!getUserAuthorPasswd()) + return {}; + ipp_op_t op = enable_device ? IPP_OP_RESUME_PRINTER : IPP_OP_PAUSE_PRINTER; + char uri[HTTP_MAX_URI]; + ipp_t *request = nullptr; + ipp_t *answer = nullptr; + request = ippNewRequest(op); + construct_uri(uri, sizeof(uri), "ipp://localhost/printers/", name.toStdString().c_str()); + ippAddString(request, IPP_TAG_OPERATION, IPP_TAG_URI, "printer-uri", NULL, uri); + const char *host = cupsServer(); + if (!host) { + return false; + } + int port = ippPort(); + int encrption = (http_encryption_t)cupsEncryption(); + int cancel = 0; + http_t *http = httpConnect2(host, port, nullptr, AF_UNSPEC, (http_encryption_t)encrption, 1, 30000, &cancel); + if (!http) { + return false; + } + answer = cupsDoRequest(http, request, "/admin/"); + ippDelete(answer); + + // 禁用成功后将信息保存到数据库 + if (enable_device) { + EnableSqlManager::getInstance()->removeDataFromPrinterTable(name); + } else { + EnableSqlManager::getInstance()->insertDataToPrinterTable(hclass, name, path); + } + emit sigUpdate(); + return true; +} + +void ControlInterface::disableInDevice() +{ + if (!getUserAuthorPasswd()) + return; + EnableUtils::disableInDevice(); +} + +void ControlInterface::disableOutDevice(const QString &devInfo) +{ + if (!getUserAuthorPasswd()) + return; + EnableUtils::disableOutDevice(devInfo); +} + +bool ControlInterface::isDeviceEnabled(const QString &unique_id) +{ + return EnableSqlManager::getInstance()->isUniqueIdEnabled(unique_id); +} + +bool ControlInterface::setWakeupMachine(const QString &unique_id, const QString &path, bool wakeup) +{ + if (!getUserAuthorPasswd()) + return {}; + // 读写wake文件 + QString tpath; + if (!WakeupUtils::wakeupPath(path, tpath)) + return false; + if (!WakeupUtils::writeWakeupFile(tpath, wakeup)) + return false; + + // 将数据写到数据库或者从数据库删除数据 + saveWakeupInfo(unique_id, path, wakeup); + return true; +} + +bool ControlInterface::setNetworkWake(const QString &logicalName, bool wakeup) +{ + if (!getUserAuthorPasswd()) + return {}; + bool res = WakeupUtils::setWakeOnLan(logicalName, wakeup); + if (res) { + // 将数据保存到数据库 + EnableSqlManager::getInstance()->insertNetworkWakeup(logicalName, wakeup); + } + return res; +} + +void ControlInterface::updateWakeup(const QString &devInfo) +{ + if (!getUserAuthorPasswd()) + return; + WakeupUtils::updateWakeupDeviceInfo(devInfo); +} + +int ControlInterface::isNetworkWakeup(const QString &logicalName) +{ + return WakeupUtils::wakeOnLanIsOpen(logicalName); +} + +void ControlInterface::setMonitorWorkingDBFlag(bool flag) +{ + if (!getUserAuthorPasswd()) + return; + EnableSqlManager::getInstance()->setMonitorWorkingFlag(flag); +} + +bool ControlInterface::monitorWorkingDBFlag() +{ + return EnableSqlManager::getInstance()->monitorWorkingFlag(); +} + +#ifndef DISABLE_DRIVER +bool ControlInterface::unInstallDriver(const QString &modulename) +{ + if (!getUserAuthorPasswd()) + return false; + lockTimer(false); + return mp_drivermanager->unInstallDriver(modulename); +} + +bool ControlInterface::installDriver(const QString &filepath) +{ + if (!getUserAuthorPasswd()) { + emit sigFinished(false, "Cancel"); + return false; + } + lockTimer(true); + return mp_drivermanager->installDriver(filepath); +} + +void ControlInterface::installDriver(const QString &modulename, const QString &version) +{ + if (!getUserAuthorPasswd()) { + emit mp_drivermanager->sigInstallProgressFinished(false, EC_CANCEL); + return; + } + lockTimer(true); + return mp_drivermanager->installDriver(modulename, version); +} + +void ControlInterface::undoInstallDriver() +{ + if (!getUserAuthorPasswd()) + return; + lockTimer(false); + return mp_drivermanager->undoInstallDriver(); +} + +QStringList ControlInterface::checkModuleInUsed(const QString &modulename) +{ + return mp_drivermanager->checkModuleInUsed(modulename); +} + +bool ControlInterface::isDriverPackage(const QString &filepath) +{ + if (!getUserAuthorPasswd()) + return false; + else + return mp_drivermanager->isDriverPackage(filepath); +} + +bool ControlInterface::isBlackListed(const QString &modName) +{ + return mp_drivermanager->isBlackListed(modName); +} + +bool ControlInterface::isArchMatched(const QString &filePath) +{ + return mp_drivermanager->isArchMatched(filePath); +} + +bool ControlInterface::isDebValid(const QString &filePath) +{ + return mp_drivermanager->isDebValid(filePath); +} + +bool ControlInterface::unInstallPrinter(const QString &vendor, const QString &model) +{ + if (!getUserAuthorPasswd()) { + emit mp_drivermanager->sigFinished(false, "Cancel"); + return false; + } + return mp_drivermanager->uninstallPrinter(vendor, model); +} + +bool ControlInterface::backupDeb(const QString &debpath) +{ + if (!getUserAuthorPasswd()) { + emit sigBackupProgressFinished(false); + return false; + } + bool ret = mp_drivermanager->backupDeb(debpath); + emit sigBackupProgressFinished(ret); + return ret; +} + +bool ControlInterface::delDeb(const QString &debname) +{ + if (!getUserAuthorPasswd()) { + return false; + } + return mp_drivermanager->delDeb(debname); +} + +bool ControlInterface::aptUpdate() +{ + if (!getUserAuthorPasswd()) { + return false; + } + return mp_drivermanager->aptUpdate(); +} + +#endif +bool ControlInterface::authorizedEnable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, bool enable_device, const QString strDriver) +{ + // 通过authorized文件启用禁用设备 + // 0:表示禁用 ,1:表示启用 + QFile file("/sys" + path + QString("/authorized")); + if (!file.open(QIODevice::ReadWrite)) { + return false; + } + if (enable_device) { + /* + 启用的流程为:以 /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0 为例 + 第一步: 向 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/authorized 文件中写 1 + 第二步: 向 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/authorized 文件中写 0 + 第三步: 向 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/authorized 文件中写 1 + */ + // 第一步 + file.write("1"); + file.close(); + + // 第二步 + QFileInfo fi(path); + QString pop = fi.path(); + QFile fpop("/sys" + pop + QString("/authorized")); + if (!fpop.open(QIODevice::ReadWrite)) + return false; + fpop.write("0"); + fpop.close(); + + // 第三步 + if (!fpop.open(QIODevice::ReadWrite)) + return false; + fpop.write("1"); + fpop.close(); + + EnableSqlManager::getInstance()->removeDataFromAuthorizedTable(unique_id); + } else { + file.write("0"); + file.close(); + EnableSqlManager::getInstance()->insertDataToAuthorizedTable(hclass, name, path, unique_id, true, strDriver); + } + return true; +} + +bool ControlInterface::removeEnable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, bool enable, const QString strDriver) +{ + if (enable) { + // 1. 先rescan 向rescan写入1,则重新加载 + QFile file("/sys/bus/pci/rescan"); + if (!file.open(QIODevice::WriteOnly)) { + return false; + } + file.write("1"); + file.close(); + + // platform disable with reset + if (path.contains("platform")) { + QFile filep("/sys" + path + QString("/reset")); + if (!filep.open(QIODevice::WriteOnly)) { + return false; + } + filep.write("1"); + filep.close(); + } + EnableSqlManager::getInstance()->removeDateFromRemoveTable(path); + + // 由于rescan会将所有的remove数据都回复,因此需要重新禁用其它设备 + QStringList rpList; + EnableSqlManager::getInstance()->removePathList(rpList); + foreach (const QString &path, rpList) { + QFile filerp("/sys" + path + QString("/remove")); + if (filerp.open(QIODevice::WriteOnly)) { + filerp.write("1"); + filerp.close(); + } + } + } else { + // 1. 直接remove写入 + // 通过remove文件禁用 + // 1:表示禁用 ,0:表示启用 + qCInfo(appLog) << "" + << "/sys" + path + QString("/remove"); + // return false; + QFile file("/sys" + path + QString("/remove")); + if (!file.open(QIODevice::WriteOnly)) { + return false; + } + file.write("1"); + file.close(); + + // 2. 持久化保存 + EnableSqlManager::getInstance()->insertDataToRemoveTable(hclass, name, path, unique_id, strDriver); + } + return true; +} + +bool ControlInterface::ioctlEnableNetwork(const QString &hclass, const QString &name, const QString &logical_name, const QString &unique_id, bool enable, const QString strDriver) +{ + // 1. 通过ioctl禁用 + if (!EnableUtils::ioctlOperateNetworkLogicalName(logical_name, enable)) + return false; + // 2. 持久化保存 + if (enable) { + EnableSqlManager::getInstance()->removeDataFromAuthorizedTable(unique_id); + } else { + EnableSqlManager::getInstance()->insertDataToAuthorizedTable(hclass, name, logical_name, unique_id, enable, strDriver); + } + return true; +} + +void ControlInterface::construct_uri(char *buffer, size_t buflen, const char *base, const char *value) +{ + char *d = buffer; + const unsigned char *s = (const unsigned char *)value; + if (strlen(base) < buflen) { + strcpy(buffer, base); + d += strlen(base); + } else { + strncpy(buffer, base, buflen); + d += buflen; + } + + while (*s && d < buffer + buflen) { + if (isalpha(*s) || isdigit(*s) || *s == '-') + *d++ = *s++; + else if (*s == ' ') { + *d++ = '+'; + s++; + } else { + if (d + 2 < buffer + buflen) { + *d++ = '%'; + *d++ = "0123456789ABCDEF"[((*s) & 0xf0) >> 4]; + *d++ = "0123456789ABCDEF"[((*s) & 0x0f)]; + s++; + } else { + break; + } + } + } + + if (d < buffer + buflen) + *d = '\0'; +} + +void ControlInterface::modifyPath(QString &path) +{ + path.replace(QRegExp("[1-9]$"), "0"); +} + +void ControlInterface::saveWakeupInfo(const QString &unique_id, const QString &path, bool wakeup) +{ + if (EnableSqlManager::getInstance()->isWakeupUniqueIdExisted(unique_id)) { + EnableSqlManager::getInstance()->updateWakeData(unique_id, path, wakeup); + } else { + EnableSqlManager::getInstance()->insertWakeupData(unique_id, path, wakeup); + } +} diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/controlinterface.h b/deepin-devicemanager-server/deepin-devicecontrol/src/controlinterface.h new file mode 100644 index 000000000..f2609df2e --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/controlinterface.h @@ -0,0 +1,209 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + + + +#ifndef CONTROLINTERFACE_H +#define CONTROLINTERFACE_H + +#include "commonfunction.h" + +#include +#include +#include + +class DriverManager; +class ModCore; +class ControlInterface : public QDBusService, protected QDBusContext +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.deepin.DeviceControl") +public: + explicit ControlInterface(QObject *parent = nullptr); + +private: + void initConnects(); + bool getUserAuthorPasswd(void); + +signals: + Q_SCRIPTABLE void sigUpdate(); +#ifndef DISABLE_DRIVER + Q_SCRIPTABLE void sigProgressDetail(int progress, const QString &strDeatils); + Q_SCRIPTABLE void sigFinished(bool bsuccess, QString msg); + Q_SCRIPTABLE void sigDownloadProgressChanged(QStringList msg);//驱动下载进度、速度、已下载大小 + Q_SCRIPTABLE void sigDownloadFinished();//下载完成 + Q_SCRIPTABLE void sigInstallProgressChanged(int progress);//安装进度 + Q_SCRIPTABLE void sigInstallProgressFinished(bool bsuccess, int err); + Q_SCRIPTABLE void sigBackupProgressFinished(bool bsuccess); +#endif + +public slots: + /** + * @brief getRemoveInfo + * @return + */ + Q_SCRIPTABLE QString getRemoveInfo(); + /** + * @brief getAuthorizedInfo 获取被禁用的设备信息 + * @return + */ + Q_SCRIPTABLE QString getAuthorizedInfo(); + /** + * @brief enable 启用禁用设备 + * @param hclass 类型 + * @param name 名称 + * @param path 授权文件的路径 + * @param value 传过来的数值 + * @param enable_device 启用或者禁用 + * @param strDriver + * @return 是否成功 + */ + Q_SCRIPTABLE bool enable(const QString &hclass, const QString &name, const QString &path, const QString &value, bool enable_device, const QString strDriver = ""); + /** + * @brief enablePrinter 禁用打印机 + * @param hclass 设备类型 + * @param name 打印机名称 + * @param path ----- + * @param enable_device 是否被启用 + * @return + */ + Q_SCRIPTABLE bool enablePrinter(const QString &hclass, const QString &name, const QString &path, bool enable_device); + /** + * @brief disableOutDevice 禁用设备 + * @param devInfo 设备信息 + * @return + */ + Q_SCRIPTABLE void disableOutDevice(const QString &devInfo); + /** + * @brief disableOutDevice 禁用设备 + * @return + */ + Q_SCRIPTABLE void disableInDevice(); + /** + * @brief isDeviceEnabled 判断设备是否被禁用,通过查询数据库来判断 + * @param unique_id 设备的唯一 sid + * @return + */ + Q_SCRIPTABLE bool isDeviceEnabled(const QString &unique_id); + /** + * @brief setWakeupMachine + * @param unique_id + * @param path + * @param wakeup + * @return + */ + Q_SCRIPTABLE bool setWakeupMachine(const QString &unique_id, const QString &path, bool wakeup); + /** + * @brief setNetworkWake 设置网卡唤醒 + * @param logicalName 网卡的逻辑名称 + * @param wakeup 是否允许唤醒 + * @return + */ + Q_SCRIPTABLE bool setNetworkWake(const QString &logicalName, bool wakeup); + /** + * @brief updateWakeup 更新唤醒 + * @param devInfo 设备信息 + * @return + */ + Q_SCRIPTABLE void updateWakeup(const QString &devInfo); + /** + * @brief isNetworkWakeup 判断网卡是否禁用 + * @param logicalName 网卡的逻辑名称 + * @return + */ + Q_SCRIPTABLE int isNetworkWakeup(const QString &logicalName); + /** + * @brief seMonitorWorkingFlag 在数据库里设置设备是否监控 + * @param flag 是否监控标志 + * @return + */ + Q_SCRIPTABLE void setMonitorWorkingDBFlag(bool flag); + /** + * @brief monitorWorkingBDFlag 设备是否监控 + * @return 是否监控标志 + */ + Q_SCRIPTABLE bool monitorWorkingDBFlag(); + +#ifndef DISABLE_DRIVER + Q_SCRIPTABLE bool unInstallDriver(const QString &modulename); + Q_SCRIPTABLE bool installDriver(const QString &filepath); + Q_SCRIPTABLE void installDriver(const QString &modulename, const QString &version); + Q_SCRIPTABLE void undoInstallDriver(); + Q_SCRIPTABLE QStringList checkModuleInUsed(const QString &modulename); + Q_SCRIPTABLE bool isDriverPackage(const QString &filepath); + Q_SCRIPTABLE bool isBlackListed(const QString &modName); + Q_SCRIPTABLE bool isArchMatched(const QString &filePath); + Q_SCRIPTABLE bool isDebValid(const QString &filePath); + Q_SCRIPTABLE bool unInstallPrinter(const QString &vendor, const QString &model); + Q_SCRIPTABLE bool backupDeb(const QString &debpath); //debpath格式须是: “/tmp/xx/debname + Q_SCRIPTABLE bool delDeb(const QString &debname); + Q_SCRIPTABLE bool aptUpdate(); + +#endif + +private: + /** + * @brief authorizedEnable 通过authorized文件启用禁用设备 + * @param hclass 设备类型 + * @param name 设备名称 + * @param path 设备节点路径 + * @param unique_id 设备的唯一标识 + * @param enable_device 启用或者禁用 + * @param strDriver 驱动名称 + * @return + */ + bool authorizedEnable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, bool enable_device, const QString strDriver = ""); + /** + * @brief removeEnable 通过remove文件启用禁用设备 + * @param hclass 设备类型 + * @param name 设备名称 + * @param path 设备节点路径 + * @param unique_id 设备的唯一标识 + * @param enable 启用或者禁用 + * @param strDriver 驱动名称 + * @return + */ + bool removeEnable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, bool enable, const QString strDriver = ""); + /** + * @brief ioctlEnableNetwork 通过ioctl启用禁用网卡 + * @param hclass 设备类型 + * @param name 设备名称 + * @param logical_name 逻辑名称 + * @param unique_id 唯一标识 + * @param enable 启用或者禁用 + * @param strDriver 驱动名称 + * @return 返回是否成功 + */ + bool ioctlEnableNetwork(const QString &hclass, const QString &name, const QString &logical_name, const QString &unique_id, bool enable, const QString strDriver = ""); + /** + * @brief construct_uri + * @param buffer + * @param buflen + * @param base + * @param value + */ + void construct_uri(char *buffer, size_t buflen, const char *base, const char *value); + /** + * @brief modifyPath 修正路径 保证xxx.0 + * 比如将 /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.1 + * 修正为 /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0 + * @param path 需要修正的路径 /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0 + */ + void modifyPath(QString &path); + /** + * @brief saveWakeupInfo 保存数据到数据库 + * @param unique_id 唯一标识 + * @param path 节点路径 + * @param wakeup 是否唤醒 + */ + void saveWakeupInfo(const QString &unique_id, const QString &path, bool wakeup); + +private: +#ifndef DISABLE_DRIVER + DriverManager *mp_drivermanager; + ModCore *pcore = nullptr; //临时测试使用 +#endif +}; + +#endif // CONTROLINTERFACE_H diff --git a/deepin-devicemanager-server/src/commonfunction.h b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/commonfunction.h similarity index 95% rename from deepin-devicemanager-server/src/commonfunction.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/commonfunction.h index 24617ca0f..3d1ba92df 100644 --- a/deepin-devicemanager-server/src/commonfunction.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/commonfunction.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/src/DriverControl/DebInstaller.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/debinstaller.cpp similarity index 90% rename from deepin-devicemanager-server/src/DriverControl/DebInstaller.cpp rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/debinstaller.cpp index 651fdb11e..3d0482e58 100644 --- a/deepin-devicemanager-server/src/DriverControl/DebInstaller.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/debinstaller.cpp @@ -1,18 +1,22 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "DebInstaller.h" -#include "Utils.h" +#ifndef DISABLE_DRIVER -#include +#include "debinstaller.h" +#include "utils.h" +#include "DDLog.h" + +#include #include #include #include #include +using namespace DDLog; + const int MAX_DPKGRUNING_TEST = 20; const int TEST_TIME_INTERVAL = 2000; @@ -38,7 +42,7 @@ bool DebInstaller::isArchMatched(const QString &path) return false; bool architectures = m_backend->architectures().contains(deb.architecture()); - if(!architectures) + if (!architectures) return false; return true; } @@ -54,7 +58,7 @@ void DebInstaller::initBackend() m_backend = new QApt::Backend; m_bValid = m_backend->init(); if (!m_bValid) { - qInfo() << m_backend->initErrorMessage(); + qCInfo(appLog) << m_backend->initErrorMessage(); } } @@ -62,7 +66,7 @@ void DebInstaller::reset() { m_bValid = m_backend->reloadCache(); if (!m_bValid) { - qInfo() << m_backend->initErrorMessage(); + qCInfo(appLog) << m_backend->initErrorMessage(); } m_iRuningTestCount = 0; m_pTrans = nullptr; @@ -144,4 +148,4 @@ void DebInstaller::uninstallPackage(const QString &packagename) } doOperate(packagename, false); } - +#endif // DISABLE_DRIVER diff --git a/deepin-devicemanager-server/src/DriverControl/DebInstaller.h b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/debinstaller.h similarity index 89% rename from deepin-devicemanager-server/src/DriverControl/DebInstaller.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/debinstaller.h index 37e5e8faa..ab116f66e 100644 --- a/deepin-devicemanager-server/src/DriverControl/DebInstaller.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/debinstaller.h @@ -1,8 +1,9 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later +#ifndef DISABLE_DRIVER + #ifndef DEBINSTALLER_H #define DEBINSTALLER_H #include @@ -56,3 +57,4 @@ public slots: }; #endif // DEBINSTALLER_H +#endif // DISABLE_DRIVER diff --git a/deepin-devicemanager-server/src/DriverControl/DriverInstaller.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/driverinstaller.cpp similarity index 56% rename from deepin-devicemanager-server/src/DriverControl/DriverInstaller.cpp rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/driverinstaller.cpp index 2bf5b2d5c..6301a8a73 100644 --- a/deepin-devicemanager-server/src/DriverControl/DriverInstaller.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/driverinstaller.cpp @@ -1,15 +1,18 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "DriverInstaller.h" -#include "Utils.h" +#ifndef DISABLE_DRIVER + +#include "driverinstaller.h" +#include "utils.h" #include "commonfunction.h" +#include "DDLog.h" #include #include #include -#include +#include #include #include @@ -18,10 +21,11 @@ #include #include +using namespace DDLog; const int MAX_DPKGRUNING_TEST = 20; const int TEST_TIME_INTERVAL = 2000; -DriverInstaller::DriverInstaller(QObject* parent) +DriverInstaller::DriverInstaller(QObject *parent) : QObject(parent) , mp_Backend(nullptr) , mp_Trans(nullptr) @@ -33,13 +37,13 @@ DriverInstaller::DriverInstaller(QObject* parent) bool DriverInstaller::initBackend() { - if(nullptr == mp_Backend) + if (nullptr == mp_Backend) mp_Backend = new QApt::Backend; aptClean(); return mp_Backend->init(); } -void DriverInstaller::installPackage(const QString& package, const QString& version) +void DriverInstaller::installPackage(const QString &package, const QString &version) { //检查dpkg是否正在运行,如果正在运行等待2s重试,最多尝试20次 if (Utils::isDpkgLocked()) { @@ -62,12 +66,12 @@ void DriverInstaller::installPackage(const QString& package, const QString& vers void DriverInstaller::undoInstallDriver() { - if(nullptr != mp_Trans){ + if (nullptr != mp_Trans) { mp_Trans->setProperty("isCancellable", true); mp_Trans->setProperty("isCancelled", true); mp_Trans->cancel(); m_Cancel = true; - qInfo() << "DRIVER_LOG **************************** 取消操作"; + qCInfo(appLog) << "DRIVER_LOG **************************** 取消操作"; } } @@ -75,7 +79,7 @@ void DriverInstaller::undoInstallDriver() void DriverInstaller::aptClean() { QProcess process; - process.start("sh", QStringList() << "-c" << QString("/usr/bin/lastore-apt-clean"));//调用商店后端lastore中的接口 + process.start("/usr/bin/lastore-apt-clean");//调用商店后端lastore中的接口 process.waitForFinished(); } @@ -84,7 +88,15 @@ bool DriverInstaller::isNetworkOnline(uint usec) /* -c 2(代表ping次数,ping 2次后结束ping操作) -w 2(代表超时时间,2秒后结束ping操作) */ - system("ping www.baidu.com -c 2 -w 2 >netlog.bat"); + // example: ping www.baidu.com -c 2 -w 2 >netlog.bat + QProcess process; + process.setStandardOutputFile("netlog.bat", QIODevice::WriteOnly); + process.start("ping", QStringList() << "www.baidu.com" << "-c" << "2" << "-w" << "2"); + process.waitForFinished(-1); + bool bRet = (process.exitStatus() == QProcess::NormalExit && process.exitCode() == 0); + if (!bRet) { + return false; + } usleep(usec); //把文件一行一行读取放入vector @@ -92,56 +104,53 @@ bool DriverInstaller::isNetworkOnline(uint usec) infile.open("netlog.bat"); std::string s; std::vector v; - while(infile) - { - getline(infile,s); - if(infile.fail()) + while (infile) { + getline(infile, s); + if (infile.fail()) break; v.push_back(s); } infile.close(); //读取倒数第二行 2 packets transmitted, 2 received, 0% packet loss, time 1001ms - if (v.size() > 1) - { - std::string data = v[v.size()-2]; + if (v.size() > 1) { + std::string data = v[v.size() - 2]; int iPos = data.find("received,"); - if (iPos != -1 ) - { - data = data.substr(iPos+10,3);//截取字符串返回packet loss + if (iPos != -1) { + data = data.substr(iPos + 10, 3); //截取字符串返回packet loss int n = atoi(data.c_str()); - if(n == 0) - return 1; + if (n == 0) + return 1; else - return 0 ; - }else{ + return 0 ; + } else { return 0; } - }else{ + } else { return 0; } } void DriverInstaller::doOperate(const QString &package, const QString &version) { - if (!initBackend()){ + if (!initBackend()) { emit errorOccurred(EC_NULL); - qInfo() << "DRIVER_LOG : ************************** 初始化backend失败"; + qCInfo(appLog) << "DRIVER_LOG : ************************** 初始化backend失败"; return; } - QApt::Package* p = mp_Backend->package(package); + QApt::Package *p = mp_Backend->package(package); // 判断包是否存在 - if(nullptr == p){ + if (nullptr == p) { emit errorOccurred(EC_NOTFOUND); - qInfo() << "DRIVER_LOG : ************************** 安装包不存在"; + qCInfo(appLog) << "DRIVER_LOG : ************************** 安装包不存在"; return; } // 版本不存在 - if(!p->setVersion(version)){ - qInfo() << "DRIVER_LOG : ************************** 安装包版本不存在"; + if (!p->setVersion(version)) { + qCInfo(appLog) << "DRIVER_LOG : ************************** 安装包版本不存在"; emit errorOccurred(EC_NOTFOUND); delete p; p = nullptr; @@ -152,63 +161,64 @@ void DriverInstaller::doOperate(const QString &package, const QString &version) lst.append(p); mp_Trans = mp_Backend->installPackages(lst); - if(nullptr == mp_Trans){ + if (nullptr == mp_Trans) { emit errorOccurred(EC_NULL); - qInfo() << "DRIVER_LOG : ************************** installPackages"; + qCInfo(appLog) << "DRIVER_LOG : ************************** installPackages"; return; } qRegisterMetaType("QApt::ExitStatus"); - connect(mp_Trans, &QApt::Transaction::finished, this, [this, package](QApt::ExitStatus status){ + connect(mp_Trans, &QApt::Transaction::finished, this, [this, package](QApt::ExitStatus status) { QApt::ErrorCode code = mp_Trans->error(); - if (QApt::ExitSuccess == status){ // 退出状态成功时 - if (QApt::Success == code){ + if (QApt::ExitSuccess == status) { // 退出状态成功时 + if (QApt::Success == code) { emit installProgressFinished(true); } - }else if (QApt::ExitFailed == status){ // 退出状态失败时 + } else if (QApt::ExitFailed == status) { // 退出状态失败时 // 英伟达驱动 + CommitError == 成功 - if (package.contains("nvidia-driver") && QApt::CommitError == code){ + if (package.contains("nvidia-driver") && QApt::CommitError == code) { emit installProgressFinished(true); } // FetchError == 网络异常 - if (QApt::FetchError == code || (QApt::CommitError == code && !isNetworkOnline())){ + if (QApt::FetchError == code || (QApt::CommitError == code && !isNetworkOnline())) { emit errorOccurred(EC_NETWORK); } - }else if (QApt::ExitCancelled == status) { // 退出状态取消时 + } else if (QApt::ExitCancelled == status) { // 退出状态取消时 emit errorOccurred(EC_CANCEL); } - qInfo() << "DRIVER_LOG : ************************** 安装结束 结束状态码" << status; - qInfo() << "DRIVER_LOG : ************************** 安装结束 结束错误码" << code; + qCInfo(appLog) << "DRIVER_LOG : ************************** 安装结束 结束状态码" << status; + qCInfo(appLog) << "DRIVER_LOG : ************************** 安装结束 结束错误码" << code; mp_Trans->disconnect(); mp_Trans->deleteLater(); mp_Trans = nullptr; }); - connect(mp_Trans, &QApt::Transaction::downloadProgressChanged, this, [this](QApt::DownloadProgress dp){ - qInfo() << "DRIVER_LOG : ************************** 下载进度 " << dp.progress(); - if(m_Cancel){ + connect(mp_Trans, &QApt::Transaction::downloadProgressChanged, this, [this](QApt::DownloadProgress dp) { + qCInfo(appLog) << "DRIVER_LOG : ************************** 下载进度 " << dp.progress(); + if (m_Cancel) { mp_Trans->setProperty("isCancellable", true); mp_Trans->setProperty("isCancelled", true); mp_Trans->cancel(); - qInfo() << "DRIVER_LOG *************downloadProgressChanged*************** 取消操作"; + qCInfo(appLog) << "DRIVER_LOG *************downloadProgressChanged*************** 取消操作"; } }); - connect(mp_Trans, &QApt::Transaction::progressChanged, this, [this](int progress){ - if(m_Cancel){ + connect(mp_Trans, &QApt::Transaction::progressChanged, this, [this](int progress) { + if (m_Cancel) { mp_Trans->setProperty("isCancellable", true); mp_Trans->setProperty("isCancelled", true); mp_Trans->cancel(); - qInfo() << "DRIVER_LOG *************progressChanged*************** 取消操作"; + qCInfo(appLog) << "DRIVER_LOG *************progressChanged*************** 取消操作"; } - if(false == m_Cancel) + if (false == m_Cancel) emit installProgressChanged(progress); - qInfo() << "DRIVER_LOG : ************************** 总进度 " << progress << " 下载状态 " << mp_Trans->downloadProgress().uri(); + qCInfo(appLog) << "DRIVER_LOG : ************************** 总进度 " << progress << " 下载状态 " << mp_Trans->downloadProgress().uri(); }); mp_Trans->run(); } +#endif // DISABLE_DRIVER diff --git a/deepin-devicemanager-server/src/DriverControl/DriverInstaller.h b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/driverinstaller.h similarity index 87% rename from deepin-devicemanager-server/src/DriverControl/DriverInstaller.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/driverinstaller.h index a46935cf7..812b40ca4 100644 --- a/deepin-devicemanager-server/src/DriverControl/DriverInstaller.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/driverinstaller.h @@ -1,12 +1,12 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later +#ifndef DISABLE_DRIVER + #ifndef DRIVERINSTALLER_H #define DRIVERINSTALLER_H - //class PackageInstaller //{ //public: @@ -33,7 +33,7 @@ public slots: * @param package 包名 * @param version 包版本 */ - void installPackage(const QString& package, const QString& version); + void installPackage(const QString &package, const QString &version); /** * @brief undoInstallDriver 停止任务 @@ -77,3 +77,4 @@ public slots: }; #endif // DRIVERINSTALLER_H +#endif // DISABLE_DRIVER diff --git a/deepin-devicemanager-server/src/DriverControl/DriverManager.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.cpp similarity index 60% rename from deepin-devicemanager-server/src/DriverControl/DriverManager.cpp rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.cpp index 3a415f6f4..d4106e589 100644 --- a/deepin-devicemanager-server/src/DriverControl/DriverManager.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.cpp @@ -1,15 +1,17 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "DriverManager.h" -#include "Utils.h" -#include "ModCore.h" -#include "DebInstaller.h" -#include "DriverInstaller.h" -#include "DeviceInfoManager.h" -#include "HttpDriverInterface.h" +#ifndef DISABLE_DRIVER + +#include "drivermanager.h" +#include "utils.h" +#include "modcore.h" +#include "debinstaller.h" +#include "driverinstaller.h" +//#include "DeviceInfoManager.h" +#include "httpdriverinterface.h" +#include "DDLog.h" #include #include @@ -17,7 +19,7 @@ #include #include #include -#include +#include #include #include #include @@ -31,12 +33,15 @@ #include #include #include +#include +#include +#include #include #include #include - +#define DB_PATH "/usr/share/deepin-devicemanager" //driver deb backup path #define SD_KEY_excat "excat" #define SD_KEY_ver "version" #define SD_KEY_code "client_code" @@ -59,6 +64,7 @@ sigFinished(flag, errmsg);\ return flag; \ } +using namespace DDLog; DriverManager::DriverManager(QObject *parent) : QObject(parent) @@ -81,19 +87,9 @@ DriverManager::~DriverManager() { mp_deboperatethread->quit(); mp_deboperatethread->wait(); -} - -bool DriverManager::checkDriverInfo() -{ - //1.遍历硬件查询结果。 - //2.过滤,只检测显示适配器(显卡),音频适配器(声卡),网络适配器(网卡/无线网卡),蓝牙适配器,外设输入输出设备(打印机,图像设备(扫描仪,摄像头)) - //2.1 查找前端的处理,找到硬件的驱动部分。 - //3.查询。 - - if (checkPrinterInfo() || checkBoardCardInfo()) return true; - - return false; + mp_driverOperateThread->quit(); + mp_driverOperateThread->wait(); } void DriverManager::initConnections() @@ -111,7 +107,7 @@ void DriverManager::initConnections() sigProgressDetail(m_installprocess, errmsg); }); connect(mp_debinstaller, &DebInstaller::errorOccurred, [&](QString errmsg) { - qInfo() << "signal_installFailedReason:" << errmsg; + qCInfo(appLog) << "signal_installFailedReason:" << errmsg; sigFinished(false, errmsg); this->errmsg = errmsg; }); @@ -121,15 +117,15 @@ void DriverManager::initConnections() connect(mp_driverInstaller, &DriverInstaller::installProgressFinished, [&](bool bsuccess) { if (bsuccess) { sigInstallProgressFinished(bsuccess, EC_NULL); - qInfo() << "Driver installed successfully"; + qCInfo(appLog) << "Driver installed successfully"; } else { - qInfo() << "Driver installation failed , reason : unknow"; + qCInfo(appLog) << "Driver installation failed , reason : unknow"; } }); connect(mp_driverInstaller, &DriverInstaller::errorOccurred, [this](int err) { - if (EC_NETWORK != err){ - qInfo() << "Driver installation failed , reason : " << err; + if (EC_NETWORK != err) { + qCInfo(appLog) << "Driver installation failed , reason : " << err; sigInstallProgressFinished(false, err); return; } @@ -137,23 +133,23 @@ void DriverManager::initConnections() // 如果错误是网络异常,则需要尝试60s // 先通知前台网络异常 sigInstallProgressFinished(false, EC_NOTIFY_NETWORK); - qInfo() << "Network error : We are listening to the network"; + qCInfo(appLog) << "Network error : We are listening to the network"; // 60s等待操作 m_IsNetworkOnline = false; qint64 seconds = QDateTime::currentSecsSinceEpoch(); - while (QDateTime::currentSecsSinceEpoch() - seconds < 30){ + while (QDateTime::currentSecsSinceEpoch() - seconds < 30) { - if(m_StopQueryNetwork){ + if (m_StopQueryNetwork) { sigInstallProgressFinished(false, EC_CANCEL); m_StopQueryNetwork = false; return ; } - if(isNetworkOnline()){ + if (isNetworkOnline()) { sigInstallProgressFinished(false, EC_REINSTALL); return ; - }else{ + } else { sleep(1); } } @@ -163,7 +159,7 @@ void DriverManager::initConnections() connect(mp_driverInstaller, &DriverInstaller::installProgressChanged, [&](int progress) { sigInstallProgressChanged(progress); - qInfo() << "Installing driver , installation progress : " << progress; + qCInfo(appLog) << "Installing driver , installation progress : " << progress; }); } @@ -202,6 +198,13 @@ bool DriverManager::unInstallDriver(const QString &modulename) return bsuccess; } +static void depmod_a() +{ + QProcess process; + process.start("depmod -a"); + process.waitForFinished(-1); +} + bool DriverManager::installDriver(const QString &filepath) { /*1.检查模块是否已存在 存在报错返回,不报错返回 @@ -234,7 +237,7 @@ bool DriverManager::installDriver(const QString &filepath) //模块已被加载 /* * 下面代码由 liujun 于 2021年11月9号 注释 - * 为修复bug https://pms.uniontech.com/zentao/bug-view-101808.html + * 为修复bug 101808 */ // if (mp_modcore->modIsLoaded(filepath)) { // sigProgressDetail(10, QString("could not insert module %1 :file exist").arg(filepath)); @@ -245,7 +248,7 @@ bool DriverManager::installDriver(const QString &filepath) QMimeDatabase typedb; QMimeType filetype = typedb.mimeTypeForFile(fileinfo); if (filetype.filterString().contains("deb")) { - qInfo() << __func__ << "deb install start"; + qCInfo(appLog) << __func__ << "deb install start"; sigProgressDetail(15, ""); emit sigDebInstall(filepath); sigProgressDetail(20, ""); @@ -289,9 +292,7 @@ bool DriverManager::installDriver(const QString &filepath) QFile::remove(installpath); //删除后执行depmod更新 - QProcess process; - process.start("depmod -a"); - process.waitForFinished(-1); + depmod_a(); sigFinished(false, errmsg); return false; @@ -314,9 +315,9 @@ void DriverManager::installDriver(const QString &pkgName, const QString &version void DriverManager::undoInstallDriver() { - if(m_IsNetworkOnline){ + if (m_IsNetworkOnline) { mp_driverInstaller->undoInstallDriver(); - }else{ + } else { m_StopQueryNetwork = true; } } @@ -368,6 +369,11 @@ bool DriverManager::isDriverPackage(const QString &filepath) */ bool DriverManager::isSigned(const QString &filepath) { + // If hierarchical verification is enabled, we assume that all packages are signed. + if (Utils::HierarchicalVerifyAvailable == Utils::hierarchicalEnabled()) { + return true; + } + //如果是开发者模式,直接返回true QDBusInterface *dbusInterFace = new QDBusInterface("com.deepin.sync.Helper", "/com/deepin/sync/Helper", "com.deepin.sync.Helper", QDBusConnection::systemBus()); @@ -377,25 +383,22 @@ bool DriverManager::isSigned(const QString &filepath) return true; } - QProcess process; - QStringList options; - QString strSignTool; + QStringList arguments; + QString program; QString strSignCheckString; if (filepath.contains("deb")) { - strSignTool = "deepin-deb-verify "; + program = "deepin-deb-verify"; + arguments << filepath; strSignCheckString = "signature verified"; } else { - strSignTool = "deepin-elf-sign -f "; + program = "deepin-elf-sign"; + arguments << "-f" << filepath; strSignCheckString = "Verified successfully"; } - options << "-c" << strSignTool + filepath; - process.start("/bin/bash", options); - process.waitForFinished(-1); - - QString str = process.readAll(); - return str.contains(strSignCheckString); + QString outInfo = Utils::executeServerCmd(program, arguments, QString(), -1, true); + return outInfo.contains(strSignCheckString); } bool DriverManager::isArchMatched(const QString &path) { @@ -442,104 +445,21 @@ bool DriverManager::unInstallModule(const QString &moduleName, QString &msg) return bsuccess; } -bool DriverManager::checkPrinterInfo() -{ - //打印机 - QMap mapInfo; - loadPrinterInfo(mapInfo); - if(mapInfo.size() < 1){ - return false; - } - //qInfo() << mapInfo;//"printer-make-and-model" // - QStringList lstInfo = mapInfo["printer-info"].split(" "); - QString strVendor = ""; - if (lstInfo.size() > 1) { - strVendor = lstInfo[0]; - } - DriverInfo di; - di.type = DR_Printer; - di.modelName = mapInfo["printer-make-and-model"]; - di.vendorName = strVendor; - if (HttpDriverInterface::getInstance()->checkDriverInfo(di)) - return true; - return false; -} - -void DriverManager::loadPrinterInfo(QMap &mapInfo) -{ - // 通过cups获取打印机信息 - //cups会识别打印机信息,之前通过文件判断概率性出现文件无信息的情况 - cups_dest_t *dests = nullptr; - http_t *http = nullptr; - int num_dests; - num_dests = cupsGetDests2(http, &dests); - if (nullptr == dests) { - cupsFreeDests(num_dests, dests); - return; - } - for (int i = 0; i < num_dests; i++) { - cups_dest_t *dest = nullptr; - dest = dests + i; - getMapInfo(mapInfo, dest); - // 这里为了和打印机管理保持一致,做出限制 -// if (mapInfo.size() > 10) -// addMapInfo("printer", mapInfo); - } - cupsFreeDests(num_dests, dests); -} - -void DriverManager::getMapInfoFromHwinfo(const QString &info, QMap &mapInfo, const QString &ch) -{ - QStringList infoList = info.split("\n"); - for (QStringList::iterator it = infoList.begin(); it != infoList.end(); ++it) { - QStringList words = (*it).split(ch); - if ((*it).contains("PS/2 Mouse")) { - words.clear(); - words << "Hotplug" << "PS/2"; - } - if (words.size() != 2) - continue; - - if (mapInfo.find(words[0].trimmed()) != mapInfo.end()) - mapInfo[words[0].trimmed()] += QString(" "); - - QRegExp re(".*\"(.*)\".*"); - if (re.exactMatch(words[1].trimmed())) { - QString key = words[0].trimmed(); - QString value = re.cap(1); - - //这里是为了防止 "usb-storage", "sr" -》 usb-storage", "sr - // bug112311 驱动模块显示异常 - if ("Driver" == key || "Driver Modules" == key) - value.replace("\"", ""); - - // 如果信息中有unknown 则过滤 - if (!value.contains("unknown")) - mapInfo[key] += value; - - } else { - if ("Resolution" == words[0].trimmed()) { - mapInfo[words[0].trimmed()] += words[1].trimmed(); - } else { - // 如果信息中有unknown 则过滤 - if (!words[1].trimmed().contains("unknown")) - mapInfo[words[0].trimmed()] = words[1].trimmed(); - } - } - } - - if (mapInfo.find("Module Alias") != mapInfo.end()) { - mapInfo["Module Alias"].replace(QRegExp("[0-9a-zA-Z]{10}$"), ""); - } -} - bool DriverManager::isNetworkOnline() { /* -c 2(代表ping次数,ping 2次后结束ping操作) -w 2(代表超时时间,2秒后结束ping操作) */ - // system("ping www.google.com -c 2 -w 2 >netlog.bat"); - system("ping www.baidu.com -c 2 -w 2 >netlog.bat"); + // example: ping www.baidu.com -c 2 -w 2 >netlog.bat + QProcess process; + process.setStandardOutputFile("netlog.bat", QIODevice::WriteOnly); + process.start("ping", QStringList() << "www.baidu.com" << "-c" << "2" << "-w" << "2"); + process.waitForFinished(-1); + bool bRet = (process.exitStatus() == QProcess::NormalExit && process.exitCode() == 0); + if (!bRet) { + return false; + } + sleep(2); //把文件一行一行读取放入vector @@ -547,236 +467,34 @@ bool DriverManager::isNetworkOnline() infile.open("netlog.bat"); std::string s; std::vector v; - while(infile) - { - getline(infile,s); - if(infile.fail()) + while (infile) { + getline(infile, s); + if (infile.fail()) break; v.push_back(s); } infile.close(); //读取倒数第二行 2 packets transmitted, 2 received, 0% packet loss, time 1001ms - if (v.size() > 1) - { - std::string data = v[v.size()-2]; + if (v.size() > 1) { + std::string data = v[v.size() - 2]; int iPos = data.find("received,"); - if (iPos != -1 ) - { - data = data.substr(iPos+10,3);//截取字符串返回packet loss + if (iPos != -1) { + data = data.substr(iPos + 10, 3); //截取字符串返回packet loss int n = atoi(data.c_str()); - if(n == 0) - return 1; + if (n == 0) + return 1; else - return 0 ; - }else{ + return 0 ; + } else { return 0; } - }else{ + } else { return 0; } } -bool DriverManager::checkBoardCardInfo(const DriverType type, QMap &mapInfo) -{ - QString strVendor, strDevice; - bool flag = false;//是否需要查sysfs - if(mapInfo.find("Vendor") != mapInfo.end()){ - QStringList strListVendor = mapInfo["Vendor"].split(" "); - foreach (QString strSub, strListVendor) { - if (strSub.contains("0x")) { - strVendor = strSub; - break; - } - } - if(strVendor.isEmpty()){ - flag = true; - } - QStringList strListDevice = mapInfo["Device"].split(" "); - foreach(QString strSub, strListDevice){ - if(strSub.contains("0x")){ - strDevice = strSub; - break; - } - } - if(strDevice.isEmpty()){ - flag = true; - } - } - else { - flag = true; - } - if(flag) { - // - QString strSysFSLink; - if (mapInfo.find("SysFS ID") != mapInfo.end() && mapInfo["SysFS ID"].contains("/devices/")) { - strSysFSLink = mapInfo["SysFS ID"]; - } - // - else if (mapInfo.find("SysFS Device Link") != mapInfo.end() && mapInfo["SysFS Device Link"].contains("/devices/")) { - strSysFSLink = mapInfo["SysFS Device Link"]; - } - QString strVendorFile = "/vendor"; - QString strDeviceFile = "/device"; - if(strSysFSLink.contains("usb")){ - strVendorFile = "/idVendor"; - strDeviceFile = "/idProduct"; - } - if (strSysFSLink.isEmpty()) { - return false; - } - if (!QFile::exists("/sys" + strSysFSLink)) { - return false; - } - if(strSysFSLink.contains("usb")){ - if (!QFile::exists("/sys" + strSysFSLink + strVendorFile)) { - strSysFSLink = strSysFSLink.mid(0, strSysFSLink.lastIndexOf('/')); - } - } - QFile file("/sys" + strSysFSLink + strVendorFile); - if(!file.open(QIODevice::ReadOnly)){ - return false; - } - strVendor = file.readAll(); - file.close(); - QFile fileDevice("/sys" + strSysFSLink + strDeviceFile); - if(!fileDevice.open(QIODevice::ReadOnly)){ - return false; - } - strDevice = fileDevice.readAll(); - fileDevice.close(); - if(strSysFSLink.contains("usb")){ - strVendor = "0x" + strVendor; - strDevice = "0x" + strDevice; - } - } - - if(strVendor.isEmpty() && strDevice.isEmpty()){ - return false; - } - DriverInfo di; - di.type = type; - di.vendorId = strVendor; - di.modelId = strDevice; - - di.driverName = mapInfo["Driver"];//如果没有,后续会处理,无影响 - di.version = getDriverVersion(mapInfo["Driver"]); - if(di.version.isEmpty()){ - di.version = getDriverVersion(mapInfo["Driver Modules"]); - if(!di.version.isEmpty()){ - di.driverName = mapInfo["Driver Modules"];//如果没有,后续会处理,无影响 - } - } - if (HttpDriverInterface::getInstance()->checkDriverInfo(di)) - return true; - return false; -} -bool DriverManager::checkBoardCardInfo() -{ - QMap mapInfo; - - const QString &info = DeviceInfoManager::getInstance()->getInfo("hwinfo"); - - // 获取信息 - QStringList items = info.split("\n\n"); - - foreach (const QString &item, items) { - if (item.isEmpty()) - continue; - - mapInfo.clear(); - getMapInfoFromHwinfo(item, mapInfo); - if (mapInfo["Hardware Class"] == "sound" || mapInfo["Device"].contains("USB Audio")) { - if (checkBoardCardInfo(DR_Sound, mapInfo)) return true; - } else if (mapInfo["Hardware Class"].contains("network")) { - if (checkBoardCardInfo(DR_Network, mapInfo)) return true; - } else if ("keyboard" == mapInfo["Hardware Class"]) { - continue; - } else if ("mouse" == mapInfo["Hardware Class"]) { - continue; - } else if ("cdrom" == mapInfo["Hardware Class"]) { - continue; - } else if ("disk" == mapInfo["Hardware Class"]) { - continue; - } else if ("graphics card" == mapInfo["Hardware Class"]) { - if (mapInfo["Device"].contains("Graphics Processing Unit")) - continue; - qInfo() << item; - if (checkBoardCardInfo(DR_Gpu, mapInfo)) return true; - } else { - if (mapInfo["Hardware Class"] == "hub" || mapInfo["Hardware Class"] == "mouse" || mapInfo["Hardware Class"] == "keyboard") - continue; - - // USB包括:蓝牙、图像设备 - // hwinfo中对camera的分类不明确,通过camera等关键字认定图像设备 - // 当前只做扫描仪。无法区分摄像头和扫描仪。 - if (mapInfo["Model"].contains("camera", Qt::CaseInsensitive) || - mapInfo["Device"].contains("camera", Qt::CaseInsensitive) || - mapInfo["Driver"].contains("uvcvideo", Qt::CaseInsensitive) || - mapInfo["Model"].contains("webcam", Qt::CaseInsensitive) || - mapInfo["Hardware Class"] != "camera") { - if (checkCameraInfo(mapInfo)) return true; - } - if (mapInfo["Hardware Class"] == "bluetooth" || mapInfo["Driver"] == "btusb" || mapInfo["Device"] == "BCM20702A0") { - if (checkBoardCardInfo(DR_Bluetooth, mapInfo)) return true; - } - } - } - return false; -} - -bool DriverManager::checkCameraInfo(QMap &mapInfo) -{ - QString strVendor, strDevice; - QStringList strListVendor = mapInfo["Vendor"].split(" "); - foreach (QString strSub, strListVendor) { - if (strSub.contains("0x")) { - strVendor = strSub; - } - } - QStringList strListDevice = mapInfo["Device:"].split(" "); - foreach (QString strSub, strListDevice) { - if (strSub.contains("0x")) { - strDevice = strSub; - } - } - if(strVendor.isEmpty() && strDevice.isEmpty()){ - return false; - } - DriverInfo di; - di.type = DR_Camera; - di.vendorId = strVendor; - di.modelId = strDevice; - if (HttpDriverInterface::getInstance()->checkDriverInfo(di)) - return true; - return false; -} - -QString DriverManager::getDriverVersion(QString strDriver) -{ - QProcess process; - QStringList options; - options << "-c" << "modinfo " + strDriver + " | grep version"; - - process.start("/bin/bash", options); - process.waitForFinished(-1); - - QStringList str = QString(process.readAll()).split("\n\n"); - foreach(QString temp, str){ - if(temp.startsWith("version") && temp.contains(":") && temp.split(':').size() > 1){ - return temp.split(':')[2]; - } - } - return ""; -} -void DriverManager::getMapInfo(QMap &mapInfo, cups_dest_t *src) -{ - // 获取打印机信息 - mapInfo.insert("Name", src->name); - for (int i = 0; i < src->num_options; i++) - mapInfo.insert(src->options[i].name, src->options[i].value); -} /** * @brief DriverManager::uninstallPrinter 卸载打印机 * @param name 打印机名 @@ -927,3 +645,133 @@ bool DriverManager::unInstallPrinter(const QString &packageName) return !printerHasInstalled(packageName); } + +static bool qdelDirectory(QString toDir) +{ + QDir toDir_(toDir); + + //如果目的文件夹不存 + if (!toDir_.exists()) { + return true; + } + //获取当前路径下的所有文件名 + QFileInfoList fileInfoList = toDir_.entryInfoList(); + foreach(QFileInfo fileInfo, fileInfoList) { + if(fileInfo.fileName() == "." || fileInfo.fileName() == "..") + continue; + + //拷贝子目录 + if (fileInfo.isDir()) { + qCInfo(appLog) << "del isDir"; + //递归调用拷贝 + if (!qdelDirectory(toDir_.filePath(fileInfo.fileName()))) + return false; + } else { + toDir_.remove(fileInfo.fileName()); + qCInfo(appLog) << "del remove"; + } + } + return true; +} +/*********************************************************************/ +/*功能:拷贝文件夹 + qCopyDirectory -- 拷贝目录 + fromDir : 源目录 + toDir : 目标目录 + bCoverIfFileExists : ture:同名时覆盖 false:同名时返回false,终止拷贝 + 返回: ture拷贝成功 false:拷贝未完成*/ +/***********************************************************************/ +static bool qCopyDirectory(QString fromDir, QString toDir, bool bCoverIfFileExists) +{ + QDir formDir_(fromDir); + QDir toDir_(toDir); + + //如果目的文件夹不存在则创建 + if (!toDir_.exists()) { + if (!toDir_.mkpath(toDir)) + return false; + } + + //获取当前路径下的所有文件名 + QStringList nameFiltes; + nameFiltes << "*.deb" ; + QFileInfoList fileInfoList = formDir_.entryInfoList(nameFiltes, QDir::Dirs | QDir::Files | QDir::NoSymLinks | QDir::NoDotAndDotDot); + foreach (const QFileInfo &fileInfo, fileInfoList) { + //拷贝子目录 + if (fileInfo.isDir()) { + //递归调用拷贝 + if (!qCopyDirectory(fileInfo.filePath(), toDir_.filePath(fileInfo.fileName()), true)) + return false; + } + //拷贝子文件 + else { + if (bCoverIfFileExists && toDir_.exists(fileInfo.fileName())) { + toDir_.remove(fileInfo.fileName()); + } + if (!QFile::copy(fileInfo.filePath(), toDir_.filePath(fileInfo.fileName()))) { + return false; + } + } + } + return true; +} + +bool DriverManager::delDeb(const QString &debname) +{ + QString backupPath = QString("%1/driver/%2").arg(DB_PATH).arg(debname); + QDir destdir(backupPath); + if (destdir.exists()) { + qCInfo(appLog) << "delDeb" << backupPath << destdir.absolutePath(); + qdelDirectory(backupPath); + destdir.rmdir(destdir.absolutePath()); + } + return (!destdir.exists()); +} +static void cmdAptUpdate() +{ + QProcess process; + process.start("apt update"); + process.waitForFinished(-1); +} +bool DriverManager::aptUpdate() +{ + cmdAptUpdate(); + return true; +} + +/** + * @brief DriverManager::backupDeb backup 驱动 + * @param modulename 驱动deb模块名 + * @return true:成功 false:失败 + */ + +bool DriverManager::backupDeb(const QString &debpath) +{ + QDir formDir_(debpath); + if (!formDir_.exists()) { //检查传入路径是否存在 + qCInfo(appLog) << "no bank up file"; + return false; + } + + QString fromPath = debpath; + int cnt = debpath.length(); + int i = debpath.lastIndexOf("/"); + if ((1 > cnt) || (1 > i)) { //检查传入路径是否合规 /tmp/xx/debname + return false; + } + QString debname = debpath.right(cnt - i - 1); + + QString backupPath = QString("%1/driver/%2").arg(DB_PATH).arg(debname); + QDir destdir(backupPath); + + if (destdir.exists()) { //检查备份路径是否存在 + if (qdelDirectory(backupPath)) { // delete first + if (!destdir.mkpath(destdir.absolutePath())) // mkdir + return false; + } + } + qCInfo(appLog) << "copy file" << fromPath << backupPath << debname; + return qCopyDirectory(fromPath, backupPath, true); +} + +#endif // DISABLE_DRIVER diff --git a/deepin-devicemanager-server/src/DriverControl/DriverManager.h b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.h similarity index 73% rename from deepin-devicemanager-server/src/DriverControl/DriverManager.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.h index d16ff12d1..6508446cf 100644 --- a/deepin-devicemanager-server/src/DriverControl/DriverManager.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/drivermanager.h @@ -1,8 +1,9 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later +#ifndef DISABLE_DRIVER + #ifndef DRIVERMANAGER_H #define DRIVERMANAGER_H @@ -20,11 +21,20 @@ class QThread; class DriverManager : public QObject { Q_OBJECT + public: + typedef struct TPrinterInfo { + int intSid; //sid + QString strDescribe; //描述 + QString strPpd; //ppd + bool isExcat; //打印机厂商和型号 + QString strDriver; //驱动 + } TDriverInfo; + + explicit DriverManager(QObject *parent = nullptr); ~ DriverManager(); - bool checkDriverInfo(); //检测驱动是否需要更新 bool unInstallDriver(const QString &moduleName); //驱动卸载 bool installDriver(const QString &filepath); // 驱动安装 void installDriver(const QString &pkgName, const QString &version);// 驱动安装 @@ -41,26 +51,16 @@ class DriverManager : public QObject bool isArchMatched(const QString &path); //判断包是否有效 bool isDebValid(const QString &filePath); + bool backupDeb(const QString &debpath); + bool delDeb(const QString &debname); + bool aptUpdate(); private: void initConnections(); bool unInstallModule(const QString &moduleName, QString &msg); - bool checkPrinterInfo(); //检测打印机驱动是否需要更新 返回值true:是 false:否 - void loadPrinterInfo(QMap &mapInfo); - bool checkBoardCardInfo();//检测板载设备驱动是否需要更新 返回值true:是 false:否 - bool checkBoardCardInfo(const DriverType type, QMap &mapInfo); - bool checkCameraInfo(QMap &mapInfo); - QString getDriverVersion(QString strDriver); - - /** - * @brief getMapInfo:解析打印机cups第三方库获取的信息 - * @param mapInfo:解析得到的map信息 - * @param src:cups获取的原始信息 - */ - void getMapInfo(QMap &mapInfo, cups_dest_t *src); - void getMapInfoFromHwinfo(const QString &info, QMap &mapInfo, const QString &ch = QString(": ")); bool isNetworkOnline(); + signals: void sigProgressDetail(int progress, const QString &strDeatils); void sigFinished(bool bsuccess, QString msg); @@ -71,8 +71,7 @@ class DriverManager : public QObject void sigDownloadFinished();//下载完成 void sigInstallProgressChanged(int progress);//安装进度 void sigInstallProgressFinished(bool bsuccess, int err); - -public slots: + void sigBackupProgressFinished(bool bsuccess); private: ModCore *mp_modcore = nullptr; @@ -86,15 +85,6 @@ public slots: bool m_IsNetworkOnline = true; bool m_StopQueryNetwork = false; - //打印机相关===begin -public: - typedef struct TPrinterInfo { - int intSid; //sid - QString strDescribe; //描述 - QString strPpd; //ppd - bool isExcat; //打印机厂商和型号 - QString strDriver; //驱动 - } TDriverInfo; public slots: //卸载打印机 Q_SCRIPTABLE bool uninstallPrinter(const QString &vendor, const QString &model); @@ -115,3 +105,4 @@ public slots: }; #endif // DRIVERMANAGER_H +#endif // DISABLE_DRIVER diff --git a/deepin-devicemanager-server/src/DriverControl/HttpDriverInterface.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/httpdriverinterface.cpp similarity index 75% rename from deepin-devicemanager-server/src/DriverControl/HttpDriverInterface.cpp rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/httpdriverinterface.cpp index 85d1f0e6e..46c6108e4 100644 --- a/deepin-devicemanager-server/src/DriverControl/HttpDriverInterface.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/httpdriverinterface.cpp @@ -1,10 +1,11 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "HttpDriverInterface.h" +#include "httpdriverinterface.h" #include "commonfunction.h" -#include "Utils.h" +#include "utils.h" +#include "DDLog.h" #include #include @@ -13,6 +14,7 @@ #include +using namespace DDLog; // 以下这个问题可以避免单例的内存泄露问题 std::atomic HttpDriverInterface::s_Instance; std::mutex HttpDriverInterface::m_mutex; @@ -75,25 +77,28 @@ bool HttpDriverInterface::checkDriverInfo(DriverInfo &driverInfo) QString HttpDriverInterface::getRequestBoard(QString strManufacturer, QString strProducts, int iClassP, int iClass) { + if(strManufacturer.isEmpty() || strProducts.isEmpty()) { + return QString(); + } QString arch = Common::getArchStore(); QString strUrl = Utils::getUrl() + "?arch=" + arch; int iType = DTK_CORE_NAMESPACE::DSysInfo::uosType(); int iEditionType = DTK_CORE_NAMESPACE::DSysInfo::uosEditionType(); strUrl += "&system=" + QString::number(iType) + '-' + QString::number(iEditionType); - if(!strManufacturer.isEmpty()){ + if (!strManufacturer.isEmpty()) { strUrl += "&deb_manufacturer=" + strManufacturer; } - if(!strProducts.isEmpty()){ + if (!strProducts.isEmpty()) { strUrl += "&product=" + strProducts; } - if(0 < iClassP){ + if (0 < iClassP) { strUrl += "&class_p=" + QString(iClassP); } - if(0 < iClass){ + if (0 < iClass) { strUrl += "&class=" + QString(iClass); } - qInfo() << strUrl; + qCInfo(appLog) << strUrl; return getRequestJson(strUrl); } @@ -105,13 +110,13 @@ QString HttpDriverInterface::getRequestPrinter(QString strDebManufacturer, QStri int iEditionType = DTK_CORE_NAMESPACE::DSysInfo::uosEditionType(); strUrl += "&system=" + QString::number(iType) + '-' + QString::number(iEditionType); - if(!strDebManufacturer.isEmpty()){ + if (!strDebManufacturer.isEmpty()) { if (strDebManufacturer == "HP" || strDebManufacturer == "Hewlett-Packard") { strDebManufacturer = "HP"; } strUrl += "&deb_manufacturer=" + strDebManufacturer; } - if(!strDesc.isEmpty()){ + if (!strDesc.isEmpty()) { strUrl += "&desc=" + strDesc; } return getRequestJson(strUrl); @@ -125,7 +130,7 @@ QString HttpDriverInterface::getRequestCamera(QString strDesc) int iEditionType = DTK_CORE_NAMESPACE::DSysInfo::uosEditionType(); strUrl += "&system=" + QString::number(iType) + '-' + QString::number(iEditionType); - if(!strDesc.isEmpty()){ + if (!strDesc.isEmpty()) { strUrl += "&desc=" + strDesc; } return getRequestJson(strUrl); @@ -133,48 +138,47 @@ QString HttpDriverInterface::getRequestCamera(QString strDesc) bool HttpDriverInterface::checkDriverInfo(QString strJson, DriverInfo &driverInfo) { - if(strJson.isEmpty()){ + if (strJson.isEmpty()) { return false; } QList lstDriverInfo; - if(getDriverInfoFromJson(strJson, lstDriverInfo)){ - if(lstDriverInfo.size() == 0){ + if (getDriverInfoFromJson(strJson, lstDriverInfo)) { + if (lstDriverInfo.size() == 0) { return false; } int max = 0; - foreach (const RepoDriverInfo& strDriverInfo , lstDriverInfo){ - if(max < strDriverInfo.iLevel){ + foreach (const RepoDriverInfo &strDriverInfo, lstDriverInfo) { + if (max < strDriverInfo.iLevel) { max = strDriverInfo.iLevel; } } //因为无法从设备型号查询到驱动包的名称(可能有多种同样推荐等级的驱动),所以就查询到这些推荐驱动并遍历,查询本地是否安装。 - foreach (const RepoDriverInfo& strDriverInfo , lstDriverInfo){ - if(max == strDriverInfo.iLevel){ - if(driverInfo.driverName.isEmpty() || strDriverInfo.strPackages != driverInfo.driverName || driverInfo.version.isEmpty()){// + foreach (const RepoDriverInfo &strDriverInfo, lstDriverInfo) { + if (max == strDriverInfo.iLevel) { + if (driverInfo.driverName.isEmpty() || strDriverInfo.strPackages != driverInfo.driverName || driverInfo.version.isEmpty()) { // //如果有一个,且版本也对,则返回false,否则返回true - if(isPkgInstalled(strDriverInfo.strPackages, strDriverInfo.strDebVersion)){ + if (isPkgInstalled(strDriverInfo.strPackages, strDriverInfo.strDebVersion)) { return false; } - } - else { + } else { //如果本地获取的驱动能与仓库推荐驱动中任意一个匹配,则返回false,不需要更新 - if(strDriverInfo.strDebVersion == driverInfo.version){ + if (strDriverInfo.strDebVersion == driverInfo.version) { return false; } } } } - qInfo() << "packages: " << driverInfo.packages; - qInfo() << "debVersion: " << driverInfo.debVersion; - qInfo() << "driverName: " << driverInfo.driverName; - qInfo() << "version: " << driverInfo.version; - - qInfo() << lstDriverInfo.size(); - foreach(const RepoDriverInfo &di, lstDriverInfo){ - qInfo() << "strPackages: " << di.strPackages; - qInfo() << "strDebVersion: " << di.strDebVersion; + qCInfo(appLog) << "packages: " << driverInfo.packages; + qCInfo(appLog) << "debVersion: " << driverInfo.debVersion; + qCInfo(appLog) << "driverName: " << driverInfo.driverName; + qCInfo(appLog) << "version: " << driverInfo.version; + + qCInfo(appLog) << lstDriverInfo.size(); + foreach (const RepoDriverInfo &di, lstDriverInfo) { + qCInfo(appLog) << "strPackages: " << di.strPackages; + qCInfo(appLog) << "strDebVersion: " << di.strDebVersion; } return true; } @@ -184,14 +188,12 @@ bool HttpDriverInterface::checkDriverInfo(QString strJson, DriverInfo &driverInf bool HttpDriverInterface::isPkgInstalled(QString strPkgName, QString strVersion) { //调用apt命令查看包是否安装。 - QProcess process; - QStringList options; - options << "-c" << "apt policy " + strPkgName; - process.start("/bin/bash", options); - process.waitForFinished(-1); - QStringList infoList = QString(process.readAllStandardOutput()).split("\n"); - - if(infoList.size() > 2 && infoList[1].contains(strVersion)){ + QString outInfo = Utils::executeServerCmd("apt", QStringList() << "policy" << strPkgName, QString(), -1); + if(outInfo.isEmpty()) + return false; + QStringList infoList = outInfo.split("\n"); + + if (infoList.size() > 2 && infoList[1].contains(strVersion)) { return true; } return false; @@ -208,7 +210,7 @@ bool HttpDriverInterface::getDriverInfoFromJson(QString strJson, QList -#include +#include #include #include @@ -44,7 +43,7 @@ class HttpDriverInterface : public QObject bool checkDriverInfo(DriverInfo &driverInfo); protected: - explicit HttpDriverInterface(QObject* parent = nullptr); + explicit HttpDriverInterface(QObject *parent = nullptr); virtual ~HttpDriverInterface(); bool getDriverInfoFromJson(QString strJson, QList &lstDriverInfo);//返回值true:转换成功 false:失败 @@ -56,7 +55,7 @@ class HttpDriverInterface : public QObject bool checkDriverInfo(QString strJson, DriverInfo &driverInfo); bool isPkgInstalled(QString strPkgName, QString strVersion); public: - signals: +signals: void sigRequestFinished(bool sucess, QString msg); private: diff --git a/deepin-devicemanager-server/src/DriverControl/ModCore.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/modcore.cpp similarity index 90% rename from deepin-devicemanager-server/src/DriverControl/ModCore.cpp rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/modcore.cpp index 4c9da8aef..317bed174 100644 --- a/deepin-devicemanager-server/src/DriverControl/ModCore.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/modcore.cpp @@ -1,16 +1,20 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "ModCore.h" +#ifndef DISABLE_DRIVER + +#include "modcore.h" +#include "DDLog.h" #include #include #include #include #include -#include +#include + +using namespace DDLog; const QString BLACKLISTT_PROBE_DIR_ETC = "/etc/modprobe.d"; //黑名单配置路径 const QString BLACKLISTT_PROBE_DIR_USR_LIB = "/usr/lib/modprobe.d"; //黑名单配置路径 @@ -37,28 +41,28 @@ QStringList ModCore::checkModuleInUsed(const QString &modName) ctx = kmod_new(nullptr, null_config); if (!ctx) { - qInfo() << "kmod_new() failed!"; + qCInfo(appLog) << "kmod_new() failed!"; } else { int err = 0; struct kmod_module *mod = nullptr; err = modNew(ctx, modName, mod); if (err < 0) { - qInfo() << "modulename=" << modName << "modNew failed errcode=" << err; + qCInfo(appLog) << "modulename=" << modName << "modNew failed errcode=" << err; } else { struct kmod_list *holders = nullptr; int state = 0; state = kmod_module_get_initstate(mod); if (state == KMOD_MODULE_BUILTIN) { - qInfo() << QString("Module %1 is builtin.").arg(kmod_module_get_name(mod)) << " errcode=" << -ENOENT; + qCInfo(appLog) << QString("Module %1 is builtin.").arg(kmod_module_get_name(mod)) << " errcode=" << -ENOENT; } else if (state < 0) { - qInfo() << QString("Module %1 is not currently loaded").arg(kmod_module_get_name(mod)) << " errcode=" << -ENOENT; + qCInfo(appLog) << QString("Module %1 is not currently loaded").arg(kmod_module_get_name(mod)) << " errcode=" << -ENOENT; } else { holders = kmod_module_get_holders(mod); if (holders != nullptr) { struct kmod_list *itr; - qInfo() << QString("Module %1 is in use by:").arg(kmod_module_get_name(mod)); + qCInfo(appLog) << QString("Module %1 is in use by:").arg(kmod_module_get_name(mod)); kmod_list_foreach(itr, holders) { struct kmod_module *hm = kmod_module_get_module(itr); modList.append(QString("%1").arg(kmod_module_get_name(hm))); @@ -81,7 +85,7 @@ QStringList ModCore::checkModuleInUsed(const QString &modName) * @param modName 模块名sample: hid or hid.ko * @return 删除结果 true:成功 false: 失败 */ -bool ModCore::rmModForce(const QString &modName, QString& errMsg) +bool ModCore::rmModForce(const QString &modName, QString &errMsg) { bool bsuccess = true; struct kmod_ctx *ctx = nullptr; @@ -90,7 +94,7 @@ bool ModCore::rmModForce(const QString &modName, QString& errMsg) ctx = kmod_new(nullptr, null_config); if (!ctx) { bsuccess = false; - qInfo() << __func__ << "kmod_new() failed!"; + qCInfo(appLog) << __func__ << "kmod_new() failed!"; } else { int err = 0; struct kmod_module *mod = nullptr; @@ -98,14 +102,14 @@ bool ModCore::rmModForce(const QString &modName, QString& errMsg) if (err < 0) { bsuccess = false; - qInfo() << __func__ << "modulename=" << modName << "modNew failed errcode=" << err; + qCInfo(appLog) << __func__ << "modulename=" << modName << "modNew failed errcode=" << err; errMsg = QString("%1").arg(abs(err)); } else { err = kmod_module_remove_module(mod, KMOD_REMOVE_NOWAIT); if (err < 0) { errMsg = QString("%1").arg(abs(err)); bsuccess = false; - qInfo() << __func__ << QString("could not remove module %1: %1\n").arg(modName).arg(err); + qCInfo(appLog) << __func__ << QString("could not remove module %1: %1\n").arg(modName).arg(err); } kmod_module_unref(mod); } @@ -120,7 +124,7 @@ bool ModCore::rmModForce(const QString &modName, QString& errMsg) * @param flags 安装属性,属性值参照kmod_probe解释 * @return 反回错误类型枚举值 */ -bool ModCore::modInstall(const QString &modName, QString& errMsg, unsigned int flags) +bool ModCore::modInstall(const QString &modName, QString &errMsg, unsigned int flags) { bool success = true; struct kmod_ctx *ctx = nullptr; @@ -129,7 +133,7 @@ bool ModCore::modInstall(const QString &modName, QString& errMsg, unsigned int f ctx = kmod_new(nullptr, null_config); if (!ctx) { success = false; - qInfo() << __func__ << "kmod_new() failed!"; + qCInfo(appLog) << __func__ << "kmod_new() failed!"; } else { int err = 0; struct kmod_list *modlist = nullptr; @@ -142,14 +146,14 @@ bool ModCore::modInstall(const QString &modName, QString& errMsg, unsigned int f if (err < 0) { errMsg = QString("%1").arg(abs(err)); success = false; - qInfo() << __func__ << QString("could not insert module %1: %1\n").arg(modName).arg(err); + qCInfo(appLog) << __func__ << QString("could not insert module %1: %1\n").arg(modName).arg(err); } kmod_module_unref(mod); break; //出错一次直接错误返回 } kmod_module_unref_list(modlist); } else { - qInfo() << __func__ << QString("Mod %1 not found in directory %2").arg(modName).arg(kmod_get_dirname(ctx)); + qCInfo(appLog) << __func__ << QString("Mod %1 not found in directory %2").arg(modName).arg(kmod_get_dirname(ctx)); success = false; } @@ -171,14 +175,14 @@ QString ModCore::modGetPath(const QString &modName) ctx = kmod_new(nullptr, null_config); if (!ctx) { - qInfo() << __func__ << "kmod_new() failed!"; + qCInfo(appLog) << __func__ << "kmod_new() failed!"; } else { int err = 0; struct kmod_module *mod = nullptr; err = modNew(ctx, modName, mod); if (err < 0) { - qInfo() << __func__ << "modulename=" << modName << "modNew failed errcode=" << err; + qCInfo(appLog) << __func__ << "modulename=" << modName << "modNew failed errcode=" << err; } else { path.append(kmod_module_get_path(mod)); kmod_module_unref(mod); @@ -201,14 +205,14 @@ QString ModCore::modGetName(const QString &modPath) ctx = kmod_new(nullptr, null_config); if (!ctx) { - qInfo() << __func__ << "kmod_new() failed!"; + qCInfo(appLog) << __func__ << "kmod_new() failed!"; } else { int err = 0; struct kmod_module *mod = nullptr; err = modNew(ctx, modPath, mod); if (err < 0) { - qInfo() << __func__ << "modulepath=" << modPath << "modNew failed errcode=" << err; + qCInfo(appLog) << __func__ << "modulepath=" << modPath << "modNew failed errcode=" << err; } else { modname.append(kmod_module_get_name(mod)); kmod_module_unref(mod); @@ -232,7 +236,7 @@ QString ModCore::modGetInfo(const QString &modName, ModCore::ModInfoType infotyp ctx = kmod_new(nullptr, null_config); if (!ctx) { - qInfo() << __func__ << "kmod_new() failed!"; + qCInfo(appLog) << __func__ << "kmod_new() failed!"; return QString(); } else { int err = 0; @@ -240,13 +244,13 @@ QString ModCore::modGetInfo(const QString &modName, ModCore::ModInfoType infotyp err = modNew(ctx, modName, mod); if (err < 0) { - qInfo() << __func__ << "modName=" << modName << "modNew failed errcode=" << err; + qCInfo(appLog) << __func__ << "modName=" << modName << "modNew failed errcode=" << err; return QString(); } else { struct kmod_list *modlist = nullptr; err = kmod_module_get_info(mod, &modlist); if (err < 0) { - qInfo() << __func__ << QString("could not get mod info from %1, errno=%2") + qCInfo(appLog) << __func__ << QString("could not get mod info from %1, errno=%2") .arg(kmod_module_get_name(mod)).arg(err); return QString(); } @@ -259,7 +263,7 @@ QString ModCore::modGetInfo(const QString &modName, ModCore::ModInfoType infotyp modinfo = QString(value); break;//找到直接结束查找 } - qInfo() << key << value; + qCInfo(appLog) << key << value; } kmod_module_info_free_list(modlist); @@ -568,7 +572,7 @@ bool ModCore::isModFile(const QString &filePath) } kmod_unref(ctx); } - qInfo() << "" << bmodfile; + qCInfo(appLog) << "" << bmodfile; return bmodfile; } @@ -658,4 +662,4 @@ bool ModCore::setModLoadedOnBoot(const QString &modName) return true; } - +#endif // DISABLE_DRIVER diff --git a/deepin-devicemanager-server/src/DriverControl/ModCore.h b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/modcore.h similarity index 90% rename from deepin-devicemanager-server/src/DriverControl/ModCore.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/modcore.h index eaf1f0d3c..22b75f139 100644 --- a/deepin-devicemanager-server/src/DriverControl/ModCore.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/modcore.h @@ -1,8 +1,9 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later +#ifndef DISABLE_DRIVER + #ifndef MODCORE_H #define MODCORE_H @@ -40,9 +41,9 @@ class ModCore: public QObject //获取依赖当前模块在使用的模块 QStringList checkModuleInUsed(const QString &modName); //强制移除驱动模块 等效于rmmod -f - bool rmModForce(const QString &modName, QString& errMsg); + bool rmModForce(const QString &modName, QString &errMsg); //ko安装 - bool modInstall(const QString &modName, QString& errMsg, unsigned int flags = 0); + bool modInstall(const QString &modName, QString &errMsg, unsigned int flags = 0); //通过模块名获取驱动所在路径 QString modGetPath(const QString &modName); @@ -93,3 +94,4 @@ class ModCore: public QObject }; #endif // MODCORE_H +#endif // DISABLE_DRIVER diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/notifythread.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/notifythread.cpp new file mode 100644 index 000000000..a9e5bd0eb --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/notifythread.cpp @@ -0,0 +1,59 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "notifythread.h" +#include "DDLog.h" +#include "utils.h" + +#include +#include +#include + +using namespace DDLog; + +NotifyThread::NotifyThread(QObject *parent) : QThread(parent) +{ + +} + +void NotifyThread::run() +{ + QString strUsername(""); + QProcess process; + forever { + //查看dde-desktop进程是否启动 + QString outInfo = Utils::executeServerCmd("ps", QStringList() << "aux", QString(), -1); + + // Split the output search for the 'grep desktop | grep -v grep' pattern + QStringList retLst; + foreach (QString out, outInfo.split("\n")) { + if (out.contains("desktop") && !out.contains("grep")) { + retLst << out; + } + } + bool bDeskboot = true; + if (retLst.size() < 1) { + sleep(2); + continue; + } + //查看用户名 + process.start("who"); + process.waitForFinished(-1); + strUsername = process.readAll().split(' ')[0]; + qCInfo(appLog) << strUsername; + if (strUsername.isEmpty()) { + sleep(2); + continue; + } + + QString name = QLocale::system().name(); + + //通知前端 example: runuser -l Username -c "XDG_RUNTIME_DIR=\"/run/user/\$(id -u $Username)\" /usr/bin/deepin-devicemanager notify zh_CN" + QString strCmd=QString("XDG_RUNTIME_DIR=\"/run/user/\$(id -u %1)\" /usr/bin/deepin-devicemanager notify %2").arg(strUsername).arg(name); + process.start("runuser", QStringList() << "-l" << strUsername << "-c" << strCmd); + process.waitForFinished(-1); + break; + } +} + diff --git a/deepin-devicemanager-server/src/DriverControl/NotifyThread.h b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/notifythread.h similarity index 80% rename from deepin-devicemanager-server/src/DriverControl/NotifyThread.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/notifythread.h index 8fcf01b04..5c520f196 100644 --- a/deepin-devicemanager-server/src/DriverControl/NotifyThread.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/notifythread.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.cpp new file mode 100644 index 000000000..796983c16 --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.cpp @@ -0,0 +1,287 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "utils.h" +#include "DDLog.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +using namespace DDLog; + +const QString BLACKLIST_CONF = "/etc/modprobe.d/blacklist-devicemanager.conf"; + +Utils::Utils() +{ + +} + +QString Utils::file2PackageName(const QString &fileName) +{ + QString packageName(""); + QProcess process; + process.start("dpkg", QStringList() << "-S" << fileName); + if (!process.waitForFinished()) + return packageName; + //content like linux-image-4.19.0-amd64-desktop: /lib/modules/4.19.0-amd64-desktop/kernel/drivers/hid/usbhid/usbhid.ko + QString strContent = process.readAll(); + QStringList strList = strContent.split(":"); + + if (strList.size() > 0) { + packageName = strList.at(0); + } + + return packageName; +} + + +QString Utils::getModuleFilePath(const QString &moduleName) +{ + QString koPath(""); + QProcess process; + process.start("modinfo", QStringList() << "-n" << moduleName); + if (!process.waitForFinished()) + return koPath; + koPath = process.readAll(); + koPath.remove("\n"); + + return koPath; +} + +QString Utils::kernelRelease() +{ + struct utsname name; + uname(&name); + QString strKernel(name.release); + + return strKernel; +} + +QString Utils::machineArch() +{ + struct utsname name; + uname(&name); + QString strArch(name.machine); + qCInfo(appLog) << name.machine << name.sysname << name.domainname << name.nodename << name.release; + + return strArch; +} + +bool Utils::addModBlackList(const QString &moduleName) +{ + QProcess process; + process.start(QString("echo blacklist %1 >> %2").arg(moduleName).arg(BLACKLIST_CONF)); + if (!process.waitForFinished()) + return false; + return true; +} + +bool Utils::unInstallPackage(const QString &packageName) +{ + QProcess process; + process.start(QString("apt remove %1").arg(packageName)); + if (!process.waitForFinished()) + return false; + return true; +} + +/** + * @brief Utils::isDriverPackage 判断Deb是否为驱动包 + * @param filepath 包文件路径 + * @return true: 是 false: 否 + */ +bool Utils::isDriverPackage(const QString &filepath) +{ + if (!QFile::exists(filepath)) { + return false; + } + bool bsuccess = false; + QDir tmpDir = QDir::temp(); + QString tmpPath = QString("devicemanager-%1").arg(QUuid::createUuid().toString(QUuid::WithoutBraces)); + if (tmpDir.mkdir(tmpPath)) { + tmpDir.cd(tmpPath); + QString strExtract = tmpDir.absolutePath(); + executeServerCmd("dpkg-deb", QStringList() << QString("-x") << filepath << strExtract); + // 2021-12-24 liujuna@uniontech.com 修改过滤规则 + // 关键字查找 insmod modprobe和 路径 /lib/module 会在设备管理器本身(后台服务)和libhd等安装包中返回true,因此暂不可使用 + // 英伟达驱动中找不到 .ko 和 .ppd 等信息 , 但是可以找到 nvidia*.ko 字段,因此添加 nvidia*.ko 过滤字段 + // 不能直接通过包名判断 比如 "deepin-devicemanager_1.0.deb" 判断是否包含 "deepin-devicemanager" 此时同样会过滤 "/home/uos/deepin-devicemanager/driver.deb" + QString outInfo1 = executeServerCmd("grep", QStringList() << QString("-irHE") << QString("nvidia*.ko") << strExtract); + if (!outInfo1.isEmpty()) { + bsuccess = true; + } + if(!bsuccess) { + QString outInfo2 = executeServerCmd("find", QStringList() << strExtract << QString("-name") << QString("*.ko") << QString("-o") << QString("-name") << QString("*.ppd")); + if (!outInfo2.isEmpty()) { + bsuccess = true; + } + } + //此处主动调用删除临时文件,临时文件在/tmp目录每次重启会自动清除,所以不对删除结果做处理 + tmpDir.removeRecursively(); + } + return bsuccess; +} + +bool Utils::updateModDeps(bool bquick) +{ + QProcess process; + QString strcomd; + if (bquick) { + strcomd = QString("depmod %1").arg("--quick"); + } else { + strcomd = QString("depmod %1").arg("--all"); + } + process.start(strcomd); + if (!process.waitForFinished()) + return false; + + return true; +} + +bool Utils::isFileLocked(const QString &filepath, bool bread) +{ + short int ltype; + int opentype; + if (bread) { + ltype = F_RDLCK; + opentype = O_RDONLY; + } else { + ltype = F_WRLCK; + opentype = O_WRONLY; + } + struct flock fl; + fl.l_type = ltype; /*F_RDLCK read/F_WRLCK write lock */ + fl.l_whence = SEEK_SET; /* beginning of file */ + fl.l_start = 0; /* offset from l_whence */ + fl.l_len = 0; /* length, 0 = to EOF */ + fl.l_pid = getpid(); /* PID */ + + int fd = open(filepath.toStdString().c_str(), opentype); + //文件打开失败默认为被锁住 + if (fd < 0) { + return true; + } + + if (-1 == fcntl(fd, F_SETLK, &fl)) { + //设置失败,文件已被锁住 + qCInfo(appLog) << __func__ << "file already locked"; + return true; + } + //file not locked,set lock success + fl.l_type = F_UNLCK; + //unset lock 必须取消锁定否则其它地方无法获取文件锁 + fcntl(fd, F_SETLK, &fl); + return false; +} + +bool Utils::isDpkgLocked() +{ + QProcess proc; + proc.setProgram("ps"); + proc.setArguments(QStringList() << "-e" << "-o" << "comm"); + proc.start(); + proc.waitForFinished(); + QString info = proc.readAllStandardOutput(); + if (!info.contains("dpkg")) + return false; + + // Split the output search for the 'grep dpkg ' pattern + foreach (QString out, info.split("\n")) { + if (out.contains("dpkg")) { + if(out.trimmed() == "dpkg-query") + return false; + } + } + return true; +} + +QString Utils::getUrl() +{ + QFile file(QDir::homePath() + "/url"); + if (!file.open(QIODevice::ReadOnly)) { + return "https://driver.uniontech.com/api/v1/drive/search"; + } + QString info = file.readAll(); + if ("true" == info) { + return "https://driver.uniontech.com/api/v1/drive/search"; + } else { + return "https://drive-pre.uniontech.com/api/v1/drive/search"; + } +} + +QByteArray Utils::executeServerCmd(const QString &cmd, + const QStringList &args, + const QString &workPath, + int msecsWaiting/* = 30000*/, + bool readAll/* = false*/) +{ + QProcess process; + if (!workPath.isEmpty()) + process.setWorkingDirectory(workPath); + + process.setProgram(cmd); + process.setArguments(args); + auto env = QProcess::systemEnvironment(); + env.append("LANG=en_US.UTF-8"); + env.append("LANGUAGE=en_US"); + process.setEnvironment(env); + if (readAll) { + process.setProcessChannelMode(QProcess::MergedChannels); + } + + process.start(); + // Wait for process to finish without timeout. + process.waitForFinished(msecsWaiting); + QByteArray outPut = process.readAllStandardOutput(); + int nExitCode = process.exitCode(); + bool bRet = (process.exitStatus() == QProcess::NormalExit && nExitCode == 0); + if (!bRet) { + qCWarning(appLog) << "run cmd error, caused by:" << process.errorString() << "output:" << outPut; + return QByteArray(); + } + return outPut; +} + +Utils::HierarchicalVerifyStatus Utils::hierarchicalEnabled() +{ + static const QString kHierService = "com.deepin.daemon.ACL"; + static const QString kHierPath = "/org/deepin/security/hierarchical/Control"; + static const QString kHierInterface = "org.deepin.security.hierarchical.Control"; + static const QString kHierMethod = "Availabled"; + + QDBusInterface interface(kHierService, kHierPath, kHierInterface, QDBusConnection::systemBus()); + + if (interface.isValid()) { + QDBusMessage message = interface.call(kHierMethod); + QDBusError error = interface.lastError(); + if (QDBusError::NoError != error.type()) { + qCWarning(appLog) << QString("[Hierarchical] DBus %1 read property %2 error: type(%2) [%3] %4") + .arg(kHierService) + .arg(kHierMethod) + .arg(error.type()) + .arg(error.name()) + .arg(error.message()); + } else { + QDBusReply reply(message); + bool availabled = reply.value(); + qCWarning(appLog) << QString("[Hierarchical] Get %1 property %2 value: %3") + .arg(kHierService) + .arg(kHierMethod) + .arg(availabled); + + return availabled ? HierarchicalVerifyAvailable : HierarchicalVerifyUnavailable; + } + } + + return HierarchicalVerifyNotReady; +} diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.h b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.h new file mode 100644 index 000000000..0ceb8e404 --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/drivercontrol/utils.h @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef UTILS_H +#define UTILS_H +#include +#include + +class Utils +{ +public: + Utils(); + static QString file2PackageName(const QString &fileName); + static QString getModuleFilePath(const QString &moduleName); + static QString kernelRelease(); + static QString machineArch(); + static bool addModBlackList(const QString &moduleName); + static bool unInstallPackage(const QString &packageName); + // 判断Deb是否为驱动包 + static bool isDriverPackage(const QString &filepath); + // 更新mod dep + static bool updateModDeps(bool bquick = true); + // 判断文件是否被占用 + static bool isFileLocked(const QString &filepath, bool bread = false); + // 判断dpkg是否被占用 + static bool isDpkgLocked(); + // 获取url + static QString getUrl(); + static QByteArray executeServerCmd(const QString &cmd, + const QStringList &args = QStringList(), + const QString &workPath = QString(), + int msecsWaiting = 30000, + bool readAll = false); + + // check system hierarchical verify available. + enum HierarchicalVerifyStatus { + HierarchicalVerifyNotReady, + HierarchicalVerifyAvailable, + HierarchicalVerifyUnavailable, + }; + static HierarchicalVerifyStatus hierarchicalEnabled(); +}; + +#endif // UTILS_H diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enablesqlmanager.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enablesqlmanager.cpp new file mode 100644 index 000000000..f39d6a88a --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enablesqlmanager.cpp @@ -0,0 +1,437 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "enablesqlmanager.h" +#include "DDLog.h" + +#include +#include +#include +#include +#define DB_PATH "/usr/share/deepin-devicemanager/" +#define DB_FILE "enable.db" +#define DB_CONNECT_NAME "device-enable" +#define DB_TABLE_AUTHORIZED "authorized" +#define DB_TABLE_REMOVE "remove" +#define DB_TABLE_PRINTER "printer" +#define DB_TABLE_WAKEUP "wake" +#define DB_TABLE_NETWORK_WAKEUP "net_wake" +#define DB_TABLE_MONITOR_DEV "monitor_dev" + +using namespace DDLog; + +std::atomic EnableSqlManager::s_Instance; +std::mutex EnableSqlManager::m_mutex; +void EnableSqlManager::insertDataToRemoveTable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, const QString &strDriver) +{ + // QString sql = QString("INSERT INTO %1 (class, name, path, unique_id, driver) VALUES (%2, %3, %4, %5, %6);") + // .arg(DB_TABLE_REMOVE).arg(":hclass").arg(":name").arg(":path").arg(":unique_id").arg(":strDriver"); + if(!m_sqlQuery.prepare("INSERT INTO remove (class, name, path, unique_id, driver) VALUES (:hclass, :name, :path, :unique_id, :strDriver);")) return; + m_sqlQuery.bindValue(":hclass", QVariant(hclass)); + m_sqlQuery.bindValue(":name", QVariant(name)); + m_sqlQuery.bindValue(":path", QVariant(path)); + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + m_sqlQuery.bindValue(":strDriver", QVariant(strDriver)); + + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } +} + +void EnableSqlManager::removeDateFromRemoveTable(const QString &path) +{ + QString sql = QString("DELETE FROM %1 WHERE path=%2;").arg(DB_TABLE_REMOVE).arg(":path"); + if(!m_sqlQuery.prepare(sql)) return; + m_sqlQuery.bindValue(":path", QVariant(path)); + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << m_sqlQuery.lastError(); + } +} + +void EnableSqlManager::insertDataToAuthorizedTable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, bool exist, const QString &strDriver) +{ + // 数据库已经存在该设备记录 + if (uniqueIDExistedEX(unique_id, path)) { + return; + } + + // 数据库没有该设备记录,则直接插入 + // QString sql = QString("INSERT INTO %1 (class, name, path, unique_id, exist, driver) VALUES (%2, %3, %4, %5, %6, %7);") + // .arg(DB_TABLE_AUTHORIZED).arg(":hclass").arg(":name").arg(":path").arg(":unique_id").arg(":exist").arg(":strDriver"); + if(!m_sqlQuery.prepare("INSERT INTO authorized (class, name, path, unique_id, exist, driver) VALUES (:hclass, :name, :path, :unique_id, :exist, :strDriver);")){ + qDebug() << "insert data to authorized table failed"; + return; + } + m_sqlQuery.bindValue(":hclass", QVariant(hclass)); + m_sqlQuery.bindValue(":name", QVariant(name)); + m_sqlQuery.bindValue(":path", QVariant(path)); + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + m_sqlQuery.bindValue(":exist", QVariant(exist)); + m_sqlQuery.bindValue(":strDriver", QVariant(strDriver)); + + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } +} + +void EnableSqlManager::removeDataFromAuthorizedTable(const QString &key) +{ + QString sql = QString("DELETE FROM %1 WHERE unique_id=%2;").arg(DB_TABLE_AUTHORIZED).arg(":key"); + if(!m_sqlQuery.prepare(sql)) return; + m_sqlQuery.bindValue(":key", QVariant(key)); + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << m_sqlQuery.lastError(); + } +} + +void EnableSqlManager::updateDataToAuthorizedTable(const QString &unique_id, const QString &path) +{ + QString sql = QString("UPDATE %1 SET path=%2 WHERE unique_id=%3;").arg(DB_TABLE_AUTHORIZED).arg(":path").arg(":unique_id"); + if(!m_sqlQuery.prepare(sql)) return; + m_sqlQuery.bindValue(":path", QVariant(path)); + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << m_sqlQuery.lastError(); + } +} + +void EnableSqlManager::clearEnableFromAuthorizedTable() +{ + QString sql = QString("DELETE FROM %1 WHERE enable='%2';").arg(DB_TABLE_AUTHORIZED).arg(true); + if (!m_sqlQuery.exec(sql)) { + qCInfo(appLog) << m_sqlQuery.lastError(); + } +} + +void EnableSqlManager::insertDataToPrinterTable(const QString &hclass, const QString &name, const QString &path) +{ + QString sql = QString("INSERT INTO %1 (class, name, path) VALUES (%2, %3, %4);").arg(DB_TABLE_PRINTER).arg(":hclass").arg(":name").arg(":path"); + if(!m_sqlQuery.prepare(sql)) return; + m_sqlQuery.bindValue(":hclass", QVariant(hclass)); + m_sqlQuery.bindValue(":name", QVariant(name)); + m_sqlQuery.bindValue(":path", QVariant(path)); + + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } +} + +void EnableSqlManager::removeDataFromPrinterTable(const QString &name) +{ + QString sql = QString("DELETE FROM %1 WHERE name=%2;").arg(DB_TABLE_PRINTER).arg(":name"); + if(!m_sqlQuery.prepare(sql)) return; + m_sqlQuery.bindValue(":name", QVariant(name)); + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << m_sqlQuery.lastError(); + } +} + +bool EnableSqlManager::uniqueIDExisted(const QString &key, const QString path) +{ + QString sql = QString("SELECT COUNT(*) FROM %1 WHERE unique_id=%2;").arg(DB_TABLE_AUTHORIZED).arg(":param"); + if (!path.isEmpty()){ + sql = QString("SELECT COUNT(*) FROM %1 WHERE unique_id=%2 and path=%3;").arg(DB_TABLE_AUTHORIZED).arg(":param").arg(":path"); + } + if(!m_sqlQuery.prepare(sql)) return false; + m_sqlQuery.bindValue(":param", QVariant(key)); + if (!path.isEmpty()){ + m_sqlQuery.bindValue(":path", QVariant(path)); + } + if (m_sqlQuery.exec() && m_sqlQuery.next()) { + return m_sqlQuery.value(0).toInt() > 0; + } + return false; +} + +bool EnableSqlManager::uniqueIDExistedEX(const QString &key, const QString path) +{ + return uniqueIDExisted(key, path); +} + +bool EnableSqlManager::isUniqueIdEnabled(const QString &key) +{ + QString sql = QString("SELECT enable FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_AUTHORIZED).arg(":key"); + if(!m_sqlQuery.prepare(sql)) return false; + m_sqlQuery.bindValue(":key", QVariant(key)); + if (m_sqlQuery.exec() && m_sqlQuery.next()) { + return m_sqlQuery.value(0).toInt() > 0; + } + return false; +} + +QString EnableSqlManager::removedInfo() +{ + QString info = ""; + QString sql = QString("SELECT class,name,path,unique_id,driver FROM %1;").arg(DB_TABLE_REMOVE); + if (!m_sqlQuery.exec(sql)) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + return info; + } + + while (m_sqlQuery.next()) { + info += "Hardware Class : " + m_sqlQuery.value(0).toString() + "\n"; + info += "name : " + m_sqlQuery.value(1).toString() + "\n"; + info += "path : " + m_sqlQuery.value(2).toString() + "\n"; + info += "unique_id : " + m_sqlQuery.value(3).toString() + "\n"; + info += "driver : " + m_sqlQuery.value(4).toString() + "\n\n"; + } + return info; +} + +QString EnableSqlManager::authorizedInfo() +{ + QString info = ""; + QString sql = QString("SELECT class,name,path,unique_id,driver FROM %1;").arg(DB_TABLE_AUTHORIZED); + if (!m_sqlQuery.exec(sql)) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + return info; + } + + while (m_sqlQuery.next()) { + info += "Hardware Class : " + m_sqlQuery.value(0).toString() + "\n"; + info += "name : " + m_sqlQuery.value(1).toString() + "\n"; + info += "path : " + m_sqlQuery.value(2).toString() + "\n"; + info += "unique_id : " + m_sqlQuery.value(3).toString() + "\n"; + info += "driver : " + m_sqlQuery.value(4).toString() + "\n\n"; + } + return info; +} + +QString EnableSqlManager::authorizedPath(const QString &unique_id) +{ + QString sql = QString("SELECT path FROM %1 WHERE unique_id=%2;").arg(DB_TABLE_AUTHORIZED).arg(":unique_id"); + if(!m_sqlQuery.prepare(sql)) return ""; + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + if (m_sqlQuery.exec() && m_sqlQuery.next()) { + return m_sqlQuery.value(0).toString(); + } + return ""; +} + + +void EnableSqlManager::authorizedPathUniqueIDList(QList > &lstPair) +{ + QString sql = QString("SELECT path,unique_id FROM %1;").arg(DB_TABLE_AUTHORIZED); + if (!m_sqlQuery.exec(sql)) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + return; + } + while (m_sqlQuery.next()) { + QPair pair; + pair.first = m_sqlQuery.value(0).toString(); + pair.second = m_sqlQuery.value(1).toString(); + lstPair.append(pair); + } +} + +void EnableSqlManager::removePathList(QStringList &lsPath) +{ + QString sql = QString("SELECT path FROM %1;").arg(DB_TABLE_REMOVE); + if (!m_sqlQuery.exec(sql)) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + return; + } + while (m_sqlQuery.next()) { + lsPath.append(m_sqlQuery.value(0).toString()); + } +} + +void EnableSqlManager::removePathUniqueIDList(QList > &lstPair) +{ + QString sql = QString("SELECT path,unique_id FROM %1;").arg(DB_TABLE_REMOVE); + if (!m_sqlQuery.exec(sql)) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + return; + } + while (m_sqlQuery.next()) { + QPair pair; + pair.first = m_sqlQuery.value(0).toString(); + pair.second = m_sqlQuery.value(1).toString(); + lstPair.append(pair); + } +} + +void EnableSqlManager::insertWakeupData(const QString &unique_id, const QString &path, bool wakeup) +{ + QString sql = QString("INSERT INTO %1 (unique_id, path, wakeup) VALUES (%2, %3, %4);").arg(DB_TABLE_WAKEUP).arg(":unique_id").arg(":path").arg(":wakeup"); + if(!m_sqlQuery.prepare(sql)) return; + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + m_sqlQuery.bindValue(":path", QVariant(path)); + m_sqlQuery.bindValue(":wakeup", QVariant(wakeup)); + + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } +} + +bool EnableSqlManager::isWakeupUniqueIdExisted(const QString &unique_id) +{ + QString sql = QString("SELECT COUNT(*) FROM %1 WHERE unique_id=%2;").arg(DB_TABLE_WAKEUP).arg(":unique_id"); + if(!m_sqlQuery.prepare(sql)) return false; + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + if (m_sqlQuery.exec() && m_sqlQuery.next()) { + return m_sqlQuery.value(0).toInt() > 0; + } + return false; +} + +void EnableSqlManager::updateWakeData(const QString &unique_id, const QString &path, bool wakeup) +{ + QString sql = QString("UPDATE %1 SET path=%2, wakeup=%3 WHERE unique_id=%4;").arg(DB_TABLE_WAKEUP).arg(":path").arg(":wakeup").arg(":unique_id"); + if(!m_sqlQuery.prepare(sql)) return; + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + m_sqlQuery.bindValue(":path", QVariant(path)); + m_sqlQuery.bindValue(":wakeup", QVariant(wakeup)); + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << m_sqlQuery.lastError(); + } +} + +QString EnableSqlManager::wakeupPath(const QString &unique_id) +{ + QString sql = QString("SELECT path FROM %1 WHERE unique_id=%2;").arg(DB_TABLE_WAKEUP).arg(":unique_id"); + if(!m_sqlQuery.prepare(sql)) return ""; + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + if (m_sqlQuery.exec() && m_sqlQuery.next()) { + return m_sqlQuery.value(0).toString(); + } + return ""; +} + +bool EnableSqlManager::isWakeup(const QString &unique_id) +{ + QString sql = QString("SELECT wakeup FROM %1 WHERE unique_id=%2;").arg(DB_TABLE_WAKEUP).arg(":unique_id"); + if(!m_sqlQuery.prepare(sql)) return false; + m_sqlQuery.bindValue(":unique_id", QVariant(unique_id)); + if (m_sqlQuery.exec() && m_sqlQuery.next()) + return m_sqlQuery.value(0).toBool(); + return false; +} + +void EnableSqlManager::insertNetworkWakeup(const QString &logical_name, bool wake) +{ + // 先判断是否已经存在 + QString sqlAdd; + QString sqlExist = QString("SELECT wakeup FROM %1 WHERE logical_name=%2;").arg(DB_TABLE_NETWORK_WAKEUP).arg(":logical_name"); + if(!m_sqlQuery.prepare(sqlExist)) return; + m_sqlQuery.bindValue(":logical_name", QVariant(logical_name)); + if (m_sqlQuery.exec() && m_sqlQuery.next()) { + sqlAdd = QString("UPDATE %1 SET wakeup=%2 WHERE logical_name=%3;").arg(DB_TABLE_NETWORK_WAKEUP).arg(":wake").arg(":logical_name"); + } else { + sqlAdd = QString("INSERT INTO %1 (logical_name, wakeup) VALUES (%2, %3);").arg(DB_TABLE_NETWORK_WAKEUP).arg(":logical_name").arg(":wake"); + } + + if(!m_sqlQuery.prepare(sqlAdd)) return; + m_sqlQuery.bindValue(":wake", QVariant(wake)); + m_sqlQuery.bindValue(":logical_name", QVariant(logical_name)); + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } +} + +bool EnableSqlManager::isNetworkWakeup(const QString &logical_name) +{ + QString sql = QString("SELECT wakeup FROM %1 WHERE logical_name=%2;").arg(DB_TABLE_NETWORK_WAKEUP).arg(":logical_name"); + if(!m_sqlQuery.prepare(sql)) return false; + m_sqlQuery.bindValue(":logical_name", QVariant(logical_name)); + if (m_sqlQuery.exec() && m_sqlQuery.next()) + return m_sqlQuery.value(0).toBool(); + return false; +} + +bool EnableSqlManager::monitorWorkingFlag() +{ + QString sql = QString("SELECT working_flag FROM %1 WHERE monitor_name='usb';").arg(DB_TABLE_MONITOR_DEV); + if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) + return m_sqlQuery.value(0).toBool(); + return true; +} + +void EnableSqlManager::setMonitorWorkingFlag(const bool &flag) +{ + // 先判断是否已经存在 + QString sqlAdd; + QString sqlExist = QString("SELECT working_flag FROM %1 WHERE monitor_name='usb';").arg(DB_TABLE_MONITOR_DEV); + if (m_sqlQuery.exec(sqlExist) && m_sqlQuery.next()) { + sqlAdd = QString("UPDATE %1 SET working_flag=%2 WHERE monitor_name='usb';").arg(DB_TABLE_MONITOR_DEV).arg(":flag"); + } else { + sqlAdd = QString("INSERT INTO %1 (monitor_name, working_flag) VALUES ('usb', %2);").arg(DB_TABLE_MONITOR_DEV).arg(":flag"); + } + + if(!m_sqlQuery.prepare(sqlAdd)) return; + m_sqlQuery.bindValue(":flag", QVariant(flag)); + if (!m_sqlQuery.exec()) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } +} + +EnableSqlManager::EnableSqlManager(QObject *parent) + : QObject(parent) +{ + initDB(); +} + +void EnableSqlManager::initDB() +{ + //初始化数据库 + QDir dbDir; + if (!dbDir.exists(DB_PATH)) { + dbDir.mkpath(DB_PATH); + } + m_db = QSqlDatabase::addDatabase("QSQLITE", DB_CONNECT_NAME); + m_db.setDatabaseName(QString("%1%2").arg(DB_PATH).arg(DB_FILE)); + if (!m_db.open()) { + qCDebug(appLog) << Q_FUNC_INFO << "local db open error!"; + return; + } + + // 初始化查询接口 + m_sqlQuery = QSqlQuery(m_db); + + // 创建数据库表 + QStringList tableStrList = m_db.tables(); + + if (!tableStrList.contains(DB_TABLE_AUTHORIZED)) { + QString sql = QString("CREATE TABLE %1 (class text, name text, path text, unique_id text, exist boolean, driver text);").arg(DB_TABLE_AUTHORIZED); + bool res = m_sqlQuery.exec(sql); + if (!res) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } + } + if (!tableStrList.contains(DB_TABLE_REMOVE)) { + QString sql = QString("CREATE TABLE %1 (class text, name text, path text, unique_id text, driver text);").arg(DB_TABLE_REMOVE); + bool res = m_sqlQuery.exec(sql); + if (!res) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } + } + if (!tableStrList.contains(DB_TABLE_PRINTER)) { + QString sql = QString("CREATE TABLE %1 (class text, name text, path text)").arg(DB_TABLE_PRINTER); + bool res = m_sqlQuery.exec(sql); + if (!res) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } + } + if (!tableStrList.contains(DB_TABLE_WAKEUP)) { + QString sql = QString("CREATE TABLE %1 (unique_id text, path text, wakeup boolean)").arg(DB_TABLE_WAKEUP); + bool res = m_sqlQuery.exec(sql); + if (!res) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } + } + if (!tableStrList.contains(DB_TABLE_NETWORK_WAKEUP)) { + QString sql = QString("CREATE TABLE %1 (logical_name text, wakeup boolean)").arg(DB_TABLE_NETWORK_WAKEUP); + bool res = m_sqlQuery.exec(sql); + if (!res) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } + } + if (!tableStrList.contains(DB_TABLE_MONITOR_DEV)) { + QString sql = QString("CREATE TABLE %1 (monitor_name text, working_flag boolean)").arg(DB_TABLE_MONITOR_DEV); + bool res = m_sqlQuery.exec(sql); + if (!res) { + qCInfo(appLog) << Q_FUNC_INFO << m_sqlQuery.lastError(); + } + } +} diff --git a/deepin-devicemanager-server/src/EnableControl/EnableSqlManager.h b/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enablesqlmanager.h similarity index 66% rename from deepin-devicemanager-server/src/EnableControl/EnableSqlManager.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enablesqlmanager.h index d4b58bf22..6c8d7a870 100644 --- a/deepin-devicemanager-server/src/EnableControl/EnableSqlManager.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enablesqlmanager.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -42,37 +41,30 @@ class EnableSqlManager : public QObject * @param hclass 类型 * @param name 名称 */ - void insertDataToRemoveTable(const QString& hclass, const QString& name, const QString& path, const QString& unique_id, const QString strDriver=""); + void insertDataToRemoveTable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, const QString &strDriver = ""); /** * @brief removeDateFromRemoveTable 从数据库里面删除数据 * @param path */ - void removeDateFromRemoveTable(const QString& path); + void removeDateFromRemoveTable(const QString &path); /** * @brief insertDataToAuthorizedTable 将数据插入remove表格 * @param key */ - void insertDataToAuthorizedTable(const QString& hclass, const QString& name, const QString& path, const QString& unique_id, bool exist, const QString strDriver=""); + void insertDataToAuthorizedTable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, bool exist, const QString &strDriver = ""); /** * @brief removeDataFromAuthorizedTable 从数据库里面删除数据 * @param key */ - void removeDataFromAuthorizedTable(const QString& key); + void removeDataFromAuthorizedTable(const QString &key); /** * @brief updateDataToAuthorizedTable */ - void updateDataToAuthorizedTable(const QString& unique_id, const QString& path); - - /** - * @brief updateDataToAuthorizedTable - * @param unique_id - * @param enable - */ - void updateDataToAuthorizedTable(const QString& unique_id, bool enable); + void updateDataToAuthorizedTable(const QString &unique_id, const QString &path); /** * @brief clearEnableFromAuthorizedTable 清空数据库里面 enable = 1 数据 @@ -85,34 +77,34 @@ class EnableSqlManager : public QObject * @param name 名称 * @param path 路径 */ - void insertDataToPrinterTable(const QString& hclass, const QString& name, const QString& path); + void insertDataToPrinterTable(const QString &hclass, const QString &name, const QString &path); /** * @brief removeDataFromPrinterTable * @param name */ - void removeDataFromPrinterTable(const QString& name); + void removeDataFromPrinterTable(const QString &name); /** * @brief uniqueIDExisted 判断数据库中可否查到数据 * @param key * @return */ - bool uniqueIDExisted(const QString& key); + bool uniqueIDExisted(const QString &key, const QString path = ""); /** * @brief uniqueIDExistedForEnable * @param key * @return */ - bool uniqueIDExistedEX(const QString& key); + bool uniqueIDExistedEX(const QString &key, const QString path = ""); /** * @brief isUniqueIdEnabled 判断设备是否被禁用了 * @param key * @return */ - bool isUniqueIdEnabled(const QString& key); + bool isUniqueIdEnabled(const QString &key); /** * @brief removeInfo 返回数据库里面的所有信息 @@ -130,25 +122,25 @@ class EnableSqlManager : public QObject * @brief authorizedPath * @return */ - QString authorizedPath(const QString& unique_id); + QString authorizedPath(const QString &unique_id); /** * @brief authorizedPathUniqueIDList 获取path 和 unique_id两个字段 * @param lstPair */ - void authorizedPathUniqueIDList(QList >& lstPair); + void authorizedPathUniqueIDList(QList > &lstPair); /** * @brief removePathList 获取所有被remove的数据 * @param lsPath */ - void removePathList(QStringList& lsPath); + void removePathList(QStringList &lsPath); /** * @brief removePathUniqueIDList 获取path 和 unique_id两个字段 * @param lstPair */ - void removePathUniqueIDList(QList >& lstPair); + void removePathUniqueIDList(QList > &lstPair); /** * @brief insertWakeupData @@ -156,14 +148,14 @@ class EnableSqlManager : public QObject * @param path * @param wakeup */ - void insertWakeupData(const QString& unique_id, const QString& path, bool wakeup); + void insertWakeupData(const QString &unique_id, const QString &path, bool wakeup); /** * @brief isWakeupUniqueIdExisted * @param unique_id * @return */ - bool isWakeupUniqueIdExisted(const QString& unique_id); + bool isWakeupUniqueIdExisted(const QString &unique_id); /** * @brief updateWakeData @@ -171,33 +163,45 @@ class EnableSqlManager : public QObject * @param path * @return */ - void updateWakeData(const QString& unique_id, const QString& path, bool wakeup); + void updateWakeData(const QString &unique_id, const QString &path, bool wakeup); /** * @brief wakeupPath * @param unique_id * @return */ - QString wakeupPath(const QString& unique_id); + QString wakeupPath(const QString &unique_id); /** * @brief isWakeup * @param unique_id * @return */ - bool isWakeup(const QString& unique_id); + bool isWakeup(const QString &unique_id); /** * @brief insertNetworkWakeup */ - void insertNetworkWakeup(const QString& logical_name, bool wake); + void insertNetworkWakeup(const QString &logical_name, bool wake); /** * @brief isNetworkWakeup 判断当前是否可以唤醒 * @param logical_name 逻辑名称 * @return */ - bool isNetworkWakeup(const QString& logical_name); + bool isNetworkWakeup(const QString &logical_name); + + /** + * @brief monitorWorkingFlag 判断设备是否监控 + * @return 设备是否监控 + */ + bool monitorWorkingFlag(); + + /** + * @brief setMonitorWorkingFlag 设置设备是否监控 + * @param flag 设备是否监控 + */ + void setMonitorWorkingFlag(const bool &flag); protected: explicit EnableSqlManager(QObject *parent = nullptr); diff --git a/deepin-devicemanager-server/src/EnableControl/EnableUtils.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enableutils.cpp similarity index 76% rename from deepin-devicemanager-server/src/EnableControl/EnableUtils.cpp rename to deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enableutils.cpp index 2b9e13f48..b2f051a01 100644 --- a/deepin-devicemanager-server/src/EnableControl/EnableUtils.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enableutils.cpp @@ -1,15 +1,16 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "EnableUtils.h" -#include "EnableSqlManager.h" +#include "enableutils.h" +#include "enablesqlmanager.h" #include #include #include #include #include +#include #include #include @@ -105,15 +106,6 @@ void EnableUtils::disableOutDevice(const QString &info) } } -void EnableUtils::disableOutDevice() -{ - QProcess process; - process.start("hwinfo --usb"); - process.waitForFinished(-1); - QString info = process.readAllStandardOutput(); - EnableUtils::disableOutDevice(info); -} - void EnableUtils::disableInDevice() { // 网卡通过ioctl禁用 @@ -147,34 +139,51 @@ void EnableUtils::disableInDevice() bool EnableUtils::ioctlOperateNetworkLogicalName(const QString &logicalName, bool enable) { - // 1. 通过ioctl禁用 - int fd = socket(AF_INET, SOCK_STREAM, 0); - if (fd < 0) - return false; - struct ifreq ifr; - strcpy(ifr.ifr_name, logicalName.toStdString().c_str()); - - short flag; - if (enable) { - flag = IFF_UP | IFF_PROMISC; - } else { - flag = ~(IFF_UP | IFF_PROMISC); - } - // 先获取标识 - if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) { - close(fd); - return false; - } - // 获取后重新设置标识 - if (enable) { - ifr.ifr_ifru.ifru_flags |= flag; + if (logicalName.startsWith("wlan") || logicalName.startsWith("wlp")) { // Wireless LAN + QString cmd = QString("rfkill %1 $(rfkill list | grep -A 2 \"phy$(iw dev %2 info 2>/dev/null | awk '/wiphy/{print $2}')\" | awk 'NR==1{print $1}' | tr -d ':')") + .arg(enable ? "unblock" : "block") + .arg(logicalName); + int ret = system(cmd.toStdString().c_str()); + if (ret != 0) { + qCritical() << "Failed to block/unblock wifi: " << " error code: " << ret ; + } + cmd = QString("/sbin/ifconfig %1 %2").arg(logicalName).arg(enable ? "up" : "down"); + ret = system(cmd.toStdString().c_str()); + if (ret != 0) { + qCritical() << "Failed to up/down network: " << logicalName << enable << " error code: " << ret ; + return false; + } } else { - ifr.ifr_ifru.ifru_flags &= flag; - } + // 1. 通过ioctl禁用 + int fd = socket(AF_INET, SOCK_STREAM, 0); + if (fd < 0) + return false; + + struct ifreq ifr; + strncpy(ifr.ifr_name, logicalName.toStdString().c_str(),IFNAMSIZ); + ifr.ifr_name[IFNAMSIZ - 1] = '\0'; + short flag; + if (enable) { + flag = IFF_UP | IFF_PROMISC; + } else { + flag = ~(IFF_UP | IFF_PROMISC); + } + // 先获取标识 + if (ioctl(fd, SIOCGIFFLAGS, &ifr) < 0) { + close(fd); + return false; + } + // 获取后重新设置标识 + if (enable) { + ifr.ifr_ifru.ifru_flags |= flag; + } else { + ifr.ifr_ifru.ifru_flags &= flag; + } - if (ioctl(fd, SIOCSIFFLAGS, &ifr) < 0) { - close(fd); - return false; + if (ioctl(fd, SIOCSIFFLAGS, &ifr) < 0) { + close(fd); + return false; + } } return true; } diff --git a/deepin-devicemanager-server/src/EnableControl/EnableUtils.h b/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enableutils.h similarity index 60% rename from deepin-devicemanager-server/src/EnableControl/EnableUtils.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enableutils.h index 7f24dbfc4..ba02af528 100644 --- a/deepin-devicemanager-server/src/EnableControl/EnableUtils.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/enablecontrol/enableutils.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -17,12 +16,8 @@ class EnableUtils * @brief disableDevice 禁用外设 * @param info */ - static void disableOutDevice(const QString& info); + static void disableOutDevice(const QString &info); - /** - * @brief disableDevice 禁用外设 - */ - static void disableOutDevice(); /** * @brief disableInDevice 禁用非外设 @@ -35,7 +30,7 @@ class EnableUtils * @param enable * @return */ - static bool ioctlOperateNetworkLogicalName(const QString& logicalName, bool enable); + static bool ioctlOperateNetworkLogicalName(const QString &logicalName, bool enable); /** * @brief getMapInfo 解析usb信息 @@ -43,7 +38,7 @@ class EnableUtils * @param mapInfo * @return */ - static bool getMapInfo(const QString& item,QMap& mapInfo); + static bool getMapInfo(const QString &item, QMap &mapInfo); }; #endif // ENABLEUTILS_H diff --git a/deepin-devicemanager-server/deepin-devicecontrol/src/main.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/main.cpp new file mode 100644 index 000000000..56bf22a35 --- /dev/null +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/main.cpp @@ -0,0 +1,45 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "controlinterface.h" +#include "DDLog.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +using namespace DDLog; +DCORE_USE_NAMESPACE + +int main(int argc, char *argv[]) +{ + #if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 8, 0)) + Dtk::Core::DLogManager::registerJournalAppender(); + #else + Dtk::Core::DLogManager::registerFileAppender(); + #endif + #ifdef QT_DEBUG + Dtk::Core::DLogManager::registerConsoleAppender(); + #endif + QCoreApplication a(argc, argv); + + ControlInterface controlInterface; + QDBusConnection connection = controlInterface.qDbusConnection(); + if (!connection.registerObject("/org/deepin/DeviceControl", &controlInterface, + QDBusConnection::ExportScriptableContents)) { + qCWarning(appLog) << "failed to register dbus object" << connection.lastError().message(); + } + if (!connection.registerService("org.deepin.DeviceControl")) { + qCWarning(appLog) << "failed to register dbus object" << connection.lastError().message(); + } + return a.exec(); +} diff --git a/deepin-devicemanager-server/src/WakeControl/ethtool-copy.h b/deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/ethtool-copy.h similarity index 53% rename from deepin-devicemanager-server/src/WakeControl/ethtool-copy.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/ethtool-copy.h index 640815bd9..3612ea2e4 100644 --- a/deepin-devicemanager-server/src/WakeControl/ethtool-copy.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/ethtool-copy.h @@ -3,7 +3,7 @@ // Copyright 2001 Jeff Garzik // Copyright 2001 Sun Microsystems (thockin@sun.com) // Copyright 2002 Intel (eli.kupermann@intel.com, -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -21,42 +21,42 @@ * struct ethtool_cmd - link control and status * @cmd: Command number = %ETHTOOL_GSET or %ETHTOOL_SSET * @supported: Bitmask of %SUPPORTED_* flags for the link modes, - * physical connectors and other link features for which the - * interface supports autonegotiation or auto-detection. - * Read-only. + * physical connectors and other link features for which the + * interface supports autonegotiation or auto-detection. + * Read-only. * @advertising: Bitmask of %ADVERTISED_* flags for the link modes, - * physical connectors and other link features that are - * advertised through autonegotiation or enabled for - * auto-detection. + * physical connectors and other link features that are + * advertised through autonegotiation or enabled for + * auto-detection. * @speed: Low bits of the speed * @duplex: Duplex mode; one of %DUPLEX_* * @port: Physical connector type; one of %PORT_* * @phy_address: MDIO address of PHY (transceiver); 0 or 255 if not - * applicable. For clause 45 PHYs this is the PRTAD. + * applicable. For clause 45 PHYs this is the PRTAD. * @transceiver: Historically used to distinguish different possible - * PHY types, but not in a consistent way. Deprecated. + * PHY types, but not in a consistent way. Deprecated. * @autoneg: Enable/disable autonegotiation and auto-detection; - * either %AUTONEG_DISABLE or %AUTONEG_ENABLE + * either %AUTONEG_DISABLE or %AUTONEG_ENABLE * @mdio_support: Bitmask of %ETH_MDIO_SUPPORTS_* flags for the MDIO - * protocols supported by the interface; 0 if unknown. - * Read-only. + * protocols supported by the interface; 0 if unknown. + * Read-only. * @maxtxpkt: Historically used to report TX IRQ coalescing; now - * obsoleted by &struct ethtool_coalesce. Read-only; deprecated. + * obsoleted by &struct ethtool_coalesce. Read-only; deprecated. * @maxrxpkt: Historically used to report RX IRQ coalescing; now - * obsoleted by &struct ethtool_coalesce. Read-only; deprecated. + * obsoleted by &struct ethtool_coalesce. Read-only; deprecated. * @speed_hi: High bits of the speed * @eth_tp_mdix: Ethernet twisted-pair MDI(-X) status; one of - * %ETH_TP_MDI_*. If the status is unknown or not applicable, the - * value will be %ETH_TP_MDI_INVALID. Read-only. + * %ETH_TP_MDI_*. If the status is unknown or not applicable, the + * value will be %ETH_TP_MDI_INVALID. Read-only. * @eth_tp_mdix_ctrl: Ethernet twisted pair MDI(-X) control; one of - * %ETH_TP_MDI_*. If MDI(-X) control is not implemented, reads - * yield %ETH_TP_MDI_INVALID and writes may be ignored or rejected. - * When written successfully, the link should be renegotiated if - * necessary. + * %ETH_TP_MDI_*. If MDI(-X) control is not implemented, reads + * yield %ETH_TP_MDI_INVALID and writes may be ignored or rejected. + * When written successfully, the link should be renegotiated if + * necessary. * @lp_advertising: Bitmask of %ADVERTISED_* flags for the link modes - * and other link features that the link partner advertised - * through autonegotiation; 0 if unknown or not applicable. - * Read-only. + * and other link features that the link partner advertised + * through autonegotiation; 0 if unknown or not applicable. + * Read-only. * * The link speed in Mbps is split between @speed and @speed_hi. Use * the ethtool_cmd_speed() and ethtool_cmd_speed_set() functions to @@ -88,36 +88,36 @@ * Deprecated fields should be ignored by both users and drivers. */ struct ethtool_cmd { - __u32 cmd; - __u32 supported; - __u32 advertising; - __u16 speed; - __u8 duplex; - __u8 port; - __u8 phy_address; - __u8 transceiver; - __u8 autoneg; - __u8 mdio_support; - __u32 maxtxpkt; - __u32 maxrxpkt; - __u16 speed_hi; - __u8 eth_tp_mdix; - __u8 eth_tp_mdix_ctrl; - __u32 lp_advertising; - __u32 reserved[2]; + __u32 cmd; + __u32 supported; + __u32 advertising; + __u16 speed; + __u8 duplex; + __u8 port; + __u8 phy_address; + __u8 transceiver; + __u8 autoneg; + __u8 mdio_support; + __u32 maxtxpkt; + __u32 maxrxpkt; + __u16 speed_hi; + __u8 eth_tp_mdix; + __u8 eth_tp_mdix_ctrl; + __u32 lp_advertising; + __u32 reserved[2]; }; static __inline__ void ethtool_cmd_speed_set(struct ethtool_cmd *ep, - __u32 speed) + __u32 speed) { - ep->speed = (__u16)speed; - ep->speed_hi = (__u16)(speed >> 16); + ep->speed = (__u16)speed; + ep->speed_hi = (__u16)(speed >> 16); } static __inline__ __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep) { - return (ep->speed_hi << 16) | ep->speed; + return (ep->speed_hi << 16) | ep->speed; } /* Device supports clause 22 register access to PHY or peripherals @@ -125,42 +125,42 @@ static __inline__ __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep) * set if there are known to be no such peripherals present or if * the driver only emulates clause 22 registers for compatibility. */ -#define ETH_MDIO_SUPPORTS_C22 1 +#define ETH_MDIO_SUPPORTS_C22 1 /* Device supports clause 45 register access to PHY or peripherals * using the interface defined in and . * This should not be set if there are known to be no such peripherals * present. */ -#define ETH_MDIO_SUPPORTS_C45 2 +#define ETH_MDIO_SUPPORTS_C45 2 -#define ETHTOOL_FWVERS_LEN 32 -#define ETHTOOL_BUSINFO_LEN 32 -#define ETHTOOL_EROMVERS_LEN 32 +#define ETHTOOL_FWVERS_LEN 32 +#define ETHTOOL_BUSINFO_LEN 32 +#define ETHTOOL_EROMVERS_LEN 32 /** * struct ethtool_drvinfo - general driver and device information * @cmd: Command number = %ETHTOOL_GDRVINFO * @driver: Driver short name. This should normally match the name - * in its bus driver structure (e.g. pci_driver::name). Must - * not be an empty string. + * in its bus driver structure (e.g. pci_driver::name). Must + * not be an empty string. * @version: Driver version string; may be an empty string * @fw_version: Firmware version string; may be an empty string * @erom_version: Expansion ROM version string; may be an empty string * @bus_info: Device bus address. This should match the dev_name() - * string for the underlying bus device, if there is one. May be - * an empty string. + * string for the underlying bus device, if there is one. May be + * an empty string. * @n_priv_flags: Number of flags valid for %ETHTOOL_GPFLAGS and - * %ETHTOOL_SPFLAGS commands; also the number of strings in the - * %ETH_SS_PRIV_FLAGS set + * %ETHTOOL_SPFLAGS commands; also the number of strings in the + * %ETH_SS_PRIV_FLAGS set * @n_stats: Number of u64 statistics returned by the %ETHTOOL_GSTATS - * command; also the number of strings in the %ETH_SS_STATS set + * command; also the number of strings in the %ETH_SS_STATS set * @testinfo_len: Number of results returned by the %ETHTOOL_TEST - * command; also the number of strings in the %ETH_SS_TEST set + * command; also the number of strings in the %ETH_SS_TEST set * @eedump_len: Size of EEPROM accessible through the %ETHTOOL_GEEPROM - * and %ETHTOOL_SEEPROM commands, in bytes + * and %ETHTOOL_SEEPROM commands, in bytes * @regdump_len: Size of register dump returned by the %ETHTOOL_GREGS - * command, in bytes + * command, in bytes * * Users can use the %ETHTOOL_GSSET_INFO command to get the number of * strings in any string set (from Linux 2.6.34). @@ -170,80 +170,80 @@ static __inline__ __u32 ethtool_cmd_speed(const struct ethtool_cmd *ep) * core fills in the other fields using other driver operations. */ struct ethtool_drvinfo { - __u32 cmd; - char driver[32]; - char version[32]; - char fw_version[ETHTOOL_FWVERS_LEN]; - char bus_info[ETHTOOL_BUSINFO_LEN]; - char erom_version[ETHTOOL_EROMVERS_LEN]; - char reserved2[12]; - __u32 n_priv_flags; - __u32 n_stats; - __u32 testinfo_len; - __u32 eedump_len; - __u32 regdump_len; + __u32 cmd; + char driver[32]; + char version[32]; + char fw_version[ETHTOOL_FWVERS_LEN]; + char bus_info[ETHTOOL_BUSINFO_LEN]; + char erom_version[ETHTOOL_EROMVERS_LEN]; + char reserved2[12]; + __u32 n_priv_flags; + __u32 n_stats; + __u32 testinfo_len; + __u32 eedump_len; + __u32 regdump_len; }; -#define SOPASS_MAX 6 +#define SOPASS_MAX 6 /** * struct ethtool_wolinfo - Wake-On-Lan configuration * @cmd: Command number = %ETHTOOL_GWOL or %ETHTOOL_SWOL * @supported: Bitmask of %WAKE_* flags for supported Wake-On-Lan modes. - * Read-only. + * Read-only. * @wolopts: Bitmask of %WAKE_* flags for enabled Wake-On-Lan modes. * @sopass: SecureOn(tm) password; meaningful only if %WAKE_MAGICSECURE - * is set in @wolopts. + * is set in @wolopts. */ struct ethtool_wolinfo { - __u32 cmd; - __u32 supported; - __u32 wolopts; - __u8 sopass[SOPASS_MAX]; + __u32 cmd; + __u32 supported; + __u32 wolopts; + __u8 sopass[SOPASS_MAX]; }; /* for passing single values */ struct ethtool_value { - __u32 cmd; - __u32 data; + __u32 cmd; + __u32 data; }; enum tunable_id { - ETHTOOL_ID_UNSPEC, - ETHTOOL_RX_COPYBREAK, - ETHTOOL_TX_COPYBREAK, + ETHTOOL_ID_UNSPEC, + ETHTOOL_RX_COPYBREAK, + ETHTOOL_TX_COPYBREAK, }; enum tunable_type_id { - ETHTOOL_TUNABLE_UNSPEC, - ETHTOOL_TUNABLE_U8, - ETHTOOL_TUNABLE_U16, - ETHTOOL_TUNABLE_U32, - ETHTOOL_TUNABLE_U64, - ETHTOOL_TUNABLE_STRING, - ETHTOOL_TUNABLE_S8, - ETHTOOL_TUNABLE_S16, - ETHTOOL_TUNABLE_S32, - ETHTOOL_TUNABLE_S64, + ETHTOOL_TUNABLE_UNSPEC, + ETHTOOL_TUNABLE_U8, + ETHTOOL_TUNABLE_U16, + ETHTOOL_TUNABLE_U32, + ETHTOOL_TUNABLE_U64, + ETHTOOL_TUNABLE_STRING, + ETHTOOL_TUNABLE_S8, + ETHTOOL_TUNABLE_S16, + ETHTOOL_TUNABLE_S32, + ETHTOOL_TUNABLE_S64, }; struct ethtool_tunable { - __u32 cmd; - __u32 id; - __u32 type_id; - __u32 len; - void *data[0]; + __u32 cmd; + __u32 id; + __u32 type_id; + __u32 len; + void *data[0]; }; /** * struct ethtool_regs - hardware register dump * @cmd: Command number = %ETHTOOL_GREGS * @version: Dump format version. This is driver-specific and may - * distinguish different chips/revisions. Drivers must use new - * version numbers whenever the dump format changes in an - * incompatible way. + * distinguish different chips/revisions. Drivers must use new + * version numbers whenever the dump format changes in an + * incompatible way. * @len: On entry, the real length of @data. On return, the number of - * bytes used. + * bytes used. * @data: Buffer for the register dump * * Users should use %ETHTOOL_GDRVINFO to find the maximum length of @@ -251,24 +251,24 @@ struct ethtool_tunable { * immediately following this structure. */ struct ethtool_regs { - __u32 cmd; - __u32 version; - __u32 len; - __u8 data[0]; + __u32 cmd; + __u32 version; + __u32 len; + __u8 data[0]; }; /** * struct ethtool_eeprom - EEPROM dump * @cmd: Command number = %ETHTOOL_GEEPROM, %ETHTOOL_GMODULEEEPROM or - * %ETHTOOL_SEEPROM + * %ETHTOOL_SEEPROM * @magic: A 'magic cookie' value to guard against accidental changes. - * The value passed in to %ETHTOOL_SEEPROM must match the value - * returned by %ETHTOOL_GEEPROM for the same device. This is - * unused when @cmd is %ETHTOOL_GMODULEEEPROM. + * The value passed in to %ETHTOOL_SEEPROM must match the value + * returned by %ETHTOOL_GEEPROM for the same device. This is + * unused when @cmd is %ETHTOOL_GMODULEEEPROM. * @offset: Offset within the EEPROM to begin reading/writing, in bytes * @len: On entry, number of bytes to read/write. On successful - * return, number of bytes actually read/written. In case of - * error, this may indicate at what point the error occurred. + * return, number of bytes actually read/written. In case of + * error, this may indicate at what point the error occurred. * @data: Buffer to read/write from * * Users may use %ETHTOOL_GDRVINFO or %ETHTOOL_GMODULEINFO to find @@ -276,40 +276,40 @@ struct ethtool_regs { * must allocate the buffer immediately following this structure. */ struct ethtool_eeprom { - __u32 cmd; - __u32 magic; - __u32 offset; - __u32 len; - __u8 data[0]; + __u32 cmd; + __u32 magic; + __u32 offset; + __u32 len; + __u8 data[0]; }; /** * struct ethtool_eee - Energy Efficient Ethernet information * @cmd: ETHTOOL_{G,S}EEE * @supported: Mask of %SUPPORTED_* flags for the speed/duplex combinations - * for which there is EEE support. + * for which there is EEE support. * @advertised: Mask of %ADVERTISED_* flags for the speed/duplex combinations - * advertised as eee capable. + * advertised as eee capable. * @lp_advertised: Mask of %ADVERTISED_* flags for the speed/duplex - * combinations advertised by the link partner as eee capable. + * combinations advertised by the link partner as eee capable. * @eee_active: Result of the eee auto negotiation. * @eee_enabled: EEE configured mode (enabled/disabled). * @tx_lpi_enabled: Whether the interface should assert its tx lpi, given - * that eee was negotiated. + * that eee was negotiated. * @tx_lpi_timer: Time in microseconds the interface delays prior to asserting - * its tx lpi (after reaching 'idle' state). Effective only when eee - * was negotiated and tx_lpi_enabled was set. + * its tx lpi (after reaching 'idle' state). Effective only when eee + * was negotiated and tx_lpi_enabled was set. */ struct ethtool_eee { - __u32 cmd; - __u32 supported; - __u32 advertised; - __u32 lp_advertised; - __u32 eee_active; - __u32 eee_enabled; - __u32 tx_lpi_enabled; - __u32 tx_lpi_timer; - __u32 reserved[2]; + __u32 cmd; + __u32 supported; + __u32 advertised; + __u32 lp_advertised; + __u32 eee_active; + __u32 eee_enabled; + __u32 tx_lpi_enabled; + __u32 tx_lpi_timer; + __u32 reserved[2]; }; /** @@ -323,64 +323,64 @@ struct ethtool_eee { * The type code indicates the eeprom data format */ struct ethtool_modinfo { - __u32 cmd; - __u32 type; - __u32 eeprom_len; - __u32 reserved[8]; + __u32 cmd; + __u32 type; + __u32 eeprom_len; + __u32 reserved[8]; }; /** * struct ethtool_coalesce - coalescing parameters for IRQs and stats updates * @cmd: ETHTOOL_{G,S}COALESCE * @rx_coalesce_usecs: How many usecs to delay an RX interrupt after - * a packet arrives. + * a packet arrives. * @rx_max_coalesced_frames: Maximum number of packets to receive - * before an RX interrupt. + * before an RX interrupt. * @rx_coalesce_usecs_irq: Same as @rx_coalesce_usecs, except that - * this value applies while an IRQ is being serviced by the host. + * this value applies while an IRQ is being serviced by the host. * @rx_max_coalesced_frames_irq: Same as @rx_max_coalesced_frames, - * except that this value applies while an IRQ is being serviced - * by the host. + * except that this value applies while an IRQ is being serviced + * by the host. * @tx_coalesce_usecs: How many usecs to delay a TX interrupt after - * a packet is sent. + * a packet is sent. * @tx_max_coalesced_frames: Maximum number of packets to be sent - * before a TX interrupt. + * before a TX interrupt. * @tx_coalesce_usecs_irq: Same as @tx_coalesce_usecs, except that - * this value applies while an IRQ is being serviced by the host. + * this value applies while an IRQ is being serviced by the host. * @tx_max_coalesced_frames_irq: Same as @tx_max_coalesced_frames, - * except that this value applies while an IRQ is being serviced - * by the host. + * except that this value applies while an IRQ is being serviced + * by the host. * @stats_block_coalesce_usecs: How many usecs to delay in-memory - * statistics block updates. Some drivers do not have an - * in-memory statistic block, and in such cases this value is - * ignored. This value must not be zero. + * statistics block updates. Some drivers do not have an + * in-memory statistic block, and in such cases this value is + * ignored. This value must not be zero. * @use_adaptive_rx_coalesce: Enable adaptive RX coalescing. * @use_adaptive_tx_coalesce: Enable adaptive TX coalescing. * @pkt_rate_low: Threshold for low packet rate (packets per second). * @rx_coalesce_usecs_low: How many usecs to delay an RX interrupt after - * a packet arrives, when the packet rate is below @pkt_rate_low. + * a packet arrives, when the packet rate is below @pkt_rate_low. * @rx_max_coalesced_frames_low: Maximum number of packets to be received - * before an RX interrupt, when the packet rate is below @pkt_rate_low. + * before an RX interrupt, when the packet rate is below @pkt_rate_low. * @tx_coalesce_usecs_low: How many usecs to delay a TX interrupt after - * a packet is sent, when the packet rate is below @pkt_rate_low. + * a packet is sent, when the packet rate is below @pkt_rate_low. * @tx_max_coalesced_frames_low: Maximum nuumber of packets to be sent before - * a TX interrupt, when the packet rate is below @pkt_rate_low. + * a TX interrupt, when the packet rate is below @pkt_rate_low. * @pkt_rate_high: Threshold for high packet rate (packets per second). * @rx_coalesce_usecs_high: How many usecs to delay an RX interrupt after - * a packet arrives, when the packet rate is above @pkt_rate_high. + * a packet arrives, when the packet rate is above @pkt_rate_high. * @rx_max_coalesced_frames_high: Maximum number of packets to be received - * before an RX interrupt, when the packet rate is above @pkt_rate_high. + * before an RX interrupt, when the packet rate is above @pkt_rate_high. * @tx_coalesce_usecs_high: How many usecs to delay a TX interrupt after - * a packet is sent, when the packet rate is above @pkt_rate_high. + * a packet is sent, when the packet rate is above @pkt_rate_high. * @tx_max_coalesced_frames_high: Maximum number of packets to be sent before - * a TX interrupt, when the packet rate is above @pkt_rate_high. + * a TX interrupt, when the packet rate is above @pkt_rate_high. * @rate_sample_interval: How often to do adaptive coalescing packet rate - * sampling, measured in seconds. Must not be zero. + * sampling, measured in seconds. Must not be zero. * * Each pair of (usecs, max_frames) fields specifies that interrupts * should be coalesced until - * (usecs > 0 && time_since_first_completion >= usecs) || - * (max_frames > 0 && completed_frames >= max_frames) + * (usecs > 0 && time_since_first_completion >= usecs) || + * (max_frames > 0 && completed_frames >= max_frames) * * It is illegal to set both usecs and max_frames to zero as this * would cause interrupts to never be generated. To disable @@ -403,49 +403,49 @@ struct ethtool_modinfo { * normal {rx,tx}_* coalescing parameters are used. */ struct ethtool_coalesce { - __u32 cmd; - __u32 rx_coalesce_usecs; - __u32 rx_max_coalesced_frames; - __u32 rx_coalesce_usecs_irq; - __u32 rx_max_coalesced_frames_irq; - __u32 tx_coalesce_usecs; - __u32 tx_max_coalesced_frames; - __u32 tx_coalesce_usecs_irq; - __u32 tx_max_coalesced_frames_irq; - __u32 stats_block_coalesce_usecs; - __u32 use_adaptive_rx_coalesce; - __u32 use_adaptive_tx_coalesce; - __u32 pkt_rate_low; - __u32 rx_coalesce_usecs_low; - __u32 rx_max_coalesced_frames_low; - __u32 tx_coalesce_usecs_low; - __u32 tx_max_coalesced_frames_low; - __u32 pkt_rate_high; - __u32 rx_coalesce_usecs_high; - __u32 rx_max_coalesced_frames_high; - __u32 tx_coalesce_usecs_high; - __u32 tx_max_coalesced_frames_high; - __u32 rate_sample_interval; + __u32 cmd; + __u32 rx_coalesce_usecs; + __u32 rx_max_coalesced_frames; + __u32 rx_coalesce_usecs_irq; + __u32 rx_max_coalesced_frames_irq; + __u32 tx_coalesce_usecs; + __u32 tx_max_coalesced_frames; + __u32 tx_coalesce_usecs_irq; + __u32 tx_max_coalesced_frames_irq; + __u32 stats_block_coalesce_usecs; + __u32 use_adaptive_rx_coalesce; + __u32 use_adaptive_tx_coalesce; + __u32 pkt_rate_low; + __u32 rx_coalesce_usecs_low; + __u32 rx_max_coalesced_frames_low; + __u32 tx_coalesce_usecs_low; + __u32 tx_max_coalesced_frames_low; + __u32 pkt_rate_high; + __u32 rx_coalesce_usecs_high; + __u32 rx_max_coalesced_frames_high; + __u32 tx_coalesce_usecs_high; + __u32 tx_max_coalesced_frames_high; + __u32 rate_sample_interval; }; /** * struct ethtool_ringparam - RX/TX ring parameters * @cmd: Command number = %ETHTOOL_GRINGPARAM or %ETHTOOL_SRINGPARAM * @rx_max_pending: Maximum supported number of pending entries per - * RX ring. Read-only. + * RX ring. Read-only. * @rx_mini_max_pending: Maximum supported number of pending entries - * per RX mini ring. Read-only. + * per RX mini ring. Read-only. * @rx_jumbo_max_pending: Maximum supported number of pending entries - * per RX jumbo ring. Read-only. + * per RX jumbo ring. Read-only. * @tx_max_pending: Maximum supported number of pending entries per - * TX ring. Read-only. + * TX ring. Read-only. * @rx_pending: Current maximum number of pending entries per RX ring * @rx_mini_pending: Current maximum number of pending entries per RX - * mini ring + * mini ring * @rx_jumbo_pending: Current maximum number of pending entries per RX - * jumbo ring + * jumbo ring * @tx_pending: Current maximum supported number of pending entries - * per TX ring + * per TX ring * * If the interface does not have separate RX mini and/or jumbo rings, * @rx_mini_max_pending and/or @rx_jumbo_max_pending will be 0. @@ -454,15 +454,15 @@ struct ethtool_coalesce { * of entries per ring. */ struct ethtool_ringparam { - __u32 cmd; - __u32 rx_max_pending; - __u32 rx_mini_max_pending; - __u32 rx_jumbo_max_pending; - __u32 tx_max_pending; - __u32 rx_pending; - __u32 rx_mini_pending; - __u32 rx_jumbo_pending; - __u32 tx_pending; + __u32 cmd; + __u32 rx_max_pending; + __u32 rx_mini_max_pending; + __u32 rx_jumbo_max_pending; + __u32 tx_max_pending; + __u32 rx_pending; + __u32 rx_mini_pending; + __u32 rx_jumbo_pending; + __u32 tx_pending; }; /** @@ -472,7 +472,7 @@ struct ethtool_ringparam { * @max_tx: Read only. Maximum number of transmit channel the driver support. * @max_other: Read only. Maximum number of other channel the driver support. * @max_combined: Read only. Maximum number of combined channel the driver - * support. Set of queues RX, TX or other. + * support. Set of queues RX, TX or other. * @rx_count: Valid values are in the range 1 to the max_rx. * @tx_count: Valid values are in the range 1 to the max_tx. * @other_count: Valid values are in the range 1 to the max_other. @@ -482,15 +482,15 @@ struct ethtool_ringparam { */ struct ethtool_channels { - __u32 cmd; - __u32 max_rx; - __u32 max_tx; - __u32 max_other; - __u32 max_combined; - __u32 rx_count; - __u32 tx_count; - __u32 other_count; - __u32 combined_count; + __u32 cmd; + __u32 max_rx; + __u32 max_tx; + __u32 max_other; + __u32 max_combined; + __u32 rx_count; + __u32 tx_count; + __u32 other_count; + __u32 combined_count; }; /** @@ -516,32 +516,32 @@ struct ethtool_channels { * @tx_pause flags. */ struct ethtool_pauseparam { - __u32 cmd; - __u32 autoneg; - __u32 rx_pause; - __u32 tx_pause; + __u32 cmd; + __u32 autoneg; + __u32 rx_pause; + __u32 tx_pause; }; -#define ETH_GSTRING_LEN 32 +#define ETH_GSTRING_LEN 32 /** * enum ethtool_stringset - string set ID * @ETH_SS_TEST: Self-test result names, for use with %ETHTOOL_TEST * @ETH_SS_STATS: Statistic names, for use with %ETHTOOL_GSTATS * @ETH_SS_PRIV_FLAGS: Driver private flag names, for use with - * %ETHTOOL_GPFLAGS and %ETHTOOL_SPFLAGS + * %ETHTOOL_GPFLAGS and %ETHTOOL_SPFLAGS * @ETH_SS_NTUPLE_FILTERS: Previously used with %ETHTOOL_GRXNTUPLE; - * now deprecated + * now deprecated * @ETH_SS_FEATURES: Device feature names * @ETH_SS_RSS_HASH_FUNCS: RSS hush function names */ enum ethtool_stringset { - ETH_SS_TEST = 0, - ETH_SS_STATS, - ETH_SS_PRIV_FLAGS, - ETH_SS_NTUPLE_FILTERS, - ETH_SS_FEATURES, - ETH_SS_RSS_HASH_FUNCS, + ETH_SS_TEST = 0, + ETH_SS_STATS, + ETH_SS_PRIV_FLAGS, + ETH_SS_NTUPLE_FILTERS, + ETH_SS_FEATURES, + ETH_SS_RSS_HASH_FUNCS, }; /** @@ -550,28 +550,28 @@ enum ethtool_stringset { * @string_set: String set ID; one of &enum ethtool_stringset * @len: On return, the number of strings in the string set * @data: Buffer for strings. Each string is null-padded to a size of - * %ETH_GSTRING_LEN. + * %ETH_GSTRING_LEN. * * Users must use %ETHTOOL_GSSET_INFO to find the number of strings in * the string set. They must allocate a buffer of the appropriate * size immediately following this structure. */ struct ethtool_gstrings { - __u32 cmd; - __u32 string_set; - __u32 len; - __u8 data[0]; + __u32 cmd; + __u32 string_set; + __u32 len; + __u8 data[0]; }; /** * struct ethtool_sset_info - string set information * @cmd: Command number = %ETHTOOL_GSSET_INFO * @sset_mask: On entry, a bitmask of string sets to query, with bits - * numbered according to &enum ethtool_stringset. On return, a - * bitmask of those string sets queried that are supported. + * numbered according to &enum ethtool_stringset. On return, a + * bitmask of those string sets queried that are supported. * @data: Buffer for string set sizes. On return, this contains the - * size of each string set that was queried and supported, in - * order of ID. + * size of each string set that was queried and supported, in + * order of ID. * * Example: The user passes in @sset_mask = 0x7 (sets 0, 1, 2) and on * return @sset_mask == 0x6 (sets 1, 2). Then @data[0] contains the @@ -581,35 +581,35 @@ struct ethtool_gstrings { * sets queried) immediately following this structure. */ struct ethtool_sset_info { - __u32 cmd; - __u32 reserved; - __u64 sset_mask; - __u32 data[0]; + __u32 cmd; + __u32 reserved; + __u64 sset_mask; + __u32 data[0]; }; /** * enum ethtool_test_flags - flags definition of ethtool_test * @ETH_TEST_FL_OFFLINE: if set perform online and offline tests, otherwise - * only online tests. + * only online tests. * @ETH_TEST_FL_FAILED: Driver set this flag if test fails. * @ETH_TEST_FL_EXTERNAL_LB: Application request to perform external loopback - * test. + * test. * @ETH_TEST_FL_EXTERNAL_LB_DONE: Driver performed the external loopback test */ enum ethtool_test_flags { - ETH_TEST_FL_OFFLINE = (1 << 0), - ETH_TEST_FL_FAILED = (1 << 1), - ETH_TEST_FL_EXTERNAL_LB = (1 << 2), - ETH_TEST_FL_EXTERNAL_LB_DONE = (1 << 3), + ETH_TEST_FL_OFFLINE = (1 << 0), + ETH_TEST_FL_FAILED = (1 << 1), + ETH_TEST_FL_EXTERNAL_LB = (1 << 2), + ETH_TEST_FL_EXTERNAL_LB_DONE = (1 << 3), }; /** * struct ethtool_test - device self-test invocation * @cmd: Command number = %ETHTOOL_TEST * @flags: A bitmask of flags from &enum ethtool_test_flags. Some - * flags may be set by the user on entry; others may be set by - * the driver on return. + * flags may be set by the user on entry; others may be set by + * the driver on return. * @len: On return, the number of test results * @data: Array of test results * @@ -619,11 +619,11 @@ enum ethtool_test_flags { * following this structure. */ struct ethtool_test { - __u32 cmd; - __u32 flags; - __u32 reserved; - __u32 len; - __u64 data[0]; + __u32 cmd; + __u32 flags; + __u32 reserved; + __u32 len; + __u64 data[0]; }; /** @@ -638,16 +638,16 @@ struct ethtool_test { * immediately following this structure. */ struct ethtool_stats { - __u32 cmd; - __u32 n_stats; - __u64 data[0]; + __u32 cmd; + __u32 n_stats; + __u64 data[0]; }; /** * struct ethtool_perm_addr - permanent hardware address * @cmd: Command number = %ETHTOOL_GPERMADDR * @size: On entry, the size of the buffer. On return, the size of the - * address. The command fails if the buffer is too small. + * address. The command fails if the buffer is too small. * @data: Buffer for the address * * Users must allocate the buffer immediately following this structure. @@ -655,9 +655,9 @@ struct ethtool_stats { * type. */ struct ethtool_perm_addr { - __u32 cmd; - __u32 size; - __u8 data[0]; + __u32 cmd; + __u32 size; + __u8 data[0]; }; /* boolean flags controlling per-interface behavior characteristics. @@ -670,11 +670,11 @@ struct ethtool_perm_addr { * flag differs from the read-only value. */ enum ethtool_flags { - ETH_FLAG_TXVLAN = (1 << 7), /* TX VLAN offload enabled */ - ETH_FLAG_RXVLAN = (1 << 8), /* RX VLAN offload enabled */ - ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */ - ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */ - ETH_FLAG_RXHASH = (1 << 28), + ETH_FLAG_TXVLAN = (1 << 7), /* TX VLAN offload enabled */ + ETH_FLAG_RXVLAN = (1 << 8), /* RX VLAN offload enabled */ + ETH_FLAG_LRO = (1 << 15), /* LRO is enabled */ + ETH_FLAG_NTUPLE = (1 << 27), /* N-tuple filters enabled */ + ETH_FLAG_RXHASH = (1 << 28), }; /* The following structures are for supporting RX network flow @@ -694,11 +694,11 @@ enum ethtool_flags { * This can be used to specify a TCP/IPv4, UDP/IPv4 or SCTP/IPv4 flow. */ struct ethtool_tcpip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be16 psrc; - __be16 pdst; - __u8 tos; + __be32 ip4src; + __be32 ip4dst; + __be16 psrc; + __be16 pdst; + __u8 tos; }; /** @@ -711,13 +711,13 @@ struct ethtool_tcpip4_spec { * This can be used to specify an IPsec transport or tunnel over IPv4. */ struct ethtool_ah_espip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be32 spi; - __u8 tos; + __be32 ip4src; + __be32 ip4dst; + __be32 spi; + __u8 tos; }; -#define ETH_RX_NFC_IP4 1 +#define ETH_RX_NFC_IP4 1 /** * struct ethtool_usrip4_spec - general flow specification for IPv4 @@ -729,23 +729,23 @@ struct ethtool_ah_espip4_spec { * @proto: Transport protocol number; mask must be 0 */ struct ethtool_usrip4_spec { - __be32 ip4src; - __be32 ip4dst; - __be32 l4_4_bytes; - __u8 tos; - __u8 ip_ver; - __u8 proto; + __be32 ip4src; + __be32 ip4dst; + __be32 l4_4_bytes; + __u8 tos; + __u8 ip_ver; + __u8 proto; }; union ethtool_flow_union { - struct ethtool_tcpip4_spec tcp_ip4_spec; - struct ethtool_tcpip4_spec udp_ip4_spec; - struct ethtool_tcpip4_spec sctp_ip4_spec; - struct ethtool_ah_espip4_spec ah_ip4_spec; - struct ethtool_ah_espip4_spec esp_ip4_spec; - struct ethtool_usrip4_spec usr_ip4_spec; - struct ethhdr ether_spec; - __u8 hdata[52]; + struct ethtool_tcpip4_spec tcp_ip4_spec; + struct ethtool_tcpip4_spec udp_ip4_spec; + struct ethtool_tcpip4_spec sctp_ip4_spec; + struct ethtool_ah_espip4_spec ah_ip4_spec; + struct ethtool_ah_espip4_spec esp_ip4_spec; + struct ethtool_usrip4_spec usr_ip4_spec; + struct ethhdr ether_spec; + __u8 hdata[52]; }; /** @@ -760,11 +760,11 @@ union ethtool_flow_union { * @h_dest is valid if %FLOW_MAC_EXT is set. */ struct ethtool_flow_ext { - __u8 padding[2]; - unsigned char h_dest[ETH_ALEN]; - __be16 vlan_etype; - __be16 vlan_tci; - __be32 data[2]; + __u8 padding[2]; + unsigned char h_dest[ETH_ALEN]; + __be16 vlan_etype; + __be16 vlan_tci; + __be32 data[2]; }; /** @@ -774,30 +774,30 @@ struct ethtool_flow_ext { * @h_ext: Additional fields to match * @m_u: Masks for flow field bits to be matched * @m_ext: Masks for additional field bits to be matched - * Note, all additional fields must be ignored unless @flow_type - * includes the %FLOW_EXT or %FLOW_MAC_EXT flag - * (see &struct ethtool_flow_ext description). + * Note, all additional fields must be ignored unless @flow_type + * includes the %FLOW_EXT or %FLOW_MAC_EXT flag + * (see &struct ethtool_flow_ext description). * @ring_cookie: RX ring/queue index to deliver to, or %RX_CLS_FLOW_DISC - * if packets should be discarded + * if packets should be discarded * @location: Location of rule in the table. Locations must be - * numbered such that a flow matching multiple rules will be - * classified according to the first (lowest numbered) rule. + * numbered such that a flow matching multiple rules will be + * classified according to the first (lowest numbered) rule. */ struct ethtool_rx_flow_spec { - __u32 flow_type; - union ethtool_flow_union h_u; - struct ethtool_flow_ext h_ext; - union ethtool_flow_union m_u; - struct ethtool_flow_ext m_ext; - __u64 ring_cookie; - __u32 location; + __u32 flow_type; + union ethtool_flow_union h_u; + struct ethtool_flow_ext h_ext; + union ethtool_flow_union m_u; + struct ethtool_flow_ext m_ext; + __u64 ring_cookie; + __u32 location; }; /** * struct ethtool_rxnfc - command to get or set RX flow classification rules * @cmd: Specific command number - %ETHTOOL_GRXFH, %ETHTOOL_SRXFH, - * %ETHTOOL_GRXRINGS, %ETHTOOL_GRXCLSRLCNT, %ETHTOOL_GRXCLSRULE, - * %ETHTOOL_GRXCLSRLALL, %ETHTOOL_SRXCLSRLDEL or %ETHTOOL_SRXCLSRLINS + * %ETHTOOL_GRXRINGS, %ETHTOOL_GRXCLSRLCNT, %ETHTOOL_GRXCLSRULE, + * %ETHTOOL_GRXCLSRLALL, %ETHTOOL_SRXCLSRLDEL or %ETHTOOL_SRXCLSRLINS * @flow_type: Type of flow to be affected, e.g. %TCP_V4_FLOW * @data: Command-dependent value * @fs: Flow classification rule @@ -846,12 +846,12 @@ struct ethtool_rx_flow_spec { * unrecognised value. */ struct ethtool_rxnfc { - __u32 cmd; - __u32 flow_type; - __u64 data; - struct ethtool_rx_flow_spec fs; - __u32 rule_cnt; - __u32 rule_locs[0]; + __u32 cmd; + __u32 flow_type; + __u64 data; + struct ethtool_rx_flow_spec fs; + __u32 rule_cnt; + __u32 rule_locs[0]; }; @@ -859,8 +859,8 @@ struct ethtool_rxnfc { * struct ethtool_rxfh_indir - command to get or set RX flow hash indirection * @cmd: Specific command number - %ETHTOOL_GRXFHINDIR or %ETHTOOL_SRXFHINDIR * @size: On entry, the array size of the user buffer, which may be zero. - * On return from %ETHTOOL_GRXFHINDIR, the array size of the hardware - * indirection table. + * On return from %ETHTOOL_GRXFHINDIR, the array size of the hardware + * indirection table. * @ring_index: RX ring/queue index for each hash value * * For %ETHTOOL_GRXFHINDIR, a @size of zero means that only the size @@ -869,9 +869,9 @@ struct ethtool_rxnfc { * is not supported by the original implementations. */ struct ethtool_rxfh_indir { - __u32 cmd; - __u32 size; - __u32 ring_index[0]; + __u32 cmd; + __u32 size; + __u32 ring_index[0]; }; /** @@ -879,18 +879,18 @@ struct ethtool_rxfh_indir { * @cmd: Specific command number - %ETHTOOL_GRSSH or %ETHTOOL_SRSSH * @rss_context: RSS context identifier. * @indir_size: On entry, the array size of the user buffer for the - * indirection table, which may be zero, or (for %ETHTOOL_SRSSH), - * %ETH_RXFH_INDIR_NO_CHANGE. On return from %ETHTOOL_GRSSH, - * the array size of the hardware indirection table. + * indirection table, which may be zero, or (for %ETHTOOL_SRSSH), + * %ETH_RXFH_INDIR_NO_CHANGE. On return from %ETHTOOL_GRSSH, + * the array size of the hardware indirection table. * @key_size: On entry, the array size of the user buffer for the hash key, - * which may be zero. On return from %ETHTOOL_GRSSH, the size of the - * hardware hash key. + * which may be zero. On return from %ETHTOOL_GRSSH, the size of the + * hardware hash key. * @hfunc: Defines the current RSS hash function used by HW (or to be set to). - * Valid values are one of the %ETH_RSS_HASH_*. - * @rsvd: Reserved for future extensions. + * Valid values are one of the %ETH_RSS_HASH_*. + * @rsvd: Reserved for future extensions. * @rss_config: RX ring/queue index for each hash value i.e., indirection table - * of @indir_size __u32 elements, followed by hash key of @key_size - * bytes. + * of @indir_size __u32 elements, followed by hash key of @key_size + * bytes. * * For %ETHTOOL_GRSSH, a @indir_size and key_size of zero means that only the * size should be returned. For %ETHTOOL_SRSSH, an @indir_size of @@ -899,16 +899,16 @@ struct ethtool_rxfh_indir { * values. An hfunc of zero means that hash function setting is not requested. */ struct ethtool_rxfh { - __u32 cmd; - __u32 rss_context; - __u32 indir_size; - __u32 key_size; - __u8 hfunc; - __u8 rsvd8[3]; - __u32 rsvd32; - __u32 rss_config[0]; + __u32 cmd; + __u32 rss_context; + __u32 indir_size; + __u32 key_size; + __u8 hfunc; + __u8 rsvd8[3]; + __u32 rsvd32; + __u32 rss_config[0]; }; -#define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff +#define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff /** * struct ethtool_rx_ntuple_flow_spec - specification for RX flow filter @@ -920,33 +920,33 @@ struct ethtool_rxfh { * @data: Driver-dependent data to match * @data_mask: Mask for driver-dependent data bits to be ignored * @action: RX ring/queue index to deliver to (non-negative) or other action - * (negative, e.g. %ETHTOOL_RXNTUPLE_ACTION_DROP) + * (negative, e.g. %ETHTOOL_RXNTUPLE_ACTION_DROP) * * For flow types %TCP_V4_FLOW, %UDP_V4_FLOW and %SCTP_V4_FLOW, where * a field value and mask are both zero this is treated as if all mask * bits are set i.e. the field is ignored. */ struct ethtool_rx_ntuple_flow_spec { - __u32 flow_type; - union { - struct ethtool_tcpip4_spec tcp_ip4_spec; - struct ethtool_tcpip4_spec udp_ip4_spec; - struct ethtool_tcpip4_spec sctp_ip4_spec; - struct ethtool_ah_espip4_spec ah_ip4_spec; - struct ethtool_ah_espip4_spec esp_ip4_spec; - struct ethtool_usrip4_spec usr_ip4_spec; - struct ethhdr ether_spec; - __u8 hdata[72]; - } h_u, m_u; - - __u16 vlan_tag; - __u16 vlan_tag_mask; - __u64 data; - __u64 data_mask; - - __s32 action; -#define ETHTOOL_RXNTUPLE_ACTION_DROP (-1) /* drop packet */ -#define ETHTOOL_RXNTUPLE_ACTION_CLEAR (-2) /* clear filter */ + __u32 flow_type; + union { + struct ethtool_tcpip4_spec tcp_ip4_spec; + struct ethtool_tcpip4_spec udp_ip4_spec; + struct ethtool_tcpip4_spec sctp_ip4_spec; + struct ethtool_ah_espip4_spec ah_ip4_spec; + struct ethtool_ah_espip4_spec esp_ip4_spec; + struct ethtool_usrip4_spec usr_ip4_spec; + struct ethhdr ether_spec; + __u8 hdata[72]; + } h_u, m_u; + + __u16 vlan_tag; + __u16 vlan_tag_mask; + __u64 data; + __u64 data_mask; + + __s32 action; +#define ETHTOOL_RXNTUPLE_ACTION_DROP (-1) /* drop packet */ +#define ETHTOOL_RXNTUPLE_ACTION_CLEAR (-2) /* clear filter */ }; /** @@ -955,42 +955,42 @@ struct ethtool_rx_ntuple_flow_spec { * @fs: Flow filter specification */ struct ethtool_rx_ntuple { - __u32 cmd; - struct ethtool_rx_ntuple_flow_spec fs; + __u32 cmd; + struct ethtool_rx_ntuple_flow_spec fs; }; -#define ETHTOOL_FLASH_MAX_FILENAME 128 +#define ETHTOOL_FLASH_MAX_FILENAME 128 enum ethtool_flash_op_type { - ETHTOOL_FLASH_ALL_REGIONS = 0, + ETHTOOL_FLASH_ALL_REGIONS = 0, }; /* for passing firmware flashing related parameters */ struct ethtool_flash { - __u32 cmd; - __u32 region; - char data[ETHTOOL_FLASH_MAX_FILENAME]; + __u32 cmd; + __u32 region; + char data[ETHTOOL_FLASH_MAX_FILENAME]; }; /** * struct ethtool_dump - used for retrieving, setting device dump * @cmd: Command number - %ETHTOOL_GET_DUMP_FLAG, %ETHTOOL_GET_DUMP_DATA, or - * %ETHTOOL_SET_DUMP + * %ETHTOOL_SET_DUMP * @version: FW version of the dump, filled in by driver * @flag: driver dependent flag for dump setting, filled in by driver during * get and filled in by ethtool for set operation. * flag must be initialized by macro ETH_FW_DUMP_DISABLE value when * firmware dump is disabled. * @len: length of dump data, used as the length of the user buffer on entry to - * %ETHTOOL_GET_DUMP_DATA and this is returned as dump length by driver - * for %ETHTOOL_GET_DUMP_FLAG command + * %ETHTOOL_GET_DUMP_DATA and this is returned as dump length by driver + * for %ETHTOOL_GET_DUMP_FLAG command * @data: data collected for get dump data operation */ struct ethtool_dump { - __u32 cmd; - __u32 version; - __u32 flag; - __u32 len; - __u8 data[0]; + __u32 cmd; + __u32 version; + __u32 flag; + __u32 len; + __u8 data[0]; }; #define ETH_FW_DUMP_DISABLE 0 @@ -1005,24 +1005,24 @@ struct ethtool_dump { * @never_changed: mask of features not changeable for any device */ struct ethtool_get_features_block { - __u32 available; - __u32 requested; - __u32 active; - __u32 never_changed; + __u32 available; + __u32 requested; + __u32 active; + __u32 never_changed; }; /** * struct ethtool_gfeatures - command to get state of device's features * @cmd: command number = %ETHTOOL_GFEATURES * @size: On entry, the number of elements in the features[] array; - * on return, the number of elements in features[] needed to hold - * all features + * on return, the number of elements in features[] needed to hold + * all features * @features: state of features */ struct ethtool_gfeatures { - __u32 cmd; - __u32 size; - struct ethtool_get_features_block features[0]; + __u32 cmd; + __u32 size; + struct ethtool_get_features_block features[0]; }; /** @@ -1031,8 +1031,8 @@ struct ethtool_gfeatures { * @requested: values of features to be changed */ struct ethtool_set_features_block { - __u32 valid; - __u32 requested; + __u32 valid; + __u32 requested; }; /** @@ -1042,9 +1042,9 @@ struct ethtool_set_features_block { * @features: feature change masks */ struct ethtool_sfeatures { - __u32 cmd; - __u32 size; - struct ethtool_set_features_block features[0]; + __u32 cmd; + __u32 size; + struct ethtool_set_features_block features[0]; }; /** @@ -1061,13 +1061,13 @@ struct ethtool_sfeatures { * then (1 << HWTSTAMP_TX_ON) in 'tx_types' will be set. */ struct ethtool_ts_info { - __u32 cmd; - __u32 so_timestamping; - __s32 phc_index; - __u32 tx_types; - __u32 tx_reserved[3]; - __u32 rx_filters; - __u32 rx_reserved[3]; + __u32 cmd; + __u32 so_timestamping; + __s32 phc_index; + __u32 tx_types; + __u32 tx_reserved[3]; + __u32 rx_filters; + __u32 rx_reserved[3]; }; /* @@ -1079,8 +1079,8 @@ struct ethtool_ts_info { * or size is not equal to required number of features words (32-bit blocks). * Returns >= 0 if request was completed; bits set in the value mean: * %ETHTOOL_F_UNSUPPORTED - there were bits set in .valid that are not - * changeable (not present in %ETHTOOL_GFEATURES' features[].available) - * those bits were ignored. + * changeable (not present in %ETHTOOL_GFEATURES' features[].available) + * those bits were ignored. * %ETHTOOL_F_WISH - some or all changes requested were recorded but the * resulting state of bits masked by .valid is not equal to .requested. * Probably there are other device-specific constraints on some features @@ -1096,9 +1096,9 @@ struct ethtool_ts_info { * significant bit in features[0] fields. Empty strings mark undefined features. */ enum ethtool_sfeatures_retval_bits { - ETHTOOL_F_UNSUPPORTED__BIT, - ETHTOOL_F_WISH__BIT, - ETHTOOL_F_COMPAT__BIT, + ETHTOOL_F_UNSUPPORTED__BIT, + ETHTOOL_F_WISH__BIT, + ETHTOOL_F_COMPAT__BIT, }; #define ETHTOOL_F_UNSUPPORTED (1 << ETHTOOL_F_UNSUPPORTED__BIT) @@ -1107,153 +1107,153 @@ enum ethtool_sfeatures_retval_bits { /* CMDs currently supported */ -#define ETHTOOL_GSET 0x00000001 /* Get settings. */ -#define ETHTOOL_SSET 0x00000002 /* Set settings. */ -#define ETHTOOL_GDRVINFO 0x00000003 /* Get driver info. */ -#define ETHTOOL_GREGS 0x00000004 /* Get NIC registers. */ -#define ETHTOOL_GWOL 0x00000005 /* Get wake-on-lan options. */ -#define ETHTOOL_SWOL 0x00000006 /* Set wake-on-lan options. */ -#define ETHTOOL_GMSGLVL 0x00000007 /* Get driver message level */ -#define ETHTOOL_SMSGLVL 0x00000008 /* Set driver msg level. */ -#define ETHTOOL_NWAY_RST 0x00000009 /* Restart autonegotiation. */ +#define ETHTOOL_GSET 0x00000001 /* Get settings. */ +#define ETHTOOL_SSET 0x00000002 /* Set settings. */ +#define ETHTOOL_GDRVINFO 0x00000003 /* Get driver info. */ +#define ETHTOOL_GREGS 0x00000004 /* Get NIC registers. */ +#define ETHTOOL_GWOL 0x00000005 /* Get wake-on-lan options. */ +#define ETHTOOL_SWOL 0x00000006 /* Set wake-on-lan options. */ +#define ETHTOOL_GMSGLVL 0x00000007 /* Get driver message level */ +#define ETHTOOL_SMSGLVL 0x00000008 /* Set driver msg level. */ +#define ETHTOOL_NWAY_RST 0x00000009 /* Restart autonegotiation. */ /* Get link status for host, i.e. whether the interface *and* the * physical port (if there is one) are up (ethtool_value). */ -#define ETHTOOL_GLINK 0x0000000a -#define ETHTOOL_GEEPROM 0x0000000b /* Get EEPROM data */ -#define ETHTOOL_SEEPROM 0x0000000c /* Set EEPROM data. */ -#define ETHTOOL_GCOALESCE 0x0000000e /* Get coalesce config */ -#define ETHTOOL_SCOALESCE 0x0000000f /* Set coalesce config. */ -#define ETHTOOL_GRINGPARAM 0x00000010 /* Get ring parameters */ -#define ETHTOOL_SRINGPARAM 0x00000011 /* Set ring parameters. */ -#define ETHTOOL_GPAUSEPARAM 0x00000012 /* Get pause parameters */ -#define ETHTOOL_SPAUSEPARAM 0x00000013 /* Set pause parameters. */ -#define ETHTOOL_GRXCSUM 0x00000014 /* Get RX hw csum enable (ethtool_value) */ -#define ETHTOOL_SRXCSUM 0x00000015 /* Set RX hw csum enable (ethtool_value) */ -#define ETHTOOL_GTXCSUM 0x00000016 /* Get TX hw csum enable (ethtool_value) */ -#define ETHTOOL_STXCSUM 0x00000017 /* Set TX hw csum enable (ethtool_value) */ -#define ETHTOOL_GSG 0x00000018 /* Get scatter-gather enable - * (ethtool_value) */ -#define ETHTOOL_SSG 0x00000019 /* Set scatter-gather enable - * (ethtool_value). */ -#define ETHTOOL_TEST 0x0000001a /* execute NIC self-test. */ -#define ETHTOOL_GSTRINGS 0x0000001b /* get specified string set */ -#define ETHTOOL_PHYS_ID 0x0000001c /* identify the NIC */ -#define ETHTOOL_GSTATS 0x0000001d /* get NIC-specific statistics */ -#define ETHTOOL_GTSO 0x0000001e /* Get TSO enable (ethtool_value) */ -#define ETHTOOL_STSO 0x0000001f /* Set TSO enable (ethtool_value) */ -#define ETHTOOL_GPERMADDR 0x00000020 /* Get permanent hardware address */ -#define ETHTOOL_GUFO 0x00000021 /* Get UFO enable (ethtool_value) */ -#define ETHTOOL_SUFO 0x00000022 /* Set UFO enable (ethtool_value) */ -#define ETHTOOL_GGSO 0x00000023 /* Get GSO enable (ethtool_value) */ -#define ETHTOOL_SGSO 0x00000024 /* Set GSO enable (ethtool_value) */ -#define ETHTOOL_GFLAGS 0x00000025 /* Get flags bitmap(ethtool_value) */ -#define ETHTOOL_SFLAGS 0x00000026 /* Set flags bitmap(ethtool_value) */ -#define ETHTOOL_GPFLAGS 0x00000027 /* Get driver-private flags bitmap */ -#define ETHTOOL_SPFLAGS 0x00000028 /* Set driver-private flags bitmap */ - -#define ETHTOOL_GRXFH 0x00000029 /* Get RX flow hash configuration */ -#define ETHTOOL_SRXFH 0x0000002a /* Set RX flow hash configuration */ -#define ETHTOOL_GGRO 0x0000002b /* Get GRO enable (ethtool_value) */ -#define ETHTOOL_SGRO 0x0000002c /* Set GRO enable (ethtool_value) */ -#define ETHTOOL_GRXRINGS 0x0000002d /* Get RX rings available for LB */ -#define ETHTOOL_GRXCLSRLCNT 0x0000002e /* Get RX class rule count */ -#define ETHTOOL_GRXCLSRULE 0x0000002f /* Get RX classification rule */ -#define ETHTOOL_GRXCLSRLALL 0x00000030 /* Get all RX classification rule */ -#define ETHTOOL_SRXCLSRLDEL 0x00000031 /* Delete RX classification rule */ -#define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */ -#define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */ -#define ETHTOOL_RESET 0x00000034 /* Reset hardware */ -#define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */ -#define ETHTOOL_GRXNTUPLE 0x00000036 /* deprecated */ -#define ETHTOOL_GSSET_INFO 0x00000037 /* Get string set info */ -#define ETHTOOL_GRXFHINDIR 0x00000038 /* Get RX flow hash indir'n table */ -#define ETHTOOL_SRXFHINDIR 0x00000039 /* Set RX flow hash indir'n table */ - -#define ETHTOOL_GFEATURES 0x0000003a /* Get device offload settings */ -#define ETHTOOL_SFEATURES 0x0000003b /* Change device offload settings */ -#define ETHTOOL_GCHANNELS 0x0000003c /* Get no of channels */ -#define ETHTOOL_SCHANNELS 0x0000003d /* Set no of channels */ -#define ETHTOOL_SET_DUMP 0x0000003e /* Set dump settings */ -#define ETHTOOL_GET_DUMP_FLAG 0x0000003f /* Get dump settings */ -#define ETHTOOL_GET_DUMP_DATA 0x00000040 /* Get dump data */ -#define ETHTOOL_GET_TS_INFO 0x00000041 /* Get time stamping and PHC info */ -#define ETHTOOL_GMODULEINFO 0x00000042 /* Get plug-in module information */ -#define ETHTOOL_GMODULEEEPROM 0x00000043 /* Get plug-in module eeprom */ -#define ETHTOOL_GEEE 0x00000044 /* Get EEE settings */ -#define ETHTOOL_SEEE 0x00000045 /* Set EEE settings */ - -#define ETHTOOL_GRSSH 0x00000046 /* Get RX flow hash configuration */ -#define ETHTOOL_SRSSH 0x00000047 /* Set RX flow hash configuration */ -#define ETHTOOL_GTUNABLE 0x00000048 /* Get tunable configuration */ -#define ETHTOOL_STUNABLE 0x00000049 /* Set tunable configuration */ +#define ETHTOOL_GLINK 0x0000000a +#define ETHTOOL_GEEPROM 0x0000000b /* Get EEPROM data */ +#define ETHTOOL_SEEPROM 0x0000000c /* Set EEPROM data. */ +#define ETHTOOL_GCOALESCE 0x0000000e /* Get coalesce config */ +#define ETHTOOL_SCOALESCE 0x0000000f /* Set coalesce config. */ +#define ETHTOOL_GRINGPARAM 0x00000010 /* Get ring parameters */ +#define ETHTOOL_SRINGPARAM 0x00000011 /* Set ring parameters. */ +#define ETHTOOL_GPAUSEPARAM 0x00000012 /* Get pause parameters */ +#define ETHTOOL_SPAUSEPARAM 0x00000013 /* Set pause parameters. */ +#define ETHTOOL_GRXCSUM 0x00000014 /* Get RX hw csum enable (ethtool_value) */ +#define ETHTOOL_SRXCSUM 0x00000015 /* Set RX hw csum enable (ethtool_value) */ +#define ETHTOOL_GTXCSUM 0x00000016 /* Get TX hw csum enable (ethtool_value) */ +#define ETHTOOL_STXCSUM 0x00000017 /* Set TX hw csum enable (ethtool_value) */ +#define ETHTOOL_GSG 0x00000018 /* Get scatter-gather enable + * (ethtool_value) */ +#define ETHTOOL_SSG 0x00000019 /* Set scatter-gather enable + * (ethtool_value). */ +#define ETHTOOL_TEST 0x0000001a /* execute NIC self-test. */ +#define ETHTOOL_GSTRINGS 0x0000001b /* get specified string set */ +#define ETHTOOL_PHYS_ID 0x0000001c /* identify the NIC */ +#define ETHTOOL_GSTATS 0x0000001d /* get NIC-specific statistics */ +#define ETHTOOL_GTSO 0x0000001e /* Get TSO enable (ethtool_value) */ +#define ETHTOOL_STSO 0x0000001f /* Set TSO enable (ethtool_value) */ +#define ETHTOOL_GPERMADDR 0x00000020 /* Get permanent hardware address */ +#define ETHTOOL_GUFO 0x00000021 /* Get UFO enable (ethtool_value) */ +#define ETHTOOL_SUFO 0x00000022 /* Set UFO enable (ethtool_value) */ +#define ETHTOOL_GGSO 0x00000023 /* Get GSO enable (ethtool_value) */ +#define ETHTOOL_SGSO 0x00000024 /* Set GSO enable (ethtool_value) */ +#define ETHTOOL_GFLAGS 0x00000025 /* Get flags bitmap(ethtool_value) */ +#define ETHTOOL_SFLAGS 0x00000026 /* Set flags bitmap(ethtool_value) */ +#define ETHTOOL_GPFLAGS 0x00000027 /* Get driver-private flags bitmap */ +#define ETHTOOL_SPFLAGS 0x00000028 /* Set driver-private flags bitmap */ + +#define ETHTOOL_GRXFH 0x00000029 /* Get RX flow hash configuration */ +#define ETHTOOL_SRXFH 0x0000002a /* Set RX flow hash configuration */ +#define ETHTOOL_GGRO 0x0000002b /* Get GRO enable (ethtool_value) */ +#define ETHTOOL_SGRO 0x0000002c /* Set GRO enable (ethtool_value) */ +#define ETHTOOL_GRXRINGS 0x0000002d /* Get RX rings available for LB */ +#define ETHTOOL_GRXCLSRLCNT 0x0000002e /* Get RX class rule count */ +#define ETHTOOL_GRXCLSRULE 0x0000002f /* Get RX classification rule */ +#define ETHTOOL_GRXCLSRLALL 0x00000030 /* Get all RX classification rule */ +#define ETHTOOL_SRXCLSRLDEL 0x00000031 /* Delete RX classification rule */ +#define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */ +#define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */ +#define ETHTOOL_RESET 0x00000034 /* Reset hardware */ +#define ETHTOOL_SRXNTUPLE 0x00000035 /* Add an n-tuple filter to device */ +#define ETHTOOL_GRXNTUPLE 0x00000036 /* deprecated */ +#define ETHTOOL_GSSET_INFO 0x00000037 /* Get string set info */ +#define ETHTOOL_GRXFHINDIR 0x00000038 /* Get RX flow hash indir'n table */ +#define ETHTOOL_SRXFHINDIR 0x00000039 /* Set RX flow hash indir'n table */ + +#define ETHTOOL_GFEATURES 0x0000003a /* Get device offload settings */ +#define ETHTOOL_SFEATURES 0x0000003b /* Change device offload settings */ +#define ETHTOOL_GCHANNELS 0x0000003c /* Get no of channels */ +#define ETHTOOL_SCHANNELS 0x0000003d /* Set no of channels */ +#define ETHTOOL_SET_DUMP 0x0000003e /* Set dump settings */ +#define ETHTOOL_GET_DUMP_FLAG 0x0000003f /* Get dump settings */ +#define ETHTOOL_GET_DUMP_DATA 0x00000040 /* Get dump data */ +#define ETHTOOL_GET_TS_INFO 0x00000041 /* Get time stamping and PHC info */ +#define ETHTOOL_GMODULEINFO 0x00000042 /* Get plug-in module information */ +#define ETHTOOL_GMODULEEEPROM 0x00000043 /* Get plug-in module eeprom */ +#define ETHTOOL_GEEE 0x00000044 /* Get EEE settings */ +#define ETHTOOL_SEEE 0x00000045 /* Set EEE settings */ + +#define ETHTOOL_GRSSH 0x00000046 /* Get RX flow hash configuration */ +#define ETHTOOL_SRSSH 0x00000047 /* Set RX flow hash configuration */ +#define ETHTOOL_GTUNABLE 0x00000048 /* Get tunable configuration */ +#define ETHTOOL_STUNABLE 0x00000049 /* Set tunable configuration */ /* compatibility with older code */ -#define SPARC_ETH_GSET ETHTOOL_GSET -#define SPARC_ETH_SSET ETHTOOL_SSET - -#define SUPPORTED_10baseT_Half (1 << 0) -#define SUPPORTED_10baseT_Full (1 << 1) -#define SUPPORTED_100baseT_Half (1 << 2) -#define SUPPORTED_100baseT_Full (1 << 3) -#define SUPPORTED_1000baseT_Half (1 << 4) -#define SUPPORTED_1000baseT_Full (1 << 5) -#define SUPPORTED_Autoneg (1 << 6) -#define SUPPORTED_TP (1 << 7) -#define SUPPORTED_AUI (1 << 8) -#define SUPPORTED_MII (1 << 9) -#define SUPPORTED_FIBRE (1 << 10) -#define SUPPORTED_BNC (1 << 11) -#define SUPPORTED_10000baseT_Full (1 << 12) -#define SUPPORTED_Pause (1 << 13) -#define SUPPORTED_Asym_Pause (1 << 14) -#define SUPPORTED_2500baseX_Full (1 << 15) -#define SUPPORTED_Backplane (1 << 16) -#define SUPPORTED_1000baseKX_Full (1 << 17) -#define SUPPORTED_10000baseKX4_Full (1 << 18) -#define SUPPORTED_10000baseKR_Full (1 << 19) -#define SUPPORTED_10000baseR_FEC (1 << 20) -#define SUPPORTED_20000baseMLD2_Full (1 << 21) -#define SUPPORTED_20000baseKR2_Full (1 << 22) -#define SUPPORTED_40000baseKR4_Full (1 << 23) -#define SUPPORTED_40000baseCR4_Full (1 << 24) -#define SUPPORTED_40000baseSR4_Full (1 << 25) -#define SUPPORTED_40000baseLR4_Full (1 << 26) -#define SUPPORTED_56000baseKR4_Full (1 << 27) -#define SUPPORTED_56000baseCR4_Full (1 << 28) -#define SUPPORTED_56000baseSR4_Full (1 << 29) -#define SUPPORTED_56000baseLR4_Full (1 << 30) - -#define ADVERTISED_10baseT_Half (1 << 0) -#define ADVERTISED_10baseT_Full (1 << 1) -#define ADVERTISED_100baseT_Half (1 << 2) -#define ADVERTISED_100baseT_Full (1 << 3) -#define ADVERTISED_1000baseT_Half (1 << 4) -#define ADVERTISED_1000baseT_Full (1 << 5) -#define ADVERTISED_Autoneg (1 << 6) -#define ADVERTISED_TP (1 << 7) -#define ADVERTISED_AUI (1 << 8) -#define ADVERTISED_MII (1 << 9) -#define ADVERTISED_FIBRE (1 << 10) -#define ADVERTISED_BNC (1 << 11) -#define ADVERTISED_10000baseT_Full (1 << 12) -#define ADVERTISED_Pause (1 << 13) -#define ADVERTISED_Asym_Pause (1 << 14) -#define ADVERTISED_2500baseX_Full (1 << 15) -#define ADVERTISED_Backplane (1 << 16) -#define ADVERTISED_1000baseKX_Full (1 << 17) -#define ADVERTISED_10000baseKX4_Full (1 << 18) -#define ADVERTISED_10000baseKR_Full (1 << 19) -#define ADVERTISED_10000baseR_FEC (1 << 20) -#define ADVERTISED_20000baseMLD2_Full (1 << 21) -#define ADVERTISED_20000baseKR2_Full (1 << 22) -#define ADVERTISED_40000baseKR4_Full (1 << 23) -#define ADVERTISED_40000baseCR4_Full (1 << 24) -#define ADVERTISED_40000baseSR4_Full (1 << 25) -#define ADVERTISED_40000baseLR4_Full (1 << 26) -#define ADVERTISED_56000baseKR4_Full (1 << 27) -#define ADVERTISED_56000baseCR4_Full (1 << 28) -#define ADVERTISED_56000baseSR4_Full (1 << 29) -#define ADVERTISED_56000baseLR4_Full (1 << 30) +#define SPARC_ETH_GSET ETHTOOL_GSET +#define SPARC_ETH_SSET ETHTOOL_SSET + +#define SUPPORTED_10baseT_Half (1 << 0) +#define SUPPORTED_10baseT_Full (1 << 1) +#define SUPPORTED_100baseT_Half (1 << 2) +#define SUPPORTED_100baseT_Full (1 << 3) +#define SUPPORTED_1000baseT_Half (1 << 4) +#define SUPPORTED_1000baseT_Full (1 << 5) +#define SUPPORTED_Autoneg (1 << 6) +#define SUPPORTED_TP (1 << 7) +#define SUPPORTED_AUI (1 << 8) +#define SUPPORTED_MII (1 << 9) +#define SUPPORTED_FIBRE (1 << 10) +#define SUPPORTED_BNC (1 << 11) +#define SUPPORTED_10000baseT_Full (1 << 12) +#define SUPPORTED_Pause (1 << 13) +#define SUPPORTED_Asym_Pause (1 << 14) +#define SUPPORTED_2500baseX_Full (1 << 15) +#define SUPPORTED_Backplane (1 << 16) +#define SUPPORTED_1000baseKX_Full (1 << 17) +#define SUPPORTED_10000baseKX4_Full (1 << 18) +#define SUPPORTED_10000baseKR_Full (1 << 19) +#define SUPPORTED_10000baseR_FEC (1 << 20) +#define SUPPORTED_20000baseMLD2_Full (1 << 21) +#define SUPPORTED_20000baseKR2_Full (1 << 22) +#define SUPPORTED_40000baseKR4_Full (1 << 23) +#define SUPPORTED_40000baseCR4_Full (1 << 24) +#define SUPPORTED_40000baseSR4_Full (1 << 25) +#define SUPPORTED_40000baseLR4_Full (1 << 26) +#define SUPPORTED_56000baseKR4_Full (1 << 27) +#define SUPPORTED_56000baseCR4_Full (1 << 28) +#define SUPPORTED_56000baseSR4_Full (1 << 29) +#define SUPPORTED_56000baseLR4_Full (1 << 30) + +#define ADVERTISED_10baseT_Half (1 << 0) +#define ADVERTISED_10baseT_Full (1 << 1) +#define ADVERTISED_100baseT_Half (1 << 2) +#define ADVERTISED_100baseT_Full (1 << 3) +#define ADVERTISED_1000baseT_Half (1 << 4) +#define ADVERTISED_1000baseT_Full (1 << 5) +#define ADVERTISED_Autoneg (1 << 6) +#define ADVERTISED_TP (1 << 7) +#define ADVERTISED_AUI (1 << 8) +#define ADVERTISED_MII (1 << 9) +#define ADVERTISED_FIBRE (1 << 10) +#define ADVERTISED_BNC (1 << 11) +#define ADVERTISED_10000baseT_Full (1 << 12) +#define ADVERTISED_Pause (1 << 13) +#define ADVERTISED_Asym_Pause (1 << 14) +#define ADVERTISED_2500baseX_Full (1 << 15) +#define ADVERTISED_Backplane (1 << 16) +#define ADVERTISED_1000baseKX_Full (1 << 17) +#define ADVERTISED_10000baseKX4_Full (1 << 18) +#define ADVERTISED_10000baseKR_Full (1 << 19) +#define ADVERTISED_10000baseR_FEC (1 << 20) +#define ADVERTISED_20000baseMLD2_Full (1 << 21) +#define ADVERTISED_20000baseKR2_Full (1 << 22) +#define ADVERTISED_40000baseKR4_Full (1 << 23) +#define ADVERTISED_40000baseCR4_Full (1 << 24) +#define ADVERTISED_40000baseSR4_Full (1 << 25) +#define ADVERTISED_40000baseLR4_Full (1 << 26) +#define ADVERTISED_56000baseKR4_Full (1 << 27) +#define ADVERTISED_56000baseCR4_Full (1 << 28) +#define ADVERTISED_56000baseSR4_Full (1 << 29) +#define ADVERTISED_56000baseLR4_Full (1 << 30) /* The following are all involved in forcing a particular link * mode for the device for setting things. When getting the @@ -1262,108 +1262,109 @@ enum ethtool_sfeatures_retval_bits { */ /* The forced speed, 10Mb, 100Mb, gigabit, [2.5|10|20|40|56]GbE. */ -#define SPEED_10 10 -#define SPEED_100 100 -#define SPEED_1000 1000 -#define SPEED_2500 2500 -#define SPEED_10000 10000 -#define SPEED_20000 20000 -#define SPEED_40000 40000 -#define SPEED_56000 56000 +#define SPEED_10 10 +#define SPEED_100 100 +#define SPEED_1000 1000 +#define SPEED_2500 2500 +#define SPEED_10000 10000 +#define SPEED_20000 20000 +#define SPEED_40000 40000 +#define SPEED_56000 56000 -#define SPEED_UNKNOWN -1 +#define SPEED_UNKNOWN -1 /* Duplex, half or full. */ -#define DUPLEX_HALF 0x00 -#define DUPLEX_FULL 0x01 -#define DUPLEX_UNKNOWN 0xff +#define DUPLEX_HALF 0x00 +#define DUPLEX_FULL 0x01 +#define DUPLEX_UNKNOWN 0xff /* Which connector port. */ -#define PORT_TP 0x00 -#define PORT_AUI 0x01 -#define PORT_MII 0x02 -#define PORT_FIBRE 0x03 -#define PORT_BNC 0x04 -#define PORT_DA 0x05 -#define PORT_NONE 0xef -#define PORT_OTHER 0xff +#define PORT_TP 0x00 +#define PORT_AUI 0x01 +#define PORT_MII 0x02 +#define PORT_FIBRE 0x03 +#define PORT_BNC 0x04 +#define PORT_DA 0x05 +#define PORT_NONE 0xef +#define PORT_OTHER 0xff /* Which transceiver to use. */ -#define XCVR_INTERNAL 0x00 /* PHY and MAC are in the same package */ -#define XCVR_EXTERNAL 0x01 /* PHY and MAC are in different packages */ -#define XCVR_DUMMY1 0x02 -#define XCVR_DUMMY2 0x03 -#define XCVR_DUMMY3 0x04 +#define XCVR_INTERNAL 0x00 /* PHY and MAC are in the same package */ +#define XCVR_EXTERNAL 0x01 /* PHY and MAC are in different packages */ +#define XCVR_DUMMY1 0x02 +#define XCVR_DUMMY2 0x03 +#define XCVR_DUMMY3 0x04 /* Enable or disable autonegotiation. */ -#define AUTONEG_DISABLE 0x00 -#define AUTONEG_ENABLE 0x01 +#define AUTONEG_DISABLE 0x00 +#define AUTONEG_ENABLE 0x01 /* MDI or MDI-X status/control - if MDI/MDI_X/AUTO is set then * the driver is required to renegotiate link */ -#define ETH_TP_MDI_INVALID 0x00 /* status: unknown; control: unsupported */ -#define ETH_TP_MDI 0x01 /* status: MDI; control: force MDI */ -#define ETH_TP_MDI_X 0x02 /* status: MDI-X; control: force MDI-X */ -#define ETH_TP_MDI_AUTO 0x03 /* control: auto-select */ +#define ETH_TP_MDI_INVALID 0x00 /* status: unknown; control: unsupported */ +#define ETH_TP_MDI 0x01 /* status: MDI; control: force MDI */ +#define ETH_TP_MDI_X 0x02 /* status: MDI-X; control: force MDI-X */ +#define ETH_TP_MDI_AUTO 0x03 /* control: auto-select */ /* Wake-On-Lan options. */ -#define WAKE_PHY (1 << 0) -#define WAKE_UCAST (1 << 1) -#define WAKE_MCAST (1 << 2) -#define WAKE_BCAST (1 << 3) -#define WAKE_ARP (1 << 4) -#define WAKE_MAGIC (1 << 5) -#define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */ +#define WAKE_PHY (1 << 0) +#define WAKE_UCAST (1 << 1) +#define WAKE_MCAST (1 << 2) +#define WAKE_BCAST (1 << 3) +#define WAKE_ARP (1 << 4) +#define WAKE_MAGIC (1 << 5) +#define WAKE_MAGICSECURE (1 << 6) /* only meaningful if WAKE_MAGIC */ +#define WAKE_FILTER (1 << 7) /* L2-L4 network traffic flow types */ -#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */ -#define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */ -#define SCTP_V4_FLOW 0x03 /* hash or spec (sctp_ip4_spec) */ -#define AH_ESP_V4_FLOW 0x04 /* hash only */ -#define TCP_V6_FLOW 0x05 /* hash only */ -#define UDP_V6_FLOW 0x06 /* hash only */ -#define SCTP_V6_FLOW 0x07 /* hash only */ -#define AH_ESP_V6_FLOW 0x08 /* hash only */ -#define AH_V4_FLOW 0x09 /* hash or spec (ah_ip4_spec) */ -#define ESP_V4_FLOW 0x0a /* hash or spec (esp_ip4_spec) */ -#define AH_V6_FLOW 0x0b /* hash only */ -#define ESP_V6_FLOW 0x0c /* hash only */ -#define IP_USER_FLOW 0x0d /* spec only (usr_ip4_spec) */ -#define IPV4_FLOW 0x10 /* hash only */ -#define IPV6_FLOW 0x11 /* hash only */ -#define ETHER_FLOW 0x12 /* spec only (ether_spec) */ +#define TCP_V4_FLOW 0x01 /* hash or spec (tcp_ip4_spec) */ +#define UDP_V4_FLOW 0x02 /* hash or spec (udp_ip4_spec) */ +#define SCTP_V4_FLOW 0x03 /* hash or spec (sctp_ip4_spec) */ +#define AH_ESP_V4_FLOW 0x04 /* hash only */ +#define TCP_V6_FLOW 0x05 /* hash only */ +#define UDP_V6_FLOW 0x06 /* hash only */ +#define SCTP_V6_FLOW 0x07 /* hash only */ +#define AH_ESP_V6_FLOW 0x08 /* hash only */ +#define AH_V4_FLOW 0x09 /* hash or spec (ah_ip4_spec) */ +#define ESP_V4_FLOW 0x0a /* hash or spec (esp_ip4_spec) */ +#define AH_V6_FLOW 0x0b /* hash only */ +#define ESP_V6_FLOW 0x0c /* hash only */ +#define IP_USER_FLOW 0x0d /* spec only (usr_ip4_spec) */ +#define IPV4_FLOW 0x10 /* hash only */ +#define IPV6_FLOW 0x11 /* hash only */ +#define ETHER_FLOW 0x12 /* spec only (ether_spec) */ /* Flag to enable additional fields in struct ethtool_rx_flow_spec */ -#define FLOW_EXT 0x80000000 -#define FLOW_MAC_EXT 0x40000000 +#define FLOW_EXT 0x80000000 +#define FLOW_MAC_EXT 0x40000000 /* L3-L4 network traffic flow hash options */ -#define RXH_L2DA (1 << 1) -#define RXH_VLAN (1 << 2) -#define RXH_L3_PROTO (1 << 3) -#define RXH_IP_SRC (1 << 4) -#define RXH_IP_DST (1 << 5) -#define RXH_L4_B_0_1 (1 << 6) /* src port in case of TCP/UDP/SCTP */ -#define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */ -#define RXH_DISCARD (1 << 31) +#define RXH_L2DA (1 << 1) +#define RXH_VLAN (1 << 2) +#define RXH_L3_PROTO (1 << 3) +#define RXH_IP_SRC (1 << 4) +#define RXH_IP_DST (1 << 5) +#define RXH_L4_B_0_1 (1 << 6) /* src port in case of TCP/UDP/SCTP */ +#define RXH_L4_B_2_3 (1 << 7) /* dst port in case of TCP/UDP/SCTP */ +#define RXH_DISCARD (1 << 31) -#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL +#define RX_CLS_FLOW_DISC 0xffffffffffffffffULL /* Special RX classification rule insert location values */ -#define RX_CLS_LOC_SPECIAL 0x80000000 /* flag */ -#define RX_CLS_LOC_ANY 0xffffffff -#define RX_CLS_LOC_FIRST 0xfffffffe -#define RX_CLS_LOC_LAST 0xfffffffd +#define RX_CLS_LOC_SPECIAL 0x80000000 /* flag */ +#define RX_CLS_LOC_ANY 0xffffffff +#define RX_CLS_LOC_FIRST 0xfffffffe +#define RX_CLS_LOC_LAST 0xfffffffd /* EEPROM Standards for plug in modules */ -#define ETH_MODULE_SFF_8079 0x1 -#define ETH_MODULE_SFF_8079_LEN 256 -#define ETH_MODULE_SFF_8472 0x2 -#define ETH_MODULE_SFF_8472_LEN 512 -#define ETH_MODULE_SFF_8636 0x3 -#define ETH_MODULE_SFF_8636_LEN 256 -#define ETH_MODULE_SFF_8436 0x4 -#define ETH_MODULE_SFF_8436_LEN 256 +#define ETH_MODULE_SFF_8079 0x1 +#define ETH_MODULE_SFF_8079_LEN 256 +#define ETH_MODULE_SFF_8472 0x2 +#define ETH_MODULE_SFF_8472_LEN 512 +#define ETH_MODULE_SFF_8636 0x3 +#define ETH_MODULE_SFF_8636_LEN 256 +#define ETH_MODULE_SFF_8436 0x4 +#define ETH_MODULE_SFF_8436_LEN 256 /* Reset flags */ /* The reset() operation must clear the flags for the components which @@ -1373,26 +1374,26 @@ enum ethtool_sfeatures_retval_bits { * driver must never reset any components that were not requested. */ enum ethtool_reset_flags { - /* These flags represent components dedicated to the interface - * the command is addressed to. Shift any flag left by - * ETH_RESET_SHARED_SHIFT to reset a shared component of the - * same type. - */ - ETH_RESET_MGMT = 1 << 0, /* Management processor */ - ETH_RESET_IRQ = 1 << 1, /* Interrupt requester */ - ETH_RESET_DMA = 1 << 2, /* DMA engine */ - ETH_RESET_FILTER = 1 << 3, /* Filtering/flow direction */ - ETH_RESET_OFFLOAD = 1 << 4, /* Protocol offload */ - ETH_RESET_MAC = 1 << 5, /* Media access controller */ - ETH_RESET_PHY = 1 << 6, /* Transceiver/PHY */ - ETH_RESET_RAM = 1 << 7, /* RAM shared between - * multiple components */ - - ETH_RESET_DEDICATED = 0x0000ffff, /* All components dedicated to - * this interface */ - ETH_RESET_ALL = 0xffffffff, /* All components used by this - * interface, even if shared */ + /* These flags represent components dedicated to the interface + * the command is addressed to. Shift any flag left by + * ETH_RESET_SHARED_SHIFT to reset a shared component of the + * same type. + */ + ETH_RESET_MGMT = 1 << 0, /* Management processor */ + ETH_RESET_IRQ = 1 << 1, /* Interrupt requester */ + ETH_RESET_DMA = 1 << 2, /* DMA engine */ + ETH_RESET_FILTER = 1 << 3, /* Filtering/flow direction */ + ETH_RESET_OFFLOAD = 1 << 4, /* Protocol offload */ + ETH_RESET_MAC = 1 << 5, /* Media access controller */ + ETH_RESET_PHY = 1 << 6, /* Transceiver/PHY */ + ETH_RESET_RAM = 1 << 7, /* RAM shared between + * multiple components */ + + ETH_RESET_DEDICATED = 0x0000ffff, /* All components dedicated to + * this interface */ + ETH_RESET_ALL = 0xffffffff, /* All components used by this + * interface, even if shared */ }; -#define ETH_RESET_SHARED_SHIFT 16 +#define ETH_RESET_SHARED_SHIFT 16 #endif /* _LINUX_ETHTOOL_H */ diff --git a/deepin-devicemanager-server/src/WakeControl/WakeupUtils.cpp b/deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/wakeuputils.cpp similarity index 84% rename from deepin-devicemanager-server/src/WakeControl/WakeupUtils.cpp rename to deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/wakeuputils.cpp index b365fee25..186c7ba39 100644 --- a/deepin-devicemanager-server/src/WakeControl/WakeupUtils.cpp +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/wakeuputils.cpp @@ -1,18 +1,21 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "WakeupUtils.h" -#include "EnableSqlManager.h" +#include "wakeuputils.h" +#include "enablesqlmanager.h" +#include "DDLog.h" #include #include #include -#include +#include #include #define LEAST_NUM 10 +using namespace DDLog; + WakeupUtils::WakeupUtils() { @@ -98,6 +101,12 @@ bool WakeupUtils::writeWakeupFile(const QString &path, bool wakeup) return true; } +#define UNPARSE_WOLOPTS(x) ((x & WAKE_PHY) || (x & WAKE_UCAST) || (x & WAKE_MCAST) || (x & WAKE_BCAST) || (x & WAKE_ARP) || (x & WAKE_MAGIC) || (x & WAKE_MAGICSECURE) || (x & WAKE_FILTER)) +/* refer spec : ethtool.c + https://lwn.net/Articles/931289/ + https://linuxconfig.org/introduction-to-wake-on-lan + https://wiki.archlinux.org/title/Wake-on-LAN +*/ WakeupUtils::EthStatus WakeupUtils::wakeOnLanIsOpen(const QString &logicalName) { int fd = socket(AF_INET, SOCK_DGRAM, 0); @@ -108,24 +117,25 @@ WakeupUtils::EthStatus WakeupUtils::wakeOnLanIsOpen(const QString &logicalName) struct ifreq ifr; struct ethtool_wolinfo wolinfo; memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, logicalName.toStdString().c_str()); + strncpy(ifr.ifr_name, logicalName.toStdString().c_str(), sizeof(logicalName.toStdString().c_str())); wolinfo.cmd = ETHTOOL_GWOL; ifr.ifr_data = reinterpret_cast(&wolinfo); if (0 != ioctl(fd, SIOCETHTOOL, &ifr)) { return ES_IOCTL_ERROR; } + qCInfo(appLog) << "wakeOnLan supported:" << wolinfo.supported << "wolopts:" << wolinfo.wolopts; - if (47 != wolinfo.supported) { - return ES_NOT_SUPPORT_WAKE_ON; + if (wolinfo.supported && UNPARSE_WOLOPTS(wolinfo.supported)) { + if (wolinfo.wolopts && UNPARSE_WOLOPTS(wolinfo.wolopts)) { + return ES_WAKE_ON_OPEN; + } + else + return ES_WAKE_ON_CLOSE; } + else + return ES_NOT_SUPPORT_WAKE_ON; - if (0 == wolinfo.wolopts) { - return ES_WAKE_ON_CLOSE; - } else if (32 == wolinfo.wolopts) { - return ES_WAKE_ON_OPEN; - } else { - return ES_WAKE_ON_UNKNOW; - } + return ES_WAKE_ON_UNKNOW; } bool WakeupUtils::setWakeOnLan(const QString &logicalName, bool open) @@ -137,7 +147,7 @@ bool WakeupUtils::setWakeOnLan(const QString &logicalName, bool open) struct ifreq ifr; struct ethtool_wolinfo wolinfo; memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, logicalName.toStdString().c_str()); + strncpy(ifr.ifr_name, logicalName.toStdString().c_str(), sizeof(logicalName.toStdString().c_str())); wolinfo.cmd = ETHTOOL_SWOL; if (open) wolinfo.wolopts = 0 | WAKE_MAGIC; diff --git a/deepin-devicemanager-server/src/WakeControl/WakeupUtils.h b/deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/wakeuputils.h similarity index 76% rename from deepin-devicemanager-server/src/WakeControl/WakeupUtils.h rename to deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/wakeuputils.h index c3c374231..7beccc796 100644 --- a/deepin-devicemanager-server/src/WakeControl/WakeupUtils.h +++ b/deepin-devicemanager-server/deepin-devicecontrol/src/wakecontrol/wakeuputils.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -20,7 +20,7 @@ class WakeupUtils * @brief The EthStatus enum * ioctl操作网络设备的返回值定义 */ - enum EthStatus{ + enum EthStatus { ES_SOCKET_FAILED, // socket 返回错误 ES_IOCTL_ERROR, // ioctl 返回错误 ES_NOT_SUPPORT_WAKE_ON, // 网卡不支持唤醒功能 @@ -36,7 +36,7 @@ class WakeupUtils * @brief updateWakeupDeviceInfo * @param info */ - static void updateWakeupDeviceInfo(const QString& info); + static void updateWakeupDeviceInfo(const QString &info); /** * @brief wakeupPath : get wakeup path by sys path @@ -44,7 +44,7 @@ class WakeupUtils * @param wakeuppath : wakeup path * @return */ - static bool wakeupPath(const QString& syspath, QString& wakeuppath); + static bool wakeupPath(const QString &syspath, QString &wakeuppath); /** * @brief writeWakeupFile : write wakeup file @@ -52,14 +52,14 @@ class WakeupUtils * @param wakeup : enable or disable * @return */ - static bool writeWakeupFile(const QString& path, bool wakeup); + static bool writeWakeupFile(const QString &path, bool wakeup); /** * @brief wakeOnLanIsOpen 判断网卡的唤醒功能是否开启 * @param logicalName 网卡的逻辑名称 * @return 返回定义值 */ - static EthStatus wakeOnLanIsOpen(const QString& logicalName); + static EthStatus wakeOnLanIsOpen(const QString &logicalName); /** * @brief setWakeOnLan 开启或者关闭网卡的远程唤醒功能 @@ -67,7 +67,7 @@ class WakeupUtils * @param open 开启或者关闭 * @return 返回设置状态 */ - static bool setWakeOnLan(const QString& logicalName, bool open); + static bool setWakeOnLan(const QString &logicalName, bool open); private: /** @@ -76,14 +76,14 @@ class WakeupUtils * @param mapInfo * @return */ - static bool getMapInfo(const QString& item,QMap& mapInfo); + static bool getMapInfo(const QString &item, QMap &mapInfo); /** * @brief getPS2Syspath 获取ps2鼠标键盘的syspath * @param dfs : Device Files 属性 * @return */ - static QString getPS2Syspath(const QString& dfs); + static QString getPS2Syspath(const QString &dfs); }; #endif // WAKEUPUTILS_H diff --git a/deepin-devicemanager-server/deepin-deviceinfo/CMakeLists.txt b/deepin-devicemanager-server/deepin-deviceinfo/CMakeLists.txt new file mode 100644 index 000000000..d47ccb7e8 --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/CMakeLists.txt @@ -0,0 +1,61 @@ +cmake_minimum_required(VERSION 3.7) + +set(BIN_NAME "deepin-deviceinfo") + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(CMAKE_AUTOMOC ON) + +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector-strong -D_FORTITY_SOURCE=1 -z noexecstack -pie -fPIC -z lazy") + +# 设置包含头文件的时候不用包含路径 begin **************************************************************************************** +MACRO(SUBDIRLIST result curdir) + FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) + SET(dirlist "") + FOREACH(child ${children}) + IF(IS_DIRECTORY ${curdir}/${child}) + LIST(APPEND dirlist ${child}) + ENDIF() + ENDFOREACH() + SET(${result} ${dirlist}) +ENDMACRO() +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../deepin-devicemanager/src/DDLog) +SUBDIRLIST(dirs ${CMAKE_CURRENT_SOURCE_DIR}/src) +foreach(dir ${dirs}) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/src/${dir}) +endforeach() +# 设置包含头文件的时候不用包含路径 end **************************************************************************************** + +file(GLOB_RECURSE SRC_CPP ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp) +file(GLOB_RECURSE SRC_H ${CMAKE_CURRENT_LIST_DIR}/src/*.h) + +link_libraries("udev") + +find_package(Qt5 COMPONENTS Core DBus REQUIRED) +find_package(DtkCore REQUIRED) +find_package(PolkitQt5-1 REQUIRED) + + +add_library(${BIN_NAME} MODULE + ${SRC_CPP} + ${SRC_H} +) + +target_include_directories(${BIN_NAME} PUBLIC + Qt5::Core + Qt5::DBus +) + +target_link_libraries(${BIN_NAME} PRIVATE + Qt5::Core + Qt5::DBus + PolkitQt5-1::Agent + ${DtkCore_LIBRARIES} +) + +install(TARGETS ${BIN_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/deepin-service-manager/) +install(FILES ${BIN_NAME}.json DESTINATION share/deepin-service-manager/system/) +install(FILES org.deepin.deviceinfo.conf DESTINATION share/dbus-1/system.d/ ) diff --git a/deepin-devicemanager-server/deepin-deviceinfo/deepin-deviceinfo.json b/deepin-devicemanager-server/deepin-deviceinfo/deepin-deviceinfo.json new file mode 100644 index 000000000..147f0be4d --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/deepin-deviceinfo.json @@ -0,0 +1,8 @@ +{ + "name": "org.deepin.DeviceInfo", + "libPath": "deepin-deviceinfo.so", + "group": "app", + "policyStartType": "Resident", + "startDelay": 3, + "pluginType": "qt" +} diff --git a/deepin-devicemanager-server/deepin-deviceinfo/org.deepin.deviceinfo.conf b/deepin-devicemanager-server/deepin-deviceinfo/org.deepin.deviceinfo.conf new file mode 100644 index 000000000..6bf531384 --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/org.deepin.deviceinfo.conf @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + diff --git a/deepin-devicemanager-server/deepin-deviceinfo/src/controlinterface.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/controlinterface.cpp new file mode 100644 index 000000000..b4a87a771 --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/controlinterface.cpp @@ -0,0 +1,84 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "controlinterface.h" + +#include +#include +#include +#include + +// 以下这个问题可以避免单例的内存泄露问题 +std::atomic ControlInterface::s_instance; +std::mutex ControlInterface::m_mutex; + +const QString SERVICE_NAME = "org.deepin.DeviceControl"; +const QString ENABLE_SERVICE_PATH = "/org/deepin/DeviceControl"; +const QString ENABLE_SERVICE_INTER = "org.deepin.DeviceControl"; + +ControlInterface::ControlInterface() + : m_iface(nullptr) +{ + // 初始化dbus + init(); +} + +void ControlInterface::disableOutDevice(const QString &devInfo) +{ + // 调用dbus接口获取设备信息 + if (m_iface != nullptr && m_iface->isValid()) { + m_iface->call("disableOutDevice", devInfo); + } +} + +void ControlInterface::disableInDevice() +{ + // 调用dbus接口获取设备信息 + if (m_iface != nullptr && m_iface->isValid()) { + m_iface->call("disableInDevice"); + } +} + +void ControlInterface::updateWakeup(const QString &devInfo) +{ + // 调用dbus接口获取设备信息 + if (m_iface != nullptr && m_iface->isValid()) { + m_iface->call("updateWakeup", devInfo); + } +} + +void ControlInterface::setMonitorWorkingDBFlag(bool flag) +{ + // 调用dbus接口获取设备信息 + if (m_iface != nullptr && m_iface->isValid()) { + m_iface->call("setMonitorWorkingDBFlag", flag); + } +} + +bool ControlInterface::monitorWorkingDBFlag() +{ + // 调用dbus接口获取设备信息 + if (m_iface != nullptr && m_iface->isValid()) { + QDBusReply reply = m_iface->call("monitorWorkingDBFlag"); + if (reply.isValid()) { + return reply.value(); + } + } + return true; +} + +void ControlInterface::init() +{ + // 1. 连接到dbus + if (!QDBusConnection::systemBus().isConnected()) { + fprintf(stderr, "Cannot connect to the D-Bus session bus./n" + "To start it, run:/n" + "/teval `dbus-launch --auto-syntax`/n"); + } + + // 2. create interface + m_iface = new QDBusInterface(SERVICE_NAME, ENABLE_SERVICE_PATH, ENABLE_SERVICE_INTER, QDBusConnection::systemBus()); +// QDBusConnection::systemBus().connect(SERVICE_NAME, ENABLE_SERVICE_PATH, ENABLE_SERVICE_INTER, "sigFinished", this, SIGNAL(sigFinished(bool, QString))); +// QDBusConnection::systemBus().connect(SERVICE_NAME, ENABLE_SERVICE_PATH, ENABLE_SERVICE_INTER, "sigUpdate", this, SIGNAL(sigUpdate())); +} diff --git a/deepin-devicemanager-server/deepin-deviceinfo/src/controlinterface.h b/deepin-devicemanager-server/deepin-deviceinfo/src/controlinterface.h new file mode 100644 index 000000000..adcb1ca2c --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/controlinterface.h @@ -0,0 +1,85 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef CONTROLINTERFACE_H +#define CONTROLINTERFACE_H + +#include + +#include + +class QDBusInterface; +class ControlInterface : public QObject +{ + Q_OBJECT +public: + inline static ControlInterface *getInstance() + { + // 利用原子变量解决,单例模式造成的内存泄露 + ControlInterface *sin = s_instance.load(); + + if (!sin) { + // std::lock_guard 自动加锁解锁 + std::lock_guard lock(m_mutex); + sin = s_instance.load(); + + if (!sin) { + sin = new ControlInterface(); + s_instance.store(sin); + } + } + + return sin; + } + + /** + * @brief disableOutDevice 禁用设备 + * @param devInfo 设备信息 + * @return + */ + void disableOutDevice(const QString &devInfo); + /** + * @brief disableOutDevice 禁用设备 + * @return + */ + void disableInDevice(); + /** + * @brief updateWakeup 更新唤醒 + * @param devInfo 设备信息 + * @return + */ + void updateWakeup(const QString &devInfo); + /** + * @brief seMonitorWorkingFlag 在数据库里设置设备是否监控 + * @param flag 是否监控标志 + * @return + */ + void setMonitorWorkingDBFlag(bool flag); + /** + * @brief monitorWorkingBDFlag 设备是否监控 + * @return 是否监控标志 + */ + bool monitorWorkingDBFlag(); + +signals: + void sigFinished(bool bsuccess, QString msg); + void sigUpdate(); + +protected: + ControlInterface(); + +private: + /** + * @brief init:初始化DBus + */ + void init(); + +private: + static std::atomic s_instance; + static std::mutex m_mutex; + + QDBusInterface *m_iface; +}; + +#endif // CONTROLINTERFACE_H diff --git a/deepin-devicemanager-server/src/DebugTimeManager.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/debugtimemanager.cpp similarity index 73% rename from deepin-devicemanager-server/src/DebugTimeManager.cpp rename to deepin-devicemanager-server/deepin-deviceinfo/src/debugtimemanager.cpp index d0d55480e..5979f9c3a 100644 --- a/deepin-devicemanager-server/src/DebugTimeManager.cpp +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/debugtimemanager.cpp @@ -1,14 +1,17 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "DebugTimeManager.h" +#include "debugtimemanager.h" +#include "DDLog.h" #include -#include +#include #include +using namespace DDLog; + DebugTimeManager *DebugTimeManager::s_Instance = nullptr; DebugTimeManager::DebugTimeManager() @@ -33,7 +36,7 @@ void DebugTimeManager::endPointQt(const QString &point) { if (m_MapPoint.find(point) != m_MapPoint.end()) { m_MapPoint[point].time = QDateTime::currentMSecsSinceEpoch() - m_MapPoint[point].time; - qInfo() << QString("[GRABPOINT] %1 %2 time=%3ms").arg(point).arg(m_MapPoint[point].desc).arg(m_MapPoint[point].time); + qCInfo(appLog) << QString("[GRABPOINT] %1 %2 time=%3ms").arg(point).arg(m_MapPoint[point].desc).arg(m_MapPoint[point].time); } } @@ -54,6 +57,6 @@ void DebugTimeManager::endPointLinux(const QString &point) struct timeval tv; gettimeofday(&tv, nullptr); m_MapPoint[point].time = tv.tv_sec * 1000 + tv.tv_usec / 1000 - m_MapPoint[point].time; - qInfo() << QString("[GRABPOINT] %1 %2 time=%3ms").arg(point).arg(m_MapPoint[point].desc).arg(m_MapPoint[point].time); + qCInfo(appLog) << QString("[GRABPOINT] %1 %2 time=%3ms").arg(point).arg(m_MapPoint[point].desc).arg(m_MapPoint[point].time); } } diff --git a/deepin-devicemanager-server/src/DebugTimeManager.h b/deepin-devicemanager-server/deepin-deviceinfo/src/debugtimemanager.h similarity index 96% rename from deepin-devicemanager-server/src/DebugTimeManager.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/debugtimemanager.h index 6ac184a3a..be08eedb5 100644 --- a/deepin-devicemanager-server/src/DebugTimeManager.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/debugtimemanager.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/src/HotPlug/DetectThread.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/detectthread.cpp similarity index 90% rename from deepin-devicemanager-server/src/HotPlug/DetectThread.cpp rename to deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/detectthread.cpp index a01f055eb..353df3ee7 100644 --- a/deepin-devicemanager-server/src/HotPlug/DetectThread.cpp +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/detectthread.cpp @@ -1,16 +1,19 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "DetectThread.h" -#include "MonitorUsb.h" +#include "detectthread.h" +#include "monitorusb.h" +#include "DDLog.h" -#include +#include #include #include #define LEAST_NUM 10 +using namespace DDLog; + DetectThread::DetectThread(QObject *parent) : QThread(parent) , mp_MonitorUsb(new MonitorUsb()) @@ -30,6 +33,14 @@ void DetectThread::run() } } +void DetectThread::setWorkingFlag(bool flag) +{ + mp_MonitorUsb->setWorkingFlag(flag); + if (flag && !isRunning()) { + start(); + } +} + void DetectThread::slotUsbChanged() { // 当监听到新的usb时,内核需要加载usb信息,而上层应用需要在内核处理之后获取信息 @@ -42,7 +53,7 @@ void DetectThread::slotUsbChanged() sleep(1); end = QDateTime::currentMSecsSinceEpoch(); } - qInfo() << " 此次判断插拔是否完成的时间为 ************ " << QDateTime::currentMSecsSinceEpoch() - begin; + qCInfo(appLog) << " 此次判断插拔是否完成的时间为 ************ " << QDateTime::currentMSecsSinceEpoch() - begin; emit usbChanged(); } diff --git a/deepin-devicemanager-server/src/HotPlug/DetectThread.h b/deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/detectthread.h similarity index 69% rename from deepin-devicemanager-server/src/HotPlug/DetectThread.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/detectthread.h index 2ba680bb7..c5424d13f 100644 --- a/deepin-devicemanager-server/src/HotPlug/DetectThread.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/detectthread.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -26,6 +25,11 @@ class DetectThread : public QThread */ void run() override; + /** + * @brief setWorkingFlag 设置工作状态 + */ + void setWorkingFlag(bool flag); + signals: /** * @brief usbChanged @@ -49,13 +53,13 @@ private slots: * @brief updateMemUsbInfo 更新 * @param usbInfo */ - void updateMemUsbInfo(const QMap>& usbInfo); + void updateMemUsbInfo(const QMap> &usbInfo); /** * @brief curHwinfoUsbInfo 获取当前的usb信息 * @param usbInfo */ - void curHwinfoUsbInfo(QMap>& usbInfo); + void curHwinfoUsbInfo(QMap> &usbInfo); /** * @brief getMapInfo 解析usb信息 @@ -63,11 +67,11 @@ private slots: * @param mapInfo * @return */ - bool getMapInfo(const QString& item,QMap& mapInfo); + bool getMapInfo(const QString &item, QMap &mapInfo); private: MonitorUsb *mp_MonitorUsb; //> m_MapUsbInfo; //> m_MapUsbInfo; // +#include #include #include #include @@ -17,6 +16,7 @@ MonitorUsb::MonitorUsb() , mp_Timer(new QTimer(this)) , m_UsbChangeTime() , m_UsbChanged(false) + , m_workingFlag(true) { m_Udev = udev_new(); if (!m_Udev) { @@ -43,10 +43,12 @@ void MonitorUsb::monitor() fd_set fds; struct timeval tv; while (true) { + if (!m_workingFlag) + break; FD_ZERO(&fds); FD_SET(fd, &fds); - tv.tv_sec = 0; - tv.tv_usec = 10000; + tv.tv_sec = 1; + tv.tv_usec = 0; int ret = select(fd + 1, &fds, nullptr, nullptr, &tv); // 判断是否有事件产生 @@ -61,7 +63,7 @@ void MonitorUsb::monitor() continue; // 监测蓝牙设备 - if (0 == strcmp(udev_device_get_devtype(dev), "link")) { + if (0 == strcmp(udev_device_get_devtype(dev), "link") && m_workingFlag) { emit usbChanged(); continue; } @@ -75,15 +77,15 @@ void MonitorUsb::monitor() // 只有add和remove事件才会更新缓存信息 strcpy(buf, udev_device_get_action(dev)); - if (0 == strcmp("add", buf) || 0 == strcmp("remove", buf)) { + if ((0 == strcmp("add", buf) || 0 == strcmp("remove", buf)) && m_workingFlag) { QProcess process; process.start("hwinfo --usb"); process.waitForFinished(-1); QString info = process.readAllStandardOutput(); - if(0 == strcmp("add", buf)){ - EnableUtils::disableOutDevice(info); + if (0 == strcmp("add", buf)) { + ControlInterface::getInstance()->disableOutDevice(info); } - WakeupUtils::updateWakeupDeviceInfo(info); + ControlInterface::getInstance()->updateWakeup(info); m_UsbChanged = true; m_UsbChangeTime = QDateTime::currentMSecsSinceEpoch(); } @@ -92,11 +94,16 @@ void MonitorUsb::monitor() } } +void MonitorUsb::setWorkingFlag(bool flag) +{ + m_workingFlag = flag; +} + void MonitorUsb::slotTimeout() { - if(!m_UsbChanged) + if (!m_UsbChanged || !m_workingFlag) return; - if(QDateTime::currentMSecsSinceEpoch() - m_UsbChangeTime < 1000) + if (QDateTime::currentMSecsSinceEpoch() - m_UsbChangeTime < 1000) return; m_UsbChanged = false; emit usbChanged(); diff --git a/deepin-devicemanager-server/src/HotPlug/MonitorUsb.h b/deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/monitorusb.h similarity index 79% rename from deepin-devicemanager-server/src/HotPlug/MonitorUsb.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/monitorusb.h index 0013d5994..d1ceeb758 100644 --- a/deepin-devicemanager-server/src/HotPlug/MonitorUsb.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/hotplug/monitorusb.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -22,6 +22,10 @@ class MonitorUsb : public QObject * @brief monitor */ void monitor(); + /** + * @brief setWorkingFlag 设置工作状态 + */ + void setWorkingFlag(bool flag); signals: /** @@ -36,13 +40,13 @@ private slots: void slotTimeout(); private: + bool m_workingFlag; // +#include + +using namespace DDLog; CoreCpu::CoreCpu() : m_CoreId(-1) @@ -59,6 +62,7 @@ void CoreCpu::getInfo(QString &info) appendKeyValue(info, "L1i cache", logical.l1iCache()); appendKeyValue(info, "L2 cache", logical.l2Cache()); appendKeyValue(info, "L3 cache", logical.l3Cache()); + appendKeyValue(info, "L4 cache", logical.l4Cache()); appendKeyValue(info, "CPU MHz", logical.curFreq()); appendKeyValue(info, "CPU max MHz", logical.maxFreq()); appendKeyValue(info, "CPU min MHz", logical.minFreq()); @@ -102,9 +106,9 @@ int CoreCpu::logicalNum() } void CoreCpu::diagPrintInfo() { - qInfo() << "CoreCpu m_CoreId: ***************** " << m_CoreId; + qCInfo(appLog) << "CoreCpu m_CoreId: ***************** " << m_CoreId; foreach (int id, m_MapLogicalCpu.keys()) { - qInfo() << "m_MapPhysicalCpu id: ***************** " << id; + qCInfo(appLog) << "m_MapPhysicalCpu id: ***************** " << id; LogicalCpu &lc = m_MapLogicalCpu[id]; lc.diagPrintInfo(); } diff --git a/deepin-devicemanager-server/src/LoadInfo/cpu/CoreCpu.h b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/corecpu.h similarity index 90% rename from deepin-devicemanager-server/src/LoadInfo/cpu/CoreCpu.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/corecpu.h index cd710fcb8..c9ead8d6a 100644 --- a/deepin-devicemanager-server/src/LoadInfo/cpu/CoreCpu.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/corecpu.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/src/LoadInfo/cpu/CpuInfo.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/cpuinfo.cpp similarity index 97% rename from deepin-devicemanager-server/src/LoadInfo/cpu/CpuInfo.cpp rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/cpuinfo.cpp index 4c9fd205f..82dcdefda 100644 --- a/deepin-devicemanager-server/src/LoadInfo/cpu/CpuInfo.cpp +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/cpuinfo.cpp @@ -1,15 +1,18 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "CpuInfo.h" +#include "cpuinfo.h" +#include "DDLog.h" #include #include -#include +#include #include +using namespace DDLog; + CpuInfo::CpuInfo() : m_Arch("unknow") { @@ -365,6 +368,8 @@ void CpuInfo::readCpuCacheIndex(const QString &path, LogicalCpu &lcpu) lcpu.setL2Cache(value); } else if (level == 3) { lcpu.setL3Cache(value); + } else if (level == 4) { + lcpu.setL4Cache(value); } else if (level == 1) { if (type.contains("Data", Qt::CaseInsensitive)) lcpu.setL1dCache(value); @@ -409,7 +414,7 @@ void CpuInfo::readCpuFreq(const QString &path, LogicalCpu &lcpu) void CpuInfo::diagPrintInfo() { foreach (int id, m_MapPhysicalCpu.keys()) { - qInfo() << "m_MapPhysicalCpu id: ***************** " << id; + qCInfo(appLog) << "m_MapPhysicalCpu id: ***************** " << id; PhysicalCpu &pc = m_MapPhysicalCpu[id]; pc.diagPrintInfo(); } diff --git a/deepin-devicemanager-server/src/LoadInfo/cpu/CpuInfo.h b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/cpuinfo.h similarity index 93% rename from deepin-devicemanager-server/src/LoadInfo/cpu/CpuInfo.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/cpuinfo.h index 1b2d563a4..947c69b29 100644 --- a/deepin-devicemanager-server/src/LoadInfo/cpu/CpuInfo.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/cpuinfo.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -9,9 +8,9 @@ #include #include -#include "PhysicalCpu.h" -#include "CoreCpu.h" -#include "LogicalCpu.h" +#include "physicalcpu.h" +#include "corecpu.h" +#include "logicalcpu.h" class CpuInfo { diff --git a/deepin-devicemanager-server/src/LoadInfo/cpu/LogicalCpu.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/logicalcpu.cpp similarity index 69% rename from deepin-devicemanager-server/src/LoadInfo/cpu/LogicalCpu.cpp rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/logicalcpu.cpp index 69d44922c..34bce15f7 100644 --- a/deepin-devicemanager-server/src/LoadInfo/cpu/LogicalCpu.cpp +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/logicalcpu.cpp @@ -1,9 +1,13 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "LogicalCpu.h" -#include +#include "logicalcpu.h" +#include "DDLog.h" + +#include + +using namespace DDLog; LogicalCpu::LogicalCpu() : d_ptr(new LogicalCpuPrivate(this)) @@ -45,6 +49,11 @@ void LogicalCpu::setL3Cache(const QString &value) Q_D(LogicalCpu); d->l3_cache = value; } +void LogicalCpu::setL4Cache(const QString &value) +{ + Q_D(LogicalCpu); + d->l4_cache = value; +} void LogicalCpu::setMinFreq(const QString &value) { Q_D(LogicalCpu); @@ -96,7 +105,7 @@ void LogicalCpu::setBogomips(const QString &value) d->bogoMips = value; } -void LogicalCpu::setArch(const QString& value) +void LogicalCpu::setArch(const QString &value) { Q_D(LogicalCpu); d->arch = value; @@ -137,6 +146,11 @@ const QString &LogicalCpu::l3Cache() Q_D(LogicalCpu); return d->l3_cache; } +const QString &LogicalCpu::l4Cache() +{ + Q_D(LogicalCpu); + return d->l4_cache; +} const QString &LogicalCpu::minFreq() { Q_D(LogicalCpu); @@ -196,24 +210,25 @@ const QString &LogicalCpu::arch() void LogicalCpu::diagPrintInfo() { Q_D(LogicalCpu); - qInfo() << "LogicalCpu ***************** "; - qInfo() << "logicalID : " << d->logicalID; - qInfo() << "coreID : " << d->coreID; - qInfo() << "physicalID : " << d->physicalID; - qInfo() << "l1d_cache : " << d->l1d_cache; - qInfo() << "l1i_cache : " << d->l1i_cache; - qInfo() << "l2_cache : " << d->l2_cache; - qInfo() << "l3_cache : " << d->l3_cache; - qInfo() << "max_freq : " << d->max_freq; - qInfo() << "min_freq : " << d->min_freq; - qInfo() << "cur_freq : " << d->cur_freq; - qInfo() << "model : " << d->model; - qInfo() << "modelName : " << d->modelName; - qInfo() << "setpping : " << d->setpping; - qInfo() << "vendor : " << d->vendor; - qInfo() << "cpuFamily : " << d->cpuFamily; - qInfo() << "flags : " << d->flags; - qInfo() << "bogoMips : " << d->bogoMips; - qInfo() << "arch : " << d->arch; + qCInfo(appLog) << "LogicalCpu ***************** "; + qCInfo(appLog) << "logicalID : " << d->logicalID; + qCInfo(appLog) << "coreID : " << d->coreID; + qCInfo(appLog) << "physicalID : " << d->physicalID; + qCInfo(appLog) << "l1d_cache : " << d->l1d_cache; + qCInfo(appLog) << "l1i_cache : " << d->l1i_cache; + qCInfo(appLog) << "l2_cache : " << d->l2_cache; + qCInfo(appLog) << "l3_cache : " << d->l3_cache; + qCInfo(appLog) << "l4_cache : " << d->l4_cache; + qCInfo(appLog) << "max_freq : " << d->max_freq; + qCInfo(appLog) << "min_freq : " << d->min_freq; + qCInfo(appLog) << "cur_freq : " << d->cur_freq; + qCInfo(appLog) << "model : " << d->model; + qCInfo(appLog) << "modelName : " << d->modelName; + qCInfo(appLog) << "setpping : " << d->setpping; + qCInfo(appLog) << "vendor : " << d->vendor; + qCInfo(appLog) << "cpuFamily : " << d->cpuFamily; + qCInfo(appLog) << "flags : " << d->flags; + qCInfo(appLog) << "bogoMips : " << d->bogoMips; + qCInfo(appLog) << "arch : " << d->arch; return; } diff --git a/deepin-devicemanager-server/src/LoadInfo/cpu/LogicalCpu.h b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/logicalcpu.h similarity index 93% rename from deepin-devicemanager-server/src/LoadInfo/cpu/LogicalCpu.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/logicalcpu.h index 184e1fadd..721339764 100644 --- a/deepin-devicemanager-server/src/LoadInfo/cpu/LogicalCpu.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/logicalcpu.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -56,6 +55,12 @@ class LogicalCpu */ void setL3Cache(const QString &value); + /** + * @brief setL4Cache : set l4 cache + * @param value cache + */ + void setL4Cache(const QString &value); + /** * @brief setMinFreq : set min freq * @param value : freq @@ -125,7 +130,7 @@ class LogicalCpu * @brief setArch * @param value */ - void setArch(const QString& value); + void setArch(const QString &value); /** * @brief physicalID @@ -169,6 +174,12 @@ class LogicalCpu */ const QString &l3Cache(); + /** + * @brief l4Cache + * @return : value + */ + const QString &l4Cache(); + /** * @brief minFreq * @return : value @@ -254,6 +265,7 @@ class LogicalCpuPrivate , l1i_cache("") , l2_cache("") , l3_cache("") + , l4_cache("") , max_freq("") , min_freq("") , cur_freq("") @@ -276,6 +288,7 @@ class LogicalCpuPrivate QString l1i_cache; // l1i cache QString l2_cache; // l2 cache QString l3_cache; // l3 cache + QString l4_cache; // l4 cache QString max_freq; // max freq QString min_freq; // min freq QString cur_freq; // cur freq diff --git a/deepin-devicemanager-server/src/LoadInfo/cpu/PhysicalCpu.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/physicalcpu.cpp similarity index 83% rename from deepin-devicemanager-server/src/LoadInfo/cpu/PhysicalCpu.cpp rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/physicalcpu.cpp index 81139bc50..d9a3f772a 100644 --- a/deepin-devicemanager-server/src/LoadInfo/cpu/PhysicalCpu.cpp +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/physicalcpu.cpp @@ -1,12 +1,15 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "PhysicalCpu.h" -#include "CoreCpu.h" -#include "LogicalCpu.h" +#include "physicalcpu.h" +#include "corecpu.h" +#include "logicalcpu.h" +#include "DDLog.h" -#include +#include + +using namespace DDLog; PhysicalCpu::PhysicalCpu() : m_PhysicalCpu(-1) @@ -91,9 +94,9 @@ int PhysicalCpu::logicalNum() } void PhysicalCpu::diagPrintInfo() { - qInfo() << "PhysicalCpu m_PhysicalCpu: ***************** " << m_PhysicalCpu; + qCInfo(appLog) << "PhysicalCpu m_PhysicalCpu: ***************** " << m_PhysicalCpu; foreach (int id, m_MapCoreCpu.keys()) { - qInfo() << "CoreCpu id: ***************** " << id; + qCInfo(appLog) << "CoreCpu id: ***************** " << id; CoreCpu &cc = m_MapCoreCpu[id]; cc.diagPrintInfo(); } diff --git a/deepin-devicemanager-server/src/LoadInfo/cpu/PhysicalCpu.h b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/physicalcpu.h similarity index 90% rename from deepin-devicemanager-server/src/LoadInfo/cpu/PhysicalCpu.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/physicalcpu.h index 1da7a96c3..acd85c5b7 100644 --- a/deepin-devicemanager-server/src/LoadInfo/cpu/PhysicalCpu.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/cpu/physicalcpu.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/src/LoadInfo/DeviceInfoManager.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinfomanager.cpp similarity index 80% rename from deepin-devicemanager-server/src/LoadInfo/DeviceInfoManager.cpp rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinfomanager.cpp index 336abfd29..392fe3ebf 100644 --- a/deepin-devicemanager-server/src/LoadInfo/DeviceInfoManager.cpp +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinfomanager.cpp @@ -1,11 +1,11 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "DeviceInfoManager.h" +#include "deviceinfomanager.h" #include -#include +#include QMutex mutex; std::atomic DeviceInfoManager::s_Instance; @@ -46,9 +46,9 @@ bool DeviceInfoManager::isInfoExisted(const QString &key) bool DeviceInfoManager::isPathExisted(const QString &path) { QMutexLocker locker(&mutex); - const QString& hwinfo = m_MapInfo["hwinfo"]; + const QString &hwinfo = m_MapInfo["hwinfo"]; QString pathT = path; - if(hwinfo.contains(pathT.replace("/sys",""))){ + if (hwinfo.contains(pathT.replace("/sys", ""))) { return true; } return false; diff --git a/deepin-devicemanager-server/src/LoadInfo/DeviceInfoManager.h b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinfomanager.h similarity index 91% rename from deepin-devicemanager-server/src/LoadInfo/DeviceInfoManager.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinfomanager.h index db049f3c2..53866391f 100644 --- a/deepin-devicemanager-server/src/LoadInfo/DeviceInfoManager.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinfomanager.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinterface.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinterface.cpp new file mode 100644 index 000000000..89d975ecf --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinterface.cpp @@ -0,0 +1,87 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "deviceinterface.h" +#include "deviceinfomanager.h" +#include "mainjob.h" + +#include +#include +#include +#include +#include + +using namespace PolkitQt1; +bool DeviceInterface::getUserAuthorPasswd() +{ +#ifdef DISABLE_POLKIT + return true; +#endif + Authority::Result result = Authority::instance()->checkAuthorizationSync("com.deepin.deepin-devicemanager.checkAuthentication", + SystemBusNameSubject(message().service()), + Authority::AllowUserInteraction); + return result == Authority::Yes; +} + +DeviceInterface::DeviceInterface(const char *name, QObject *parent) + : QObject(parent) +{ + QDBusConnection::RegisterOptions opts = + QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllSignals | QDBusConnection::ExportAllProperties; + + QDBusConnection::connectToBus(QDBusConnection::SystemBus, QString(name)) + .registerObject("/org/deepin/DeviceInfo", this, opts); +} + +QString DeviceInterface::getInfo(const QString &key) +{ + // 不能返回用常引用 + if ("is_server_running" != key) { + return DeviceInfoManager::getInstance()->getInfo(key); + } + if (MainJob::serverIsRunning()) { + return "1"; + } + return "0"; +} + +void DeviceInterface::refreshInfo() +{ + emit sigUpdate(); +} + +void DeviceInterface::setMonitorDeviceFlag(bool flag) +{ + MainJob *parentMainJob = dynamic_cast(parent()); + if (parentMainJob != nullptr) { + parentMainJob->setWorkingFlag(flag); + } +} + +QString DeviceInterface::getGpuInfoByCustom(const QString &cmd, const QStringList &arguments) +{ + static bool firstFlag = true; + static QString gpuinfo; + if (firstFlag) { + firstFlag = false; + + QProcess process; + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + if (arguments.size() > 1) { + env.insert("DISPLAY", arguments[0]); + env.insert("XAUTHORITY", arguments[1]); + } + process.setProcessEnvironment(env); + process.start(cmd, arguments); + if (!process.waitForFinished(4000)) { + qCritical() << QString("Error executing %1 :").arg(cmd) << process.errorString(); + return gpuinfo; + } + + if (process.exitCode() == 0) + gpuinfo = QString::fromLocal8Bit(process.readAllStandardOutput()); + } + + return gpuinfo; +} diff --git a/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinterface.h b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinterface.h new file mode 100644 index 000000000..01c656107 --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/deviceinterface.h @@ -0,0 +1,48 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DEVICEINTERFACE_H +#define DEVICEINTERFACE_H + +#include +#include + +class DeviceInterface : public QObject, protected QDBusContext +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.deepin.DeviceInfo") + +public: + explicit DeviceInterface(const char *name, QObject *parent = nullptr); + +signals: + void sigUpdate(); + +public slots: + /** + * @brief getInfo : Obtain hardware information through the DBus + * @param key + * @return : Hardware info + */ + Q_SCRIPTABLE QString getInfo(const QString &key); + + /** + * @brief refreshInfo + * @return + */ + Q_SCRIPTABLE void refreshInfo(); + + /** + * @brief setMonitorDeviceFlag + * @return + */ + Q_SCRIPTABLE void setMonitorDeviceFlag(bool flag); + + Q_SCRIPTABLE QString getGpuInfoByCustom(const QString &cmd, const QStringList &arguments); + +private: + bool getUserAuthorPasswd(); +}; + +#endif // DEVICEINTERFACE_H diff --git a/deepin-devicemanager-server/src/LoadInfo/ThreadPool.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpool.cpp similarity index 89% rename from deepin-devicemanager-server/src/LoadInfo/ThreadPool.cpp rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpool.cpp index c66e3e872..25bc5c2a8 100644 --- a/deepin-devicemanager-server/src/LoadInfo/ThreadPool.cpp +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpool.cpp @@ -1,16 +1,16 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "ThreadPool.h" -#include "ThreadPoolTask.h" -#include "DeviceInfoManager.h" +#include "threadpool.h" +#include "threadpooltask.h" +#include "deviceinfomanager.h" #include #include #include #include -#include +#include ThreadPool::ThreadPool(QObject *parent) : QThreadPool(parent) @@ -69,11 +69,17 @@ void ThreadPool::runCmdToCache(const Cmd &cmd) // 2. 执行命令获取设备信息 QString info; + QString cmdExec = cmd.cmd.left(cmd.cmd.indexOf('>')).trimmed(); + QString cmdStr = cmdExec.split(' ').first().trimmed(); + QString cmdArg = cmdExec.mid(cmdStr.count() + 1).trimmed(); + QStringList args; + if (!cmdArg.isEmpty()) + args = cmdArg.split(' '); + if (cmdStr.isEmpty()) + return; + QProcess process; - QString cmdT = cmd.cmd; - QStringList options; - options << "-c" << cmdT.replace(QString(" > ") + PATH + cmd.file, ""); - process.start("/bin/bash", options); + process.start(cmdStr, args); process.waitForFinished(-1); info = process.readAllStandardOutput(); DeviceInfoManager::getInstance()->addInfo(key, info); @@ -238,4 +244,11 @@ void ThreadPool::initCmd() cmdHwinfo.canNotReplace = false; m_ListCmd.append(cmdHwinfo); m_ListUpdate.append(cmdHwinfo); + + Cmd cmdHwinfoMonitor; //hwinfo --framebuffer --monitor + cmdHwinfoMonitor.cmd = QString("%1 %2%3").arg("hwinfo --framebuffer --monitor > ").arg(PATH).arg("hwinfo_monitor.txt"); + cmdHwinfoMonitor.file = "hwinfo_monitor.txt"; + cmdHwinfoMonitor.canNotReplace = false; + m_ListCmd.append(cmdHwinfoMonitor); + m_ListUpdate.append(cmdHwinfoMonitor); } diff --git a/deepin-devicemanager-server/src/LoadInfo/ThreadPool.h b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpool.h similarity index 83% rename from deepin-devicemanager-server/src/LoadInfo/ThreadPool.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpool.h index 75f4ec2fc..20a66dede 100644 --- a/deepin-devicemanager-server/src/LoadInfo/ThreadPool.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpool.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -15,7 +14,7 @@ * @brief The Cmd struct */ struct Cmd { - Cmd():cmd(""),file(""),canNotReplace(false),waitingTime(-1) + Cmd(): cmd(""), file(""), canNotReplace(false), waitingTime(-1) {} QString cmd; // #include #include -#include +#include #include #include -#include "DeviceInfoManager.h" -#include "cpu/CpuInfo.h" - ThreadPoolTask::ThreadPoolTask(QString cmd, QString file, bool replace, int waiting, QObject *parent) : QObject(parent), m_Cmd(cmd), @@ -40,25 +41,115 @@ void ThreadPoolTask::run() void ThreadPoolTask::runCmd(const QString &cmd) { + QString outPath = cmd.split('>').last().trimmed(); + QString cmdExec = cmd.left(cmd.indexOf('>')).trimmed(); + QString cmdStr = cmd.split(' ').first().trimmed(); + QString cmdArg = cmdExec.mid(cmdStr.count() + 1).trimmed(); + QStringList args; + if (!cmdArg.isEmpty()) + args = cmdArg.split(' '); + + if (cmdStr.isEmpty()) + return; + QProcess process; - QStringList options; - options << "-c" << cmd; - process.start("/bin/bash", options); - process.waitForFinished(m_Waiting); + if (!outPath.isEmpty()) + process.setStandardOutputFile(outPath, QIODevice::WriteOnly); + process.start(cmdStr, args); + process.waitForFinished(-1); } void ThreadPoolTask::runCmd(const QString &cmd, QString &info) { - QProcess process; - QString cmdT = cmd; -// process.start(cmdT.replace(QString(" > ") + PATH + m_File, "")); + QString cmdExec = cmd.left(cmd.indexOf('>')).trimmed(); + QString cmdStr = cmdExec.split(' ').first().trimmed(); + QString cmdArg = cmdExec.mid(cmdStr.count() + 1).trimmed(); + QStringList args; + if (!cmdArg.isEmpty()) + args = cmdArg.split(' '); + if (cmdStr.isEmpty()) + return; - QStringList options; - options << "-c" << cmdT.replace(QString(" > ") + PATH + m_File, ""); - process.start("/bin/bash", options); + // 处理包含*的命令参数 + if (cmd.startsWith("ls /dev/sg*")) { + info = runAsteriskCmd(cmdStr, args.first().trimmed()); + return; + } else if (cmdExec.startsWith("cat /boot/config*")) { + QString filter = cmdExec.split('|').last().split(' ').last().replace('\'', ""); + if (filter.isEmpty()) + return; + QString outPut = runAsteriskCmd("ls", "/boot/config*"); + if (outPut.isEmpty()) + return; + QStringList paths = outPut.split('\n'); + QStringList results; + for (auto path : paths) { + if (path.isEmpty()) + continue; + QProcess proc; + proc.start("cat", QStringList() << path); + proc.waitForFinished(); + QString info1; + if (proc.exitStatus() == QProcess::NormalExit && proc.exitCode() == 0) + info1 = proc.readAllStandardOutput(); + if (info1.isEmpty()) + continue; + QStringList lines = info1.split('\n'); + for (auto line : lines) { + if (line.contains(filter)) + results.push_back(line); + } + } + + if (!results.isEmpty()) + info = results.join('\n'); + //qCInfo(deviceInfoLog) << "runcmdExec:" << cmdExec << "args:" << args << "outPut:" << info; + return; + } + QProcess process; + process.start(cmdStr, args); process.waitForFinished(m_Waiting); info = process.readAllStandardOutput(); + + //qCInfo(deviceInfoLog) << "runcmdExec:" << cmdExec << "args:" << args << "outPut:" << info; +} + +QString ThreadPoolTask::runAsteriskCmd(const QString &cmd, const QString &arg) +{ + QString info = ""; + if (cmd.isEmpty()) + return info; + + QStringList args; + QString path; + QString startWord; + if (arg == "/dev/sg*" || arg == "/boot/config*") { + path = arg.left(arg.lastIndexOf('/')); + args << path; + startWord = arg.split('/').last().replace('*', ""); + } else { + return info; + } + + QProcess process; + process.start(cmd, args); + process.waitForFinished(-1); + + QString outPut = process.readAllStandardOutput(); + QStringList outPutLines = outPut.trimmed().split('\n'); + QStringList filterLines; + for (auto line : outPutLines) { + if (line.startsWith(startWord)) + filterLines.push_back(path + "/" +line +"\n"); + } + + if (!filterLines.isEmpty()) + info = filterLines.join(' '); + + //qCInfo(deviceInfoLog) << "runAsteriskCmd:" << cmd << "arg:" << arg << "info:" << info; + + return info; } void ThreadPoolTask::runCmdToCache(const QString &cmd) @@ -112,7 +203,7 @@ void ThreadPoolTask::loadSmartCtlInfoToCache(const QString &info) QString sInfo; runCmd(smartCmd, sInfo); // 在使用smartctl的时候会出现对 /dev/sda 出现判断错误的情况,此时可以对/dev/sda1进行处理 - if(sInfo.contains("Read Device Identity failed:")){ + if (sInfo.contains("Read Device Identity failed:")) { smartCmd = smartCmd + "1"; runCmd(smartCmd, sInfo); } diff --git a/deepin-devicemanager-server/src/LoadInfo/ThreadPoolTask.h b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpooltask.h similarity index 90% rename from deepin-devicemanager-server/src/LoadInfo/ThreadPoolTask.h rename to deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpooltask.h index 5f22bc6ed..b925db425 100644 --- a/deepin-devicemanager-server/src/LoadInfo/ThreadPoolTask.h +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/loadinfo/threadpooltask.h @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -46,6 +45,14 @@ class ThreadPoolTask : public QObject, public QRunnable */ void runCmd(const QString &cmd, QString &info); + /** + * @brief runAsteriskCmd + * @param cmd + * @param arg + * @return info + */ + QString runAsteriskCmd(const QString &cmd, const QString &arg); + /** * @brief runCmdToCache * @param cmd diff --git a/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.cpp b/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.cpp new file mode 100644 index 000000000..ea7f8d41a --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.cpp @@ -0,0 +1,189 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "mainjob.h" +#include "deviceinterface.h" +#include "debugtimemanager.h" +#include "threadpool.h" +#include "detectthread.h" +#include "controlinterface.h" +#include "DDLog.h" + +#include +#include +#include +#include +#include +#include + +#include + +using namespace DDLog; + +static QMutex mainJobMutex; +static bool s_ServerIsUpdating = false; +static bool s_ClientIsUpdating = false; +const QString DEVICE_REPO_PATH = "/etc/apt/sources.list.d/devicemanager.list"; +const QString DRIVER_REPO_PATH = "/etc/apt/sources.list.d/driver.list"; + +MainJob::MainJob(const char *name, QObject *parent) + : QObject(parent) + , m_pool(new ThreadPool) + , m_firstUpdate(true) +{ + m_deviceInterface = new DeviceInterface(name, this); + // 守护进程启动的时候加载所有信息 + updateAllDevice(); + + // 启动线程监听USB是否有新的设备 + mp_DetectThread = new DetectThread(this); + mp_DetectThread->setWorkingFlag(ControlInterface::getInstance()->monitorWorkingDBFlag()); + connect(mp_DetectThread, &DetectThread::usbChanged, this, &MainJob::slotUsbChanged, Qt::ConnectionType::QueuedConnection); + + // 在驱动管理延迟加载1000ms + QTimer::singleShot(1000, this, [ = ]() { +#ifndef DISABLE_DRIVER + DTK_CORE_NAMESPACE::DSysInfo::UosEdition type = DTK_CORE_NAMESPACE::DSysInfo::uosEditionType(); + if (DTK_CORE_NAMESPACE::DSysInfo::UosCommunity != type ) { + initDriverRepoSource(); + } +#endif + + sqlCopytoKernel(); + + connect(m_deviceInterface, &DeviceInterface::sigUpdate, this, &MainJob::slotUsbChanged); + connect(ControlInterface::getInstance(), &ControlInterface::sigUpdate, this, &MainJob::slotUsbChanged); +#ifndef DISABLE_DRIVER + connect(ControlInterface::getInstance(), &ControlInterface::sigFinished, this, &MainJob::slotDriverControl); +#endif + }); + + QDBusConnection::systemBus().connect("org.freedesktop.login1", "/org/freedesktop/login1", "org.freedesktop.login1.Manager", "PrepareForSleep", //"System has woken up from sleep (S3)" Signal + this, SLOT(slotWakeupHandle(bool)) + ); +} + +void MainJob::sqlCopytoKernel() +{ + ControlInterface::getInstance()->disableInDevice(); + // 后台加载后先禁用设备 内核参数持久化 + QProcess process; + QStringList options; + options << "--netcard" << "--keyboard" << "--mouse" << "--usb"; + process.start("hwinfo", options); + process.waitForFinished(-1); + QString info = process.readAllStandardOutput(); + process.close(); + // init from sql db + ControlInterface::getInstance()->disableOutDevice(info); + ControlInterface::getInstance()->updateWakeup(info); +} + +void MainJob::slotWakeupHandle(bool isSleep) +{ + QTimer::singleShot(1500, this, [ = ]() { + qCInfo(appLog) << "Signal: login1.Manager.PrepareForSleep:" << isSleep; + if (isSleep) + return; + + QProcess process; //先唤醒DBUS + QString command = "gdbus call --system --dest org.deepin.DeviceControl --object-path /org/deepin/DeviceControl --method org.deepin.DeviceControl.disableInDevice"; + process.start(command); + process.waitForFinished(1000); + + //有的硬件唤醒起来也需要延时 + QTimer::singleShot(2000, this, [ = ]() { + sqlCopytoKernel(); + }); + }); +} + +bool MainJob::serverIsRunning() +{ + return s_ServerIsUpdating; +} + +bool MainJob::clientIsRunning() +{ + return s_ClientIsUpdating; +} + +void MainJob::setWorkingFlag(bool flag) +{ + mp_DetectThread->setWorkingFlag(flag); + ControlInterface::getInstance()->setMonitorWorkingDBFlag(flag); +} + +void MainJob::slotUsbChanged() +{ + executeClientInstruction("DETECT"); +} + +void MainJob::slotDriverControl(bool success) +{ + if (success) + executeClientInstruction("DETECT"); +} + +void MainJob::initDriverRepoSource() +{ + QFile fileDriver(DRIVER_REPO_PATH); + if (fileDriver.open(QIODevice::ReadOnly)) { + QString info = fileDriver.readAll(); + QStringList lines = info.split("\n"); + foreach (QString line, lines) { + if (line.contains("pro-driver-packages")) { + fileDriver.close(); + return; + } + } + fileDriver.close(); + } + + QFile file(DEVICE_REPO_PATH); + if (QFile::exists(DEVICE_REPO_PATH)) { + return; + } + if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) { + qCInfo(appLog) << file.errorString(); + return; + } + + file.write("deb https://pro-driver-packages.uniontech.com eagle non-free\n"); + file.close(); + + QString cmd = "apt update"; + QProcess process; + process.start(cmd); + process.waitForFinished(-1); +} + +void MainJob::updateAllDevice() +{ + PERF_PRINT_BEGIN("POINT-01", "MainJob::updateAllDevice()"); + if (m_firstUpdate) + m_pool->loadDeviceInfo(); + else + m_pool->updateDeviceInfo(); + m_pool->waitForDone(-1); + PERF_PRINT_END("POINT-01"); + m_firstUpdate = false; +} + +void MainJob::executeClientInstruction(const QString &instructions) +{ + QMutexLocker locker(&mainJobMutex); + s_ServerIsUpdating = true; + + if (instructions.startsWith("DETECT")) { + this->thread()->msleep(1000); + // 跟新缓存信息 + updateAllDevice(); + } else if (instructions.startsWith("START")) { + if (m_firstUpdate) { + updateAllDevice(); + } + } + s_ServerIsUpdating = false; +} diff --git a/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.h b/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.h new file mode 100644 index 000000000..5770d83c9 --- /dev/null +++ b/deepin-devicemanager-server/deepin-deviceinfo/src/mainjob.h @@ -0,0 +1,78 @@ +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef MAINJOB_H +#define MAINJOB_H + +#include + +class DeviceInterface; +class ThreadPool; +class DetectThread; +class MainJob : public QObject +{ + Q_OBJECT + +public: + explicit MainJob(const char *name, QObject *parent = nullptr); + + /** + * @brief serverIsRunning + * @return + */ + static bool serverIsRunning(); + + /** + * @brief clientIsRunning + * @return + */ + static bool clientIsRunning(); + + /** + * @brief setWorkingFlag 设置工作状态 + */ + void setWorkingFlag(bool flag); + +private slots: + /** + * @brief slotUsbChanged + */ + void slotUsbChanged(); + /** + * @brief slotUsbChanged + * @param usbchanged + */ + void slotDriverControl(bool success); + /** + * @brief slotWakeupHandle + */ + void slotWakeupHandle(bool); +private: + /** + * @brief sqlCopytoKernel + */ + void sqlCopytoKernel(); + /** + * @brief initDriverRepoSource : 初始化驱动仓库 + * @return : 无 + */ + void initDriverRepoSource(); + /** + * @brief updateAllDevice + */ + void updateAllDevice(); + /** + * @brief executeClientInstruction + * @param instructions + */ + void executeClientInstruction(const QString &instructions); + +private: + ThreadPool *m_pool = nullptr; // + +static MainJob *mainJob = nullptr; + +extern "C" int DSMRegister(const char *name, void *data) +{ + (void)data; + mainJob = new MainJob(name); + return 0; +} + +extern "C" int DSMUnRegister(const char *name, void *data) +{ + (void)name; + (void)data; + mainJob->deleteLater(); + mainJob = nullptr; + return 0; +} diff --git a/deepin-devicemanager-server/deepin-devicemanager-server.service b/deepin-devicemanager-server/deepin-devicemanager-server.service deleted file mode 100644 index 6373be32c..000000000 --- a/deepin-devicemanager-server/deepin-devicemanager-server.service +++ /dev/null @@ -1,11 +0,0 @@ -[Unit] -Description=Deepin Device Manager Daemon -After=network.target -[Service] -Restart=always -ExecStart=/usr/bin/deepin-devicemanager-server -RemainAfterExit=yes -User=root - -[Install] -WantedBy=multi-user.target diff --git a/deepin-devicemanager-server/src/DriverControl/DriverDBusInterface.cpp b/deepin-devicemanager-server/src/DriverControl/DriverDBusInterface.cpp deleted file mode 100644 index a021c1a6a..000000000 --- a/deepin-devicemanager-server/src/DriverControl/DriverDBusInterface.cpp +++ /dev/null @@ -1,156 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "DriverDBusInterface.h" -#include "DriverManager.h" -#include "ModCore.h" -#include "Utils.h" -#include "DebInstaller.h" - -#include -#include -#include - -#include - -#include - -using namespace PolkitQt1; - -static int getPidByName(const QString &taskName) -{ - DIR *dir = opendir("/proc"); - int pid = -1; - if (nullptr == dir) - return pid; - - struct dirent *ptr = nullptr; - while ((ptr = readdir(dir)) != nullptr) { - if ((strcmp(ptr->d_name, ".") == 0) || (strcmp(ptr->d_name, "..") == 0) || DT_DIR != ptr->d_type) - continue; - char filepath[1024] = {0}; - sprintf(filepath, "/proc/%s/cmdline", ptr->d_name); - FILE *fp = fopen(filepath, "r"); - if (nullptr == fp) - continue; - - char buf[1024] = {0}; - if (fgets(buf, 1023, fp) == nullptr) { - fclose(fp); - continue; - } - char cur_task_name[1024] = {0}; - sscanf(buf, "%s", cur_task_name); - fclose(fp); - if (!strcmp(taskName.toStdString().c_str(), cur_task_name)) { - bool ok = false; - int curPid = QString(ptr->d_name).toInt(&ok); - if (ok) { - pid = curPid; - break; - } - } - } - closedir(dir); - - return pid; -} - -bool DriverDBusInterface::getUserAuthorPasswd() -{ - int pid = getPidByName("deepin-devicemanager"); - if (pid >= 0) { - Authority::Result result = Authority::instance()->checkAuthorizationSync("com.deepin.deepin-devicemanager.checkAuthentication", - UnixProcessSubject(pid), - Authority::AllowUserInteraction); - return result == Authority::Yes; - } else { - return false; - } -} - -DriverDBusInterface::DriverDBusInterface(QObject *parent) - : QObject(parent) - , QDBusContext() - , mp_drivermanager(new DriverManager(this)) - , pcore(new ModCore(this)) -{ - initConnects(); -} - -void DriverDBusInterface::initConnects() -{ - connect(mp_drivermanager, &DriverManager::sigProgressDetail, this, &DriverDBusInterface::sigProgressDetail); - connect(mp_drivermanager, &DriverManager::sigFinished, this, &DriverDBusInterface::sigFinished); - - connect(mp_drivermanager, &DriverManager::sigDownloadProgressChanged, this, &DriverDBusInterface::sigDownloadProgressChanged); - connect(mp_drivermanager, &DriverManager::sigDownloadFinished, this, &DriverDBusInterface::sigDownloadFinished); - connect(mp_drivermanager, &DriverManager::sigInstallProgressChanged, this, &DriverDBusInterface::sigInstallProgressChanged); - connect(mp_drivermanager, &DriverManager::sigInstallProgressFinished, this, &DriverDBusInterface::sigInstallProgressFinished); -} - -bool DriverDBusInterface::unInstallDriver(const QString &modulename) -{ - if (!getUserAuthorPasswd()) - return false; - return mp_drivermanager->unInstallDriver(modulename); -} - -bool DriverDBusInterface::installDriver(const QString &filepath) -{ - if (!getUserAuthorPasswd()) - return false; - return mp_drivermanager->installDriver(filepath); -} - -void DriverDBusInterface::installDriver(const QString &modulename, const QString &version) -{ - if (!getUserAuthorPasswd()) { - emit mp_drivermanager->sigInstallProgressFinished(false, EC_CANCEL); - return; - } - return mp_drivermanager->installDriver(modulename, version); -} - -void DriverDBusInterface::undoInstallDriver() -{ - return mp_drivermanager->undoInstallDriver(); -} - -QStringList DriverDBusInterface::checkModuleInUsed(const QString &modulename) -{ - return mp_drivermanager->checkModuleInUsed(modulename); -} - -bool DriverDBusInterface::isDriverPackage(const QString &filepath) -{ - if (!getUserAuthorPasswd()) - return false; - else - return mp_drivermanager->isDriverPackage(filepath); -} - -bool DriverDBusInterface::isBlackListed(const QString &modName) -{ - return mp_drivermanager->isBlackListed(modName); -} - -bool DriverDBusInterface::isArchMatched(const QString &filePath) -{ - return mp_drivermanager->isArchMatched(filePath); -} - -bool DriverDBusInterface::isDebValid(const QString &filePath) -{ - return mp_drivermanager->isDebValid(filePath); -} - -bool DriverDBusInterface::unInstallPrinter(const QString &vendor, const QString &model) -{ - if (!getUserAuthorPasswd()) { - emit mp_drivermanager->sigFinished(false, "Cancel"); - return false; - } - return mp_drivermanager->uninstallPrinter(vendor, model); -} diff --git a/deepin-devicemanager-server/src/DriverControl/DriverDBusInterface.h b/deepin-devicemanager-server/src/DriverControl/DriverDBusInterface.h deleted file mode 100644 index 6ff89a5ea..000000000 --- a/deepin-devicemanager-server/src/DriverControl/DriverDBusInterface.h +++ /dev/null @@ -1,53 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DRIVERDBUSINTERFACE_H -#define DRIVERDBUSINTERFACE_H - -#include "commonfunction.h" - -#include -#include - -class DriverManager; -class ModCore; -class DriverDBusInterface : public QObject, protected QDBusContext -{ - Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "com.deepin.drivermanager") -public: - explicit DriverDBusInterface(QObject *parent = nullptr); - -private: - void initConnects(); - bool getUserAuthorPasswd(void); - -signals: - Q_SCRIPTABLE void sigProgressDetail(int progress, const QString &strDeatils); - Q_SCRIPTABLE void sigFinished(bool bsuccess, QString msg); - - Q_SCRIPTABLE void sigDownloadProgressChanged(QStringList msg);//驱动下载进度、速度、已下载大小 - Q_SCRIPTABLE void sigDownloadFinished();//下载完成 - Q_SCRIPTABLE void sigInstallProgressChanged(int progress);//安装进度 - Q_SCRIPTABLE void sigInstallProgressFinished(bool bsuccess, int err); - -public slots: - Q_SCRIPTABLE bool unInstallDriver(const QString &modulename); - Q_SCRIPTABLE bool installDriver(const QString &filepath); - Q_SCRIPTABLE void installDriver(const QString &modulename, const QString &version); - Q_SCRIPTABLE void undoInstallDriver(); - Q_SCRIPTABLE QStringList checkModuleInUsed(const QString &modulename); - Q_SCRIPTABLE bool isDriverPackage(const QString &filepath); - Q_SCRIPTABLE bool isBlackListed(const QString &modName); - Q_SCRIPTABLE bool isArchMatched(const QString &filePath); - Q_SCRIPTABLE bool isDebValid(const QString &filePath); - Q_SCRIPTABLE bool unInstallPrinter(const QString &vendor, const QString &model); - -private: - DriverManager *mp_drivermanager; - ModCore *pcore = nullptr; //临时测试使用 -}; - -#endif // DRIVERDBUSINTERFACE_H diff --git a/deepin-devicemanager-server/src/DriverControl/NotifyThread.cpp b/deepin-devicemanager-server/src/DriverControl/NotifyThread.cpp deleted file mode 100644 index b595caa2d..000000000 --- a/deepin-devicemanager-server/src/DriverControl/NotifyThread.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "NotifyThread.h" - -#include -#include -#include - -NotifyThread::NotifyThread(QObject *parent) : QThread(parent) -{ - -} - -void NotifyThread::run() -{ - QString strUsername(""); - QProcess process; - forever{ - //查看dde-desktop进程是否启动 - process.start("sh", QStringList() << "-c" << " ps aux | grep desktop |grep -v grep"); - process.waitForFinished(-1); - if(process.readAll().isEmpty()){ - sleep(2); - continue; - } - //查看用户名 - process.start("sh", QStringList() << "-c" << "who"); - process.waitForFinished(-1); - strUsername = process.readAll().split(' ')[0]; - qInfo() << strUsername; - if(strUsername.isEmpty()){ - sleep(2); - continue; - } - - QString name = QLocale::system().name(); - - //通知前端 - QString strCmd = "runuser -l " + strUsername + " -c \"XDG_RUNTIME_DIR=\"/run/user/$(id -u " + strUsername + " )\" /usr/bin/deepin-devicemanager notify " + name + "\""; - process.start("sh", QStringList() << "-c" << strCmd); - process.waitForFinished(-1); - break; - } -} - diff --git a/deepin-devicemanager-server/src/DriverControl/Utils.cpp b/deepin-devicemanager-server/src/DriverControl/Utils.cpp deleted file mode 100644 index e72b243e2..000000000 --- a/deepin-devicemanager-server/src/DriverControl/Utils.cpp +++ /dev/null @@ -1,214 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "Utils.h" - -#include -#include -#include -#include -#include - -#include -#include -#include - -const QString BLACKLIST_CONF = "/etc/modprobe.d/blacklist-devicemanager.conf"; - -Utils::Utils() -{ - -} - -QString Utils::file2PackageName(const QString &fileName) -{ - QString packageName(""); - QProcess process; - process.start("dpkg", QStringList() << "-S" << fileName); - if (!process.waitForFinished()) - return packageName; - //content like linux-image-4.19.0-amd64-desktop: /lib/modules/4.19.0-amd64-desktop/kernel/drivers/hid/usbhid/usbhid.ko - QString strContent = process.readAll(); - QStringList strList = strContent.split(":"); - - if (strList.size() > 0) { - packageName = strList.at(0); - } - - return packageName; -} - - -QString Utils::getModuleFilePath(const QString &moduleName) -{ - QString koPath(""); - QProcess process; - process.start("modinfo", QStringList() << "-n" << moduleName); - if (!process.waitForFinished()) - return koPath; - koPath = process.readAll(); - koPath.remove("\n"); - - return koPath; -} - -QString Utils::kernelRelease() -{ - struct utsname name; - uname(&name); - QString strKernel(name.release); - - return strKernel; -} - -QString Utils::machineArch() -{ - struct utsname name; - uname(&name); - QString strArch(name.machine); - qInfo() << name.machine << name.sysname << name.domainname << name.nodename << name.release; - - return strArch; -} - -bool Utils::addModBlackList(const QString &moduleName) -{ - QProcess process; - process.start(QString("echo blacklist %1 >> %2").arg(moduleName).arg(BLACKLIST_CONF)); - if (!process.waitForFinished()) - return false; - return true; -} - -bool Utils::unInstallPackage(const QString &packageName) -{ - QProcess process; - process.start(QString("apt remove %1").arg(packageName)); - if (!process.waitForFinished()) - return false; - return true; -} - -/** - * @brief Utils::isDriverPackage 判断Deb是否为驱动包 - * @param filepath 包文件路径 - * @return true: 是 false: 否 - */ -bool Utils::isDriverPackage(const QString &filepath) -{ - if (!QFile::exists(filepath)) { - return false; - } - bool bsuccess = false; - QDir tmpDir = QDir::temp(); - QString tmpPath = QString("devicemanager-%1").arg(QUuid::createUuid().toString(QUuid::WithoutBraces)); - if (tmpDir.mkdir(tmpPath)) { - tmpDir.cd(tmpPath); - QString strExtract = tmpDir.absolutePath(); - QProcess process; - process.start("sh", QStringList() << "-c" << QString("dpkg-deb -x '%1' %2").arg(filepath).arg(strExtract)); - if (process.waitForFinished()) { - // 2021-12-24 liujuna@uniontech.com 修改过滤规则 - // 关键字查找 insmod modprobe和 路径 /lib/module 会在设备管理器本身(后台服务)和libhd等安装包中返回true,因此暂不可使用 - // 英伟达驱动中找不到 .ko 和 .ppd 等信息 , 但是可以找到 nvidia*.ko 字段,因此添加 nvidia*.ko 过滤字段 - // 不能直接通过包名判断 比如 "deepin-devicemanager_1.0.deb" 判断是否包含 "deepin-devicemanager" 此时同样会过滤 "/home/uos/deepin-devicemanager/driver.deb" - process.start("sh", QStringList() << "-c" << QString("grep -irHE 'nvidia*.ko' %1 || find %1 -name '*.ko' -o -name '*.ppd'").arg(strExtract)); - if (process.waitForFinished()) { - //获取查找结果,有结果不为空 - QString strKeyContent = process.readAllStandardOutput(); - qInfo() << strKeyContent; - if (!strKeyContent.isEmpty()) { - bsuccess = true; - } - } - } - //此处主动调用删除临时文件,临时文件在/tmp目录每次重启会自动清除,所以不对删除结果做处理 - tmpDir.removeRecursively(); - } - return bsuccess; -} - -bool Utils::updateModDeps(bool bquick) -{ - QProcess process; - QString strcomd; - if (bquick) { - strcomd = QString("depmod %1").arg("--quick"); - } else { - strcomd = QString("depmod %1").arg("--all"); - } - process.start(strcomd); - if (!process.waitForFinished()) - return false; - - return true; -} - -bool Utils::isFileLocked(const QString &filepath, bool bread) -{ - short int ltype; - int opentype; - if (bread) { - ltype = F_RDLCK; - opentype = O_RDONLY; - } else { - ltype = F_WRLCK; - opentype = O_WRONLY; - } - struct flock fl; - fl.l_type = ltype; /*F_RDLCK read/F_WRLCK write lock */ - fl.l_whence = SEEK_SET; /* beginning of file */ - fl.l_start = 0; /* offset from l_whence */ - fl.l_len = 0; /* length, 0 = to EOF */ - fl.l_pid = getpid(); /* PID */ - - int fd = open(filepath.toStdString().c_str(), opentype); - //文件打开失败默认为被锁住 - if (fd < 0) { - return true; - } - - if (-1 == fcntl(fd, F_SETLK, &fl)) { - //设置失败,文件已被锁住 - qInfo() << __func__ << "file already locked"; - return true; - } - //file not locked,set lock success - fl.l_type = F_UNLCK; - //unset lock 必须取消锁定否则其它地方无法获取文件锁 - fcntl(fd, F_SETLK, &fl); - return false; -} - -bool Utils::isDpkgLocked() -{ - QProcess proc; - proc.setProgram("bash"); - proc.setArguments(QStringList() << "-c" - << "ps -e -o comm | grep dpkg"); - proc.start(); - proc.waitForFinished(); - QString info = proc.readAllStandardOutput(); - info = info.trimmed(); - if (info.isEmpty() || info == "dpkg-query") - return false; - return true; -} - -QString Utils::getUrl() -{ - QFile file(QDir::homePath() + "/url"); - if(!file.open(QIODevice::ReadOnly)){ - return "https://driver.uniontech.com/api/v1/drive/search"; - } - QString info = file.readAll(); - if("true" == info){ - return "https://driver.uniontech.com/api/v1/drive/search"; - }else{ - return "https://drive-pre.uniontech.com/api/v1/drive/search"; - } -} - - diff --git a/deepin-devicemanager-server/src/DriverControl/Utils.h b/deepin-devicemanager-server/src/DriverControl/Utils.h deleted file mode 100644 index 779b28c49..000000000 --- a/deepin-devicemanager-server/src/DriverControl/Utils.h +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef UTILS_H -#define UTILS_H -#include - -class Utils -{ -public: - Utils(); - static QString file2PackageName(const QString &fileName); - static QString getModuleFilePath(const QString &moduleName); - static QString kernelRelease(); - static QString machineArch(); - static bool addModBlackList(const QString &moduleName); - static bool unInstallPackage(const QString &packageName); - //判断Deb是否为驱动包 - static bool isDriverPackage(const QString &filepath); - //更新mod dep - static bool updateModDeps(bool bquick = true); - //判断文件是否被占用 - static bool isFileLocked(const QString &filepath, bool bread = false); - //判断dpkg是否被占用 - static bool isDpkgLocked(); - //获取url - static QString getUrl(); -}; - -#endif // UTILS_H diff --git a/deepin-devicemanager-server/src/EnableControl/DBusEnableInterface.cpp b/deepin-devicemanager-server/src/EnableControl/DBusEnableInterface.cpp deleted file mode 100644 index 4745dc079..000000000 --- a/deepin-devicemanager-server/src/EnableControl/DBusEnableInterface.cpp +++ /dev/null @@ -1,254 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "DBusEnableInterface.h" -#include "EnableSqlManager.h" -#include "DeviceInfoManager.h" -#include "MainJob.h" -#include "EnableUtils.h" - -#include -#include -#include -#include - -// 系统库文件 -#include -#include - -# define HTTP_MAX_URI 1024 /* Max length of URI string */ - -DBusEnableInterface::DBusEnableInterface(QObject *parent) - :QObject (parent) -{ - -} - -QString DBusEnableInterface::getRemoveInfo() -{ - return EnableSqlManager::getInstance()->removedInfo(); -} - -QString DBusEnableInterface::getAuthorizedInfo() -{ - return EnableSqlManager::getInstance()->authorizedInfo(); -} - -bool DBusEnableInterface::enable(const QString& hclass, const QString& name, const QString& path, const QString& value, bool enable_device, const QString strDriver) -{ - // 网卡通过ioctl禁用 - // 先判断是否是网卡 - QRegExp reg("^[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}:[0-9a-z]{2}$"); - if(reg.exactMatch(value)){ - return ioctlEnableNetwork(hclass,name,path,value,enable_device,strDriver); - } - - // 先从数据库中查找路径,防止设备更换usb接口 - QString sPath = EnableSqlManager::getInstance()->authorizedPath(value); - if(sPath.isEmpty()){ - sPath = path; - } - - // 判断是内置设备,还是外设,内置设备通过remove文件禁用,外设通过authorized文件禁用 - bool res = false; - if(QFile::exists("/sys" + sPath + QString("/authorized"))){ - modifyPath(sPath); - res = authorizedEnable(hclass, name, sPath, value, enable_device, strDriver); - }else/* if(QFile::exists("/sys" + sPath + QString("/remove")))*/{ - res = removeEnable(hclass, name, path, value, enable_device, strDriver); - } - emit update(); - return res; -} - -Q_SCRIPTABLE bool DBusEnableInterface::enablePrinter(const QString& hclass, const QString& name, const QString& path, bool enable_device) -{ - ipp_op_t op = enable_device ? IPP_OP_RESUME_PRINTER : IPP_OP_PAUSE_PRINTER; - char uri[HTTP_MAX_URI]; - ipp_t *request = nullptr; - ipp_t *answer = nullptr; - request = ippNewRequest(op); - construct_uri(uri, sizeof (uri), "ipp://localhost/printers/", name.toStdString().c_str()); - ippAddString(request,IPP_TAG_OPERATION,IPP_TAG_URI,"printer-uri",NULL,uri); - const char* host = cupsServer(); - if(!host){ - return false; - } - int port = ippPort(); - int encrption = (http_encryption_t)cupsEncryption(); - int cancel = 0; - http_t *http = httpConnect2(host,port,nullptr,AF_UNSPEC,(http_encryption_t)encrption,1,30000,&cancel); - if(!http){ - return false; - } - answer = cupsDoRequest(http,request,"/admin/"); - ippDelete(answer); - - // 禁用成功后将信息保存到数据库 - if(enable_device){ - EnableSqlManager::getInstance()->removeDataFromPrinterTable(name); - }else{ - EnableSqlManager::getInstance()->insertDataToPrinterTable(hclass, name, path); - } - - return true; -} - -Q_SCRIPTABLE bool DBusEnableInterface::isDeviceEnabled(const QString& unique_id) -{ - return EnableSqlManager::getInstance()->isUniqueIdEnabled(unique_id); -} - -bool DBusEnableInterface::authorizedEnable(const QString& hclass, const QString& name, const QString& path, const QString& unique_id, bool enable_device, const QString strDriver) -{ - // 通过authorized文件启用禁用设备 - // 0:表示禁用 ,1:表示启用 - QFile file("/sys" + path+QString("/authorized")); - if(!file.open(QIODevice::ReadWrite)){ - return false; - } - if(enable_device){ - /* - 启用的流程为:以 /devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0 为例 - 第一步: 向 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/1-5:1.0/authorized 文件中写 1 - 第二步: 向 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/authorized 文件中写 0 - 第三步: 向 /sys/devices/pci0000:00/0000:00:14.0/usb1/1-5/authorized 文件中写 1 - */ - // 第一步 - file.write("1"); - file.close(); - - // 第二步 - QFileInfo fi(path); - QString pop = fi.path(); - QFile fpop("/sys" + pop + QString("/authorized")); - if(!fpop.open(QIODevice::ReadWrite)) - return false; - fpop.write("0"); - fpop.close(); - - // 第三步 - if(!fpop.open(QIODevice::ReadWrite)) - return false; - fpop.write("1"); - fpop.close(); - - EnableSqlManager::getInstance()->removeDataFromAuthorizedTable(unique_id); - }else{ - file.write("0"); - file.close(); - EnableSqlManager::getInstance()->insertDataToAuthorizedTable(hclass,name,path,unique_id,true, strDriver); - } - return true; -} - -bool DBusEnableInterface::removeEnable(const QString& hclass, const QString& name, const QString& path, const QString& unique_id, bool enable, const QString strDriver) -{ - if(enable){ - // 1. 先rescan 向rescan写入1,则重新加载 - QFile file("/sys/bus/pci/rescan"); - if(!file.open(QIODevice::WriteOnly)){ - return false; - } - file.write("1"); - file.close(); - - // platform disable with reset - if(path.contains("platform")){ - QFile filep("/sys" + path + QString("/reset")); - if(!filep.open(QIODevice::WriteOnly)){ - return false; - } - filep.write("1"); - filep.close(); - } - EnableSqlManager::getInstance()->removeDateFromRemoveTable(path); - - // 2. 通知后台更新数据 - //*先判断后台内存里面有没有该数据 - if(DeviceInfoManager::getInstance()->isPathExisted(path)){ - return true; - } - - // 由于rescan会将所有的remove数据都回复,因此需要重新禁用其它设备 - QStringList rpList; - EnableSqlManager::getInstance()->removePathList(rpList); - foreach(const QString& path,rpList){ - QFile filerp("/sys" + path+QString("/remove")); - if(filerp.open(QIODevice::WriteOnly)){ - filerp.write("1"); - filerp.close(); - } - } - }else{ - // 1. 直接remove写入 - // 通过remove文件禁用 - // 1:表示禁用 ,0:表示启用 - qInfo() << "" << "/sys" + path + QString("/remove"); -// return false; - QFile file("/sys" + path + QString("/remove")); - if(!file.open(QIODevice::WriteOnly)){ - return false; - } - file.write("1"); - file.close(); - - // 2. 持久化保存 - EnableSqlManager::getInstance()->insertDataToRemoveTable(hclass, name, path, unique_id, strDriver); - } - return true; -} - -bool DBusEnableInterface::ioctlEnableNetwork(const QString& hclass, const QString& name, const QString& logical_name, const QString& unique_id, bool enable, const QString strDriver) -{ - // 1. 通过ioctl禁用 - if(!EnableUtils::ioctlOperateNetworkLogicalName(logical_name,enable)) - return false; - // 2. 持久化保存 - if(enable){ - EnableSqlManager::getInstance()->removeDataFromAuthorizedTable(unique_id); - }else{ - EnableSqlManager::getInstance()->insertDataToAuthorizedTable(hclass, name, logical_name, unique_id, enable, strDriver); - } - return true; -} - -void DBusEnableInterface::construct_uri(char *buffer, size_t buflen, const char *base, const char *value) -{ - char *d = buffer; - const unsigned char *s = (const unsigned char *)value; - if (strlen(base) < buflen) { - strcpy(buffer, base); - d += strlen(base); - } else { - strncpy(buffer, base, buflen); - d += buflen; - } - - while (*s && d < buffer + buflen) { - if (isalpha(*s) || isdigit(*s) || *s == '-') - *d++ = *s++; - else if (*s == ' ') { - *d++ = '+'; - s++; - } else { - if (d + 2 < buffer + buflen) { - *d++ = '%'; - *d++ = "0123456789ABCDEF"[((*s) & 0xf0) >> 4]; - *d++ = "0123456789ABCDEF"[((*s) & 0x0f)]; - s++; - } else { - break; - } - } - } - - if (d < buffer + buflen) - *d = '\0'; -} - -void DBusEnableInterface::modifyPath(QString& path) -{ - path.replace(QRegExp("[1-9]$"),"0"); -} diff --git a/deepin-devicemanager-server/src/EnableControl/DBusEnableInterface.h b/deepin-devicemanager-server/src/EnableControl/DBusEnableInterface.h deleted file mode 100644 index 87dafe775..000000000 --- a/deepin-devicemanager-server/src/EnableControl/DBusEnableInterface.h +++ /dev/null @@ -1,120 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DBUSENABLEINTERFACE_H -#define DBUSENABLEINTERFACE_H - -#include -#include - -class DBusEnableInterface : public QObject, protected QDBusContext -{ - Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "com.deepin.enablemanager") -public: - explicit DBusEnableInterface(QObject *parent = nullptr); - -public slots: - /** - * @brief getRemoveInfo - * @return - */ - Q_SCRIPTABLE QString getRemoveInfo(); - - /** - * @brief getAuthorizedInfo 获取被禁用的设备信息 - * @return - */ - Q_SCRIPTABLE QString getAuthorizedInfo(); - - /** - * @brief enable 启用禁用设备 - * @param hclass 类型 - * @param name 名称 - * @param path 授权文件的路径 - * @param value 传过来的数值 - * @param enable_device 启用或者禁用 - * @param strDriver - * @return 是否成功 - */ - Q_SCRIPTABLE bool enable(const QString& hclass, const QString& name, const QString& path, const QString& value, bool enable_device, const QString strDriver=""); - - /** - * @brief enablePrinter 禁用打印机 - * @param hclass 设备类型 - * @param name 打印机名称 - * @param path ----- - * @param enable_device 是否被启用 - * @return - */ - Q_SCRIPTABLE bool enablePrinter(const QString& hclass, const QString& name, const QString& path, bool enable_device); - - /** - * @brief isDeviceEnabled 判断设备是否被禁用,通过查询数据库来判断 - * @param unique_id 设备的唯一 sid - * @return - */ - Q_SCRIPTABLE bool isDeviceEnabled(const QString& unique_id); - -signals: - void update(); - -private: - - /** - * @brief authorizedEnable 通过authorized文件启用禁用设备 - * @param hclass 设备类型 - * @param name 设备名称 - * @param path 设备节点路径 - * @param unique_id 设备的唯一标识 - * @param enable_device 启用或者禁用 - * @param strDriver 驱动名称 - * @return - */ - bool authorizedEnable(const QString& hclass, const QString& name, const QString& path, const QString& unique_id, bool enable_device, const QString strDriver=""); - - /** - * @brief removeEnable 通过remove文件启用禁用设备 - * @param hclass 设备类型 - * @param name 设备名称 - * @param path 设备节点路径 - * @param unique_id 设备的唯一标识 - * @param enable 启用或者禁用 - * @param strDriver 驱动名称 - * @return - */ - bool removeEnable(const QString& hclass, const QString& name, const QString& path, const QString& unique_id, bool enable, const QString strDriver=""); - - /** - * @brief ioctlEnableNetwork 通过ioctl启用禁用网卡 - * @param hclass 设备类型 - * @param name 设备名称 - * @param logical_name 逻辑名称 - * @param unique_id 唯一标识 - * @param enable 启用或者禁用 - * @param strDriver 驱动名称 - * @return 返回是否成功 - */ - bool ioctlEnableNetwork(const QString& hclass, const QString& name, const QString& logical_name, const QString& unique_id, bool enable, const QString strDriver=""); - - /** - * @brief construct_uri - * @param buffer - * @param buflen - * @param base - * @param value - */ - void construct_uri(char *buffer, size_t buflen, const char *base, const char *value); - - /** - * @brief modifyPath 修正路径 保证xxx.0 - * 比如将 /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.1 - * 修正为 /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0 - * @param path 需要修正的路径 /devices/pci0000:00/0000:00:14.0/usb1/1-8/1-8:1.0 - */ - void modifyPath(QString& path); -}; - -#endif // DBUSENABLEINTERFACE_H diff --git a/deepin-devicemanager-server/src/EnableControl/EnableSqlManager.cpp b/deepin-devicemanager-server/src/EnableControl/EnableSqlManager.cpp deleted file mode 100644 index 487e59feb..000000000 --- a/deepin-devicemanager-server/src/EnableControl/EnableSqlManager.cpp +++ /dev/null @@ -1,348 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "EnableSqlManager.h" - -#include -#include -#include - -#define DB_PATH "/usr/share/deepin-devicemanager/" -#define DB_FILE "enable.db" -#define DB_CONNECT_NAME "device-enable" -#define DB_TABLE_AUTHORIZED "authorized" -#define DB_TABLE_REMOVE "remove" -#define DB_TABLE_PRINTER "printer" -#define DB_TABLE_WAKEUP "wake" -#define DB_TABLE_NETWORK_WAKEUP "net_wake" - -std::atomic EnableSqlManager::s_Instance; -std::mutex EnableSqlManager::m_mutex; - -void EnableSqlManager::insertDataToRemoveTable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, const QString strDriver) -{ - QString sql = QString("INSERT INTO %1 (class, name, path, unique_id, driver) VALUES ('%2', '%3', '%4', '%5', '%6');") - .arg(DB_TABLE_REMOVE).arg(hclass).arg(name).arg(path).arg(unique_id).arg(strDriver); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } -} - -void EnableSqlManager::removeDateFromRemoveTable(const QString &path) -{ - QString sql = QString("DELETE FROM %1 WHERE path='%2';").arg(DB_TABLE_REMOVE).arg(path); - if (!m_sqlQuery.exec(sql)) { - qInfo() << m_sqlQuery.lastError(); - } -} - -void EnableSqlManager::insertDataToAuthorizedTable(const QString &hclass, const QString &name, const QString &path, const QString &unique_id, bool exist, const QString strDriver) -{ - // 数据库已经存在该设备记录 - if (uniqueIDExistedEX(unique_id)) { - return; - } - - // 数据库没有该设备记录,则直接插入 - QString sql = QString("INSERT INTO %1 (class, name, path, unique_id, exist, driver) VALUES ('%2', '%3', '%4', '%5', '%6', '%7');") - .arg(DB_TABLE_AUTHORIZED).arg(hclass).arg(name).arg(path).arg(unique_id).arg(exist).arg(strDriver); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } -} - -void EnableSqlManager::removeDataFromAuthorizedTable(const QString &key) -{ - QString sql = QString("DELETE FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_AUTHORIZED).arg(key); - if (!m_sqlQuery.exec(sql)) { - qInfo() << m_sqlQuery.lastError(); - } -} - -void EnableSqlManager::updateDataToAuthorizedTable(const QString &unique_id, const QString &path) -{ - QString sql = QString("UPDATE %1 SET path='%2' WHERE unique_id='%3';").arg(DB_TABLE_AUTHORIZED).arg(path).arg(unique_id); - if (!m_sqlQuery.exec(sql)) { - qInfo() << m_sqlQuery.lastError(); - } -} - -void EnableSqlManager::updateDataToAuthorizedTable(const QString &unique_id, bool enable_device) -{ - QString sql = QString("UPDATE %1 SET enable='%2' WHERE unique_id='%3';").arg(DB_TABLE_AUTHORIZED).arg(enable_device).arg(unique_id); - if (!m_sqlQuery.exec(sql)) { - qInfo() << m_sqlQuery.lastError(); - } -} - -void EnableSqlManager::clearEnableFromAuthorizedTable() -{ - QString sql = QString("DELETE FROM %1 WHERE enable='%2';").arg(DB_TABLE_AUTHORIZED).arg(true); - if (!m_sqlQuery.exec(sql)) { - qInfo() << m_sqlQuery.lastError(); - } -} - -void EnableSqlManager::insertDataToPrinterTable(const QString &hclass, const QString &name, const QString &path) -{ - QString sql = QString("INSERT INTO %1 (class, name, path) VALUES ('%2', '%3', '%4');").arg(DB_TABLE_PRINTER).arg(hclass).arg(name).arg(path); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } -} - -void EnableSqlManager::removeDataFromPrinterTable(const QString &name) -{ - QString sql = QString("DELETE FROM %1 WHERE name='%2';").arg(DB_TABLE_PRINTER).arg(name); - if (!m_sqlQuery.exec(sql)) { - qInfo() << m_sqlQuery.lastError(); - } -} - -bool EnableSqlManager::uniqueIDExisted(const QString &key) -{ - QString sql = QString("SELECT COUNT(*) FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_AUTHORIZED).arg(key); - if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) { - return m_sqlQuery.value(0).toInt() > 0; - } - return false; -} - -bool EnableSqlManager::uniqueIDExistedEX(const QString &key) -{ - QString sql = QString("SELECT COUNT(*) FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_AUTHORIZED).arg(key); - if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) { - return m_sqlQuery.value(0).toInt() > 0; - } - return false; -} - -bool EnableSqlManager::isUniqueIdEnabled(const QString &key) -{ - QString sql = QString("SELECT enable FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_AUTHORIZED).arg(key); - if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) { - return m_sqlQuery.value(0).toBool(); - } - return false; -} - -QString EnableSqlManager::removedInfo() -{ - QString info = ""; - QString sql = QString("SELECT class,name,path,unique_id,driver FROM %1;").arg(DB_TABLE_REMOVE); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - return info; - } - - while (m_sqlQuery.next()) { - info += "Hardware Class : " + m_sqlQuery.value(0).toString() + "\n"; - info += "name : " + m_sqlQuery.value(1).toString() + "\n"; - info += "path : " + m_sqlQuery.value(2).toString() + "\n"; - info += "unique_id : " + m_sqlQuery.value(3).toString() + "\n"; - info += "driver : " + m_sqlQuery.value(4).toString() + "\n\n"; - } - return info; -} - -QString EnableSqlManager::authorizedInfo() -{ - QString info = ""; - QString sql = QString("SELECT class,name,path,unique_id,driver FROM %1;").arg(DB_TABLE_AUTHORIZED); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - return info; - } - - while (m_sqlQuery.next()) { - info += "Hardware Class : " + m_sqlQuery.value(0).toString() + "\n"; - info += "name : " + m_sqlQuery.value(1).toString() + "\n"; - info += "path : " + m_sqlQuery.value(2).toString() + "\n"; - info += "unique_id : " + m_sqlQuery.value(3).toString() + "\n"; - info += "driver : " + m_sqlQuery.value(4).toString() + "\n\n"; - } - return info; -} - -QString EnableSqlManager::authorizedPath(const QString &unique_id) -{ - QString sql = QString("SELECT path FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_AUTHORIZED).arg(unique_id); - if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) { - return m_sqlQuery.value(0).toString(); - } - return ""; -} - - -void EnableSqlManager::authorizedPathUniqueIDList(QList > &lstPair) -{ - QString sql = QString("SELECT path,unique_id FROM %1;").arg(DB_TABLE_AUTHORIZED); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - return; - } - while (m_sqlQuery.next()) { - QPair pair; - pair.first = m_sqlQuery.value(0).toString(); - pair.second = m_sqlQuery.value(1).toString(); - lstPair.append(pair); - } -} - -void EnableSqlManager::removePathList(QStringList &lsPath) -{ - QString sql = QString("SELECT path FROM %1;").arg(DB_TABLE_REMOVE); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - return; - } - while (m_sqlQuery.next()) { - lsPath.append(m_sqlQuery.value(0).toString()); - } -} - -void EnableSqlManager::removePathUniqueIDList(QList > &lstPair) -{ - QString sql = QString("SELECT path,unique_id FROM %1;").arg(DB_TABLE_REMOVE); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - return; - } - while (m_sqlQuery.next()) { - QPair pair; - pair.first = m_sqlQuery.value(0).toString(); - pair.second = m_sqlQuery.value(1).toString(); - lstPair.append(pair); - } -} - -void EnableSqlManager::insertWakeupData(const QString &unique_id, const QString &path, bool wakeup) -{ - QString sql = QString("INSERT INTO %1 (unique_id, path, wakeup) VALUES ('%2', '%3', '%4');").arg(DB_TABLE_WAKEUP).arg(unique_id).arg(path).arg(wakeup); - if (!m_sqlQuery.exec(sql)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } -} - -bool EnableSqlManager::isWakeupUniqueIdExisted(const QString &unique_id) -{ - QString sql = QString("SELECT COUNT(*) FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_WAKEUP).arg(unique_id); - if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) { - return m_sqlQuery.value(0).toInt() > 0; - } - return false; -} - -void EnableSqlManager::updateWakeData(const QString &unique_id, const QString &path, bool wakeup) -{ - QString sql = QString("UPDATE %1 SET path='%2', wakeup='%3' WHERE unique_id='%4';").arg(DB_TABLE_WAKEUP).arg(path).arg(wakeup).arg(unique_id); - if (!m_sqlQuery.exec(sql)) { - qInfo() << m_sqlQuery.lastError(); - } -} - -QString EnableSqlManager::wakeupPath(const QString &unique_id) -{ - QString sql = QString("SELECT path FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_WAKEUP).arg(unique_id); - if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) { - return m_sqlQuery.value(0).toString(); - } - return ""; -} - -bool EnableSqlManager::isWakeup(const QString &unique_id) -{ - QString sql = QString("SELECT wakeup FROM %1 WHERE unique_id='%2';").arg(DB_TABLE_WAKEUP).arg(unique_id); - if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) - return m_sqlQuery.value(0).toBool(); - return false; -} - -void EnableSqlManager::insertNetworkWakeup(const QString &logical_name, bool wake) -{ - // 先判断是否已经存在 - QString sqlAdd; - QString sqlExist = QString("SELECT wakeup FROM %1 WHERE logical_name='%2';").arg(DB_TABLE_NETWORK_WAKEUP).arg(logical_name); - if (m_sqlQuery.exec(sqlExist) && m_sqlQuery.next()) { - sqlAdd = QString("UPDATE %1 SET wakeup='%2' WHERE logical_name='%3';").arg(DB_TABLE_NETWORK_WAKEUP).arg(wake).arg(logical_name); - } else { - sqlAdd = QString("INSERT INTO %1 (logical_name, wakeup) VALUES ('%2', '%3');").arg(DB_TABLE_NETWORK_WAKEUP).arg(logical_name).arg(wake); - } - - - if (!m_sqlQuery.exec(sqlAdd)) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } -} - -bool EnableSqlManager::isNetworkWakeup(const QString &logical_name) -{ - QString sql = QString("SELECT wakeup FROM %1 WHERE logical_name='%2';").arg(DB_TABLE_NETWORK_WAKEUP).arg(logical_name); - if (m_sqlQuery.exec(sql) && m_sqlQuery.next()) - return m_sqlQuery.value(0).toBool(); - return false; -} - -EnableSqlManager::EnableSqlManager(QObject *parent) - : QObject(parent) -{ - initDB(); -} - -void EnableSqlManager::initDB() -{ - //初始化数据库 - QDir dbDir; - if (!dbDir.exists(DB_PATH)) { - dbDir.mkpath(DB_PATH); - } - m_db = QSqlDatabase::addDatabase("QSQLITE", DB_CONNECT_NAME); - m_db.setDatabaseName(QString("%1%2").arg(DB_PATH).arg(DB_FILE)); - if (!m_db.open()) { - qDebug() << Q_FUNC_INFO << "local db open error!"; - return; - } - - // 初始化查询接口 - m_sqlQuery = QSqlQuery(m_db); - - // 创建数据库表 - QStringList tableStrList = m_db.tables(); - - if (!tableStrList.contains(DB_TABLE_AUTHORIZED)) { - QString sql = QString("CREATE TABLE %1 (class text, name text, path text, unique_id text, exist boolean, driver text);").arg(DB_TABLE_AUTHORIZED); - bool res = m_sqlQuery.exec(sql); - if (!res) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } - } - if (!tableStrList.contains(DB_TABLE_REMOVE)) { - QString sql = QString("CREATE TABLE %1 (class text, name text, path text, unique_id text, driver text);").arg(DB_TABLE_REMOVE); - bool res = m_sqlQuery.exec(sql); - if (!res) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } - } - if (!tableStrList.contains(DB_TABLE_PRINTER)) { - QString sql = QString("CREATE TABLE %1 (class text, name text, path text)").arg(DB_TABLE_PRINTER); - bool res = m_sqlQuery.exec(sql); - if (!res) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } - } - if (!tableStrList.contains(DB_TABLE_WAKEUP)) { - QString sql = QString("CREATE TABLE %1 (unique_id text, path text, wakeup boolean)").arg(DB_TABLE_WAKEUP); - bool res = m_sqlQuery.exec(sql); - if (!res) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } - } - if (!tableStrList.contains(DB_TABLE_NETWORK_WAKEUP)) { - QString sql = QString("CREATE TABLE %1 (logical_name text, wakeup boolean)").arg(DB_TABLE_NETWORK_WAKEUP); - bool res = m_sqlQuery.exec(sql); - if (!res) { - qInfo() << Q_FUNC_INFO << m_sqlQuery.lastError(); - } - } -} diff --git a/deepin-devicemanager-server/src/LoadInfo/DBusInterface.cpp b/deepin-devicemanager-server/src/LoadInfo/DBusInterface.cpp deleted file mode 100644 index 21c8d466f..000000000 --- a/deepin-devicemanager-server/src/LoadInfo/DBusInterface.cpp +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "DBusInterface.h" -#include "DeviceInfoManager.h" -#include "MainJob.h" -#include "EnableSqlManager.h" - -#include -#include - -DBusInterface::DBusInterface(QObject *parent) - : QObject(parent) -{ - -} - -QString DBusInterface::getInfo(const QString &key) -{ - // 不能返回用常引用 - if("is_server_running" != key){ - return DeviceInfoManager::getInstance()->getInfo(key); - } - if(MainJob::serverIsRunning()){ - return "1"; - } - return "0"; -} - -void DBusInterface::refreshInfo() -{ - emit update(); -} diff --git a/deepin-devicemanager-server/src/LoadInfo/DBusInterface.h b/deepin-devicemanager-server/src/LoadInfo/DBusInterface.h deleted file mode 100644 index fbb07cf73..000000000 --- a/deepin-devicemanager-server/src/LoadInfo/DBusInterface.h +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DBUSINTERFACE_H -#define DBUSINTERFACE_H - -#include -#include - -class MainJob; -class DBusInterface : public QObject, protected QDBusContext -{ - Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "com.deepin.devicemanager") -public: - explicit DBusInterface(QObject *parent = nullptr); - -signals: - void update(); - -public slots: - /** - * @brief getInfo : Obtain hardware information through the DBus - * @param key - * @return : Hardware info - */ - Q_SCRIPTABLE QString getInfo(const QString &key); - - /** - * @brief refreshInfo - * @return - */ - Q_SCRIPTABLE void refreshInfo(); -}; - -#endif // DBUSINTERFACE_H diff --git a/deepin-devicemanager-server/src/MainJob.cpp b/deepin-devicemanager-server/src/MainJob.cpp deleted file mode 100644 index 7fe650a22..000000000 --- a/deepin-devicemanager-server/src/MainJob.cpp +++ /dev/null @@ -1,270 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "MainJob.h" -#include "ThreadPool.h" -#include "DetectThread.h" -#include "DebugTimeManager.h" -#include "DBusInterface.h" -#include "DriverDBusInterface.h" -#include "DBusEnableInterface.h" -#include "DBusWakeupInterface.h" -#include "DeviceInfoManager.h" -#include "EnableSqlManager.h" -#include "EnableUtils.h" -#include "WakeupUtils.h" -#include "DriverManager.h" -#include "NotifyThread.h" - -//todo: deleted later -#include "DriverInstaller.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -static QMutex mutex; -const QString SERVICE_NAME = "com.deepin.devicemanager"; -const QString DRIVER_SERVICE_PATH = "/com/deepin/drivermanager"; -const QString DEVICE_SERVICE_PATH = "/com/deepin/devicemanager"; -const QString ENABLE_SERVICE_PATH = "/com/deepin/enablemanager"; -const QString WAKEUP_SERVICE_PATH = "/com/deepin/wakeupmanager"; -bool MainJob::s_ServerIsUpdating = false; -bool MainJob::s_ClientIsUpdating = false; -const QString DEVICE_REPO_PATH = "/etc/apt/sources.list.d/devicemanager.list"; -const QString DRIVER_REPO_PATH = "/etc/apt/sources.list.d/driver.list"; - -MainJob::MainJob(QObject *parent) - : QObject(parent) - , mp_Pool(new ThreadPool) - , mp_DetectThread(nullptr) - , mp_IFace(new DBusInterface(this)) - , m_FirstUpdate(true) -{ - // 守护进程启动的时候加载所有信息 - updateAllDevice(); - //启动时,检测驱动是否要更新,如果要更新则通知系统 -// 取消开机驱动安装提示 -// DriverManager *drivermanager = new DriverManager(this); -// if (drivermanager->checkDriverInfo()) { -// NotifyThread *thread = new NotifyThread(); -// connect(thread, &QThread::finished, thread, &QObject::deleteLater); -// thread->start(); -// } -} - -MainJob::~MainJob() -{ -} -void MainJob::working() -{ - // 启动dbus - if (!initDBus()) { - exit(1); - } - - // 启动线程监听USB是否有新的设备 - mp_DetectThread = new DetectThread(this); - mp_DetectThread->start(); - connect(mp_DetectThread, &DetectThread::usbChanged, this, &MainJob::slotUsbChanged, Qt::ConnectionType::QueuedConnection); - - // 在驱动管理延迟加载1000ms - QTimer::singleShot(1000, this, [ = ]() { - //初始化源 - initDriverRepoSource(); - // 后台加载后先禁用设备 - const QString &info = DeviceInfoManager::getInstance()->getInfo("hwinfo"); - EnableUtils::disableOutDevice(info); - EnableUtils::disableInDevice(); - WakeupUtils::updateWakeupDeviceInfo(info); - - mp_DriverOperateIFace = (new DriverDBusInterface(this)); - mp_Enable = (new DBusEnableInterface(this)); - mp_Wakeup = (new DBusWakeupInterface(this)); - if (!initDriverDbus()) { - exit(1); - } - - connect(mp_Enable, &DBusEnableInterface::update, this, &MainJob::slotUsbChanged); - connect(mp_IFace, &DBusInterface::update, this, &MainJob::slotUsbChanged); - connect(mp_DriverOperateIFace, &DriverDBusInterface::sigFinished, this, &MainJob::slotDriverControl); - }); - - //todo: 先不删除,后续测试完再删除。 -// DriverInstaller *mp_driverInstaller = new DriverInstaller;; -// mp_driverInstaller->installPackage("cnrcupsir2625zk","5.00-1"); -} - -INSTRUCTION_RES MainJob::executeClientInstruction(const QString &instructions) -{ - QMutexLocker locker(&mutex); - s_ServerIsUpdating = true; - INSTRUCTION_RES res = IR_NULL; - - if (instructions.startsWith("DETECT")) { - this->thread()->msleep(1000); - // 跟新缓存信息 - updateAllDevice(); - } else if (instructions.startsWith("START")) { - if (m_FirstUpdate) { - updateAllDevice(); - } - res = IR_UPDATE; - } else { - res = IR_NULL; - } - - s_ServerIsUpdating = false; - return res; -} - -bool MainJob::isZhaoXin() -{ - QString cmd = "sudo dmidecode -t 4"; - QProcess process; - process.start(cmd); - process.waitForFinished(-1); - QString info = process.readAllStandardOutput(); - if (info.contains("ZHAOXIN KaiXian KX-U")) { - return true; - } else { - return false; - } -} - -bool MainJob::serverIsRunning() -{ - return s_ServerIsUpdating; -} - -bool MainJob::clientIsRunning() -{ - return s_ClientIsUpdating; -} - -void MainJob::slotUsbChanged() -{ - executeClientInstruction("DETECT"); -} - -void MainJob::slotDriverControl(bool success) -{ - if (success) - executeClientInstruction("DETECT"); -} - -void MainJob::onFirstUpdate() -{ - if (m_FirstUpdate) { - updateAllDevice(); - } -} - -void MainJob::updateAllDevice() -{ - PERF_PRINT_BEGIN("POINT-01", "MainJob::updateAllDevice()"); - if (m_FirstUpdate) - mp_Pool->loadDeviceInfo(); - else - mp_Pool->updateDeviceInfo(); - mp_Pool->waitForDone(-1); - PERF_PRINT_END("POINT-01"); - m_FirstUpdate = false; -} - -bool MainJob::initDBus() -{ - QDBusConnection systemBus = QDBusConnection::systemBus(); - //1. 申请一个总线连接 - if (!systemBus.isConnected()) { - return false; - } - - //2. 在总线连接上挂载服务,这样其他进程才能请求该服务 - if (!systemBus.registerService(SERVICE_NAME)) { - return false; - } - - //3. 在挂载的服务上注册一个执行服务的对象 - if (!systemBus.registerObject(DEVICE_SERVICE_PATH, mp_IFace, QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllSignals)) { - qInfo() << QDBusConnection::systemBus().lastError(); - return false; - } - - return true; -} - -bool MainJob::initDriverDbus() -{ - QDBusConnection systemBus = QDBusConnection::systemBus(); - //1. 申请一个总线连接 - if (!systemBus.isConnected()) { - return false; - } - - //2. 在总线连接上挂载服务,这样其他进程才能请求该服务 - if (!systemBus.registerService(SERVICE_NAME)) { - return false; - } - - if (!systemBus.registerObject(DRIVER_SERVICE_PATH, mp_DriverOperateIFace, QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllSignals)) { - qInfo() << QDBusConnection::systemBus().lastError(); - return false; - } - if (!systemBus.registerObject(ENABLE_SERVICE_PATH, mp_Enable, QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllSignals)) { - qInfo() << QDBusConnection::systemBus().lastError(); - return false; - } - if (!systemBus.registerObject(WAKEUP_SERVICE_PATH, mp_Wakeup, QDBusConnection::ExportAllSlots | QDBusConnection::ExportAllSignals)) { - qInfo() << QDBusConnection::systemBus().lastError(); - return false; - } - - static QThread t; - mp_Enable->moveToThread(&t); - t.start(); - - return true; -} - -void MainJob::initDriverRepoSource() -{ - QFile fileDriver(DRIVER_REPO_PATH); - if (fileDriver.open(QIODevice::ReadOnly)) { - QString info = fileDriver.readAll(); - QStringList lines = info.split("\n"); - foreach (QString line, lines) { - if (line.contains("pro-driver-packages")) { - fileDriver.close(); - return; - } - } - fileDriver.close(); - } - - QFile file(DEVICE_REPO_PATH); - if (QFile::exists(DEVICE_REPO_PATH)) { - return; - } - if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) { - qInfo() << file.errorString(); - return; - } - - file.write("deb https://pro-driver-packages.uniontech.com eagle non-free\n"); - file.close(); - - QString cmd = "apt update"; - QProcess process; - process.start(cmd); - process.waitForFinished(-1); -} - diff --git a/deepin-devicemanager-server/src/MainJob.h b/deepin-devicemanager-server/src/MainJob.h deleted file mode 100644 index 5f51d0e31..000000000 --- a/deepin-devicemanager-server/src/MainJob.h +++ /dev/null @@ -1,116 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef MAINJOB_H -#define MAINJOB_H - -#include -#include -#include - -class ThreadPool; -class DetectThread; -class DBusInterface; -class DriverDBusInterface; -class DBusEnableInterface; -class DBusWakeupInterface; -class QThread; - -enum INSTRUCTION_RES { - IR_NULL = 0, - IR_FAILED = 1, - IR_SUCCESS = 2, - IR_UPDATE = 3 -}; - -class MainJob : public QObject -{ - Q_OBJECT -public: - explicit MainJob(QObject *parent = nullptr); - ~MainJob(); - - void working(); - - /** - * @brief executeClientInstruction - * @param instructions - */ - INSTRUCTION_RES executeClientInstruction(const QString &instructions); - - /** - * @brief isZhaoXin - * @return - */ - bool isZhaoXin(); - - /** - * @brief serverIsRunning - * @return - */ - static bool serverIsRunning(); - - /** - * @brief clientIsRunning - * @return - */ - static bool clientIsRunning(); - -private slots: - /** - * @brief slotUsbChanged - */ - void slotUsbChanged(); - - /** - * @brief slotUsbChanged - * @param usbchanged - */ - void slotDriverControl(bool success); - - /** - * @brief onFirstUpdate - */ - void onFirstUpdate(); - -private: - - /** - * @brief updateAllDevice - */ - void updateAllDevice(); - - /** - * @brief initDBus : 初始化dbus - * @return : 返回bool - */ - bool initDBus(); - - /** - * @brief initDBus : 初始化Driver相关dbus - * @return : 返回bool - */ - bool initDriverDbus(); - - /** - * @brief initDriverRepoSource : 初始化驱动仓库 - * @return : 无 - */ - void initDriverRepoSource(); - -private: - ThreadPool *mp_Pool = nullptr; // -#include - -DBusWakeupInterface::DBusWakeupInterface(QObject* parent) - : QObject (parent) -{ -} - -bool DBusWakeupInterface::setWakeupMachine(const QString& unique_id, const QString& path, bool wakeup) -{ - // 读写wake文件 - QString tpath; - if(!WakeupUtils::wakeupPath(path,tpath)) - return false; - if(!WakeupUtils::writeWakeupFile(tpath,wakeup)) - return false; - - // 将数据写到数据库或者从数据库删除数据 - saveWakeupInfo(unique_id,path,wakeup); - return true; -} - -bool DBusWakeupInterface::setNetworkWake(const QString& logicalName, bool wakeup) -{ - bool res = WakeupUtils::setWakeOnLan(logicalName,wakeup); - if(res){ - // 将数据保存到数据库 - EnableSqlManager::getInstance()->insertNetworkWakeup(logicalName,wakeup); - } - return res; -} - -int DBusWakeupInterface::isNetworkWakeup(const QString& logicalName) -{ - return WakeupUtils::wakeOnLanIsOpen(logicalName); -} - -void DBusWakeupInterface::saveWakeupInfo(const QString& unique_id, const QString& path, bool wakeup) -{ - if(EnableSqlManager::getInstance()->isWakeupUniqueIdExisted(unique_id)){ - EnableSqlManager::getInstance()->updateWakeData(unique_id,path,wakeup); - }else{ - EnableSqlManager::getInstance()->insertWakeupData(unique_id,path,wakeup); - } -} - diff --git a/deepin-devicemanager-server/src/WakeControl/DBusWakeupInterface.h b/deepin-devicemanager-server/src/WakeControl/DBusWakeupInterface.h deleted file mode 100644 index 83d906b9c..000000000 --- a/deepin-devicemanager-server/src/WakeControl/DBusWakeupInterface.h +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DBUSWAKEUPINTERFACE_H -#define DBUSWAKEUPINTERFACE_H - -#include -#include - -class DBusWakeupInterface : public QObject, protected QDBusContext -{ - Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "com.deepin.wakeupmanager") -public: - explicit DBusWakeupInterface(QObject* parent = nullptr); - -public slots: - /** - * @brief setWakeupMachine - * @param unique_id - * @param path - * @param wakeup - * @return - */ - Q_SCRIPTABLE bool setWakeupMachine(const QString& unique_id, const QString& path, bool wakeup); - - /** - * @brief setNetworkWake 设置网卡唤醒 - * @param logicalName 网卡的逻辑名称 - * @param wakeup 是否允许唤醒 - * @return - */ - Q_SCRIPTABLE bool setNetworkWake(const QString& logicalName, bool wakeup); - - /** - * @brief isNetworkWakeup 判断网卡是否禁用 - * @param logicalName 网卡的逻辑名称 - * @return - */ - Q_SCRIPTABLE int isNetworkWakeup(const QString& logicalName); - -private: - - /** - * @brief saveWakeupInfo 保存数据到数据库 - * @param unique_id 唯一标识 - * @param path 节点路径 - * @param wakeup 是否唤醒 - */ - void saveWakeupInfo(const QString& unique_id, const QString& path, bool wakeup); -}; - -#endif // DBUSWAKEUPINTERFACE_H diff --git a/deepin-devicemanager-server/src/main.cpp b/deepin-devicemanager-server/src/main.cpp deleted file mode 100644 index 5b51b0d46..000000000 --- a/deepin-devicemanager-server/src/main.cpp +++ /dev/null @@ -1,26 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "MainJob.h" -#include "DriverManager.h" - -#include - -#include -#include -#include -#include -#include -#include -#include - - -int main(int argc, char *argv[]) -{ - QCoreApplication a(argc, argv); - MainJob job; - job.working(); - - return a.exec(); -} diff --git a/deepin-devicemanager-server/tests/CMakeLists.txt b/deepin-devicemanager-server/tests/CMakeLists.txt index 61ecb5085..93ca619c5 100644 --- a/deepin-devicemanager-server/tests/CMakeLists.txt +++ b/deepin-devicemanager-server/tests/CMakeLists.txt @@ -31,10 +31,17 @@ macro(SUBDIRLIST result curdir) endforeach() set(${result} ${dirlist}) endmacro() - -# 引用ZeroMQ的库 begin **************************************************************** -link_libraries("zmq") -# 引用ZeroMQ的库 end ***************************************************************** +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../deepin-deviceinfo/src) +include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../deepin-devicecontrol/src) +SUBDIRLIST(deviceinfo_dirs ${CMAKE_CURRENT_SOURCE_DIR}/../deepin-deviceinfo/src) +SUBDIRLIST(devicecontrol_dirs ${CMAKE_CURRENT_SOURCE_DIR}/../deepin-devicecontrol/src) +foreach(subdir ${deviceinfo_dirs}) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../deepin-deviceinfo/src/${subdir}) +endforeach() +foreach(subdir ${devicecontrol_dirs}) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../deepin-devicecontrol/src/${subdir}) +endforeach() +# 设置包含头文件的时候不用包含路径 end **************************************************************************************** find_package(GTest REQUIRED) include_directories(${GTEST_INCLUDE_DIRS}) @@ -48,36 +55,40 @@ find_package(DtkWidget REQUIRED) find_package(Qt5Network REQUIRED) find_package(DtkCore REQUIRED) find_package(PolkitQt5-1 REQUIRED) -find_package(DFrameworkdbus REQUIRED) find_package(QApt REQUIRED) -#PKG_SEARCH_MODULE(kmod REQUIRED libkmod IMPORTED_TARGET) +PKG_SEARCH_MODULE(kmod REQUIRED libkmod IMPORTED_TARGET) set(PROJECT_NAME_TEST ${PROJECT_NAME}-test) ADD_COMPILE_OPTIONS(-fno-access-control) -include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src) -foreach(subdir ${all_src}) - include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src/${subdir}) -endforeach() - #src -file(GLOB_RECURSE APP_SRCS - ${CMAKE_CURRENT_LIST_DIR}/../src/*.cpp +file(GLOB_RECURSE INFO_SRCS + ${CMAKE_CURRENT_LIST_DIR}/../deepin-deviceinfo/src/*.cpp + ) +file(GLOB_RECURSE CONTROL_SRCS + ${CMAKE_CURRENT_LIST_DIR}/../deepin-devicecontrol/src/*.cpp ) # remove src main.cpp or will multi define -list(REMOVE_ITEM APP_SRCS ${CMAKE_CURRENT_LIST_DIR}/../src/main.cpp) +list(REMOVE_ITEM INFO_SRCS ${CMAKE_CURRENT_LIST_DIR}/../deepin-deviceinfo/src/plugin.cpp) +list(REMOVE_ITEM CONTROL_SRCS ${CMAKE_CURRENT_LIST_DIR}/../deepin-devicecontrol/src/main.cpp) #test src file(GLOB_RECURSE TEST_SRC_CPP ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp) file(GLOB_RECURSE TEST_SRC_H ${CMAKE_CURRENT_LIST_DIR}/src/*.h) -add_executable(${PROJECT_NAME_TEST} ${APP_SRCS} ${TEST_SRC_CPP} ${TEST_SRC_H}) +link_libraries("udev") + +add_executable(${PROJECT_NAME_TEST} ${INFO_SRCS} ${CONTROL_SRCS} ${TEST_SRC_CPP} ${TEST_SRC_H}) -target_include_directories(${PROJECT_NAME_TEST} - PUBLIC ${DtkWidget_INCLUDE_DIRS} ${OBJECT_BINARY_DIR}) +include_directories("/usr/include/cups/") + +target_include_directories(${PROJECT_NAME_TEST} PUBLIC + ${DtkWidget_INCLUDE_DIRS} + ${OBJECT_BINARY_DIR} + ) target_link_libraries(${PROJECT_NAME_TEST} Qt5::Core @@ -89,23 +100,15 @@ target_link_libraries(${PROJECT_NAME_TEST} ${DtkWidget_LIBRARIES} ${DtkCore_LIBRARIES} ${DtkGUI_LIBRARIES} - ${DFrameworkdbus_LIBRARIES} ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} PolkitQt5-1::Agent pthread kmod QApt + cups ) -add_custom_target(test-server - COMMAND echo " =================== TEST BEGIN ==================== " - COMMAND ${CMAKE_BINARY_DIR}/deepin-devicemanager-server/tests/${PROJECT_NAME_TEST} - COMMAND echo " =================== TEST END ==================== " -) -#'make test'命令依赖与我们的测试程序 -add_dependencies(test ${PROJECT_NAME_TEST}) - # 设置添加gocv相关信息的输出 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -fprofile-arcs -ftest-coverage -fstack-protector-strong -D_FORTITY_SOURCE=1 -z noexecstack -pie -fPIC -z lazy") diff --git a/deepin-devicemanager-server/tests/src/LoadInfo/ut_CpuInfo.cpp b/deepin-devicemanager-server/tests/src/LoadInfo/ut_CpuInfo.cpp index cdabcbb90..09a161a63 100644 --- a/deepin-devicemanager-server/tests/src/LoadInfo/ut_CpuInfo.cpp +++ b/deepin-devicemanager-server/tests/src/LoadInfo/ut_CpuInfo.cpp @@ -1,15 +1,18 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later #include "../ut_Head.h" #include #include "../stub.h" -#include "cpu/CpuInfo.h" +#include "cpu/cpuinfo.h" #include -#include "DeviceInfoManager.h" +#include "deviceinfomanager.h" +#include "DDLog.h" #include +using namespace DDLog; + class CpuInfo_UT : public UT_HEAD { public: @@ -39,7 +42,7 @@ TEST_F(CpuInfo_UT, ThreadPoolTask_UT_lscpu) CpuInfo cpu; if (cpu.loadCpuInfo()) { - qInfo() << cpu.arch(); + qCInfo(appLog) << cpu.arch(); EXPECT_TRUE(!cpu.arch().isEmpty()); QString info; diff --git a/deepin-devicemanager-server/tests/src/LoadInfo/ut_ThreadPoolTask.cpp b/deepin-devicemanager-server/tests/src/LoadInfo/ut_ThreadPoolTask.cpp index 0095f09ef..571765537 100644 --- a/deepin-devicemanager-server/tests/src/LoadInfo/ut_ThreadPoolTask.cpp +++ b/deepin-devicemanager-server/tests/src/LoadInfo/ut_ThreadPoolTask.cpp @@ -1,14 +1,14 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later #include "../ut_Head.h" #include #include "../stub.h" -#include "ThreadPoolTask.h" +#include "threadpooltask.h" #include -#include "cpu/CpuInfo.h" -#include "DeviceInfoManager.h" +#include "cpu/cpuinfo.h" +#include "deviceinfomanager.h" class ThreadPoolTask_UT : public UT_HEAD { diff --git a/deepin-devicemanager-server/tests/src/UsbDetect/ut_detectthread.cpp b/deepin-devicemanager-server/tests/src/UsbDetect/ut_detectthread.cpp index 825dea524..64064c51c 100644 --- a/deepin-devicemanager-server/tests/src/UsbDetect/ut_detectthread.cpp +++ b/deepin-devicemanager-server/tests/src/UsbDetect/ut_detectthread.cpp @@ -1,10 +1,9 @@ -// Copyright (C) 2019 ~ 2020 UnionTech Software Technology Co.,Ltd -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "DetectThread.h" -#include "MonitorUsb.h" +#include "detectthread.h" +#include "monitorusb.h" #include "../ut_Head.h" #include #include "../stub.h" diff --git a/deepin-devicemanager-server/tests/src/UsbDetect/ut_monitorusb.cpp b/deepin-devicemanager-server/tests/src/UsbDetect/ut_monitorusb.cpp index 754190a9e..95622cbdf 100644 --- a/deepin-devicemanager-server/tests/src/UsbDetect/ut_monitorusb.cpp +++ b/deepin-devicemanager-server/tests/src/UsbDetect/ut_monitorusb.cpp @@ -1,9 +1,8 @@ -// Copyright (C) 2019 ~ 2020 UnionTech Software Technology Co.,Ltd -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "MonitorUsb.h" +#include "monitorusb.h" #include "../ut_Head.h" #include #include "../stub.h" diff --git a/deepin-devicemanager-server/tests/src/addr_pri.h b/deepin-devicemanager-server/tests/src/addr_pri.h index 70719b223..8d698467c 100644 --- a/deepin-devicemanager-server/tests/src/addr_pri.h +++ b/deepin-devicemanager-server/tests/src/addr_pri.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/tests/src/cmake-lcov-test.sh b/deepin-devicemanager-server/tests/src/cmake-lcov-test.sh index a259fb7a1..0a7f2f005 100644 --- a/deepin-devicemanager-server/tests/src/cmake-lcov-test.sh +++ b/deepin-devicemanager-server/tests/src/cmake-lcov-test.sh @@ -1,6 +1,6 @@ #!/bin/bash -# SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +# SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. # # SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/tests/src/stub.h b/deepin-devicemanager-server/tests/src/stub.h index c89cf354b..6ec33111e 100644 --- a/deepin-devicemanager-server/tests/src/stub.h +++ b/deepin-devicemanager-server/tests/src/stub.h @@ -1,4 +1,4 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2022 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later diff --git a/deepin-devicemanager-server/tests/src/test_main.cpp b/deepin-devicemanager-server/tests/src/test_main.cpp index 3c566289c..161e597bd 100644 --- a/deepin-devicemanager-server/tests/src/test_main.cpp +++ b/deepin-devicemanager-server/tests/src/test_main.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -9,9 +8,13 @@ using namespace std; #include #include "gtest/gtest.h" #include + +DCORE_USE_NAMESPACE + // gtest的入口函数 int main(int argc, char **argv) { + qputenv("QT_QPA_PLATFORM", "offscreen"); QApplication a(argc, argv); ::testing::InitGoogleTest(&argc, argv); diff --git a/deepin-devicemanager-server/tests/src/ut_Head.h b/deepin-devicemanager-server/tests/src/ut_Head.h index bb3965b65..fa59af8a2 100644 --- a/deepin-devicemanager-server/tests/src/ut_Head.h +++ b/deepin-devicemanager-server/tests/src/ut_Head.h @@ -1,11 +1,11 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later #ifndef UT_HEAD_HH #define UT_HEAD_HH #include -#include +#include class UT_HEAD : public testing::Test { public: diff --git a/deepin-devicemanager-server/tests/src/ut_debugtimemanager.cpp b/deepin-devicemanager-server/tests/src/ut_debugtimemanager.cpp index 6154161aa..ba0277a3f 100644 --- a/deepin-devicemanager-server/tests/src/ut_debugtimemanager.cpp +++ b/deepin-devicemanager-server/tests/src/ut_debugtimemanager.cpp @@ -1,5 +1,4 @@ -// Copyright (C) 2019 ~ 2020 UnionTech Software Technology Co.,Ltd -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later @@ -8,7 +7,7 @@ #define private public // hack complier #define protected public -#include "../src/DebugTimeManager.h" +#include "debugtimemanager.h" #undef private #undef protected diff --git a/deepin-devicemanager-server/tests/src/ut_mainjob.cpp b/deepin-devicemanager-server/tests/src/ut_mainjob.cpp index 762bcc76c..5f5c096cd 100644 --- a/deepin-devicemanager-server/tests/src/ut_mainjob.cpp +++ b/deepin-devicemanager-server/tests/src/ut_mainjob.cpp @@ -1,9 +1,8 @@ -// Copyright (C) 2019 ~ 2020 UnionTech Software Technology Co.,Ltd -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// SPDX-FileCopyrightText: 2019 ~ 2023 UnionTech Software Technology Co., Ltd. // // SPDX-License-Identifier: GPL-3.0-or-later -#include "MainJob.h" +#include "mainjob.h" #include "ut_Head.h" #include #include "stub.h" @@ -15,7 +14,7 @@ class MainJob_UT : public UT_HEAD public: void SetUp() { - m_mainJob = new MainJob; + m_mainJob = new MainJob("org.deepin.DeviceInfo"); } void TearDown() { @@ -34,36 +33,23 @@ bool ut_initDBus() return true; } -TEST_F(MainJob_UT, MainJob_UT_working) -{ - Stub stub; - stub.set((void (QProcess::*)(const QString &, QIODevice::OpenMode))ADDR(QProcess, start), ut_process_start); - // stub.set(ADDR(MainJob,initDBus),ut_initDBus); - m_mainJob->working(); -} - TEST_F(MainJob_UT, MainJob_UT_executeClientInstruction) { - m_mainJob->m_FirstUpdate = true; + m_mainJob->m_firstUpdate = true; m_mainJob->executeClientInstruction("UPDATE_UI"); } -TEST_F(MainJob_UT, MainJob_UT_isZhaoXin) -{ - // m_mainJob->isZhaoXin(); -} - TEST_F(MainJob_UT, MainJob_UT_slotUsbChanged) { m_mainJob->slotUsbChanged(); } -TEST_F(MainJob_UT, MainJob_UT_onFirstUpdate) +TEST_F(MainJob_UT, MainJob_UT_clientIsRunning) { - m_mainJob->onFirstUpdate(); + m_mainJob->clientIsRunning(); } -TEST_F(MainJob_UT, MainJob_UT_initDBus) +TEST_F(MainJob_UT, MainJob_UT_serverIsRunning) { - m_mainJob->initDBus(); + m_mainJob->serverIsRunning(); } diff --git a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxabstractsheet.h b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxabstractsheet.h index 7aa416dc2..0b88b6f99 100644 --- a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxabstractsheet.h +++ b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxabstractsheet.h @@ -24,7 +24,6 @@ ****************************************************************************/ #ifndef XLSXABSTRACTSHEET_H #define XLSXABSTRACTSHEET_H - #include "xlsxabstractooxmlfile.h" #include #include diff --git a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxchart.cpp b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxchart.cpp index eecee1fcd..4382df1b2 100644 --- a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxchart.cpp +++ b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxchart.cpp @@ -27,14 +27,17 @@ #include "xlsxworksheet.h" #include "xlsxcellrange.h" #include "xlsxutility_p.h" +#include "DDLog.h" #include #include #include -#include - +#include +#include "DDLog.h" QT_BEGIN_NAMESPACE_XLSX +using namespace DDLog; + ChartPrivate::ChartPrivate(Chart *q, Chart::CreateFlag flag) : AbstractOOXmlFilePrivate(q, flag) , chartType(static_cast(0)) @@ -270,7 +273,7 @@ bool ChartPrivate::loadXmlXxxChart(QXmlStreamReader &reader) else if (name == QLatin1String("areaChart")) chartType = Chart::CT_Area; else if (name == QLatin1String("area3DChart")) chartType = Chart::CT_Area3D; else if (name == QLatin1String("doughnutChart")) chartType = Chart::CT_Doughnut; - else qInfo() << "Cann't load chart: " << name; + else qCInfo(appLog) << "Cann't load chart: " << name; while (!reader.atEnd()) { reader.readNextStartElement(); diff --git a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxconditionalformatting.cpp b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxconditionalformatting.cpp index 5b0b0dbba..e69b50ad5 100644 --- a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxconditionalformatting.cpp +++ b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxconditionalformatting.cpp @@ -31,8 +31,8 @@ #include #include -#include - +#include +#include "DDLog.h" QT_BEGIN_NAMESPACE_XLSX ConditionalFormattingPrivate::ConditionalFormattingPrivate() diff --git a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxcontenttypes.cpp b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxcontenttypes.cpp index d9ad35015..4b0230e6e 100755 --- a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxcontenttypes.cpp +++ b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxcontenttypes.cpp @@ -28,7 +28,10 @@ #include #include #include -#include +#include +#include "DDLog.h" + +using namespace DDLog; namespace QXlsx { @@ -196,7 +199,7 @@ bool ContentTypes::loadFromXmlFile(QIODevice *device) } if (reader.hasError()) { - qInfo()< #include #include +#include +#include "DDLog.h" + +using namespace DDLog; namespace QXlsx { @@ -148,7 +152,7 @@ bool DocPropsApp::loadFromXmlFile(QIODevice *device) } if (reader.hasError()) { - qDebug("Error when read doc props app file."); + qCDebug(appLog)<<"Error when read doc props app file."; } } return true; diff --git a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxdocpropscore.cpp b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxdocpropscore.cpp index 46d6c7dac..be10650eb 100644 --- a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxdocpropscore.cpp +++ b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxdocpropscore.cpp @@ -29,9 +29,11 @@ #include #include #include -#include +#include #include +#include "DDLog.h" +using namespace DDLog; namespace QXlsx { DocPropsCore::DocPropsCore(CreateFlag flag) @@ -158,7 +160,7 @@ bool DocPropsCore::loadFromXmlFile(QIODevice *device) } if (reader.hasError()) { - qInfo()<<"Error when read doc props core file."< #include #include -#include +#include +#include "DDLog.h" #include +using namespace DDLog; + namespace QXlsx { /* @@ -84,7 +87,7 @@ int SharedStrings::addSharedString(const RichString &string) void SharedStrings::incRefByStringIndex(int idx) { if (idx <0 || idx >= m_stringList.size()) { - qDebug("SharedStrings: invlid index"); + qCDebug(appLog)<<"SharedStrings: invlid index"; return; } @@ -385,12 +388,12 @@ bool SharedStrings::loadFromXmlFile(QIODevice *device) } if (hasUniqueCountAttr && m_stringList.size() != count) { - qDebug("Error: Shared string count"); + qCDebug(appLog)<<"Error: Shared string count"; return false; } if (m_stringList.size() != m_stringTable.size()) { - //qDebug("Warning: Duplicated items exist in shared string table."); + //qCDebug(appLog)<<"Warning: Duplicated items exist in shared string table."; //Nothing we can do here, as indices of the strings will be used when loading sheets. } diff --git a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxstyles.cpp b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxstyles.cpp index 7989de025..84c9d541d 100755 --- a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxstyles.cpp +++ b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxstyles.cpp @@ -31,9 +31,10 @@ #include #include #include -#include +#include +#include "DDLog.h" #include - +using namespace DDLog; namespace QXlsx { /* @@ -728,10 +729,10 @@ bool Styles::readNumFmts(QXmlStreamReader &reader) } if (reader.hasError()) - qWarning()<= m_fontsList.size()) { - qDebug("Error read styles.xml, cellXfs fontId"); + qCDebug(appLog)<<"Error read styles.xml, cellXfs fontId"; } else { bool apply = parseXsdBoolean(xfAttrs.value(QLatin1String("applyFont")).toString()); if(apply) { @@ -1093,7 +1094,7 @@ bool Styles::readCellXfs(QXmlStreamReader &reader) if (xfAttrs.hasAttribute(QLatin1String("fillId"))) { int id = xfAttrs.value(QLatin1String("fillId")).toString().toInt(); if (id >= m_fillsList.size()) { - qDebug("Error read styles.xml, cellXfs fillId"); + qCDebug(appLog)<<"Error read styles.xml, cellXfs fillId"; } else { bool apply = parseXsdBoolean(xfAttrs.value(QLatin1String("applyFill")).toString()); if(apply) { @@ -1109,7 +1110,7 @@ bool Styles::readCellXfs(QXmlStreamReader &reader) if (xfAttrs.hasAttribute(QLatin1String("borderId"))) { int id = xfAttrs.value(QLatin1String("borderId")).toString().toInt(); if (id >= m_bordersList.size()) { - qDebug("Error read styles.xml, cellXfs borderId"); + qCDebug(appLog)<<"Error read styles.xml, cellXfs borderId"; } else { bool apply = parseXsdBoolean(xfAttrs.value(QLatin1String("applyBorder")).toString()); if(apply) { @@ -1181,10 +1182,10 @@ bool Styles::readCellXfs(QXmlStreamReader &reader) } if (reader.hasError()) - qWarning()< #include #include -#include +#include +#include "DDLog.h" + +using namespace DDLog; namespace QXlsx { @@ -258,7 +261,7 @@ QString convertSharedFormula(const QString &rootFormula, const CellReference &ro QStringList result; typedef QPair PairType; foreach (PairType p, segments) { - //qInfo()< #include @@ -40,6 +41,7 @@ #include #include +using namespace DDLog; QT_BEGIN_NAMESPACE_XLSX WorkbookPrivate::WorkbookPrivate(Workbook *q, Workbook::CreateFlag flag) : @@ -216,7 +218,7 @@ AbstractSheet *Workbook::addSheet(const QString &name, int sheetId, AbstractShee } else if (type == AbstractSheet::ST_ChartSheet) { sheet = new Chartsheet(name, sheetId, this, F_LoadFromExists); } else { - qWarning("unsupported sheet type."); + qCWarning(appLog)<<"unsupported sheet type."; Q_ASSERT(false); } d->sheets.append(QSharedPointer(sheet)); @@ -244,7 +246,7 @@ AbstractSheet *Workbook::insertSheet(int index, const QString &name, AbstractShe sheetName = QStringLiteral("Chart%1").arg(d->last_chartsheet_index); } while (d->sheetNames.contains(sheetName)); } else { - qWarning("unsupported sheet type."); + qCWarning(appLog)<<"unsupported sheet type."; return 0; } } @@ -581,7 +583,7 @@ bool Workbook::loadFromXmlFile(QIODevice *device) else if (relationship.type.endsWith(QLatin1String("/xlMacrosheet"))) type = AbstractSheet::ST_MacroSheet; else - qWarning("unknown sheet type"); + qCWarning(appLog)<<"unknown sheet type"; AbstractSheet *sheet = addSheet(name, sheetId, type); sheet->setSheetState(state); diff --git a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxworksheet.cpp b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxworksheet.cpp index ab0bf33bb..1d326ad9f 100755 --- a/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxworksheet.cpp +++ b/deepin-devicemanager/3rdparty/QtXlsxWriter/src/xlsx/xlsxworksheet.cpp @@ -41,6 +41,7 @@ #include "xlsxchart.h" #include "xlsxcellformula.h" #include "xlsxcellformula_p.h" +#include "DDLog.h" #include #include @@ -48,7 +49,8 @@ #include #include #include -#include +#include +#include "DDLog.h" #include #include #include @@ -58,6 +60,7 @@ #include QT_BEGIN_NAMESPACE_XLSX +using namespace DDLog; WorksheetPrivate::WorksheetPrivate(Worksheet *p, Worksheet::CreateFlag flag) : AbstractSheetPrivate(p, flag) @@ -1955,7 +1958,7 @@ void WorksheetPrivate::loadXmlSheetData(QXmlStreamReader &reader) format = workbook->styles()->xfFormat(idx); ////Empty format exists in styles xf table of real .xlsx files, see issue #65. //if (!format.isValid()) - // qInfo()<Invalid style index: ").arg(idx)<Invalid style index: ").arg(idx)< +#include +#include "DDLog.h" #include namespace QXlsx { diff --git a/deepin-devicemanager/3rdparty/docx/document.cpp b/deepin-devicemanager/3rdparty/docx/document.cpp index da70c0dc0..6ee50d15c 100644 --- a/deepin-devicemanager/3rdparty/docx/document.cpp +++ b/deepin-devicemanager/3rdparty/docx/document.cpp @@ -8,10 +8,12 @@ #include "package.h" #include "text.h" #include "table.h" +#include "DDLog.h" -#include +#include #include +using namespace DDLog; using namespace Docx; Document::Document() @@ -27,7 +29,7 @@ Document::Document() Document::Document(const QString &name) { - qInfo() << "construct docx document from " << name; + qCInfo(appLog) << "construct docx document from " << name; Q_ASSERT_X(QFile::exists(name), "filed", "can not find the path!"); @@ -121,13 +123,13 @@ QList Document::tables() Document::~Document() { - qInfo() << "delete Docx::Document."; + qCInfo(appLog) << "delete Docx::Document."; delete m_docPart; delete m_package; } void Document::save(const QString &path) { - qInfo() << "save docx file: " << path; + qCInfo(appLog) << "save docx file: " << path; m_package->save(path); } diff --git a/deepin-devicemanager/3rdparty/docx/image/image.cpp b/deepin-devicemanager/3rdparty/docx/image/image.cpp index 175c8fd99..32fdfe5ab 100644 --- a/deepin-devicemanager/3rdparty/docx/image/image.cpp +++ b/deepin-devicemanager/3rdparty/docx/image/image.cpp @@ -8,7 +8,7 @@ #include #include #include -#include +#include namespace Docx { diff --git a/deepin-devicemanager/3rdparty/docx/opc/packagereader.cpp b/deepin-devicemanager/3rdparty/docx/opc/packagereader.cpp index 68325fc91..c01e18b93 100644 --- a/deepin-devicemanager/3rdparty/docx/opc/packagereader.cpp +++ b/deepin-devicemanager/3rdparty/docx/opc/packagereader.cpp @@ -8,7 +8,7 @@ #include "serializedrelationships.h" #include "packuri.h" -#include +#include namespace Docx { diff --git a/deepin-devicemanager/3rdparty/docx/oxml/oxmltable.cpp b/deepin-devicemanager/3rdparty/docx/oxml/oxmltable.cpp index 5a0e201f3..e87e9a5cf 100644 --- a/deepin-devicemanager/3rdparty/docx/oxml/oxmltable.cpp +++ b/deepin-devicemanager/3rdparty/docx/oxml/oxmltable.cpp @@ -4,9 +4,12 @@ #include "oxmltable.h" #include "../table.h" +#include "DDLog.h" #include -#include +#include + +using namespace DDLog; namespace Docx { @@ -586,7 +589,7 @@ void CT_Tc::moveContentTo(CT_Tc *top_tc) int i = 0; QDomNodeList nodes = m_ele.childNodes(); int count = nodes.count() - 1; - qInfo() << "nodes count : " << count; + qCInfo(appLog) << "nodes count : " << count; QDomNode firstN = m_ele.firstChild(); if (firstN.nodeName() == QStringLiteral("w:tcPr")) i = 1; diff --git a/deepin-devicemanager/3rdparty/docx/package.cpp b/deepin-devicemanager/3rdparty/docx/package.cpp index bdf96b133..1929d3057 100644 --- a/deepin-devicemanager/3rdparty/docx/package.cpp +++ b/deepin-devicemanager/3rdparty/docx/package.cpp @@ -9,7 +9,7 @@ #include "shared.h" #include -#include +#include namespace Docx { Package::Package() diff --git a/deepin-devicemanager/3rdparty/docx/parts/documentpart.cpp b/deepin-devicemanager/3rdparty/docx/parts/documentpart.cpp index 1711b8856..a58215730 100644 --- a/deepin-devicemanager/3rdparty/docx/parts/documentpart.cpp +++ b/deepin-devicemanager/3rdparty/docx/parts/documentpart.cpp @@ -10,8 +10,11 @@ #include "../oxml/oxmlshape.h" #include "../package.h" #include "imagepart.h" +#include "DDLog.h" -#include +#include + +using namespace DDLog; namespace Docx { @@ -70,7 +73,7 @@ Table *DocumentPart::addTable(int rows, int cols, const QString &style) } void DocumentPart::afterUnmarshal() { - qInfo() << "afetrUnmarshal"; + qCInfo(appLog) << "afetrUnmarshal"; } QDomDocument *DocumentPart::element() const diff --git a/deepin-devicemanager/3rdparty/docx/parts/imagepart.cpp b/deepin-devicemanager/3rdparty/docx/parts/imagepart.cpp index 469df875a..30e370605 100644 --- a/deepin-devicemanager/3rdparty/docx/parts/imagepart.cpp +++ b/deepin-devicemanager/3rdparty/docx/parts/imagepart.cpp @@ -4,9 +4,11 @@ #include "imagepart.h" #include "../shared.h" +#include "DDLog.h" -#include +#include +using namespace DDLog; namespace Docx { @@ -52,13 +54,13 @@ Length ImagePart::defaultCy() const ImagePart *ImagePart::load(const PackURI &partName, const QString &contentType, const QByteArray &blob, Image *image) { - //qInfo() << "Image Name" << partName << " image ext " << partName.ext(); + //qCInfo(appLog) << "Image Name" << partName << " image ext " << partName.ext(); return new ImagePart(partName, contentType, blob, image); } ImagePart *ImagePart::fromImage(const PackURI &partName, Image *image, const QByteArray &hash) { - //qInfo() << "Image Name" << partName << " image ext " << partName.ext(); + //qCInfo(appLog) << "Image Name" << partName << " image ext " << partName.ext(); return new ImagePart(partName, image->contentType(), QByteArray(), image, hash); } diff --git a/deepin-devicemanager/3rdparty/docx/shared.cpp b/deepin-devicemanager/3rdparty/docx/shared.cpp index 8455d4749..34700d5af 100644 --- a/deepin-devicemanager/3rdparty/docx/shared.cpp +++ b/deepin-devicemanager/3rdparty/docx/shared.cpp @@ -3,11 +3,14 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "shared.h" +#include "DDLog.h" #include #include #include -#include +#include + +using namespace DDLog; namespace Docx{ @@ -99,12 +102,12 @@ QByteArray byteHash(const QByteArray &bytes) InvalidSpanError::InvalidSpanError(const QString &errorStr) : m_error(errorStr) { - qInfo() << m_error; + qCInfo(appLog) << m_error; } void InvalidSpanError::raise() const { - qInfo() << m_error; + qCInfo(appLog) << m_error; throw *this; } diff --git a/deepin-devicemanager/3rdparty/docx/table.cpp b/deepin-devicemanager/3rdparty/docx/table.cpp index e7b67d6c0..e14253a2b 100644 --- a/deepin-devicemanager/3rdparty/docx/table.cpp +++ b/deepin-devicemanager/3rdparty/docx/table.cpp @@ -5,10 +5,12 @@ #include "table.h" #include "text.h" #include "./parts/documentpart.h" +#include "DDLog.h" #include -#include -#include +#include + +using namespace DDLog; namespace Docx { @@ -39,7 +41,7 @@ void Table::loadExistRowElement() continue; Row *row = new Row(rowEle, this); m_rows.append(row); - qInfo() << m_rows.count(); + qCInfo(appLog) << m_rows.count(); } } } @@ -197,7 +199,7 @@ void Row::loadExistElement() } } - //qInfo() << "Current row's cell count" << m_cells.count(); + //qCInfo(appLog) << "Current row's cell count" << m_cells.count(); } void Row::addTc() diff --git a/deepin-devicemanager/3rdparty/docx/text.cpp b/deepin-devicemanager/3rdparty/docx/text.cpp index d7809da44..ed950351c 100644 --- a/deepin-devicemanager/3rdparty/docx/text.cpp +++ b/deepin-devicemanager/3rdparty/docx/text.cpp @@ -9,7 +9,7 @@ #include "./shape.h" #include -#include +#include #include namespace Docx { diff --git a/deepin-devicemanager/CMakeLists.txt b/deepin-devicemanager/CMakeLists.txt index 4cae8c41b..5650b6669 100644 --- a/deepin-devicemanager/CMakeLists.txt +++ b/deepin-devicemanager/CMakeLists.txt @@ -50,6 +50,15 @@ if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "sw_64") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mieee") endif () +# 判断系统环境 +execute_process(COMMAND cat /etc/os-version OUTPUT_VARIABLE OS_INFO_STR) +string(REGEX MATCHALL "MajorVersion=[0-9]+" MAJOR_STR "${OS_INFO_STR}") +string(REGEX MATCH "[0-9]+" MAJOR_VERSION "${MAJOR_STR}") +if (MAJOR_VERSION MATCHES "23") + message("--------------------- OS_BUILD_V23 on") + add_definitions(-DOS_BUILD_V23) +endif() + #compile flags if (CMAKE_BUILD_TYPE MATCHES Debug) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -Wextra") @@ -66,7 +75,6 @@ else() endif() #Generate the qm file -#message(${CMAKE_CURRENT_SOURCE_DIR}) execute_process(COMMAND bash ${APP_TRANS_SCRIPT} WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/") configure_file(src/environments.h.in environments.h @ONLY) configure_file(src/config.h.in config.h @ONLY) @@ -94,10 +102,10 @@ include_directories(${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/QtXlsxWriter/include/Qt include_directories("/usr/include/cups/") link_libraries("cups") +include_directories(${CMAKE_CURRENT_LIST_DIR}/src/DDLog/) file(GLOB_RECURSE SRC_CPP ${CMAKE_CURRENT_LIST_DIR}/src/*.cpp ${CMAKE_CURRENT_LIST_DIR}/3rdparty/*.cpp) file(GLOB_RECURSE SRC_H ${CMAKE_CURRENT_LIST_DIR}/src/*.h ${CMAKE_CURRENT_LIST_DIR}/3rdparty/*.h) - # Find the library find_package(PkgConfig REQUIRED) find_package(Qt5Widgets REQUIRED) @@ -105,12 +113,9 @@ find_package(Qt5 COMPONENTS DBus REQUIRED) find_package(Qt5Network REQUIRED) find_package(Qt5Gui REQUIRED) find_package(Qt5Xml REQUIRED) -find_package(QApt REQUIRED) find_package(PolkitQt5-1 REQUIRED) find_package(DtkWidget REQUIRED) find_package(DtkCore REQUIRED) -find_package(DFrameworkdbus REQUIRED) - include_directories(${Qt5Gui_PRIVATE_INCLUDE_DIRS}) @@ -121,8 +126,6 @@ target_include_directories(${APP_BIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS} ${OB target_link_libraries(${APP_BIN_NAME} ${DtkWidget_LIBRARIES} ${DtkCore_LIBRARIES} - ${DFrameworkdbus_LIBRARIES} - Qt5::Core Qt5::Gui Qt5::Widgets @@ -134,7 +137,6 @@ target_link_libraries(${APP_BIN_NAME} # Install files install(TARGETS deepin-devicemanager DESTINATION ${CMAKE_INSTALL_BINDIR}) - file(GLOB APP_QM_FILES "translations/*.qm") install(FILES ${APP_QM_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/deepin-devicemanager/translations) install(FILES ${APP_DESKTOP} DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) @@ -142,6 +144,14 @@ install(FILES ${APP_ICON_FILE} DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolo install(DIRECTORY ${APP_RES_DIR}/deepin-devicemanager DESTINATION ${CMAKE_INSTALL_DATADIR}/deepin-manual/manual-assets/application/) install(FILES ${APP_AUTHENTICATION} DESTINATION ${CMAKE_INSTALL_DATADIR}/polkit-1/actions) install(FILES ${APP_SERVICE} DESTINATION ${CMAKE_INSTALL_DATADIR}/dbus-1/services) +install(FILES ${CMAKE_SOURCE_DIR}/deepin-devicemanager/assets/deepin-devicemanager.json DESTINATION /usr/share/deepin-log-viewer/deepin-log.conf.d/) +#hw机型增加DConfig配置 +set(APPID org.deepin.devicemanager) +set(configFile ${PROJECT_SOURCE_DIR}/assets/org.deepin.devicemanager.json) +if (DEFINED DSG_DATA_DIR) + message("-- DConfig is supported by DTK") + dconfig_meta_files(APPID ${APPID} FILES ${configFile}) +endif() # Test--------deepin-devicemanager if (CMAKE_COVERAGE_ARG STREQUAL "CMAKE_COVERAGE_ARG_ON") diff --git a/deepin-devicemanager/assets/appimage.qrc b/deepin-devicemanager/assets/appimage.qrc index e8f112d72..7b9a8fd3e 100644 --- a/deepin-devicemanager/assets/appimage.qrc +++ b/deepin-devicemanager/assets/appimage.qrc @@ -96,5 +96,18 @@ icons/deepin/builtin/texts/install_16px.svg icons/deepin/builtin/texts/retest_16px.svg icons/deepin/builtin/texts/update-btn_16px.svg + icons/deepin/builtin/icons/restore_128.svg + icons/deepin/builtin/icons/restore_96.svg + icons/deepin/builtin/icons/backup_96.svg + icons/deepin/builtin/light/restore.svg + icons/deepin/builtin/light/backup.svg + icons/deepin/builtin/light/texts/com_20px.svg + icons/deepin/builtin/light/texts/driverbackup_20px.svg + icons/deepin/builtin/light/texts/driverinstall_20px.svg + icons/deepin/builtin/light/texts/driverrestore_20px.svg + icons/deepin/builtin/light/texts/handle_20px.svg + icons/deepin/builtin/light/texts/microphone_20px.svg + icons/deepin/builtin/light/texts/scanner_20px.svg + icons/deepin/builtin/light/texts/touchPad_20px.svg diff --git a/deepin-devicemanager/assets/com.deepin.deepin-devicemanager.policy b/deepin-devicemanager/assets/com.deepin.deepin-devicemanager.policy index bfc57071b..2880992bb 100644 --- a/deepin-devicemanager/assets/com.deepin.deepin-devicemanager.policy +++ b/deepin-devicemanager/assets/com.deepin.deepin-devicemanager.policy @@ -11,7 +11,7 @@ no no - auth_self + auth_admin_keep Check Authentication Authentication is required to perform this action diff --git a/deepin-devicemanager/assets/deepin-devicemanager.json b/deepin-devicemanager/assets/deepin-devicemanager.json new file mode 100644 index 000000000..46a03098b --- /dev/null +++ b/deepin-devicemanager/assets/deepin-devicemanager.json @@ -0,0 +1,15 @@ +{ + "name": "deepin-devicemanager", + "group": "", + "submodules": [ + { + "name": "deepin-devicemanager", + "filter": "", + "exec": "/usr/bin/deepin-devicemanager", + "logType": "journal", + "logPath": "" + } + ], + "visible": true, + "version": "V2.0" +} diff --git a/deepin-devicemanager/assets/dumpTomlFileName.sh b/deepin-devicemanager/assets/dumpTomlFileName.sh new file mode 100644 index 000000000..2761ee488 --- /dev/null +++ b/deepin-devicemanager/assets/dumpTomlFileName.sh @@ -0,0 +1,44 @@ +#!/bin/bash +# Description : dumpTomlFileName +# Version: 20240830 first creator +# Function to clean the input # Remove "N/A" +# useage: sudo chmod +x dumpTomlFileName.sh run it ./dumpTomlFileName.sh + + +remove_special_chars() { + local input="$1" + if [[ "$input" == *"N/A"* ]]; then + input="" + fi + # Remove special characters using sed + input=$(echo "$input" | sed 's/[-\/'"'"'~!@#$%^&*(){}:;,.\"\\|~`]//g') + # Return cleaned input + echo "$input" +} + +# Run the dmidecode command and capture the output +output=$(sudo dmidecode -t 1) +# Parse the output using grep and awk +Manufacturer=$(echo "$output" | grep "Manufacturer" | awk -F ": " '{print $2}') +ProductName=$(echo "$output" | grep "Product Name" | awk -F ": " '{print $2}') +Version=$(echo "$output" | grep "Version" | awk -F ": " '{print $2}') + +# Remove special characters from each variable +Manufacturer_cleaned=$(remove_special_chars "$Manufacturer") +productname_cleaned=$(remove_special_chars "$ProductName") +version_cleaned=$(remove_special_chars "$Version") + +# Construct the TOML file name +tomlFileName="oeminfo_${Manufacturer_cleaned}_${productname_cleaned}_${version_cleaned}" +# Trim whitespace and convert to lowercase +tomlFileName=$(echo "$tomlFileName" | xargs | tr '[:upper:]' '[:lower:]') +# Remove spaces and add .toml extension +tomlFileName=$(echo "$tomlFileName" | tr -d ' ')".toml" +# Display the final TOML file name + +# check the file exist 判断文件是否存在 +if [ -f "/etc/deepin/hardware/${tomlFileName}" ];then +echo "TOML File Name /etc/deepin/hardware/${tomlFileName} exist" +else +echo "TOML File Name:$tomlFileName please mkdir /etc/deepin/hardware/ , and put in" +fi diff --git a/deepin-devicemanager/assets/icons/deepin/builtin/icons/backup_96.svg b/deepin-devicemanager/assets/icons/deepin/builtin/icons/backup_96.svg new file mode 100644 index 000000000..28cc65ef7 --- /dev/null +++ b/deepin-devicemanager/assets/icons/deepin/builtin/icons/backup_96.svg @@ -0,0 +1,63 @@ + + + status/backups + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deepin-devicemanager/assets/icons/deepin/builtin/icons/restore_128.svg b/deepin-devicemanager/assets/icons/deepin/builtin/icons/restore_128.svg new file mode 100644 index 000000000..907c4ab09 --- /dev/null +++ b/deepin-devicemanager/assets/icons/deepin/builtin/icons/restore_128.svg @@ -0,0 +1,73 @@ + + + status/restore_128 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deepin-devicemanager/assets/icons/deepin/builtin/icons/restore_96.svg b/deepin-devicemanager/assets/icons/deepin/builtin/icons/restore_96.svg new file mode 100644 index 000000000..554dd138e --- /dev/null +++ b/deepin-devicemanager/assets/icons/deepin/builtin/icons/restore_96.svg @@ -0,0 +1,73 @@ + + + status/restore_96 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/deepin-devicemanager/assets/icons/deepin/builtin/light/backup.svg b/deepin-devicemanager/assets/icons/deepin/builtin/light/backup.svg new file mode 100644 index 000000000..8e8f1337b --- /dev/null +++ b/deepin-devicemanager/assets/icons/deepin/builtin/light/backup.svg @@ -0,0 +1,7 @@ + + + action/backup + + + + \ No newline at end of file diff --git a/deepin-devicemanager/assets/icons/deepin/builtin/light/restore.svg b/deepin-devicemanager/assets/icons/deepin/builtin/light/restore.svg new file mode 100644 index 000000000..0b5aa2b9d --- /dev/null +++ b/deepin-devicemanager/assets/icons/deepin/builtin/light/restore.svg @@ -0,0 +1,7 @@ + + + action/restore + + + + \ No newline at end of file diff --git a/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverbackup_20px.svg b/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverbackup_20px.svg new file mode 100644 index 000000000..cb29ffa2b --- /dev/null +++ b/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverbackup_20px.svg @@ -0,0 +1,8 @@ + + + icon/light/驱动备份 + + + + + \ No newline at end of file diff --git a/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverinstall_20px.svg b/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverinstall_20px.svg new file mode 100644 index 000000000..538fcc6a4 --- /dev/null +++ b/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverinstall_20px.svg @@ -0,0 +1,7 @@ + + + icon/light/驱动安装 + + + + \ No newline at end of file diff --git a/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverrestore_20px.svg b/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverrestore_20px.svg new file mode 100644 index 000000000..6d6c87eb2 --- /dev/null +++ b/deepin-devicemanager/assets/icons/deepin/builtin/light/texts/driverrestore_20px.svg @@ -0,0 +1,10 @@ + + + icon/light/驱动还原 + + + + + + + \ No newline at end of file diff --git a/deepin-devicemanager/assets/oeminfo_sampleAnduseGuideLine.toml b/deepin-devicemanager/assets/oeminfo_sampleAnduseGuideLine.toml deleted file mode 100755 index 37fc1735d..000000000 --- a/deepin-devicemanager/assets/oeminfo_sampleAnduseGuideLine.toml +++ /dev/null @@ -1,611 +0,0 @@ -#详细说明见文件尾部 -[FileInfo] - FileName="oeminfo_tsinghuatongfangcomputer_e500__2200980001776100571.toml" - VendorInfo="fttf" - Version="0.0.1" - Data="2022-12-01" - -[Computer.VendorLabel] - Vendor="replace value" - Name="replace value" - HOME_URL="replace value" - OsDescription="replace value" - Type="replace value" - OS="replace value" - - -[CPU.VendorLabel] - Name="Intel(R) Core(TM) i7-10700 CPU @ 2.90GHz" - Vendor="Intel(R) Corporation" - CPU ID="replace value" - CPU implementer="replace value" - CPU architecture="replace value" - CPU variant="replace value" - CPU part="replace value" - CPU revision="replace value" - Core ID="replace value" - Threads="replace value" - Current Speed="replace value" - Max Speed="replace value" - BogoMIPS="replace value" - Architecture="replace value" - CPU Family="replace value" - Model="replace value" - Virtualization="replace value" - Flags="replace value" - Extensions="replace value" - L3 Cache="replace value" - L2 Cache="replace value" - L1i Cache="replace value" - L1d Cache="replace value" - Stepping="replace value" - Frequency="replace value" - -[Motherboard.BIOSInformation] - Name="BIOS Information" # 注意:该条Name 的值不更改 对应命令dmidecode -t 0 - Vendor="replace value" - Version="replace value" - Release Date="replace value" - Address="replace value" - Runtime Size="replace value" - ROM Size="replace value" - Characteristics="replace value" - BIOS Revision="replace value" - - Firmware Revision="replace value" - Chipset="replace value" - Asset Tag="replace value" - Location In Chassis="replace value" - Chassis Handle="replace value" - SMBIOS Version="replace value" - Serial Number="replace value" - Product Name="replace value" - -[Motherboard.BaseBoardInformation] - Name="Base Board Information" # 注意:该条Name 的值不更改 对应命令 dmidecode -t 2 - Vendor="replace value" - Manufacturer="replace value" - Product Name="replace value" - Version="replace value" - Serial Number="replace value" - Asset Tag="replace value" - Features="replace value" - Location In Chassis="replace value" - Chassis Handle="replace value" - Type="replace value" - Contained Object Handles="replace value" - - Chipset="replace value" - SMBIOS Version="replace value" - - -[Motherboard.ChassisInformation] - Name="Chassis Information" # 注意:该条Name 的值不更改 对应命令 dmidecode -t 3 - Manufacturer="replace value" - Type="replace value" - Lock="replace value" - Version="replace value" - Serial Number="replace value" - Asset Tag="replace value" - Boot-up State="replace value" - Power Supply State="replace value" - Thermal State="replace value" - Security Status="replace value" - OEM Information="replace value" - Height="replace value" - Number Of Power Cords="replace value" - Contained Elements="replace value" - SKU Number="replace value" - - - Chipset="replace value" - Location In Chassis="replace value" - Chassis Handle="replace value" - SMBIOS Version="replace value" - Product Name="replace value" - -[Motherboard.PhysicalMemoryArray] - Name="Physical Memory Array" # 注意:该条Name 的值不更改 对应命令 dmidecode -t 17 - Array Handle="replace value" - Error Information Handle="replace value" - Total Width="replace value" - Data Width="replace value" - Size="replace value" - Form Factor="replace value" - Set="replace value" - Locator="replace value" - Bank Locator="replace value" - Type="replace value" - Type Detail="replace value" - Speed="replace value" - Manufacturer="replace value" - Serial Number="replace value" - Asset Tag="replace value" - - Part Number="replace value" - Rank="replace value" - - Configured Memory Speed="replace value" - - Minimum Voltage="replace value" - Maximum Voltage="replace value" - Configured Voltage="replace value" - - Memory Technology="replace value" - Memory Operating Mode Capability="replace value" - Firmware Version="replace value" - Module Manufacturer ID="replace value" - - Number Of Devices="replace value" - Location="replace value" - Maximum Capacity="replace value" - Chipset="replace value" - - Location In Chassis="replace value" - Chassis Handle="replace value" - SMBIOS Version="replace value" - Product Name="replace value" - Type="replace value" - - -[Motherboard.SystemInformation] - Name="System Information" # 注意:该条Name 的值不更改 对应命令 dmidecode -t 1 - Vendor="replace value" - Asset Tag="replace value" - Location In Chassis="replace value" - Chassis Handle="replace value" - SMBIOS Version="replace value" - Serial Number="replace value" - Product Name="replace value" - - Manufacturer="replace value" - Version="replace value" - UUID="replace value" - Wake-up Type="replace value" - SKU Number="replace value" - Family="replace value" - Chipset="replace value" - - Release Date="replace value" - Address="replace value" - Runtime Size="replace value" - ROM Size="replace value" - Characteristics="replace value" - BIOS Revision="replace value" - Firmware Revision="replace value" - Asset Tag="replace value" - Features="replace value" - Type="replace value" - Contained Object Handles="replace value" - UUID="replace value" - Wake-up Type="replace value" - SKU Number="replace value" - Family="replace value" - Type="replace value" - Lock="replace value" - Serial Number="replace value" - Asset Tag="replace value" - Boot-up State="replace value" - Power Supply State="replace value" - Thermal State="replace value" - Security Status="replace value" - OEM Information="replace value" - Height="replace value" - Number Of Power Cords="replace value" - Contained Elements="replace value" - SKU Number="replace value" - Error Correction Type="replace value" - Error Information Handle="replace value" - BIOS ROMSIZE="replace value" - Release date="replace value" - Board Name="replace value" - Family="replace value" - BIOS Information="replace value" - Base Board Information="replace value" - System Information="replace value" - Chassis Information="replace value" - Physical Memory Array="replace value" - Language Description Format="replace value" - Installable Languages="replace value" - Currently Installed Language="replace value" - - -[Memory.VendorLabel] - Vendor="replace value" - Name="replace value" - Array Handle="replace value" - Error Information Handle="replace value" - Form Factor="replace value" - Set="replace value" - Bank Locator="replace value" - Type Detail="replace value" - Asset Tag="replace value" - Part Number="replace value" - Rank="replace value" - Memory Technology="replace value" - Memory Operating Mode Capability="replace value" - Firmware Version="replace value" - Module Manufacturer ID="replace value" - Module Product ID="replace value" - Memory Subsystem Controller Manufacturer ID="replace value" - Memory Subsystem Controller Product ID="replace value" - Non-Volatile Size="replace value" - Volatile Size="replace value" - Cache Size="replace value" - Logical Size="replace value" - Size="replace value" - Type="replace value" - Speed="replace value" - Total Width="replace value" - Locator="replace value" - Serial Number="replace value" - Configured Voltage="replace value" - Maximum Voltage="replace value" - Minimum Voltage="replace value" - Configured Speed="replace value" - Data Width="replace value" - -[Storage.VendorLabel] - Vendor="replace value" - Name="replace value" - Hardware Class="replace value" - Device File="replace value" - ansiVersion="replace value" - bus info="replace value" - logical name="replace value" - logicalsectorsize="replace value" - physical id="replace value" - sectorsize="replace value" - guid="replace value" - Config Status="replace value" - Device Number="replace value" - Geometry (Logical)="replace value" - Model="replace value" - Media Type="replace value" - Size="replace value" - Capabilities="replace value" - Firmware Version="replace value" - Speed="replace value" - Serial Number="replace value" - Interface="replace value" - Rotation Rate="replace value" - - -[Storage.2.VendorLabel] - Vendor="WDC" - Name="WDC WD10EZEX-08WN4A0" - Hardware Class="replace value" - Device File="replace value" - ansiVersion="replace value" - bus info="replace value" - logical name="replace value" - -[DisplayGPU.VendorLabel] - Vendor="replace value" - Name="replace value" - Modalias="pci:v00001002d00006611sv00001642sd00001997b" - Vendor_ID="1002" - Product_ID="8811" - Model="replace value" - Graphics Memory="replace value" - width="replace value" - clock="replace value" - irq="replace value" - capabilities="replace value" - bus info="replace value" - ioport="replace value" - memory="replace value" - Memory Address="replace value" - IO Port="replace value" - Bus Info="replace value" - Maximum Resolution="replace value" - Minimum Resolution="replace value" - Current Resolution="replace value" - Driver="replace value" - Description="replace value" - Clock="replace value" - DP="replace value" - eDP="replace value" - HDMI="replace value" - VGA="replace value" - DVI="replace value" - DigitalOutput="replace value" - Display Output="replace value" - Capabilities="replace value" - IRQ="replace value" - Device ="replace value" - SubVendor ="replace value" - SubDevice ="replace value" - Driver Modules ="replace value" - Config Status ="replace value" - latency ="replace value" - GDDR capacity ="replace value" - GPU vendor ="replace value" - GPU type ="replace value" - EGL version ="replace value" - EGL client APIs ="replace value" - GL version ="replace value" - GLSL version ="replace value" - -[Monitor.VendorLabel] - Vendor="VIEWSONIC" - Name="VIEWSONIC VA2430-H-3" - Date="replace value" - Type="replace value" - Display Input="replace value" - Interface Type="replace value" - Support Resolution="replace value" - Current Resolution="replace value" - Display Ratio="replace value" - Primary Monitor="replace value" - Size="replace value" - Serial Number="replace value" - Product Date="replace value" - -[NetWork.VendorLabel] - Vendor="replace value" - Name="replace value" - Modalias="pci:v00008086d0000A3F0sv00001849sd0000288Ab - ioport="replace value" - physical id="replace value" - network="replace value" - Type="replace value" - Bus Info="replace value" - Capabilities="replace value" - Driver Version="replace value" - Maximum Rate="replace value" - Negotiation Rate="replace value" - Port="replace value" - Multicast="replace value" - Link="replace value" - Latency="replace value" - IP="replace value" - Firmware="replace value" - Duplex="replace value" - Broadcast="replace value" - Auto Negotiation="replace value" - Memory Address="replace value" - IRQ="replace value" - MAC Address="replace value" - logical name="replace value" - -[SoundAudio.VendorLabel] - Vendor="replace value" - Name="replace value" - Modalias="pci:v00008086d0000A3F0sv00001849sd0000288Ab" - Device Name="replace value" - SubVendor="replace value" - SubDevice="replace value" - Driver Status="replace value" - Driver Activation Cmd="replace value" - Config Status="replace value" - latency="replace value" - Phys="replace value" - Sysfs="replace value" - Handlers="replace value" - PROP="replace value" - EV="replace value" - KEY="replace value" - Bus="replace value" -Version="replace value" - Driver="replace value" - SysFS_Path="replace value" - Chip="replace value" - Capabilities="replace value" - Memory Address="replace value" - IRQ="replace value" - -[Bluetooth.VendorLabel] - Vendor="replace value" - Name="replace value" - Modalias="usb:v8087p0AAAd0002dcE0dsc01dp01icE0isc" - Bus="replace value" - BD Address="replace value" - ACL MTU="replace value" - SCO MTU="replace value" - Features="replace value" - Packet type="replace value" - Link policy="replace value" - Link mode="replace value" - Class="replace value" - Service Classes="replace value" - Device Class="replace value" - HCI Version="replace value" - LMP Version="replace value" - Sub Version="replace value" - - Device="replace value" - Serial ID="replace value" - product="replace value" - Class="replace value" - Powered="replace value" - Discoverable="replace value" - Pairable="replace value" - UUID="replace value" - Discovering="replace value" - Model="replace value" - Speed="replace value" - Maximum Power="replace value" - Driver Version="replace value" - Capabilities="replace value" - Bus Info="replace value" - logical name="replace value" - MAC Address="replace value" - -[Power.VendorLabel] - Vendor="replace value" - Name="replace value" - native-path="replace value" - power supply="replace value" - updated="replace value" - has history="replace value" - has statistics="replace value" - rechargeable="replace value" - state="replace value" - warning-level="replace value" - energy="replace value" - energy-empty="replace value" - energy-full="replace value" - energy-full-design="replace value" - energy-rate="replace value" - voltage="replace value" - percentage="replace value" - technology="replace value" - icon-Name="replace value" - online="replace value" - daemon- Version="replace value" - on-battery="replace value" - lid-is-closed="replace value" - lid-is-present="replace value" - critical-action="replace value" - Model="replace value" - Serial Number="replace value" - Type="replace value" - Status="replace value" - Capacity="replace value" - Voltage="replace value" - Slot="replace value" - Design Capacity="replace value" - Design Voltage="replace value" - SBDS Version="replace value" - SBDS Serial Number="replace value" - SBDS Manufacture Date="replace value" - SBDS Chemistry="replace value" - Temperature="replace value" - -[Keyboard.VendorLabel] - Vendor="replace value" - Name="replace value" - Modalias="usb:v1A2Cp2D23d0110dc00dsc00dp00ic03isc" - Uniq="replace value" - PROP="replace value" - EV="replace value" - KEY="replace value" - MSC="replace value" - Device File="replace value" - Hardware Class="replace value" - physical id="replace value" - Model="replace value" - Interface="replace value" - Bus Info="replace value" - Speed="replace value" - Maximum Current="replace value" - Capabilities="replace value" - Revision="replace value" - Description="replace value" - -[Mouse.VendorLabel] - Vendor="replace value" - Name="replace value" - Modalias="usb:v1532p004Fd0200dc00dsc00dp00ic03isc" - Uniq="replace value" - PROP="replace value" - EV="replace value" - KEY="replace value" - MSC="replace value" - Device File="replace value" - Hardware Class="replace value" - physical id="replace value" - Model="replace value" - Interface="replace value" - Bus Info="replace value" - Speed="replace value" - Maximum Current="replace value" - Capabilities="replace value" - Revision="replace value" - Description="replace value" - -[Printer.VendorLabel] - Vendor="replace value" - Name="replace value" - copies="replace value" - job-cancel-after="replace value" - job-hold-until="replace value" - job-priority="replace value" - marker-change-time="replace value" - number-up="replace value" - orientation-requested="replace value" - print-color-mode="replace value" - printer-is-accepting-jobs="replace value" - printer-is-shared="replace value" - printer-is-temporary="replace value" - printer-state-change-time="replace value" - printer-state-reasons="replace value" - printer-type="replace value" - printer-uri-supported="replace value" - sides="replace value" - Model="replace value" - Serial Number="replace value" - Shared="replace value" - URI="replace value" - Status="replace value" - Interface Type="replace value" - printer-make-and-model="replace value" - -[Camera.VendorLabel] - Vendor="replace value" - Name="replace value" - Model="replace value" - Bus Info="replace value" - Speed="replace value" - Maximum Power="replace value" - Capabilities="replace value" - Serial Number="replace value" - - - -[CDROM.VendorLabel] - Vendor="replace value" - Name="replace value" - Serial ID="replace value" - Driver Modules="replace value" - Device File="replace value" - Device Files="replace value" - device Number="replace value" - Config Status="replace value" - Application="replace value" - physical id="replace value" - status="replace value" - logical name="replace value" - ansi Version="replace value" - Model="replace value" - Bus Info="replace value" - Capabilities="replace value" - Maximum Power="replace value" - Speed="replace value" - -[OtherDevices.VendorLabel] - Vendor="replace value" - Name="replace value" - Device File="replace value" - Hardware Class="replace value" - Model="replace value" - Bus Info="replace value" - Capabilities="replace value" - Maximum Power="replace value" - Speed="replace value" - Serial Number="replace value" - - -#1. 书写规则定义与说明: -#1-1. #号开关的为注释,文件格式按toml中表和键值对的格式书写,一个表头和下面的键值对代表一个设备信息;若信息不作替换处理,可不写上键值对。 -#1-2.表头命名格式为[hardClassName.VendorLabel] 其中的hardClassName已确定如上关键,不可更改,“.VendorLabel”可由厂商自行定义,或可没有。 -#1-3.键值对不可换行,键名取值已在代码中定义如上;相同键名,其值将替换同设备中对应的信息; replace value 需由厂商自行定义;若包括有"_NOUSE",该条信息将不被显示。 -#1-4.主板(Motherboard)相关信息显示中的Name键值对值不更改,且相同Name表数量不能超过一个,Motherboard表下共5个已定义名字设备。 -#1-5.Computer表数量不能超过一个。 - -#2 同设备匹配方法及处理方法如下 -#2-1."Modalias"与原显示设备中的Module Alias值相同会被当同一设备作信息替代; 包括有"_NOUSE"则该个设备所有信息将不会被显示。 -#2-2."Vendor_ID, Product_ID"与原显示设备中的"Physical ID"中VID和PID值相同会被当同一设备作信息替代; 包括有"_NOUSE"则该个设备所有信息将不会被显示。 -#2-3."Vendor, Name"包括有"_NOUSE"与原显示设备中的"Vendor,Name"值相同会被当同一设备作信息替代; 包括有"_NOUSE"则该个设备所有信息将不会被显示。 - - -#3 文件名相关说明如下: -#3-1.文件相关的描述,主要是方便管控升级, 格式为《oeminfo_manufacturer_productname_version_serialnumber.toml》 -#3-2.其中的关键字:Manufacturer、Product Name、Version、Serial Number,为命令sudo dmidecode -t 1 取其对应的值。 -#3-3.文件名按照Linux文件命名规则,且字母全转化为小写,并去掉不可显示特殊字符和空格及"-/'~!@#$%^&*(){}:;,.\"\\|~`"字符。 -#3-4.当前PC的文件名可从~/.cache/deepin/deepin-devicemanager/deepin-devicemanager.log中查询出,搜寻关键字为:“Toml File name is: /etc/deepin/hardware/"。 - -#4.设备管理器启动时,解析出该机型对应的oeminfo_xx.toml文件名,然后到目录 /etc/deepin/hardware/ 中查找该文件,并打开读取相应信息,按上述规则作处理并显示。 - - diff --git a/deepin-devicemanager/assets/oeminfo_sampleAnduseGuideLine_zh_CN.toml b/deepin-devicemanager/assets/oeminfo_sampleAnduseGuideLine_zh_CN.toml new file mode 100755 index 000000000..0afc0cc52 --- /dev/null +++ b/deepin-devicemanager/assets/oeminfo_sampleAnduseGuideLine_zh_CN.toml @@ -0,0 +1,506 @@ +#详细说明见文件下末部分: +[FileInfo] # +FileName ="toml_FileName_demosample20240911.toml" #1 : 文件名 只交流用 +VendorInfo ="toml_VendorInfo" #2 : 制造商信息 只交流用 +Version ="toml_Version" #3 : 版本 只交流用 +Data ="toml_Data" #4 : 数据 只交流用 + +[Computer.flagLabel] #(概况) +Vendor ="toml_Vendor" #1-1 : 制造商 +Name ="toml_Name" #1-2 : 名称 +Type ="toml_Type" #1-3 : 类型 +HOME_URL ="toml_HOME_URL" #2-1 : 主页 +OsDescription ="toml_OsDescription" #2-2 : 系统描述 +OS ="toml_OS" #2-3 : 操作系统 + +[CPU.flagLabel] #(处理器) +CPU ID ="toml_CPU ID" #1 : 逻辑处理器 +Name ="toml_Name" #2 : 名称 +Vendor ="toml_Vendor" #3 : 制造商 +CPU ID ="toml_CPU ID" #4 : 处理器ID +Core ID ="toml_Core ID" #5 : 核心ID +Threads ="toml_Threads" #6 : 线程数 +BogoMIPS ="toml_BogoMIPS" #7 : 运行速度(Bogomips) +Architecture ="toml_Architecture" #8 : 架构 +CPU Family ="toml_CPU Family" #9 : 家族 +Model ="toml_Model" #10 : 型号 +Stepping ="toml_Stepping" #11 : 步进 +L1d Cache ="toml_L1d Cache" #12 : L1缓存(数据) +L1i Cache ="toml_L1i Cache" #13 : L1缓存(指令) +L2 Cache ="toml_L2 Cache" #14 : L2缓存 +L3 Cache ="toml_L3 Cache" #15 : L3缓存 +Extensions ="toml_Extensions" #16 : 扩展指令集 +Flags ="toml_Flags" #17 : 特性 +Virtualization ="toml_Virtualization" #18 : 虚拟化 +CPU variant ="toml_CPU variant" #19 : CPU变量 +CPU architecture ="toml_CPU architecture" #20 : CPU架构 +CPU revision ="toml_CPU revision" #21 : CPU版本 +CPU implementer ="toml_CPU implementer" #22 : CPU程序 +CPU part ="toml_CPU part" #23 : CPU部件 + +[Motherboard.BIOSInformation] #(主板) +Name ="BIOS Information" #1 : 注意:该条Name 的值不更改 对应命令dmi.decode t 0 +Vendor ="toml_Vendor" #2 : 制造商 +Version ="toml_Version" #3 : 版本 +Chipset ="toml_Chipset" #4 : 芯片组 +BIOS Revision ="toml_BIOS Revision" #5 : BIOS修订版本 +ROM Size ="toml_ROM Size" #6 : ROM大小 +SMBIOS Version ="toml_SMBIOS Version" #7 : SMBIOS版本 +Product Name ="toml_Product Name" #8 : 产品名称 +Release Date ="toml_Release Date" #9 : 发布日期 +Firmware Revision ="toml_Firmware Revision" #10 : 固件修订版本 +Address ="toml_Address" #11 : 地址 +Serial Number ="toml_Serial Number" #12 : 序列号 +Location In Chassis ="toml_Location In Chassis" #13 : 机箱内位置 +Chassis Handle ="toml_Chassis Handle" #14 : 机箱程序 +Characteristics ="toml_Characteristics" #15 : 特性 +Asset Tag ="toml_Asset Tag" #16 : 资产编号 +Runtime Size ="toml_Runtime Size" #17 : 运行内存大小 + +[Motherboard.SystemInformation] #(主板) +Name ="System Information" #1 : 注意:该条Name 的值不更改 对应命令 dmi.decode t 1 +Vendor ="toml_Vendor" #2 : 制造商 +Version ="toml_Version" #3 : 版本 +Chipset ="toml_Chipset" #4 : 芯片组 +BIOS ROMSIZE ="toml_BIOS ROMSIZE" #5 : BIOS ROM大小 +BIOS Information ="toml_BIOS Information" #6 : BIOS信息 +BIOS Revision ="toml_BIOS Revision" #7 : BIOS修订版本 +OEM Information ="toml_OEM Information" #8 : OEM信息 +ROM Size ="toml_ROM Size" #9 : ROM大小 +SKU Number ="toml_SKU Number" #10 : SKU号 +SMBIOS Version ="toml_SMBIOS Version" #11 : SMBIOS版本 +UUID ="toml_UUID" #12 : UUID +Base Board Information ="toml_Base Board Information" #13 : 主板信息 +Product Name ="toml_Product Name" #14 : 产品名称 +Power Supply State ="toml_Power Supply State" #15 : 供电状态 +Physical Memory Array ="toml_Physical Memory Array" #16 : 内存插槽信息 +Contained Object Handles ="toml_Contained Object Handles" #17 : 包含对象程序 +Contained Elements ="toml_Contained Elements" #18 : 包含组件数 +Release date ="toml_Release date" #19 : 发布日期 +Installable Languages ="toml_Installable Languages" #20 : 可安装语言数 +Power Switch ="toml_Power Switch" #21 : 唤醒类型 +Firmware Revision ="toml_Firmware Revision" #22 : 固件修订版本 +Address ="toml_Address" #23 : 地址 +Security Status ="toml_Security Status" #24 : 安全状态 +Family ="toml_Family" #25 : 家族 +Serial Number ="toml_Serial Number" #26 : 序列号 +Currently Installed Language ="toml_Currently Installed Language" #27 : 当前安装语言 +Thermal State ="toml_Thermal State" #28 : 散热状态 +Chassis Information ="toml_Chassis Information" #29 : 机箱信息 +Location In Chassis ="toml_Location In Chassis" #30 : 机箱内位置 +Chassis Handle ="toml_Chassis Handle" #31 : 机箱程序 +Features ="toml_Features" #32 : 特征 +Characteristics ="toml_Characteristics" #33 : 特性 +Number Of Power Cords ="toml_Number Of Power Cords" #34 : 电源线数 +Type ="toml_Type" #35 : 类型 +System Information ="toml_System Information" #36 : 系统信息 +Error Correction Type ="toml_Error Correction Type" #37 : 纠错类型 +Language Description Format ="toml_Language Description Format" #38 : 语言描述格式 +Asset Tag ="toml_Asset Tag" #39 : 资产编号 +Runtime Size ="toml_Runtime Size" #40 : 运行内存大小 +Lock ="toml_Lock" #41 : 锁 +Error Information Handle ="toml_Error Information Handle" #42 : 错误信息程序 +Height ="toml_Height" #43 : 高度 + +[Motherboard.BaseBoardInformation] #(主板) +Name ="Base Board Information" #1 : 注意:该条Name 的值不更改 对应命令 dmi.decode t 2 +Vendor ="toml_Vendor" #2 : 制造商 +Version ="toml_Version" #3 : 版本 +Chipset ="toml_Chipset" #4 : 芯片组 +SMBIOS Version ="toml_SMBIOS Version" #5 : SMBIOS版本 +Product Name ="toml_Product Name" #6 : 产品名称 +Contained Object Handles ="toml_Contained Object Handles" #7 : 包含对象程序 +Serial Number ="toml_Serial Number" #8 : 序列号 +Location In Chassis ="toml_Location In Chassis" #9 : 机箱内位置 +Chassis Handle ="toml_Chassis Handle" #10 : 机箱程序 +Features ="toml_Features" #11 : 特征 +Type ="toml_Type" #12 : 类型 +Asset Tag ="toml_Asset Tag" #13 : 资产编号 + +[Motherboard.ChassisInformation] #(主板) +Name ="Chassis Information" #1 : 注意:该条Name 的值不更改 对应命令 dmi.decode t 3 +Vendor =" TSINGHUA TONGFANG COMPUTER" #2 : 制造商 +Version ="toml_Version" #3 : 版本 +Chipset ="toml_Chipset" #4 : 芯片组 +OEM Information ="toml_OEM Information" #5 : OEM信息 +SKU Number ="toml_SKU Number" #6 : SKU号 +SMBIOS Version ="toml_SMBIOS Version" #7 : SMBIOS版本 +Product Name ="toml_Product Name" #8 : 产品名称 +Power Supply State ="toml_Power Supply State" #9 : 供电状态 +Contained Elements ="toml_Contained Elements" #10 : 包含组件数 +Security Status ="toml_Security Status" #11 : 安全状态 +Serial Number ="toml_Serial Number" #12 : 序列号 +Bootup State ="Safe" #13 : 开机状态 +Thermal State ="toml_Thermal State" #14 : 散热状态 +Location In Chassis ="toml_Location In Chassis" #15 : 机箱内位置 +Chassis Handle ="toml_Chassis Handle" #16 : 机箱程序 +Number Of Power Cords ="toml_Number Of Power Cords" #17 : 电源线数 +Type ="toml_Type" #18 : 类型 +Asset Tag ="toml_Asset Tag" #19 : 资产编号 +Lock ="toml_Lock" #20 : 锁 +Height ="toml_Height" #21 : 高度 + +[Motherboard.PhysicalMemoryArray] #(主板) +Name ="Physical Memory Array" #1 : 注意:该条Name 的值不更改 对应命令 dmi.decode t 17 +Chipset ="toml_Chipset" #2 : 芯片组 +SMBIOS Version ="toml_SMBIOS Version" #3 : SMBIOS版本 +Product Name ="toml_Product Name" #4 : 产品名称 +Location ="toml_Location" #5 : 位置 +Number Of Devices ="toml_Number Of Devices" #6 : 卡槽数量 +Serial Number ="toml_Serial Number" #7 : 序列号 +Maximum Capacity ="toml_Maximum Capacity" #8 : 最大容量 +Location In Chassis ="toml_Location In Chassis" #9 : 机箱内位置 +Chassis Handle ="toml_Chassis Handle" #10 : 机箱程序 +Type ="toml_Type" #11 : 类型 +Asset Tag ="toml_Asset Tag" #12 : 资产编号 +Error Information Handle ="toml_Error Information Handle" #13 : 错误信息程序 + +[Memory.flagLabel] #(内存) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Size ="toml_Size" #3 : 大小 +Type ="toml_Type" #4 : 类型 +Speed ="toml_Speed" #5 : 速度 +Total Width ="toml_Total Width" #6 : 总位宽 +Locator ="toml_Locator" #7 : 插槽 +Serial Number ="toml_Serial Number" #8 : 序列号 +Data Width ="toml_Data Width" #9 : 数据位宽 +Configured Speed ="toml_Configured Speed" #10 : 配置频率 +Rank ="toml_Rank" #11 : 位列 +Memory Subsystem Controller Product ID ="toml_Memory Subsystem Controller Product ID" #12 : 内存子系统控制器产品ID +Memory Subsystem Controller Manufacturer ID ="toml_Memory Subsystem Controller Manufacturer ID" #13 : 内存子系统控制器制造商 +Memory Technology ="toml_Memory Technology" #14 : 内存技术 +Memory Operating Mode Capability ="toml_Memory Operating Mode Capability" #15 : 内存操作模式 +Bank Locator ="toml_Bank Locator" #16 : 内存通道 +Firmware Version ="toml_Firmware Version" #17 : 固件版本 +Form Factor ="toml_Form Factor" #18 : 尺寸型号 +Array Handle ="toml_Array Handle" #19 : 数组程序 +Volatile Size ="toml_Volatile Size" #20 : 易丢失大小 +Type Detail ="toml_Type Detail" #23 : 类型详情 +Module Product ID ="toml_Module Product ID" #24 : 组件产品ID +Module Manufacturer ID ="toml_Module Manufacturer ID" #25 : 组件制造商 +Cache Size ="toml_Cache Size" #26 : 缓存大小 +Set ="toml_Set" #27 : 设置 +Asset Tag ="toml_Asset Tag" #28 : 资产编号 +Logical Size ="toml_Logical Size" #29 : 逻辑大小 +Part Number ="toml_Part Number" #30 : 部件号码 +Error Information Handle ="toml_Error Information Handle" #31 : 错误信息程序 + +[Storage.flagLabel] #(存储设备) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Media Type ="toml_Media Type" #3 : 介质类型 +Size ="toml_Size" #4 : 大小 +Version ="toml_Version" #5 : 版本 +Capabilities ="toml_Capabilities" #6 : 功能 +physical id ="toml_vidpid" #7 : 物理ID +Rotation Rate ="toml_Rotation Rate" #8 : 转速 +Interface ="toml_Interface" #9 : 接口 +Serial Number ="toml_Serial Number" #10 : 序列号 +Description ="toml_Description" #11 : 描述 +Speed ="toml_Speed" #12 : 速度 +Firmware Version ="toml_Firmware Version" #13 : 固件版本 +ansiversion ="toml_ansiversion" #14 : ANSI版本 +guid ="toml_guid" #15 : 全局唯一标识符 +Geometry (Logical) ="toml_Geometry (Logical)" #16 : 几何数据(逻辑) +bus info ="toml_bus info" #17 : 总线信息 +sectorsize ="toml_sectorsize" #18 : 扇区大小 +Hardware Class ="toml_Hardware Class" #19 : 硬件类别 +Device File ="toml_Device File" #20 : 设备文件 +Device Number ="toml_Device Number" #21 : 设备编号 +logicalsectorsize ="toml_logicalsectorsize" #22 : 逻辑分区大小 +logical name ="toml_logical name" #23 : 逻辑地址 +Config Status ="toml_Config Status" #24 : 配置状态 + +[DisplayGPU.flagLabel] #(显示适配器) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Model ="toml_Model" #3 : 型号 +Version ="toml_Version" #4 : 版本 +Graphics Memory ="toml_Graphics Memory" #5 : 显存 +IRQ ="toml_IRQ" #6 : 中断 +Capabilities ="toml_Capabilities" #7 : 功能 +Display Output ="toml_Display Output" #8 : 显示输出 +DigitalOutput ="toml_DigitalOutput" #9 : DigitalOutput +DVI ="toml_DVI" #10 : DVI +VGA ="toml_Enable" #11 : VGA +HDMI ="toml_Enable" #12 : HDMI +eDP ="toml_eDP" #13 : eDP +DP ="toml_DP" #14 : DP +Description ="toml_Description" #15 : 描述 +Driver ="toml_Driver" #16 : 驱动 +Current Resolution ="1920 x 1080" #17 : 当前分辨率 +Bus Info ="toml_Bus Info" #18 : 总线信息 +IO Port ="toml_IO Port" #19 : I/O端口 +Memory Address ="toml_Memory Address" #20 : 内存地址 +vendor_id ="toml_vendor_id" #21 : 物理ID +product_id ="toml_product_id" #22 : 物理ID +Modalias ="pci:xxx" #23 : 模块别名 +EGL client APIs ="toml_EGL client APIs" #24 : EGL接口 +EGL version ="toml_EGL version" #25 : EGL版本 +GDDR capacity ="toml_GDDR capacity" #26 : GDDR容量 +GLSL version ="toml_GLSL version" #27 : GLSL版本 +GL version ="toml_GL version" #28 : GL版本 +GPU vendor ="toml_GPU vendor" #29 : GPU供应商 +GPU type ="toml_GPU type" #30 : GPU类型 +SubVendor ="toml_SubVendor" #31 : 子制造商 +SubDevice ="toml_SubDevice" #32 : 子设备 +Latency ="toml_latency" #33 : 延迟 +Device ="toml_Device" #34 : 设备 +Config Status ="toml_Config Status" #35 : 配置状态 +Driver Modules ="toml_Driver Modules" #36 : 驱动模块 + +[Monitor.flagLabel] #(显示设备) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Type ="toml_Type" #3 : 类型 +Display Input ="toml_Display Input" #4 : 显示输入 +Interface Type ="toml_Interface Type" #5 : 接口类型 +Serial Number ="toml_Serial Number" #6 : 序列号 +Size ="toml_Size" #7 : 大小 +Primary Monitor ="toml_Primary Monitor" #8 : 主显示器 +Display Ratio ="toml_Display Ratio" #9 : 显示比例 +Current Resolution ="toml_Current Resolution" #10 : 当前分辨率 +Support Resolution ="toml_Support Resolution" #11 : 支持分辨率 +Date ="toml_Date" #12 : 日期 +Refresh Rate ="toml_Refresh Rate" #13 : 支持的屏幕刷新率 + +[NetWork.flagLabel] #(网络适配器) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Type ="toml_Type" #3 : 类型 +Version ="toml_Version" #4 : 版本 +Bus Info ="toml_Bus Info" #5 : 总线信息 +Capabilities ="toml_Capabilities" #6 : 功能 +Driver ="toml_Driver" #7 : 驱动 +Driver Version ="toml_Driver Version" #8 : 驱动版本 +Logical Name ="toml_Logical Name" #9 : 逻辑名称 +MAC Address ="toml_MAC Address" #10 : 物理地址 +IRQ ="toml_IRQ" #11 : 中断 +Memory Address ="toml_Memory Address" #12 : 内存地址 +Auto Negotiation ="toml_Auto Negotiation" #13 : 自动协商 +Broadcast ="toml_Broadcast" #14 : 广播 +Duplex ="toml_Duplex" #15 : 双工 +Firmware ="toml_Firmware" #16 : 固件 +IP ="toml_IP" #17 : IP +Latency ="toml_Latency" #18 : 延迟 +Link ="toml_Link" #19 : 连接 +Multicast ="toml_Multicast" #20 : 组播 +Port ="toml_Port" #21 : 端口 +Negotiation Rate ="toml_Negotiation Rate" #22 : 协商速率 +Maximum Rate ="toml_Maximum Rate" #23 : 最大速率 +Modalias ="pci:xxx" #24 : 模块别名 +ioport ="toml_ioport" #25 : I/O端口 +network ="toml_network" #26 : 网络 + +[SoundAudio.flagLabel] #(音频适配器) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #3 : 制造商 +SysFS_Path ="toml_SysFS_Path" #4 : SysFS_Path +Description ="toml_Description" #5 : 描述 +Driver ="toml_Driver" #6 : KernelModeDriver +IRQ ="toml_IRQ" #7 : 中断 +Memory Address ="toml_Memory Address" #8 : 内存地址 +Capabilities ="toml_Capabilities" #9 : 功能 +Chip ="toml_Chip" #10 : 芯片 +Modalias ="pci:xxx" #11 : 模块别名 +EV ="toml_EV" #12 : EV +KEY ="toml_KEY" #13 : KEY +PROP ="toml_PROP" #14 : PROP +Phys ="toml_Phys" #15 : Phys +Sysfs ="toml_Sysfs" #16 : Sysfs +Handlers ="toml_Handlers" #17 : 处理程序 +SubVendor ="toml_SubVendor" #18 : 子制造商 +SubDevice ="toml_SubDevice" #19 : 子设备 +Latency ="toml_latency" #20 : 延迟 +Bus ="toml_Bus" #21 : 总线 +Version ="toml_Version" #22 : 版本 +Config Status ="toml_Config Status" #23 : 配置状态 +Driver ="toml_Driver" #24 : 驱动 +Driver Activation Cmd="toml_Driver Activation Cmd" #25 : 驱动激活命令 +Driver Status ="toml_Driver Status" #26 : 驱动状态 + +[Bluetooth.flagLabel] #(蓝牙) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Version ="toml_Version" #3 : 版本 +Model ="toml_Model" #4 : 型号 +MAC Address ="toml_MAC Address" #5 : 物理地址 +Bus Info ="toml_Bus Info" #6 : 总线信息 +Capabilities ="toml_Capabilities" #7 : 功能 +Driver Version ="toml_Driver Version" #8 : 驱动版本 +Maximum Power ="toml_Maximum Power" #9 : 最大功率 +Speed ="toml_Speed" #10 : 速度 +Modalias ="usb:xxx" #11 : 模块别名 +ACL MTU ="toml_ACL MTU" #12 : ACL MTU +SCO MTU ="toml_SCO MTU" #13 : SCO MTU +UUID ="toml_UUID" #14 : UUID +product ="toml_product" #15 : 产品 +Powered ="toml_Powered" #16 : 供电 +Discoverable ="toml_Discoverable" #17 : 可发现 +Pairable ="toml_Pairable" #18 : 可配对 +Serial ID ="toml_Serial ID" #19 : 序列号 +Bus ="toml_Bus" #20 : 总线 +Discovering ="toml_Discovering" #21 : 搜索中 +Packet type ="toml_Packet type" #22 : 数据包类型 +Service Classes ="toml_Service Classes" #23 : 服务类别 +Features ="toml_Features" #24 : 特征 +Class ="toml_Class" #25 : 类别 +BD Address ="toml_BD Address" #26 : 蓝牙设备地址 +Device ="toml_Device" #27 : 设备 +Device Class ="toml_Device Class" #28 : 设备类别 +Link mode ="toml_Link mode" #29 : 连接模式 +Link policy ="toml_Link policy" #30 : 连接策略 + +[Power.flagLabel] #(电池) +Name ="toml_Name" #1 : 名称 +Model ="toml_Model" #2 : 型号 +Vendor ="toml_Vendor" #3 : 制造商 +Serial Number ="toml_Serial Number" #4 : 序列号 +Type ="toml_Type" #5 : 类型 +Status ="toml_Status" #6 : 状态 +Capacity ="toml_Capacity" #7 : 最大容量 +Voltage ="toml_Voltage" #8 : 电压 +Slot ="toml_Slot" #9 : 插槽 +Design Capacity ="toml_Design Capacity" #10 : 设计容量 +Design Voltage ="toml_Design Voltage" #11 : 设计电压 +SBDS Version ="toml_SBDS Version" #12 : SBDS版本 +SBDS Serial Number ="toml_SBDS Serial Number" #13 : SBDS序列号 +SBDS Manufacture Date="toml_SBDS Manufacture Date" #14 : SBDS制造日期 +SBDS Chemistry ="toml_SBDS Chemistry" #15 : SBDS材料 +Temperature ="toml_Temperature" #16 : 温度 +power supply ="toml_power supply" #17 : 供电 +has history ="toml_has history" #18 : 历史记录 +rechargeable ="toml_rechargeable" #19 : 可再充电 +online ="toml_online" #20 : 在线 +energy ="toml_energy" #21 : 容量 +updated ="toml_updated" #22 : 更新时间 +state ="toml_state" #23 : 状态 +has statistics ="toml_has statistics" #24 : 用电统计 +voltage ="toml_voltage" #25 : 电压 +technology ="toml_technology" #26 : 电池技术 +percentage ="toml_percentage" #27 : 电量 + +[Keyboard.flagLabel] #(键盘) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Model ="toml_Model" #3 : 型号 +Interface ="toml_Interface" #4 : 接口 +Bus Info ="toml_Bus Info" #5 : 总线信息 +Revision ="toml_Revision" #6 : 版本 +Capabilities ="toml_Capabilities" #7 : 功能 +Driver ="toml_Driver" #8 : 驱动 +Maximum Current ="toml_Maximum Current" #9 : 最大电流 +Speed ="toml_Speed" #10 : 频率 +Modalias ="usb:xxx" #11 : 模块别名 +EV ="toml_EV" #12 : EV +KEY ="toml_KEY" #13 : KEY +MSC ="toml_MSC" #14 : MSC +PROP ="toml_PROP" #15 : PROP +Uniq ="toml_Uniq" #16 : Uniq +Hardware Class ="toml_Hardware Class" #17 : 硬件类别 +Device File ="toml_Device File" #18 : 设备文件 + +[Mouse.flagLabel] #(鼠标) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Model ="toml_Model" #3 : 型号 +Interface ="toml_Interface" #4 : 接口 +Bus Info ="toml_Bus Info" #5 : 总线信息 +Revision ="toml_Revision" #6 : 版本 +Capabilities ="toml_Capabilities" #7 : 功能 +Driver ="toml_Driver" #8 : 驱动 +Maximum Current ="toml_Maximum Current" #9 : 最大电流 +Speed ="toml_Speed" #10 : 频率 +Modalias ="usb:xxx" #11 : 模块别名 +EV ="toml_EV" #12 : EV +KEY ="toml_KEY" #13 : KEY +MSC ="toml_MSC" #14 : MSC +PROP ="toml_PROP" #15 : PROP +Uniq ="toml_Uniq" #16 : Uniq +Hardware Class ="toml_Hardware Class" #17 : 硬件类别 +Device File ="toml_Device File" #18 : 设备文件 + +[Printer.flagLabel] #(打印机) +Name ="toml_Name" #1 : 名称 +Model ="toml_Model" #2 : 型号 +Vendor ="toml_Vendor" #3 : 制造商 +Serial Number ="toml_Serial Number" #4 : 序列号 +Status ="toml_Status" #5 : 状态 +URI ="toml_URI" #6 : URI +Shared ="toml_Shared" #7 : 已共享 +copies ="toml_copies" #8 : 复印数量 +sides ="toml_sides" #9 : 打印面数 + +[Camera.flagLabel] #(图像设备) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Version ="toml_Version" #3 : 版本 +Model ="toml_Model" #4 : 型号 +Bus Info ="toml_Bus Info" #5 : 总线信息 +Serial Number ="toml_Serial Number" #6 : 序列号 +Capabilities ="toml_Capabilities" #7 : 功能 +Driver ="toml_Driver" #8 : 驱动 +Maximum Power ="toml_Maximum Power" #9 : 最大功率 +Speed ="toml_Speed" #10 : 速度 +Modalias ="usb:xxx" #11 : 模块别名 + +[CDROM.flagLabel] #(光驱) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Model ="toml_Model" #3 : 型号 +Bus Info ="toml_Bus Info" #4 : 总线信息 +Capabilities ="toml_Capabilities" #5 : 功能 +Maximum Power ="toml_Maximum Power" #6 : 最大功率 +Speed ="toml_Speed" #7 : 速度 +Serial ID ="toml_Serial ID" #8 : 序列号 +Application ="toml_Application" #9 : 应用 +status ="toml_status" #10 : 状态 +Device Files ="toml_Device Files" #11 : 设备文件 +logical name ="toml_logical name" #12 : 逻辑地址 +Config Status ="toml_Config Status" #13 : 配置状态 + +[OtherDevices.flagLabel] #(其他设备) +Name ="toml_Name" #1 : 名称 +Vendor ="toml_Vendor" #2 : 制造商 +Model ="toml_Model" #3 : 型号 +Bus Info ="toml_Bus Info" #4 : 总线信息 +Capabilities ="toml_Capabilities" #5 : 功能 +Maximum Power ="toml_Maximum Power" #6 : 最大功率 +Speed ="toml_Speed" #7 : 速度 +Serial Number ="toml_Serial Number" #8 : 序列号 +Hardware Class ="toml_Hardware Class" #9 : 硬件类别 +Device File ="toml_Device File" #10 : 设备文件 + +[End] + +#详细说明见文件下末部分: +#本文目标,删,修改改设备管理器中的设备原來显示信息 +#1. 编写该toml文件方法: +#1-1. 首先需要文件名与机型作匹; 将该文件放入目录 /etc/deepin/hardware/ 中;详见#2。 +#1-3. 书写规则定义详见#3;最后以[End]结尾。 +#1-2. 然后写入文件中的toml表,表中写入“匹配key”;详见#4。 + +#2 文件名与机型匹配说明: +#2-1.文件名格式为《oeminfo_manufacturer_productname_version.toml》。 +#2-2.其中的关键字:Manufacturer、Product Name、Version,为命令sudo dmidecode -t 1 取其对应的值;将值全转化为小写,去掉不可显示特殊字符和空格及"-/'~!@#$%^&*(){}:;,.\"\\|~`"和“N/A”字符。 +#2-3.设备管理器启动时,解析出该机型对应的文件名,然后到目录 /etc/deepin/hardware/ 中查找该文件,并打开读取相应信息,按上述规则作处理并显示。 + +#3. 书写规则定义与说明: +#3-1. #号开关的为注释,文件格式按toml表和键值对的格式书写,每行代表一条信息不可换行;一个表头和下面相近行的键值对代表一个设备信息;若信息不作修改时,可不写。 +#3-2.表头命名格式为[hardClassName.Label] 其中的hardClassName已确定如下关键字,不可更改,“.Label”可没有,或可自行定义仅作阅读标记(建议值add, del, modify1, modify2)。 +#3-3.“=”左边为key键名,取值已在下文定义,取其它名无效;相同key名,其key值将替换同匹配设备中的值信息; 值“toml_xxx” 需由书写人自行定义;若值尾包括有"_NOUSE",该条信息将被删除显示。 +#3-4.主板[Motherboard.xx]字样和下面相近的Name键名对行不可更改,且数量不能超过一个,表下共5个已定义名字设备(可没有表示不用更改显示)。 +#3-5.[Computer.Label]表数量不能超过一个。 + +#4 文件中的信息与设备管理器中显示设备信息匹配;具体方法及规则如下: +#4-1.首先文中表头匹配,表头代表对应的设备分类信息; +#4-2.如果要修改某个设备显示信息,需要满足条件toml文中表与显示设备匹配,除匹配key值外的其它信息将作替换。 +#4-3.“匹配key”名约定: +#4-3-1.单匹配key: key1: "Modalias"(模块别名); 单匹配key只需要一个键信息。 +#4-3-2.双匹配key需要两个值同时匹配:key2:"Vendor_ID 和 Product_ID"("物理ID"中VID和PID值); key3:"Vendor 和 Name"(制造商和名称); 。 +#4-4.匹配生效后表头下面每行key名与对应设备管理器中显示每条信息名一致,其值则会被显示到对应界面。 +#4-3.若匹配key匹配上某一设备且值尾包括有"_NOUSE"则该个设备所有信息将被删除显示。 +#4-4.增加一个设备信息则不需要匹配;没有写入该文件的表头所代表设备将不会被修改;没有写入该文件的key值所代表设备信息将不会被修改。 +#4-5.1 增加 tomlmatchkey = { Size = "512", Name = "xname" } # 内联表 "{Size:512G}{Name:xx1}{Vendor:xx2}" # 匹配键名 +#4-5.2 增加 tomlconfigdemanding ="adjust" # 配置需求 “adjust delete add” diff --git a/deepin-devicemanager/assets/org.deepin.devicemanager.json b/deepin-devicemanager/assets/org.deepin.devicemanager.json new file mode 100644 index 000000000..8f53b60a1 --- /dev/null +++ b/deepin-devicemanager/assets/org.deepin.devicemanager.json @@ -0,0 +1,49 @@ +{ + "magic": "dsg.config.meta", + "version": "1.0", + "contents": { + "rules": { + "value": "*.debug=false;*.info=false;*.warning=true", + "serial": 0, + "flags": [ + "global" + ], + "name": "rules", + "name[zh_CN]": "日志规则", + "description": "log rules", + "description[zh_CN]": "日志规则", + "permissions": "readwrite", + "visibility": "public" + }, + "specialComType": { + "value": -1, + "serial": 0, + "flags": ["global"], + "name": "Special Computer Type", + "name[zh_CN]": "特殊机器类型", + "description": "special computer type:PGUW(value:1),KLVV/L540(value:2),KLVU(value:3),PGUV/W585(value:4),PGUX(value:5),FLMX(value:6)", + "permissions": "readwrite", + "visibility": "private" + }, + "TomlFilesName": { + "value": "tomlFilesName", + "serial": 0, + "flags": ["global"], + "name": "config the toml name", + "name[zh_CN]": "设置toml文件名", + "description": "此配置项默认为无效的。如需让toml文件内容显示生效,请配置对应文件名。需保证操作者具备读取权限。", + "permissions": "readwrite", + "visibility": "private" + }, + "CommandToGetGPUInfo": { + "value": "", + "serial": 0, + "flags": ["global"], + "name": "Command to get GPU infomation", + "name[zh_CN]": "获取GPU信息的命令", + "description": "此配置项默认为空。如果specialComType==8,程序则启用此项配置。", + "permissions": "readwrite", + "visibility": "private" + } + } +} diff --git a/deepin-devicemanager/src/DDLog/DDLog.h b/deepin-devicemanager/src/DDLog/DDLog.h new file mode 100644 index 000000000..313931a72 --- /dev/null +++ b/deepin-devicemanager/src/DDLog/DDLog.h @@ -0,0 +1,20 @@ +// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DDLOG_H +#define DDLOG_H + +#include +#include +#include + +DCORE_USE_NAMESPACE + +namespace DDLog { + inline Q_LOGGING_CATEGORY(appLog,"org.deepin.devicemanager"); + inline Q_LOGGING_CATEGORY(deviceControlLog,"org.deepin.devicecontrol"); + inline Q_LOGGING_CATEGORY(deviceInfoLog,"org.deepin.deviceinfo"); +} + +#endif diff --git a/deepin-devicemanager/src/DebugTimeManager.cpp b/deepin-devicemanager/src/DebugTimeManager.cpp index 9ccad8473..2a26907eb 100644 --- a/deepin-devicemanager/src/DebugTimeManager.cpp +++ b/deepin-devicemanager/src/DebugTimeManager.cpp @@ -4,7 +4,10 @@ #include "DebugTimeManager.h" #include -#include +#include +#include "DDLog.h" + +using namespace DDLog; #include @@ -42,6 +45,6 @@ void DebugTimeManager::endPointLinux(const QString &point, const QString &sub) m_MapPoint[point].time = m_MapPoint[point].time - m_MapPoint[sub].time; } - qInfo() << QString("[GRABPOINT] %1 %2 time=%3ms").arg(point).arg(m_MapPoint[point].desc).arg(m_MapPoint[point].time); + qCInfo(appLog) << QString("[GRABPOINT] %1 %2 time=%3ms").arg(point).arg(m_MapPoint[point].desc).arg(m_MapPoint[point].time); } } diff --git a/deepin-devicemanager/src/DeviceManager/DeviceAudio.cpp b/deepin-devicemanager/src/DeviceManager/DeviceAudio.cpp index 783d1a6ce..8f1020094 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceAudio.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceAudio.cpp @@ -9,7 +9,7 @@ #include #include // 其它头文件 -#include +#include DeviceAudio::DeviceAudio() : DeviceBaseInfo() , m_Model("") @@ -186,15 +186,14 @@ bool DeviceAudio::setInfoFrom_sysFS(QMap &mapInfo, int ii) mapInfo.insert("VID_PID", m_VID_PID); mapInfo.insert("SysFS ID", m_SysPath); mapInfo.insert("chip", m_Chip); - return true; - //---------------- + //2. 获取设备的其它信息 getOtherMapInfo(mapInfo); // 设置不可禁用 m_CanEnable = false; m_CanUninstall = false; - + return true; } bool DeviceAudio::setInfoFromCatDevices(const QMap &mapInfo) @@ -264,7 +263,7 @@ const QString &DeviceAudio::driver() const } const QString &DeviceAudio::uniqueID() const { - return m_SysPath; + return m_UniqueID; } EnableDeviceStatus DeviceAudio::setEnable(bool e) { @@ -305,46 +304,44 @@ const QString DeviceAudio::getOverviewInfo() void DeviceAudio::initFilterKey() { // 添加可显示的属性 - addFilterKey(tr("Device Name")); - addFilterKey(QObject::tr("SubVendor")); - addFilterKey(QObject::tr("SubDevice")); - addFilterKey(QObject::tr("Driver Status")); - addFilterKey(QObject::tr("Driver Activation Cmd")); - addFilterKey(QObject::tr("Config Status")); - addFilterKey(QObject::tr("latency")); - addFilterKey(QObject::tr("Phys")); - addFilterKey(QObject::tr("Sysfs")); - addFilterKey(QObject::tr("Handlers")); - addFilterKey(QObject::tr("PROP")); - addFilterKey(QObject::tr("EV")); - addFilterKey(QObject::tr("KEY")); - addFilterKey(QObject::tr("Bus")); - addFilterKey(QObject::tr("Version")); - addFilterKey(QObject::tr("Driver")); + addFilterKey("Device Name"); + addFilterKey("SubVendor"); + addFilterKey("SubDevice"); + addFilterKey("Driver Status"); + addFilterKey("Driver Activation Cmd"); + addFilterKey("Config Status"); + addFilterKey("latency"); + addFilterKey("Phys"); + addFilterKey("Sysfs"); + addFilterKey("Handlers"); + addFilterKey("PROP"); + addFilterKey("EV"); + addFilterKey("KEY"); + addFilterKey("Bus"); + addFilterKey("Version"); + addFilterKey("Driver"); } void DeviceAudio::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Module Alias"), m_Modalias); - addBaseDeviceInfo(tr("Physical ID"), m_PhysID); - addBaseDeviceInfo(tr("SysFS_Path"), m_SysPath); - addBaseDeviceInfo(tr("Description"), m_Description); - addBaseDeviceInfo(tr("Revision"), m_Version); - addBaseDeviceInfo(tr("KernelModeDriver"), m_Driver); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("SysFS_Path"), m_SysPath); + addBaseDeviceInfo(("Description"), m_Description); + addBaseDeviceInfo(("Revision"), m_Version); + addBaseDeviceInfo(("KernelModeDriver"), m_Driver); } void DeviceAudio::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Module Alias"), m_Modalias); - addOtherDeviceInfo(tr("Physical ID"), m_PhysID); - addOtherDeviceInfo(tr("Chip"), m_Chip); - addOtherDeviceInfo(tr("Capabilities"), m_Capabilities); - addOtherDeviceInfo(tr("Memory Address"), m_Memory); // 1050需求 内存改为内存地址 - addOtherDeviceInfo(tr("IRQ"), m_Irq); + addOtherDeviceInfo(("Module Alias"), m_Modalias); + addOtherDeviceInfo(("Physical ID"), m_PhysID); + addOtherDeviceInfo(("Chip"), m_Chip); + addOtherDeviceInfo(("Capabilities"), m_Capabilities); + addOtherDeviceInfo(("Memory Address"), m_Memory); // 1050需求 内存改为内存地址 + addOtherDeviceInfo(("IRQ"), m_Irq); // 将QMap内容转存为QList> mapInfoToList(); } @@ -352,8 +349,8 @@ void DeviceAudio::loadOtherDeviceInfo() void DeviceAudio::loadTableHeader() { // 表头信息 - m_TableHeader.append(tr("Name")); - m_TableHeader.append(tr("Vendor")); + m_TableHeader.append("Name"); + m_TableHeader.append("Vendor"); } void DeviceAudio::loadTableData() @@ -362,11 +359,11 @@ void DeviceAudio::loadTableData() QString tName = m_Name; if (!available()) { - tName = "(" + tr("Unavailable") + ") " + m_Name; + tName = "(" + translateStr("Unavailable") + ") " + m_Name; } if (!enable()) { - tName = "(" + tr("Disable") + ") " + m_Name; + tName = "(" + translateStr("Disable") + ") " + m_Name; } m_TableData.append(tName); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceBios.cpp b/deepin-devicemanager/src/DeviceManager/DeviceBios.cpp index 2cb871e93..5b74f1a34 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceBios.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceBios.cpp @@ -6,7 +6,7 @@ #include "DeviceBios.h" // Qt库文件 -#include +#include DeviceBios::DeviceBios() : DeviceBaseInfo() @@ -39,7 +39,7 @@ bool DeviceBios::setBiosInfo(const QMap &mapInfo) return false; // 获取BIOS信息 - m_Name = QObject::tr("BIOS Information"); + m_Name = ("BIOS Information"); m_tomlName = ("BIOS Information"); setAttribute(mapInfo, "Vendor", m_Vendor); setAttribute(mapInfo, "Version", m_Version); @@ -61,7 +61,7 @@ bool DeviceBios::setBaseBoardInfo(const QMap &mapInfo) return false; // 获取主板信息 - m_Name = QObject::tr("Base Board Information"); + m_Name = ("Base Board Information"); m_tomlName = ("Base Board Information"); setAttribute(mapInfo, "Manufacturer", m_Vendor); setAttribute(mapInfo, "Version", m_Version); @@ -83,7 +83,7 @@ bool DeviceBios::setSystemInfo(const QMap &mapInfo) return false; // 获取系统信息 - m_Name = QObject::tr("System Information"); + m_Name = ("System Information"); m_tomlName = ("System Information"); setAttribute(mapInfo, "Manufacturer", m_Vendor); setAttribute(mapInfo, "Version", m_Version); @@ -99,7 +99,7 @@ bool DeviceBios::setChassisInfo(const QMap &mapInfo) return false; // 获取机箱信息 - m_Name = QObject::tr("Chassis Information"); + m_Name = ("Chassis Information"); m_tomlName = ("Chassis Information"); setAttribute(mapInfo, "Manufacturer", m_Vendor); setAttribute(mapInfo, "Version", m_Version); @@ -115,7 +115,7 @@ bool DeviceBios::setMemoryInfo(const QMap &mapInfo) return false; // 获取内存插槽信息 - m_Name = QObject::tr("Physical Memory Array"); + m_Name = ("Physical Memory Array"); m_tomlName = ("Physical Memory Array"); setAttribute(mapInfo, "Manufacturer", m_Vendor); setAttribute(mapInfo, "Version", m_Version); @@ -157,7 +157,7 @@ bool DeviceBios::isBoard()const QString DeviceBios::subTitle() { - return m_Name; + return translateStr(m_Name); } const QString DeviceBios::getOverviewInfo() @@ -173,76 +173,76 @@ void DeviceBios::initFilterKey() { // 添加可显示属性 - addFilterKey(QObject::tr("Release Date")); - addFilterKey(QObject::tr("Address")); - addFilterKey(QObject::tr("Runtime Size")); - addFilterKey(QObject::tr("ROM Size")); - addFilterKey(QObject::tr("Characteristics")); - addFilterKey(QObject::tr("BIOS Revision")); - addFilterKey(QObject::tr("Firmware Revision")); - - addFilterKey(QObject::tr("Product Name")); - addFilterKey(QObject::tr("Serial Number")); - addFilterKey(QObject::tr("Asset Tag")); - addFilterKey(QObject::tr("Features")); - addFilterKey(QObject::tr("Location In Chassis")); - addFilterKey(QObject::tr("Chassis Handle")); - addFilterKey(QObject::tr("Type")); - addFilterKey(QObject::tr("Contained Object Handles")); - - addFilterKey(QObject::tr("Product Name")); - addFilterKey(QObject::tr("Serial Number")); - addFilterKey(QObject::tr("UUID")); - addFilterKey(QObject::tr("Wake-up Type")); - addFilterKey(QObject::tr("SKU Number")); - addFilterKey(QObject::tr("Family")); - - - addFilterKey(QObject::tr("Type")); - addFilterKey(QObject::tr("Lock")); - addFilterKey(QObject::tr("Serial Number")); - addFilterKey(QObject::tr("Asset Tag")); - addFilterKey(QObject::tr("Boot-up State")); - addFilterKey(QObject::tr("Power Supply State")); - addFilterKey(QObject::tr("Thermal State")); - addFilterKey(QObject::tr("Security Status")); - addFilterKey(QObject::tr("OEM Information")); - addFilterKey(QObject::tr("Height")); - addFilterKey(QObject::tr("Number Of Power Cords")); - addFilterKey(QObject::tr("Contained Elements")); - addFilterKey(QObject::tr("SKU Number")); - - addFilterKey(QObject::tr("Location")); - addFilterKey(QObject::tr("Error Correction Type")); - addFilterKey(QObject::tr("Maximum Capacity")); - addFilterKey(QObject::tr("Error Information Handle")); - addFilterKey(QObject::tr("Number Of Devices")); - - addFilterKey(QObject::tr("BIOS ROMSIZE")); - addFilterKey(QObject::tr("Release date")); - addFilterKey(QObject::tr("Board name")); - addFilterKey(QObject::tr("Family")); - - addFilterKey(QObject::tr("BIOS Information")); - addFilterKey(QObject::tr("Base Board Information")); - addFilterKey(QObject::tr("System Information")); - addFilterKey(QObject::tr("Chassis Information")); - addFilterKey(QObject::tr("Physical Memory Array")); - - addFilterKey(QObject::tr("SMBIOS Version")); - - addFilterKey(QObject::tr("Language Description Format")); - addFilterKey(QObject::tr("Installable Languages")); - addFilterKey(QObject::tr("Currently Installed Language")); + addFilterKey("Release Date"); + addFilterKey("Address"); + addFilterKey("Runtime Size"); + addFilterKey("ROM Size"); + addFilterKey("Characteristics"); + addFilterKey("BIOS Revision"); + addFilterKey("Firmware Revision"); + + addFilterKey("Product Name"); + addFilterKey("Serial Number"); + addFilterKey("Asset Tag"); + addFilterKey("Features"); + addFilterKey("Location In Chassis"); +// addFilterKey("Chassis Handle"); + addFilterKey("Type"); +// addFilterKey("Contained Object Handles"); + + addFilterKey("Product Name"); + addFilterKey("Serial Number"); + addFilterKey("UUID"); + addFilterKey("Wake-up Type"); + addFilterKey("SKU Number"); + addFilterKey("Family"); + + + addFilterKey("Type"); + addFilterKey("Lock"); + addFilterKey("Serial Number"); + addFilterKey("Asset Tag"); + addFilterKey("Boot-up State"); + addFilterKey("Power Supply State"); + addFilterKey("Thermal State"); + addFilterKey("Security Status"); + addFilterKey("OEM Information"); + addFilterKey("Height"); + addFilterKey("Number Of Power Cords"); + addFilterKey("Contained Elements"); + addFilterKey("SKU Number"); + + addFilterKey("Location"); + addFilterKey("Error Correction Type"); + addFilterKey("Maximum Capacity"); + addFilterKey("Error Information Handle"); + addFilterKey("Number Of Devices"); + + addFilterKey("BIOS ROMSIZE"); + addFilterKey("Release date"); + addFilterKey("Board name"); + addFilterKey("Family"); + + addFilterKey("BIOS Information"); + addFilterKey("Base Board Information"); + addFilterKey("System Information"); + addFilterKey("Chassis Information"); + addFilterKey("Physical Memory Array"); + + addFilterKey("SMBIOS Version"); + + addFilterKey("Language Description Format"); + addFilterKey("Installable Languages"); + addFilterKey("Currently Installed Language"); } void DeviceBios::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Version"), m_Version); - addBaseDeviceInfo(tr("Chipset"), m_ChipsetFamily); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Version"), m_Version); + addBaseDeviceInfo(("Chipset"), m_ChipsetFamily); } void DeviceBios::loadOtherDeviceInfo() diff --git a/deepin-devicemanager/src/DeviceManager/DeviceBluetooth.cpp b/deepin-devicemanager/src/DeviceManager/DeviceBluetooth.cpp index ee78c3f4d..3a5654d7c 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceBluetooth.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceBluetooth.cpp @@ -7,7 +7,7 @@ #include "DBusEnableInterface.h" // Qt库文件 -#include +#include DeviceBluetooth::DeviceBluetooth() : DeviceBaseInfo() @@ -32,7 +32,9 @@ void DeviceBluetooth::setInfoFromHciconfig(const QMap &mapInfo { // 获取设备的基本信息 setAttribute(mapInfo, "Name", m_Name); + setAttribute(mapInfo, "Alias", m_Alias); setAttribute(mapInfo, "Manufacturer", m_Vendor); + setAttribute(mapInfo, "HCI Version", m_Version, true); // 获取设备其他信息 getOtherMapInfo(mapInfo); @@ -63,8 +65,11 @@ bool DeviceBluetooth::setInfoFromHwinfo(const QMap &mapInfo) setAttribute(mapInfo, "Speed", m_Speed); setAttribute(mapInfo, "SysFS ID", m_SysPath); setAttribute(mapInfo, "Device", m_Name); - setAttribute(mapInfo, "Unique ID", m_SerialID); - m_UniqueID = m_SerialID; + setAttribute(mapInfo, "Unique ID", m_UniqueID); + // 防止Serial ID为空 + if (m_SerialID.isEmpty()) + m_SerialID = m_UniqueID; + m_HardwareClass = "bluetooth"; setAttribute(mapInfo, "Module Alias", m_Modalias); @@ -112,6 +117,10 @@ TomlFixMethod DeviceBluetooth::setInfoFromTomlOneByOne(const QMap &mapInfo) -{ - // 机器自身蓝牙 - const QList > &otherAttribs = getOtherAttribs(); - QMap tmpMaps; - for (QPair attrib : otherAttribs) { - tmpMaps[attrib.first] = attrib.second; - } - - if ("UART" == tmpMaps[QObject::tr("Bus")]) {//内置:UART 外接USB:USB - setAttribute(mapInfo, "Chip Type", m_Name); - setAttribute(mapInfo, "Vendor", m_Vendor); - return true; - } else { - return false; - } -} - const QString &DeviceBluetooth::name()const { return m_Model; @@ -195,58 +186,59 @@ bool DeviceBluetooth::enable() void DeviceBluetooth::initFilterKey() { // 添加可显示的属性 - addFilterKey(QObject::tr("Bus")); - addFilterKey(QObject::tr("BD Address")); - addFilterKey(QObject::tr("ACL MTU")); - addFilterKey(QObject::tr("SCO MTU")); - addFilterKey(QObject::tr("Features")); - addFilterKey(QObject::tr("Packet type")); - addFilterKey(QObject::tr("Link policy")); - addFilterKey(QObject::tr("Link mode")); - addFilterKey(QObject::tr("Class")); - addFilterKey(QObject::tr("Service Classes")); - addFilterKey(QObject::tr("Device Class")); - addFilterKey(QObject::tr("HCI Version")); - addFilterKey(QObject::tr("LMP Version")); - addFilterKey(QObject::tr("Subversion")); - - addFilterKey(QObject::tr("Device")); - addFilterKey(QObject::tr("Serial ID")); - - addFilterKey(QObject::tr("product")); - addFilterKey(QObject::tr("description")); - // addFilterKey(QObject::tr("physical id")); - addFilterKey(QObject::tr("Class")); - addFilterKey(QObject::tr("Powered")); - addFilterKey(QObject::tr("Discoverable")); - addFilterKey(QObject::tr("Pairable")); - addFilterKey(QObject::tr("UUID")); - addFilterKey(QObject::tr("Modalias")); - addFilterKey(QObject::tr("Discovering")); + addFilterKey("Bus"); + addFilterKey("BD Address"); + addFilterKey("ACL MTU"); + addFilterKey("SCO MTU"); + addFilterKey("Features"); + addFilterKey("Packet type"); + addFilterKey("Link policy"); + addFilterKey("Link mode"); + addFilterKey("Class"); + addFilterKey("Service Classes"); + addFilterKey("Device Class"); + addFilterKey("HCI Version"); + addFilterKey("LMP Version"); + addFilterKey("Subversion"); + + addFilterKey("Device"); + addFilterKey("Serial ID"); + + addFilterKey("product"); + addFilterKey("description"); + // addFilterKey("physical id"); + addFilterKey("Class"); + addFilterKey("Powered"); + addFilterKey("Discoverable"); + addFilterKey("Pairable"); + addFilterKey("UUID"); + addFilterKey("Modalias"); + addFilterKey("Discovering"); } void DeviceBluetooth::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Version"), m_Version); - addBaseDeviceInfo(tr("Model"), m_Model); + addBaseDeviceInfo(("Alias"), m_Alias); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Version"), m_Version); + addBaseDeviceInfo(("Model"), m_Model); } void DeviceBluetooth::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Module Alias"), m_Modalias); - addOtherDeviceInfo(tr("Physical ID"), m_PhysID); - addOtherDeviceInfo(tr("Speed"), m_Speed); - addOtherDeviceInfo(tr("Maximum Power"), m_MaximumPower); - addOtherDeviceInfo(tr("Driver Version"), m_DriverVersion); - addOtherDeviceInfo(tr("Driver"), m_Driver); - addOtherDeviceInfo(tr("Capabilities"), m_Capabilities); - addOtherDeviceInfo(tr("Bus Info"), m_BusInfo); - addOtherDeviceInfo(tr("Logical Name"), m_LogicalName); - addOtherDeviceInfo(tr("MAC Address"), m_MAC); + addOtherDeviceInfo(("Module Alias"), m_Modalias); + addOtherDeviceInfo(("Physical ID"), m_PhysID); + addOtherDeviceInfo(("Speed"), m_Speed); + addOtherDeviceInfo(("Maximum Power"), m_MaximumPower); + addOtherDeviceInfo(("Driver Version"), m_DriverVersion); + addOtherDeviceInfo(("Driver"), m_Driver); + addOtherDeviceInfo(("Capabilities"), m_Capabilities); + addOtherDeviceInfo(("Bus Info"), m_BusInfo); + addOtherDeviceInfo(("Logical Name"), m_LogicalName); + addOtherDeviceInfo(("MAC Address"), m_MAC); // 将QMap内容转存为QList> mapInfoToList(); @@ -258,11 +250,11 @@ void DeviceBluetooth::loadTableData() QString tName = m_Name; if (!available()) { - tName = "(" + tr("Unavailable") + ") " + m_Name; + tName = "(" + translateStr("Unavailable") + ") " + m_Name; } if (!enable()) { - tName = "(" + tr("Disable") + ") " + m_Name; + tName = "(" + translateStr("Disable") + ") " + m_Name; } m_TableData.append(tName); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceBluetooth.h b/deepin-devicemanager/src/DeviceManager/DeviceBluetooth.h index 76a5ef6dd..5480bac6f 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceBluetooth.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceBluetooth.h @@ -45,13 +45,6 @@ class DeviceBluetooth : public DeviceBaseInfo */ TomlFixMethod setInfoFromTomlOneByOne(const QMap &mapInfo); - /** - * @brief setInfoFromWifiInfo:设置从cat /sys/hisys/wal/wifi_devices_info里面获取的信息 - * @param mapInfo: 由cat /sys/hisys/wal/wifi_devices_info获取的信息map - * @return 布尔值,true:信息设置成功;false:信息设置失败 - */ - bool setInfoFromWifiInfo(const QMap &mapInfo); - /** * @brief name:获取名称属性值 * @return QString:名称属性值 @@ -126,6 +119,7 @@ class DeviceBluetooth : public DeviceBaseInfo QString m_DriverVersion; //内容转存为QList> mapInfoToList(); } @@ -150,11 +150,11 @@ void DeviceCdrom::loadTableData() QString tName = m_Name; if (!available()) { - tName = "(" + tr("Unavailable") + ") " + m_Name; + tName = "(" + translateStr("Unavailable") + ") " + m_Name; } if (!enable()) { - tName = "(" + tr("Disable") + ") " + m_Name; + tName = "(" + translateStr("Disable") + ") " + m_Name; } m_TableData.append(tName); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceComputer.cpp b/deepin-devicemanager/src/DeviceManager/DeviceComputer.cpp index e1b98deab..5fc1c890e 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceComputer.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceComputer.cpp @@ -7,7 +7,7 @@ // Qt库文件 #include -#include +#include DeviceComputer::DeviceComputer() : m_HomeUrl("") @@ -160,7 +160,7 @@ void DeviceComputer::initFilterKey() void DeviceComputer::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); + addBaseDeviceInfo(("Name"), m_Name); } void DeviceComputer::loadOtherDeviceInfo() diff --git a/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp b/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp index b6853ca01..8c2a23353 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp @@ -23,6 +23,7 @@ DeviceCpu::DeviceCpu() , m_CacheL1Order("") , m_CacheL2("") , m_CacheL3("") + , m_CacheL4("") , m_Extensions("") , m_Flags("") , m_HardwareVirtual("") @@ -53,27 +54,27 @@ void DeviceCpu::setCpuInfo(const QMap &mapLscpu, const QMap &mapInfo) setAttribute(mapInfo, "L1i cache", m_CacheL1Order); setAttribute(mapInfo, "L2 cache", m_CacheL2); setAttribute(mapInfo, "L3 cache", m_CacheL3); + setAttribute(mapInfo, "L4 cache", m_CacheL4); setAttribute(mapInfo, "flags", m_Flags); setAttribute(mapInfo, "Virtualization", m_HardwareVirtual); @@ -218,8 +220,8 @@ TomlFixMethod DeviceCpu::setInfoFromTomlOneByOne(const QMap &m ret = setTomlAttribute(mapInfo, "Core ID", m_CoreID); ret = setTomlAttribute(mapInfo, "Threads", m_ThreadNum); ret = setTomlAttribute(mapInfo, "Frequency", m_Frequency); - ret = setTomlAttribute(mapInfo, "Current Speed", m_CurFrequency); - ret = setTomlAttribute(mapInfo, "Max Speed", m_MaxFrequency); + ret = setTomlAttribute(mapInfo, "Current Frequency", m_CurFrequency); + ret = setTomlAttribute(mapInfo, "Max Frequency", m_MaxFrequency); ret = setTomlAttribute(mapInfo, "BogoMIPS", m_BogoMIPS); ret = setTomlAttribute(mapInfo, "Architecture", m_Architecture); ret = setTomlAttribute(mapInfo, "CPU Family", m_Familly); @@ -228,6 +230,7 @@ TomlFixMethod DeviceCpu::setInfoFromTomlOneByOne(const QMap &m ret = setTomlAttribute(mapInfo, "Virtualization", m_HardwareVirtual); ret = setTomlAttribute(mapInfo, "Flags", m_Flags); ret = setTomlAttribute(mapInfo, "Extensions", m_Extensions); + ret = setTomlAttribute(mapInfo, "L4 Cache", m_CacheL4); ret = setTomlAttribute(mapInfo, "L3 Cache", m_CacheL3); ret = setTomlAttribute(mapInfo, "L2 Cache", m_CacheL2); ret = setTomlAttribute(mapInfo, "L1i Cache", m_CacheL1Order); @@ -248,6 +251,12 @@ void DeviceCpu::setInfoFromDmidecode(const QMap &mapInfo) setAttribute(mapInfo, "product", m_Name); } + if (Common::specialComType > 0) { + if (mapInfo.contains("Version")) { + setAttribute(mapInfo, "Version", m_Name); + } + } + // 获取设备基本信息 setAttribute(mapInfo, "Manufacturer", m_Vendor); setAttribute(mapInfo, "Max Speed", m_Frequency, false); @@ -264,14 +273,15 @@ void DeviceCpu::loadOtherDeviceInfo() { // 倒序,头插,保证原来的顺序 // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Virtualization"), m_HardwareVirtual); - addOtherDeviceInfo(tr("Flags"), m_Flags); - addOtherDeviceInfo(tr("Extensions"), m_Extensions); - addOtherDeviceInfo(tr("L3 Cache"), m_CacheL3); - addOtherDeviceInfo(tr("L2 Cache"), m_CacheL2); - addOtherDeviceInfo(tr("L1i Cache"), m_CacheL1Order); - addOtherDeviceInfo(tr("L1d Cache"), m_CacheL1Data); - addOtherDeviceInfo(tr("Stepping"), m_Step); + addOtherDeviceInfo(("Virtualization"), m_HardwareVirtual); + addOtherDeviceInfo(("Flags"), m_Flags); + addOtherDeviceInfo(("Extensions"), m_Extensions); + addOtherDeviceInfo(("L4 Cache"), m_CacheL4); + addOtherDeviceInfo(("L3 Cache"), m_CacheL3); + addOtherDeviceInfo(("L2 Cache"), m_CacheL2); + addOtherDeviceInfo(("L1i Cache"), m_CacheL1Order); + addOtherDeviceInfo(("L1d Cache"), m_CacheL1Data); + addOtherDeviceInfo(("Stepping"), m_Step); // 将QMap内容转存为QList> mapInfoToList(); @@ -280,10 +290,10 @@ void DeviceCpu::loadOtherDeviceInfo() void DeviceCpu::loadTableHeader() { // 加载表头 - m_TableHeader.append(tr("Name")); - m_TableHeader.append(tr("Vendor")); - m_TableHeader.append(frequencyIsRange() ? tr("Speed") : tr("Max Speed")); - m_TableHeader.append(tr("Architecture")); + m_TableHeader.append("Name"); + m_TableHeader.append("Vendor"); + m_TableHeader.append(frequencyIsRange() ? ("Frequency") : ("Max Frequency")); + m_TableHeader.append("Architecture"); } void DeviceCpu::loadTableData() @@ -298,85 +308,85 @@ void DeviceCpu::loadTableData() void DeviceCpu::getTrNumber() { // 将数字转换为英文翻译 - m_trNumber.insert(1, QObject::tr("One")); - m_trNumber.insert(2, QObject::tr("Two")); - m_trNumber.insert(4, QObject::tr("Four")); - m_trNumber.insert(6, QObject::tr("Six")); - m_trNumber.insert(8, QObject::tr("Eight")); - - m_trNumber.insert(10, QObject::tr("Ten")); - m_trNumber.insert(12, QObject::tr("Twelve")); - m_trNumber.insert(14, QObject::tr("Fourteen")); - m_trNumber.insert(16, QObject::tr("Sixteen")); - m_trNumber.insert(18, QObject::tr("Eighteen")); - - m_trNumber.insert(20, QObject::tr("Twenty")); - m_trNumber.insert(22, QObject::tr("Twenty-two")); - m_trNumber.insert(24, QObject::tr("Twenty-four")); - m_trNumber.insert(26, QObject::tr("Twenty-six")); - m_trNumber.insert(28, QObject::tr("Twenty-eight")); - - m_trNumber.insert(30, QObject::tr("Thirty")); - m_trNumber.insert(32, QObject::tr("Thirty-two")); - m_trNumber.insert(34, QObject::tr("Thirty-four")); - m_trNumber.insert(36, QObject::tr("Thirty-six")); - m_trNumber.insert(38, QObject::tr("Thirty-eight")); - - m_trNumber.insert(40, QObject::tr("Forty")); - m_trNumber.insert(42, QObject::tr("Forty-two")); - m_trNumber.insert(44, QObject::tr("Forty-four")); - m_trNumber.insert(46, QObject::tr("Forty-six")); - m_trNumber.insert(48, QObject::tr("Forty-eight")); - - m_trNumber.insert(50, QObject::tr("Fifty")); - m_trNumber.insert(52, QObject::tr("Fifty-two")); - m_trNumber.insert(54, QObject::tr("Fifty-four")); - m_trNumber.insert(56, QObject::tr("Fifty-six")); - m_trNumber.insert(58, QObject::tr("Fifty-eight")); - - m_trNumber.insert(60, QObject::tr("Sixty")); - m_trNumber.insert(62, QObject::tr("Sixty-two")); - m_trNumber.insert(64, QObject::tr("Sixty-four")); - m_trNumber.insert(66, QObject::tr("Sixty-six")); - m_trNumber.insert(68, QObject::tr("Sixty-eight")); - - m_trNumber.insert(70, QObject::tr("Seventy")); - m_trNumber.insert(72, QObject::tr("Seventy-two")); - m_trNumber.insert(74, QObject::tr("Seventy-four")); - m_trNumber.insert(76, QObject::tr("Seventy-six")); - m_trNumber.insert(78, QObject::tr("Seventy-eight")); - - m_trNumber.insert(80, QObject::tr("Eighty")); - m_trNumber.insert(82, QObject::tr("Eighty-two")); - m_trNumber.insert(84, QObject::tr("Eighty-four")); - m_trNumber.insert(86, QObject::tr("Eighty-six")); - m_trNumber.insert(88, QObject::tr("Eighty-eight")); - - m_trNumber.insert(90, QObject::tr("Ninety")); - m_trNumber.insert(92, QObject::tr("Ninety-two")); - m_trNumber.insert(94, QObject::tr("Ninety-four")); - m_trNumber.insert(96, QObject::tr("Ninety-six")); - m_trNumber.insert(98, QObject::tr("Ninety-eight")); - - m_trNumber.insert(100, QObject::tr("One hundred")); - m_trNumber.insert(102, QObject::tr("One hundred and Two")); - m_trNumber.insert(104, QObject::tr("One hundred and four")); - m_trNumber.insert(106, QObject::tr("One hundred and Six")); - m_trNumber.insert(108, QObject::tr("One hundred and Eight")); - - m_trNumber.insert(110, QObject::tr("One hundred and Ten")); - m_trNumber.insert(112, QObject::tr("One hundred and Twelve")); - m_trNumber.insert(114, QObject::tr("One hundred and Fourteen")); - m_trNumber.insert(116, QObject::tr("One hundred and Sixteen")); - m_trNumber.insert(118, QObject::tr("One hundred and Eighteen")); - - m_trNumber.insert(120, QObject::tr("One hundred and Twenty")); - m_trNumber.insert(122, QObject::tr("One hundred and Twenty-two")); - m_trNumber.insert(124, QObject::tr("One hundred and Twenty-four")); - m_trNumber.insert(126, QObject::tr("One hundred and Twenty-six")); - m_trNumber.insert(128, QObject::tr("One hundred and Twenty-eight")); - m_trNumber.insert(192, QObject::tr("One hundred and Ninety-two")); - m_trNumber.insert(256, QObject::tr("Two hundred and fifty-six")); + m_trNumber.insert(1, translateStr("One")); + m_trNumber.insert(2, translateStr("Two")); + m_trNumber.insert(4, translateStr("Four")); + m_trNumber.insert(6, translateStr("Six")); + m_trNumber.insert(8, translateStr("Eight")); + m_trNumber.insert(9, translateStr("Nine")); + m_trNumber.insert(10, translateStr("Ten")); + m_trNumber.insert(12, translateStr("Twelve")); + m_trNumber.insert(14, translateStr("Fourteen")); + m_trNumber.insert(16, translateStr("Sixteen")); + m_trNumber.insert(18, translateStr("Eighteen")); + + m_trNumber.insert(20, translateStr("Twenty")); + m_trNumber.insert(22, translateStr("Twenty-two")); + m_trNumber.insert(24, translateStr("Twenty-four")); + m_trNumber.insert(26, translateStr("Twenty-six")); + m_trNumber.insert(28, translateStr("Twenty-eight")); + + m_trNumber.insert(30, translateStr("Thirty")); + m_trNumber.insert(32, translateStr("Thirty-two")); + m_trNumber.insert(34, translateStr("Thirty-four")); + m_trNumber.insert(36, translateStr("Thirty-six")); + m_trNumber.insert(38, translateStr("Thirty-eight")); + + m_trNumber.insert(40, translateStr("Forty")); + m_trNumber.insert(42, translateStr("Forty-two")); + m_trNumber.insert(44, translateStr("Forty-four")); + m_trNumber.insert(46, translateStr("Forty-six")); + m_trNumber.insert(48, translateStr("Forty-eight")); + + m_trNumber.insert(50, translateStr("Fifty")); + m_trNumber.insert(52, translateStr("Fifty-two")); + m_trNumber.insert(54, translateStr("Fifty-four")); + m_trNumber.insert(56, translateStr("Fifty-six")); + m_trNumber.insert(58, translateStr("Fifty-eight")); + + m_trNumber.insert(60, translateStr("Sixty")); + m_trNumber.insert(62, translateStr("Sixty-two")); + m_trNumber.insert(64, translateStr("Sixty-four")); + m_trNumber.insert(66, translateStr("Sixty-six")); + m_trNumber.insert(68, translateStr("Sixty-eight")); + + m_trNumber.insert(70, translateStr("Seventy")); + m_trNumber.insert(72, translateStr("Seventy-two")); + m_trNumber.insert(74, translateStr("Seventy-four")); + m_trNumber.insert(76, translateStr("Seventy-six")); + m_trNumber.insert(78, translateStr("Seventy-eight")); + + m_trNumber.insert(80, translateStr("Eighty")); + m_trNumber.insert(82, translateStr("Eighty-two")); + m_trNumber.insert(84, translateStr("Eighty-four")); + m_trNumber.insert(86, translateStr("Eighty-six")); + m_trNumber.insert(88, translateStr("Eighty-eight")); + + m_trNumber.insert(90, translateStr("Ninety")); + m_trNumber.insert(92, translateStr("Ninety-two")); + m_trNumber.insert(94, translateStr("Ninety-four")); + m_trNumber.insert(96, translateStr("Ninety-six")); + m_trNumber.insert(98, translateStr("Ninety-eight")); + + m_trNumber.insert(100, translateStr("One hundred")); + m_trNumber.insert(102, translateStr("One hundred and Two")); + m_trNumber.insert(104, translateStr("One hundred and four")); + m_trNumber.insert(106, translateStr("One hundred and Six")); + m_trNumber.insert(108, translateStr("One hundred and Eight")); + + m_trNumber.insert(110, translateStr("One hundred and Ten")); + m_trNumber.insert(112, translateStr("One hundred and Twelve")); + m_trNumber.insert(114, translateStr("One hundred and Fourteen")); + m_trNumber.insert(116, translateStr("One hundred and Sixteen")); + m_trNumber.insert(118, translateStr("One hundred and Eighteen")); + + m_trNumber.insert(120, translateStr("One hundred and Twenty")); + m_trNumber.insert(122, translateStr("One hundred and Twenty-two")); + m_trNumber.insert(124, translateStr("One hundred and Twenty-four")); + m_trNumber.insert(126, translateStr("One hundred and Twenty-six")); + m_trNumber.insert(128, translateStr("One hundred and Twenty-eight")); + m_trNumber.insert(192, translateStr("One hundred and Ninety-two")); + m_trNumber.insert(256, translateStr("Two hundred and fifty-six")); } diff --git a/deepin-devicemanager/src/DeviceManager/DeviceCpu.h b/deepin-devicemanager/src/DeviceManager/DeviceCpu.h index faf4d6ae6..ea132ba88 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceCpu.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceCpu.h @@ -6,7 +6,7 @@ #ifndef DEVICECPU_H #define DEVICECPU_H #include "DeviceInfo.h" - +#include "commonfunction.h" /** * @brief The DeviceCpu class * 用来描述CPU的类 @@ -159,6 +159,7 @@ class DeviceCpu : public DeviceBaseInfo QString m_CacheL1Order; // +#include DeviceGpu::DeviceGpu() : DeviceBaseInfo() , m_Model("") , m_GraphicsMemory("") , m_Width("") - , m_DisplayPort("Unable") + , m_DisplayPort("") , m_Clock("") , m_IRQ("") , m_Capabilities("") , m_DisplayOutput("") - , m_VGA("Unable") - , m_HDMI("Unable") - , m_eDP("Unable") - , m_DVI("Unable") - , m_Digital("Unable") + , m_VGA("") + , m_HDMI("") + , m_eDP("") + , m_DVI("") + , m_Digital("") , m_CurrentResolution("") , m_MinimumResolution("") , m_MaximumResolution("") @@ -36,21 +36,21 @@ DeviceGpu::DeviceGpu() void DeviceGpu::initFilterKey() { // 添加可显示属性 - addFilterKey(QObject::tr("Device")); - addFilterKey(QObject::tr("SubVendor")); - addFilterKey(QObject::tr("SubDevice")); - addFilterKey(QObject::tr("Driver Modules")); - addFilterKey(QObject::tr("Config Status")); - addFilterKey(QObject::tr("latency")); - - // gpuinfo 华为KLU和PanGuV - addFilterKey(QObject::tr("GDDR capacity")); - addFilterKey(QObject::tr("GPU vendor")); - addFilterKey(QObject::tr("GPU type")); - addFilterKey(QObject::tr("EGL version")); - addFilterKey(QObject::tr("EGL client APIs")); - addFilterKey(QObject::tr("GL version")); - addFilterKey(QObject::tr("GLSL version")); + addFilterKey("Device"); + addFilterKey("SubVendor"); + addFilterKey("SubDevice"); + addFilterKey("Driver Modules"); + addFilterKey("Config Status"); + addFilterKey("Latency"); + + // gpuinfo + addFilterKey("GDDR capacity"); + addFilterKey("GPU vendor"); + addFilterKey("GPU type"); + addFilterKey("EGL version"); + addFilterKey("EGL client APIs"); + addFilterKey("GL version"); + addFilterKey("GLSL version"); } @@ -58,11 +58,11 @@ void DeviceGpu::initFilterKey() void DeviceGpu::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Model"), m_Model); - addBaseDeviceInfo(tr("Version"), m_Version); - addBaseDeviceInfo(tr("Graphics Memory"), m_GraphicsMemory); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Model"), m_Model); + addBaseDeviceInfo(("Version"), m_Version); + addBaseDeviceInfo(("Graphics Memory"), m_GraphicsMemory); } void DeviceGpu::setLshwInfo(const QMap &mapInfo) @@ -72,6 +72,9 @@ void DeviceGpu::setLshwInfo(const QMap &mapInfo) return; // 设置属性 + if ((m_Name.isEmpty() || m_Name.startsWith("pci")) && mapInfo.contains("product") && !mapInfo["product"].startsWith("pci")) { + m_Model = mapInfo["product"]; + } setAttribute(mapInfo, "product", m_Name, m_Name.isEmpty() || (m_Name.startsWith("pci") && mapInfo.contains("product") && !mapInfo["product"].startsWith("pci"))); setAttribute(mapInfo, "vendor", m_Vendor); setAttribute(mapInfo, "version", m_Version); @@ -117,6 +120,7 @@ TomlFixMethod DeviceGpu::setInfoFromTomlOneByOne(const QMap &m setTomlAttribute(mapInfo, "Capabilities", m_Capabilities); setTomlAttribute(mapInfo, "IRQ", m_IRQ); setTomlAttribute(mapInfo, "Width", m_Width); + setAttribute(mapInfo, "Version", m_Version); //3. 获取设备的其它信息 getOtherMapInfo(mapInfo); return ret; @@ -132,6 +136,9 @@ bool DeviceGpu::setHwinfoInfo(const QMap &mapInfo) setAttribute(mapInfo, "SubDevice", m_Name, true); } setAttribute(mapInfo, "Model", m_Model); + if (m_Model.isEmpty() && !m_Name.isEmpty() && !m_Name.startsWith("pci")) { + m_Model = m_Name; + } setAttribute(mapInfo, "Revision", m_Version, false); setAttribute(mapInfo, "IRQ", m_IRQ, false); setAttribute(mapInfo, "Driver", m_Driver, false); @@ -157,6 +164,7 @@ bool DeviceGpu::setHwinfoInfo(const QMap &mapInfo) if (file.open(QIODevice::ReadOnly)) { QString allStr(file.readAll()); QStringList items = allStr.split("\n\n"); + file.close(); foreach (const QString &item, items) { if (item.isEmpty()) continue; @@ -179,6 +187,26 @@ bool DeviceGpu::setHwinfoInfo(const QMap &mapInfo) } } } + QString jjwFile = "/proc/gpuinfo_0"; + if (m_VID_PID.contains("0731") && QFile::exists(jjwFile)) { + QFile file(jjwFile); + if (file.open(QIODevice::ReadOnly)) { + QString allStr(file.readAll()); + QStringList infos = allStr.split("\n"); + file.close(); + foreach (const QString &item, infos) { + if (item.isEmpty()) + continue; + QStringList items = item.split(":", QString::SkipEmptyParts); + if (items.size() != 2) + continue; + if (items.first().trimmed() == "Memory Size") { + m_GraphicsMemory = items.last().trimmed(); + break; + } + } + } + } // // 获取 匹配到lshw的Key setHwinfoLshwKey(mapInfo); @@ -256,6 +284,27 @@ void DeviceGpu::setGpuInfo(const QMap &mapInfo) getOtherMapInfo(mapInfo); } +// 名称(Name) 厂商(Vendor) 型号(Model) 版本(Version) 显存(Graphics Memory) +void DeviceGpu::setGpuInfoByCustom(const QMap &mapInfo) +{ + QMap::const_iterator it = mapInfo.constBegin(); + for (; it != mapInfo.constEnd(); ++it) { + if (it.key() == "Name") { + m_Name = it.value(); + } else if (it.key() == "Vendor") { + m_Vendor = it.value(); + } else if (it.key() == "Model") { + m_Model = it.value(); + } else if (it.key() == "Version") { + m_Version = it.value(); + } else if (it.key() == "Graphics Memory") { + m_GraphicsMemory = it.value(); + } else { + m_extraInfo.insert(it.key(), it.value()); + } + } +} + const QString &DeviceGpu::name() const { return m_Name; @@ -287,32 +336,35 @@ void DeviceGpu::loadOtherDeviceInfo() QString type = Common::boardVendorType(); // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Module Alias"), m_Modalias); - addOtherDeviceInfo(tr("Physical ID"), m_PhysID); - addOtherDeviceInfo(tr("Memory Address"), m_MemAddress); - addOtherDeviceInfo(tr("IO Port"), m_IOPort); - addOtherDeviceInfo(tr("Bus Info"), m_BusInfo); - if (type != "KLVV" && type != "KLVU" && type != "PGUV" && type != "PGUW") { - addOtherDeviceInfo(tr("Maximum Resolution"), m_MaximumResolution); - addOtherDeviceInfo(tr("Minimum Resolution"), m_MinimumResolution); + addOtherDeviceInfo(("Module Alias"), m_Modalias); + addOtherDeviceInfo(("Physical ID"), m_PhysID); + addOtherDeviceInfo(("Memory Address"), m_MemAddress); + addOtherDeviceInfo(("IO Port"), m_IOPort); + addOtherDeviceInfo(("Bus Info"), m_BusInfo); + if (type != Common::specialHString()) { + addOtherDeviceInfo(("Maximum Resolution"), m_MaximumResolution); + addOtherDeviceInfo(("Minimum Resolution"), m_MinimumResolution); } - addOtherDeviceInfo(tr("Current Resolution"), m_CurrentResolution); - addOtherDeviceInfo(tr("Driver"), m_Driver); - addOtherDeviceInfo(tr("Description"), m_Description); -// addOtherDeviceInfo(tr("Clock"), m_Clock); - addOtherDeviceInfo(tr("DP"), m_DisplayPort); - addOtherDeviceInfo(tr("eDP"), m_eDP); - addOtherDeviceInfo(tr("HDMI"), m_HDMI); - addOtherDeviceInfo(tr("VGA"), m_VGA); - addOtherDeviceInfo(tr("DVI"), m_DVI); - addOtherDeviceInfo(tr("DigitalOutput"), m_Digital); // bug-105482添加新接口类型 - addOtherDeviceInfo(tr("Display Output"), m_DisplayOutput); - addOtherDeviceInfo(tr("Capabilities"), m_Capabilities); - addOtherDeviceInfo(tr("IRQ"), m_IRQ); -// addOtherDeviceInfo(tr("Width"), m_Width); + addOtherDeviceInfo(("Current Resolution"), m_CurrentResolution); + addOtherDeviceInfo(("Driver"), m_Driver); + addOtherDeviceInfo(("Description"), m_Description); +// addOtherDeviceInfo(("Clock"), m_Clock); + addOtherDeviceInfo(("DP"), m_DisplayPort); + addOtherDeviceInfo(("eDP"), m_eDP); + addOtherDeviceInfo(("HDMI"), m_HDMI); + addOtherDeviceInfo(("VGA"), m_VGA); + addOtherDeviceInfo(("DVI"), m_DVI); + addOtherDeviceInfo(("DigitalOutput"), m_Digital); // bug-105482添加新接口类型 + addOtherDeviceInfo(("Display Output"), m_DisplayOutput); + addOtherDeviceInfo(("Capabilities"), m_Capabilities); + addOtherDeviceInfo(("IRQ"), m_IRQ); +// addOtherDeviceInfo(("Width"), m_Width); // 将QMap内容转存为QList> mapInfoToList(); + + // 将m_extraInfo追加到m_LstOtherInfo中 + appendExtraInfoToOtherInfo(); } void DeviceGpu::loadTableData() @@ -320,9 +372,18 @@ void DeviceGpu::loadTableData() // 加载表格内容 QString tName = m_Name; if (!available()) { - tName = "(" + tr("Unavailable") + ") " + m_Name; + tName = "(" + translateStr("Unavailable") + ") " + m_Name; } m_TableData.append(tName); m_TableData.append(m_Vendor); m_TableData.append(m_Model); } + +void DeviceGpu::appendExtraInfoToOtherInfo() +{ + QMap::const_iterator iter = m_extraInfo.constBegin(); + for (; iter != m_extraInfo.constEnd(); ++iter) { + if (isValueValid(iter.value())) + m_LstOtherInfo.append(QPair(iter.key(), iter.value())); + } +} diff --git a/deepin-devicemanager/src/DeviceManager/DeviceGpu.h b/deepin-devicemanager/src/DeviceManager/DeviceGpu.h index d5d4e1f40..85d038d06 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceGpu.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceGpu.h @@ -56,6 +56,8 @@ class DeviceGpu: public DeviceBaseInfo */ void setGpuInfo(const QMap &mapInfo); + void setGpuInfoByCustom(const QMap &mapInfo); + /** * @brief name:获取名称属性值 * @return QString 名称属性值 @@ -108,6 +110,9 @@ class DeviceGpu: public DeviceBaseInfo */ void loadTableData() override; +private: + void appendExtraInfoToOtherInfo(); + private: QString m_Model; // m_extraInfo; }; #endif // DEVICEGPU_H diff --git a/deepin-devicemanager/src/DeviceManager/DeviceImage.cpp b/deepin-devicemanager/src/DeviceManager/DeviceImage.cpp index 33aad772a..53f3608a0 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceImage.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceImage.cpp @@ -6,6 +6,7 @@ #include "DeviceImage.h" #include "DeviceManager.h" #include "DBusEnableInterface.h" +#include "DBusInterface.h" DeviceImage::DeviceImage() : DeviceBaseInfo() @@ -17,6 +18,7 @@ DeviceImage::DeviceImage() { m_CanEnable = true; m_CanUninstall = true; + m_forcedDisplay = true; } void DeviceImage::setInfoFromLshw(const QMap &mapInfo) @@ -44,6 +46,7 @@ TomlFixMethod DeviceImage::setInfoFromTomlOneByOne(const QMap // 添加基本信息 ret = setTomlAttribute(mapInfo, "Model", m_Model); ret = setTomlAttribute(mapInfo, "Bus Info", m_BusInfo); + ret = setTomlAttribute(mapInfo, "Version", m_Version); // 添加其他信息,成员变量 ret = setTomlAttribute(mapInfo, "Speed", m_Speed); ret = setTomlAttribute(mapInfo, "Maximum Power", m_MaximumPower); @@ -71,8 +74,10 @@ void DeviceImage::setInfoFromHwinfo(const QMap &mapInfo) m_Enable = false; } setAttribute(mapInfo, "Serial ID", m_SerialID); - setAttribute(mapInfo, "Unique ID", m_SerialID); - m_UniqueID = m_SerialID; + setAttribute(mapInfo, "Unique ID", m_UniqueID); + // 防止Serial ID为空 + if (m_SerialID.isEmpty()) + m_SerialID = m_UniqueID; setAttribute(mapInfo, "SysFS ID", m_SysPath); setAttribute(mapInfo, "Device", m_Name); setAttribute(mapInfo, "Vendor", m_Vendor); @@ -135,6 +140,8 @@ EnableDeviceStatus DeviceImage::setEnable(bool e) bool res = DBusEnableInterface::getInstance()->enable("camera", m_Name, m_SysPath, m_UniqueID, e, m_Driver); if (res) { m_Enable = e; + if(e) + DBusInterface::getInstance()->refreshInfo(); } // 设置设备状态 return res ? EDS_Success : EDS_Faild; @@ -154,23 +161,24 @@ void DeviceImage::initFilterKey() void DeviceImage::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Version"), m_Version); - addBaseDeviceInfo(tr("Model"), m_Model); - addBaseDeviceInfo(tr("Bus Info"), m_BusInfo); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Version"), m_Version); + addBaseDeviceInfo(("Model"), m_Model); + addBaseDeviceInfo(("Bus Info"), m_BusInfo); } void DeviceImage::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Module Alias"), m_Modalias); - addOtherDeviceInfo(tr("Physical ID"), m_PhysID); - addOtherDeviceInfo(tr("Speed"), m_Speed); - addOtherDeviceInfo(tr("Maximum Power"), m_MaximumPower); - addOtherDeviceInfo(tr("Driver"), m_Driver); - addOtherDeviceInfo(tr("Capabilities"), m_Capabilities); - addOtherDeviceInfo(tr("Serial Number"), m_SerialID); + addOtherDeviceInfo(("Module Alias"), m_Modalias); + addOtherDeviceInfo(("Physical ID"), m_PhysID); + addOtherDeviceInfo(("Speed"), m_Speed); + addOtherDeviceInfo(("Maximum Power"), m_MaximumPower); + addOtherDeviceInfo(("Driver"), m_Driver); + addOtherDeviceInfo(("Capabilities"), m_Capabilities); + if (m_SerialID != m_UniqueID) + addOtherDeviceInfo(("Serial Number"), m_SerialID); // 将QMap内容转存为QList> mapInfoToList(); @@ -182,11 +190,11 @@ void DeviceImage::loadTableData() QString tName = m_Name; if (!available()) { - tName = "(" + tr("Unavailable") + ") " + m_Name; + tName = "(" + translateStr("Unavailable") + ") " + m_Name; } if (!enable()) { - tName = "(" + tr("Disable") + ") " + m_Name; + tName = "(" + translateStr("Disable") + ") " + m_Name; } m_TableData.append(tName); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp b/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp index bfee48893..24f00a5a3 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceInfo.cpp @@ -4,15 +4,19 @@ // 项目自身文件 #include "DeviceInfo.h" +#include "commonfunction.h" #include "commondefine.h" #include"DeviceManager.h" +#include "DDLog.h" #include -#include +#include #include #include +using namespace DDLog; + DWIDGET_USE_NAMESPACE DeviceBaseInfo::DeviceBaseInfo(QObject *parent) @@ -41,6 +45,17 @@ DeviceBaseInfo::~DeviceBaseInfo() } +const QString DeviceBaseInfo::translateStr(const QString &inStr) +{ + return tr(inStr.toLatin1()); +} + +const QString DeviceBaseInfo::nameTr() +{ + return translateStr(m_Name); +} + + const QList> &DeviceBaseInfo::getOtherAttribs() { // 获取其他设备信息列表 @@ -57,15 +72,52 @@ const QList > &DeviceBaseInfo::getBaseAttribs() return m_LstBaseInfo; } +const QList > &DeviceBaseInfo::getOtherTranslationAttribs() +{ + m_LstOtherInfoTr.clear(); + getOtherAttribs(); + for (const auto &pair : m_LstOtherInfo) { + QString trKey =translateStr(pair.first); + if (trKey.isEmpty()) + m_LstOtherInfoTr.append(qMakePair(pair.first, pair.second)); // 添加到目标列表 + else + m_LstOtherInfoTr.append(qMakePair(trKey, pair.second)); + } + return m_LstOtherInfoTr; +} + +const QList > &DeviceBaseInfo::getBaseTranslationAttribs() +{ + m_LstBaseInfoTr.clear(); + getBaseAttribs(); + for (const auto &pair : m_LstBaseInfo) { + QString trKey = translateStr(pair.first); + if (trKey.isEmpty()) + m_LstBaseInfoTr.append(qMakePair(pair.first, pair.second)); // 添加到目标列表 + else + m_LstBaseInfoTr.append(qMakePair(trKey, pair.second)); + } + return m_LstBaseInfoTr; +} + const QStringList &DeviceBaseInfo::getTableHeader() { + m_TableHeaderTr.clear(); // 获取表头 if (m_TableHeader.size() == 0) { loadTableHeader(); m_TableHeader.append(m_CanEnable ? "yes" : "no"); } - return m_TableHeader; + for (const auto &item : m_TableHeader) { + QString trKey = tr(item.toLatin1()); + if (trKey.isEmpty()) + m_TableHeaderTr.append(item); + else + m_TableHeaderTr.append(trKey); + } + + return m_TableHeaderTr; } const QStringList &DeviceBaseInfo::getTableData() @@ -73,7 +125,15 @@ const QStringList &DeviceBaseInfo::getTableData() // 获取表格数据 m_TableData.clear(); loadTableData(); - return m_TableData; + m_TableDataTr.clear(); + for (const auto &item : m_TableData) { + QString trKey = (item); + if (trKey.isEmpty()) + m_TableDataTr.append(item); + else + m_TableDataTr.append(trKey); + } + return m_TableDataTr; } QString DeviceBaseInfo::subTitle() @@ -81,13 +141,13 @@ QString DeviceBaseInfo::subTitle() return QString(""); } -bool DeviceBaseInfo::isValueValid(QString &value) +bool DeviceBaseInfo::isValueValid(const QString &value) { // 判断属性值是否有效 if (value.isEmpty()) return false; - if (value == QObject::tr("Unknown")) + if (value == translateStr("Unknown")) return false; if (value == QString("Unknown")) @@ -140,8 +200,8 @@ void DeviceBaseInfo::setForcedDisplay(const bool &flag) void DeviceBaseInfo::toHtmlString(QDomDocument &doc) { // 设备信息转为Html - baseInfoToHTML(doc, m_LstBaseInfo); - baseInfoToHTML(doc, m_LstOtherInfo); + baseInfoToHTML(doc, m_LstBaseInfoTr); + baseInfoToHTML(doc, m_LstOtherInfoTr); } void DeviceBaseInfo::baseInfoToHTML(QDomDocument &doc, QList > &infoLst) @@ -197,8 +257,8 @@ void DeviceBaseInfo::subTitleToHTML(QDomDocument &doc) void DeviceBaseInfo::toDocString(Docx::Document &doc) { // 设备信息转为doc - baseInfoToDoc(doc, m_LstBaseInfo); - baseInfoToDoc(doc, m_LstOtherInfo); + baseInfoToDoc(doc, m_LstBaseInfoTr); + baseInfoToDoc(doc, m_LstOtherInfoTr); } void DeviceBaseInfo::baseInfoToDoc(Docx::Document &doc, QList > &infoLst) @@ -220,8 +280,8 @@ void DeviceBaseInfo::baseInfoToDoc(Docx::Document &doc, QList > &infoLst) @@ -247,8 +307,8 @@ void DeviceBaseInfo::baseInfoToXlsx(QXlsx::Document &xlsx, QXlsx::Format &boldFo void DeviceBaseInfo::toTxtString(QTextStream &out) { // 设备信息转为txt - baseInfoToTxt(out, m_LstBaseInfo); - baseInfoToTxt(out, m_LstOtherInfo); + baseInfoToTxt(out, m_LstBaseInfoTr); + baseInfoToTxt(out, m_LstOtherInfoTr); } void DeviceBaseInfo::baseInfoToTxt(QTextStream &out, QList > &infoLst) @@ -276,15 +336,15 @@ void DeviceBaseInfo::tableInfoToTxt(QTextStream &out) getTableData(); // 判断是否有表格内容 - if (m_TableData.size() < 1) + if (m_TableDataTr.size() < 1) return; // 设置占位宽度 - QString text = m_TableData[0]; + QString text = m_TableDataTr[0]; out.setFieldWidth(int(text.size() * 1.5)); out.setFieldAlignment(QTextStream::FieldAlignment::AlignRight); - foreach (auto item, m_TableData) { + foreach (auto item, m_TableDataTr) { out.setFieldWidth(28); out << item; } @@ -299,18 +359,18 @@ void DeviceBaseInfo::tableHeaderToTxt(QTextStream &out) getTableHeader(); // 判断是否有表头 - if (m_TableHeader.size() < 1) + if (m_TableHeaderTr.size() < 1) return; // 设置占位宽度 - QString text = m_TableHeader[0]; + QString text = m_TableHeaderTr[0]; out.setFieldWidth(int(text.size() * 1.5)); out.setFieldAlignment(QTextStream::FieldAlignment::AlignLeft); out << "\n"; - for (int col = 0; col < m_TableHeader.size() - 1; ++col) { + for (int col = 0; col < m_TableHeaderTr.size() - 1; ++col) { out.setFieldWidth(30); - out << m_TableHeader[col]; + out << m_TableHeaderTr[col]; } out.setFieldWidth(0); out << "\n"; @@ -322,11 +382,11 @@ void DeviceBaseInfo::tableInfoToHtml(QFile &html) getTableData(); // 判断是否有表格内容 - if (m_TableData.size() < 1) + if (m_TableDataTr.size() < 1) return; // 写表格内容 - foreach (auto item, m_TableData) { + foreach (auto item, m_TableDataTr) { html.write(QString("").toUtf8().data()); } @@ -339,14 +399,14 @@ void DeviceBaseInfo::tableHeaderToHtml(QFile &html) getTableHeader(); // 判断是否有表头 - if (m_TableHeader.size() < 1) + if (m_TableHeaderTr.size() < 1) return; html.write("\n"); // 写表头内容 - for (int col = 0; col < m_TableHeader.size() - 1; ++col) - html.write(QString("").toUtf8().data()); + for (int col = 0; col < m_TableHeaderTr.size() - 1; ++col) + html.write(QString("").toUtf8().data()); html.write("\n"); } @@ -360,13 +420,13 @@ void DeviceBaseInfo::tableInfoToDoc(Docx::Table *tab, int &row) // 获取表格数据 getTableData(); - if (m_TableData.size() < 1) + if (m_TableDataTr.size() < 1) return; // 添加doc表格 - for (int col = 0; col < m_TableData.size(); ++col) { + for (int col = 0; col < m_TableDataTr.size(); ++col) { auto cel = tab->cell(row, col); - cel->addText(m_TableData[col]); + cel->addText(m_TableDataTr[col]); } } @@ -375,14 +435,14 @@ void DeviceBaseInfo::tableHeaderToDoc(Docx::Table *tab) // 表头保存为doc getTableHeader(); - if (m_TableHeader.size() < 1) + if (m_TableHeaderTr.size() < 1) return; // 添加表头信息 - for (int col = 0; col < m_TableHeader.size() - 1; ++col) { + for (int col = 0; col < m_TableHeaderTr.size() - 1; ++col) { tab->addColumn(); auto cel = tab->cell(0, col); - cel->addText(m_TableHeader[col]); + cel->addText(m_TableHeaderTr[col]); } } @@ -391,13 +451,13 @@ void DeviceBaseInfo::tableInfoToXlsx(QXlsx::Document &xlsx) // 获取表格信息 getTableData(); - if (m_TableData.size() < 1) + if (m_TableDataTr.size() < 1) return; // 添加表格信息 int curRow = DeviceManager::instance()->currentXlsRow(); - for (int col = 0; col < m_TableData.size(); ++col) - xlsx.write(curRow, col + 1, m_TableData[col]); + for (int col = 0; col < m_TableDataTr.size(); ++col) + xlsx.write(curRow, col + 1, m_TableDataTr[col]); } void DeviceBaseInfo::tableHeaderToXlsx(QXlsx::Document &xlsx) @@ -405,16 +465,16 @@ void DeviceBaseInfo::tableHeaderToXlsx(QXlsx::Document &xlsx) // 获取表头 getTableHeader(); - if (m_TableHeader.size() < 1) + if (m_TableHeaderTr.size() < 1) return; // 添加表头信息 int curRow = DeviceManager::instance()->currentXlsRow(); - for (int col = 0; col < m_TableHeader.size() - 1; ++col) { + for (int col = 0; col < m_TableHeaderTr.size() - 1; ++col) { QXlsx::Format boldFont; boldFont.setFontSize(10); boldFont.setFontBold(true); - xlsx.write(curRow, col + 1, m_TableHeader[col], boldFont); + xlsx.write(curRow, col + 1, m_TableHeaderTr[col], boldFont); } } @@ -430,19 +490,19 @@ TomlFixMethod DeviceBaseInfo::setInfoFromTomlBase(const QMap & TomlFixMethod ret2 = TOML_None; if (TOML_nouse == setTomlAttribute(mapInfo, "Modalias", m_Modalias)) { - qInfo() << "toml del the device by modalias"; + qCInfo(appLog) << "toml del the device by modalias"; return TOML_Del; } ret1 = setTomlAttribute(mapInfo, "Vendor_ID", m_VID); ret2 = setTomlAttribute(mapInfo, "Product_ID", m_PID); if ((TOML_nouse == ret1) && (TOML_nouse == ret2)) { - qInfo() << "toml del the device by vid and pid"; + qCInfo(appLog) << "toml del the device by vid and pid"; return TOML_Del; } ret1 = setTomlAttribute(mapInfo, "Vendor", m_Vendor); ret2 = setTomlAttribute(mapInfo, "Name", m_Name); if ((TOML_nouse == ret1) && (TOML_nouse == ret2)) { - qInfo() << "toml del the device by vendor and name"; + qCInfo(appLog) << "toml del the device by vendor and name"; return TOML_Del; } @@ -489,14 +549,9 @@ bool DeviceBaseInfo::driverIsKernelIn(const QString &driver) return false; } - QString info = ""; - QProcess process; - // 判断lsmod是否能查询 - process.start("sh", QStringList() << "-c" << QString("modinfo %1 | grep 'filename:'").arg(driver)); - process.waitForFinished(-1); - info = process.readAllStandardOutput(); - return info.isEmpty(); + QString outInfo = Common::executeClientCmd("modinfo", QStringList() << driver, QString(), -1); + return !outInfo.contains("filename:"); } void DeviceBaseInfo::setCanEnale(bool can) @@ -575,22 +630,42 @@ const QString DeviceBaseInfo::getVendorOrModelId(const QString &sysPath, bool fl return vendor; } -const QString DeviceBaseInfo::getDriverVersion() +void DeviceBaseInfo::setVendorNameBylsusbLspci(const QString &vidpid, const QString &modalias) { - QProcess process; - process.start("modinfo " + driver() + "| grep version"); - process.waitForFinished(-1); - - QString output = process.readAllStandardOutput(); + if (!vidpid.isEmpty() && modalias.contains("usb")) { + QProcess process; + QString vendorId = vidpid.toLower().remove("0x").trimmed().left(4); + QString deviceId = vidpid.toLower().remove("0x").trimmed().right(4); + process.start("lsusb -v -d " + vendorId + ":" + deviceId); + process.waitForFinished(-1); + + QString output = process.readAllStandardOutput(); + + foreach (QString out, output.split("\n")) { + // 从USB设备获取制造商和设备名称 + if (out.contains("idVendor", Qt::CaseSensitive)) { + m_Vendor = out.remove(0, out.indexOf(vendorId) + 4).trimmed(); + } else if (out.contains("idProduct", Qt::CaseSensitive)) { + m_Name = out.remove(0, out.indexOf(deviceId) + 4).trimmed(); + } + } + } +} - foreach (QString out, output.split("\n")) { - QStringList item = out.split(":"); - if ("version" == item[0].trimmed()) { - return item[1]; +const QString DeviceBaseInfo::getDriverVersion() +{ + QString outInfo = Common::executeClientCmd("modinfo", QStringList() << driver(), QString(), -1); + if (outInfo.isEmpty()) + return QString(""); + + foreach (QString out, outInfo.split("\n")) { + QStringList item = out.split(":", QString::SkipEmptyParts); + if (!item.isEmpty() && "version" == item[0].trimmed()) { + return item[1].trimmed(); } } - return ""; + return QString(""); } const QString DeviceBaseInfo::getOverviewInfo() @@ -621,9 +696,9 @@ const QString &DeviceBaseInfo::getModalias() const void DeviceBaseInfo::loadTableHeader() { // 添加表头信息 - m_TableHeader.append(tr("Name")); - m_TableHeader.append(tr("Vendor")); - m_TableHeader.append(tr("Model")); + m_TableHeader.append("Name"); + m_TableHeader.append("Vendor"); + m_TableHeader.append("Model"); } void DeviceBaseInfo::addFilterKey(const QString &key) @@ -637,7 +712,7 @@ void DeviceBaseInfo::getOtherMapInfo(const QMap &mapInfo) // 获取其他设备信息 QMap::const_iterator it = mapInfo.begin(); for (; it != mapInfo.end(); ++it) { - QString k = DApplication::translate("QObject", it.key().trimmed().toStdString().data()); + QString k = it.key(); // 可显示设备属性中存在该属性 if (m_FilterKey.find(k) != m_FilterKey.end()) { @@ -663,6 +738,44 @@ void DeviceBaseInfo::addOtherDeviceInfo(const QString &key, const QString &value m_LstOtherInfo.insert(0, QPair(key, value)); } +const QString DeviceBaseInfo::readDeviceInfoKeyValue(const QString &key) +{ + if (key.isEmpty()) + return QString(""); + QList > allBaseAttribs = getBaseAttribs(); + for (const QPair& pair : allBaseAttribs) { + if (key == pair.first) + return pair.second; + } + QList > allOtherAttribs = getOtherAttribs(); + for (const QPair& pair : allOtherAttribs) { + if (key == pair.first) + return pair.second; + } + return QString(""); +} + +bool DeviceBaseInfo::setDeviceInfoKeyValue(const QString &key, const QString &value) +{ + if (key.isEmpty() ||value.isEmpty()) + return false; + + for (QPair pair : getBaseAttribs()) { + if (key == pair.first) { + pair.second = value; + return true; + } + } + + for (QPair pair : getOtherAttribs()) { + if (key == pair.first) { + pair.second = value; + return true; + } + } + return false; +} + void DeviceBaseInfo::setAttribute(const QMap &mapInfo, const QString &key, QString &variable, bool overwrite) { // map中存在该属性 @@ -716,9 +829,9 @@ void DeviceBaseInfo::mapInfoToList() { // m_MapOtherInfo --> m_LstOtherInfo // QMap内容转为QList存储 - auto iter = m_MapOtherInfo.begin(); + QMap::const_iterator iter = m_MapOtherInfo.constBegin(); - for (; iter != m_MapOtherInfo.end(); ++iter) { + for (; iter != m_MapOtherInfo.constEnd(); ++iter) { if (isValueValid(iter.value())) m_LstOtherInfo.append(QPair(iter.key(), iter.value())); } @@ -726,9 +839,9 @@ void DeviceBaseInfo::mapInfoToList() void DeviceBaseInfo::setHwinfoLshwKey(const QMap &mapInfo) { - // 网卡使用物理地址作为匹配值 + // 网卡使用物理地址+逻辑设备名作为匹配值 if (mapInfo.find("HW Address") != mapInfo.end()) { - m_HwinfoToLshw = mapInfo["HW Address"]; + m_HwinfoToLshw = (mapInfo.find("Device File") != mapInfo.end()) ? mapInfo["HW Address"] + mapInfo["Device File"] : mapInfo["HW Address"]; return; } @@ -773,9 +886,11 @@ void DeviceBaseInfo::setHwinfoLshwKey(const QMap &mapInfo) bool DeviceBaseInfo::matchToLshw(const QMap &mapInfo) { - // 网卡设备与序列号匹配上 + // 网卡设备与序列号匹配上 或者加上逻辑设备名 if (mapInfo.find("logical name") != mapInfo.end() && mapInfo.find("serial") != mapInfo.end()) { - if (m_HwinfoToLshw == mapInfo["serial"]) { + if (m_HwinfoToLshw == mapInfo["serial"] + mapInfo["logical name"]) { + return true; + } else if (m_HwinfoToLshw == mapInfo["serial"]) { return true; } } @@ -841,4 +956,304 @@ const QString DeviceBaseInfo::get_string(const QString &sysPathfile) file.close(); return info; } +//只是为了lupdate自动增加翻译而占位 +void DeviceBaseInfo::generatorTranslate() +{ + QStringList translationStrings; + translationStrings \ + << tr("Core(s)") \ + << tr("Processor") \ + << tr("ACL MTU") \ + << tr("Address") \ + << tr("Alias") \ + << tr("ansiversion") \ + << tr("Application") \ + << tr("Architecture") \ + << tr("Array Handle") \ + << tr("Asset Tag") \ + << tr("Auto Negotiation") \ + << tr("Bank Locator") \ + << tr("Base Board Information") \ + << tr("BD Address") \ + << tr("BIOS Information") \ + << tr("BIOS Revision") \ + << tr("BIOS ROMSIZE") \ + << tr("Board name") \ + << tr("BogoMIPS") \ + << tr("Boot-up State") \ + << tr("Broadcast") \ + << tr("Bus") \ + << tr("bus info") \ + << tr("Bus Info") \ + << tr("Cache Size") \ + << tr("Capabilities") \ + << tr("Capacity") \ + << tr("Characteristics") \ + << tr("Chassis Handle") \ + << tr("Chassis Information") \ + << tr("Chip") \ + << tr("Chipset") \ + << tr("Class") \ + << tr("Clock") \ + << tr("Config Status") \ + << tr("Configured Speed") \ + << tr("Configured Voltage") \ + << tr("Contained Elements") \ + << tr("Contained Object Handles") \ + << tr("copies") \ + << tr("Core ID") \ + << tr("CPU architecture") \ + << tr("CPU Family") \ + << tr("CPU ID") \ + << tr("CPU implementer") \ + << tr("CPU part") \ + << tr("CPU revision") \ + << tr("CPU variant") \ + << tr("critical-action") \ + << tr("Currently Installed Language") \ + << tr("Current Resolution") \ + << tr("daemon-version") \ + << tr("Data Width") \ + << tr("Date") \ + << tr("description") \ + << tr("Description") \ + << tr("Design Capacity") \ + << tr("Design Voltage") \ + << tr("Device") \ + << tr("Device Class") \ + << tr("Device File") \ + << tr("Device Files") \ + << tr("Device Name") \ + << tr("Device Number") \ + << tr("DigitalOutput") \ + << tr("Disable") \ + << tr("Discoverable") \ + << tr("Discovering") \ + << tr("Display Input") \ + << tr("Display Output") \ + << tr("Display Ratio") \ + << tr("DP") \ + << tr("Driver") \ + << tr("Driver Activation Cmd") \ + << tr("Driver Modules") \ + << tr("Driver Status") \ + << tr("Driver Version") \ + << tr("Duplex") \ + << tr("DVI") \ + << tr("eDP") \ + << tr("EGL client APIs") \ + << tr("EGL version") \ + << tr("energy") \ + << tr("energy-empty") \ + << tr("energy-full") \ + << tr("energy-full-design") \ + << tr("energy-rate") \ + << tr("Error Correction Type") \ + << tr("Error Information Handle") \ + << tr("EV") \ + << tr("Extensions") \ + << tr("Family") \ + << tr("Features") \ + << tr("Firmware") \ + << tr("Firmware Revision") \ + << tr("Firmware Version") \ + << tr("Flags") \ + << tr("Form Factor") \ + << tr("GDDR capacity") \ + << tr("Geometry (Logical)") \ + << tr("GLSL version") \ + << tr("GL version") \ + << tr("GPU type") \ + << tr("GPU vendor") \ + << tr("Graphics Memory") \ + << tr("guid") \ + << tr("Handlers") \ + << tr("Hardware Class") \ + << tr("has history") \ + << tr("has statistics") \ + << tr("HCI Version") \ + << tr("HDMI") \ + << tr("Height") \ + << tr("icon-name") \ + << tr("Input/Output") \ + << tr("Installable Languages") \ + << tr("Interface") \ + << tr("Interface Type") \ + << tr("ioport") \ + << tr("IO Port") \ + << tr("IP") \ + << tr("IRQ") \ + << tr("job-cancel-after") \ + << tr("job-hold-until") \ + << tr("job-priority") \ + << tr("KernelModeDriver") \ + << tr("KEY") \ + << tr("L1d Cache") \ + << tr("L1i Cache") \ + << tr("L2 Cache") \ + << tr("L3 Cache") \ + << tr("L4 Cache") \ + << tr("Language Description Format") \ + << tr("latency") \ + << tr("Latency") \ + << tr("lid-is-closed") \ + << tr("lid-is-present") \ + << tr("Link") \ + << tr("Link mode") \ + << tr("Link policy") \ + << tr("LMP Version") \ + << tr("Location") \ + << tr("Location In Chassis") \ + << tr("Locator") \ + << tr("Lock") \ + << tr("logical name") \ + << tr("Logical Name") \ + << tr("logicalsectorsize") \ + << tr("Logical Size") \ + << tr("MAC Address") \ + << tr("marker-change-time") \ + << tr("Max Frequency") \ + << tr("Maximum Capacity") \ + << tr("Maximum Current") \ + << tr("Maximum Power") \ + << tr("Maximum Rate") \ + << tr("Maximum Resolution") \ + << tr("Maximum Voltage") \ + << tr("Media Type") \ + << tr("Memory") \ + << tr("Memory Address") \ + << tr("Memory Operating Mode Capability") \ + << tr("Memory Subsystem Controller Manufacturer ID") \ + << tr("Memory Subsystem Controller Product ID") \ + << tr("Memory Technology") \ + << tr("Minimum Resolution") \ + << tr("Minimum Voltage") \ + << tr("Modalias") \ + << tr("Model") \ + << tr("Module Alias") \ + << tr("Module Alias") \ + << tr("Module Manufacturer ID") \ + << tr("Module Product ID") \ + << tr("MSC") \ + << tr("Multicast") \ + << tr("Name") \ + << tr("native-path") \ + << tr("Negotiation Rate") \ + << tr("network") \ + << tr("Non-Volatile Size") \ + << tr("Number Of Devices") \ + << tr("Number Of Power Cords") \ + << tr("number-up") \ + << tr("OEM Information") \ + << tr("on-battery") \ + << tr("online") \ + << tr("orientation-requested") \ + << tr("Packet type") \ + << tr("Pairable") \ + << tr("Part Number") \ + << tr("percentage") \ + << tr("Phys") \ + << tr("physical id") \ + << tr("Physical ID") \ + << tr("Physical Memory Array") \ + << tr("Port") \ + << tr("Powered") \ + << tr("power supply") \ + << tr("Power Supply State") \ + << tr("Primary Monitor") \ + << tr("print-color-mode") \ + << tr("printer-is-accepting-jobs") \ + << tr("printer-is-shared") \ + << tr("printer-is-temporary") \ + << tr("printer-make-and-model") \ + << tr("printer-state-change-time") \ + << tr("printer-state-reasons") \ + << tr("printer-type") \ + << tr("printer-uri-supported") \ + << tr("product") \ + << tr("Product Date") \ + << tr("Product Name") \ + << tr("PROP") \ + << tr("Rank") \ + << tr("rechargeable") \ + << tr("Refresh Rate") \ + << tr("Release date") \ + << tr("Release Date") \ + << tr("Revision") \ + << tr("ROM Size") \ + << tr("Rotation Rate") \ + << tr("Runtime Size") \ + << tr("SBDS Chemistry") \ + << tr("SBDS Manufacture Date") \ + << tr("SBDS Serial Number") \ + << tr("SBDS Version") \ + << tr("SCO MTU") \ + << tr("sectorsize") \ + << tr("Security Status") \ + << tr("Serial ID") \ + << tr("Serial Number") \ + << tr("Service Classes") \ + << tr("Set") \ + << tr("Shared") \ + << tr("sides") \ + << tr("Size") \ + << tr("SKU Number") \ + << tr("Slot") \ + << tr("SMBIOS Version") \ + << tr("state") \ + << tr("status") \ + << tr("Status") \ + << tr("Stepping") \ + << tr("SubDevice") \ + << tr("SubVendor") \ + << tr("Subversion") \ + << tr("Support Resolution") \ + << tr("Sysfs") \ + << tr("SysFS_Path") \ + << tr("System Information") \ + << tr("technology") \ + << tr("temperature") \ + << tr("Temperature") \ + << tr("Thermal State") \ + << tr("Threads") \ + << tr("Total Width") \ + << tr("Type") \ + << tr("Type Detail") \ + << tr("Unavailable") \ + << tr("Uniq") \ + << tr("updated") \ + << tr("URI") \ + << tr("UUID") \ + << tr("Vendor") \ + << tr("Version") \ + << tr("VGA") \ + << tr("Virtualization") \ + << tr("Volatile Size") \ + << tr("voltage") \ + << tr("Voltage") \ + << tr("Wake-up Type") \ + << tr("warning-level") \ + << tr("Width") \ + << tr("battery") \ + << tr("inch") \ + << tr("Architecture") \ + << tr("Frequency") \ + << tr("Max Frequency") \ + << tr("Media Type") \ + << tr("Name") \ + << tr("Size") \ + << tr("Speed") \ + << tr("Type") \ + << tr("Vendor") \ + << tr("Processor"); +} + +void DeviceBaseInfo::setSysPath(const QString &newSysPath) +{ + m_SysPath = newSysPath; +} +void DeviceBaseInfo::setUniqueID(const QString &UniqueID) +{ + m_UniqueID = UniqueID; +} diff --git a/deepin-devicemanager/src/DeviceManager/DeviceInfo.h b/deepin-devicemanager/src/DeviceManager/DeviceInfo.h index 1bf565b2b..e3d6c875e 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceInfo.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceInfo.h @@ -43,6 +43,14 @@ class DeviceBaseInfo : public QObject explicit DeviceBaseInfo(QObject *parent = nullptr); virtual ~DeviceBaseInfo(); + const QString translateStr(const QString &inStr); + const QString nameTr(); + /** + * @brief name:获取设备名称 + * @return 设备名称 + */ + virtual const QString &name() const = 0; + /** * @brief getOtherAttribs:获取设备的其它信息 * @return 其他信息组成的map @@ -56,6 +64,19 @@ class DeviceBaseInfo : public QObject */ const QList> &getBaseAttribs(); + /** + * @brief getOtherAttribs:获取设备的其它信息 + * @return 其他信息组成的map + */ + //const QMap &getOtherAttribs()const; + const QList> &getOtherTranslationAttribs(); + + /** + * @brief getBaseAttribs::获取基本设备信息 + * @return 基本信息组成的list + */ + const QList> &getBaseTranslationAttribs(); + /** * @brief getTableHeader : 用于存放表格的头部 * @return : 用于存放表格的头部 @@ -80,12 +101,6 @@ class DeviceBaseInfo : public QObject */ virtual const QString getOverviewInfo(); - /** - * @brief name:获取设备名称 - * @return 设备名称 - */ - virtual const QString &name() const = 0; - /** * @brief vendor:获取设备制造商 * @return 设备制造商 @@ -209,6 +224,14 @@ class DeviceBaseInfo : public QObject */ const QString getVendorOrModelId(const QString &sysPath, bool flag = true); + /** + * @brief setVendorNameBylsusbLspci:获取Vendor 和 Name + * @param vidpid 属性vidpid + * @param modalias + * @return + */ + void setVendorNameBylsusbLspci(const QString &vidpid, const QString &modalias); + /** * @brief get_string:读取文件内信息 * @param path:文件绝对路径+名称 @@ -221,12 +244,26 @@ class DeviceBaseInfo : public QObject */ const QString getDriverVersion(); + /** + * @brief readDeviceInfoKeyValue:读取key信息 + * @param key:属性名称 + * @return :value属性值 + */ + const QString readDeviceInfoKeyValue(const QString &key); + + /** + * @brief readDeviceInfoKeyValue:设置key信息 + * @param key:属性名称 + * @return :value属性值 + */ + bool setDeviceInfoKeyValue(const QString &key, const QString &value); + /** * @brief isValid:判断属性值是否有效 * @param value:属性值 * @return true:属性值有效 */ - bool isValueValid(QString &value); + bool isValueValid(const QString &value); /** * @brief setForcedDisplay:设置强制显示 @@ -357,6 +394,9 @@ class DeviceBaseInfo : public QObject */ TomlFixMethod setInfoFromTomlBase(const QMap &mapInfo); + void setUniqueID(const QString &UniqueID); + void setSysPath(const QString &newSysPath); + protected: /** * @brief:初始化过滤信息 @@ -462,6 +502,9 @@ class DeviceBaseInfo : public QObject */ bool PhysIDMapInfo(const QMap &mapInfo); +private: + void generatorTranslate(); + protected: QString m_Name; //> m_LstBaseInfo; //> m_LstOtherInfo; //> m_LstBaseInfoTr; //> m_LstOtherInfoTr; // m_FilterKey; // +#include +#include DeviceInput::DeviceInput() : DeviceBaseInfo() @@ -37,7 +38,8 @@ bool DeviceInput::setInfoFromlshw(const QMap &mapInfo) } // 设置基础设备信息 - setAttribute(mapInfo, "vendor", m_Vendor); + if (m_Vendor.isEmpty() || m_Vendor.contains("0x")) + setAttribute(mapInfo, "vendor", m_Vendor); setAttribute(mapInfo, "", m_Model); setAttribute(mapInfo, "version", m_Version); setAttribute(mapInfo, "", m_Interface); @@ -64,7 +66,7 @@ bool DeviceInput::setInfoFromlshw(const QMap &mapInfo) TomlFixMethod DeviceInput::setInfoFromTomlOneByOne(const QMap &mapInfo) { TomlFixMethod ret = TOML_None; - // 添加基本信息 + // 添加基本信息 ret = setTomlAttribute(mapInfo, "Model", m_Model); ret = setTomlAttribute(mapInfo, "Interface", m_Interface); ret = setTomlAttribute(mapInfo, "Bus Info", m_BusInfo); @@ -97,12 +99,13 @@ void DeviceInput::setInfoFromHwinfo(const QMap &mapInfo) setAttribute(mapInfo, "Revision", m_Version); setAttribute(mapInfo, "SysFS ID", m_SysPath); setAttribute(mapInfo, "Unique ID", m_WakeupID); - setAttribute(mapInfo, "Unique ID", m_SerialID); + setAttribute(mapInfo, "Unique ID", m_UniqueID); setAttribute(mapInfo, "Module Alias", m_Modalias); setAttribute(mapInfo, "VID_PID", m_VID_PID); m_PhysID = m_VID_PID; - - m_UniqueID = m_SerialID; + // 防止Serial ID为空 + if (m_SerialID.isEmpty()) + m_SerialID = m_UniqueID; // 获取键盘的接口类型 @@ -131,6 +134,9 @@ void DeviceInput::setInfoFromHwinfo(const QMap &mapInfo) // ps2键盘的接口 将Device Files作为syspath解析 if ("PS/2" == m_Interface) { getPS2Syspath(mapInfo["Device Files"]); + if (m_Model.contains("Mouse", Qt::CaseInsensitive)) { + m_CanEnable = false; + } } // 获取映射到 lshw设备信息的 关键字 @@ -144,43 +150,6 @@ void DeviceInput::setInfoFromHwinfo(const QMap &mapInfo) getOtherMapInfo(mapInfo); } -void DeviceInput::setKLUInfoFromHwinfo(const QMap &mapInfo) -{ - // 设置设备基本属性 - setAttribute(mapInfo, "Device", m_Name); - setAttribute(mapInfo, "Vendor", m_Vendor); - setAttribute(mapInfo, "Model", m_Model); - setAttribute(mapInfo, "Revision", m_Version); - if (mapInfo.find("Hotplug") != mapInfo.end()) - setAttribute(mapInfo, "Hotplug", m_Interface); - else - m_Interface = "PS/2"; - - // 上面的方法不适合蓝牙键盘的获取方法 - if (mapInfo.find("Model")->contains("Bluetooth", Qt::CaseInsensitive) || mapInfo.find("Device")->contains("Bluetooth", Qt::CaseInsensitive)) - m_Interface = "Bluetooth"; - - setAttribute(mapInfo, "SysFS BusID", m_BusInfo); - setAttribute(mapInfo, "Hardware Class", m_Description); - setAttribute(mapInfo, "Driver", m_Driver); - setAttribute(mapInfo, "Speed", m_Speed); - - // 获取映射到 lshw设备信息的 关键字 - //1-2:1.0 - QStringList words = mapInfo["SysFS BusID"].split(":"); - if (words.size() == 2) { - QStringList chs = words[0].split("-"); - if (chs.size() == 2) - m_KeyToLshw = QString("usb@%1:%2").arg(chs[0]).arg(chs[1]); - } - - // 由bluetoothctl paired-devices设置设备接口 - setInfoFromBluetoothctl(); - - // 获取其他设备信息 - getOtherMapInfo(mapInfo); -} - void DeviceInput::setInfoFromBluetoothctl() { // 判断该设备信息是否存在于Bluetoothctl中 @@ -292,6 +261,16 @@ QString DeviceInput::eventStrFromDeviceFiles(const QString &dfs) return ""; } +QString DeviceInput::getBusInfo() const +{ + return m_SysPath; +} + +QString DeviceInput::getInterface() const +{ + return m_Interface; +} + const QString &DeviceInput::name() const { return m_Name; @@ -343,6 +322,7 @@ const QString DeviceInput::getOverviewInfo() * * 修改:修改触摸板禁用方法,改为调用daemon提供的接口 */ + EnableDeviceStatus DeviceInput::setEnable(bool e) { if (m_Name.contains("Touchpad", Qt::CaseInsensitive)) { @@ -357,6 +337,15 @@ EnableDeviceStatus DeviceInput::setEnable(bool e) if (m_UniqueID.isEmpty() || m_SysPath.isEmpty()) { return EDS_Faild; } + if(e){ + //鼠标启用时,唤醒能力打开 + DBusWakeupInterface::getInstance()->setWakeupMachine(wakeupID(), sysPath(), true, name()); + m_wakeupChanged = true; + + } else if (m_wakeupChanged) { //鼠标禁用时,唤醒能力关闭 + m_wakeupChanged = false; + DBusWakeupInterface::getInstance()->setWakeupMachine(wakeupID(), sysPath(), false, name()); + } bool res = DBusEnableInterface::getInstance()->enable(m_HardwareClass, m_Name, m_SysPath, m_UniqueID, e, m_Driver); if (res) { m_Enable = e; @@ -377,7 +366,7 @@ bool DeviceInput::enable() bool DeviceInput::canWakeupMachine() { - if (m_WakeupID.isEmpty()) + if (m_WakeupID.isEmpty() || (m_HardwareClass == "keyboard" && "PS/2" == m_Interface)) return false; QFile file(wakeupPath()); if (!file.open(QIODevice::ReadOnly)) { @@ -393,8 +382,21 @@ bool DeviceInput::isWakeupMachine() return false; } QString info = file.readAll(); - if (info.contains("disabled")) - return false; + + if (m_Name.contains("PS/2") || m_Interface.contains("PS/2")) { +// QStringList lines = info.split("\n"); +// for (QString line : lines) { +// if (line.startsWith("PS2M" && line.contains("disabled"))) { +// return false; +// } + // /proc/acpi/wakeup文件中状态未刷新,ps2设备通过dbus获取状态 + return DBusWakeupInterface::getInstance()->isInputWakeupMachine(m_SysPath, m_Name); + + } else { + if (info.contains("disabled")) + return false; + } + return true; } @@ -404,7 +406,12 @@ QString DeviceInput::wakeupPath() if (index < 1) { return ""; } - return QString("/sys") + m_SysPath.left(index) + QString("/power/wakeup"); + + if (m_Name.contains("PS/2")) { + return "/proc/acpi/wakeup"; + } else { + return QString("/sys") + m_SysPath.left(index) + QString("/power/wakeup"); + } } const QString &DeviceInput::wakeupID() @@ -420,38 +427,38 @@ bool DeviceInput::bluetoothIsConnected() void DeviceInput::initFilterKey() { // 添加可显示的设备信息 - addFilterKey(QObject::tr("Uniq")); - addFilterKey(QObject::tr("PROP")); - addFilterKey(QObject::tr("EV")); - addFilterKey(QObject::tr("KEY")); - addFilterKey(QObject::tr("MSC")); - addFilterKey(QObject::tr("Device File")); - addFilterKey(QObject::tr("Hardware Class")); + addFilterKey("Uniq"); + addFilterKey("PROP"); + addFilterKey("EV"); + addFilterKey("KEY"); + addFilterKey("MSC"); + addFilterKey("Device File"); + addFilterKey("Hardware Class"); - // addFilterKey(QObject::tr("physical id")); + // addFilterKey("physical id"); } void DeviceInput::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Model"), m_Model); - addBaseDeviceInfo(tr("Interface"), m_Interface); - addBaseDeviceInfo(tr("Bus Info"), m_BusInfo); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Model"), m_Model); + addBaseDeviceInfo(("Interface"), m_Interface); + addBaseDeviceInfo(("Bus Info"), m_BusInfo); } void DeviceInput::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Module Alias"), m_Modalias); - addOtherDeviceInfo(tr("Physical ID"), m_PhysID); - addOtherDeviceInfo(tr("Speed"), m_Speed); - addOtherDeviceInfo(tr("Maximum Current"), m_MaximumPower); // 1050需求将最大功率改为最大电流 - addOtherDeviceInfo(tr("Driver"), m_Driver); - addOtherDeviceInfo(tr("Capabilities"), m_Capabilities); - addOtherDeviceInfo(tr("Version"), m_Version); + addOtherDeviceInfo(("Module Alias"), m_Modalias); + addOtherDeviceInfo(("Physical ID"), m_PhysID); + addOtherDeviceInfo(("Speed"), m_Speed); + addOtherDeviceInfo(("Maximum Current"), m_MaximumPower); // 1050需求将最大功率改为最大电流 + addOtherDeviceInfo(("Driver"), m_Driver); + addOtherDeviceInfo(("Capabilities"), m_Capabilities); + addOtherDeviceInfo(("Version"), m_Version); // 将QMap内容转存为QList> mapInfoToList(); @@ -463,11 +470,11 @@ void DeviceInput::loadTableData() QString tName = m_Name; if (!available()) { - tName = "(" + tr("Unavailable") + ") " + m_Name; + tName = "(" + translateStr("Unavailable") + ") " + m_Name; } if (!enable()) { - tName = "(" + tr("Disable") + ") " + m_Name; + tName = "(" + translateStr("Disable") + ") " + m_Name; } m_TableData.append(tName); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceInput.h b/deepin-devicemanager/src/DeviceManager/DeviceInput.h index cca3ebe35..2320df7c0 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceInput.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceInput.h @@ -40,12 +40,6 @@ class DeviceInput : public DeviceBaseInfo */ void setInfoFromHwinfo(const QMap &mapInfo); - /** - * @brief setKLUInfoFromHwinfo:特殊处理KLU设备,设置由hwinfo --keyboard 命令获取的设备信息 - * @param mapInfo由hwinfo获取的信息map - */ - void setKLUInfoFromHwinfo(const QMap &mapInfo); - /** * @brief name:获取名称属性值 * @return QString 名称属性值 @@ -125,6 +119,10 @@ class DeviceInput : public DeviceBaseInfo */ bool bluetoothIsConnected(); + QString getBusInfo() const; + + QString getInterface() const; + protected: /** * @brief initFilterKey:初始化可现实的可显示的属性,m_FilterKey @@ -184,6 +182,7 @@ class DeviceInput : public DeviceBaseInfo QString m_KeyToLshw; // +#include #include #include @@ -30,6 +31,8 @@ #include "DeviceInput.h" #include "MacroDefinition.h" +using namespace DDLog; + DeviceManager *DeviceManager::sInstance = nullptr; int DeviceManager::m_CurrentXlsRow = 1; @@ -125,6 +128,7 @@ void DeviceManager::clear() m_ListDeviceGPU.clear(); m_ListDeviceMemory.clear(); m_ListDeviceCPU.clear(); + m_DeviceClassMap.clear(); } const QList> &DeviceManager::getDeviceTypes() @@ -381,7 +385,7 @@ DeviceBaseInfo *DeviceManager::createDevice(DeviceType deviceType) return vTemp; } -TomlFixMethod DeviceManager::tomlDeviceSet(DeviceType deviceType, DeviceBaseInfo *device, const QMap &mapInfo) +TomlFixMethod DeviceManager::tomlDeviceMapSet(DeviceType deviceType, DeviceBaseInfo *device, const QMap &mapInfo) { if (!device) { return TOML_None; @@ -468,6 +472,129 @@ TomlFixMethod DeviceManager::tomlDeviceSet(DeviceType deviceType, DeviceBaseInf return ret; } +QString DeviceManager::tomlDeviceReadKeyValue(DeviceType deviceType, DeviceBaseInfo *device, const QString &key) +{ + if (!device) + return QString(""); + + TomlFixMethod ret = TOML_None; + switch (deviceType) { + case DT_Null: + break; + case DT_Computer: { + DeviceComputer *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Cpu: { + DeviceCpu *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Bios: { + DeviceBios *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Memory: { + DeviceMemory *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Storage: { + DeviceStorage *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Gpu: { + DeviceGpu *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Monitor: { + DeviceMonitor *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Network: { + DeviceNetwork *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Audio: { + DeviceAudio *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Bluetoorh: { + DeviceBluetooth *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Keyboard: { + DeviceInput *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Mouse: { + DeviceInput *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Print: { + DevicePrint *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Image: { + DeviceImage *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Cdrom: { + DeviceCdrom *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Others: { + DeviceOthers *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_OtherPCI: { + DeviceOtherPCI *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + case DT_Power: { + DevicePower *tomldevice = dynamic_cast(device); + return tomldevice->readDeviceInfoKeyValue(key); + } break; + default: { } break; + } + return QString(""); +} + +bool DeviceManager::tomlSetBytomlmatchkey(DeviceType deviceType, DeviceBaseInfo *device, const QString &tomltomlmatchkey, const QString &tomltomlconfigdemanding) +{ + Q_UNUSED(deviceType) + QMap itemMap; + QStringList keyValues = tomltomlmatchkey.split(","); + foreach (const QString &keyValue, keyValues) { + QStringList wordlst = keyValue.split("="); + if (2 == wordlst.size()) { + + QString key = wordlst[0].remove('"').trimmed(); + QString valuetmp = wordlst[1]; + QStringList valuelst; + QString value; + if (valuetmp.contains("#")) { + valuelst = valuetmp.split("#"); + value = valuelst[0].remove('\"').trimmed(); + } else + value = valuetmp.remove('\"').trimmed(); + + itemMap.insert(key, value); + } + } + if(itemMap.size() == 0 ) + return false; + + for (auto key : itemMap.keys()) { + QString tomlKey = key; + QString tomlVal = itemMap.value(key); + QString deviceVal = device->readDeviceInfoKeyValue(tomlKey); + if((0 != deviceVal.compare(tomlVal, Qt::CaseInsensitive))) { + return false; + } + } + + return true; +} + void DeviceManager::tomlDeviceSet(DeviceType deviceType) { @@ -475,7 +602,9 @@ void DeviceManager::tomlDeviceSet(DeviceType deviceType) const QList> &tomlMapLst = cmdInfo(deviceTypeName); for (int j = 0; j < tomlMapLst.size(); j++) { // 加载从toml中获取的信息 bool fixSameOne = false; //初始值设为该项信息没有用过 - bool isSameOne = false; + + QString tomltomlmatchkey = tomlMapLst[j]["tomlmatchkey"]; + QString tomltomlconfigdemanding = PhysID(tomlMapLst[j], "tomlconfigdemanding"); QList lst = convertDeviceList(deviceType); for (int i = 0; i < lst.size(); i++) { // toml中获取的信息 与 原设备信息遍历,相比较作处理 DeviceBaseInfo *device = lst[i]; @@ -484,29 +613,50 @@ void DeviceManager::tomlDeviceSet(DeviceType deviceType) QString pid = PhysID(tomlMapLst[j], "Product_ID"); QString vendor = PhysID(tomlMapLst[j], "Vendor"); QString name = PhysID(tomlMapLst[j], "Name"); - //取出toml中获取的关键字信息设备唯一标识硬件IDS "Modalias", "Vendor_ID", "Vendor","Name";作比较处理 - isSameOne = findByModalias(deviceType, device, modalias); - if (!isSameOne) { - isSameOne = findByVIDPID(deviceType, device, vid, pid); - } - if (!isSameOne) { - isSameOne = findByVendorName(deviceType, device, vendor, name); - } - if (isSameOne) { //存在 就合并信息 setInfoFromTomlOneByOne(const QMap &mapInfo); + bool isSameOne = false; //初始值设为该项信息不属于该设备 + + + isSameOne = tomlSetBytomlmatchkey(deviceType, device, tomltomlmatchkey,tomltomlconfigdemanding); + + if (tomltomlconfigdemanding == "adjust") { + fixSameOne = true; //标记为该项信息有用过 , + if (isSameOne) + tomlDeviceMapSet(deviceType, device, tomlMapLst[j]); + } else if (tomltomlconfigdemanding == "delete") { fixSameOne = true; //标记为该项信息有用过 , - if (TOML_Del == tomlDeviceSet(deviceType, device, tomlMapLst[j])) { + if (isSameOne) { tomlDeviceDel(deviceType, device); //toml 去掉该设备 delete (device); } + } else if (tomltomlconfigdemanding == "add" && !fixSameOne) { - } else if ((deviceType != DT_Bios) && (deviceType != DT_Computer) && !fixSameOne) { - fixSameOne = true; //标记为该项信息有用过 ,则不再增加了 - DeviceBaseInfo *device = createDevice(deviceType); - tomlDeviceSet(deviceType, device, tomlMapLst[j]); - tomlDeviceAdd(deviceType, device); //不存在 就加 + } else { + //取出toml中获取的关键字信息设备唯一标识硬件IDS "Modalias", "Vendor_ID", "Vendor","Name";作比较处理 + if (!isSameOne) + isSameOne = findByModalias(deviceType, device, modalias); + if (!isSameOne) { + isSameOne = findByVIDPID(deviceType, device, vid, pid); + } + if (!isSameOne) { + isSameOne = findByVendorName(deviceType, device, vendor, name); + } + if (isSameOne&& !fixSameOne) { //存在 就合并信息 + fixSameOne = true; //标记为该项信息有用过 , + if (TOML_Del == tomlDeviceMapSet(deviceType, device, tomlMapLst[j])) { + tomlDeviceDel(deviceType, device); //toml 去掉该设备 + delete (device); + } + } } - } //end of for (int j = 0;... - } + } //与原设备信息遍历相比完再作添加设备 + + if (tomltomlconfigdemanding == "add" && !fixSameOne) { + fixSameOne = true; //标记为该项信息有用过 + DeviceBaseInfo *newDevice = createDevice(deviceType); + tomlDeviceMapSet(deviceType, newDevice, tomlMapLst[j]); + tomlDeviceAdd(deviceType, newDevice); //加 + } + } //end of for (int j = 0;... } QString DeviceManager::PhysID(const QMap &mapInfo, const QString &key) { @@ -627,7 +777,7 @@ bool DeviceManager::findByVendorName(DeviceType deviceType, DeviceBaseInfo *devi if (deviceType == DT_Computer) { // //因Computer信息只有一条list,且不允增加list,只能替换信息,故作特殊处理 - qInfo() << " computer Name" << tmp_name << "toml:" << name; + qCInfo(appLog) << " computer Name" << tmp_name << "toml:" << name; return true; } } @@ -742,13 +892,17 @@ void DeviceManager::mergeDisk() if (serialIDs.size() < 2) continue; DeviceStorage *fDevice = dynamic_cast(m_ListDeviceStorage[serialIDs[0] ]); - for (int i = 1; i < serialIDs.size(); ++i) { + for (int i = serialIDs.size() - 1; i > 0; --i) { DeviceStorage *curDevice = dynamic_cast(m_ListDeviceStorage[serialIDs[i] ]); fDevice->appendDisk(curDevice); m_ListDeviceStorage.removeAt(serialIDs[i]); delete curDevice; } } + for (int i = 0; i < m_ListDeviceStorage.size(); ++i) { + DeviceStorage *device = dynamic_cast(m_ListDeviceStorage[i]); + device->unitConvertByDecimal(); + } } void DeviceManager::checkDiskSize() @@ -759,37 +913,69 @@ void DeviceManager::checkDiskSize() } } -bool DeviceManager::setStorageDeviceMediaType(const QString &name, const QString &value) +void DeviceManager::orderDiskByType() { - // 设置存储设备介质类型 - QList::iterator it = m_ListDeviceStorage.begin(); - for (; it != m_ListDeviceStorage.end(); ++it) { - DeviceStorage *device = dynamic_cast(*it); - if (!device) - continue; + // 自定义排序 + auto compareDevices = [](DeviceBaseInfo* baseInfo1, DeviceBaseInfo* baseInfo2) { + DeviceStorage *storageA = dynamic_cast(baseInfo1); + DeviceStorage *storageB = dynamic_cast(baseInfo2); - // 设置介质类型 - if (device->setMediaType(name, value)) + if (storageA == nullptr || storageB == nullptr) { + return false; + } + + // 判断是否为 USB 设备(包括 USB 接口的 SSD) + auto isUSBDevice = [](DeviceStorage *device) { + return device->interface().contains("USB") || + (device->interface().contains("USB") && device->mediaType().contains("SSD")); + }; + + // 1. 首先按照 UFS 优先 + if (storageA->interface().contains("UFS") && !storageB->interface().contains("UFS")) return true; - } + if (!storageA->interface().contains("UFS") && storageB->interface().contains("UFS")) + return false; - return false; + // 2. 然后按照 SSD、HDD 排序(排除 USB 接口的 SSD) + if (!isUSBDevice(storageA) && !isUSBDevice(storageB)) { + if (storageA->mediaType().contains("SSD") && !storageB->mediaType().contains("SSD")) + return true; + if (!storageA->mediaType().contains("SSD") && storageB->mediaType().contains("SSD")) + return false; + if (storageA->mediaType().contains("HDD") && !storageB->mediaType().contains("HDD")) + return true; + if (!storageA->mediaType().contains("HDD") && storageB->mediaType().contains("HDD")) + return false; + } + + // 3. 最后按照 USB 设备排序(包括 USB 接口的 SSD) + if (isUSBDevice(storageA) && !isUSBDevice(storageB)) + return false; // USB 设备排在后面 + if (!isUSBDevice(storageA) && isUSBDevice(storageB)) + return true; + + // 如果所有条件都相同,保持原有顺序 + return false; + }; + + // 使用自定义比较函数对列表进行排序 + std::sort(m_ListDeviceStorage.begin(), m_ListDeviceStorage.end(), compareDevices); } -bool DeviceManager::setKLUStorageDeviceMediaType(const QString &name, const QString &value) +bool DeviceManager::setStorageDeviceMediaType(const QString &name, const QString &value) { - // 设置KLU机器存储设备介质类型 + // 设置存储设备介质类型 QList::iterator it = m_ListDeviceStorage.begin(); for (; it != m_ListDeviceStorage.end(); ++it) { DeviceStorage *device = dynamic_cast(*it); - if (!device) continue; - // 设置KLU介质类型 - if (device->setKLUMediaType(name, value)) + // 设置介质类型 + if (device->setMediaType(name, value)) return true; } + return false; } @@ -878,6 +1064,20 @@ void DeviceManager::setMonitorInfoFromXrandr(const QString &main, const QString } } +void DeviceManager::setMonitorInfoFromDbus(const QMap &mapInfo) +{ + // 从 dbus 中添加显示设备信息 + QList::iterator it = m_ListDeviceMonitor.begin(); + for (; it != m_ListDeviceMonitor.end(); ++it) { + DeviceMonitor *device = dynamic_cast(*it); + if (!device) + continue; + + device->setInfoFromDbus(mapInfo); + + } +} + void DeviceManager::addBiosDevice(DeviceBios *const device) { // 添加主板信息 @@ -932,18 +1132,6 @@ bool DeviceManager::setBluetoothInfoFromHwinfo(const QMap &map return false; } -bool DeviceManager::setBluetoothInfoFromWifiInfo(const QMap &mapInfo) -{ - QList::iterator it = m_ListDeviceBluetooth.begin(); - for (; it != m_ListDeviceBluetooth.end(); ++it) { - DeviceBluetooth *device = dynamic_cast(*it); - if (device->setInfoFromWifiInfo(mapInfo)) { - return true; - } - } - return false; -} - DeviceBaseInfo *DeviceManager::getBluetoothDevice(const QString &unique_id) { for (QList::iterator it = m_ListDeviceBluetooth.begin(); it != m_ListDeviceBluetooth.end(); ++it) { @@ -967,22 +1155,77 @@ void DeviceManager::delAudioDevice(DeviceAudio *const device) void DeviceManager::deleteDisableDuplicate_AudioDevice(void) { - if (m_ListDeviceAudio.size() > 0) { - for (QList::iterator it = m_ListDeviceAudio.begin(); it != m_ListDeviceAudio.end(); ++it) { - DeviceAudio *audio_1 = dynamic_cast(*it); - //QString tpath = audio_1->uniqueID(); - // 判断该设备是否已经存在, - if (!audio_1->enable()) { - for (QList::iterator it2 = m_ListDeviceAudio.begin(); it2 != m_ListDeviceAudio.end(); ++it2) { - DeviceAudio *audio_2 = dynamic_cast(*it2); - if (audio_2->name() == audio_1->name()) - if (audio_2->enable()) - m_ListDeviceAudio.removeOne(audio_2); + QHash enabledDevices; + QHash enableDevicePriority; + for (auto it = m_ListDeviceAudio.begin(); it != m_ListDeviceAudio.end(); ++it) { + DeviceAudio* audio = dynamic_cast(*it); + if (!audio) { + continue; + } + if (audio->enable() || !enabledDevices.contains(audio->uniqueID())) { + enabledDevices[audio->uniqueID()] = audio; + if (!enableDevicePriority.contains(audio->uniqueID())) { + if (audio->enable() || ! audio->driver().contains("usb")) { + enableDevicePriority.insert(audio->uniqueID(), 2); + } else { + enableDevicePriority.insert(audio->uniqueID(), 1); } + } else { + enableDevicePriority[audio->uniqueID()] = enableDevicePriority[audio->uniqueID()] + 1; + } + } else { + if (enabledDevices.contains(audio->uniqueID()) && enabledDevices[audio->uniqueID()]->enable()) { + if (!enableDevicePriority.contains(audio->uniqueID())) { + if (audio->enable()) { + enableDevicePriority.insert(audio->uniqueID(), 2); + } else { + enableDevicePriority.insert(audio->uniqueID(), 1); + } + } else { + enableDevicePriority[audio->uniqueID()] = enableDevicePriority[audio->uniqueID()] + 1; + } + audio->setSysPath(enabledDevices[audio->uniqueID()]->sysPath()); + delete enabledDevices[audio->uniqueID()]; + enabledDevices[audio->uniqueID()] = audio; } } + } + qWarning()<<"delete before: "<< m_ListDeviceAudio.size(); + qWarning() << enableDevicePriority; + m_ListDeviceAudio.clear(); + for(auto it : enabledDevices.keys()){ + if (enableDevicePriority.value(it) <= 1) { + continue; + } + m_ListDeviceAudio.push_back(enabledDevices.value(it)); + setAudioDeviceEnable(enabledDevices.value(it), enabledDevices.value(it)->enable()); } + qWarning()<<"delete after: "<< m_ListDeviceAudio.size(); +} + +void DeviceManager::setAudioDeviceEnable(DeviceAudio * const devivce, bool enable) +{ + EnableDeviceStatus status ; + + int i = 0; + do{ + status = devivce->setEnable(enable); + if (status == EDS_Success) { + break; + } + qWarning() << "retry: " << ++i; + }while (i < 3); + + qWarning() << [](EnableDeviceStatus status) { + switch(status) { + case EDS_Cancle: return "Device enable operation was cancelled"; + case EDS_NoSerial: return "Device enable failed: No serial number available"; + case EDS_Faild: return "-----Device enable failed due to unknown error"; + case EDS_Success: return "Device enabled successfully"; + default: return "Unknown device enable status"; + } + }(status); } DeviceBaseInfo *DeviceManager::getAudioDevice(const QString &path) @@ -1045,22 +1288,6 @@ void DeviceManager::addNetworkDevice(DeviceNetwork *const device) m_ListDeviceNetwork.append(device); } -bool DeviceManager::setNetworkInfoFromWifiInfo(const QMap &mapInfo) -{ - QList::iterator it = m_ListDeviceNetwork.begin(); - for (; it != m_ListDeviceNetwork.end(); ++it) { - - DeviceNetwork *device = dynamic_cast(*it); - if (!device) - continue; - - if (device->setInfoFromWifiInfo(mapInfo)) { - return true; - } - } - return false; -} - DeviceBaseInfo *DeviceManager::getNetworkDevice(const QString &unique_id) { for (QList::iterator it = m_ListDeviceNetwork.begin(); it != m_ListDeviceNetwork.end(); ++it) { diff --git a/deepin-devicemanager/src/DeviceManager/DeviceManager.h b/deepin-devicemanager/src/DeviceManager/DeviceManager.h index b47eab9ba..0d1e34b4e 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceManager.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceManager.h @@ -103,10 +103,12 @@ class DeviceManager : public QObject */ QList convertDeviceList(DeviceType deviceType); QString convertDeviceTomlClassName(DeviceType deviceType); - TomlFixMethod tomlDeviceSet(DeviceType deviceType, DeviceBaseInfo *device, const QMap &mapInfo); + TomlFixMethod tomlDeviceMapSet(DeviceType deviceType, DeviceBaseInfo *device, const QMap &mapInfo); void tomlDeviceSet(DeviceType deviceType); void tomlDeviceDel(DeviceType deviceType, DeviceBaseInfo *const device); void tomlDeviceAdd(DeviceType deviceType, DeviceBaseInfo *const device); + QString tomlDeviceReadKeyValue(DeviceType deviceType, DeviceBaseInfo *device, const QString &key); + bool tomlSetBytomlmatchkey(DeviceType deviceType, DeviceBaseInfo *device, const QString &tomltomlmatchkey, const QString &tomltomlconfigdemanding); /** * @brief * toml 方案内容定义: @@ -129,14 +131,12 @@ class DeviceManager : public QObject * @param KeyID "Module Alias" "VID_PID" * @return */ - DeviceBaseInfo *findByModalias(DeviceType deviceType, const QString &modalias); - DeviceBaseInfo *findByVIDPID(DeviceType deviceType, const QString &vid, const QString &pid); - DeviceBaseInfo *findByVendorName(DeviceType deviceType, const QString &vendor, const QString &name); bool findByModalias(DeviceType deviceType, DeviceBaseInfo *device, const QString &modalias); bool findByVIDPID(DeviceType deviceType, DeviceBaseInfo *device, const QString &vid, const QString &pid); bool findByVendorName(DeviceType deviceType, DeviceBaseInfo *device, const QString &vendor, const QString &name); + /** * @brief getBluetoothAtIndex 根据索引获取device * @param index @@ -196,14 +196,6 @@ class DeviceManager : public QObject */ bool setStorageDeviceMediaType(const QString &name, const QString &value); - /** - * @brief setKLUStorageDeviceMediaType:KLU机器设置存储设备介质类型 - * @param name:逻辑名称 - * @param value:存储设备介质类型信息 - * @return 布尔值:true-设置成功;false-设置失败 - */ - bool setKLUStorageDeviceMediaType(const QString &name, const QString &value); - /** * @brief setStorageInfoFromSmartctl:设置由smartctl获取的存储设备信息 * @param name:逻辑名称 @@ -221,6 +213,11 @@ class DeviceManager : public QObject */ virtual void checkDiskSize(); + /** + * @brief orderDiskByType:按照磁盘类型UFS、SSD、HDD、移动存储设备的顺序显示 + */ + virtual void orderDiskByType(); + // GPU设备相关 ************************************************************************************** /** * @brief addGpuDevice:添加显卡 @@ -273,6 +270,12 @@ class DeviceManager : public QObject */ void setMonitorInfoFromXrandr(const QString &main, const QString &edid, const QString &rate = ""); + /** + * @brief setMonitorInfoFromDbus:设置由 dbus 获取的显示设备信息 + * @param mapInfo:被添加的信息map + */ + void setMonitorInfoFromDbus(const QMap &mapInfo); + // Bios设备相关 ************************************************************************************ /** * @brief addBiosDevice:添加BIOS设备 @@ -306,13 +309,6 @@ class DeviceManager : public QObject */ bool setBluetoothInfoFromHwinfo(const QMap &mapInfo); - /** - * @brief setBluetoothInfoFromWifiInfo:设置由WifiInfo获取的蓝牙信息 - * @param mapInfo:由WifiInfo获取的蓝牙信息map - * @return 布尔值:true设置成功;false设置失败 - */ - bool setBluetoothInfoFromWifiInfo(const QMap &mapInfo); - /** * @brief getBluetoothDevice * @param unique_id @@ -340,6 +336,8 @@ class DeviceManager : public QObject */ void deleteDisableDuplicate_AudioDevice(void); + void setAudioDeviceEnable(DeviceAudio *const devivce, bool enable); + /** * @brief getAudioDevice 获取音频设备 * @param path @@ -378,12 +376,6 @@ class DeviceManager : public QObject */ void addNetworkDevice(DeviceNetwork *const device); - /** - * @brief setNetworkInfoFromWifiInfo:设置网络适配器 - * @param mapInfo:由WifiInfo获取的网卡信息map - */ - bool setNetworkInfoFromWifiInfo(const QMap &mapInfo); - /** * @brief getNetworkDevice 获取网卡设备 * @param busInfo diff --git a/deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp b/deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp old mode 100644 new mode 100755 index 1ccfaaa41..01385cbe3 --- a/deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp @@ -106,39 +106,41 @@ bool DeviceMemory::setInfoFromDmidecode(const QMap &mapInfo) void DeviceMemory::initFilterKey() { // 初始化可显示属性 - addFilterKey(QObject::tr("Array Handle")); // 数组程序 - addFilterKey(QObject::tr("Error Information Handle")); //错误信息程序 - addFilterKey(QObject::tr("Form Factor")); // 尺寸型号 - addFilterKey(QObject::tr("Set")); // 设置 - addFilterKey(QObject::tr("Bank Locator")); // 内存通道 - addFilterKey(QObject::tr("Type Detail")); // 类型详细信息 - addFilterKey(QObject::tr("Asset Tag")); // 资产标签 - addFilterKey(QObject::tr("Part Number")); - addFilterKey(QObject::tr("Rank")); - addFilterKey(QObject::tr("Memory Technology")); // 内存技术 - addFilterKey(QObject::tr("Memory Operating Mode Capability")); // 内存操作模式 - addFilterKey(QObject::tr("Firmware Version")); //固件版本 - addFilterKey(QObject::tr("Module Manufacturer ID")); - addFilterKey(QObject::tr("Module Product ID")); - addFilterKey(QObject::tr("Memory Subsystem Controller Manufacturer ID")); - addFilterKey(QObject::tr("Memory Subsystem Controller Product ID")); - addFilterKey(QObject::tr("Non-Volatile Size")); // 不易丢失大小 - addFilterKey(QObject::tr("Volatile Size")); // 易丢失大小 - addFilterKey(QObject::tr("Cache Size")); // 缓存大小 - addFilterKey(QObject::tr("Logical Size")); // 逻辑大小 +// addFilterKey("Array Handle"); // 数组程序-2 + addFilterKey("Error Information Handle"); //错误信息程序-2 + addFilterKey("Form Factor"); // 尺寸型号-2 + addFilterKey("Set"); // 设置-2 + addFilterKey("Bank Locator"); // 内存通道-2 + addFilterKey("Type Detail"); // 类型详细信息-2 + addFilterKey("Asset Tag"); // 资产标签-2 + addFilterKey("Part Number"); + addFilterKey("Rank"); + addFilterKey("Memory Technology"); // 内存技术-2 + addFilterKey("Memory Operating Mode Capability"); // 内存操作模式-2 + addFilterKey("Firmware Version"); //固件版本-2 + addFilterKey("Module Manufacturer ID"); + addFilterKey("Module Product ID"); + addFilterKey("Memory Subsystem Controller Manufacturer ID"); + addFilterKey("Memory Subsystem Controller Product ID"); + addFilterKey("Non-Volatile Size"); // 不易丢失大小-2 + addFilterKey("Volatile Size"); // 易丢失大小-2 + addFilterKey("Cache Size"); // 缓存大小-2 + addFilterKey("Logical Size"); // 逻辑大小-2 } void DeviceMemory::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Size"), m_Size); - addBaseDeviceInfo(tr("Type"), m_Type); - addBaseDeviceInfo(tr("Speed"), m_Speed); - addBaseDeviceInfo(tr("Total Width"), m_TotalBandwidth); - addBaseDeviceInfo(tr("Locator"), m_Locator); - addBaseDeviceInfo(tr("Serial Number"), m_SerialNumber); + addBaseDeviceInfo(("Name"), m_Name); + if (Common::specialComType <= 0) { + addBaseDeviceInfo(("Vendor"), m_Vendor); + } + addBaseDeviceInfo(("Size"), m_Size); + addBaseDeviceInfo(("Type"), m_Type); + addBaseDeviceInfo(("Speed"), m_Speed); + addBaseDeviceInfo(("Total Width"), m_TotalBandwidth); + addBaseDeviceInfo(("Locator"), m_Locator); + addBaseDeviceInfo(("Serial Number"), m_SerialNumber); } void DeviceMemory::loadOtherDeviceInfo() @@ -146,14 +148,14 @@ void DeviceMemory::loadOtherDeviceInfo() // 倒序,头插,保证原来的顺序 // 添加其他信息,成员变量 if (Common::boardVendorType().isEmpty()) { - addOtherDeviceInfo(tr("Configured Voltage"), m_ConfiguredVoltage); - addOtherDeviceInfo(tr("Maximum Voltage"), m_MaximumVoltage); - addOtherDeviceInfo(tr("Minimum Voltage"), m_MinimumVoltage); - addOtherDeviceInfo(tr("Configured Speed"), m_ConfiguredSpeed); + addOtherDeviceInfo(("Configured Voltage"), m_ConfiguredVoltage); + addOtherDeviceInfo(("Maximum Voltage"), m_MaximumVoltage); + addOtherDeviceInfo(("Minimum Voltage"), m_MinimumVoltage); + addOtherDeviceInfo(("Configured Speed"), m_ConfiguredSpeed); } else { - addOtherDeviceInfo(DeviceCpu::tr("Max Speed"), m_ConfiguredSpeed); + addOtherDeviceInfo(("Configured Speed"), m_ConfiguredSpeed); } - addOtherDeviceInfo(tr("Data Width"), m_DataBandwidth); + addOtherDeviceInfo(("Data Width"), m_DataBandwidth); // 将QMap内容转存为QList> mapInfoToList(); @@ -162,11 +164,11 @@ void DeviceMemory::loadOtherDeviceInfo() void DeviceMemory::loadTableHeader() { // 加载表头 - m_TableHeader.append(tr("Name")); - m_TableHeader.append(tr("Vendor")); - m_TableHeader.append(tr("Type")); - m_TableHeader.append(tr("Speed")); - m_TableHeader.append(tr("Size")); + m_TableHeader.append("Name"); + m_TableHeader.append("Vendor"); + m_TableHeader.append("Type"); + m_TableHeader.append("Speed"); + m_TableHeader.append("Size"); } void DeviceMemory::loadTableData() @@ -212,11 +214,13 @@ const QString DeviceMemory::getOverviewInfo() QString nameStr = m_Name != "" ? m_Name : m_Vendor; if (nameStr == "--") nameStr.clear(); - ov += QString("%1(%2 %3 %4)") \ + ov += QString("%1(%2%3 %4)") \ .arg(m_Size) \ - .arg(nameStr) \ + .arg(nameStr + (nameStr.isEmpty() ? "" : " ")) \ .arg(m_Type) \ .arg(m_Speed); + ov = ov.trimmed(); + return ov; } diff --git a/deepin-devicemanager/src/DeviceManager/DeviceMonitor.cpp b/deepin-devicemanager/src/DeviceManager/DeviceMonitor.cpp index f8a4a6b79..fe0e76b4d 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceMonitor.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceMonitor.cpp @@ -10,7 +10,7 @@ #include // Qt库文件 -#include +#include #include #include @@ -33,8 +33,10 @@ DeviceMonitor::DeviceMonitor() , m_CurrentResolution("") , m_SerialNumber("") , m_ProductionWeek("") + , m_RefreshRate("") , m_Width(0) , m_Height(0) + , m_IsTomlSet(false) { // 初始化可显示属性 initFilterKey(); @@ -59,7 +61,7 @@ QString DeviceMonitor::parseMonitorSize(const QString &sizeDescription, double & double width = m_Width / 2.54; double height = m_Height / 2.54; inch = std::sqrt(width * width + height * height) / 10.0; - res = QString::number(inch, 10, 1) + " " + QObject::tr("inch") + " ("; + res = QString::number(inch, 10, 1) + " " + translateStr("inch") + " ("; res += sizeDescription; res += ")"; } @@ -76,7 +78,7 @@ QString DeviceMonitor::parseMonitorSize(const QString &sizeDescription, double & double width = m_Width / 2.54; double height = m_Height / 2.54; inch = std::sqrt(width * width + height * height) / 10.0; - res = QString::number(inch, 10, 1) + " " + QObject::tr("inch") + " ("; + res = QString::number(inch, 10, 1) + " " + translateStr("inch") + " ("; res += sizeDescription; res += ")"; } @@ -124,8 +126,10 @@ void DeviceMonitor::setInfoFromHwinfo(const QMap &mapInfo) TomlFixMethod DeviceMonitor::setInfoFromTomlOneByOne(const QMap &mapInfo) { + if (Common::specialComType == 2) + m_IsTomlSet = true; TomlFixMethod ret = TOML_None; - // 添加基本信息 + // 添加基本信息 ret = setTomlAttribute(mapInfo, "Type", m_Model); ret = setTomlAttribute(mapInfo, "Display Input", m_DisplayInput); ret = setTomlAttribute(mapInfo, "Interface Type", m_Interface); @@ -137,32 +141,30 @@ TomlFixMethod DeviceMonitor::setInfoFromTomlOneByOne(const QMap &mapInfo) -{ - setAttribute(mapInfo, "Name", m_Name); - setAttribute(mapInfo, "Vendor", m_Vendor); - setAttribute(mapInfo, "CurResolution", m_CurrentResolution); - setAttribute(mapInfo, "SupportResolution", m_SupportResolution); - setAttribute(mapInfo, "Size", m_ScreenSize); - setAttribute(mapInfo, "Date", m_ProductionWeek); - // 加载其他属性 - //loadOtherDeviceInfo(mapInfo); -} - void DeviceMonitor::setInfoFromEdid(const QMap &mapInfo) { m_Name = "Monitor " + mapInfo["Vendor"]; setAttribute(mapInfo, "Size", m_ScreenSize); setAttribute(mapInfo, "Vendor", m_Vendor); setAttribute(mapInfo, "Date", m_ProductionWeek); + setAttribute(mapInfo, "Display Input", m_DisplayInput); + setAttribute(mapInfo, "Model", m_Model); getOtherMapInfo(mapInfo); } +void DeviceMonitor::setInfoFromDbus(const QMap &mapInfo) +{ + if (mapInfo["Name"].toLower().contains(m_DisplayInput.toLower(), Qt::CaseInsensitive)) { + setAttribute(mapInfo, "CurResolution", m_CurrentResolution); + } +} + QString DeviceMonitor::transWeekToDate(const QString &year, const QString &week) { int y = year.toInt(); @@ -174,9 +176,37 @@ QString DeviceMonitor::transWeekToDate(const QString &year, const QString &week) bool DeviceMonitor::setInfoFromXradr(const QString &main, const QString &edid, const QString &rate) { + if(m_IsTomlSet) + return false; + + for(auto it: m_LstBaseInfo){ + if (it.first.contains("Display Input")){ + if (!main.contains(it.second, Qt::CaseInsensitive)) { + return false; + } + } + } + // 判断该显示器设备是否已经设置过从xrandr获取的消息 - if (!m_Interface.isEmpty()) + if (!m_Interface.isEmpty()) { + // 设置当前分辨率 + if (m_CurrentResolution.isEmpty()) { + QRegExp reScreenSize(".*([0-9]{1,5}x[0-9]{1,5}).*"); + if (reScreenSize.exactMatch(main)) { + if (!rate.isEmpty()) { + QString curRate = rate; + QRegExp rateStart("[a-zA-Z]"); + int pos = curRate.indexOf(rateStart); + if (pos > 0 && curRate.size() > pos && !Common::boardVendorType().isEmpty()) { + curRate = QString::number(ceil(curRate.left(pos).toDouble())) + curRate.right(curRate.size() - pos); + } + m_CurrentResolution = QString("%1@%2").arg(reScreenSize.cap(1)).arg(curRate).replace("x", "×", Qt::CaseInsensitive); + } else + m_CurrentResolution = QString("%1").arg(reScreenSize.cap(1)).replace("x", "×", Qt::CaseInsensitive); + } + } return false; + } if (main.contains("disconnected")) return false; @@ -228,38 +258,54 @@ const QString DeviceMonitor::getOverviewInfo() QString ov; ov = QString("%1(%2)").arg(m_Name).arg(m_ScreenSize); + if (Common::specialComType == 6 || Common::specialComType == 7) { + ov = QString("(%1)").arg(m_ScreenSize); + } else { + ov = QString("%1(%2)").arg(m_Name).arg(m_ScreenSize); + } return ov; } void DeviceMonitor::initFilterKey() { - addFilterKey(QObject::tr("Date")); + addFilterKey("Date"); } void DeviceMonitor::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Type"), m_Model); - addBaseDeviceInfo(tr("Display Input"), m_DisplayInput); - addBaseDeviceInfo(tr("Interface Type"), m_Interface); + if (Common::specialComType != 6 && Common::specialComType != 5 && Common::specialComType != 7) { + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Type"), m_Model); + addBaseDeviceInfo(("Display Input"), m_DisplayInput); + } + addBaseDeviceInfo(("Interface Type"), m_Interface); } void DeviceMonitor::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Support Resolution"), m_SupportResolution); + addOtherDeviceInfo(("Refresh Rate"), m_RefreshRate); + addOtherDeviceInfo(("Support Resolution"), m_SupportResolution); if (m_CurrentResolution != "@Hz") { - addOtherDeviceInfo(tr("Current Resolution"), m_CurrentResolution); - addOtherDeviceInfo(tr("Display Ratio"), m_AspectRatio); + addOtherDeviceInfo(("Current Resolution"), m_CurrentResolution); + addOtherDeviceInfo(("Display Ratio"), m_AspectRatio); + + if (Common::specialComType == 4) { + if (m_CurrentResolution.contains("@")) { + QStringList refreshList = m_CurrentResolution.split('@', QString::SkipEmptyParts); + if (refreshList.size() == 2) { + m_RefreshRate = refreshList.at(1).trimmed(); + } + } + } } - addOtherDeviceInfo(tr("Primary Monitor"), m_MainScreen); - addOtherDeviceInfo(tr("Size"), m_ScreenSize); - addOtherDeviceInfo(tr("Serial Number"), m_SerialNumber); - addOtherDeviceInfo(tr("Product Date"), m_ProductionWeek); - + addOtherDeviceInfo(("Primary Monitor"), m_MainScreen); + addOtherDeviceInfo(("Size"), m_ScreenSize); + addOtherDeviceInfo(("Serial Number"), m_SerialNumber); +// addOtherDeviceInfo(("Product Date"), m_ProductionWeek); mapInfoToList(); } @@ -297,11 +343,22 @@ bool DeviceMonitor::setMainInfoFromXrandr(const QString &info, const QString &ra QRegExp rateStart("[a-zA-Z]"); int pos = curRate.indexOf(rateStart); if (pos > 0 && curRate.size() > pos && !Common::boardVendorType().isEmpty()) { - curRate = QString::number(ceil(curRate.left(pos).toDouble())) + curRate.right(curRate.size() - pos); + if (Common::specialComType == 1) { + curRate = QString::number(ceil(curRate.left(pos).toDouble())) + ".00" + curRate.right(curRate.size() - pos); + } else { + curRate = QString::number(ceil(curRate.left(pos).toDouble())) + curRate.right(curRate.size() - pos); + } + } + if (Common::specialComType == 1 || Common::specialComType == 5 || Common::specialComType == 6 || Common::specialComType == 7) { + m_RefreshRate = QString("%1").arg(curRate); + } + if (Common::specialComType == 5 || Common::specialComType == 6 || Common::specialComType == 7) { + m_CurrentResolution = QString("%1").arg(reScreenSize.cap(1)).replace("x", "×", Qt::CaseInsensitive); + } else { + m_CurrentResolution = QString("%1 @%2").arg(reScreenSize.cap(1)).arg(curRate).replace("x", "×", Qt::CaseInsensitive); } - m_CurrentResolution = QString("%1@%2").arg(reScreenSize.cap(1)).arg(curRate); } else - m_CurrentResolution = QString("%1").arg(reScreenSize.cap(1)); + m_CurrentResolution = QString("%1").arg(reScreenSize.cap(1)).replace("x", "×", Qt::CaseInsensitive); } return true; @@ -362,7 +419,7 @@ void DeviceMonitor::caculateScreenSize() m_Height = re.cap(2).toInt(); double inch = std::sqrt((m_Width / 2.54) * (m_Width / 2.54) + (m_Height / 2.54) * (m_Height / 2.54)) / 10.0; - m_ScreenSize = QString("%1 %2(%3mm X %4mm)").arg(QString::number(inch, 'f', 1)).arg(QObject::tr("inch")).arg(m_Width).arg(m_Height); + m_ScreenSize = QString("%1 %2(%3mm×%4mm)").arg(QString::number(inch, '0', 1)).arg(translateStr("inch")).arg(m_Width).arg(m_Height); } } @@ -382,15 +439,16 @@ bool DeviceMonitor::caculateScreenSize(const QString &edid) return false; // 比对从hwinfo和xrandr里面获取日期,不一致返回 - if (m_ProductionWeek != edidParse.releaseDate()) + if (!m_ProductionWeek.isEmpty() && m_ProductionWeek != edidParse.releaseDate()) return false; + m_ProductionWeek = edidParse.releaseDate(); // 如果从hwinfo和edid里面获取的信息差距很小则使用hwinfo里面的 // 如果从hwinfo和edid里面获取的信息差距很大则使用edid里面的 if (fabs(width * 10 - m_Width) < 10 && fabs(height * 10 - m_Height) < 10) return true; - double inch = std::sqrt(height * height + width * width) / 2.54; - m_ScreenSize = QString("%1 %2(%3cm X %4cm)").arg(QString::number(inch, '0', 1)).arg(QObject::tr("inch")).arg(width).arg(height); + double inch = std::sqrt(height * height + width * width) / 2.54 / 10; + m_ScreenSize = QString("%1 %2(%3mm×%4mm)").arg(QString::number(inch, '0', 1)).arg(translateStr("inch")).arg(width).arg(height); return true; } diff --git a/deepin-devicemanager/src/DeviceManager/DeviceMonitor.h b/deepin-devicemanager/src/DeviceManager/DeviceMonitor.h index fed9baa15..8b37d2d31 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceMonitor.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceMonitor.h @@ -59,12 +59,6 @@ class DeviceMonitor : public DeviceBaseInfo */ QString parseMonitorSize(const QString &sizeDescription, double &inch, QSize &retSize); - /**@brief:华为KLU项目里面的显示屏信息是写死的*/ - /** - * @brief setInfoFromSelfDefine:设置华为KLU项目里面的显示屏信息部分为固定的值 - * @param mapInfo:固定值信息map - */ - void setInfoFromSelfDefine(const QMap &mapInfo); /**@brief:华为PanGuV项目里面的显示屏信息是从edid里面获取的*/ /** @@ -73,6 +67,13 @@ class DeviceMonitor : public DeviceBaseInfo */ void setInfoFromEdid(const QMap &mapInfo); + /**@brief:华为PanGuV项目里面的显示屏信息是从dbus里面获取的*/ + /** + * @brief setInfoFromDbus:设置华为PanGuV项目里面的显示屏信息 + * @param mapInfo:获取的信息map + */ + void setInfoFromDbus(const QMap &mapInfo); + /** * @brief name:获取名称属性值 * @return QString 名称属性值 @@ -193,9 +194,11 @@ class DeviceMonitor : public DeviceBaseInfo QString m_SerialNumber; // &mapInfo) { - if (!matchToLshw(mapInfo) && Common::boardVendorType() != "KLVV") { - return; - } // 设置由lshw获取的信息 setAttribute(mapInfo, "description", m_Model); setAttribute(mapInfo, "product", m_Name); setAttribute(mapInfo, "vendor", m_Vendor); - if (m_SysPath.contains("usb")) { - QProcess process; - QString vendorId = getVendorOrModelId(m_SysPath, true).trimmed(); - QString deviceId = getVendorOrModelId(m_SysPath, false).trimmed(); - process.start("lsusb -v -d " + vendorId + ":" + deviceId); - process.waitForFinished(-1); - - QString output = process.readAllStandardOutput(); - - foreach (QString out, output.split("\n")) { - if (!m_Vendor.isEmpty() && !m_Name.isEmpty()) - break; - // 从USB设备获取制造商和设备名称 - if (m_Vendor.isEmpty() && out.contains("idVendor", Qt::CaseSensitive)) { - m_Vendor = out.remove(0, out.indexOf(vendorId) + 4).trimmed(); - } else if (m_Name.isEmpty() && out.contains("idProduct", Qt::CaseSensitive)) { - m_Name = out.remove(0, out.indexOf(deviceId) + 4).trimmed(); - } - } - } else { - setAttribute(mapInfo, "description", m_Name, false); - } + if (m_Name.isEmpty()) + setAttribute(mapInfo, "description", m_Name); + setAttribute(mapInfo, "version", m_Version); setAttribute(mapInfo, "bus info", m_BusInfo); setAttribute(mapInfo, "logical name", m_LogicalName); @@ -95,11 +73,17 @@ void DeviceNetwork::setInfoFromLshw(const QMap &mapInfo) setAttribute(mapInfo, "ip", m_Ip); setAttribute(mapInfo, "size", m_Speed); setAttribute(mapInfo, "capacity", m_Capacity); - setAttribute(mapInfo, "latency", m_Latency); + setAttribute(mapInfo, "Latency", m_Latency); setAttribute(mapInfo, "multicast", m_Multicast); if (driverIsKernelIn(m_DriverModules) || driverIsKernelIn(m_Driver)) { m_CanUninstall = false; } + if (m_Vendor.isEmpty() && !m_Name.isEmpty()) { + if (m_Name.contains("ARM", Qt::CaseInsensitive)) + m_Vendor = "ARM Ltd"; + else + m_Vendor = m_Name; + } // 加载其他信息 getOtherMapInfo(mapInfo); @@ -108,14 +92,14 @@ void DeviceNetwork::setInfoFromLshw(const QMap &mapInfo) TomlFixMethod DeviceNetwork::setInfoFromTomlOneByOne(const QMap &mapInfo) { TomlFixMethod ret = TOML_None; - // 添加基本信息 - ret = setTomlAttribute(mapInfo, "Type", m_Model); + // 添加基本信息 + ret = setTomlAttribute(mapInfo, "Type", m_Model); ret = setTomlAttribute(mapInfo, "Bus Info", m_BusInfo); - ret = setTomlAttribute(mapInfo, "Capabilities", m_Capabilities); + ret = setTomlAttribute(mapInfo, "Capabilities", m_Capabilities); ret = setTomlAttribute(mapInfo, "Driver Version", m_DriverVersion); // 添加其他信息,成员变量 - ret = setTomlAttribute(mapInfo, "Maximum Rate", m_Capacity); - ret = setTomlAttribute(mapInfo, "Negotiation Rate", m_Speed); + ret = setTomlAttribute(mapInfo, "Maximum Rate", m_Capacity); + ret = setTomlAttribute(mapInfo, "Negotiation Rate", m_Speed); ret = setTomlAttribute(mapInfo, "Port", m_Port); ret = setTomlAttribute(mapInfo, "Multicast", m_Multicast); ret = setTomlAttribute(mapInfo, "Link", m_Link); @@ -127,7 +111,7 @@ TomlFixMethod DeviceNetwork::setInfoFromTomlOneByOne(const QMap &mapInfo) m_CanUninstall = !driverIsKernelIn(m_Driver); return true; } - + setAttribute(mapInfo, "Device", m_Name); + setAttribute(mapInfo, "Vendor", m_Vendor); + setAttribute(mapInfo, "Device File", m_LogicalName); + setAttribute(mapInfo, "HW Address", m_MACAddress); setAttribute(mapInfo, "Permanent HW Address", m_UniqueID); setAttribute(mapInfo, "SysFS Device Link", m_SysPath); setAttribute(mapInfo, "Driver", m_Driver); @@ -157,34 +144,25 @@ bool DeviceNetwork::setInfoFromHwinfo(const QMap &mapInfo) setAttribute(mapInfo, "Module Alias", m_Modalias); setAttribute(mapInfo, "VID_PID", m_VID_PID); m_PhysID = m_VID_PID; + if (!m_VID_PID.isEmpty() && m_Modalias.contains("usb")) { + setVendorNameBylsusbLspci(m_VID_PID, m_Modalias); + } if (driverIsKernelIn(m_DriverModules) || driverIsKernelIn(m_Driver)) { m_CanUninstall = false; } + // 获取设备路径 + if (m_SysPath.isEmpty() && !mapInfo.contains("SysFS Device Link") + && mapInfo["SysFS ID"].startsWith("/devices")) { + m_SysPath = mapInfo["SysFS ID"]; + } // 判断是否是无线网卡 setIsWireless(mapInfo["SysFS ID"]); - - setHwinfoLshwKey(mapInfo); - return true; } -bool DeviceNetwork::setInfoFromWifiInfo(const QMap &mapInfo) -{ - // 机器自身蓝牙 - if (m_Name.contains("Huawei", Qt::CaseInsensitive)) { - setAttribute(mapInfo, "Chip Type", m_Name); - setAttribute(mapInfo, "Vendor", m_Vendor); - setAttribute(mapInfo, "Type", m_Model); - - return true; - } else { - return false; - } -} - void DeviceNetwork::setIsWireless(const QString &sysfs) { // 路径下包含 phy80211 或 wireless 是无线网卡 @@ -262,48 +240,53 @@ bool DeviceNetwork::isWireless() return m_IsWireless; } +QString DeviceNetwork::hwAddress() +{ + return m_MACAddress; +} + void DeviceNetwork::initFilterKey() { // 初始化可显示属性 - addFilterKey(QObject::tr("ioport")); - addFilterKey(QObject::tr("network")); + addFilterKey("ioport"); + addFilterKey("network"); } void DeviceNetwork::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Type"), m_Model); - addBaseDeviceInfo(tr("Version"), m_Version); - addBaseDeviceInfo(tr("Bus Info"), m_BusInfo); - addBaseDeviceInfo(tr("Capabilities"), m_Capabilities); - addBaseDeviceInfo(tr("Driver"), m_Driver); - addBaseDeviceInfo(tr("Driver Version"), m_DriverVersion); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Type"), m_Model); + addBaseDeviceInfo(("Version"), m_Version); + addBaseDeviceInfo(("Bus Info"), m_BusInfo); + addBaseDeviceInfo(("Capabilities"), m_Capabilities); + addBaseDeviceInfo(("Driver"), m_Driver); + addBaseDeviceInfo(("Driver Version"), m_DriverVersion); } void DeviceNetwork::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Module Alias"), m_Modalias); - addOtherDeviceInfo(tr("Physical ID"), m_PhysID); - addOtherDeviceInfo(tr("Maximum Rate"), m_Capacity); // 1050需求 容量改为最大速率 - addOtherDeviceInfo(tr("Negotiation Rate"), m_Speed); // 1050需求 速度改为协商速率 - addOtherDeviceInfo(tr("Port"), m_Port); - addOtherDeviceInfo(tr("Multicast"), m_Multicast); - addOtherDeviceInfo(tr("Link"), m_Link); - addOtherDeviceInfo(tr("Latency"), m_Latency); - addOtherDeviceInfo(tr("IP"), m_Ip); - addOtherDeviceInfo(tr("Firmware"), m_Firmware); - addOtherDeviceInfo(tr("Duplex"), m_Duplex); - addOtherDeviceInfo(tr("Broadcast"), m_Broadcast); - addOtherDeviceInfo(tr("Auto Negotiation"), m_Autonegotiation); -// addOtherDeviceInfo(tr("Clock"), m_Clock); -// addOtherDeviceInfo(tr("Width"), m_Width); - addOtherDeviceInfo(tr("Memory Address"), m_Memory); // 1050需求 内存改为内存地址 - addOtherDeviceInfo(tr("IRQ"), m_Irq); - addOtherDeviceInfo(tr("MAC Address"), m_MACAddress); - addOtherDeviceInfo(tr("Logical Name"), m_LogicalName); + addOtherDeviceInfo(("Module Alias"), m_Modalias); + addOtherDeviceInfo(("Physical ID"), m_PhysID); + addOtherDeviceInfo(("Maximum Rate"), m_Capacity); // 1050需求 容量改为最大速率 + addOtherDeviceInfo(("Negotiation Rate"), m_Speed); // 1050需求 速度改为协商速率 + addOtherDeviceInfo(("Port"), m_Port); + addOtherDeviceInfo(("Multicast"), m_Multicast); + addOtherDeviceInfo(("Link"), m_Link); + addOtherDeviceInfo(("Latency"), m_Latency); + addOtherDeviceInfo(("IP"), m_Ip); + addOtherDeviceInfo(("Firmware"), m_Firmware); + addOtherDeviceInfo(("Duplex"), m_Duplex); + addOtherDeviceInfo(("Broadcast"), m_Broadcast); + addOtherDeviceInfo(("Auto Negotiation"), m_Autonegotiation); +// addOtherDeviceInfo(("Clock"), m_Clock); +// addOtherDeviceInfo(("Width"), m_Width); + addOtherDeviceInfo(("Memory Address"), m_Memory); // 1050需求 内存改为内存地址 + addOtherDeviceInfo(("IRQ"), m_Irq); + addOtherDeviceInfo(("MAC Address"), m_MACAddress); + addOtherDeviceInfo(("Logical Name"), m_LogicalName); // 将QMap内容转存为QList> mapInfoToList(); @@ -311,9 +294,9 @@ void DeviceNetwork::loadOtherDeviceInfo() void DeviceNetwork::loadTableHeader() { - m_TableHeader.append(tr("Name")); - m_TableHeader.append(tr("Vendor")); - m_TableHeader.append(tr("Type")); + m_TableHeader.append("Name"); + m_TableHeader.append("Vendor"); + m_TableHeader.append("Type"); } void DeviceNetwork::loadTableData() @@ -322,11 +305,11 @@ void DeviceNetwork::loadTableData() QString tName = m_Name; if (!available()) { - tName = "(" + tr("Unavailable") + ") " + m_Name; + tName = "(" + translateStr("Unavailable") + ") " + m_Name; } if (!enable()) { - tName = "(" + tr("Disable") + ") " + m_Name; + tName = "(" + translateStr("Disable") + ") " + m_Name; } // 加载表格数据信息 diff --git a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.h b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.h index b9e857730..6b050289a 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.h @@ -25,13 +25,13 @@ class DeviceNetwork : public DeviceBaseInfo */ void setInfoFromLshw(const QMap &mapInfo); - /** - * @brief setInfoFromTomlOneByOne:设置从toml里面获取的信息 - * @param mapInfo:由toml获取的信息map - * @return枚举值 - */ - TomlFixMethod setInfoFromTomlOneByOne(const QMap &mapInfo); - + /** + * @brief setInfoFromTomlOneByOne:设置从toml里面获取的信息 + * @param mapInfo:由toml获取的信息map + * @return枚举值 + */ + TomlFixMethod setInfoFromTomlOneByOne(const QMap &mapInfo); + /** * @brief setInfoFromHwinfo:设置由hwinfo --network命令获取的设备信息 * @param mapInfo:由hwinfo获取的信息map @@ -39,13 +39,6 @@ class DeviceNetwork : public DeviceBaseInfo */ bool setInfoFromHwinfo(const QMap &mapInfo); - /** - * @brief setInfoFromWifiInfo:设置从cat /sys/hisys/wal/wifi_devices_info里面获取的信息 - * @param mapInfo: 由cat /sys/hisys/wal/wifi_devices_info获取的信息map - * @return 布尔值,true:信息设置成功;false:信息设置失败 - */ - bool setInfoFromWifiInfo(const QMap &mapInfo); - /** * @brief setIsWireless: 设置是否是无线网 * @param sysFSID: SysFS ID: /class/net/enp2s0 @@ -113,6 +106,12 @@ class DeviceNetwork : public DeviceBaseInfo */ bool isWireless(); + /** + * @brief hwAddress: 获取HW地址 + * @return HW地址 + */ + QString hwAddress(); + protected: /** diff --git a/deepin-devicemanager/src/DeviceManager/DeviceOtherPCI.cpp b/deepin-devicemanager/src/DeviceManager/DeviceOtherPCI.cpp index 519dfd72d..c50d4a247 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceOtherPCI.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceOtherPCI.cpp @@ -71,24 +71,24 @@ void DeviceOtherPCI::initFilterKey() void DeviceOtherPCI::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name.isEmpty() ? m_Vendor + m_Model : m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Model"), m_Model); - addBaseDeviceInfo(tr("Bus Info"), m_BusInfo); - addBaseDeviceInfo(tr("Version"), m_Version); + addBaseDeviceInfo(("Name"), m_Name.isEmpty() ? m_Vendor + m_Model : m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Model"), m_Model); + addBaseDeviceInfo(("Bus Info"), m_BusInfo); + addBaseDeviceInfo(("Version"), m_Version); } void DeviceOtherPCI::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Input/Output"), m_InputOutput); - addOtherDeviceInfo(tr("Memory"), m_Memory); - addOtherDeviceInfo(tr("IRQ"), m_Irq); - addOtherDeviceInfo(tr("Latency"), m_Latency); -// addOtherDeviceInfo(tr("Clock"), m_Clock); -// addOtherDeviceInfo(tr("Width"), m_Width); - addOtherDeviceInfo(tr("Driver"), m_Driver); - addOtherDeviceInfo(tr("Capabilities"), m_Version); + addOtherDeviceInfo(("Input/Output"), m_InputOutput); + addOtherDeviceInfo(("Memory"), m_Memory); + addOtherDeviceInfo(("IRQ"), m_Irq); + addOtherDeviceInfo(("Latency"), m_Latency); +// addOtherDeviceInfo(("Clock"), m_Clock); +// addOtherDeviceInfo(("Width"), m_Width); + addOtherDeviceInfo(("Driver"), m_Driver); + addOtherDeviceInfo(("Capabilities"), m_Version); // 将QMap内容转存为QList> mapInfoToList(); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceOthers.cpp b/deepin-devicemanager/src/DeviceManager/DeviceOthers.cpp index 922ce30c1..96e1b6486 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceOthers.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceOthers.cpp @@ -24,7 +24,7 @@ void DeviceOthers::setInfoFromLshw(const QMap &mapInfo) { if (!matchToLshw(mapInfo)) return; - + QString tmp_Name = m_Name; setAttribute(mapInfo, "product", m_Name, false); setAttribute(mapInfo, "vendor", m_Vendor, false); setAttribute(mapInfo, "product", m_Model, false); @@ -36,6 +36,13 @@ void DeviceOthers::setInfoFromLshw(const QMap &mapInfo) setAttribute(mapInfo, "speed", m_Speed); setAttribute(mapInfo, "logical name", m_LogicalName); + if(m_Driver.isEmpty() && !m_Avail.compare("yes", Qt::CaseInsensitive)){ + setForcedDisplay(true); + setCanEnale(false); + if(!(tmp_Name.contains("fingerprint", Qt::CaseInsensitive) || tmp_Name. contains("MOH", Qt::CaseInsensitive))) + setCanUninstall(false); + } + // 核内驱动不显示卸载菜单 if (driverIsKernelIn(m_Driver)) { m_CanUninstall = false; @@ -45,10 +52,10 @@ void DeviceOthers::setInfoFromLshw(const QMap &mapInfo) TomlFixMethod DeviceOthers::setInfoFromTomlOneByOne(const QMap &mapInfo) { TomlFixMethod ret = TOML_None; - // 添加基本信息 - ret = setTomlAttribute(mapInfo, "Model", m_Model); + // 添加基本信息 + ret = setTomlAttribute(mapInfo, "Model", m_Model); ret = setTomlAttribute(mapInfo, "Bus Info", m_BusInfo); - ret = setTomlAttribute(mapInfo, "Capabilities", m_Capabilities); + ret = setTomlAttribute(mapInfo, "Capabilities", m_Capabilities); ret = setTomlAttribute(mapInfo, "Maximum Power", m_MaximumPower); ret = setTomlAttribute(mapInfo, "Speed", m_Speed); ////Others @@ -68,11 +75,12 @@ void DeviceOthers::setInfoFromHwinfo(const QMap &mapInfo) setAttribute(mapInfo, "Driver", m_Driver); setAttribute(mapInfo, "Speed", m_Speed); setAttribute(mapInfo, "Serial ID", m_SerialID); - setAttribute(mapInfo, "Serial ID", m_UniqueID); setAttribute(mapInfo, "SysFS ID", m_SysPath); /* 禁用时提示获取序列号失败*/ - setAttribute(mapInfo, "Unique ID", m_SerialID); - m_UniqueID = m_SerialID; + setAttribute(mapInfo, "Unique ID", m_UniqueID); + // 防止Serial ID为空 + if (m_SerialID.isEmpty()) + m_SerialID = m_UniqueID; setAttribute(mapInfo, "Module Alias", m_Modalias); setAttribute(mapInfo, "VID_PID", m_VID_PID); @@ -86,6 +94,9 @@ void DeviceOthers::setInfoFromHwinfo(const QMap &mapInfo) m_CanEnable = false; m_CanUninstall = false; } + setAttribute(mapInfo, "cfg_avail", m_Avail); + if(!m_Avail.compare("yes", Qt::CaseInsensitive)) + setForcedDisplay(true); getOtherMapInfo(mapInfo); // 核内驱动不显示卸载菜单 @@ -163,27 +174,28 @@ bool DeviceOthers::available() void DeviceOthers::initFilterKey() { - addFilterKey(QObject::tr("Device File")); - addFilterKey(QObject::tr("Hardware Class")); + addFilterKey("Device File"); + addFilterKey("Hardware Class"); } void DeviceOthers::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Model"), m_Model); - addBaseDeviceInfo(tr("Version"), m_Version); - addBaseDeviceInfo(tr("Bus Info"), m_BusInfo); - addBaseDeviceInfo(tr("Capabilities"), m_Capabilities); - addBaseDeviceInfo(tr("Driver"), m_Driver); - addBaseDeviceInfo(tr("Maximum Power"), m_MaximumPower); - addBaseDeviceInfo(tr("Speed"), m_Speed); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Model"), m_Model); + addBaseDeviceInfo(("Version"), m_Version); + addBaseDeviceInfo(("Bus Info"), m_BusInfo); + addBaseDeviceInfo(("Capabilities"), m_Capabilities); + addBaseDeviceInfo(("Driver"), m_Driver); + addBaseDeviceInfo(("Maximum Power"), m_MaximumPower); + addBaseDeviceInfo(("Speed"), m_Speed); } void DeviceOthers::loadOtherDeviceInfo() { - addOtherDeviceInfo(tr("Serial Number"), m_SerialID); + if (m_SerialID != m_UniqueID) + addOtherDeviceInfo(("Serial Number"), m_SerialID); mapInfoToList(); } @@ -192,10 +204,10 @@ void DeviceOthers::loadTableData() // 加载表格数据 QString tName = m_Name; if (!available()) { - tName = "(" + tr("Unavailable") + ") " + m_Name; + tName = "(" + translateStr("Unavailable") + ") " + m_Name; } if (!enable()) { - tName = "(" + tr("Disable") + ") " + m_Name; + tName = "(" + translateStr("Disable") + ") " + m_Name; } m_TableData.append(tName); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceOthers.h b/deepin-devicemanager/src/DeviceManager/DeviceOthers.h index 13b78412b..7da9c69bd 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceOthers.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceOthers.h @@ -118,6 +118,7 @@ class DeviceOthers : public DeviceBaseInfo QString m_Speed; // @@ -65,10 +66,11 @@ TomlFixMethod DevicePower::setInfoFromTomlOneByOne(const QMap bool DevicePower::setInfoFromUpower(const QMap &mapInfo) { // 设置upower中获取的信息 - if (mapInfo["Device"].contains("line_power", Qt::CaseInsensitive)) { + if (mapInfo["Device"].contains("line_power", Qt::CaseInsensitive) || + mapInfo["state"].contains("empty", Qt::CaseInsensitive) || + mapInfo["state"].contains("unknown", Qt::CaseInsensitive)) { return false; } - // m_Name = QObject::tr("battery"); setAttribute(mapInfo, "", m_Vendor); setAttribute(mapInfo, "", m_Model); @@ -82,8 +84,6 @@ bool DevicePower::setInfoFromUpower(const QMap &mapInfo) setAttribute(mapInfo, "capacity", m_Capacity); setAttribute(mapInfo, "voltage", m_Voltage); setAttribute(mapInfo, "", m_Slot); -// setAttribute(mapInfo, "capacity", m_DesignCapacity); -// setAttribute(mapInfo, "voltage", m_DesignVoltage); setAttribute(mapInfo, "", m_SBDSChemistry); setAttribute(mapInfo, "", m_SBDSManufactureDate); setAttribute(mapInfo, "", m_SBDSSerialNumber); @@ -108,7 +108,7 @@ bool DevicePower::setInfoFromUpower(const QMap &mapInfo) void DevicePower::setDaemonInfo(const QMap &mapInfo) { // 设置守护进程信息 - if (m_Name == QObject::tr("battery")) + if (m_Name == translateStr("battery")) getOtherMapInfo(mapInfo); } @@ -146,51 +146,55 @@ const QString DevicePower::getOverviewInfo() void DevicePower::initFilterKey() { // 初始化可显示属性 - addFilterKey(QObject::tr("native-path")); - addFilterKey(QObject::tr("power supply")); - addFilterKey(QObject::tr("updated")); - addFilterKey(QObject::tr("has history")); - addFilterKey(QObject::tr("has statistics")); - addFilterKey(QObject::tr("rechargeable")); - addFilterKey(QObject::tr("state")); - addFilterKey(QObject::tr("warning-level")); - addFilterKey(QObject::tr("energy")); - addFilterKey(QObject::tr("energy-empty")); - addFilterKey(QObject::tr("energy-full")); - addFilterKey(QObject::tr("energy-full-design")); - addFilterKey(QObject::tr("energy-rate")); - addFilterKey(QObject::tr("voltage")); - addFilterKey(QObject::tr("percentage")); -// addFilterKey(QObject::tr("temperature")); // 温度已经常规显示 - addFilterKey(QObject::tr("technology")); - addFilterKey(QObject::tr("icon-name")); - addFilterKey(QObject::tr("online")); - addFilterKey(QObject::tr("daemon-version")); - addFilterKey(QObject::tr("on-battery")); - addFilterKey(QObject::tr("lid-is-closed")); - addFilterKey(QObject::tr("lid-is-present")); - addFilterKey(QObject::tr("critical-action")); +// addFilterKey("native-path"); + addFilterKey("power supply"); +// addFilterKey("updated"); + addFilterKey("has history"); + addFilterKey("has statistics"); + addFilterKey("rechargeable"); + addFilterKey("state"); + addFilterKey("warning-level"); + addFilterKey("energy"); + addFilterKey("energy-empty"); + + QString type = Common::specialVendorType(); + if (type != Common::specialHString()) { + addFilterKey("energy-full"); + addFilterKey("energy-full-design"); + } + addFilterKey("energy-rate"); + // addFilterKey("voltage"); + addFilterKey("percentage"); +// addFilterKey("temperature")); // 温度已经常规显示-2 + addFilterKey("technology"); +// addFilterKey("icon-name"); + addFilterKey("online"); + addFilterKey("daemon-version"); + addFilterKey("on-battery"); + addFilterKey("lid-is-closed"); + addFilterKey("lid-is-present"); + addFilterKey("critical-action"); } void DevicePower::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Model"), m_Model); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Serial Number"), m_SerialNumber); - addBaseDeviceInfo(tr("Type"), m_Type); - addBaseDeviceInfo(tr("Status"), m_Status); - addBaseDeviceInfo(tr("Capacity"), m_Capacity); - addBaseDeviceInfo(tr("Voltage"), m_Voltage); - addBaseDeviceInfo(tr("Slot"), m_Slot); - addBaseDeviceInfo(tr("Design Capacity"), m_DesignCapacity); - addBaseDeviceInfo(tr("Design Voltage"), m_DesignVoltage); - addBaseDeviceInfo(tr("SBDS Version"), m_SBDSVersion); - addBaseDeviceInfo(tr("SBDS Serial Number"), m_SBDSSerialNumber); - addBaseDeviceInfo(tr("SBDS Manufacture Date"), m_SBDSManufactureDate); - addBaseDeviceInfo(tr("SBDS Chemistry"), m_SBDSChemistry); - addBaseDeviceInfo(tr("Temperature"), m_Temp); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Model"), m_Model); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Serial Number"), m_SerialNumber); + addBaseDeviceInfo(("Type"), m_Type); + addBaseDeviceInfo(("Status"), m_Status); + addBaseDeviceInfo(("Capacity"), m_Capacity); + addBaseDeviceInfo(("Voltage"), m_Voltage); + addBaseDeviceInfo(("Slot"), m_Slot); + addBaseDeviceInfo(("Design Capacity"), m_DesignCapacity); + addBaseDeviceInfo(("Design Voltage"), m_DesignVoltage); + addBaseDeviceInfo(("SBDS Version"), m_SBDSVersion); + addBaseDeviceInfo(("SBDS Serial Number"), m_SBDSSerialNumber); + addBaseDeviceInfo(("SBDS Manufacture Date"), m_SBDSManufactureDate); + addBaseDeviceInfo(("SBDS Chemistry"), m_SBDSChemistry); + addBaseDeviceInfo(("Temperature"), m_Temp.replace("degrees C", "℃", Qt::CaseInsensitive)); } void DevicePower::loadOtherDeviceInfo() diff --git a/deepin-devicemanager/src/DeviceManager/DevicePrint.cpp b/deepin-devicemanager/src/DeviceManager/DevicePrint.cpp index 444dd3fe3..3fe00334f 100644 --- a/deepin-devicemanager/src/DeviceManager/DevicePrint.cpp +++ b/deepin-devicemanager/src/DeviceManager/DevicePrint.cpp @@ -7,7 +7,7 @@ #include "DBusEnableInterface.h" // Qt库文件 -#include +#include DevicePrint::DevicePrint() : DeviceBaseInfo() @@ -125,42 +125,42 @@ bool DevicePrint::enable() void DevicePrint::initFilterKey() { // 初始化可显示属性 - addFilterKey(QObject::tr("copies")); - addFilterKey(QObject::tr("job-cancel-after")); - addFilterKey(QObject::tr("job-hold-until")); - addFilterKey(QObject::tr("job-priority")); - addFilterKey(QObject::tr("marker-change-time")); - addFilterKey(QObject::tr("number-up")); - addFilterKey(QObject::tr("orientation-requested")); - addFilterKey(QObject::tr("print-color-mode")); - addFilterKey(QObject::tr("printer-is-accepting-jobs")); - addFilterKey(QObject::tr("printer-is-shared")); - addFilterKey(QObject::tr("printer-is-temporary")); -// addFilterKey(QObject::tr("printer-make-and-model")); - addFilterKey(QObject::tr("printer-state-change-time")); - addFilterKey(QObject::tr("printer-state-reasons")); - addFilterKey(QObject::tr("printer-type")); - addFilterKey(QObject::tr("printer-uri-supported")); - addFilterKey(QObject::tr("sides")); + addFilterKey("copies"); + addFilterKey("job-cancel-after"); + addFilterKey("job-hold-until"); + addFilterKey("job-priority"); + addFilterKey("marker-change-time"); + addFilterKey("number-up"); + addFilterKey("orientation-requested"); + addFilterKey("print-color-mode"); + addFilterKey("printer-is-accepting-jobs"); + addFilterKey("printer-is-shared"); + addFilterKey("printer-is-temporary"); +// addFilterKey("printer-make-and-model"); + addFilterKey("printer-state-change-time"); + addFilterKey("printer-state-reasons"); + addFilterKey("printer-type"); + addFilterKey("printer-uri-supported"); + addFilterKey("sides"); } void DevicePrint::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Model"), m_Model); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Serial Number"), m_SerialNumber); + addBaseDeviceInfo(("Name"), m_Name); + addBaseDeviceInfo(("Model"), m_Model); + addBaseDeviceInfo(("Vendor"), m_Vendor); + addBaseDeviceInfo(("Serial Number"), m_SerialNumber); } void DevicePrint::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Shared"), m_Shared); - addOtherDeviceInfo(tr("URI"), m_URI); - addOtherDeviceInfo(tr("Status"), m_Status); - addOtherDeviceInfo(tr("Interface Type"), m_InterfaceType); - addOtherDeviceInfo(QObject::tr("printer-make-and-model"), m_MakeAndModel); + addOtherDeviceInfo(("Shared"), m_Shared); + addOtherDeviceInfo(("URI"), m_URI); + addOtherDeviceInfo(("Status"), m_Status); + addOtherDeviceInfo(("Interface Type"), m_InterfaceType); + addOtherDeviceInfo(("printer-make-and-model"), m_MakeAndModel); // 将QMap内容转存为QList> mapInfoToList(); } @@ -170,7 +170,7 @@ void DevicePrint::loadTableData() // 加载表格数据 QString tName = m_Name; if (!enable()) { - tName = "(" + tr("Disable") + ") " + m_Name; + tName = "(" + translateStr("Disable") + ") " + m_Name; } m_TableData.append(tName); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp b/deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp index 913be001a..2019a43c6 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp @@ -4,9 +4,20 @@ // 项目自身文件 #include "DeviceStorage.h" +#include "commonfunction.h" +#include +#include // Qt库文件 -#include +#include +#include "DDLog.h" +// Qt库文件 +#include + +using namespace DDLog; + +#define DISK_SCALE_1024 1024 +#define DISK_SCALE_1000 1000 DeviceStorage::DeviceStorage() : DeviceBaseInfo() @@ -14,6 +25,7 @@ DeviceStorage::DeviceStorage() // , m_Vendor("") , m_MediaType("") , m_Size("") + , m_SizeBytes(0) , m_RotationRate("") , m_Interface("") , m_SerialNumber("") @@ -43,6 +55,78 @@ TomlFixMethod DeviceStorage::setInfoFromTomlOneByOne(const QMap 1000) || (curValue % 1000 == 0))) + { + value = curValue; + curValue = curValue / 1000; + i++; + } + + if (i < 4) { + quint64 diffValue = value - curValue * 1000; + double calValue = diffValue / 1000.0 + 0.1; + curValue += static_cast(calValue); + valueStr = QString::number(curValue) + " "; + if (i > 0) + valueStr += prefixes[i - 1]; + } else if (i <= prefixes.size()) { // 单位T以上处理 + if (value % 1000 >= 1) + valueStr = QString::number(value) + " " + prefixes[i - 2]; //保留小数部分 如1920GB 10001GB + else + valueStr = QString::number(curValue) + " " + prefixes[i - 1]; //无小数部分入整 如1TB + } + valueStr += "B"; + return valueStr; +} + +static quint64 convertToBytes(const QString& size, double scale) +{ + /*convert "KB MB GB TB PB EB ZB YB " to bytes */ + const QString prefixes("KMGTPEZY"); + quint64 diskBytesSize = 0; + double multiplier = 1; + double diskSizeFloat = 0; + + QRegExp reg("([0-9]*\\.?[0-9]*)([A-Za-z]*)"); + if(reg.indexIn(size) == -1) + return diskBytesSize; + QString sizeValue1 = reg.cap(1); + if(sizeValue1.isEmpty()) + return diskBytesSize; + QString diskUnits = size.right(size.length() - sizeValue1.size()).trimmed().toUpper(); + if(diskUnits.isEmpty()) + return diskBytesSize; + diskUnits.replace("B","").replace("I",""); + QChar lastChar = diskUnits.at(diskUnits.length() - 1); + + if (prefixes.contains(diskUnits)) { + diskSizeFloat = sizeValue1.toDouble(); + + int i = 0; + while (i < prefixes.size()) { + QChar iChar = prefixes.at(i++); + if(iChar == lastChar) { + multiplier = std::pow(scale,i); + break; + } + } + } + diskBytesSize = static_cast(diskSizeFloat * multiplier); + return diskBytesSize; +} + +void DeviceStorage::unitConvertByDecimal() +{ + if(m_SizeBytes > 0) + m_Size = decimalkilos(m_SizeBytes); +} + bool DeviceStorage::setHwinfoInfo(const QMap &mapInfo) { // 龙芯机器中 hwinfo --disk会列出所有的分区信息 @@ -50,12 +134,17 @@ bool DeviceStorage::setHwinfoInfo(const QMap &mapInfo) if (mapInfo.find("SysFS BusID") == mapInfo.end()) return false; - setAttribute(mapInfo, "Model", m_Name); + if (Common::specialComType <= 0) { + setAttribute(mapInfo, "Model", m_Name); + } setAttribute(mapInfo, "Vendor", m_Vendor); // 希捷硬盘为ATA硬盘,无法直接获取厂商信息,只能特殊处理 if (m_Name.startsWith("ST") && m_Vendor.isEmpty()) m_Vendor = "ST"; + //根据产品PN中的固定前两位 RS来匹配厂商 为Longsys 如产品PN :RSYE3836N-480G RSYE3836N-960G RSYE3836N-1920 RSYE3836N-3840 + if (m_Name.startsWith("RS") && m_Vendor.isEmpty()) + m_Vendor = "Longsys"; setAttribute(mapInfo, "Driver", m_Driver); // 驱动 QRegExp exp("pci 0x[0-9a-zA-Z]*"); @@ -75,7 +164,21 @@ bool DeviceStorage::setHwinfoInfo(const QMap &mapInfo) setAttribute(mapInfo, "Capacity", m_Size); // hwinfo里面显示的内容是 14 GB (15376000000 bytes) 需要处理 - m_Size.replace(QRegExp("\\(.*\\)"), "").replace(" ", ""); + QRegExp reSize(".*\\((.*)bytes\\).*"); + if (reSize.exactMatch(m_Size)) { + bool ok = false; + quint64 bytesSize = reSize.cap(1).trimmed().toULongLong(&ok); + if (ok) { + m_Size = decimalkilos(bytesSize); + m_SizeBytes = bytesSize; + } else { + m_Size.replace(QRegExp("\\(.*\\)"), "").replace(" ", ""); + m_SizeBytes = convertToBytes(m_Size,DISK_SCALE_1024); + } + } else { + m_Size.replace(QRegExp("\\(.*\\)"), "").replace(" ", ""); + m_SizeBytes = convertToBytes(m_Size,DISK_SCALE_1024); + } // 如果既没有capacity也没有序列号则认为该磁盘无效,否则都属于有效磁盘 if ((m_Size.startsWith("0") || m_Size == "") && m_SerialNumber == "") @@ -88,10 +191,38 @@ bool DeviceStorage::setHwinfoInfo(const QMap &mapInfo) if (m_SerialNumber.isEmpty()) { setAttribute(mapInfo, "Serial ID", m_SerialNumber); } - + if (m_SerialNumber.compare("0",Qt::CaseInsensitive) == 0) + m_SerialNumber = ""; setAttribute(mapInfo, "SysFS BusID", m_KeyToLshw); setAttribute(mapInfo, "Device File", m_DeviceFile); + + // 专有文件 + QString logicalName = ((QString)mapInfo["SysFS ID"]).replace("/class/block", ""); + + QDir blockDir("/sys/block/"); + QStringList blockfs = blockDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot | QDir::Readable); + foreach (QString fsname, blockfs) { + if (m_DeviceFile.contains(fsname, Qt::CaseInsensitive)) { + logicalName = fsname; + break; + } + } + + QString Path = "/sys/block/" + logicalName + "/device/spec_version"; + QFile file(Path); + if (file.open(QIODevice::ReadOnly)) { + QString output = file.readAll(); + if (output.contains("310", Qt::CaseInsensitive)) { + m_Interface = "UFS 3.1"; + } else if (output.contains("300", Qt::CaseInsensitive)) { + m_Interface = "UFS 3.0"; + } else if (output.contains("400", Qt::CaseInsensitive)) { + m_Interface = "UFS 4.0"; + } + file.close(); + } + if (m_KeyToLshw.contains("nvme", Qt::CaseInsensitive)) setAttribute(mapInfo, "SysFS Device Link", m_NvmeKey); @@ -146,45 +277,14 @@ QString DeviceStorage::getSerialID(QString &strDeviceLink) return strSerialNumber; } -bool DeviceStorage::setKLUHwinfoInfo(const QMap &mapInfo) +const QString &DeviceStorage::mediaType() const { - // 龙芯机器中 hwinfo --disk会列出所有的分区信息 - // 存储设备不应包含分区,根据SysFS BusID 来确定是否是分区信息 - if (mapInfo.find("SysFS BusID") == mapInfo.end()) - return false; - - setAttribute(mapInfo, "Model", m_Name); - setAttribute(mapInfo, "Vendor", m_Vendor); - setAttribute(mapInfo, "Driver", m_Driver); // 驱动 - - setAttribute(mapInfo, "Attached to", m_Interface); - QRegExp re(".*\\((.*)\\).*"); - if (re.exactMatch(m_Interface)) { - m_Interface = re.cap(1); - m_Interface.replace("Controller", ""); - m_Interface.replace("controller", ""); - } - - setAttribute(mapInfo, "Revision", m_Version); - setAttribute(mapInfo, "Hardware Class", m_Description); - setAttribute(mapInfo, "Capacity", m_Size); - - // hwinfo里面显示的内容是 14 GB (15376000000 bytes) 需要处理 - m_Size.replace(QRegExp("\\(.*\\)"), "").replace(" ", ""); - if (m_Size.startsWith("0") || m_Size == "") - return false; - - setAttribute(mapInfo, "Serial ID", m_SerialNumber); -// setDiskSerialID(mapInfo["Device Files"]); - setAttribute(mapInfo, "SysFS BusID", m_KeyToLshw); - setAttribute(mapInfo, "Device File", m_DeviceFile); - - // KLU里面的介质类型的处理方式比较特殊 - if (mapInfo["Driver"].contains("usb-storage")) - m_MediaType = "USB"; + return m_MediaType; +} - getOtherMapInfo(mapInfo); - return true; +const QString &DeviceStorage::interface() const +{ + return m_Interface; } bool DeviceStorage::addInfoFromlshw(const QMap &mapInfo) @@ -257,29 +357,11 @@ bool DeviceStorage::setMediaType(const QString &name, const QString &value) return false; if (QString("0") == value) - m_MediaType = QObject::tr("SSD"); + m_MediaType = "SSD"; else if (QString("1") == value) - m_MediaType = QObject::tr("HDD"); + m_MediaType = "HDD"; else - m_MediaType = QObject::tr("Unknown"); - - return true; -} - -bool DeviceStorage::setKLUMediaType(const QString &name, const QString &value) -{ - if (!m_DeviceFile.contains(name)) - return false; - - if (m_MediaType == "USB") - return true; - - if (QString("0") == value) - m_MediaType = QObject::tr("SSD"); - else if (QString("1") == value) - m_MediaType = QObject::tr("HDD"); - else - m_MediaType = QObject::tr("Unknown"); + m_MediaType = "Unknown"; return true; } @@ -287,7 +369,7 @@ bool DeviceStorage::setKLUMediaType(const QString &name, const QString &value) bool DeviceStorage::isValid() { // 若是m_Size为空则 该设备无效 - if (m_Size.isEmpty()) + if (m_Size.isEmpty() && m_SizeBytes == 0) return false; return true; @@ -321,6 +403,9 @@ void DeviceStorage::setDiskSerialID(const QString &deviceFiles) QString DeviceStorage::getDiskSerialID() { + if (m_Interface.contains("USB", Qt::CaseInsensitive)) { + return m_SerialNumber + m_KeyToLshw; + } return m_SerialNumber; } @@ -331,94 +416,69 @@ void DeviceStorage::appendDisk(DeviceStorage *device) for (int i = 0; i < allAttribs.size(); ++i) { allAttribMaps.insert(allAttribs[i].first, allAttribs[i].second); } - QString size = allAttribMaps[tr("Size")]; - - if (size.isEmpty()) return; - // 直接设置大小 - if (m_Size.isEmpty()) - m_Size = size; - else { - QRegExp reg("[0-9]*.?[0-9]*"); - int index = reg.indexIn(m_Size); - double num1 = 0; - QString type1; - // index>0时,对于"32GB"(数字开头的字符串,index=0)无法获取正确的数据32 - // 所以要改为index >= 0 - if (index >= 0) { - num1 = reg.cap(0).toDouble(); - type1 = m_Size.right(m_Size.length() - reg.cap(0).size()).trimmed(); - } - - index = reg.indexIn(size); - double num2 = 0; - QString type2; - if (index >= 0) { - num2 = reg.cap(0).toDouble(); - type2 = m_Size.right(size.length() - reg.cap(0).size()).trimmed(); - } - // 匹配大小 - if (type1 != type2) { - if (type1 == "TB" && type2 != "TB") { - num2 /= 1000.0; - type2 = "TB"; - } else if (type1 != "TB" && type2 == "TB") { - num1 /= 1000.0; - type1 = "TB"; - } - } - if (type1 == type2) { - num1 = num1 + num2; - if (num1 > int(num1)) - m_Size = QString("%1 %2").arg(QString::number(num1, 'f', 2)).arg(type1); - else { - m_Size = QString("%1 %2").arg(num1).arg(type1); - } + quint64 size2 = device->getDiskSizeByte(); + if (m_SizeBytes == 0) + m_SizeBytes = size2; + else if (size2 > 0) { + m_SizeBytes += size2; - QList > allOtherAttribs = device->getOtherAttribs(); - QMap allOtherAttribMaps; - for (int i = 0; i < allOtherAttribs.size(); ++i) { - allAttribMaps.insert(allOtherAttribs[i].first, allOtherAttribs[i].second); - } + QList > allOtherAttribs = device->getOtherAttribs(); + QMap allOtherAttribMaps; + for (int i = 0; i < allOtherAttribs.size(); ++i) { + allAttribMaps.insert(allOtherAttribs[i].first, allOtherAttribs[i].second); + } - loadOtherDeviceInfo(); - //合并 - QMap curAllOtherAttribMaps; - for (int i = 0; i < m_LstOtherInfo.size(); ++i) { - curAllOtherAttribMaps.insert(m_LstOtherInfo[i].first, m_LstOtherInfo[i].second); - } + loadOtherDeviceInfo(); + //合并 + QMap curAllOtherAttribMaps; + for (int i = 0; i < m_LstOtherInfo.size(); ++i) { + curAllOtherAttribMaps.insert(m_LstOtherInfo[i].first, m_LstOtherInfo[i].second); + } - QStringList keyList; - keyList.append(QObject::tr("bus info")); - keyList.append(QObject::tr("Device File")); - // keyList.append(QObject::tr("physical id")); - keyList.append(QObject::tr("Device Number")); - keyList.append(QObject::tr("logical name")); - for (QString keyStr : keyList) { - QString curBusInfo = curAllOtherAttribMaps[keyStr]; - QString busInfo = allAttribMaps[keyStr]; - if (!curBusInfo.isEmpty() && !busInfo.isEmpty() && curBusInfo != busInfo) { - setOtherDeviceInfo(keyStr, curBusInfo + "," + busInfo); - } + QStringList keyList; + keyList.append(translateStr("bus info")); + keyList.append(translateStr("Device File")); + keyList.append(translateStr("Device Number")); + keyList.append(translateStr("logical name")); + for (QString keyStr : keyList) { + QString curBusInfo = curAllOtherAttribMaps[keyStr]; + QString busInfo = allAttribMaps[keyStr]; + if (!curBusInfo.isEmpty() && !busInfo.isEmpty() && curBusInfo != busInfo) { + setOtherDeviceInfo(keyStr, curBusInfo + "," + busInfo); } - - loadOtherDeviceInfo(); } + loadOtherDeviceInfo(); } } void DeviceStorage::checkDiskSize() { - QRegExp reg("[0-9]*.?[0-9]*"); - int index = reg.indexIn(m_Size); - // index>0时,对于"32GB"(数字开头的字符串,index=0)无法获取正确的数据32 - // 所以要改为index >= 0 - if (index >= 0) { - double num = reg.cap(0).toDouble(); - double num1 = num - int(num); - QString type = m_Size.right(m_Size.length() - reg.cap(0).size()).trimmed(); - if (!qFuzzyCompare(num1, 0.0) && type == "GB") { - m_Size = QString::number(int(num) + 1) + type; + if (Common::specialComType <= 0) { + return; //定制机型专用,其它慎用 + } + + quint64 gbyte = 1000000000; +// if (m_Interface.contains("UFS", Qt::CaseInsensitive)) { // TODO Ignore ufs disk + if (m_SizeBytes > 255*gbyte && m_SizeBytes < 257*gbyte) { + m_Size = "256 GB"; + } else if (m_SizeBytes > 511*gbyte && m_SizeBytes < 513*gbyte) { + m_Size = "512 GB"; + } else if (m_SizeBytes > 999*gbyte && m_SizeBytes < 1025*gbyte) { + m_Size = "1 TB"; + } else if (m_SizeBytes > 1999*gbyte && m_SizeBytes < 2049*gbyte) { + m_Size = "2 TB"; + } +// } + if (m_Interface.contains("USB", Qt::CaseInsensitive)) { + if (m_SizeBytes > 15*gbyte && m_SizeBytes < 17*gbyte) { + m_Size = "16 GB"; + } else if (m_SizeBytes > 31*gbyte && m_SizeBytes < 33*gbyte) { + m_Size = "32 GB"; + } else if (m_SizeBytes > 63*gbyte && m_SizeBytes < 65*gbyte) { + m_Size = "64 GB"; + } else if (m_SizeBytes > 127*gbyte && m_SizeBytes < 129*gbyte) { + m_Size = "128 GB"; } } } @@ -430,16 +490,16 @@ QString DeviceStorage::compareSize(const QString &size1, const QString &size2) return size1 + size2; // 将字符串转为数字大小进行比较 - int num1 = 0; - int num2 = 0; - QRegExp reg(".*\\[(\\d*).*\\]$"); + float num1 = 0; + float num2 = 0; + QRegExp reg(".*\\[(\\d+\\.?\\d+).*\\]"); if (reg.exactMatch(size1)) - num1 = reg.cap(1).toInt(); + num1 = reg.cap(1).toFloat(); if (reg.exactMatch(size2)) - num2 = reg.cap(1).toInt(); + num2 = reg.cap(1).toFloat(); // 返回较大值 - if (num1 > num2) + if ((num1 - num2) > FLT_EPSILON * fmaxf(fabsf(num1), fabsf(num2))) return size1; else return size2; @@ -472,54 +532,75 @@ QString DeviceStorage::subTitle() const QString DeviceStorage::getOverviewInfo() { - return QString("%1 (%2)").arg(m_Name).arg(m_Size);; + QString overViewInfo = QString("%1 (%2)").arg(m_Name).arg(m_Size); + + if (m_Interface.contains("UFS", Qt::CaseInsensitive)) { + overViewInfo = QString("%1 %2").arg(m_Size).arg("UFS"); + } else if (m_Interface.contains("USB", Qt::CaseInsensitive)) { + overViewInfo = QString("%1 %2").arg(m_Size).arg("USB"); + } else { + overViewInfo = QString("%1 %2").arg(m_Size).arg(m_MediaType); + } + + return overViewInfo; } void DeviceStorage::initFilterKey() { // hwinfo --disk - addFilterKey(QObject::tr("Hardware Class")); - addFilterKey(QObject::tr("Device File")); - addFilterKey(QObject::tr("ansiversion")); - addFilterKey(QObject::tr("bus info")); - addFilterKey(QObject::tr("logical name")); - addFilterKey(QObject::tr("logicalsectorsize")); - // addFilterKey(QObject::tr("physical id")); - addFilterKey(QObject::tr("sectorsize")); - addFilterKey(QObject::tr("guid")); - addFilterKey(QObject::tr("Config Status")); - addFilterKey(QObject::tr("Device Number")); - addFilterKey(QObject::tr("Geometry (Logical)")); + addFilterKey("Hardware Class"); + addFilterKey("Device File"); + addFilterKey("ansiversion"); + addFilterKey("bus info"); + addFilterKey("logical name"); + addFilterKey("logicalsectorsize"); + // addFilterKey("physical id"); + addFilterKey("sectorsize"); + addFilterKey("guid"); + addFilterKey("Config Status"); + addFilterKey("Device Number"); + addFilterKey("Geometry (Logical)"); } void DeviceStorage::loadBaseDeviceInfo() { // 添加基本信息 - addBaseDeviceInfo(tr("Name"), m_Name); - addBaseDeviceInfo(tr("Vendor"), m_Vendor); - addBaseDeviceInfo(tr("Media Type"), m_MediaType); - addBaseDeviceInfo(tr("Size"), m_Size); - addBaseDeviceInfo(tr("Version"), m_Version); - addBaseDeviceInfo(tr("Capabilities"), m_Capabilities); + addBaseDeviceInfo(("Name"), m_Name); + if (Common::specialComType <= 0) { + addBaseDeviceInfo(("Vendor"), m_Vendor); + } + addBaseDeviceInfo(("Media Type"), translateStr(m_MediaType)); + addBaseDeviceInfo(("Size"), m_Size); + addBaseDeviceInfo(("Version"), m_Version); + addBaseDeviceInfo(("Capabilities"), m_Capabilities); } void DeviceStorage::loadOtherDeviceInfo() { // 添加其他信息,成员变量 - addOtherDeviceInfo(tr("Module Alias"), m_Modalias); - addOtherDeviceInfo(tr("Physical ID"), m_PhysID); - addOtherDeviceInfo(tr("Firmware Version"), m_FirmwareVersion); - addOtherDeviceInfo(tr("Speed"), m_Speed); - addOtherDeviceInfo(tr("Description"), m_Description); - addOtherDeviceInfo(tr("Serial Number"), m_SerialNumber); - addOtherDeviceInfo(tr("Interface"), m_Interface); - addOtherDeviceInfo(tr("Rotation Rate"), m_RotationRate); - addOtherDeviceInfo(tr("Module Alias"), m_Modalias); - addOtherDeviceInfo(tr("Physical ID"), m_PhysID); + addOtherDeviceInfo(("Firmware Version"), m_FirmwareVersion); + addOtherDeviceInfo(("Speed"), m_Speed); + addOtherDeviceInfo(("Description"), m_Description); + + for(int i = 0 ; i < m_SerialNumber.count(); i++) { + QChar cha = m_SerialNumber.at(i); + ushort uni = cha.unicode(); + if(uni < 33 || uni > 126) { + qCWarning(appLog)<<"smartctl Serial number is not LetterOrNumber "<< m_SerialNumber; + m_SerialNumber.clear(); + break; + } + } + + addOtherDeviceInfo(("Serial Number"), m_SerialNumber); + addOtherDeviceInfo(("Interface"), m_Interface); + addOtherDeviceInfo(("Rotation Rate"), m_RotationRate); + addOtherDeviceInfo(("Module Alias"), m_Modalias); + addOtherDeviceInfo(("Physical ID"), m_PhysID); if (m_RotationRate == QString("Solid State Device")) { - m_MediaType = QObject::tr("SSD"); + m_MediaType = "SSD"; } // 将QMap内容转存为QList> @@ -529,10 +610,10 @@ void DeviceStorage::loadOtherDeviceInfo() void DeviceStorage::loadTableHeader() { // 加载表头信息 - m_TableHeader.append(tr("Name")); - m_TableHeader.append(tr("Vendor")); - m_TableHeader.append(tr("Media Type")); - m_TableHeader.append(tr("Size")); + m_TableHeader.append("Name"); + m_TableHeader.append("Vendor"); + m_TableHeader.append("Media Type"); + m_TableHeader.append("Size"); } void DeviceStorage::loadTableData() @@ -540,11 +621,11 @@ void DeviceStorage::loadTableData() // 加载表格数据 QString model = m_Name; if (!available()) { - model = "(" + tr("Unavailable") + ") " + m_Name; + model = "(Unavailable) " + m_Name; } m_TableData.append(model); m_TableData.append(m_Vendor); - m_TableData.append(m_MediaType); + m_TableData.append(translateStr(m_MediaType)); m_TableData.append(m_Size); } @@ -556,15 +637,34 @@ void DeviceStorage::getInfoFromLshw(const QMap &mapInfo) setAttribute(mapInfo, "serial", m_SerialNumber, false); setAttribute(mapInfo, "product", m_Name); setAttribute(mapInfo, "description", m_Description); - setAttribute(mapInfo, "size", m_Size); - // 223GiB (240GB) + QString sizeFromlshw = QString(); + quint64 sizeByte = 0; + setAttribute(mapInfo, "size", sizeFromlshw, true); + // 样式数据 223GiB (240GB) size: 57GiB (61GB) size: 931GiB (1TB) QRegExp re(".*\\((.*)\\)$"); - if (re.exactMatch(m_Size)) - m_Size = re.cap(1); + if (re.exactMatch(sizeFromlshw)) { + sizeFromlshw = re.cap(1); + sizeByte = convertToBytes(sizeFromlshw,DISK_SCALE_1000); + } + if(m_SizeBytes == 0) + m_SizeBytes = sizeByte; + + if(m_Size.isEmpty() ) + m_Size = sizeFromlshw; + + + if (m_SerialNumber.compare("0",Qt::CaseInsensitive) == 0) + m_SerialNumber = ""; } void DeviceStorage::getInfoFromsmartctl(const QMap &mapInfo) { + if (mapInfo.size() < 5) { + if (!mapInfo.isEmpty() && m_Interface.contains("USB", Qt::CaseInsensitive)) { + m_MediaType = "SSD"; + } + return; + } // 固件版本 m_FirmwareVersion = mapInfo["Firmware Version"]; @@ -576,12 +676,9 @@ void DeviceStorage::getInfoFromsmartctl(const QMap &mapInfo) setAttribute(mapInfo, "Rotation Rate", m_RotationRate); // 解决Bug45428,INTEL SSDSA2BW160G3L 这个型号的硬盘通过lsblk获取的rota是1,所以这里需要特殊处理 - if (m_RotationRate == QString("Solid State Device")) - m_MediaType = QObject::tr("SSD"); - - // 按照HW的需求,如果是固态硬盘就不显示转速 - if (m_RotationRate == QString("HW_SSD")) { - m_MediaType = QObject::tr("SSD"); + // 按照H的需求,如果是固态硬盘就不显示转速 + if (m_RotationRate == QString("Solid State Device")) { + m_MediaType = "SSD"; m_RotationRate = ""; } @@ -594,10 +691,21 @@ void DeviceStorage::getInfoFromsmartctl(const QMap &mapInfo) QRegExp reg(".*\\[(.*)\\]$"); if (reg.exactMatch(capacity)) m_Size = reg.cap(1); - } - // 修正数值 - m_Size.replace(QRegExp("\\.0[1-9]"), ".00"); + capacity.replace(",","").replace(" ",""); + QRegExp re("(\\d+)bytes*"); //取值格式如: User Capacity: 1,000,204,886,016 bytes [1.00 TB] Total NVM Capacity: 256,060,514,304 [256 GB] + if (!capacity.contains("bytes", Qt::CaseInsensitive)) { + re.setPattern("(\\d+)"); + } + int pos = re.indexIn(capacity); + if (pos != -1) { + QString byteSize = re.cap(1); + bool isValue = false; + quint64 value = byteSize.trimmed().toULongLong(&isValue); + if(value > 0 && isValue) + m_SizeBytes = value; + } + } // 通过不断适配,当厂商有在固件中提供时,硬盘型号从smartctl中获取更加合理 // 因为hwinfo获取的是主控的型号,而硬盘厂商由于还不能自己生产主控,只能采购别人的主控 @@ -608,5 +716,17 @@ void DeviceStorage::getInfoFromsmartctl(const QMap &mapInfo) if (mapInfo.find("Model Number") != mapInfo.end()) m_Name = mapInfo["Model Number"]; - setAttribute(mapInfo, "Serial Number", m_SerialNumber, true); + if (mapInfo.find("Serial Number") != mapInfo.end()) + setAttribute(mapInfo, "Serial Number", m_SerialNumber, true); + else if (mapInfo.find("Serial number") != mapInfo.end()) { + setAttribute(mapInfo, "Serial number", m_SerialNumber, true); + } + + // 修正数值 + if(Common::boardVendorType() != "KLVV" && Common::boardVendorType() != "KLVU" \ + && Common::boardVendorType() != "PGUW" && Common::boardVendorType() != "PGUV") + m_Size.replace(QRegExp("\\.0[1-9]"), ".00"); + //根据产品PN中的固定前两位 RS来匹配厂商 为Longsys 如产品PN :RSYE3836N-480G RSYE3836N-960G RSYE3836N-1920 RSYE3836N-3840 + if (m_Name.startsWith("RS") && m_Vendor.isEmpty()) + m_Vendor = "Longsys"; } diff --git a/deepin-devicemanager/src/DeviceManager/DeviceStorage.h b/deepin-devicemanager/src/DeviceManager/DeviceStorage.h index 2b96af257..2d89749bd 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceStorage.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceStorage.h @@ -6,6 +6,7 @@ #ifndef DEVICESTORAGE_H #define DEVICESTORAGE_H #include"DeviceInfo.h" +#include "commonfunction.h" /** * @brief The DeviceStorage class @@ -19,6 +20,11 @@ class DeviceStorage: public DeviceBaseInfo public: DeviceStorage(); + /** + * @brief unitConvertByDecimal:将m_Size的byte单位转换为合理单位:GB、TB之类 + */ + void unitConvertByDecimal(); + /** * @brief setInfoFromTomlOneByOne:设置从toml里面获取的信息 * @param mapInfo:由toml获取的信息map @@ -33,13 +39,6 @@ class DeviceStorage: public DeviceBaseInfo */ bool setHwinfoInfo(const QMap &mapInfo); - /** - * @brief setKLUHwinfoInfo:设置由hwinfo --disk命令获取的设备信息,KLU专用 - * @param mapInfo:由hwinfo获取的信息map - * @return 尔值,true:信息设置成功;false:信息设置失败 - */ - bool setKLUHwinfoInfo(const QMap &mapInfo); - /** * @brief setMediaType:设置存储设备的介质类型 * @param name:存储设备逻辑名称 @@ -48,14 +47,6 @@ class DeviceStorage: public DeviceBaseInfo */ bool setMediaType(const QString &name, const QString &value); - /** - * @brief setKLUMediaType:设置存储设备的介质类型,KLU专用 - * @param name:存储设备逻辑名称 - * @param value:类型值0/1 - * @return 布尔值:true-设置成功;false--设置失败 - */ - bool setKLUMediaType(const QString &name, const QString &value); - /** * @brief addInfoFromlshw:将lshw获取的信息与存储设备进行匹配 * @param mapInfo:由lshw获取的信息map @@ -114,6 +105,11 @@ class DeviceStorage: public DeviceBaseInfo */ void appendDisk(DeviceStorage *device); + /** + * @brief getDiskSizeByte:读取磁盘大小,单位Byte + */ + virtual quint64 getDiskSizeByte() { return m_SizeBytes; } + /** * @brief checkDiskSize:规范磁盘大小 */ @@ -156,6 +152,10 @@ class DeviceStorage: public DeviceBaseInfo */ const QString getOverviewInfo() override; + const QString &interface() const; + + const QString &mediaType() const; + protected: /** @@ -197,6 +197,7 @@ class DeviceStorage: public DeviceBaseInfo // QString m_Vendor; // -#include + +#include // 以下这个问题可以避免单例的内存泄露问题 std::atomic DBusDriverInterface::s_Instance; std::mutex DBusDriverInterface::m_mutex; -const QString SERVICE_NAME = "com.deepin.devicemanager"; -const QString DRIVER_SERVICE_PATH = "/com/deepin/drivermanager"; -const QString DRIVER_INTERFACE = "com.deepin.drivermanager"; +const QString SERVICE_NAME = "org.deepin.DeviceControl"; +const QString DRIVER_SERVICE_PATH = "/org/deepin/DeviceControl"; +const QString DRIVER_INTERFACE = "org.deepin.DeviceControl"; void DBusDriverInterface::uninstallDriver(const QString &driver) { @@ -79,6 +80,27 @@ bool DBusDriverInterface::isDebValid(const QString &path) return false; } +bool DBusDriverInterface::backupDeb(const QString &debpath) +{ + QDBusReply reply = mp_Iface->call("backupDeb", debpath); + + return reply.value(); +} + +bool DBusDriverInterface::delDeb(const QString &debname) +{ + QDBusReply reply = mp_Iface->call("delDeb",debname); + + return reply.value(); +} + +bool DBusDriverInterface::aptUpdate() +{ + QDBusReply reply = mp_Iface->call("aptUpdate"); + + return reply.value(); +} + DBusDriverInterface::DBusDriverInterface(QObject *parent) : QObject(parent) , mp_Iface(nullptr) @@ -151,5 +173,9 @@ void DBusDriverInterface::init() connect(mp_Iface, SIGNAL(sigDownloadFinished()), this, SLOT(slotDownloadFinished())); connect(mp_Iface, SIGNAL(sigInstallProgressChanged(qint32)), this, SLOT(slotInstallProgressChanged(qint32))); connect(mp_Iface, SIGNAL(sigInstallProgressFinished(bool, int)), this, SLOT(slotInstallProgressFinished(bool, int))); + connect(mp_Iface, SIGNAL(sigFinished(bool, QString)), this, SIGNAL(installFinished(bool, QString))); + connect(mp_Iface, SIGNAL(sigProgressDetail(int, QString)), this, SIGNAL(installProgressDetail(int, QString))); + connect(mp_Iface, SIGNAL(sigBackupProgressFinished(bool)), this, SIGNAL(backupProgressFinished(bool))); + } } diff --git a/deepin-devicemanager/src/DriverControl/DBusDriverInterface.h b/deepin-devicemanager/src/DriverControl/DBusDriverInterface.h index 2a4b09fa9..bd221158e 100644 --- a/deepin-devicemanager/src/DriverControl/DBusDriverInterface.h +++ b/deepin-devicemanager/src/DriverControl/DBusDriverInterface.h @@ -13,7 +13,7 @@ #include #include #include -#include +#include #include #include @@ -85,6 +85,23 @@ class DBusDriverInterface : public QObject */ bool isDebValid(const QString &path); + /** + * @brief backupDeb 备份驱动,通过dbus调用 com.deepin.devicemanager /com/deepin/drivermanager 里面的 backupDeb 接口 + * @param debpath 需要备份驱动包名目录 比如 /tmp/debname/debname_version.deb debpath= "/tmp/debname/" + */ + bool backupDeb(const QString &debpath); + /** + * @brief delDeb del驱动,通过dbus调用 com.deepin.devicemanager /com/deepin/drivermanager 里面的 delDeb 接口 + * @param debname 需要del驱动包名 比如 /tmp/debname/debname_version.deb debname= debname + */ + bool delDeb(const QString &debname); + + /** + * @brief aptUpdate apt update + * @return + */ + bool aptUpdate(); + signals: void processChange(qint32 value, QString details); void processEnd(bool sucess, QString msg); @@ -92,6 +109,9 @@ class DBusDriverInterface : public QObject void downloadFinished(); void installProgressChanged(int progress); void installProgressFinished(bool bsuccess, int err); + void installFinished(bool, QString); + void installProgressDetail(int, QString); + void backupProgressFinished(bool); protected: explicit DBusDriverInterface(QObject *parent = nullptr); diff --git a/deepin-devicemanager/src/DriverControl/DriverBackupThread.cpp b/deepin-devicemanager/src/DriverControl/DriverBackupThread.cpp new file mode 100644 index 000000000..3ca8f8933 --- /dev/null +++ b/deepin-devicemanager/src/DriverControl/DriverBackupThread.cpp @@ -0,0 +1,141 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "DriverBackupThread.h" +#include "DBusDriverInterface.h" +#include "DDLog.h" + +#include +#include +#include + +// 备份临时路径 +#define DB_PATH_TMP "/tmp/deepin-devicemanager" + +static bool updateFlag = false; + +using namespace DDLog; + +DriverBackupThread::DriverBackupThread(QObject *parent) + : QThread(parent) + , mp_driverInfo(nullptr) +{ + +} + +void DriverBackupThread::run() +{ + if (!m_isStop && mp_driverInfo) { + QString debname = mp_driverInfo->packages(); + QString debversion = mp_driverInfo->debVersion(); + if (debname.isEmpty() && debversion.isEmpty()) { + emit backupProgressFinished(false); + return; + } + + QString backupPath = QString("%1/driver/%2").arg(DB_PATH_TMP).arg(debname); + QDir destdir(backupPath); + if (!destdir.exists()) { + if (!destdir.mkpath(destdir.absolutePath())) + qCInfo(appLog) << "mkpath backupDeb unsucess :" << backupPath; + } + + if (m_isStop) { + emit backupProgressFinished(false); + return; + } + + if(!updateFlag) { + bool ret = DBusDriverInterface::getInstance()->aptUpdate(); + updateFlag = true; + if (!ret) { + emit backupProgressFinished(false); + qCInfo(appLog) << "apt update failed."; + return; + } + } + + QStringList options; + options << "download" << debname + "=" + debversion; + QProcess process; + process.setWorkingDirectory(backupPath); + connect(&process, &QProcess::readyReadStandardOutput, this, [&](){ + QByteArray outArry = process.readAllStandardOutput(); + QList lines = QString(outArry).split('\n', QString::SkipEmptyParts); + for (const QString &line : qAsConst(lines)) { + if (line.contains("无法解析域名")) { + qCInfo (appLog) << "network error: " << line; + m_isStop = true; + emit backupProgressFinished(false); + } + } + }); + + if (m_isStop) { + emit backupProgressFinished(false); + return; + } + process.start("apt", options); + process.waitForFinished(-1); + + if (m_isStop) { + emit backupProgressFinished(false); + return; + } + + bool flag = 0; + if (destdir.exists()) { + //获取当前路径下的所有文件名 + QFileInfoList fileInfoList = destdir.entryInfoList(); + foreach (QFileInfo fileInfo, fileInfoList) { + if (m_isStop) { + emit backupProgressFinished(false); + return; + } + + if (fileInfo.fileName() == "." || fileInfo.fileName() == "..") + continue; + + if (fileInfo.isFile() && fileInfo.fileName().contains(".deb") && fileInfo.fileName().contains(debname)) { + DBusDriverInterface::getInstance()->backupDeb(backupPath); + + while (m_status == Waiting) { + msleep(500); + } + + destdir.remove(fileInfo.fileName()); + if (m_status == Success) { + emit backupProgressFinished(true); + return; + } else if (m_status == Failed) { + emit backupProgressFinished(false); + return; + } + + flag = 1; + } + } + } + if (!flag) { + emit backupProgressFinished(false); + qCDebug(appLog) << __LINE__ << " backup failed."; + } + } +} + +void DriverBackupThread::setBackupDriverInfo(DriverInfo *info) +{ + m_isStop = false; + mp_driverInfo = info; + m_status = Waiting; +} + +void DriverBackupThread::undoBackup() +{ + m_isStop = true; +} + +void DriverBackupThread::setStatus(BackupStatus status){ + m_status = status; +} diff --git a/deepin-devicemanager/src/DriverControl/DriverBackupThread.h b/deepin-devicemanager/src/DriverControl/DriverBackupThread.h new file mode 100644 index 000000000..542b76cbb --- /dev/null +++ b/deepin-devicemanager/src/DriverControl/DriverBackupThread.h @@ -0,0 +1,50 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef DRIVERBACKUPTHREAD_H +#define DRIVERBACKUPTHREAD_H + +#include "MacroDefinition.h" + +#include + + +class DriverBackupThread : public QThread +{ + Q_OBJECT +public: + enum BackupStatus { + Waiting = 0, + Failed, + Success + }; + + explicit DriverBackupThread(QObject *parent = nullptr); + + void run(); + + /** + * @brief setBackupDriverInfo 设置需要备份的驱动信息 + */ + void setBackupDriverInfo(DriverInfo *info); + + /** + * @brief undoBackup 取消备份 + */ + void undoBackup(); + void setStatus(BackupStatus status); + +signals: + void backupProgressChanged(int progress); + void backupProgressFinished(bool bsuccess); + +public slots: + +private: + DriverInfo *mp_driverInfo; + bool m_isStop = true; + BackupStatus m_status = Waiting; +}; + +#endif // DRIVERBACKUPTHREAD_H diff --git a/deepin-devicemanager/src/DriverControl/DriverScanner.cpp b/deepin-devicemanager/src/DriverControl/DriverScanner.cpp index acd70de17..76fc09026 100644 --- a/deepin-devicemanager/src/DriverControl/DriverScanner.cpp +++ b/deepin-devicemanager/src/DriverControl/DriverScanner.cpp @@ -6,7 +6,8 @@ #include "DeviceManager.h" #include "HttpDriverInterface.h" -#include +#include +#include #include @@ -28,6 +29,24 @@ void DriverScanner::run() foreach (DriverInfo *info, m_ListDriverInfo) { if (!m_IsStop) { hdi->getRequest(info); + + // 检测本地安装版本 + if (!info->packages().isEmpty()) { + QProcess process; + process.start("apt", QStringList() << "policy " << info->packages()); + process.waitForFinished(-1); + + QString output = process.readAllStandardOutput(); + QStringList lines = output.split("\n"); + if(lines.size()>=2) { + QRegExp rxlen("(\\d+\\S*)"); + int pos = rxlen.indexIn(lines[1]); + if (pos > -1 && info->version().isEmpty()) { + info->m_Version = rxlen.cap(1); + } + } + } + emit scanInfo(info->name(), 100 / m_ListDriverInfo.size()); sleep(1); } else { @@ -39,6 +58,8 @@ void DriverScanner::run() // 扫描结束 usleep(10000); emit scanFinished(SR_SUCESS); + } else { + emit scanFinished(SR_NETWORD_ERR); } // 测试代码 diff --git a/deepin-devicemanager/src/DriverControl/HttpDriverInterface.cpp b/deepin-devicemanager/src/DriverControl/HttpDriverInterface.cpp index 5f97364df..94c9fcc04 100644 --- a/deepin-devicemanager/src/DriverControl/HttpDriverInterface.cpp +++ b/deepin-devicemanager/src/DriverControl/HttpDriverInterface.cpp @@ -5,6 +5,7 @@ #include "HttpDriverInterface.h" #include "commonfunction.h" #include "commontools.h" +#include "DDLog.h" #include #include @@ -13,6 +14,8 @@ #include +using namespace DDLog; + // 以下这个问题可以避免单例的内存泄露问题 std::atomic HttpDriverInterface::s_Instance; std::mutex HttpDriverInterface::m_mutex; @@ -30,7 +33,6 @@ QString HttpDriverInterface::getRequestJson(QString strUrl) { strJsonDriverInfo = ""; const QUrl newUrl = QUrl::fromUserInput(strUrl); - qInfo() << "strUrl : " << newUrl; QNetworkRequest request(newUrl); QNetworkAccessManager qnam; @@ -51,8 +53,10 @@ QString HttpDriverInterface::getRequestJson(QString strUrl) reply->reset(); reply->deleteLater(); if (error != QNetworkReply::NoError) { + qCInfo(appLog) << "strUrl : " << strUrl << "network error"; return "network error"; } + qCInfo(appLog) << "strUrl : " << strUrl << strJsonDriverInfo; return strJsonDriverInfo; } @@ -69,31 +73,40 @@ void HttpDriverInterface::getRequest(DriverInfo *driverInfo) case DR_Sound: case DR_Gpu: case DR_Network: + case DR_OtherDevice: case DR_WiFi: - strJson = getRequestBoard(driverInfo->vendorId(), driverInfo->modelId()); break; + strJson = getRequestBoard(driverInfo->vendorId(), driverInfo->modelId()); + break; default: break; } - + qCInfo(appLog) << "device name :" << driverInfo->m_Name << "VendorId:" << driverInfo->m_VendorId << "ModelId:" << driverInfo->m_ModelId; if (strJson.contains("network error")) { emit sigRequestFinished(false, "network error"); } else { checkDriverInfo(strJson, driverInfo); - qInfo() << "m_VendorId:" << driverInfo->m_VendorId; - qInfo() << "m_ModelId:" << driverInfo->m_ModelId; - qInfo() << "m_Packages:" << driverInfo->m_Packages; - qInfo() << "m_DebVersion:" << driverInfo->m_DebVersion; - qInfo() << "m_Status:" << driverInfo->m_Status; + qCInfo(appLog) << "m_Packages:" << driverInfo->m_Packages; + qCInfo(appLog) << "m_DebVersion:" << driverInfo->m_DebVersion; + qCInfo(appLog) << "m_Status:" << driverInfo->m_Status; } } QString HttpDriverInterface::getRequestBoard(QString strManufacturer, QString strModels, int iClassP, int iClass) { + if(strManufacturer.isEmpty() || strModels.isEmpty()) { + return QString(); + } QString arch = Common::getArchStore(); QString strUrl = CommonTools::getUrl() + "?arch=" + arch; QString build = getOsBuild(); - if (! build.isEmpty()) - strUrl += "&system=" + build; + if (!build.isEmpty()) { + QString system = build; + + if (build[1] == "1") //专业版通过【产品线类型-产品线版本】方式进行系统构建匹配 + system = QString("%1-%2").arg(build[1]).arg(build[3]); + + strUrl += "&system=" + system; + } if (!strManufacturer.isEmpty()) { strUrl += "&deb_manufacturer=" + strManufacturer; @@ -178,6 +191,12 @@ void HttpDriverInterface::checkDriverInfo(QString strJson, DriverInfo *driverInf index = i; } } + if (index == 0) { + int res = packageInstall(lstDriverInfo[index].strPackages, lstDriverInfo[index].strDebVersion); + if (res > 0) { + res_out = res; + } + } } // 找到最优选择后,设置状态,最新、可安装、可更新 @@ -206,18 +225,27 @@ void HttpDriverInterface::checkDriverInfo(QString strJson, DriverInfo *driverInf int HttpDriverInterface::packageInstall(const QString &package_name, const QString &version) { // 0:没有包 1:版本不一致 2:版本一致 - QProcess process; - QStringList options; - options << "-c" << "apt policy " + package_name; - process.start("/bin/bash", options); - process.waitForFinished(-1); - QStringList infoList = QString(process.readAllStandardOutput()).split("\n"); - + QString outInfo = Common::executeClientCmd("apt", QStringList() << "policy" << package_name, QString(), -1); + if (outInfo.isEmpty()) + return 0; + QStringList infoList = outInfo.split("\n"); if (infoList.size() <= 2 || infoList[1].contains("(") || infoList[1].contains("(")) return 0; if (infoList[1].contains(version)) return 2; - return 1; + //return 1; + + QRegExp rxlen("(\\d+\\S*)"); + int pos = rxlen.indexIn(infoList[1]); + QString curVersion; + if (pos > -1) { + curVersion = rxlen.cap(1); + } + // 若当前已安装版本高于推荐版本,不再更新 + if (curVersion >= version) + return 2; + else + return 1; } QString HttpDriverInterface::getOsBuild() diff --git a/deepin-devicemanager/src/DriverControl/HttpDriverInterface.h b/deepin-devicemanager/src/DriverControl/HttpDriverInterface.h index 0c17d8610..47f89dd8b 100644 --- a/deepin-devicemanager/src/DriverControl/HttpDriverInterface.h +++ b/deepin-devicemanager/src/DriverControl/HttpDriverInterface.h @@ -9,7 +9,7 @@ #include "MacroDefinition.h" #include -#include +#include #include #include diff --git a/deepin-devicemanager/src/EnableControl/DBusEnableInterface.cpp b/deepin-devicemanager/src/EnableControl/DBusEnableInterface.cpp index 974485393..48928de51 100644 --- a/deepin-devicemanager/src/EnableControl/DBusEnableInterface.cpp +++ b/deepin-devicemanager/src/EnableControl/DBusEnableInterface.cpp @@ -7,15 +7,15 @@ #include #include #include -#include +#include // 以下这个问题可以避免单例的内存泄露问题 std::atomic DBusEnableInterface::s_Instance; std::mutex DBusEnableInterface::m_mutex; -const QString SERVICE_NAME = "com.deepin.devicemanager"; -const QString ENABLE_SERVICE_PATH = "/com/deepin/enablemanager"; -const QString ENABLE_SERVICE_INTER = "com.deepin.enablemanager"; +const QString SERVICE_NAME = "org.deepin.DeviceControl"; +const QString ENABLE_SERVICE_PATH = "/org/deepin/DeviceControl"; +const QString ENABLE_SERVICE_INTER = "org.deepin.DeviceControl"; DBusEnableInterface::DBusEnableInterface() : mp_Iface(nullptr) diff --git a/deepin-devicemanager/src/EnableControl/DBusTouchPad.cpp b/deepin-devicemanager/src/EnableControl/DBusTouchPad.cpp index ddd776a3f..66700aac4 100644 --- a/deepin-devicemanager/src/EnableControl/DBusTouchPad.cpp +++ b/deepin-devicemanager/src/EnableControl/DBusTouchPad.cpp @@ -8,12 +8,23 @@ #include #include #include -#include +#include +#include + +#ifdef OS_BUILD_V23 +const QString Service = "org.deepin.dde.InputDevices1"; +const QString Path = "/org/deepin/dde/InputDevice1/TouchPad"; +const QString Interface = "org.deepin.dde.InputDevice1.TouchPad"; +#else const QString Service = "com.deepin.daemon.InputDevices"; +const QString Path = "/com/deepin/daemon/InputDevice/TouchPad"; +const QString Interface = "com.deepin.daemon.InputDevice.TouchPad"; +#endif + DBusTouchPad *DBusTouchPad::sInstance = nullptr; DBusTouchPad::DBusTouchPad() - :QObject(nullptr) -, m_dbusTouchPad(new TouchPad(Service, "/com/deepin/daemon/InputDevice/TouchPad", QDBusConnection::sessionBus(), this)) + : QObject(nullptr) + , m_dbusTouchPad(new QDBusInterface(Service, Path, Interface, QDBusConnection::sessionBus(), this)) { } @@ -27,7 +38,10 @@ DBusTouchPad::~DBusTouchPad() */ bool DBusTouchPad::isExists() { - return m_dbusTouchPad->exist(); + if (m_dbusTouchPad->isValid()) { + return m_dbusTouchPad->property("Exist").toBool(); + } + return false; } /** @@ -36,7 +50,9 @@ bool DBusTouchPad::isExists() */ void DBusTouchPad::setEnable(bool state) { - m_dbusTouchPad->setTPadEnable(state); + if (m_dbusTouchPad->isValid()) { + m_dbusTouchPad->setProperty("TPadEnable", state); + } } /** @@ -45,5 +61,8 @@ void DBusTouchPad::setEnable(bool state) */ bool DBusTouchPad::getEnable() { - return m_dbusTouchPad->tPadEnable(); + if (m_dbusTouchPad->isValid()) { + return m_dbusTouchPad->property("TPadEnable").toBool(); + } + return false; } diff --git a/deepin-devicemanager/src/EnableControl/DBusTouchPad.h b/deepin-devicemanager/src/EnableControl/DBusTouchPad.h index 7933ba3f4..a406bcc18 100644 --- a/deepin-devicemanager/src/EnableControl/DBusTouchPad.h +++ b/deepin-devicemanager/src/EnableControl/DBusTouchPad.h @@ -6,15 +6,9 @@ #ifndef DBUSTOUCHPAD_H #define DBUSTOUCHPAD_H -#include -#include -#include #include -using Mouse = com::deepin::daemon::inputdevice::Mouse; -using TouchPad = com::deepin::daemon::inputdevice::TouchPad; -using InputDevices = com::deepin::daemon::InputDevices; - +class QDBusInterface; class DBusTouchPad : public QObject { Q_OBJECT @@ -46,7 +40,7 @@ class DBusTouchPad : public QObject ~DBusTouchPad(); private: static DBusTouchPad *sInstance; - TouchPad *m_dbusTouchPad; //mouse dbus对象 + QDBusInterface *m_dbusTouchPad; //mouse dbus对象 }; #endif // DBUSTOUCHPAD_H diff --git a/deepin-devicemanager/src/GenerateDevice/CmdTool.cpp b/deepin-devicemanager/src/GenerateDevice/CmdTool.cpp index b68c6de4b..1679baa77 100644 --- a/deepin-devicemanager/src/GenerateDevice/CmdTool.cpp +++ b/deepin-devicemanager/src/GenerateDevice/CmdTool.cpp @@ -6,9 +6,11 @@ #include "CmdTool.h" #include #include +#include "DDLog.h" +#include "commonfunction.h" // Qt库文件 -#include +#include #include #include #include @@ -21,6 +23,8 @@ #include "DBusEnableInterface.h" #include "MacroDefinition.h" +using namespace DDLog; + CmdTool::CmdTool() { @@ -147,43 +151,32 @@ QMap > > &CmdTool::cmdInfo() { return m_cmdInfo; } -/* -使用 sudo dmidecode -t 1 命令查询结果下的关键字:Manufacturer、Product Name、Version、Serial Number,取其值, -文件取名以`oeminfo_`开头,取名格式为《oeminfo_manufacturer_productname_version_serialnumber.toml, -后文简称为:《oeminfo_system.toml》文件名字母全转化为小写,并去掉不可显示特殊字符和空格。并基于此进行匹配。 -文件路径存放在/etc/deepin/hardware -*/ + QString CmdTool::loadOemTomlFileName(const QMap &mapInfo) { - bool tomlFileRead = false; if (mapInfo.size() <= 0) return QString(); QString tomlFileName; - //获取文件名字《oeminfo_manufacturer_productname_version_serialnumber.toml, + //获取文件名字oeminfo_manufacturer_productname_version.toml, if (mapInfo.contains("Manufacturer") - && mapInfo.contains("Manufacturer") && mapInfo.contains("Product Name") - && mapInfo.contains("Version") - && mapInfo.contains("Serial Number")) { + && mapInfo.contains("Version")) { QString Manufacturer = mapInfo["Manufacturer"]; QString productname = mapInfo["Product Name"]; QString version = mapInfo["Version"]; - QString serialnumber = mapInfo["Serial Number"]; if (Manufacturer.contains("N/A")) Manufacturer = ""; if (productname.contains("N/A")) productname = ""; if (version.contains("N/A")) version = ""; - if (serialnumber.contains("N/A")) serialnumber = ""; QRegExp regExp("[-/'~!@#$%^&*(){}:;,.\"\\|~`]"); QString replace = ""; // 这里是将特殊字符换为空字符串,""代表直接去掉 Manufacturer = Manufacturer.replace(regExp, replace); productname = productname.replace(regExp, replace); version = version.replace(regExp, replace); - serialnumber = serialnumber.replace(regExp, replace); - tomlFileName = "oeminfo_" + Manufacturer + "_" + productname + "_" + version + "_" + serialnumber; + tomlFileName = "oeminfo_" + Manufacturer + "_" + productname + "_" + version; tomlFileName = tomlFileName.trimmed().toLower(); tomlFileName = tomlFileName.remove(" ") + ".toml"; return tomlFileName; @@ -198,10 +191,10 @@ bool CmdTool::parseOemTomlInfo(const QString filename) QString info = QString(); if (filename.isEmpty()) { - qInfo() << "Toml File name is null " ; + qCInfo(appLog) << "Toml File name is null " ; return tomlFileRead; } - qInfo() << "Toml File name is: /etc/deepin/hardware/" << filename; + qCInfo(appLog) << "Toml File name is: /etc/deepin/hardware/" << filename; QString curPathFile = "/etc/deepin/hardware/" + filename; if (QFile::exists(curPathFile)) { @@ -212,6 +205,16 @@ bool CmdTool::parseOemTomlInfo(const QString filename) file.close(); } } + QString curPathFile2 = "/usr/share/deepin-devicemanager/" + filename; + if (QFile::exists(curPathFile2) && !tomlFileRead) { + QFile file(curPathFile2); + if (file.open(QIODevice::ReadOnly)) { + info = file.readAll().data(); + tomlFileRead = true; + file.close(); + } + } + if (!tomlFileRead) { curPathFile = "/etc/deepin/hardware/oeminfodebug.toml"; //方便调试,并不开放给用户用 QFile file(curPathFile); @@ -248,8 +251,18 @@ bool CmdTool::parseOemTomlInfo(const QString filename) itemMap.clear(); ValueKeyList.clear(); deviceClassesList.append(regClass.cap(2)); -// } else if (regKeyValue.exactMatch(line)) { //键值对= - } else if (line.contains("=")) { + } else if (line.contains("=") && line.contains("{") && line.contains("}")) { //内联表 + int start = line.indexOf("{") + 1; + int end = line.indexOf("}"); + QString value = line.mid(start, end - start).trimmed(); + wordlst = line.split("="); + if (2 <= wordlst.size()) { + QString key = wordlst[0].remove('"').trimmed(); + itemMap.insert(key, value); + ValueKeyList.append(key); + } + + } else if (line.contains("=")) { //键值对= wordlst = line.split("="); if (2 == wordlst.size()) { @@ -268,6 +281,11 @@ bool CmdTool::parseOemTomlInfo(const QString filename) } } } + + if (!classkey.isEmpty() && itemMap.count()) { + addMapInfo("toml" + classkey, itemMap); + } + return tomlPars; } @@ -313,7 +331,7 @@ void CmdTool::loadLshwInfo(const QString &debugFile) } else if (item.startsWith("multimedia")) { // 音频信息 getMapInfoFromLshw(item, mapInfo); addMapInfo("lshw_multimedia", mapInfo); - } else if (item.startsWith("network")) { // 网卡信息 + } else if (item.startsWith("network") || item.startsWith("communication")) { // 网卡信息 getMapInfoFromLshw(item, mapInfo); addMapInfo("lshw_network", mapInfo); } else if (item.startsWith("usb")) { // USB 设备信息 @@ -532,14 +550,16 @@ void CmdTool::loadHwinfoInfo(const QString &key, const QString &debugfile) // 显示屏信息从前台直接获取 QString deviceInfo; if ("hwinfo_monitor" == key) { - getDeviceInfoFromCmd(deviceInfo, "hwinfo --monitor"); +// getDeviceInfoFromCmd(deviceInfo, "hwinfo --monitor"); + getDeviceInfo(deviceInfo, debugfile); QStringList items = deviceInfo.split("\n\n"); foreach (const QString &item, items) { if (item.isEmpty()) continue; QMap mapInfo; getMapInfoFromHwinfo(item, mapInfo); - addMapInfo(key, mapInfo); + if ("monitor" == mapInfo["Hardware Class"]) + addMapInfo(key, mapInfo); } } else { // 处理其它信息 mouse sound keyboard usb display cdrom disk getDeviceInfo(deviceInfo, debugfile); @@ -565,16 +585,11 @@ void CmdTool::getMulHwinfoInfo(const QString &info) continue; QMap mapInfo; getMapInfoFromHwinfo(item, mapInfo); - if (mapInfo["Hardware Class"] == "sound" || mapInfo["Device"].contains("USB Audio")) { + if (mapInfo["Hardware Class"] == "sound" || (mapInfo["Device"].contains("USB Audio") && mapInfo["Device"].contains("snd-usb-audio"))) { // mapInfo["Device"].contains("USB Audio") 是为了处理未识别的USB声卡 Bug-118773 addMapInfo("hwinfo_sound", mapInfo); } else if (mapInfo["Hardware Class"].contains("network")) { - //if (mapInfo.find("SysFS Device Link") != mapInfo.end() && mapInfo["SysFS Device Link"].contains("/devices/platform")) - bool hasAddress = mapInfo.find("HW Address") != mapInfo.end() && mapInfo.find("Permanent HW Address") != mapInfo.end(); - bool hasPath = mapInfo.find("path") != mapInfo.end(); - if (hasPath || hasAddress) { - addMapInfo("hwinfo_network", mapInfo); - } + addMapInfo("hwinfo_network", mapInfo); } else if ("keyboard" == mapInfo["Hardware Class"]) { addMouseKeyboardInfoMapInfo("hwinfo_keyboard", mapInfo); } else if ("mouse" == mapInfo["Hardware Class"]) { @@ -644,6 +659,12 @@ void CmdTool::loadDmidecodeInfo(const QString &key, const QString &debugfile) if (("dmidecode1" == key) && (mapInfo.size() > 0)) { QString filename = loadOemTomlFileName(mapInfo); parseOemTomlInfo(filename); + + QString tomlFilesName = Common::tomlFilesNameGet(); + if (!tomlFilesName.isEmpty() && tomlFilesName != "tomlFilesName") { + if (parseOemTomlInfo(tomlFilesName)) + qCInfo(appLog) << "config Toml File name is: /usr/share/deepin-devicemanager/" << tomlFilesName ; + } } // 过滤空cpu卡槽信息 @@ -1027,8 +1048,10 @@ void CmdTool::getMapInfoFromLshw(const QString &info, QMap &ma // && words[0].contains("configuration") == false && words[0].contains("resources") == false // 将configuration的内容进行拆分 - if (true == words[0].contains("configuration")) { - QStringList keyValues = words[1].split(" "); + QString keyStr = words[0].trimmed(); + QString valueStr = words[1].trimmed(); + if (keyStr.contains("configuration")) { + QStringList keyValues = valueStr.split(" "); for (QStringList::iterator itKV = keyValues.begin(); itKV != keyValues.end(); ++itKV) { QStringList attr = (*itKV).split("="); @@ -1037,8 +1060,8 @@ void CmdTool::getMapInfoFromLshw(const QString &info, QMap &ma mapInfo.insert(attr[0].trimmed(), attr[1].trimmed()); } - } else if (true == words[0].contains("resources")) { - QStringList keyValues = words[1].split(" "); + } else if (keyStr.contains("resources")) { + QStringList keyValues = valueStr.split(" "); for (QStringList::iterator itKV = keyValues.begin(); itKV != keyValues.end(); ++itKV) { QStringList attr = (*itKV).split(":"); @@ -1051,7 +1074,19 @@ void CmdTool::getMapInfoFromLshw(const QString &info, QMap &ma mapInfo[attr[0].trimmed()] += attr[1].trimmed(); } } else { - mapInfo.insert(words[0].trimmed(), words[1].trimmed()); + // 过滤重复网卡逻辑名称数据 + if (info.startsWith("network")) { + if (mapInfo.contains(keyStr) && keyStr == "logical name") { + if (!valueStr.startsWith("/dev") && mapInfo["logical name"].startsWith("/dev")){ + mapInfo.remove(keyStr); + mapInfo.insert(keyStr, valueStr); + } + } else { + mapInfo.insert(keyStr, valueStr); + } + } else { + mapInfo.insert(keyStr, valueStr); + } } } } @@ -1203,6 +1238,11 @@ void CmdTool::getMapInfoFromHwinfo(const QString &info, QMap & mapInfo[words[0].trimmed()] = words[1].trimmed(); } } + if ((*it).contains("Config Status")) { + //qCInfo(appLog) << " Config Status"<< words[0]< +#include +#include +#include +#include + +CustomGenerator::CustomGenerator(QObject *parent) + : DeviceGenerator(parent) +{ +} + +void CustomGenerator::generatorGpuDevice() +{ + QString cmd = CommonTools::getGpuInfoCommandFromDConfig(); + if (cmd.isEmpty()) { + DeviceGenerator::generatorGpuDevice(); + return; + } + + QStringList arguments; + QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); + QString display = env.value("DISPLAY"); + QString xauthority = env.value("XAUTHORITY"); + if (display.isEmpty() || xauthority.isEmpty()) { + qWarning() << "DISPLAY or XAUTHORITY is not set!"; + } else { + arguments << display << xauthority; + } + + QString tmpGpuInfo; + DBusInterface::getInstance()->getGpuInfoByCustom(cmd, arguments, tmpGpuInfo); + if (tmpGpuInfo.isEmpty()) { + qCritical() << "Failed to get gpu info by commad " << cmd; + return; + } + + QList> gpuInfo; + QStringList mapBlocks = tmpGpuInfo.split("\n\n"); + for (const QString &block : mapBlocks) { + QMap infoMap; + QStringList lines = block.split("\n"); + for (const QString &line : lines) { + int colonIndex = line.indexOf(':'); + if (colonIndex != -1) { + QString key = line.left(colonIndex).trimmed(); + QString value = line.mid(colonIndex + 1).trimmed(); + infoMap.insert(key, value); + } + } + if (!infoMap.isEmpty()) + gpuInfo.push_back(infoMap); + } + + for(int i = 0; i < gpuInfo.count(); ++i) { + DeviceGpu *device = new DeviceGpu(); + device->setCanUninstall(false); + device->setForcedDisplay(true); + device->setGpuInfoByCustom(gpuInfo.at(i)); + DeviceManager::instance()->addGpuDevice(device); + } +} + +void CustomGenerator::generatorMonitorDevice() +{ + QString toDir = "/sys/class/drm"; + QDir toDir_(toDir); + + if (!toDir_.exists()) + return; + + QFileInfoList fileInfoList = toDir_.entryInfoList(QDir::NoFilter, QDir::Name); + foreach(QFileInfo fileInfo, fileInfoList) { + if (fileInfo.fileName() == "." || fileInfo.fileName() == ".." || !fileInfo.fileName().startsWith("card")) + continue; + + if (QFile::exists(fileInfo.filePath() + "/" + "edid")) { + QStringList allEDIDS_all; + allEDIDS_all.append(fileInfo.filePath() + "/" + "edid"); + QString interface = fileInfo.fileName().remove("card0-").remove("card1-").remove("card2-"); + CommonTools::parseEDID(allEDIDS_all, interface); + } + } +} diff --git a/deepin-devicemanager/src/GenerateDevice/CustomGenerator.h b/deepin-devicemanager/src/GenerateDevice/CustomGenerator.h new file mode 100644 index 000000000..9901d2ad4 --- /dev/null +++ b/deepin-devicemanager/src/GenerateDevice/CustomGenerator.h @@ -0,0 +1,27 @@ +// Copyright (C) 2025 Uniontech Software Technology Co.,Ltd. +// SPDX-FileCopyrightText: 2025 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef CUSTOMGENERATOR_H +#define CUSTOMGENERATOR_H + +#include "DeviceGenerator.h" + +class CustomGenerator : public DeviceGenerator +{ +public: + CustomGenerator(QObject *parent = nullptr); + + /** + * @brief generatorGpuDevice:生成显卡信息 + */ + void generatorGpuDevice() override; + + /** + * @brief generatorMonitorDevice:生成显示设备信息 + */ + void generatorMonitorDevice() override; +}; + +#endif // CUSTOMGENERATOR_H diff --git a/deepin-devicemanager/src/GenerateDevice/DBusInterface.cpp b/deepin-devicemanager/src/GenerateDevice/DBusInterface.cpp index b9179ab7a..f08eb45f0 100644 --- a/deepin-devicemanager/src/GenerateDevice/DBusInterface.cpp +++ b/deepin-devicemanager/src/GenerateDevice/DBusInterface.cpp @@ -4,19 +4,22 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "DBusInterface.h" +#include "DDLog.h" #include #include #include -#include +#include + +using namespace DDLog; // 以下这个问题可以避免单例的内存泄露问题 std::atomic DBusInterface::s_Instance; std::mutex DBusInterface::m_mutex; -const QString SERVICE_NAME = "com.deepin.devicemanager"; -const QString DEVICE_SERVICE_PATH = "/com/deepin/devicemanager"; -const QString DEVICE_SERVICE_INTERFACE = "com.deepin.devicemanager"; +const QString SERVICE_NAME = "org.deepin.DeviceInfo"; +const QString DEVICE_SERVICE_PATH = "/org/deepin/DeviceInfo"; +const QString DEVICE_SERVICE_INTERFACE = "org.deepin.DeviceInfo"; DBusInterface::DBusInterface() : mp_Iface(nullptr) @@ -33,7 +36,7 @@ bool DBusInterface::getInfo(const QString &key, QString &info) info = reply.value(); return true; } else { - qInfo() << "Error in getting info from getInfo ......................................."; + qCInfo(appLog) << "Error in getting info from getInfo ......................................."; return false; } } @@ -43,6 +46,18 @@ void DBusInterface::refreshInfo() mp_Iface->asyncCall("refreshInfo"); } +bool DBusInterface::getGpuInfoByCustom(const QString &cmd, const QStringList &arguments, QString &gpuInfo) +{ + QDBusReply replyList = mp_Iface->call("getGpuInfoByCustom", cmd, arguments); + if (replyList.isValid()) { + gpuInfo = replyList.value(); + return true; + } else { + qCritical() << "Error: failed to call dbus to get gpu memery info! "; + return false; + } +} + void DBusInterface::init() { // 1. 连接到dbus diff --git a/deepin-devicemanager/src/GenerateDevice/DBusInterface.h b/deepin-devicemanager/src/GenerateDevice/DBusInterface.h index a154a3377..c6a01898c 100644 --- a/deepin-devicemanager/src/GenerateDevice/DBusInterface.h +++ b/deepin-devicemanager/src/GenerateDevice/DBusInterface.h @@ -47,6 +47,8 @@ class DBusInterface */ void refreshInfo(); + bool getGpuInfoByCustom(const QString &cmd, const QStringList &arguments, QString &gpuInfo); + protected: DBusInterface(); diff --git a/deepin-devicemanager/src/GenerateDevice/DeviceFactory.cpp b/deepin-devicemanager/src/GenerateDevice/DeviceFactory.cpp index bd6713c57..30102c9b9 100644 --- a/deepin-devicemanager/src/GenerateDevice/DeviceFactory.cpp +++ b/deepin-devicemanager/src/GenerateDevice/DeviceFactory.cpp @@ -7,11 +7,8 @@ #include "X86Generator.h" #include "MipsGenerator.h" #include "ArmGenerator.h" -#include "KLUGenerator.h" -#include "PanguGenerator.h" -#include "PanguVGenerator.h" #include "HWGenerator.h" -#include "KLVGenerator.h" +#include "CustomGenerator.h" #include "commonfunction.h" // Qt库文件 @@ -38,11 +35,15 @@ DeviceGenerator *DeviceFactory::getDeviceGenerator() QString type = Common::boardVendorType(); if (!type.isEmpty()) { if (type == "KLVV") - generator = new KLVGenerator(); - else if (type == "PGUV") - generator = new PanguVGenerator(); + generator = new HWGenerator(); + else if (type == "PGUV" || type == "PGUW") + generator = new HWGenerator(); else if (type == "KLVU") - generator = new KLUGenerator(); + generator = new HWGenerator(); + else if (type == "PGUX") + generator = new HWGenerator(); + else if (type == "CustomType") + generator = new CustomGenerator(); else generator = new HWGenerator(); } else diff --git a/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp index 2ba7138cb..e8a585386 100644 --- a/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp +++ b/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp @@ -25,12 +25,17 @@ #include "DeviceManager/DevicePrint.h" #include "DeviceManager/DeviceInput.h" #include "MacroDefinition.h" +#include "DDLog.h" // Dtk头文件 #include // Qt库文件 -#include +#include +#include +#include + +using namespace DDLog; DeviceGenerator::DeviceGenerator(QObject *parent) : QObject(parent) @@ -162,7 +167,7 @@ void DeviceGenerator::generatorCpuDevice() // 获取逻辑数和core数 获取cpu个数 获取logical个数 - int coreNum = 0, logicalNum = 0; + int coreNum = 0, coreNum_dmi = 0, logicalNum = 0, logicalNum_dmi = 0; const QList > &lsCpu_num = DeviceManager::instance()->cmdInfo("lscpu_num"); if (lsCpu_num.size() <= 0) return; @@ -177,7 +182,16 @@ void DeviceGenerator::generatorCpuDevice() for (auto dd4 : dmidecode4) { if (dd4.contains("Socket Designation")) allCPUS.insert(dd4["Socket Designation"]); + if (dd4.contains("Core Count")) + coreNum_dmi += dd4["Core Count"].toInt(); + if (dd4.contains("Thread Count")) + logicalNum_dmi += dd4["Thread Count"].toInt(); } + if(logicalNum_dmi > logicalNum && logicalNum_dmi < 1024) //due to offline policy + logicalNum = logicalNum_dmi; + if(coreNum_dmi > coreNum && coreNum_dmi <= 512) //due to offline policy + coreNum = coreNum_dmi; + DeviceManager::instance()->setCpuNum(allCPUS.isEmpty() ? dmidecode4.size() : allCPUS.size()); // set cpu info @@ -217,6 +231,8 @@ void DeviceGenerator::generatorDiskDevice() getDiskInfoFromLsblk(); getDiskInfoFromSmartCtl(); DeviceManager::instance()->mergeDisk(); + + DeviceManager::instance()->orderDiskByType(); } void DeviceGenerator::generatorGpuDevice() @@ -233,51 +249,105 @@ void DeviceGenerator::generatorMonitorDevice() getMonitorInfoFromHwinfo(); } +bool isValidLogicalName(const QString& logicalName) +{ + if (logicalName.contains("p2p", Qt::CaseInsensitive) || logicalName.isEmpty()) + return false; + + QString addressFilePath = "/sys/class/net/" + logicalName; + QDir dir(addressFilePath); + if (dir.exists()) + return true; + + qCInfo(appLog) << dir << "not exist in /sys/class/net/"; + return false; +} + +bool isValidMAC(const QString& macAddress) +{ + if (macAddress.contains("00:00:00:00:00:00", Qt::CaseInsensitive) || macAddress.contains("ff:ff:ff:ff:ff:ff", Qt::CaseInsensitive) || macAddress.isEmpty()) + return false; + + QRegularExpression macRegex("([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})"); + if (!macRegex.match(macAddress).hasMatch()) + return false; + + return true; +} + void DeviceGenerator::generatorNetworkDevice() { + bool hasWlan =false; QList lstDevice; + // 设置从lshw中获取的信息 + const QList> &lstLshw = DeviceManager::instance()->cmdInfo("lshw_network"); + for (QList >::const_iterator it = lstLshw.begin(); it != lstLshw.end(); ++it) { + if ((*it).find("serial") == (*it).end() || (*it).find("logical name") == (*it).end()) + continue; + + const QString &logicalNameLshw = (*it)["logical name"]; + const QString &macAddressLshw = (*it)["serial"]; + if (!isValidLogicalName(logicalNameLshw)) + continue; + if (!isValidMAC(macAddressLshw)) + continue; + + if (logicalNameLshw.contains("wlan", Qt::CaseInsensitive) && hasWlan) //common sense: one PC only have 1 wlan device + continue; + + DeviceNetwork *device = new DeviceNetwork(); + device->setInfoFromLshw(*it); + lstDevice.append(device); + if (logicalNameLshw.contains("wlan", Qt::CaseInsensitive)) + hasWlan = true; + + } + const QList> &lstHWInfo = DeviceManager::instance()->cmdInfo("hwinfo_network"); for (QList >::const_iterator it = lstHWInfo.begin(); it != lstHWInfo.end(); ++it) { - // Hardware Class 类型为 network interface -// if ("network" == (*it)["Hardware Class"]) { //去掉, 并与service端同步"hwinfo --network"改为 "hwinfo --netcard"获取网卡信息 -// continue; -// } - - // 先判断是否是有效网卡信息 - // 符合两种情况中的一种 1. "HW Address" 和 "Permanent HW Address" 都必须有 2. 有 "unique_id" - if (((*it).find("HW Address") == (*it).end() || (*it).find("Permanent HW Address") == (*it).end()) && ((*it).find("unique_id") == (*it).end())) { - continue; + + // 先判断是否是有效网卡信息 + // 符合两种情况中的一种 1. "HW Address" 和 "Permanent HW Address" 都必须有 2. 有 "unique_id" + if (((*it).find("HW Address") == (*it).end() && (*it).find("Permanent HW Address") == (*it).end()) && ((*it).find("unique_id") == (*it).end())) { + continue; } - // 如果(*it)中包含unique_id属性,则说明是从数据库里面获取的,否则是从hwinfo中获取的 - if ((*it).find("unique_id") == (*it).end()) { - DeviceNetwork *device = new DeviceNetwork(); - device->setInfoFromHwinfo(*it); - lstDevice.append(device); - } else { - DeviceNetwork *device = nullptr; - const QString &unique_id = (*it)["unique_id"]; - for (QList::iterator itNet = lstDevice.begin(); itNet != lstDevice.end(); ++itNet) { - if (!unique_id.isEmpty() && (*itNet)->uniqueID() == unique_id) { - device = (*itNet); + const QString &macHwinfo = (*it)["Permanent HW Address"].isEmpty() ? (*it)["HW Address"] : (*it)["Permanent HW Address"]; + const QString &logicalNameHwinfo = (*it)["Device File"]; + bool hasMatchLogicalName = false; + for (QList::iterator itDevice = lstDevice.begin(); itDevice != lstDevice.end(); ++itDevice) { + const QString &serialNumberLst = (*itDevice)->hwAddress(); + const QString &logicalNameLst = (*itDevice)->logicalName(); + // 如果(*it)中包含unique_id属性,则说明是从数据库里面获取的,否则是从hwinfo中获取的 + if ((*it).find("unique_id") != (*it).end()) { + const QString &unique_id = (*it)["unique_id"]; + if (!unique_id.isEmpty() && (*itDevice)->uniqueID() == unique_id) { + (*itDevice)->setEnableValue(false); } - } - if (device) { - device->setEnableValue(false); + + } else if (macHwinfo == serialNumberLst || logicalNameHwinfo == logicalNameLst) { + (*itDevice)->setInfoFromHwinfo(*it); + hasMatchLogicalName = true; + } else { + (*itDevice)->setCanUninstall(false); + (*itDevice)->setForcedDisplay(true); } } - } - - // 设置从lshw中获取的信息 - const QList> &lstLshw = DeviceManager::instance()->cmdInfo("lshw_network"); - for (QList >::const_iterator it = lstLshw.begin(); it != lstLshw.end(); ++it) { - if ((*it).find("serial") == (*it).end()) - continue; - const QString &serialNumber = (*it)["serial"]; - for (QList::iterator itDevice = lstDevice.begin(); itDevice != lstDevice.end(); ++itDevice) { - if (!serialNumber.isEmpty() && (*itDevice)->uniqueID() == serialNumber) { - (*itDevice)->setInfoFromLshw(*it); - break; + //first check it's valid, if LogicalName not exist but valid please add it . + if (!hasMatchLogicalName && isValidMAC(macHwinfo) && isValidLogicalName(logicalNameHwinfo)) { + if (!logicalNameHwinfo.contains("wlan", Qt::CaseInsensitive)) {//add wired net + DeviceNetwork *device = new DeviceNetwork(); + device->setInfoFromHwinfo(*it); + lstDevice.append(device); + hasMatchLogicalName = true; + } else { //add wireless net + if (!hasWlan) { //common sense: one PC only have 1 wlan device + DeviceNetwork *device = new DeviceNetwork(); + device->setInfoFromHwinfo(*it); + lstDevice.append(device); + hasMatchLogicalName = true; + hasWlan = true; + } } } } @@ -475,7 +545,9 @@ void DeviceGenerator::getMemoryInfoFromLshw() QList >::const_iterator it = lstMemory.begin(); for (; it != lstMemory.end(); ++it) { - + if ((*it)["description"].contains("System Memory") && (*it).find("vendor") == (*it).end()) { + continue; + } // bug47194 size属性包含MiB // 目前处理内存信息时,bank下一定要显示内存信息,否则无法生成内存 if (!(*it)["size"].contains("GiB") && !(*it)["size"].contains("MiB")) @@ -565,9 +637,9 @@ void DeviceGenerator::getDiskInfoFromSmartCtl() const QList> &lstMap = DeviceManager::instance()->cmdInfo("smart"); QList >::const_iterator it = lstMap.begin(); for (; it != lstMap.end(); ++it) { - if ((*it).size() < 5) + // 剔除未识别的磁盘 + if (!(*it).contains("ln")) continue; - DeviceManager::instance()->setStorageInfoFromSmartctl((*it)["ln"], *it); } } @@ -671,17 +743,21 @@ void DeviceGenerator::getAudioInfoFromHwinfo() QString path = pciPath(*it); DeviceAudio *device = dynamic_cast(DeviceManager::instance()->getAudioDevice(path)); - if (device) { + if (device && (*it).size() != 5) { device->setEnableValue(false); continue; } device = new DeviceAudio(); device->setInfoFromHwinfo(*it); + if ((*it).size() == 5 && (*it).find("unique_id") != (*it).end()) { + device->setEnableValue(false); + device->setUniqueID((*it)["unique_id"]); + } DeviceManager::instance()->addAudioDevice(device); addBusIDFromHwinfo((*it)["SysFS BusID"]); } - DeviceManager::instance()->deleteDisableDuplicate_AudioDevice(); +// DeviceManager::instance()->deleteDisableDuplicate_AudioDevice(); } void DeviceGenerator::getAudioInfoFrom_sysFS() @@ -780,7 +856,7 @@ void DeviceGenerator::getBlueToothInfoFromHwinfo() if ((*it)["Hardware Class"] == "hub" || (*it)["Hardware Class"] == "mouse" || (*it)["Hardware Class"] == "keyboard") continue; - if ((*it)["Model"].contains("bluetooth", Qt::CaseInsensitive) || (*it)["Hardware Class"] == "bluetooth" || (*it)["Driver"] == "btusb" || (*it)["Device"] == "BCM20702A0") { + if ((*it)["Model"].contains("bluetooth", Qt::CaseInsensitive) || (*it)["Hardware Class"] == "bluetooth" || (*it)["Driver"] == "btusb" || (*it)["Device"] == "BCM20702A0" || (*it)["Device"] == "SCM2625 BT 5.2 network adapter") { // 判断重复设备数据 QString unique_id = uniqueID(*it); diff --git a/deepin-devicemanager/src/GenerateDevice/GenerateDevicePool.cpp b/deepin-devicemanager/src/GenerateDevice/GenerateDevicePool.cpp index bc0a7b6af..f82e7f422 100644 --- a/deepin-devicemanager/src/GenerateDevice/GenerateDevicePool.cpp +++ b/deepin-devicemanager/src/GenerateDevice/GenerateDevicePool.cpp @@ -5,7 +5,7 @@ #include "GenerateDevicePool.h" #include -#include +#include #include "DeviceGenerator.h" #include "DeviceFactory.h" diff --git a/deepin-devicemanager/src/GenerateDevice/GetInfoPool.cpp b/deepin-devicemanager/src/GenerateDevice/GetInfoPool.cpp index 2e48d5b58..1204c0131 100644 --- a/deepin-devicemanager/src/GenerateDevice/GetInfoPool.cpp +++ b/deepin-devicemanager/src/GenerateDevice/GetInfoPool.cpp @@ -5,7 +5,7 @@ #include "GetInfoPool.h" #include -#include +#include #include "CmdTool.h" #include "DeviceManager.h" diff --git a/deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp index 330cd51a8..088f72f72 100644 --- a/deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp +++ b/deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp @@ -4,10 +4,17 @@ // 项目自身文件 #include "HWGenerator.h" +#include "EDIDParser.h" +#include "commonfunction.h" +#include "DDLog.h" // Qt库文件 -#include +#include #include +#include +#include +#include +#include // 其它头文件 #include "DeviceManager/DeviceManager.h" @@ -23,9 +30,12 @@ #include "DeviceManager/DeviceNetwork.h" #include "DeviceManager/DeviceMemory.h" +static QString boardVendorType; +using namespace DDLog; + HWGenerator::HWGenerator() { - + boardVendorType = Common::boardVendorType(); } void HWGenerator::generatorComputerDevice() @@ -88,12 +98,73 @@ void HWGenerator::generatorAudioDevice() getAudioInfoFromCatAudio(); } +QList > readFileSysWifi() +{ + QList > lstWifiInfo; + QString wifiDevicesInfoPath("/sys/hisys/wal/wifi_devices_info"); + QFile file(wifiDevicesInfoPath); + if (file.open(QIODevice::ReadOnly)) { + QMap wifiInfo; + QString allStr = file.readAll(); + file.close(); + + // 解析数据 + QStringList items = allStr.split("\n"); + foreach (const QString &item, items) { + if (item.isEmpty()) + continue; + + QStringList strList = item.split(':', QString::SkipEmptyParts); + if (strList.size() == 2) + wifiInfo[strList[0] ] = strList[1]; + } + + if (!wifiInfo.isEmpty()) + lstWifiInfo.append(wifiInfo); + } + return lstWifiInfo; +} void HWGenerator::generatorBluetoothDevice() { getBluetoothInfoFromHciconfig(); getBlueToothInfoFromHwinfo(); getBluetoothInfoFromLshw(); - getBluetoothInfoFromCatWifiInfo(); + + QList > lstWifiInfo = readFileSysWifi(); + if (lstWifiInfo.size() == 0) { + return; + } + QList >::const_iterator it = lstWifiInfo.begin(); + QMap tempMap; + for (; it != lstWifiInfo.end(); ++it) { + if ((*it).size() < 3) { + continue; + } + + // KLU的问题特殊处理 + foreach (const QString &key, (*it).keys()) { + tempMap.insert(key, (*it)[key]); + } + + // cat /sys/hisys/wal/wifi_devices_info 获取结果为 HI103 + if (tempMap["Chip Type"].contains(Common::specialHString(), Qt::CaseInsensitive)) { + tempMap["Chip Type"] = tempMap["Chip Type"].remove(Common::specialHString()).trimmed(); + } + + // 按照华为的需求,设置蓝牙制造商和类型 + tempMap["Vendor"] = Common::specialHString(); + tempMap["Type"] = "Bluetooth Device"; + tempMap["Name"] = tempMap["Chip Type"]; + } + + QList lst = DeviceManager::instance()->convertDeviceList(DT_Bluetoorh); + for (int i = 0; i < lst.size(); i++) { + DeviceBaseInfo *device = lst[i]; + QString bus = DeviceManager::instance()->tomlDeviceReadKeyValue(DT_Bluetoorh, device, "Bus"); //内置:UART 外接USB:USB + if (bus.contains("UART",Qt::CaseInsensitive)) { + DeviceManager::instance()->tomlDeviceMapSet(DT_Bluetoorh, device,tempMap); + } + } } void HWGenerator::generatorGpuDevice() @@ -111,8 +182,14 @@ void HWGenerator::generatorGpuDevice() QStringList items = deviceInfo.split("\n"); QMap mapInfo; - if (items.size() > 0) { - mapInfo.insert("Name", items[0].trimmed()); + for (QString itemStr : items) { + if (itemStr.contains(":")) + continue; + QString curItemStr = itemStr.trimmed(); + if (!curItemStr.isEmpty()) { + mapInfo.insert("Name", curItemStr); + break; + } } for (int i = 1; i < items.size(); ++i) { @@ -131,96 +208,55 @@ void HWGenerator::generatorGpuDevice() DeviceManager::instance()->addGpuDevice(device); } + void HWGenerator::generatorNetworkDevice() { - QList lstDevice; - const QList> &lstHWInfo = DeviceManager::instance()->cmdInfo("hwinfo_network"); - for (QList >::const_iterator it = lstHWInfo.begin(); it != lstHWInfo.end(); ++it) { - // Hardware Class 类型为 network interface - if ("network" == (*it)["Hardware Class"]) { + DeviceGenerator::generatorNetworkDevice(); + + QList > lstWifiInfo = readFileSysWifi(); + if (lstWifiInfo.size() == 0) { + return; + } + + QList >::const_iterator it = lstWifiInfo.begin(); + for (; it != lstWifiInfo.end(); ++it) { + if ((*it).size() < 3) { continue; } - // 先判断是否是有效网卡信息 - // 符合两种情况中的一种 1. "HW Address" 和 "Permanent HW Address" 都必须有 2. 有 "unique_id" - if (((*it).find("HW Address") == (*it).end() || (*it).find("Permanent HW Address") == (*it).end()) && ((*it).find("unique_id") == (*it).end())) { - continue; + // cat /sys/hisys/wal/wifi_devices_info的问题特殊处理 获取结果为 HI103 + QMap tempMap; + foreach (const QString &key, (*it).keys()) { + tempMap.insert(key, (*it)[key]); } - // 如果(*it)中包含unique_id属性,则说明是从数据库里面获取的,否则是从hwinfo中获取的 - if ((*it).find("unique_id") == (*it).end()) { - DeviceNetwork *device = new DeviceNetwork(); - device->setInfoFromHwinfo(*it); - if (!device->available()) { - device->setCanEnale(false); - device->setCanUninstall(false); - device->setForcedDisplay(true); - } - lstDevice.append(device); - } else { - DeviceNetwork *device = nullptr; - const QString &unique_id = (*it)["unique_id"]; - for (QList::iterator itNet = lstDevice.begin(); itNet != lstDevice.end(); ++itNet) { - if (!unique_id.isEmpty() && (*itNet)->uniqueID() == unique_id) { - device = (*itNet); - } - } - if (device) { - device->setEnableValue(false); - } + tempMap["Name"] = tempMap["Chip Type"]; + if (tempMap["Chip Type"].contains(Common::specialHString(), Qt::CaseInsensitive)) { + tempMap["Name"] = tempMap["Chip Type"].remove(Common::specialHString()).trimmed(); } - } - // 设置从lshw中获取的信息 - const QList> &lstLshw = DeviceManager::instance()->cmdInfo("lshw_network"); - for (QList >::const_iterator it = lstLshw.begin(); it != lstLshw.end(); ++it) { - if ((*it).find("serial") == (*it).end()) - continue; - const QString &serialNumber = (*it)["serial"]; - for (QList::iterator itDevice = lstDevice.begin(); itDevice != lstDevice.end(); ++itDevice) { - if (!serialNumber.isEmpty() && (*itDevice)->uniqueID() == serialNumber) { - (*itDevice)->setInfoFromLshw(*it); - break; - } + if (tempMap["NIC Type"].contains("WLAN", Qt::CaseInsensitive)) { } - } - foreach (DeviceNetwork *device, lstDevice) { - DeviceManager::instance()->addNetworkDevice(device); + // 按照华为的需求,设置蓝牙制造商和类型 + tempMap["Vendor"] = "HISILICON"; + tempMap["Type"] = "Wireless network"; + + QList lst = DeviceManager::instance()->convertDeviceList(DT_Network); + for (int i = 0; i < lst.size(); i++) { + DeviceBaseInfo *device = lst[i]; + QString logicalName = DeviceManager::instance()->tomlDeviceReadKeyValue(DT_Network, device, "Logical Name"); + if (logicalName.contains("wlan", Qt::CaseInsensitive)) { + DeviceManager::instance()->tomlDeviceMapSet(DT_Network, device,tempMap); + } + } } } void HWGenerator::generatorDiskDevice() { DeviceGenerator::generatorDiskDevice(); - DeviceManager::instance()->checkDiskSize(); -} - -void HWGenerator::getAudioInfoFromCatAudio() -{ - const QList> lstAudio = DeviceManager::instance()->cmdInfo("cat_audio"); - QList >::const_iterator it = lstAudio.begin(); - for (; it != lstAudio.end(); ++it) { - if ((*it).size() < 2) - continue; - - QMap tempMap = *it; - if (tempMap["Name"].contains("da_combine_v5", Qt::CaseInsensitive)) { - tempMap["Name"] = "Hi6405"; - tempMap["Model"] = "Hi6405"; - } - DeviceAudio *device = new DeviceAudio(); - device->setCanEnale(false); - device->setCanUninstall(false); - device->setForcedDisplay(true); - device->setInfoFromCatAudio(tempMap); - DeviceManager::instance()->addAudioDevice(device); - } -} - -void HWGenerator::getDiskInfoFromLshw() -{ QString bootdevicePath("/proc/bootdevice/product_name"); QString modelStr = ""; QFile file(bootdevicePath); @@ -228,51 +264,77 @@ void HWGenerator::getDiskInfoFromLshw() modelStr = file.readLine().simplified(); file.close(); } + if (modelStr.isEmpty()) + return; - const QList> lstDisk = DeviceManager::instance()->cmdInfo("lshw_disk"); - QList >::const_iterator dIt = lstDisk.begin(); - for (; dIt != lstDisk.end(); ++dIt) { - if ((*dIt).size() < 2) - continue; + QList lst = DeviceManager::instance()->convertDeviceList(DT_Storage); + for (int i = 0; i < lst.size(); i++) { + DeviceBaseInfo *device = lst[i]; + QString name = DeviceManager::instance()->tomlDeviceReadKeyValue(DT_Storage, device, "Name"); + QString vendor = DeviceManager::instance()->tomlDeviceReadKeyValue(DT_Storage, device, "Vendor"); + if (name == modelStr) { + QMap tempMap; + if (vendor.contains("WDC",Qt::CaseInsensitive)) + tempMap["Vendor"] = "nouse"; + if (name.contains("SDINFDO4-256G",Qt::CaseInsensitive)) + tempMap["Name"] = "nouse"; + + if (Common::specialComType == 2) { + tempMap["Interface"] = "UFS 3.1"; + } - // KLU的问题特殊处理 - QMap tempMap; - foreach (const QString &key, (*dIt).keys()) { - tempMap.insert(key, (*dIt)[key]); - } + // 读取interface版本 + QProcess process; + process.start("cat /sys/devices/platform/f8200000.ufs/host0/scsi_host/host0/wb_en"); + process.waitForFinished(-1); + int exitCode = process.exitCode(); + if (exitCode != 127 && exitCode != 126) { + QString deviceInfo = process.readAllStandardOutput(); + if (deviceInfo.trimmed() == "true") { + process.start("cat /sys/block/sdd/device/spec_version"); + process.waitForFinished(-1); + exitCode = process.exitCode(); + if (exitCode != 127 && exitCode != 126) { + deviceInfo = process.readAllStandardOutput(); + if (deviceInfo.trimmed() == "310") { + tempMap["interface"] = "UFS 3.1"; + } else if (deviceInfo.trimmed() == "300") + tempMap["interface"] = "UFS 3.0"; + } + } + } -// qInfo() << tempMap["product"] << " ***** " << modelStr << " " << (tempMap["product"] == modelStr); - // HW写死 - if (tempMap["product"] == modelStr) { - // 应HW的要求,将描述固定为 Universal Flash Storage - tempMap["description"] = "Universal Flash Storage"; - // 应HW的要求,添加interface UFS 3.0 - tempMap["interface"] = "UFS 3.0"; + DeviceManager::instance()->tomlDeviceMapSet(DT_Storage, device,tempMap); } - - DeviceManager::instance()->addLshwinfoIntoStorageDevice(tempMap); } + + DeviceManager::instance()->checkDiskSize(); //place in the end } -void HWGenerator::getDiskInfoFromSmartCtl() +void HWGenerator::getAudioInfoFromCatAudio() { - const QList> lstMap = DeviceManager::instance()->cmdInfo("smart"); - QList >::const_iterator it = lstMap.begin(); - for (; it != lstMap.end(); ++it) { - if ((*it).size() < 5) + const QList> lstAudio = DeviceManager::instance()->cmdInfo("cat_audio"); + QList >::const_iterator it = lstAudio.begin(); + for (; it != lstAudio.end(); ++it) { + if ((*it).size() < 2) continue; - // KLU的问题特殊处理 - QMap tempMap; - foreach (const QString &key, (*it).keys()) { - tempMap.insert(key, (*it)[key]); + QMap tempMap = *it; + if (tempMap["Name"].contains("da_combine_v5", Qt::CaseInsensitive)) { + tempMap["Name"] = "OnBoard Audio"; + tempMap["Model"] = "OnBoard Audio"; } - // 按照HW的需求,如果是固态硬盘就不显示转速 - if (tempMap["Rotation Rate"] == "Solid State Device") - tempMap["Rotation Rate"] = "HW_SSD"; + if (tempMap.contains("Vendor")) { + tempMap["Vendor"]= Common::specialHString(); + } - DeviceManager::instance()->setStorageInfoFromSmartctl(tempMap["ln"], tempMap); + DeviceAudio *device = new DeviceAudio(); + device->setCanEnale(false); + device->setCanUninstall(false); + device->setForcedDisplay(true); + device->setInfoFromCatAudio(tempMap); + DeviceManager::instance()->addAudioDevice(device); } } @@ -286,6 +348,7 @@ void HWGenerator::getBluetoothInfoFromHciconfig() } DeviceBluetooth *device = new DeviceBluetooth(); device->setCanEnale(false); + device->setForcedDisplay(true); device->setInfoFromHciconfig(*it); DeviceManager::instance()->addBluetoothDevice(device); } @@ -321,60 +384,6 @@ void HWGenerator::getBluetoothInfoFromLshw() } } -void HWGenerator::getBluetoothInfoFromCatWifiInfo() -{ - QList > lstWifiInfo; - QString wifiDevicesInfoPath("/sys/hisys/wal/wifi_devices_info"); - QFile file(wifiDevicesInfoPath); - if (file.open(QIODevice::ReadOnly)) { - QMap wifiInfo; - QString allStr = file.readAll(); - file.close(); - - // 解析数据 - QStringList items = allStr.split("\n"); - foreach (const QString &item, items) { - if (item.isEmpty()) - continue; - - QStringList strList = item.split(':', QString::SkipEmptyParts); - if (strList.size() == 2) - wifiInfo[strList[0] ] = strList[1]; - } - - if (!wifiInfo.isEmpty()) - lstWifiInfo.append(wifiInfo); - } - - if (lstWifiInfo.size() == 0) { - return; - } - QList >::const_iterator it = lstWifiInfo.begin(); - - for (; it != lstWifiInfo.end(); ++it) { - if ((*it).size() < 3) { - continue; - } - - // KLU的问题特殊处理 - QMap tempMap; - foreach (const QString &key, (*it).keys()) { - tempMap.insert(key, (*it)[key]); - } - - // cat /sys/hisys/wal/wifi_devices_info 获取结果为 HUAWEI HI103 - if (tempMap["Chip Type"].contains("HUAWEI", Qt::CaseInsensitive)) { - tempMap["Chip Type"] = tempMap["Chip Type"].remove("HUAWEI").trimmed(); - } - - // 按照华为的需求,设置蓝牙制造商和类型 - tempMap["Vendor"] = "HISILICON"; - tempMap["Type"] = "Bluetooth Device"; - - DeviceManager::instance()->setBluetoothInfoFromWifiInfo(tempMap); - } -} - void HWGenerator::getMemoryInfoFromLshw() { // 从lshw中获取内存信息 @@ -402,3 +411,100 @@ void HWGenerator::getMemoryInfoFromLshw() DeviceManager::instance()->addMemoryDevice(device); } } + +static void parseEDID(QStringList allEDIDS,QString input) +{ + for (auto edid:allEDIDS) { + QProcess process; + process.start(QString("hexdump %1").arg(edid)); + process.waitForFinished(-1); + + QString deviceInfo = process.readAllStandardOutput(); + if (deviceInfo.isEmpty()) + continue; + + QString edidStr; + QStringList lines = deviceInfo.split("\n"); + for (auto line:lines) { + QStringList words = line.trimmed().split(" "); + if (words.size() != 9) + continue; + + words.removeAt(0); + QString l = words.join(""); + l.append("\n"); + edidStr.append(l); + } + + lines = edidStr.split("\n"); + if (lines.size() > 3){ + EDIDParser edidParser; + QString errorMsg; + edidParser.setEdid(edidStr,errorMsg,"\n", false); + + QMap mapInfo; + mapInfo.insert("Vendor",edidParser.vendor()); + mapInfo.insert("Model",edidParser.model()); + //mapInfo.insert("Date",edidParser.releaseDate()); + mapInfo.insert("Size",edidParser.screenSize()); + mapInfo.insert("Display Input",input); + + DeviceMonitor *device = new DeviceMonitor(); + device->setInfoFromEdid(mapInfo); + DeviceManager::instance()->addMonitor(device); + } + } +} + +void HWGenerator::generatorMonitorDevice() +{ + QString toDir = "/sys/class/drm"; + QDir toDir_(toDir); + + if (!toDir_.exists()) + return; + + QFileInfoList fileInfoList = toDir_.entryInfoList(QDir::NoFilter, QDir::Name); + foreach(QFileInfo fileInfo, fileInfoList) { + if (fileInfo.fileName() == "." || fileInfo.fileName() == ".." || !fileInfo.fileName().startsWith("card")) + continue; + + if (QFile::exists(fileInfo.filePath() + "/" + "edid")) { + QStringList allEDIDS_all; + allEDIDS_all.append(fileInfo.filePath() + "/" + "edid"); + QString interface = fileInfo.fileName().remove("card0-").remove("card1-").remove("card2-"); + parseEDID(allEDIDS_all,interface); + } + } +} + +void HWGenerator::generatorPowerDevice() +{ + DeviceGenerator::generatorPowerDevice(); +} + +void HWGenerator::generatorKeyboardDevice() +{ + DeviceGenerator::generatorKeyboardDevice(); +} + +void HWGenerator::generatorMemoryDevice() +{ + DeviceGenerator::generatorMemoryDevice(); +} + +void HWGenerator::generatorCameraDevice() +{ + DeviceGenerator::generatorCameraDevice(); + + QList lst = DeviceManager::instance()->convertDeviceList(DT_Image); + for (int i = 0; i < lst.size(); i++) { + DeviceBaseInfo *device = lst[i]; + QString vendor = DeviceManager::instance()->tomlDeviceReadKeyValue(DT_Image, device, "Vendor"); + if (vendor.contains("0000058020",Qt::CaseInsensitive)) { + QMap tempMap; + tempMap["Vendor"] = "nouse"; + DeviceManager::instance()->tomlDeviceMapSet(DT_Image, device,tempMap); + } + } +} diff --git a/deepin-devicemanager/src/GenerateDevice/HWGenerator.h b/deepin-devicemanager/src/GenerateDevice/HWGenerator.h index 8a3fe7ac8..45276e13b 100644 --- a/deepin-devicemanager/src/GenerateDevice/HWGenerator.h +++ b/deepin-devicemanager/src/GenerateDevice/HWGenerator.h @@ -54,21 +54,36 @@ class HWGenerator : public DeviceGenerator */ virtual void generatorDiskDevice() override; -protected: /** - * @brief getAudioInfoFromCatInput:从cat /proc/bus/input/devices获取音频设备信息 + * @brief generatorMonitorDevice:生成显示设备信息 */ - virtual void getAudioInfoFromCatAudio() ; + virtual void generatorMonitorDevice() override; + + /** + * @brief generatorPowerDevice:生成电池设备 + */ + virtual void generatorPowerDevice() override; + + /** + * @brief generatorKeyboardDevice:生成键盘设备 + */ + virtual void generatorKeyboardDevice() override; /** - * @brief getDiskInfoFromLshw:从lshw获取存储设备信息 + * @brief generatorMemoryDevice:生成内存设备 */ - virtual void getDiskInfoFromLshw() override; + virtual void generatorMemoryDevice() override; /** - * @brief getDiskInfoFromSmartCtl:从smartctl获取存储设备信息 + * @brief generatorCameraDevice:生成图像设备 */ - virtual void getDiskInfoFromSmartCtl() override; + virtual void generatorCameraDevice() override; + +protected: + /** + * @brief getAudioInfoFromCatInput:从cat /proc/bus/input/devices获取音频设备信息 + */ + virtual void getAudioInfoFromCatAudio() ; /** * @brief getBluetoothInfoFromHciconfig:hciconfig获取蓝牙信息 @@ -85,13 +100,12 @@ class HWGenerator : public DeviceGenerator */ virtual void getBluetoothInfoFromLshw() override; - /**@brief:generator bluetooth info*/ - virtual void getBluetoothInfoFromCatWifiInfo(); - /** * @brief getMemoryInfoFromLshw:从lshw获取内存信息 */ virtual void getMemoryInfoFromLshw() override; + + }; #endif // PANGUVGENERATOR_H diff --git a/deepin-devicemanager/src/GenerateDevice/KLUGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/KLUGenerator.cpp deleted file mode 100644 index c6a34f092..000000000 --- a/deepin-devicemanager/src/GenerateDevice/KLUGenerator.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -// 项目自身文件 -#include "KLUGenerator.h" - -// Qt库文件 -#include -#include - -// 其它头文件 -#include "DeviceManager/DeviceManager.h" -#include "DeviceManager/DeviceGpu.h" -#include "DeviceManager/DeviceMonitor.h" -#include "DeviceManager/DeviceOthers.h" -#include "DeviceManager/DeviceStorage.h" -#include "DeviceManager/DeviceAudio.h" -#include "DeviceManager/DeviceComputer.h" -#include "DeviceManager/DevicePower.h" -#include "DeviceManager/DeviceInput.h" - -KLUGenerator::KLUGenerator() -{ - -} - -void KLUGenerator::getDiskInfoFromLshw() -{ - QString bootdevicePath("/proc/bootdevice/product_name"); - QString modelStr = ""; - QFile file(bootdevicePath); - if (file.open(QIODevice::ReadOnly)) { - modelStr = file.readLine().simplified(); - file.close(); - } - - const QList> lstDisk = DeviceManager::instance()->cmdInfo("lshw_disk"); - QList >::const_iterator dIt = lstDisk.begin(); - for (; dIt != lstDisk.end(); ++dIt) { - if ((*dIt).size() < 2) - continue; - - // KLU的问题特殊处理 - QMap tempMap; - foreach (const QString &key, (*dIt).keys()) { - tempMap.insert(key, (*dIt)[key]); - } - -// qInfo() << tempMap["product"] << " ***** " << modelStr << " " << (tempMap["product"] == modelStr); - // HW写死 - if (tempMap["product"] == modelStr) { - // 应HW的要求,将描述固定为 Universal Flash Storage - tempMap["description"] = "Universal Flash Storage"; - // 应HW的要求,添加interface UFS 3.0 - tempMap["interface"] = "UFS 3.0"; - - // 读取interface版本 - QProcess process; - process.start("cat /sys/devices/platform/f8200000.ufs/host0/scsi_host/host0/wb_en"); - process.waitForFinished(-1); - int exitCode = process.exitCode(); - if (exitCode != 127 && exitCode != 126) { - QString deviceInfo = process.readAllStandardOutput(); - if (deviceInfo.trimmed() == "true") { - process.start("cat /sys/block/sdd/device/spec_version"); - process.waitForFinished(-1); - exitCode = process.exitCode(); - if (exitCode != 127 && exitCode != 126) { - deviceInfo = process.readAllStandardOutput(); - if (deviceInfo.trimmed() == "310") { - tempMap["interface"] = "UFS 3.1"; - } - } - } - } - } - - DeviceManager::instance()->addLshwinfoIntoStorageDevice(tempMap); - } -} diff --git a/deepin-devicemanager/src/GenerateDevice/KLUGenerator.h b/deepin-devicemanager/src/GenerateDevice/KLUGenerator.h deleted file mode 100644 index 560308df7..000000000 --- a/deepin-devicemanager/src/GenerateDevice/KLUGenerator.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef KLUGENERATOR_H -#define KLUGENERATOR_H - -#include"HWGenerator.h" - -/** - * @brief The KLUGenerator class - * 将获取的设备信息生成设备对象,KLU笔记本下的生成器 - */ -class KLUGenerator : public HWGenerator -{ -public: - KLUGenerator(); - -protected: - - /** - * @brief getDiskInfoFromLshw:从lshw获取存储设备信息 - */ - virtual void getDiskInfoFromLshw() override; -}; - -#endif // KLUGENERATOR_H diff --git a/deepin-devicemanager/src/GenerateDevice/KLVGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/KLVGenerator.cpp deleted file mode 100644 index f276e5481..000000000 --- a/deepin-devicemanager/src/GenerateDevice/KLVGenerator.cpp +++ /dev/null @@ -1,227 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -// 项目自身文件 -#include "KLVGenerator.h" - -// Qt库文件 -#include -#include - -// 其它头文件 -#include "DeviceManager/DeviceManager.h" -#include "DeviceManager/DeviceMonitor.h" -#include "DeviceManager/DeviceNetwork.h" -#include "DeviceManager/DeviceImage.h" - -KLVGenerator::KLVGenerator() -{ - -} - -void KLVGenerator::generatorMonitorDevice() -{ - QMap mapInfo; - mapInfo.insert("Name", "LCD"); -// mapInfo.insert("Vendor", "HUAWEI"); - mapInfo.insert("CurResolution", "2160x1440@60Hz"); - mapInfo.insert("SupportResolution", "2160x1440@60Hz"); - mapInfo.insert("Size", "14 Inch"); -// mapInfo.insert("Date", "2019年7月"); - - DeviceMonitor *monitor = new DeviceMonitor(); - monitor->setInfoFromSelfDefine(mapInfo); - DeviceManager::instance()->addMonitor(monitor); -} - -void KLVGenerator::generatorNetworkDevice() -{ - const QList> lstInfo = DeviceManager::instance()->cmdInfo("lshw_network"); - QList >::const_iterator it = lstInfo.begin(); - for (; it != lstInfo.end(); ++it) { - if ((*it).size() < 2) { - continue; - } - QMap tempMap = *it; - /* - capabilities: ethernet physical wireless - configuration: broadcast=yes ip=10.4.6.115 multicast=yes wireless=IEEE 802.11 - */ - if ((tempMap["configuration"].indexOf("wireless=IEEE 802.11") > -1) || - (tempMap["capabilities"].indexOf("wireless") > -1)) { - continue; - } - - DeviceNetwork *device = new DeviceNetwork(); - device->setInfoFromLshw(*it); - device->setCanEnale(false); - device->setCanUninstall(false); - device->setForcedDisplay(true); - DeviceManager::instance()->addNetworkDevice(device); - } - // HW 要求修改名称,制造商以及类型 - getNetworkInfoFromCatWifiInfo(); -} - -void KLVGenerator::getNetworkInfoFromCatWifiInfo() -{ - QList > lstWifiInfo; - QString wifiDevicesInfoPath("/sys/hisys/wal/wifi_devices_info"); - QFile file(wifiDevicesInfoPath); - if (file.open(QIODevice::ReadOnly)) { - QMap wifiInfo; - QString allStr = file.readAll(); - file.close(); - - // 解析数据 - QStringList items = allStr.split("\n"); - foreach (const QString &item, items) { - if (item.isEmpty()) - continue; - - QStringList strList = item.split(':', QString::SkipEmptyParts); - if (strList.size() == 2) - wifiInfo[strList[0] ] = strList[1]; - } - - if (!wifiInfo.isEmpty()) - lstWifiInfo.append(wifiInfo); - } - if (lstWifiInfo.size() == 0) { - return; - } - QList >::const_iterator it = lstWifiInfo.begin(); - - for (; it != lstWifiInfo.end(); ++it) { - if ((*it).size() < 3) { - continue; - } - - // KLU的问题特殊处理 - QMap tempMap; - foreach (const QString &key, (*it).keys()) { - tempMap.insert(key, (*it)[key]); - } - - // cat /sys/hisys/wal/wifi_devices_info 获取结果为 HUAWEI HI103 - if (tempMap["Chip Type"].contains("HUAWEI", Qt::CaseInsensitive)) { - tempMap["Chip Type"] = tempMap["Chip Type"].remove("HUAWEI").trimmed(); - } - - // 按照华为的需求,设置蓝牙制造商和类型 - tempMap["Vendor"] = "HISILICON"; - tempMap["Type"] = "Wireless network"; - - DeviceManager::instance()->setNetworkInfoFromWifiInfo(tempMap); - } -} - -void KLVGenerator::getDiskInfoFromLshw() -{ - QString bootdevicePath("/proc/bootdevice/product_name"); - QString modelStr = ""; - QFile file(bootdevicePath); - if (file.open(QIODevice::ReadOnly)) { - modelStr = file.readLine().simplified(); - file.close(); - } - - const QList> lstDisk = DeviceManager::instance()->cmdInfo("lshw_disk"); - QList >::const_iterator dIt = lstDisk.begin(); - for (; dIt != lstDisk.end(); ++dIt) { - if ((*dIt).size() < 2) - continue; - - // KLU的问题特殊处理 - QMap tempMap; - foreach (const QString &key, (*dIt).keys()) { - tempMap.insert(key, (*dIt)[key]); - } - -// qInfo() << tempMap["product"] << " ***** " << modelStr << " " << (tempMap["product"] == modelStr); - // HW写死 - if (tempMap["product"] == modelStr) { - // 应HW的要求,将描述固定为 Universal Flash Storage - tempMap["description"] = "Universal Flash Storage"; - // 应HW的要求,添加interface UFS 3.1 - tempMap["interface"] = "UFS 3.1"; - } - - DeviceManager::instance()->addLshwinfoIntoStorageDevice(tempMap); - } -} - -void KLVGenerator::getImageInfoFromHwinfo() -{ - // 加载从hwinfo中获取的图像设备信息 - const QList> &lstMap = DeviceManager::instance()->cmdInfo("hwinfo_usb"); - QList >::const_iterator it = lstMap.begin(); - for (; it != lstMap.end(); ++it) { - if ((*it).size() < 3) - continue; - - // hwinfo中对camera的分类不明确,通过camera等关键字认定图像设备 - if (!(*it)["Model"].contains("camera", Qt::CaseInsensitive) && - !(*it)["Device"].contains("camera", Qt::CaseInsensitive) && - !(*it)["Driver"].contains("uvcvideo", Qt::CaseInsensitive) && - !(*it)["Model"].contains("webcam", Qt::CaseInsensitive) && - (*it)["Hardware Class"] != "camera") { - continue; - } - - // KLU的问题特殊处理 - QMap tempMap; - foreach (const QString &key, (*it).keys()) { - if ("Vendor" != key) - tempMap.insert(key, (*it)[key]); - } - - // 判断该摄像头是否存在,被禁用的和被拔出 - QString path = pciPath(tempMap); - if (path.contains("usb")) { - // 判断authorized是否存在,不存在则直接返回 - if (!QFile::exists("/sys" + path + "/authorized")) { - continue; - } - } - - // 判断重复设备数据 - QString unique_id = uniqueID(tempMap); - DeviceImage *device = dynamic_cast(DeviceManager::instance()->getImageDevice(unique_id)); - if (device) { - device->setEnableValue(false); - device->setInfoFromHwinfo(tempMap); - continue; - } else { - if (tempMap.contains("path")) { - continue; - } - } - - device = new DeviceImage(); - device->setInfoFromHwinfo(tempMap); - DeviceManager::instance()->addImageDevice(device); - addBusIDFromHwinfo(tempMap["SysFS BusID"]); - } -} - -void KLVGenerator::getImageInfoFromLshw() -{ - // 加载从lshw中获取的图像设备信息 - const QList> &lstMap = DeviceManager::instance()->cmdInfo("lshw_usb"); - QList >::const_iterator it = lstMap.begin(); - for (; it != lstMap.end(); ++it) { - if ((*it).size() < 2) - continue; - - QMap tempMap; - foreach (const QString &key, (*it).keys()) { - if ("vendor" != key) - tempMap.insert(key, (*it)[key]); - } - - DeviceManager::instance()->setCameraInfoFromLshw(tempMap); - } -} - diff --git a/deepin-devicemanager/src/GenerateDevice/KLVGenerator.h b/deepin-devicemanager/src/GenerateDevice/KLVGenerator.h deleted file mode 100644 index 2338d8c4e..000000000 --- a/deepin-devicemanager/src/GenerateDevice/KLVGenerator.h +++ /dev/null @@ -1,49 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef KLVGENERATOR_H -#define KLVGENERATOR_H - -#include"HWGenerator.h" - -/** - * @brief The KLVGenerator class - * 将获取的设备信息生成设备对象,KLU笔记本下的生成器 - */ -class KLVGenerator : public HWGenerator -{ -public: - KLVGenerator(); - -protected: - /** - * @brief generatorMonitorDevice:生成显示设备 - */ - virtual void generatorMonitorDevice() override; - - /**@brief:generator network info*/ - virtual void generatorNetworkDevice() override; - -protected: - /**@brief:generator network info*/ - virtual void getNetworkInfoFromCatWifiInfo(); - - /** - * @brief getDiskInfoFromLshw:从lshw获取存储设备信息 - */ - virtual void getDiskInfoFromLshw() override; - - /** - * @brief getImageInfoFromHwinfo:从hwinfo中获取图像设备信息 - */ - virtual void getImageInfoFromHwinfo() override; - - /** - * @brief getImageInfoFromLshw:从lshw中获取图像设备信息 - */ - virtual void getImageInfoFromLshw() override; -}; - -#endif // KLVGENERATOR_H diff --git a/deepin-devicemanager/src/GenerateDevice/LoadInfoThread.cpp b/deepin-devicemanager/src/GenerateDevice/LoadInfoThread.cpp index b8bc169e7..bae7e8fe3 100644 --- a/deepin-devicemanager/src/GenerateDevice/LoadInfoThread.cpp +++ b/deepin-devicemanager/src/GenerateDevice/LoadInfoThread.cpp @@ -8,13 +8,18 @@ #include "DBusInterface.h" #include "DeviceManager.h" -#include +#include + +#include #include #include #include +#include +DWIDGET_USE_NAMESPACE static bool firstLoadFlag = true; + LoadInfoThread::LoadInfoThread() : mp_ReadFilePool() , mp_GenerateDevicePool() @@ -27,6 +32,14 @@ LoadInfoThread::LoadInfoThread() LoadInfoThread::~LoadInfoThread() { + long long begin = QDateTime::currentMSecsSinceEpoch(); + while (m_Running) + { + long long end = QDateTime::currentMSecsSinceEpoch(); + if (end - begin > 1000) + _exit(0); + usleep(100); + } mp_ReadFilePool.deleteLater(); mp_GenerateDevicePool.deleteLater(); } @@ -54,7 +67,7 @@ void LoadInfoThread::run() // 为了保证上面那个线程池完全结束 long long begin = QDateTime::currentMSecsSinceEpoch(); while (true) { - readDataFlag = !DeviceManager::instance()->cmdInfo("dmidecode0").isEmpty(); + readDataFlag = !DeviceManager::instance()->cmdInfo("dmidecode4").isEmpty(); if (readDataFlag && m_FinishedReadFilePool) break; long long end = QDateTime::currentMSecsSinceEpoch(); @@ -95,10 +108,7 @@ void LoadInfoThread::slotFinishedReadFilePool(const QString &) // 首次加载刷新 if (firstLoadFlag) { firstLoadFlag = false; - DBusInterface::getInstance()->refreshInfo(); - QTimer::singleShot(500, this, [ = ]() { - start(); - }); + emit finishedReadFilePool(); } } diff --git a/deepin-devicemanager/src/GenerateDevice/LoadInfoThread.h b/deepin-devicemanager/src/GenerateDevice/LoadInfoThread.h index c9c4b706b..051468d94 100644 --- a/deepin-devicemanager/src/GenerateDevice/LoadInfoThread.h +++ b/deepin-devicemanager/src/GenerateDevice/LoadInfoThread.h @@ -26,6 +26,7 @@ class LoadInfoThread : public QThread signals: void finished(const QString &message); + void finishedReadFilePool(); protected: void run() override; diff --git a/deepin-devicemanager/src/GenerateDevice/PanguGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/PanguGenerator.cpp deleted file mode 100644 index 3b226dc52..000000000 --- a/deepin-devicemanager/src/GenerateDevice/PanguGenerator.cpp +++ /dev/null @@ -1,80 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -// 项目自身文件 -#include "PanguGenerator.h" - -// 其它头文件 -#include "../DeviceManager/DeviceManager.h" -#include "../DeviceManager/DeviceComputer.h" - -PanguGenerator::PanguGenerator() -{ - -} - -void PanguGenerator::generatorComputerDevice() -{ - const QList > &cmdInfo = DeviceManager::instance()->cmdInfo("cat_os_release"); - - DeviceComputer *device = new DeviceComputer(); - - // home url - if (cmdInfo.size() > 0) { - QString value = cmdInfo[0]["HOME_URL"]; - device->setHomeUrl(value.replace("\"", "")); - } - - // name type - const QList > &dmidecode1List = DeviceManager::instance()->cmdInfo("dmidecode1"); - const QList > &dmidecode2List = DeviceManager::instance()->cmdInfo("dmidecode2"); - const QList > &dmidecode3List = DeviceManager::instance()->cmdInfo("dmidecode3"); - - if (dmidecode1List.size() > 1) { - device->setVendor(dmidecode1List[1]["Manufacturer"], dmidecode2List[0]["Manufacturer"]); - device->setName(dmidecode1List[1]["Product Name"], dmidecode2List[0]["Product Name"], dmidecode1List[1]["Family"], dmidecode1List[1]["Version"]); - } - - if (dmidecode3List.size() > 1) { - device->setType(dmidecode3List[1]["Type"]); - } - - // setOsDescription - QString os = "UOS"; - DSysInfo::DeepinType type = DSysInfo::deepinType(); - if (DSysInfo::DeepinProfessional == type) - os = "UOS 20"; - else if (DSysInfo::DeepinPersonal == type) - os = "UOS 20 Home"; - else if (DSysInfo::DeepinDesktop == type) - os = "Deepin 20 Beta"; - - device->setOsDescription(os); - - // os - const QList > &verInfo = DeviceManager::instance()->cmdInfo("cat_version"); - if (verInfo.size() > 0) { - QString info = verInfo[0]["OS"].trimmed(); - info = info.trimmed(); - QRegExp reg("\\(gcc [\\s\\S]*(\\([\\s\\S]*\\))\\)", Qt::CaseSensitive); - int index = reg.indexIn(info); - if (index != -1) { - QString tmp = reg.cap(0); - info.remove(tmp); - info.insert(index, reg.cap(1)); - } - - reg.setPattern("(\\(root.*\\)) (\\(.*\\))"); - index = reg.indexIn(info); - if (index != -1) { - QString tmp = reg.cap(1); - info.remove(tmp); - } - - info.remove("version"); - device->setOS(info); - } - - DeviceManager::instance()->addComputerDevice(device); -} diff --git a/deepin-devicemanager/src/GenerateDevice/PanguGenerator.h b/deepin-devicemanager/src/GenerateDevice/PanguGenerator.h deleted file mode 100644 index 791f2c7fd..000000000 --- a/deepin-devicemanager/src/GenerateDevice/PanguGenerator.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef PANGUGENERATOR_H -#define PANGUGENERATOR_H -#include"DeviceGenerator.h" - -/** - * @brief The PanguGenerator class - * 将获取的设备信息生成设备对象,pangu下的生成器 - */ - -class PanguGenerator : public DeviceGenerator -{ -public: - PanguGenerator(); - - /** - * @brief generatorComputerDevice:生成概况设备信息 - */ - virtual void generatorComputerDevice() override; -}; - -#endif // PANGUGENERATOR_H diff --git a/deepin-devicemanager/src/GenerateDevice/PanguVGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/PanguVGenerator.cpp deleted file mode 100644 index b93cabe66..000000000 --- a/deepin-devicemanager/src/GenerateDevice/PanguVGenerator.cpp +++ /dev/null @@ -1,91 +0,0 @@ -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -// 项目自身文件 -#include "PanguVGenerator.h" - -// 其它头文件 -#include "../DeviceManager/DeviceManager.h" -#include "../DeviceManager/DeviceMonitor.h" -#include "EDIDParser.h" - -#include - -PanguVGenerator::PanguVGenerator() -{ - -} - -void PanguVGenerator::generatorMonitorDevice() -{ - // 生成显示设备信息 -// const QList> lstMapHDMI = DeviceManager::instance()->cmdInfo("EDID_HDMI"); -// QList >::const_iterator itHDMI = lstMapHDMI.begin(); -// for (; itHDMI != lstMapHDMI.end(); ++itHDMI) { -// if ((*itHDMI).size() < 1) -// continue; - -// //HDMI interface EDID information -// DeviceMonitor *device = new DeviceMonitor(); -// device->setInfoFromEdid(*itHDMI); -// DeviceManager::instance()->addMonitor(device); -// } - -// const QList> lstMapVGA = DeviceManager::instance()->cmdInfo("EDID_VGA"); -// QList >::const_iterator it = lstMapVGA.begin(); -// for (; it != lstMapVGA.end(); ++it) { -// if ((*it).size() < 1) -// continue; - -// //VGA interface EDID information -// DeviceMonitor *device = new DeviceMonitor(); -// device->setInfoFromEdid(*it); -// DeviceManager::instance()->addMonitor(device); -// } - - QStringList allEDIDS; - allEDIDS.append("/sys/devices/platform/hisi-drm/drm/card0/card0-HDMI-A-1/edid"); - allEDIDS.append("/sys/devices/platform/hisi-drm/drm/card0/card0-VGA-1/edid"); - allEDIDS.append("/sys/devices/platform/hldrm/drm/card0/card0-HDMI-A-1/edid"); - allEDIDS.append("/sys/devices/platform/hldrm/drm/card0/card0-VGA-1/edid"); - for (auto edid:allEDIDS) { - QProcess process; - process.start(QString("hexdump %1").arg(edid)); - process.waitForFinished(-1); - - QString deviceInfo = process.readAllStandardOutput(); - if(deviceInfo.isEmpty()) - continue; - - QString edidStr; - QStringList lines = deviceInfo.split("\n"); - for (auto line:lines) { - QStringList words = line.trimmed().split(" "); - if(words.size() != 9) - continue; - - words.removeAt(0); - QString l = words.join(""); - l.append("\n"); - edidStr.append(l); - } - - lines = edidStr.split("\n"); - if(lines.size() > 3){ - EDIDParser edidParser; - QString errorMsg; - edidParser.setEdid(edidStr,errorMsg,"\n", false); - - QMap mapInfo; - mapInfo.insert("Vendor",edidParser.vendor()); - mapInfo.insert("Date",edidParser.releaseDate()); - mapInfo.insert("Size",edidParser.screenSize()); - - DeviceMonitor *device = new DeviceMonitor(); - device->setInfoFromEdid(mapInfo); - DeviceManager::instance()->addMonitor(device); - } - } - -} diff --git a/deepin-devicemanager/src/GenerateDevice/PanguVGenerator.h b/deepin-devicemanager/src/GenerateDevice/PanguVGenerator.h deleted file mode 100644 index 8daa881d5..000000000 --- a/deepin-devicemanager/src/GenerateDevice/PanguVGenerator.h +++ /dev/null @@ -1,28 +0,0 @@ -// Copyright (C) 2019 ~ 2020 Uniontech Software Technology Co.,Ltd. -// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef PANGUVGENERATOR_H -#define PANGUVGENERATOR_H - -#include -#include "HWGenerator.h" - -/** - * @brief The PanguVGenerator class - * 将获取的设备信息生成设备对象,panguV下的生成器 - */ - -class PanguVGenerator : public HWGenerator -{ -public: - PanguVGenerator(); - - /** - * @brief generatorMonitorDevice:生成显示设备信息 - */ - virtual void generatorMonitorDevice() override; -}; - -#endif // PANGUVGENERATOR_H diff --git a/deepin-devicemanager/src/LogConfigRead/LogConfigread.cpp b/deepin-devicemanager/src/LogConfigRead/LogConfigread.cpp new file mode 100644 index 000000000..4c1af5f80 --- /dev/null +++ b/deepin-devicemanager/src/LogConfigRead/LogConfigread.cpp @@ -0,0 +1,55 @@ +// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later +#include "LogConfigread.h" +#include "dtkcore_global.h" +#include "qglobal.h" +#include +#include +#include + +DCORE_USE_NAMESPACE + +MLogger::MLogger(QObject *parent) + : QObject(parent), m_rules(""), m_config(nullptr) { + QByteArray logRules = qgetenv("QT_LOGGING_RULES"); + // qunsetenv 之前一定不要有任何日志打印,否则取消环境变量设置不会生效 + qunsetenv("QT_LOGGING_RULES"); + // set env + m_rules = logRules; + // set dconfig + m_config = DConfig::create("org.deepin.devicemanager", "org.deepin.devicemanager"); + logRules = m_config->value("rules").toByteArray(); + appendRules(logRules); + setRules(m_rules); + // watch dconfig + connect(m_config, &DConfig::valueChanged, this, [this](const QString &key) { + if (key == "rules") { + setRules(m_config->value(key).toByteArray()); + } + }); +} + +MLogger::~MLogger() { m_config->deleteLater(); } + +void MLogger::setRules(const QString &rules) { + auto tmpRules = rules; + m_rules = tmpRules.replace(";", "\n"); + QLoggingCategory::setFilterRules(m_rules); +} + +void MLogger::appendRules(const QString &rules) { + QString tmpRules = rules; + tmpRules = tmpRules.replace(";", "\n"); + auto tmplist = tmpRules.split('\n'); + for (int i = 0; i < tmplist.count(); i++) + if (m_rules.contains(tmplist.at(i))) { + tmplist.removeAt(i); + i--; + } + if (tmplist.isEmpty()) + return; + m_rules.isEmpty() ? m_rules = tmplist.join("\n") + : m_rules += "\n" + tmplist.join("\n"); +} + diff --git a/deepin-devicemanager/src/LogConfigRead/LogConfigread.h b/deepin-devicemanager/src/LogConfigRead/LogConfigread.h new file mode 100644 index 000000000..c99751d1d --- /dev/null +++ b/deepin-devicemanager/src/LogConfigRead/LogConfigread.h @@ -0,0 +1,26 @@ +// SPDX-FileCopyrightText: 2024 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later +#include +#include + +DCORE_BEGIN_NAMESPACE +class DConfig; +DCORE_END_NAMESPACE + +class MLogger : public QObject { + Q_OBJECT +public: + explicit MLogger(QObject *parent = nullptr); + ~MLogger(); + + inline QString rules() const { return m_rules; } + void setRules(const QString &rules); + +private: + void appendRules(const QString &rules); + +private: + QString m_rules; + Dtk::Core::DConfig *m_config; +}; diff --git a/deepin-devicemanager/src/MacroDefinition.h b/deepin-devicemanager/src/MacroDefinition.h index 27380bb9d..59d68b19c 100644 --- a/deepin-devicemanager/src/MacroDefinition.h +++ b/deepin-devicemanager/src/MacroDefinition.h @@ -43,8 +43,8 @@ foreach (auto device, deviceLst) { \ out << "\n"; \ \ - device->getBaseAttribs(); \ - device->getOtherAttribs(); \ + device->getBaseTranslationAttribs(); \ + device->getOtherTranslationAttribs(); \ /**设备数目大于1,添加子标题**/ \ if (deviceLst.size() > 1) { \ out << device->subTitle(); \ @@ -86,8 +86,8 @@ \ /**添加每个设备的信息**/ \ foreach (auto device, deviceLst) { \ - device->getBaseAttribs(); \ - device->getOtherAttribs(); \ + device->getBaseTranslationAttribs(); \ + device->getOtherTranslationAttribs(); \ \ /**设备数目大于1,添加子标题**/ \ if (deviceLst.size() > 1) { \ @@ -132,8 +132,8 @@ /**添加每个设备的信息**/ \ foreach (auto device, deviceLst) { \ \ - device->getBaseAttribs(); \ - device->getOtherAttribs(); \ + device->getBaseTranslationAttribs(); \ + device->getOtherTranslationAttribs(); \ /**设备数目大于1,添加子标题**/ \ if (deviceLst.size() > 1) { \ doc.addParagraph(device->subTitle()); \ @@ -177,8 +177,8 @@ foreach (auto device, deviceLst) { \ QDomDocument doc; \ \ - device->getBaseAttribs(); \ - device->getOtherAttribs(); \ + device->getBaseTranslationAttribs(); \ + device->getOtherTranslationAttribs(); \ /**设备数目大于1,添加子标题**/ \ if (deviceLst.size() > 1) { \ device->subTitleToHTML(doc); \ @@ -228,7 +228,8 @@ enum DriverType { DR_Printer = 8, DR_Scaner = 9, DR_Tablet = 10, - DR_WiFi = 11 + DR_WiFi = 11, + DR_OtherDevice = 12 }; /** @@ -267,15 +268,22 @@ struct RepoDriverInfo { * @brief The Status enum 驱动状态 */ enum Status { - ST_SUCESS = 0, // 成功了 - ST_FAILED = 1, // 失败了 - ST_DOWNLOADING = 2, // 下载中 - ST_INSTALL = 3, // 安装中 - ST_NOT_INSTALL = 4, // 驱动未安装 - ST_CAN_UPDATE = 5, // 驱动可更新 - ST_WAITING = 6, // 等待中 - ST_NetWorkErr = 7, // 网络异常 - ST_DRIVER_IS_NEW = 8, // 此驱动不需要更新 + ST_SUCESS = 0, // 成功了 + ST_FAILED = 1, // 失败了 + ST_DOWNLOADING = 2, // 下载中 + ST_INSTALL = 3, // 安装中 + ST_NOT_INSTALL = 4, // 驱动未安装 + ST_CAN_UPDATE = 5, // 驱动可更新 + ST_WAITING = 6, // 等待中 + ST_NetWorkErr = 7, // 网络异常 + ST_DRIVER_IS_NEW = 8, // 此驱动不需要更新 + ST_DRIVER_NOT_BACKUP , //未备份 + ST_DRIVER_BACKING_UP, //正在备份 + ST_DRIVER_BACKED_UP, //已备份 + ST_DRIVER_BACKUP_FAILED, //备份失败 + ST_DRIVER_BACKUP_SUCCESS, //备份成功 + ST_DRIVER_CAN_RESTORE, //可以还原 + ST_DRIVER_RESTORING //正在还原 }; /** @@ -323,6 +331,8 @@ struct DriverInfo { QString m_DebVersion; //包版本 返回值 QString m_Packages; //包名 返回值 qint64 m_Byte; + QString m_DebBackupVersion; //备份的包版本 返回值 + QString m_BackupFileName; //备份文件名 DriverType type() { return m_Type; } QString name() { return m_Name; } @@ -337,9 +347,10 @@ struct DriverInfo { bool checked() { return m_Checked; } QString debVersion() { return m_DebVersion; } QString packages() {return m_Packages; } + QString debBackupVersion() { return m_DebBackupVersion; } + QString backupFileName() { return m_BackupFileName; } }; - #define EC_NULL 0 #define EC_NETWORK 1 #define EC_CANCEL 2 diff --git a/deepin-devicemanager/src/Page/DeviceWidget.cpp b/deepin-devicemanager/src/Page/DeviceWidget.cpp index 1ac3b038c..6fdfcd89a 100644 --- a/deepin-devicemanager/src/Page/DeviceWidget.cpp +++ b/deepin-devicemanager/src/Page/DeviceWidget.cpp @@ -13,7 +13,7 @@ // Qt库文件 #include -#include +#include DeviceWidget::DeviceWidget(QWidget *parent) diff --git a/deepin-devicemanager/src/Page/MainWindow.cpp b/deepin-devicemanager/src/Page/MainWindow.cpp index 4470db79e..ad4043a43 100644 --- a/deepin-devicemanager/src/Page/MainWindow.cpp +++ b/deepin-devicemanager/src/Page/MainWindow.cpp @@ -17,6 +17,8 @@ #include "LoadCpuInfoThread.h" #include "CmdTool.h" #include "commonfunction.h" +#include "DriverScanWidget.h" +#include "DDLog.h" // Dtk头文件 #include @@ -26,11 +28,14 @@ #include #include #include +#ifdef DTKCORE_CLASS_DConfigFile +#include +#endif // Qt库文件 #include #include -#include +#include #include #include #include @@ -40,7 +45,7 @@ #include DWIDGET_USE_NAMESPACE - +using namespace DDLog; // 主界面需要的一些宏定义 #define INIT_WIDTH 1000 // 窗口的初始化宽度 #define INIT_HEIGHT 720 // 窗口的初始化高度 @@ -48,7 +53,7 @@ DWIDGET_USE_NAMESPACE #define MIN_HEIGHT 300 // 窗口的最小高度 static bool startScanningFlag = false; - +static int monitorNumber = 1; static bool checkWaylandMode() { auto e = QProcessEnvironment::systemEnvironment(); @@ -66,6 +71,7 @@ MainWindow::MainWindow(QWidget *parent) , mp_MainStackWidget(new DStackedWidget(this)) , mp_WaitingWidget(new WaitingWidget(this)) , mp_DeviceWidget(new DeviceWidget(this)) + , mp_DriverScanWidget(new DriverScanWidget(this)) , mp_DriverManager(new PageDriverManager(this)) , mp_WorkingThread(new LoadInfoThread) , mp_ButtonBox(new DButtonBox(this)) @@ -96,8 +102,37 @@ MainWindow::MainWindow(QWidget *parent) refreshDataBase(); startScanningFlag = true; }); - connect(mp_DriverManager, &PageDriverManager::scanFinished, this, [ = ]() { + connect(mp_DriverManager, &PageDriverManager::scanFinished, this, [ = ](ScanResult sr) { mp_ButtonBox->setEnabled(true); + + if (SR_Failed == sr) { + mp_DriverScanWidget->setScanFailedUI(); + } else if (SR_SUCESS == sr) { + mp_DriverScanWidget->setProgressFinish(); + mp_MainStackWidget->setCurrentIndex(3); + } else if (SR_NETWORD_ERR == sr) { + mp_DriverScanWidget->setNetworkErr(); + } + }); + connect(mp_DriverManager, &PageDriverManager::scanInfo, this, [ = ](const QString &info, int progress) { + mp_DriverScanWidget->refreshProgress(info, progress); + }); + connect(mp_DriverScanWidget, &DriverScanWidget::redetected, mp_DriverManager, &PageDriverManager::startScanning); + //get monitorNumber + ThreadExecXrandr txgpu(true, !checkWaylandMode()); + txgpu.start(); + txgpu.wait(); + monitorNumber = txgpu.getMonitorNumber(); + connect(mp_WorkingThread, &LoadInfoThread::finishedReadFilePool, this, [ = ]() { + refreshDataBaseLater(); + }); +} +void MainWindow::refreshDataBaseLater() +{ + DBusInterface::getInstance()->refreshInfo(); + QTimer::singleShot(2000, this, [ = ]() { //test the x86 the fast desktop PC need 2s + // 加载设备信息 + refreshDataBase(); }); } @@ -128,6 +163,9 @@ MainWindow::~MainWindow() void MainWindow::refresh() { + //电池状态刷新 + refreshBatteryStatus(); + // 正在刷新,避免重复操作 if (m_refreshing || startScanningFlag || mp_DriverManager->isScanning() || mp_WorkingThread->isRunning()) return; @@ -146,7 +184,40 @@ void MainWindow::refresh() // 加载设备信息 refreshDataBase(); +} +void MainWindow::refreshBatteryStatus() +{ + QDBusConnection bus = QDBusConnection::systemBus(); + + //创建Dbus接口 + QDBusInterface interfaceService("org.freedesktop.UPower", "/org/freedesktop/UPower", "org.freedesktop.UPower", bus); + if (interfaceService.isValid()) { + QProcess process; + QString command = "gdbus call --system --dest org.freedesktop.UPower --object-path /org/freedesktop/UPower --method org.freedesktop.UPower.EnumerateDevices"; + process.start(command); + process.waitForFinished(); + + QByteArray output = process.readAllStandardOutput(); + QString outputStr = QString::fromLocal8Bit(output); + QStringList outputList = outputStr.split(","); + + foreach (const QString& str, outputList) { + if (str.contains("BAT")) { + QStringList pathStr = str.split("'"); + if (pathStr.size() >= 2) { + QDBusInterface interfaceBattery("org.freedesktop.UPower", pathStr.at(1), "org.freedesktop.UPower.Device", bus); + if (interfaceBattery.isValid()) { + QDBusMessage reply = interfaceBattery.call("Refresh"); + if (reply.type() != QDBusMessage::ReplyMessage) + qWarning() << "call Refresh failure:" << reply.errorMessage(); + } + } + } + } + } else { + qDebug() << "interface UPower invalid"; + } } bool MainWindow::exportTo() @@ -337,17 +408,38 @@ void MainWindow::initWindowTitle() else mp_MainStackWidget->setCurrentIndex(1); } else { - mp_MainStackWidget->setCurrentIndex(2); if (mp_DriverManager->isFirstScan()) { mp_ButtonBox->setEnabled(false); mp_DriverManager->scanDriverInfo(); + mp_MainStackWidget->setCurrentIndex(2); + mp_DriverScanWidget->setScanningUI("", 0); + } else { + mp_MainStackWidget->setCurrentIndex(3); } } }); titlebar()->addWidget(mp_ButtonBox); +#ifdef DTKCORE_CLASS_DConfigFile + //需要查询是否支持特殊机型静音恢复,例如hw机型 + DConfig *dconfig = DConfig::create("org.deepin.devicemanager","org.deepin.devicemanager"); + //需要判断Dconfig文件是否合法 + if(dconfig && dconfig->isValid() && dconfig->keyList().contains("specialComType")){ + Common::specialComType = dconfig->value("specialComType").toInt(); + } + qCInfo(appLog) << "Common::specialComType value is:" << Common::specialComType; + + if (dconfig && dconfig->isValid() && dconfig->keyList().contains("TomlFilesName")) { + QString tomlFilesName = dconfig->value("TomlFilesName").toString(); + Common::tomlFilesNameSet(tomlFilesName); + } + +#endif // 特殊处理 if (!Common::boardVendorType().isEmpty()) mp_ButtonBox->hide(); +#ifdef DISABLE_DRIVER + mp_ButtonBox->hide(); +#endif } void MainWindow::initWidgets() @@ -363,17 +455,22 @@ void MainWindow::initWidgets() // 添加信息显示界面 mp_MainStackWidget->addWidget(mp_DeviceWidget); + mp_MainStackWidget->addWidget(mp_DriverScanWidget); + // 初始化驱动相关界面 mp_MainStackWidget->addWidget(mp_DriverManager); } void MainWindow::refreshDataBase() { - // 设置应用程序强制光标为cursor - DApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); - - if (mp_WorkingThread) + if (mp_WorkingThread) { + /* 一定要与 restoreOverrideCursor 成对使用*/ + if(!m_statusCursorIsWait) { + DApplication::setOverrideCursor(QCursor(Qt::WaitCursor)); + m_statusCursorIsWait = true; + } mp_WorkingThread->start(); + } } void MainWindow::slotSetPage(QString page) @@ -398,8 +495,11 @@ void MainWindow::slotLoadingFinish(const QString &message) if (message == "finish") { begin = true; - // 一定要有否则指针一直显示圆圈与setOverrideCursor成对使用 + /* 一定要有与 setOverrideCursor 成对使用 否则指针一直显示圆圈*/ + if( m_statusCursorIsWait) { + m_statusCursorIsWait = false; DApplication::restoreOverrideCursor(); + } // 信息显示界面 // 获取设备类型列表 @@ -442,8 +542,9 @@ void MainWindow::slotLoadingFinish(const QString &message) } } if (startScanningFlag) { - mp_MainStackWidget->setCurrentWidget(mp_DriverManager); + mp_MainStackWidget->setCurrentIndex(2); mp_DriverManager->scanDriverInfo(); + mp_DriverScanWidget->setScanningUI("", 0); startScanningFlag = false; } } @@ -474,6 +575,21 @@ void MainWindow::slotListItemClicked(const QString &itemStr) DeviceManager::instance()->correctPowerInfo(tool.getCurPowerInfo()); } + ThreadExecXrandr txgpu(true, !checkWaylandMode()); + txgpu.start(); + txgpu.wait(); + if(monitorNumber != txgpu.getMonitorNumber()) { + + QString info; + DBusInterface::getInstance()->getInfo("is_server_running", info); + //请求后台更新信息 + if (!info.toInt()) { + refreshDataBaseLater(); + } + qCDebug(appLog)<< "Monitor refreshInfo" << __LINE__ << QDateTime::currentDateTime().toString("hh:mm:ss") << info << monitorNumber; + monitorNumber = txgpu.getMonitorNumber(); + } + // 数据刷新时不处理界面刷新 if (m_refreshing || mp_WorkingThread->isRunning()) return; @@ -490,6 +606,7 @@ void MainWindow::slotListItemClicked(const QString &itemStr) void MainWindow::slotRefreshInfo() { + refreshDataBaseLater(); // 界面刷新 refresh(); } @@ -565,6 +682,33 @@ void MainWindow::closeEvent(QCloseEvent *event) // bug134487 DDialog dialog(QObject::tr("You are installing a driver, which will be interrupted if you exit.") , QObject::tr("Are you sure you want to exit?")); + + dialog.setIcon(style()->standardIcon(QStyle::SP_MessageBoxWarning)); + dialog.addButton(QObject::tr("Exit", "button"), false, DDialog::ButtonWarning); + dialog.addButton(QObject::tr("Cancel", "button")); + int ret = dialog.exec(); + if (0 == ret) { + return DMainWindow::closeEvent(event); + } else { + event->ignore(); + } + } else if (mp_DriverManager->isBackingup()) { + DDialog dialog(QObject::tr("You are backing up drivers, which will be interrupted if you exit.") + , QObject::tr("Are you sure you want to exit?")); + + dialog.setIcon(style()->standardIcon(QStyle::SP_MessageBoxWarning)); + dialog.addButton(QObject::tr("Exit", "button"), false, DDialog::ButtonWarning); + dialog.addButton(QObject::tr("Cancel", "button")); + int ret = dialog.exec(); + if (0 == ret) { + return DMainWindow::closeEvent(event); + } else { + event->ignore(); + } + } else if (mp_DriverManager->isRestoring()) { + DDialog dialog(QObject::tr("You are restoring drivers, which will be interrupted if you exit.") + , QObject::tr("Are you sure you want to exit?")); + dialog.setIcon(style()->standardIcon(QStyle::SP_MessageBoxWarning)); dialog.addButton(QObject::tr("Exit", "button"), false, DDialog::ButtonWarning); dialog.addButton(QObject::tr("Cancel", "button")); diff --git a/deepin-devicemanager/src/Page/MainWindow.h b/deepin-devicemanager/src/Page/MainWindow.h index 3ef227e62..2dcd93f72 100644 --- a/deepin-devicemanager/src/Page/MainWindow.h +++ b/deepin-devicemanager/src/Page/MainWindow.h @@ -12,6 +12,9 @@ #include #include #include +#include +#include +#include #include @@ -19,6 +22,7 @@ class WaitingWidget; class DeviceWidget; class LoadInfoThread; class PageDriverManager; +class DriverScanWidget; using namespace Dtk::Widget; @@ -39,6 +43,11 @@ class MainWindow : public DMainWindow */ void refresh(); + /** + * @brief refreshBatteryStatus:刷新电池状态 + */ + void refreshBatteryStatus(); + /** * @brief exportTo:导出设备信息 * @return true:导出成功,false:导出失败 @@ -116,7 +125,10 @@ class MainWindow : public DMainWindow * @brief refreshDataBase:刷新设备信息 */ void refreshDataBase(); - + /** + * @brief refreshDataBaseLater:刷新设备信息 + */ + void refreshDataBaseLater(); private slots: /** * @brief slotSetPage @@ -162,12 +174,14 @@ private slots: DStackedWidget *mp_MainStackWidget; WaitingWidget *mp_WaitingWidget; //加载界面 DeviceWidget *mp_DeviceWidget; //设备显示界面 + DriverScanWidget *mp_DriverScanWidget; //驱动管理扫描界面 PageDriverManager *mp_DriverManager; //驱动管理主界面 LoadInfoThread *mp_WorkingThread; //信息加载线程 DButtonBox *mp_ButtonBox; // titlebar上添加Buttonbox bool m_refreshing = false; // 判断界面是否正在刷新 bool m_IsFirstRefresh = true; bool m_ShowDriverPage = false; + bool m_statusCursorIsWait = false; }; #endif // MAINWINDOW_H diff --git a/deepin-devicemanager/src/Page/PageBoardInfo.cpp b/deepin-devicemanager/src/Page/PageBoardInfo.cpp index c2e9921ac..662476fc8 100644 --- a/deepin-devicemanager/src/Page/PageBoardInfo.cpp +++ b/deepin-devicemanager/src/Page/PageBoardInfo.cpp @@ -19,7 +19,7 @@ // Qt库文件 #include -#include +#include #include @@ -55,8 +55,8 @@ void PageBoardInfo::updateInfo(const QList &lst) return; // 获取主板信息并加载 - QList> baseInfoMap = board->getBaseAttribs(); - QList> otherInfoMap = board->getOtherAttribs(); + QList> baseInfoMap = board->getBaseTranslationAttribs(); + QList> otherInfoMap = board->getOtherTranslationAttribs(); baseInfoMap = baseInfoMap + otherInfoMap; loadDeviceInfo(lstOther, baseInfoMap); } @@ -116,7 +116,7 @@ void PageBoardInfo::loadDeviceInfo(const QList &devices, const // int height = 0; // QStringList strList = pairs[i - lst.size()].second.split("\n"); // int fontHeight = fm.boundingRect(pairs[i - lst.size()].second).height()/* + 2*/; -// //qInfo() << strList; +// //qCInfo(appLog) << strList; // // 根据行数增加行高 // foreach (const QString &str, strList) { // QStringList lst = str.split(":"); @@ -157,7 +157,7 @@ void PageBoardInfo::getOtherInfoPair(const QList &lst, QList pair; - pair.first = bios->name(); + pair.first = bios->nameTr(); getValueInfo(bios, pair); lstPair.append(pair); } @@ -166,8 +166,8 @@ void PageBoardInfo::getOtherInfoPair(const QList &lst, QList &pair) { // 获取信息并保存为pair - QList> baseInfoMap = device->getBaseAttribs(); - QList> otherInfoMap = device->getOtherAttribs(); + QList> baseInfoMap = device->getBaseTranslationAttribs(); + QList> otherInfoMap = device->getOtherTranslationAttribs(); baseInfoMap = baseInfoMap + otherInfoMap; QList>::iterator it = baseInfoMap.begin(); for (; it != baseInfoMap.end(); ++it) { diff --git a/deepin-devicemanager/src/Page/PageDetail.cpp b/deepin-devicemanager/src/Page/PageDetail.cpp index 45162a5cf..fe9cf4b77 100644 --- a/deepin-devicemanager/src/Page/PageDetail.cpp +++ b/deepin-devicemanager/src/Page/PageDetail.cpp @@ -20,7 +20,7 @@ #include #include #include -#include +#include #include #include #include @@ -199,7 +199,7 @@ void PageDetail::showDeviceInfo(const QList &lstInfo) connect(txtBrowser, &TextBrowser::refreshInfo, this, &PageDetail::refreshInfo); connect(txtBrowser, &TextBrowser::exportInfo, this, &PageDetail::exportInfo); connect(txtBrowser, &TextBrowser::copyAllInfo, this, &PageDetail::slotCopyAllInfo); - addWidgets(txtBrowser, device->enable() && device->available()); + addWidgets(txtBrowser, device->enable() && device->available() && !device->getOtherTranslationAttribs().isEmpty()); // 当添加到最后一个设备详细信息时,隐藏分隔符 if (device == lstInfo.last()) m_ListDetailSeperator[lstInfo.size() - 1]->setVisible(false); diff --git a/deepin-devicemanager/src/Page/PageDriverBackupInfo.cpp b/deepin-devicemanager/src/Page/PageDriverBackupInfo.cpp new file mode 100644 index 000000000..bec4cb1b5 --- /dev/null +++ b/deepin-devicemanager/src/Page/PageDriverBackupInfo.cpp @@ -0,0 +1,224 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include + +#include + +#include "PageDriverBackupInfo.h" +#include "DetectedStatusWidget.h" +#include "PageDriverTableView.h" +#include "driveritem.h" + +PageDriverBackupInfo::PageDriverBackupInfo(QWidget *parent) + : DFrame(parent) + , mp_HeadWidget(new DetectedStatusWidget(this)) + , mp_NotBackupWidget(new DWidget(this)) + , mp_ViewBackable(new PageDriverTableView(this)) + , mp_BackableDriverLabel(new DLabel(this)) + , mp_BackedUpWidget(new DWidget(this)) + , mp_ViewBackedUp(new PageDriverTableView(this)) + , mp_BackedUpDriverLabel(new DLabel(this)) +{ + initUI(); + + connect(mp_ViewBackable, &PageDriverTableView::operatorClicked, this, &PageDriverBackupInfo::operatorClicked); + connect(mp_ViewBackable, &PageDriverTableView::itemChecked, this, &PageDriverBackupInfo::itemChecked); + connect(mp_HeadWidget, &DetectedStatusWidget::backupAll, this, &PageDriverBackupInfo::backupAll); + connect(mp_HeadWidget, &DetectedStatusWidget::backupAll, this, [=](){ + mp_ViewBackable->setCheckedCBDisnable(); + }); + connect(mp_HeadWidget, &DetectedStatusWidget::cancelClicked, this, &PageDriverBackupInfo::undoBackup); + connect(mp_HeadWidget, &DetectedStatusWidget::redetected, this, &PageDriverBackupInfo::redetected); +} + +void PageDriverBackupInfo::initUI() +{ + this->setLineWidth(0); + initTable(); + + QVBoxLayout *mainLayout = new QVBoxLayout(this); + mainLayout->setContentsMargins(20, 20, 20, 0); + mainLayout->setSpacing(0); + + // 上方的表头 + QHBoxLayout *headerLayout = new QHBoxLayout(this); + headerLayout->setSpacing(0); + headerLayout->addWidget(mp_HeadWidget); + + // 下方的可滑动区域 + DScrollArea *area = new DScrollArea(this); + area->setMinimumHeight(10); + area->setFrameShape(QFrame::NoFrame); + area->setWidgetResizable(true); + + DWidget *frame = new DWidget(this); + QVBoxLayout *frameLayout = new QVBoxLayout(); + frame->setContentsMargins(0, 0, 0, 0); + frameLayout->setContentsMargins(0, 0, 0, 0); + + QVBoxLayout *backableLayout = new QVBoxLayout(this); + backableLayout->setContentsMargins(0, 0, 0, 0); + backableLayout->addWidget(mp_BackableDriverLabel); + backableLayout->addWidget(mp_ViewBackable); + backableLayout->addSpacing(7); + backableLayout->addStretch(); + mp_NotBackupWidget->setLayout(backableLayout); + + QVBoxLayout *updateLayout = new QVBoxLayout(this); + updateLayout->setContentsMargins(0, 0, 0, 0); + updateLayout->addWidget(mp_BackedUpDriverLabel); + updateLayout->addWidget(mp_ViewBackedUp); + updateLayout->addSpacing(7); + updateLayout->addStretch(); + mp_BackedUpWidget->setLayout(updateLayout); + + frameLayout->addWidget(mp_NotBackupWidget); + frameLayout->addWidget(mp_BackedUpWidget); + frameLayout->addSpacing(17); + frameLayout->addStretch(); + frame->setLayout(frameLayout); + area->setWidget(frame); + + mainLayout->addLayout(headerLayout); + mainLayout->addSpacing(16); + mainLayout->addWidget(area); + this->setLayout(mainLayout); +} + +void PageDriverBackupInfo::initTable() +{ + mp_ViewBackable->initHeaderView(QStringList() << "" << tr("Name") + << tr("Current Version") << tr("Driver Platform Version") + << tr("Status") << tr("Action"), true); + mp_ViewBackable->setHeaderCbStatus(false); + mp_ViewBackable->setColumnWidth(0, 41); + mp_ViewBackable->setColumnWidth(1, 290); + mp_ViewBackable->setColumnWidth(2, 120); + mp_ViewBackable->setColumnWidth(3, 120); +// mp_ViewBackable->setColumnWidth(4, 80); + mp_ViewBackable->setColumnWidth(4, 120); + mp_ViewBackable->setColumnWidth(5, 80); + + mp_ViewBackedUp->initHeaderView(QStringList() << tr("Name") << tr("Current Version") << tr("Driver Platform Version")); + mp_ViewBackedUp->setColumnWidth(0, 418); + mp_ViewBackedUp->setColumnWidth(1, 185); +} + +void PageDriverBackupInfo::addDriverInfoToTableView(DriverInfo *info, int index) +{ + PageDriverTableView *view = nullptr; + if (info->debBackupVersion() != info->debVersion()) { + view = mp_ViewBackable; + view->appendRowItems(6); + + int row = view->model()->rowCount() - 1; + + // 设置CheckBtn + DriverCheckItem *cbItem = new DriverCheckItem(this); + connect(cbItem, &DriverCheckItem::sigChecked, view, [index, view](bool checked) { + Q_UNUSED(index) + view->setHeaderCbStatus(checked); + }); + cbItem->setChecked(ST_NOT_INSTALL == info->status()); + view->setWidget(row, 0, cbItem); + + // 设置设备信息 + DriverNameItem *nameItem = new DriverNameItem(this, info->type()); + nameItem->setName(info->name()); + nameItem->setIndex(index); + view->setWidget(row, 1, nameItem); + + // 设置版本 + DriverLabelItem *versionItem = new DriverLabelItem(this, info->version()); + view->setWidget(row, 2, versionItem); + + // 设置版本 + DriverLabelItem *debVersionItem = new DriverLabelItem(this, info->debVersion()); + view->setWidget(row, 3, debVersionItem); + +// // 设置大小 +// DriverLabelItem *sizeItem = new DriverLabelItem(this, info->size()); +// view->setWidget(row, 4, sizeItem); + + // 设置状态 + DriverStatusItem *statusItem = new DriverStatusItem(this, Status::ST_DRIVER_NOT_BACKUP); + view->setWidget(row, 4, statusItem); + + // 添加操作按钮 + DriverOperationItem *operateItem = new DriverOperationItem(this, DriverOperationItem::BACKUP); + view->setWidget(row, 5, operateItem); + } + + if (!info->debBackupVersion().isEmpty()) { + view = mp_ViewBackedUp; + view->appendRowItems(3); + + int row = view->model()->rowCount() - 1; + + // 设置设备信息 + DriverNameItem *nameItem = new DriverNameItem(this, info->type()); + nameItem->setName(info->name()); + nameItem->setIndex(index); + view->setWidget(row, 0, nameItem); + + // 设置版本 + DriverLabelItem *versionItem = new DriverLabelItem(this, info->version()); + view->setWidget(row, 1, versionItem); + + // 设置版本 + DriverLabelItem *debVersionItem = new DriverLabelItem(this, info->debVersion()); + view->setWidget(row, 2, debVersionItem); + } +} + +void PageDriverBackupInfo::showTables(int backableLength, int backedupLength) +{ + // Label显示 + mp_BackableDriverLabel->setText(tr("Backupable Drivers")); + mp_BackedUpDriverLabel->setText(tr("Backed up Drivers")); + + mp_BackedUpDriverLabel->setVisible(backedupLength != 0); + mp_BackedUpWidget->setVisible(backedupLength != 0); + + mp_BackableDriverLabel->setVisible(backableLength != 0); + mp_NotBackupWidget->setVisible(backableLength != 0); + + // 显示表头显示的内容 + if (backableLength == 0) { + mp_HeadWidget->setNoBackupDriverUI(backableLength, backedupLength); + } else { + mp_HeadWidget->setBackableDriverUI(backableLength, backedupLength); + } +} + +void PageDriverBackupInfo::getCheckedDriverIndex(QList &lstIndex) +{ + mp_ViewBackable->getCheckedDriverIndex(lstIndex); +} + +void PageDriverBackupInfo::clearAllData() +{ + mp_ViewBackable->clear(); + mp_ViewBackedUp->clear(); + + initTable(); +} + +void PageDriverBackupInfo::updateItemStatus(int index, Status status) +{ + mp_ViewBackable->setItemStatus(index, status); + if (status == ST_DRIVER_BACKUP_FAILED) + mp_ViewBackable->setErrorMsg(index, QString("Backup Failed")); +} + +void PageDriverBackupInfo::setCheckedCBDisnable() +{ + mp_ViewBackable->setCheckedCBDisnable(); +} + +void PageDriverBackupInfo::setHeaderCbEnable(bool enable) +{ + mp_ViewBackable->setHeaderCbEnable(enable); +} diff --git a/deepin-devicemanager/src/Page/PageDriverBackupInfo.h b/deepin-devicemanager/src/Page/PageDriverBackupInfo.h new file mode 100644 index 000000000..f5d037678 --- /dev/null +++ b/deepin-devicemanager/src/Page/PageDriverBackupInfo.h @@ -0,0 +1,94 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef PAGEDRIVERBACKUPINFO_H +#define PAGEDRIVERBACKUPINFO_H + +#include +#include +#include +#include + +#include "MacroDefinition.h" +#include "driveritem.h" + +class DetectedStatusWidget; +class PageDriverTableView; + +using namespace Dtk::Widget; + +class PageDriverBackupInfo : public DFrame +{ + Q_OBJECT +public: + explicit PageDriverBackupInfo(QWidget *parent = nullptr); + + DetectedStatusWidget *headWidget() {return mp_HeadWidget; } + + /** + * @brief addDriverInfoToTableView 添加驱动信息到表格中 + */ + void addDriverInfoToTableView(DriverInfo *info, int index); + + /** + * @brief showTables 显示表格 + */ + void showTables(int, int); + + /** + * @brief getCheckedDriverIndex 获取选中驱动索引 + */ + void getCheckedDriverIndex(QList &lstIndex); + + /** + * @brief clearAllData 清除所有数据 + */ + void clearAllData(); + + /** + * @brief updateItemStatus 更新状态 + */ + void updateItemStatus(int index, Status status); + + /** + * @brief setCheckedCBDisnable 置灰checkbox + */ + void setCheckedCBDisnable(); + + /** + * @brief setHeaderCbEnable 设置表头checkbox状态 + */ + void setHeaderCbEnable(bool enable); + +signals: + void operatorClicked(int index, int itemIndex, DriverOperationItem::Mode mode); + void itemChecked(int index, bool checked); + void redetected(); + void backupAll(); + void undoBackup(); + +private: + /** + * @brief initWidget 初始化界面 + */ + void initUI(); + + /** + * @brief initTable 初始化表格信息 + */ + void initTable(); + + +private: + DetectedStatusWidget *mp_HeadWidget; + DWidget *mp_NotBackupWidget; + PageDriverTableView *mp_ViewBackable; //可备份驱动列表 + DLabel *mp_BackableDriverLabel; + + DWidget *mp_BackedUpWidget; + PageDriverTableView *mp_ViewBackedUp; //已备份驱动列表 + DLabel *mp_BackedUpDriverLabel; +}; + +#endif // PAGEDRIVERBACKUPINFO_H diff --git a/deepin-devicemanager/src/Page/PageDriverInstallInfo.cpp b/deepin-devicemanager/src/Page/PageDriverInstallInfo.cpp new file mode 100644 index 000000000..594afe21a --- /dev/null +++ b/deepin-devicemanager/src/Page/PageDriverInstallInfo.cpp @@ -0,0 +1,278 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include + +#include + +#include "PageDriverInstallInfo.h" +#include "DetectedStatusWidget.h" +#include "PageDriverTableView.h" +#include "DeviceManager.h" + +PageDriverInstallInfo::PageDriverInstallInfo(QWidget *parent) + : DFrame(parent) + , mp_HeadWidget(new DetectedStatusWidget(this)) + , mp_ViewNotInstall(new PageDriverTableView(this)) + , mp_ViewCanUpdate(new PageDriverTableView(this)) + , mp_AllDriverIsNew(new PageDriverTableView(this)) + , mp_InstallLabel(new DLabel(this)) + , mp_UpdateLabel(new DLabel(this)) + , mp_LabelIsNew(new DLabel(this)) + , mp_InstallWidget(new DWidget(this)) + , mp_UpdateWidget(new DWidget(this)) +{ + initUI(); + + connect(mp_ViewNotInstall, &PageDriverTableView::operatorClicked, this, &PageDriverInstallInfo::operatorClicked); + connect(mp_ViewCanUpdate, &PageDriverTableView::operatorClicked, this, &PageDriverInstallInfo::operatorClicked); + connect(mp_ViewNotInstall, &PageDriverTableView::itemChecked, this, &PageDriverInstallInfo::itemChecked); + connect(mp_ViewCanUpdate, &PageDriverTableView::itemChecked, this, &PageDriverInstallInfo::itemChecked); + connect(mp_HeadWidget, &DetectedStatusWidget::installAll, this, &PageDriverInstallInfo::installAll); + connect(mp_HeadWidget, &DetectedStatusWidget::installAll, this, [=](){ + // 安装过程中,所有已经选中的勾选框置灰 + mp_ViewNotInstall->setCheckedCBDisnable(); + mp_ViewCanUpdate->setCheckedCBDisnable(); + }); + connect(mp_HeadWidget, &DetectedStatusWidget::cancelClicked, this, &PageDriverInstallInfo::undoInstall); + connect(mp_HeadWidget, &DetectedStatusWidget::redetected, this, &PageDriverInstallInfo::redetected); +} + +void PageDriverInstallInfo::initUI() +{ + this->setLineWidth(0); + initTable(); + + QVBoxLayout *vLaout = new QVBoxLayout(this); + vLaout->setContentsMargins(20, 20, 20, 0); + vLaout->setSpacing(0); + + // 上方的表头 + QHBoxLayout *headerLayout = new QHBoxLayout(this); + headerLayout->setSpacing(0); + headerLayout->addWidget(mp_HeadWidget); + + // 下方的可滑动区域 + DScrollArea *area = new DScrollArea(this); + area->setMinimumHeight(10); + area->setFrameShape(QFrame::NoFrame); + area->setWidgetResizable(true); + DWidget *frame = new DWidget(this); + frame->setContentsMargins(0, 0, 0, 0); + QVBoxLayout *frameLayout = new QVBoxLayout(); + frameLayout->setContentsMargins(0, 0, 0, 0); + + // 将Label,tabel spacing都放在widget中作为一个整体进行展示 + QVBoxLayout *installLayout = new QVBoxLayout(); + installLayout->setContentsMargins(0, 0, 0, 0); + installLayout->addWidget(mp_InstallLabel); + installLayout->addWidget(mp_ViewNotInstall); + installLayout->addSpacing(7); + mp_InstallWidget->setLayout(installLayout); + frameLayout->addWidget(mp_InstallWidget); + + QVBoxLayout *updateLayout = new QVBoxLayout(); + updateLayout->setContentsMargins(0, 0, 0, 0); + updateLayout->addWidget(mp_UpdateLabel); + updateLayout->addWidget(mp_ViewCanUpdate); + updateLayout->addSpacing(7); + mp_UpdateWidget->setLayout(updateLayout); + frameLayout->addWidget(mp_UpdateWidget); + + frameLayout->addWidget(mp_LabelIsNew); + frameLayout->addWidget(mp_AllDriverIsNew); + + frameLayout->addSpacing(17); + frameLayout->addStretch(); + + frame->setLayout(frameLayout); + area->setWidget(frame); + + vLaout->addLayout(headerLayout); + vLaout->addSpacing(16); + vLaout->addWidget(area); + this->setLayout(vLaout); +} + +void PageDriverInstallInfo::initTable() +{ + // 设置列宽 + mp_ViewNotInstall->initHeaderView(QStringList() << "" + << tr("Device Name") + << tr("Version Available") + << tr("Size") + << tr("Status") + << tr("Action"), true); + mp_ViewNotInstall->setColumnWidth(0, 41); + mp_ViewNotInstall->setColumnWidth(1, 278); + mp_ViewNotInstall->setColumnWidth(2, 150); + mp_ViewNotInstall->setColumnWidth(3, 100); + mp_ViewNotInstall->setColumnWidth(4, 140); + mp_ViewNotInstall->setColumnWidth(5, 60); + + mp_ViewCanUpdate->initHeaderView(QStringList() << "" + << tr("Device Name") + << tr("New Version") + << tr("Size") + << tr("Status") + << tr("Action"), true); + mp_ViewCanUpdate->setHeaderCbStatus(false); + mp_ViewCanUpdate->setColumnWidth(0, 41); + mp_ViewCanUpdate->setColumnWidth(1, 278); + mp_ViewCanUpdate->setColumnWidth(2, 150); + mp_ViewCanUpdate->setColumnWidth(3, 100); + mp_ViewCanUpdate->setColumnWidth(4, 140); + mp_ViewCanUpdate->setColumnWidth(5, 60); + + mp_AllDriverIsNew->initHeaderView(QStringList() << tr("Device Name") << tr("Current Version")); + mp_AllDriverIsNew->setColumnWidth(0, 418); +} + +void PageDriverInstallInfo::addDriverInfoToTableView(DriverInfo *info, int index) +{ + PageDriverTableView *view = nullptr; + if (ST_NOT_INSTALL == info->status()) { + view = mp_ViewNotInstall; + view->appendRowItems(6); + } else if (ST_CAN_UPDATE == info->status()) { + view = mp_ViewCanUpdate; + view->appendRowItems(6); + } else if (ST_DRIVER_IS_NEW == info->status()) { + view = mp_AllDriverIsNew; + view->appendRowItems(2); + } else { + return; + } + + int row = view->model()->rowCount() - 1; + + if (view != mp_AllDriverIsNew) { + + // 设置CheckBtn + DriverCheckItem *cbItem = new DriverCheckItem(this); + connect(cbItem, &DriverCheckItem::sigChecked, view, [index, view](bool checked) { + Q_UNUSED(index) + view->setHeaderCbStatus(checked); + }); + cbItem->setChecked(ST_NOT_INSTALL == info->status()); + view->setWidget(row, 0, cbItem); + + // 设置设备信息 + DriverNameItem *nameItem = new DriverNameItem(this, info->type()); + nameItem->setName(info->name()); + nameItem->setIndex(index); + view->setWidget(row, 1, nameItem); + + // 设置版本 + DriverLabelItem *versionItem = new DriverLabelItem(this, info->debVersion()); + view->setWidget(row, 2, versionItem); + + // 设置大小 + DriverLabelItem *sizeItem = new DriverLabelItem(this, info->size()); + view->setWidget(row, 3, sizeItem); + + // 设置状态 + DriverStatusItem *statusItem = new DriverStatusItem(this, info->status()); + view->setWidget(row, 4, statusItem); + + // 添加操作按钮 + DriverOperationItem *operateItem = new DriverOperationItem(this, ST_NOT_INSTALL == info->status() ? DriverOperationItem::INSTALL : DriverOperationItem::UPDATE); + view->setWidget(row, 5, operateItem); + } else { + // 设置设备信息 + DriverNameItem *nameItem = new DriverNameItem(this, info->type()); + nameItem->setName(info->name()); + nameItem->setIndex(index); + view->setWidget(row, 0, nameItem); + + // 设置版本 + DriverLabelItem *versionItem = new DriverLabelItem(this, info->version()); + view->setWidget(row, 1, versionItem); + } +} + +void PageDriverInstallInfo::addCurDriverInfo(DriverInfo *info) +{ + mp_AllDriverIsNew->appendRowItems(2); + + DriverNameItem *nameItem = new DriverNameItem(this, info->type()); + int row = mp_AllDriverIsNew->model()->rowCount() - 1; + + nameItem->setName(info->name()); + mp_AllDriverIsNew->setWidget(row, 0, nameItem); + + DriverLabelItem *versionItem = new DriverLabelItem(this, info->version()); + mp_AllDriverIsNew->setWidget(row, 1, versionItem); +} + +void PageDriverInstallInfo::showTables(int installLength, int updateLength, int newLength) +{ + // Label显示 + mp_InstallLabel->setText(tr("Missing drivers (%1)").arg(installLength)); + mp_UpdateLabel->setText(tr("Outdated drivers (%1)").arg(updateLength)); + mp_LabelIsNew->setText(tr("Up-to-date drivers (%1)").arg(newLength)); + + // 无需更新驱动列表是否显示 + mp_LabelIsNew->setVisible(newLength != 0); + mp_AllDriverIsNew->setVisible(newLength != 0); + + // 可安装和可更新表格分别与Label作为整体进行隐藏 + mp_InstallWidget->setVisible(installLength != 0); + mp_UpdateWidget->setVisible(updateLength != 0); + + // 显示表头显示的内容 + const QMap &overviewMap = DeviceManager::instance()->getDeviceOverview(); + if (installLength == 0 && updateLength == 0) { + mp_HeadWidget->setNoUpdateDriverUI(overviewMap["Overview"]); + } else { + mp_HeadWidget->setDetectFinishUI(QString::number(installLength + updateLength), overviewMap["Overview"], installLength != 0); + } +} + +void PageDriverInstallInfo::getCheckedDriverIndex(QList &lstIndex) +{ + mp_ViewNotInstall->getCheckedDriverIndex(lstIndex); + mp_ViewCanUpdate->getCheckedDriverIndex(lstIndex); +} + +void PageDriverInstallInfo::clearAllData() +{ + mp_ViewCanUpdate->clear(); + mp_ViewNotInstall->clear(); + mp_AllDriverIsNew->clear(); + + initTable(); +} + +void PageDriverInstallInfo::updateItemStatus(int index, Status status, QString errS) +{ + mp_ViewCanUpdate->setItemStatus(index, status); + mp_ViewNotInstall->setItemStatus(index, status); + + mp_ViewCanUpdate->setErrorMsg(index, errS); + mp_ViewNotInstall->setErrorMsg(index, errS); +} + +void PageDriverInstallInfo::setCheckedCBDisnable() +{ + mp_ViewCanUpdate->setCheckedCBDisnable(); + mp_ViewCanUpdate->setCheckedCBDisnable(); +} + +void PageDriverInstallInfo::setHeaderCbEnable(bool enable) +{ + mp_ViewNotInstall->setHeaderCbEnable(enable); + mp_ViewCanUpdate->setHeaderCbEnable(enable); +} +void PageDriverInstallInfo::slotDownloadProgressChanged(DriverType type, QString size, QStringList msg) +{ + // 将下载过程时时更新到表格上方的状态里面 qCInfo(appLog) << "Download ********** " << msg[0] << " , " << msg[1] << " , " << msg[2]; + mp_HeadWidget->setDownloadUI(type, msg[2], msg[1], size, msg[0].toInt()); +} + +void PageDriverInstallInfo::slotDownloadFinished(int index, Status status) +{ + mp_ViewCanUpdate->setItemStatus(index, status); + mp_ViewNotInstall->setItemStatus(index, status); +} diff --git a/deepin-devicemanager/src/Page/PageDriverInstallInfo.h b/deepin-devicemanager/src/Page/PageDriverInstallInfo.h new file mode 100644 index 000000000..eced16105 --- /dev/null +++ b/deepin-devicemanager/src/Page/PageDriverInstallInfo.h @@ -0,0 +1,114 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef PAGEDRIVERINSTALLINFO_H +#define PAGEDRIVERINSTALLINFO_H + +#include +#include +#include +#include + +#include "MacroDefinition.h" +#include "driveritem.h" + +class DetectedStatusWidget; +class PageDriverTableView; + +using namespace Dtk::Widget; + +class PageDriverInstallInfo : public DFrame +{ + Q_OBJECT +public: + explicit PageDriverInstallInfo(QWidget *parent = nullptr); + + DetectedStatusWidget *headWidget() {return mp_HeadWidget; } + + /** + * @brief addDriverInfoToTableView 添加驱动信息到表格中 + */ + void addDriverInfoToTableView(DriverInfo *info, int index); + + /** + * @brief addCurDriverInfo 当驱动为最新时,不更新 + * @param info + */ + void addCurDriverInfo(DriverInfo *info); + + /** + * @brief showTables 显示表格 + */ + void showTables(int, int, int); + + /** + * @brief getCheckedDriverIndex 获取选中驱动索引 + */ + void getCheckedDriverIndex(QList &lstIndex); + + /** + * @brief clearAllData 清除所有数据 + */ + void clearAllData(); + + /** + * @brief updateItemStatus 更新状态 + */ + void updateItemStatus(int index, Status status, QString errS = ""); + + /** + * @brief setCheckedCBDisnable 置灰checkbox + */ + void setCheckedCBDisnable(); + + /** + * @brief setHeaderCbEnable 设置表头checkbox状态 + */ + void setHeaderCbEnable(bool enable); + +public slots: + /** + * @brief slotDownloadProgressChanged 下载进度刷新 + */ + void slotDownloadProgressChanged(DriverType type, QString size, QStringList msg); + + /** + * @brief slotDownloadProgressChanged 下载完成 + */ + void slotDownloadFinished(int, Status); + +signals: + void operatorClicked(int index, int itemIndex, DriverOperationItem::Mode mode); + void itemChecked(int index, bool checked); + void redetected(); + void installAll(); + void undoInstall(); + +private: + /** + * @brief initWidget 初始化界面 + */ + void initUI(); + + /** + * @brief initTable 初始化表格信息 + */ + void initTable(); + + +private: + DetectedStatusWidget *mp_HeadWidget; + + PageDriverTableView *mp_ViewNotInstall; //没有安装驱动的列表 + PageDriverTableView *mp_ViewCanUpdate; //可以更新的驱动列表 + PageDriverTableView *mp_AllDriverIsNew; //当所有驱动为最新时,显示此page + + DLabel *mp_InstallLabel; + DLabel *mp_UpdateLabel; + DLabel *mp_LabelIsNew; + DWidget *mp_InstallWidget; + DWidget *mp_UpdateWidget; +}; + +#endif // PAGEDRIVERINSTALLINFO_H diff --git a/deepin-devicemanager/src/Page/PageDriverManager.cpp b/deepin-devicemanager/src/Page/PageDriverManager.cpp index fef51e9e6..f66249651 100644 --- a/deepin-devicemanager/src/Page/PageDriverManager.cpp +++ b/deepin-devicemanager/src/Page/PageDriverManager.cpp @@ -15,10 +15,16 @@ #include "DevicePrint.h" #include "DeviceNetwork.h" #include "commontools.h" +#include "PageListView.h" +#include "PageDriverInstallInfo.h" +#include "PageDriverBackupInfo.h" +#include "PageDriverRestoreInfo.h" +#include "DDLog.h" #include #include #include +#include #include #include @@ -27,51 +33,85 @@ #include #include #include +#include #include - - - +#include +using namespace DDLog; PageDriverManager::PageDriverManager(DWidget *parent) : DWidget(parent) , mp_StackWidget(new DStackedWidget(this)) - , mp_ViewNotInstall(new PageDriverTableView(this)) - , mp_ViewCanUpdate(new PageDriverTableView(this)) - , mp_AllDriverIsNew(new PageDriverTableView(this)) - , mp_HeadWidget(new DetectedStatusWidget(this)) - , mp_ScanWidget(new DriverScanWidget(this)) - , mp_InstallLabel(new DLabel(this)) - , mp_UpdateLabel(new DLabel(this)) - , mp_LabelIsNew(new DLabel(this)) - , mp_InstallWidget(new DWidget(this)) - , mp_UpdateWidget(new DWidget(this)) + , mp_ListView(new PageListView(this)) , mp_CurDriverInfo(nullptr) + , mp_CurBackupDriverInfo(nullptr) + , mp_CurRestoreDriverInfo(nullptr) , m_CurIndex(-1) + , m_CurBackupIndex(-1) , m_CancelIndex(-1) , mp_scanner(new DriverScanner(this)) + , mp_DriverInstallInfoPage(new PageDriverInstallInfo(this)) + , mp_DriverBackupInfoPage(new PageDriverBackupInfo(this)) + , mp_DriverRestoreInfoPage(new PageDriverRestoreInfo(this)) + , mp_BackupThread(new DriverBackupThread(this)) { + mp_ListView->setCurType(tr("Driver Install")); + // 初始化界面 initWidget(); qRegisterMetaType>("QList"); qRegisterMetaType("ScanResult"); // 连接dbus处理信号 - connect(DBusDriverInterface::getInstance(), &DBusDriverInterface::downloadProgressChanged, this, &PageDriverManager::slotDownloadProgressChanged); + connect(DBusDriverInterface::getInstance(), &DBusDriverInterface::downloadProgressChanged, this, &PageDriverManager::slotDownloadProgressChanged);//安装 connect(DBusDriverInterface::getInstance(), &DBusDriverInterface::downloadFinished, this, &PageDriverManager::slotDownloadFinished); connect(DBusDriverInterface::getInstance(), &DBusDriverInterface::installProgressChanged, this, &PageDriverManager::slotInstallProgressChanged); connect(DBusDriverInterface::getInstance(), &DBusDriverInterface::installProgressFinished, this, &PageDriverManager::slotInstallProgressFinished); - connect(mp_ViewNotInstall, &PageDriverTableView::operatorClicked, this, &PageDriverManager::slotDriverOperationClicked); - connect(mp_ViewCanUpdate, &PageDriverTableView::operatorClicked, this, &PageDriverManager::slotDriverOperationClicked); - connect(mp_ViewNotInstall, &PageDriverTableView::itemChecked, this, &PageDriverManager::slotItemCheckedClicked); - connect(mp_ViewCanUpdate, &PageDriverTableView::itemChecked, this, &PageDriverManager::slotItemCheckedClicked); - connect(mp_HeadWidget, &DetectedStatusWidget::installAll, this, &PageDriverManager::slotInstallAllDrivers); - connect(mp_HeadWidget, &DetectedStatusWidget::undoInstall, this, &PageDriverManager::slotUndoInstall); - connect(mp_HeadWidget, &DetectedStatusWidget::redetected, this, &PageDriverManager::startScanning); - connect(mp_ScanWidget, &DriverScanWidget::redetected, this, &PageDriverManager::startScanning); + connect(DBusDriverInterface::getInstance(), &DBusDriverInterface::installProgressDetail, this, &PageDriverManager::slotRestoreProgress);//还原 + connect(DBusDriverInterface::getInstance(), &DBusDriverInterface::installFinished, this, &PageDriverManager::slotRestoreFinished); + connect(DBusDriverInterface::getInstance(), &DBusDriverInterface::backupProgressFinished, this, [=](bool success){ + if (success) { + mp_BackupThread->setStatus(DriverBackupThread::Success); + } else { + mp_BackupThread->setStatus(DriverBackupThread::Failed); + } + }); + + connect(mp_DriverInstallInfoPage, &PageDriverInstallInfo::operatorClicked, this, &PageDriverManager::slotDriverOperationClicked); + connect(mp_DriverBackupInfoPage, &PageDriverBackupInfo::operatorClicked, this, &PageDriverManager::slotDriverOperationClicked); + connect(mp_DriverRestoreInfoPage, &PageDriverRestoreInfo::operatorClicked, this, &PageDriverManager::slotDriverOperationClicked); + + connect(mp_DriverInstallInfoPage, &PageDriverInstallInfo::itemChecked, this, &PageDriverManager::slotItemCheckedClicked); + connect(mp_DriverBackupInfoPage, &PageDriverBackupInfo::itemChecked, this, &PageDriverManager::slotBackupItemCheckedClicked); + + connect(mp_DriverInstallInfoPage, &PageDriverInstallInfo::installAll, this, &PageDriverManager::slotInstallAllDrivers); + connect(mp_DriverInstallInfoPage, &PageDriverInstallInfo::undoInstall, this, &PageDriverManager::slotUndoInstall); + connect(mp_DriverInstallInfoPage, &PageDriverInstallInfo::redetected, this, &PageDriverManager::startScanning); + + connect(mp_DriverBackupInfoPage, &PageDriverBackupInfo::backupAll, this, &PageDriverManager::slotBackupAllDrivers); + connect(mp_DriverBackupInfoPage, &PageDriverBackupInfo::undoBackup, this, &PageDriverManager::slotUndoBackup); + connect(mp_DriverBackupInfoPage, &PageDriverBackupInfo::redetected, this, &PageDriverManager::startScanning); + + connect(mp_DriverRestoreInfoPage, &PageDriverRestoreInfo::gotoBackup, this, [=](){ + mp_ListView->setCurType(tr("Driver Backup")); + mp_ListView->itemClicked(tr("Driver Backup")); + }); + connect(mp_DriverRestoreInfoPage, &PageDriverRestoreInfo::redetected, this, &PageDriverManager::startScanning); + + connect(mp_ListView, &PageListView::itemClicked, this, &PageDriverManager::slotListViewWidgetItemClicked); // 将扫描动作放到线程里面 - connect(mp_scanner, &DriverScanner::scanInfo, this, &PageDriverManager::slotScanInfo); + connect(mp_scanner, &DriverScanner::scanInfo, this, &PageDriverManager::scanInfo); connect(mp_scanner, &DriverScanner::scanFinished, this, &PageDriverManager::slotScanFinished); + + connect(mp_BackupThread, &DriverBackupThread::backupProgressChanged, this, &PageDriverManager::slotBackupProgressChanged); + connect(mp_BackupThread, &DriverBackupThread::backupProgressFinished, this, &PageDriverManager::slotBackupFinished); + + // 左侧list,内容固定 + QList > list; + list.append(QPair(tr("Driver Install"), "driverinstall##Overview")); + list.append(QPair(tr("Driver Backup"), "driverbackup##Overview")); + list.append(QPair(tr("Driver Restore"), "driverrestore##Overview")); + updateListView(list); } PageDriverManager::~PageDriverManager() @@ -81,17 +121,17 @@ PageDriverManager::~PageDriverManager() mp_scanner->terminate(); mp_scanner->wait(); } - DELETE_PTR(mp_ViewNotInstall); - DELETE_PTR(mp_ViewCanUpdate); - DELETE_PTR(mp_AllDriverIsNew); - DELETE_PTR(mp_HeadWidget); - DELETE_PTR(mp_ScanWidget); - DELETE_PTR(mp_InstallLabel); - DELETE_PTR(mp_UpdateLabel); - DELETE_PTR(mp_LabelIsNew); + if (mp_BackupThread->isRunning()) { + mp_BackupThread->terminate(); + mp_BackupThread->wait(); + } + DELETE_PTR(mp_ListView); DELETE_PTR(mp_StackWidget); + DELETE_PTR(mp_CurDriverInfo); + DELETE_PTR(mp_CurBackupDriverInfo); + DELETE_PTR(mp_CurRestoreDriverInfo); } void PageDriverManager::addDriverInfo(DriverInfo *info) @@ -113,19 +153,37 @@ bool PageDriverManager::isInstalling() return mp_CurDriverInfo != nullptr; } +bool PageDriverManager::isBackingup() +{ + return mp_CurBackupDriverInfo != nullptr; + +} + +bool PageDriverManager::isRestoring() +{ + return mp_CurRestoreDriverInfo != nullptr; +} + bool PageDriverManager::isScanning() { return m_Scanning; } +void PageDriverManager::updateListView(const QList > &lst) +{ + // 更新左边的列表 + if (mp_ListView) + mp_ListView->updateListItems(lst); +} + void PageDriverManager::scanDriverInfo() { if (m_Scanning) return; m_IsFirstScan = false; m_Scanning = true; - // 如果在安装过程中则不扫描 - if (mp_CurDriverInfo) { + // 如果在安装、备份、还原过程中则不扫描 + if (mp_CurDriverInfo || mp_CurBackupDriverInfo || mp_CurRestoreDriverInfo) { return; } @@ -139,19 +197,44 @@ void PageDriverManager::scanDriverInfo() // 扫描驱动信息线程 mp_scanner->setDriverList(m_ListDriverInfo); mp_scanner->start(); - - // 切换到到扫描的界面 - mp_StackWidget->setCurrentIndex(0); - mp_ScanWidget->setScanningUI("", 0); } -void PageDriverManager::slotDriverOperationClicked(int index) +void PageDriverManager::slotDriverOperationClicked(int index, int itemIndex, DriverOperationItem::Mode mode) { - // 如果已经在安装过程中,则直接添加到list - // 如果不在安装过程中则需要安装 - addToDriverIndex(index); - if (! mp_CurDriverInfo) { - installNextDriver(); + mp_DriverInstallInfoPage->headWidget()->setReDetectEnable(false); + mp_DriverBackupInfoPage->headWidget()->setReDetectEnable(false); + mp_DriverRestoreInfoPage->headWidget()->setReDetectEnable(false); + + switch (mode) { + case DriverOperationItem::INSTALL: + case DriverOperationItem::UPDATE: + // 如果已经在安装过程中,则直接添加到list + // 如果不在安装过程中则需要安装 + addToDriverIndex(index); + if (! mp_CurDriverInfo) { + installNextDriver(); + } + break; + + case DriverOperationItem::BACKUP: + ///驱动备份 + addToBackupIndex(index); + if (!mp_CurBackupDriverInfo) { + backupNextDriver(); + } + break; + + case DriverOperationItem::RESTORE: + ///驱动还原 + mp_CurRestoreDriverInfo = m_ListDriverInfo[index]; + DBusDriverInterface::getInstance()->installDriver(mp_CurRestoreDriverInfo->backupFileName()); + //将其它项置灰 + for (int restorableIndex : m_ListRestorableIndex) { + mp_DriverRestoreInfoPage->setItemOperationEnable(restorableIndex, false); + } + + mp_DriverRestoreInfoPage->headWidget()->setRestoringUI(0, mp_CurRestoreDriverInfo->name()); + break; } } @@ -165,8 +248,22 @@ void PageDriverManager::slotItemCheckedClicked(int index, bool checked) // 如果在安装过程中:1. 添加到list 2. 将item置灰 addToDriverIndex(index); if (mp_CurDriverInfo) { - mp_ViewCanUpdate->setCheckedCBDisnable(); - mp_ViewCanUpdate->setCheckedCBDisnable(); + mp_DriverInstallInfoPage->setCheckedCBDisnable(); + } + } +} + +void PageDriverManager::slotBackupItemCheckedClicked(int index, bool checked) +{ + if (!checked) { + // 取消选中则从list中删除 + removeFromBackupIndex(index); + } else { + // 如果不在安装过程中则直接添加到list + // 如果在备份过程中:1. 添加到list 2. 将item置灰 + addToBackupIndex(index); + if (mp_CurBackupDriverInfo) { + mp_DriverBackupInfoPage->setCheckedCBDisnable(); } } } @@ -175,9 +272,8 @@ void PageDriverManager::slotDownloadProgressChanged(QStringList msg) { if (! mp_CurDriverInfo) return; - // 将下载过程时时更新到表格上方的状态里面 qInfo() << "Download ********** " << msg[0] << " , " << msg[1] << " , " << msg[2]; - mp_HeadWidget->setDownloadUI(mp_CurDriverInfo->type(), msg[2], msg[1], mp_CurDriverInfo->size(), msg[0].toInt()); - + // 将下载过程时时更新到表格上方的状态里面 qCInfo(appLog) << "Download ********** " << msg[0] << " , " << msg[1] << " , " << msg[2]; + mp_DriverInstallInfoPage->headWidget()->setDownloadUI(mp_CurDriverInfo->type(), msg[2], msg[1], mp_CurDriverInfo->size(), msg[0].toInt()); // 设置表格下载中的状态 } @@ -186,8 +282,7 @@ void PageDriverManager::slotDownloadFinished() if (! mp_CurDriverInfo) return; - mp_ViewCanUpdate->setItemStatus(m_CurIndex, mp_CurDriverInfo->status()); - mp_ViewNotInstall->setItemStatus(m_CurIndex, mp_CurDriverInfo->status()); + mp_DriverInstallInfoPage->slotDownloadFinished(m_CurIndex, mp_CurDriverInfo->status()); } void PageDriverManager::slotInstallProgressChanged(int progress) @@ -201,16 +296,15 @@ void PageDriverManager::slotInstallProgressChanged(int progress) QString speed = ""; QString size = ""; getDownloadInfo(progress * 2, mp_CurDriverInfo->m_Byte, speed, size); - mp_HeadWidget->setDownloadUI(mp_CurDriverInfo->type(), speed, size, mp_CurDriverInfo->size(), progress * 2); + mp_DriverInstallInfoPage->headWidget()->setDownloadUI(mp_CurDriverInfo->type(), speed, size, mp_CurDriverInfo->size(), progress * 2); } else { mp_CurDriverInfo->m_Status = ST_INSTALL; // 设置表头状态 - mp_HeadWidget->setInstallUI(mp_CurDriverInfo->type(), mp_CurDriverInfo->name(), (progress - 50) * 2); + mp_DriverInstallInfoPage->headWidget()->setInstallUI(mp_CurDriverInfo->type(), mp_CurDriverInfo->name(), (progress - 50) * 2); } // 设置表格安装中的状态 - mp_ViewCanUpdate->setItemStatus(m_CurIndex, mp_CurDriverInfo->status()); - mp_ViewNotInstall->setItemStatus(m_CurIndex, mp_CurDriverInfo->status()); + mp_DriverInstallInfoPage->updateItemStatus(m_CurIndex, mp_CurDriverInfo->status()); } void PageDriverManager::slotInstallProgressFinished(bool bsuccess, int err) @@ -223,10 +317,11 @@ void PageDriverManager::slotInstallProgressFinished(bool bsuccess, int err) // 成功 if (bsuccess) { successNum += 1; + m_ListUpdateIndex.removeAt(m_ListUpdateIndex.indexOf(m_CurIndex)); } else { // 失败 // 通知网络错误 if (err == EC_NOTIFY_NETWORK) { - mp_HeadWidget->setNetworkErrorUI("0.00MB/s", 0); + mp_DriverInstallInfoPage->headWidget()->setNetworkErrorUI("0.00MB/s", 0); return; } @@ -248,12 +343,9 @@ void PageDriverManager::slotInstallProgressFinished(bool bsuccess, int err) // 安装结束后,对应的表格需要设置相应的状态 mp_CurDriverInfo->m_Status = bsuccess ? ST_SUCESS : ST_FAILED; - mp_ViewCanUpdate->setItemStatus(m_CurIndex, mp_CurDriverInfo->status()); - mp_ViewNotInstall->setItemStatus(m_CurIndex, mp_CurDriverInfo->status()); QString errS = DApplication::translate("QObject", CommonTools::getErrorString(err).toStdString().data()); - mp_ViewCanUpdate->setErrorMsg(m_CurIndex, errS); - mp_ViewNotInstall->setErrorMsg(m_CurIndex, errS); + mp_DriverInstallInfoPage->updateItemStatus(m_CurIndex, mp_CurDriverInfo->status(), errS); // 当前驱动安装结束,如果没有其它驱动需要安装,则显示安装结果 @@ -264,11 +356,20 @@ void PageDriverManager::slotInstallProgressFinished(bool bsuccess, int err) } else { // 设置头部显示效果 if (successNum > 0) { - mp_HeadWidget->setInstallSuccessUI(QString::number(successNum), QString::number(failedNum)); + mp_DriverInstallInfoPage->headWidget()->setInstallSuccessUI(QString::number(successNum), QString::number(failedNum)); } else { - mp_HeadWidget->setInstallFailedUI(); + mp_DriverInstallInfoPage->headWidget()->setInstallFailedUI(); } + if (m_ListUpdateIndex.isEmpty()) { + mp_DriverInstallInfoPage->setHeaderCbEnable(false); + } else { + mp_DriverInstallInfoPage->setHeaderCbEnable(true); + } + mp_DriverInstallInfoPage->headWidget()->setReDetectEnable(true); + mp_DriverBackupInfoPage->headWidget()->setReDetectEnable(true); + mp_DriverRestoreInfoPage->headWidget()->setReDetectEnable(true); + mp_CurDriverInfo = nullptr; m_CurIndex = -1; m_CancelIndex = -1; @@ -279,54 +380,75 @@ void PageDriverManager::slotInstallProgressFinished(bool bsuccess, int err) void PageDriverManager::slotInstallAllDrivers() { - // 安装过程中,所有已经选中的勾选框置灰 - mp_ViewNotInstall->setCheckedCBDisnable(); - mp_ViewCanUpdate->setCheckedCBDisnable(); + mp_DriverBackupInfoPage->headWidget()->setReDetectEnable(false); + mp_DriverRestoreInfoPage->headWidget()->setReDetectEnable(false); // 开始安装驱动 installNextDriver(); } -void PageDriverManager::slotScanInfo(const QString &info, int progress) +void PageDriverManager::slotBackupAllDrivers() { - mp_StackWidget->setCurrentIndex(0); - mp_ScanWidget->refreshProgress(info, progress); + mp_DriverInstallInfoPage->headWidget()->setReDetectEnable(false); + mp_DriverRestoreInfoPage->headWidget()->setReDetectEnable(false); + + backupNextDriver(); } void PageDriverManager::slotScanFinished(ScanResult sr) { - if (SR_Failed == sr) { - mp_ScanWidget->setScanFailedUI(); - } else if (SR_SUCESS == sr) { - mp_ScanWidget->setProgressFinish(); - // 扫描成功,则将数据显示到表格中 +// testDevices(); + + if (SR_SUCESS == sr) { foreach (DriverInfo *info, m_ListDriverInfo) { - addDriverInfoToTableView(info, m_ListDriverInfo.indexOf(info)); + getDebBackupInfo(info); + + mp_DriverInstallInfoPage->addDriverInfoToTableView(info, m_ListDriverInfo.indexOf(info)); + + if (!info->debVersion().isEmpty() && info->status() != ST_NOT_INSTALL) { + //debVersion不为空且debBackupVersion为空,非未安装,表示可备份 + mp_DriverBackupInfoPage->addDriverInfoToTableView(info, m_ListDriverInfo.indexOf(info)); + } + + if (!info->debBackupVersion().isEmpty() && info->debBackupVersion() != info->version()) + mp_DriverRestoreInfoPage->addDriverInfoToTableView(info, m_ListDriverInfo.indexOf(info)); + if (ST_NOT_INSTALL == info->status()) { - m_ListInstallIndex.append(m_ListDriverInfo.size() - 1); + m_ListInstallIndex.append(m_ListDriverInfo.indexOf(info)); } else if (ST_CAN_UPDATE == info->status()) { - m_ListUpdateIndex.append(m_ListDriverInfo.size() - 1); + m_ListUpdateIndex.append(m_ListDriverInfo.indexOf(info)); } else if (ST_DRIVER_IS_NEW == info->status()) { - m_ListNewIndex.append(m_ListDriverInfo.size() - 1); + m_ListNewIndex.append(m_ListDriverInfo.indexOf(info)); + } + + if (!info->debVersion().isEmpty() && info->debBackupVersion() != info->debVersion()) { + m_ListBackableIndex.append(m_ListDriverInfo.indexOf(info)); + } + if (!info->debBackupVersion().isEmpty()) { + m_ListBackedupeIndex.append(m_ListDriverInfo.indexOf(info)); + } + if (!info->debBackupVersion().isEmpty() && info->debBackupVersion() != info->version()) { + m_ListRestorableIndex.append(m_ListDriverInfo.indexOf(info)); } } // 决定显示哪些列表,可安装,可更新,无需安装 - showTables(); + mp_DriverInstallInfoPage->showTables(m_ListInstallIndex.size(), m_ListUpdateIndex.size(), m_ListNewIndex.size()); + mp_DriverBackupInfoPage->showTables(m_ListBackableIndex.size(), m_ListBackedupeIndex.size()); + mp_DriverRestoreInfoPage->showTables(m_ListRestorableIndex.size()); // 获取已经勾选的驱动index m_ListDriverIndex.clear(); - mp_ViewNotInstall->getCheckedDriverIndex(m_ListDriverIndex); - mp_ViewCanUpdate->getCheckedDriverIndex(m_ListDriverIndex); - + mp_DriverInstallInfoPage->getCheckedDriverIndex(m_ListDriverIndex); + m_ListBackupIndex.clear(); + mp_DriverBackupInfoPage->getCheckedDriverIndex(m_ListBackupIndex); } else if (SR_NETWORD_ERR == sr) { - mp_ScanWidget->setNetworkErr(); mp_scanner->quit(); } // 扫描结束,可以继续扫描 m_Scanning = false; - emit scanFinished(); + emit scanFinished(sr); } void PageDriverManager::slotUndoInstall() @@ -335,215 +457,212 @@ void PageDriverManager::slotUndoInstall() m_CancelIndex = m_CurIndex; DBusDriverInterface::getInstance()->undoInstallDriver(); } + + for (int index : m_ListDriverIndex) { + mp_DriverInstallInfoPage->updateItemStatus(index, m_ListDriverInfo[index]->status()); + } + m_ListDriverIndex.clear(); } -void PageDriverManager::initWidget() +void PageDriverManager::slotUndoBackup() { - initTable(); + mp_BackupThread->undoBackup(); - QHBoxLayout *mainLayout = new QHBoxLayout(); - mainLayout->setContentsMargins(10, 10, 10, 10); - mainLayout->addWidget(mp_StackWidget); - this->setLayout(mainLayout); + // 直接清空列表,不再备份剩余的驱动 + for (int index : m_ListBackupIndex) { + mp_DriverBackupInfoPage->updateItemStatus(index, ST_DRIVER_NOT_BACKUP); + } + m_ListBackupIndex.clear(); +} - DFrame *mainFrame = new DFrame(this); - mainFrame->setLineWidth(0); - initMainFrame(mainFrame); - mp_StackWidget->addWidget(mp_ScanWidget); - mp_StackWidget->addWidget(mainFrame); +void PageDriverManager::slotListViewWidgetItemClicked(const QString &itemStr) +{ + m_CurItemStr = itemStr; + if (tr("Driver Install") == itemStr) { + mp_StackWidget->setCurrentIndex(0); + } else if (tr("Driver Backup") == itemStr) { + mp_StackWidget->setCurrentIndex(1); + } else if (tr("Driver Restore") == itemStr) { + mp_StackWidget->setCurrentIndex(2); + } } -void PageDriverManager::initTable() +void PageDriverManager::slotBackupProgressChanged(int progress) { - // 设置列宽 - mp_ViewNotInstall->initHeaderView(QStringList() << "" - << QObject::tr("Device Name") - << QObject::tr("Version Available") - << QObject::tr("Size") - << QObject::tr("Status") - << QObject::tr("Action"), true); - mp_ViewNotInstall->setColumnWidth(0, 41); - mp_ViewNotInstall->setColumnWidth(1, 324); - mp_ViewNotInstall->setColumnWidth(2, 186); - mp_ViewNotInstall->setColumnWidth(3, 120); - mp_ViewNotInstall->setColumnWidth(4, 150); - - mp_ViewCanUpdate->initHeaderView(QStringList() << "" - << QObject::tr("Device Name") - << QObject::tr("New Version") - << QObject::tr("Size") - << QObject::tr("Status") - << QObject::tr("Action"), true); - mp_ViewCanUpdate->setHeaderCbStatus(false); - mp_ViewCanUpdate->setColumnWidth(0, 41); - mp_ViewCanUpdate->setColumnWidth(1, 324); - mp_ViewCanUpdate->setColumnWidth(2, 186); - mp_ViewCanUpdate->setColumnWidth(3, 120); - mp_ViewCanUpdate->setColumnWidth(4, 150); - - mp_AllDriverIsNew->initHeaderView(QStringList() << QObject::tr("Device Name") << QObject::tr("Current Version")); - mp_AllDriverIsNew->setColumnWidth(0, 508); -} - -void PageDriverManager::initMainFrame(DFrame *mainFrame) -{ - QVBoxLayout *vLaout = new QVBoxLayout(); - vLaout->setContentsMargins(20, 20, 20, 0); - vLaout->setSpacing(0); - - // 上方的表头 - QHBoxLayout *headerLayout = new QHBoxLayout(); - initHeadWidget(headerLayout); - vLaout->addLayout(headerLayout); - vLaout->addSpacing(16); - - // 下方的可滑动区域 - DScrollArea *area = new DScrollArea(this); - initScrollArea(area); - vLaout->addWidget(area); - - mainFrame->setLayout(vLaout); -} - -void PageDriverManager::initHeadWidget(QHBoxLayout *hLayout) -{ - hLayout->setSpacing(0); - hLayout->addWidget(mp_HeadWidget); -} - -void PageDriverManager::initScrollArea(DScrollArea *area) -{ - area->setMinimumHeight(10); - area->setFrameShape(QFrame::NoFrame); - area->setWidgetResizable(true); - DWidget *frame = new DWidget(this); - frame->setContentsMargins(0, 0, 0, 0); - QVBoxLayout *frameLayout = new QVBoxLayout(); -// frameLayout->setSpacing(8); - frameLayout->setContentsMargins(0, 0, 0, 0); - - // 将Label,tabel spacing都放在widget中作为一个整体进行展示 - QVBoxLayout *installLayout = new QVBoxLayout(); - installLayout->setContentsMargins(0, 0, 0, 0); - installLayout->addWidget(mp_InstallLabel); - installLayout->addWidget(mp_ViewNotInstall); - installLayout->addSpacing(7); - mp_InstallWidget->setLayout(installLayout); - frameLayout->addWidget(mp_InstallWidget); - - QVBoxLayout *updateLayout = new QVBoxLayout(); - updateLayout->setContentsMargins(0, 0, 0, 0); - updateLayout->addWidget(mp_UpdateLabel); - updateLayout->addWidget(mp_ViewCanUpdate); - updateLayout->addSpacing(7); - mp_UpdateWidget->setLayout(updateLayout); - frameLayout->addWidget(mp_UpdateWidget); - - - frameLayout->addWidget(mp_LabelIsNew); - frameLayout->addWidget(mp_AllDriverIsNew); - - frameLayout->addSpacing(17); - frameLayout->addStretch(); - - frame->setLayout(frameLayout); - area->setWidget(frame); -} - -void PageDriverManager::addDriverInfoToTableView(DriverInfo *info, int index) -{ - PageDriverTableView *view = nullptr; - if (ST_NOT_INSTALL == info->status()) { - view = mp_ViewNotInstall; - view->appendRowItems(6); - } else if (ST_CAN_UPDATE == info->status()) { - view = mp_ViewCanUpdate; - view->appendRowItems(6); - } else if (ST_DRIVER_IS_NEW == info->status()) { - view = mp_AllDriverIsNew; - view->appendRowItems(2); - } else { + +} + +void PageDriverManager::slotBackupFinished(bool bsuccess) +{ + if (! mp_CurBackupDriverInfo) return; + + if (bsuccess) { + m_backupSuccessNum += 1; + // 备份成功, 直接添加到可还原列表,并在可备份列表中移除该项 + m_ListBackedupeIndex.append(m_CurBackupIndex); + getDebBackupInfo(m_ListDriverInfo[m_CurBackupIndex]); + if (m_ListDriverInfo[m_CurBackupIndex]->debBackupVersion() != m_ListDriverInfo[m_CurBackupIndex]->version()) { + m_ListRestorableIndex.append(m_CurBackupIndex); + mp_DriverRestoreInfoPage->addDriverInfoToTableView(m_ListDriverInfo[m_CurBackupIndex], m_CurBackupIndex); + } + mp_DriverRestoreInfoPage->showTables(m_ListRestorableIndex.size()); + m_ListBackableIndex.removeAt(m_ListBackableIndex.indexOf(m_CurBackupIndex)); + } else { + m_backupFailedNum += 1; } - int row = view->model()->rowCount() - 1; + // 安装结束后,对应的表格需要设置相应的状态 + mp_CurBackupDriverInfo->m_Status = bsuccess ? ST_DRIVER_BACKUP_SUCCESS : ST_DRIVER_BACKUP_FAILED; + mp_DriverBackupInfoPage->updateItemStatus(m_CurBackupIndex, mp_CurBackupDriverInfo->status()); - if (view != mp_AllDriverIsNew) { + if (!m_ListBackupIndex.isEmpty()) { + sleep(1); + backupNextDriver(); + } else { + if (!m_ListBackableIndex.isEmpty()) { + mp_DriverBackupInfoPage->headWidget()->setBackableDriverUI(m_ListBackableIndex.size(), m_ListBackedupeIndex.size()); + mp_DriverBackupInfoPage->setHeaderCbEnable(true); + } else { + mp_DriverBackupInfoPage->headWidget()->setNoBackupDriverUI(m_ListBackableIndex.size(), m_ListBackedupeIndex.size()); + mp_DriverBackupInfoPage->setHeaderCbEnable(false); + } - // 设置CheckBtn - DriverCheckItem *cbItem = new DriverCheckItem(this); - connect(cbItem, &DriverCheckItem::sigChecked, view, [index, view](bool checked) { - Q_UNUSED(index) - view->setHeaderCbStatus(checked); - }); - cbItem->setChecked(ST_NOT_INSTALL == info->status()); - view->setWidget(row, 0, cbItem); + mp_DriverInstallInfoPage->headWidget()->setReDetectEnable(true); + mp_DriverBackupInfoPage->headWidget()->setReDetectEnable(true); + mp_DriverRestoreInfoPage->headWidget()->setReDetectEnable(true); - // 设置设备信息 - DriverNameItem *nameItem = new DriverNameItem(this, info->type()); - nameItem->setName(info->name()); - nameItem->setIndex(index); - view->setWidget(row, 1, nameItem); + mp_CurBackupDriverInfo = nullptr; + m_CurBackupIndex = -1; + m_backupSuccessNum = 0; + m_backupFailedNum = 0; + } +} - // 设置版本 - DriverLabelItem *versionItem = new DriverLabelItem(this, info->debVersion()); - view->setWidget(row, 2, versionItem); +void PageDriverManager::slotRestoreProgress(int progress, QString strDeatils) +{ + if(mp_CurRestoreDriverInfo == nullptr) + return; + if (progress >= 100) { + mp_DriverRestoreInfoPage->headWidget()->setRestoreDriverUI(m_ListRestorableIndex.size()); + } else { + mp_DriverRestoreInfoPage->headWidget()->setRestoringUI(progress, mp_CurRestoreDriverInfo->name()); + } +} - // 设置大小 - DriverLabelItem *sizeItem = new DriverLabelItem(this, info->size()); - view->setWidget(row, 3, sizeItem); +void PageDriverManager::slotRestoreFinished(bool success, QString msg) +{ + int index = -1; + if (mp_CurRestoreDriverInfo) { + index = m_ListDriverInfo.indexOf(mp_CurRestoreDriverInfo); + for (int i = 0; i < m_ListRestorableIndex.size(); i++) { + if (index == m_ListRestorableIndex[i]) { + if (success) { + //移除已还原项 + m_ListRestorableIndex.removeAt(i); + mp_DriverRestoreInfoPage->headWidget()->setRestoreDriverUI(m_ListRestorableIndex.size()); + } else { + //还原失败,弹出提示窗口 + int clickedButtonIndex = mp_FailedDialog->exec(); + if (1 == clickedButtonIndex) { + //反馈 + qCDebug(appLog) << __func__ << "fedback...."; + CommonTools::feedback(); + } + } + + //恢复其它置灰项 + for (int backedupeIndex : m_ListRestorableIndex) { + if (backedupeIndex != i) + mp_DriverRestoreInfoPage->setItemOperationEnable(backedupeIndex, true); + } + break; + } + } + } - // 设置状态 - DriverStatusItem *statusItem = new DriverStatusItem(this, info->status()); - view->setWidget(row, 4, statusItem); + mp_DriverInstallInfoPage->headWidget()->setReDetectEnable(true); + mp_DriverBackupInfoPage->headWidget()->setReDetectEnable(true); + mp_DriverRestoreInfoPage->headWidget()->setReDetectEnable(true); - // 添加操作按钮 - DriverOperationItem *operateItem = new DriverOperationItem(this, ST_NOT_INSTALL == info->status() ? true : false); - view->setWidget(row, 5, operateItem); - } else { - // 设置设备信息 - DriverNameItem *nameItem = new DriverNameItem(this, info->type()); - nameItem->setName(info->name()); - nameItem->setIndex(index); - view->setWidget(row, 0, nameItem); + mp_CurRestoreDriverInfo = nullptr; - // 设置版本 - DriverLabelItem *versionItem = new DriverLabelItem(this, info->version()); - view->setWidget(row, 1, versionItem); + //刷新表格内容 + mp_DriverRestoreInfoPage->clearAllData(); + for (int backedupeIndex : m_ListRestorableIndex) { + mp_DriverRestoreInfoPage->addDriverInfoToTableView(m_ListDriverInfo[backedupeIndex], backedupeIndex); } + mp_DriverRestoreInfoPage->showTables(m_ListRestorableIndex.size()); } -void PageDriverManager::addCurDriverInfo(DriverInfo *info) +void PageDriverManager::initWidget() { - mp_AllDriverIsNew->appendRowItems(2); + QHBoxLayout *mainLayout = new QHBoxLayout(); + mainLayout->setContentsMargins(0, 0, 0, 0); + mainLayout->setSpacing(0); + mainLayout->addWidget(mp_ListView); + mainLayout->addWidget(mp_StackWidget); + this->setLayout(mainLayout); - DriverNameItem *nameItem = new DriverNameItem(this, info->type()); - int row = mp_AllDriverIsNew->model()->rowCount() - 1; + mp_StackWidget->setContentsMargins(10, 10, 10, 10); + mp_StackWidget->addWidget(mp_DriverInstallInfoPage); + mp_StackWidget->addWidget(mp_DriverBackupInfoPage); + mp_StackWidget->addWidget(mp_DriverRestoreInfoPage); - nameItem->setName(info->name()); - mp_AllDriverIsNew->setWidget(row, 0, nameItem); + mp_FailedDialog = new DDialog(this); + DWidget *contentFrame = new DWidget(this); - DriverLabelItem *versionItem = new DriverLabelItem(this, info->version()); - mp_AllDriverIsNew->setWidget(row, 1, versionItem); + DLabel *retryLabel = new DLabel(this); + QVBoxLayout *vLayout = new QVBoxLayout(this); + retryLabel->setElideMode(Qt::ElideMiddle); + retryLabel->setText(QObject::tr("Please try again or give us feedback")); + vLayout->addWidget(retryLabel, 0, Qt::AlignHCenter); + contentFrame->setLayout(vLayout); + mp_FailedDialog->setIcon(QIcon::fromTheme("cautious")); + mp_FailedDialog->setTitle(QObject::tr("Driver restore failed!")); + mp_FailedDialog->addContent(contentFrame); + mp_FailedDialog->addButton(tr("OK"), false, DDialog::ButtonNormal); + mp_FailedDialog->addButton(tr("Feedback"), false, DDialog::ButtonNormal); } void PageDriverManager::installNextDriver() { - if (m_ListDriverIndex.size() > 0) { + if (!m_ListDriverIndex.isEmpty()) { m_CurIndex = m_ListDriverIndex[0]; m_ListDriverIndex.removeAt(0); DriverInfo *info = m_ListDriverInfo[m_CurIndex]; if (info) { mp_CurDriverInfo = info; mp_CurDriverInfo->m_Status = ST_DOWNLOADING; - mp_ViewCanUpdate->setItemStatus(m_CurIndex, mp_CurDriverInfo->status()); - mp_ViewNotInstall->setItemStatus(m_CurIndex, mp_CurDriverInfo->status()); - mp_HeadWidget->setDownloadUI(mp_CurDriverInfo->type(), "0MB/s", "0MB", mp_CurDriverInfo->size(), 0); + mp_DriverInstallInfoPage->updateItemStatus(m_CurIndex, mp_CurDriverInfo->status()); + mp_DriverInstallInfoPage->headWidget()->setDownloadUI(mp_CurDriverInfo->type(), "0MB/s", "0MB", mp_CurDriverInfo->size(), 0); DBusDriverInterface::getInstance()->installDriver(info->packages(), info->debVersion()); } } } +void PageDriverManager::backupNextDriver() +{ + if (!m_ListBackupIndex.isEmpty()) { + m_CurBackupIndex = m_ListBackupIndex[0]; + m_ListBackupIndex.removeAt(0); + DriverInfo *info = m_ListDriverInfo[m_CurBackupIndex]; + if (info) { + mp_CurBackupDriverInfo = info; + qCDebug(appLog) << __func__ << "backup driver: " << mp_CurBackupDriverInfo->name(); + mp_CurBackupDriverInfo->m_Status = ST_DRIVER_BACKING_UP; + mp_DriverBackupInfoPage->updateItemStatus(m_CurBackupIndex, mp_CurBackupDriverInfo->status()); + mp_DriverBackupInfoPage->headWidget()->setBackingUpDriverUI(mp_CurBackupDriverInfo->name(), + m_ListBackupIndex.size() + m_backupSuccessNum + m_backupFailedNum + 1, + m_backupSuccessNum + m_backupFailedNum + 1); + if (!mp_BackupThread->isRunning()) { + mp_BackupThread->setBackupDriverInfo(info); + mp_BackupThread->start(); + } + } + } +} + void PageDriverManager::scanDevices() { // 显卡 @@ -562,7 +681,9 @@ void PageDriverManager::scanDevices() // scanDevicesInfo(QObject::tr("Camera"), DR_Camera); // 打印机 - scanDevicesInfo(QObject::tr("Printer"), DR_Printer); +// scanDevicesInfo(QObject::tr("Printer"), DR_Printer); //由于task 353401 要求 + +// scanDevicesInfo(QObject::tr("Other Devices"), DR_OtherDevice); //由于task 353401 要求 } void PageDriverManager::testScanDevices() @@ -684,11 +805,11 @@ void PageDriverManager::scanDevicesInfo(const QString &deviceType, DriverType dr info->m_DriverName = device->driver(); // 驱动名称 info->m_Version = device->getDriverVersion(); // 驱动版本 - qInfo() << "m_Name" << info->m_Name; - qInfo() << "m_VendorId" << info->m_VendorId; - qInfo() << "m_ModelId" << info->m_ModelId; - qInfo() << "m_Status" << info->m_Status; - qInfo() << "m_Type" << info->m_Type; + qCInfo(appLog) << "m_Name" << info->m_Name; + qCInfo(appLog) << "m_VendorId" << info->m_VendorId; + qCInfo(appLog) << "m_ModelId" << info->m_ModelId; + qCInfo(appLog) << "m_Status" << info->m_Status; + qCInfo(appLog) << "m_Type" << info->m_Type; DevicePrint *print = dynamic_cast(device); if (print != nullptr) { @@ -709,62 +830,32 @@ void PageDriverManager::scanDevicesInfo(const QString &deviceType, DriverType dr } } -void PageDriverManager::showTables() -{ - int installLength = m_ListInstallIndex.size(); - int updateLength = m_ListUpdateIndex.size(); - int newLength = m_ListNewIndex.size(); - - // Label显示 - mp_InstallLabel->setText(QObject::tr("Missing drivers (%1)").arg(m_ListInstallIndex.size())); - mp_UpdateLabel->setText(QObject::tr("Outdated drivers (%1)").arg(m_ListUpdateIndex.size())); - mp_LabelIsNew->setText(QObject::tr("Up-to-date drivers (%1)").arg(m_ListNewIndex.size())); - - // 无需更新驱动列表是否显示 - mp_LabelIsNew->setVisible(newLength != 0); - mp_AllDriverIsNew->setVisible(newLength != 0); - - // 可安装和可更新表格分别与Label作为整体进行隐藏 - mp_InstallWidget->setVisible(installLength != 0); - mp_UpdateWidget->setVisible(updateLength != 0); - - // 显示表头显示的内容 - const QMap &overviewMap = DeviceManager::instance()->getDeviceOverview(); - if (installLength == 0 && updateLength == 0) { - mp_HeadWidget->setNoUpdateDriverUI(overviewMap["Overview"]); - } else { - mp_HeadWidget->setDetectFinishUI(QString::number(installLength + updateLength), overviewMap["Overview"], installLength != 0); - } - - // 显示驱动列表界面 - mp_StackWidget->setCurrentIndex(1); -} - - void PageDriverManager::clearAllData() { m_ListNewIndex.clear(); m_ListDriverIndex.clear(); m_ListUpdateIndex.clear(); m_ListInstallIndex.clear(); + m_ListBackupIndex.clear(); + m_ListBackableIndex.clear(); + m_ListBackedupeIndex.clear(); + m_ListRestorableIndex.clear(); foreach (DriverInfo *info, m_ListDriverInfo) { delete info; } m_ListDriverInfo.clear(); - mp_ViewCanUpdate->clear(); - mp_ViewNotInstall->clear(); - mp_AllDriverIsNew->clear(); - - initTable(); + mp_DriverInstallInfoPage->clearAllData(); + mp_DriverBackupInfoPage->clearAllData(); + mp_DriverRestoreInfoPage->clearAllData(); } void PageDriverManager::addToDriverIndex(int index) { // 如果第一次添加到index,一键安装按钮置灰 if (m_ListDriverIndex.size() <= 0) { - mp_HeadWidget->setInstallBtnEnable(true); + mp_DriverInstallInfoPage->headWidget()->setInstallBtnEnable(true); } bool add = true; @@ -780,30 +871,43 @@ void PageDriverManager::addToDriverIndex(int index) } } -void PageDriverManager::removeFromDriverIndex(int index) +void PageDriverManager::addToBackupIndex(int index) { - for (int i = 0; i < m_ListDriverIndex.size(); i++) { - if (index == m_ListDriverIndex[i]) { - m_ListDriverIndex.removeAt(i); - break; - } + if (m_ListBackupIndex.isEmpty()) { + mp_DriverBackupInfoPage->headWidget()->setBackupBtnEnable(true); } + int ret = m_ListBackupIndex.indexOf(index); + + if (ret < 0) { + m_ListBackupIndex.append(index); + } +} + +void PageDriverManager::removeFromDriverIndex(int index) +{ + m_ListDriverIndex.removeAt(m_ListDriverIndex.indexOf(index)); + // 移除时 如果一个都没有 则一键安装按钮置灰 - if (m_ListDriverIndex.size() <= 0) { - mp_HeadWidget->setInstallBtnEnable(false); + if (m_ListDriverIndex.isEmpty()) { + mp_DriverInstallInfoPage->headWidget()->setInstallBtnEnable(false); + } +} + +void PageDriverManager::removeFromBackupIndex(int index) +{ + m_ListBackupIndex.removeAt(m_ListBackupIndex.indexOf(index)); + + if (m_ListBackupIndex.isEmpty()) { + mp_DriverBackupInfoPage->headWidget()->setBackupBtnEnable(false); } } void PageDriverManager::failAllIndex() { foreach (int index, m_ListDriverIndex) { - mp_ViewCanUpdate->setItemStatus(index, ST_FAILED); - mp_ViewNotInstall->setItemStatus(index, ST_FAILED); - QString errS = DApplication::translate("QObject", CommonTools::getErrorString(EC_NETWORK).toStdString().data()); - mp_ViewCanUpdate->setErrorMsg(index, errS); - mp_ViewNotInstall->setErrorMsg(index, errS); + mp_DriverInstallInfoPage->updateItemStatus(index, ST_FAILED, errS); } } @@ -849,3 +953,64 @@ void PageDriverManager::getDownloadInfo(int progress, qint64 total, QString &spe } msec = QDateTime::currentMSecsSinceEpoch(); } + +void PageDriverManager::testDevices() +{ + DriverInfo *info = new DriverInfo(); + info->m_Name = "Sharp MX-C2622R PS, 1.1"; + info->m_Version = "0.0.1"; + info->m_DebVersion = "1.0.0"; + info->m_Size = "23.2"; + info->m_Type = DR_Tablet; + info->m_Packages = "com.sharp.griffin2light"; + info->m_Status = ST_CAN_UPDATE; + m_ListDriverInfo.append(info); + + DriverInfo *info1 = new DriverInfo(); + info1->m_Name = "Deli DL-888F"; + info1->m_Version = "1.0"; + info1->m_DebVersion = "1.1"; + info1->m_Size = "102.45"; + info1->m_Type = DR_Mouse; + info1->m_Packages = "deli-printer"; + info1->m_Status = ST_CAN_UPDATE; + m_ListDriverInfo.append(info1); + +// DriverInfo *info2 = new DriverInfo(); +// info2->m_Name = "DONNA LQ Foomatic/DONNA (recommended)"; +// info2->m_DebVersion = "1.0.0.1"; +// info2->m_Type = DR_Printer; +// info2->m_Packages = "com.cn.donna.printer-lq-drv"; +// info2->m_Status = ST_CAN_UPDATE; +// m_ListDriverInfo.append(info2); + + DriverInfo *info3 = new DriverInfo(); + info3->m_Name = "Aurora AD229MNA Series"; + info3->m_DebVersion = "1.0.0"; + info3->m_Type = DR_WiFi; + info3->m_Packages = "aurora.a4-adxxx"; + info3->m_Status = ST_CAN_UPDATE; + m_ListDriverInfo.append(info3); +} + +void PageDriverManager::getDebBackupInfo(DriverInfo *info) +{ + QString debname = info->packages(); + QString backupPath = QString("%1/driver/%2").arg(CommonTools::getBackupPath()).arg(debname); + QDir destdir(backupPath); + if (destdir.exists()) { + //获取当前路径下的所有文件名 + QFileInfoList fileInfoList = destdir.entryInfoList(); + foreach (QFileInfo fileInfo, fileInfoList) { + if (fileInfo.fileName() == "." || fileInfo.fileName() == "..") + continue; + if (fileInfo.isFile() && fileInfo.fileName().contains(".deb") && fileInfo.fileName().contains(debname)) { + QString tmps = fileInfo.fileName().remove(debname).remove(".deb"); + QStringList tmpsl = tmps.split('_', QString::SkipEmptyParts); + info->m_DebBackupVersion = tmpsl.first(); + info->m_BackupFileName = fileInfo.absoluteFilePath(); + } + } + } + +} diff --git a/deepin-devicemanager/src/Page/PageDriverManager.h b/deepin-devicemanager/src/Page/PageDriverManager.h index 7388abaf2..afc7f8ddf 100644 --- a/deepin-devicemanager/src/Page/PageDriverManager.h +++ b/deepin-devicemanager/src/Page/PageDriverManager.h @@ -6,11 +6,14 @@ #define PAGEDRIVERMANAGER_H #include "MacroDefinition.h" +#include "driveritem.h" +#include "DriverBackupThread.h" #include #include #include #include +#include #include #include @@ -21,6 +24,10 @@ class DriverScanWidget; class QHBoxLayout; class DriverScanner; class DriverWidget; +class PageListView; +class PageDriverBackupInfo; +class PageDriverRestoreInfo; +class PageDriverInstallInfo; //class DFrame; @@ -51,12 +58,28 @@ class PageDriverManager : public DWidget */ bool isInstalling(); + /** + * @brief isBackingup:是否正在备份 + */ + bool isBackingup(); + + /** + * @brief isRestoring:是否正在还原 + */ + bool isRestoring(); + /** * @brief isScanning:判断当前是否扫描 * @return */ bool isScanning(); + /** + * @brief updateListView:更新ListView + * @param lst: + */ + void updateListView(const QList > &lst); + public slots: /** @@ -68,7 +91,7 @@ private slots: /** * @brief slotDriverOperationClicked 处理点击信号安装更新操作处理 */ - void slotDriverOperationClicked(int index); + void slotDriverOperationClicked(int index, int itemIndex, DriverOperationItem::Mode mode); /** * @brief slotItemCheckedClicked 处理选中按钮 @@ -77,6 +100,13 @@ private slots: */ void slotItemCheckedClicked(int index, bool checked); + /** + * @brief slotBackupItemCheckedClicked 处理选中按钮 + * @param index + * @param checked + */ + void slotBackupItemCheckedClicked(int index, bool checked); + /** * @brief slotDownloadProgressChanged 驱动下载时回调,返回驱动下载进度、速度、已下载大小信息 */ @@ -103,9 +133,9 @@ private slots: void slotInstallAllDrivers(); /** - * @brief slotScanInfo 时时更新扫描信息 + * @brief slotBackupAllDrivers 安装所有驱动 */ - void slotScanInfo(const QString &info, int progress); + void slotBackupAllDrivers(); /** * @brief slotScanFinished 扫描结束 @@ -117,59 +147,68 @@ private slots: */ void slotUndoInstall(); -signals: - void startScanning(); - void scanFinished(); - -private: /** - * @brief initWidget 初始化界面 + * @brief slotUndoBackup 取消备份 */ - void initWidget(); + void slotUndoBackup(); /** - * @brief initTable 初始化表格信息 + * @brief slotListViewWidgetItemClicked:ListView item点击槽函数 + * @param itemStr:item显示字符串 */ - void initTable(); + void slotListViewWidgetItemClicked(const QString &itemStr); /** - * @brief initMainFrame + * @brief slotBackupFinished 备份结束 */ - void initMainFrame(DFrame *mainFrame); + void slotBackupProgressChanged(int progress); /** - * @brief initHeadWidget 初始化表头编辑 - * @param hLayout + * @brief slotBackupFinished 备份结束 */ - void initHeadWidget(QHBoxLayout *hLayout); + void slotBackupFinished(bool bsuccess); /** - * @brief initScrollArea 在frame中添加scrollarea - * @param frame + * @brief slotRestoreProgress 还原进度刷新 */ - void initScrollArea(DScrollArea *area); + void slotRestoreProgress(int progress, QString strDeatils); /** - * @brief addDriverInfo 添加可以安装和可以更新的驱动 - * @param info 驱动信息 + * @brief slotRestoreFinished 还原结束 */ - void addDriverInfoToTableView(DriverInfo *info, int index); + void slotRestoreFinished(bool success, QString msg); + +signals: + void startScanning(); + void itemClicked(const QString &itemStr); + void scanInfo(const QString &info, int progress); + void scanFinished(ScanResult sr); + void sigBackupFinished(bool bsuccess); +private: /** - * @brief addCurDriverInfo 当驱动为最新时,不更新 - * @param info + * @brief initWidget 初始化界面 */ - void addCurDriverInfo(DriverInfo *info); + void initWidget(); /** * @brief installNextDriver */ void installNextDriver(); + /** + * @brief backupNextDriver 备份下个驱动 + */ + void backupNextDriver(); + /** * @brief scanDevices 从硬件信息中扫描信息 */ void scanDevices(); + + /** + * @brief testScanDevices 测试用 + */ void testScanDevices(); /** @@ -178,11 +217,6 @@ private slots: */ void scanDevicesInfo(const QString &deviceType, DriverType driverType); - /** - * @brief showTables 决定显示哪些列表,可安装,可更新,无需安装 - */ - void showTables(); - /** * @brief clearAllData 清理数据 */ @@ -194,12 +228,24 @@ private slots: */ void addToDriverIndex(int index); + /** + * @brief addToBackupIndex 添加到备份列表 + * @param index + */ + void addToBackupIndex(int index); + /** * @brief removeFromDriverIndex * @param index */ void removeFromDriverIndex(int index); + /** + * @brief removeFromBackupIndex 从备份列表移除 + * @param index + */ + void removeFromBackupIndex(int index); + /** * @brief failAllIndex */ @@ -219,30 +265,47 @@ private slots: */ void getDownloadInfo(int porgress, qint64 total, QString &speed, QString &size); + void testDevices(); + + /** + * @brief getDebBackupInfo 获取备份信息 + */ + void getDebBackupInfo(DriverInfo *info); + private: - DStackedWidget *mp_StackWidget; - PageDriverTableView *mp_ViewNotInstall; //没有安装驱动的列表 - PageDriverTableView *mp_ViewCanUpdate; //可以更新的驱动列表 - PageDriverTableView *mp_AllDriverIsNew; //当所有驱动为最新时,显示此page - DetectedStatusWidget *mp_HeadWidget; - DriverScanWidget *mp_ScanWidget; - DLabel *mp_InstallLabel; - DLabel *mp_UpdateLabel; - DLabel *mp_LabelIsNew; - DWidget *mp_InstallWidget; - DWidget *mp_UpdateWidget; + DStackedWidget *mp_StackWidget; + PageListView *mp_ListView; // 左边的list QList m_ListDriverInfo; // 保存所有驱动信息 - DriverInfo *mp_CurDriverInfo; - int m_CurIndex; - int m_CancelIndex; - QList m_ListDriverIndex; - QList m_ListInstallIndex; - QList m_ListUpdateIndex; - QList m_ListNewIndex; - DriverScanner *mp_scanner; // 扫描驱动线程 - bool m_IsFirstScan = true; - bool m_Scanning = false; - + DriverInfo *mp_CurDriverInfo; //当前正在安装的驱动 + DriverInfo *mp_CurBackupDriverInfo; //当前正在备份的驱动 + DriverInfo *mp_CurRestoreDriverInfo; //当前正在还原的驱动 + int m_CurIndex; + int m_CurBackupIndex; + int m_CancelIndex; + QList m_ListDriverIndex; //已勾选驱动需要安装驱动 + QList m_ListInstallIndex; + QList m_ListUpdateIndex; + QList m_ListNewIndex; + QList m_ListBackupIndex; //已勾选需要备份驱动 + DriverScanner *mp_scanner; // 扫描驱动线程 + bool m_IsFirstScan = true; + bool m_Scanning = false; + QString m_CurItemStr; // m_ListBackableIndex; // 可备份列表 + QList m_ListBackedupeIndex; // 已备份列表 + QList m_ListRestorableIndex; // 可还原列表 + + int m_backupSuccessNum = 0; + int m_backupFailedNum = 0; + + DDialog *mp_FailedDialog; //还原失败弹窗 + + DriverBackupThread *mp_BackupThread; //备份线程 }; #endif // PAGEDRIVERMANAGER_H diff --git a/deepin-devicemanager/src/Page/PageDriverRestoreInfo.cpp b/deepin-devicemanager/src/Page/PageDriverRestoreInfo.cpp new file mode 100644 index 000000000..95cac8394 --- /dev/null +++ b/deepin-devicemanager/src/Page/PageDriverRestoreInfo.cpp @@ -0,0 +1,197 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include + +#include +#include + +#include "PageDriverRestoreInfo.h" +#include "DetectedStatusWidget.h" +#include "PageDriverTableView.h" +#include "driveritem.h" + +PageDriverRestoreInfo::PageDriverRestoreInfo(QWidget *parent) + : DFrame(parent) + , mp_StackWidget(new DStackedWidget(this)) + , mp_HeadWidget(new DetectedStatusWidget(this)) + , mp_NotBackupWidget(new DWidget(this)) + , mp_ViewBackable(new PageDriverTableView(this)) + , mp_BackableDriverLabel(new DLabel(this)) + , mp_NoRestoreDriverFrame(new DFrame(this)) + , mp_GotoBackupSgButton(new DSuggestButton(this)) +{ + initUI(); + + connect(mp_ViewBackable, &PageDriverTableView::operatorClicked, this, &PageDriverRestoreInfo::operatorClicked); + connect(mp_ViewBackable, &PageDriverTableView::operatorClicked, this, &PageDriverRestoreInfo::slotOperatorClicked); + connect(mp_GotoBackupSgButton, &DSuggestButton::clicked, this, &PageDriverRestoreInfo::gotoBackup); + connect(mp_HeadWidget, &DetectedStatusWidget::redetected, this, &PageDriverRestoreInfo::redetected); +} +void PageDriverRestoreInfo::initUI() +{ + this->setLineWidth(0); + initTable(); + + QVBoxLayout *mainLayout = new QVBoxLayout(this); + mainLayout->setContentsMargins(20, 20, 20, 0); + mainLayout->setSpacing(0); + + // 上方的表头 + QHBoxLayout *headerLayout = new QHBoxLayout(this); + headerLayout->setSpacing(0); + headerLayout->addWidget(mp_HeadWidget); + + // 下方的可滑动区域 + DScrollArea *area = new DScrollArea(this); + area->setMinimumHeight(10); + area->setFrameShape(QFrame::NoFrame); + area->setWidgetResizable(true); + + DWidget *frame = new DWidget(this); + frame->setContentsMargins(0, 0, 0, 0); + QVBoxLayout *frameLayout = new QVBoxLayout(); + frameLayout->setContentsMargins(0, 0, 0, 0); + + QVBoxLayout *vLayout = new QVBoxLayout(this); + vLayout->setContentsMargins(0, 0, 0, 0); + vLayout->addWidget(mp_BackableDriverLabel); + vLayout->addWidget(mp_ViewBackable); + vLayout->addSpacing(7); + vLayout->addStretch(); + mp_NotBackupWidget->setLayout(vLayout); + + frameLayout->addWidget(mp_NotBackupWidget); + frameLayout->addSpacing(17); + frameLayout->addStretch(); + frame->setLayout(frameLayout); + area->setWidget(frame); + + QVBoxLayout *restoreVLayout = new QVBoxLayout(this); + restoreVLayout->setSpacing(0); + restoreVLayout->addLayout(headerLayout); + restoreVLayout->addSpacing(16); + restoreVLayout->addWidget(area); + + DWidget *restoreWidget = new DWidget(this); + restoreWidget->setLayout(restoreVLayout); + + + // 没有备份文件页面 + QVBoxLayout *noRestoreMainLayout = new QVBoxLayout(this); + noRestoreMainLayout->setAlignment(Qt::AlignHCenter); + + DLabel *picLabel = new DLabel(this); + picLabel->setAlignment(Qt::AlignHCenter | Qt::AlignBottom); + QIcon icon(QIcon::fromTheme(":/icons/deepin/builtin/icons/restore_128.svg")); + QPixmap pix = icon.pixmap(128, 128); + picLabel->setPixmap(pix); + //picLabel->setFrameShape(QFrame::Box); + + DLabel *tipLabel = new DLabel(this); + tipLabel->setText(tr("You do not have any drivers to restore, please backup first")); + //tipLabel->setFrameShape(QFrame::Box); + + mp_GotoBackupSgButton->setText(tr("Go to Backup Driver")); + mp_GotoBackupSgButton->setFixedWidth(310); + mp_GotoBackupSgButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + mp_GotoBackupSgButton->setFocusPolicy(Qt::NoFocus); + + noRestoreMainLayout->addStretch(); + noRestoreMainLayout->addWidget(picLabel); + noRestoreMainLayout->addSpacing(10); + noRestoreMainLayout->addWidget(tipLabel, 0, Qt::AlignHCenter); + noRestoreMainLayout->addSpacing(35); + noRestoreMainLayout->addWidget(mp_GotoBackupSgButton, 0, Qt::AlignHCenter); + noRestoreMainLayout->addSpacing(25); + noRestoreMainLayout->addStretch(); + mp_NoRestoreDriverFrame->setLayout(noRestoreMainLayout); + mp_NoRestoreDriverFrame->setLineWidth(0); + + mp_StackWidget->addWidget(mp_NoRestoreDriverFrame); + mp_StackWidget->addWidget(restoreWidget); + + + mainLayout->addWidget(mp_StackWidget); + this->setLayout(mainLayout); +} + +void PageDriverRestoreInfo::initTable() +{ + mp_ViewBackable->initHeaderView(QStringList()<< tr("Name") + << tr("Current Version") + << tr("Backup Version") + << tr("Action"), false); + mp_ViewBackable->setHeaderCbStatus(false); + mp_ViewBackable->setColumnWidth(0, 324); + mp_ViewBackable->setColumnWidth(1, 158); + mp_ViewBackable->setColumnWidth(2, 158); +} + +void PageDriverRestoreInfo::addDriverInfoToTableView(DriverInfo *info, int index) +{ + PageDriverTableView *view = nullptr; + if (!info->debBackupVersion().isEmpty()) { + view = mp_ViewBackable; + view->appendRowItems(4); + } else { + return; + } + + int row = view->model()->rowCount() - 1; + + if (view == mp_ViewBackable) { + // 设置名称 + DriverNameItem *nameItem = new DriverNameItem(this, info->type()); + nameItem->setName(info->name()); + nameItem->setIndex(index); + view->setWidget(row, 0, nameItem); + + // 设置当前版本 + DriverLabelItem *versionItem = new DriverLabelItem(this, info->version()); + view->setWidget(row, 1, versionItem); + + // 设置备份版本 + DriverLabelItem *sizeItem = new DriverLabelItem(this, info->debBackupVersion()); + view->setWidget(row, 2, sizeItem); + + // 添加操作按钮 + DriverOperationItem *operateItem = new DriverOperationItem(this, DriverOperationItem::RESTORE); + view->setWidget(row, 3, operateItem); + } +} + +void PageDriverRestoreInfo::showTables(int backedLength) +{ + mp_BackableDriverLabel->setText(tr("Restorable Drivers")); + mp_HeadWidget->setRestoreDriverUI(backedLength); + + if (backedLength == 0) { + mp_StackWidget->setCurrentIndex(0); + } else { + mp_StackWidget->setCurrentIndex(1); + } +} + +void PageDriverRestoreInfo::clearAllData() +{ + mp_ViewBackable->clear(); + + initTable(); +} + +void PageDriverRestoreInfo::setItemOperationEnable(int index, bool enable) +{ + mp_ViewBackable->setItemOperationEnable(index, enable); +} + +void PageDriverRestoreInfo::slotOperatorClicked(int index, int itemIndex, DriverOperationItem::Mode mode) +{ + PageDriverTableView *view = mp_ViewBackable; + // 设置状态 + DriverStatusItem *statusItem = new DriverStatusItem(this, ST_DRIVER_RESTORING); +// view->removeItemAndWidget(itemIndex, 3); + view->setWidget(itemIndex, 3, statusItem); +} + diff --git a/deepin-devicemanager/src/Page/PageDriverRestoreInfo.h b/deepin-devicemanager/src/Page/PageDriverRestoreInfo.h new file mode 100644 index 000000000..8a057d90e --- /dev/null +++ b/deepin-devicemanager/src/Page/PageDriverRestoreInfo.h @@ -0,0 +1,84 @@ +// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#ifndef PAGEDRIVERRESTOREINFO_H +#define PAGEDRIVERRESTOREINFO_H + +#include +#include +#include +#include +#include + +#include "MacroDefinition.h" +#include "driveritem.h" + +class DetectedStatusWidget; +class PageDriverTableView; + +using namespace Dtk::Widget; + +class PageDriverRestoreInfo : public DFrame +{ + Q_OBJECT +public: + explicit PageDriverRestoreInfo(QWidget *parent = nullptr); + + DetectedStatusWidget *headWidget() {return mp_HeadWidget; } + + /** + * @brief addDriverInfoToTableView 添加驱动信息到表格中 + */ + void addDriverInfoToTableView(DriverInfo *info, int index); + + /** + * @brief showTables 显示表格 + */ + void showTables(int); + + /** + * @brief clearAllData 清除所有数据 + */ + void clearAllData(); + + /** + * @brief setItemOperationEnable + */ + void setItemOperationEnable(int index, bool enable); + +private slots: + /** + * @brief slotOperatorClicked 操作按钮点击槽函数 + */ + void slotOperatorClicked(int index, int itemIndex, DriverOperationItem::Mode mode); + +signals: + void operatorClicked(int index, int itemIndex, DriverOperationItem::Mode mode); + void redetected(); + void gotoBackup(); + +private: + /** + * @brief initWidget 初始化界面 + */ + void initUI(); + + /** + * @brief initTable 初始化表格信息 + */ + void initTable(); + +private: + DStackedWidget *mp_StackWidget; + DetectedStatusWidget *mp_HeadWidget; + DWidget *mp_NotBackupWidget; + PageDriverTableView *mp_ViewBackable; + DLabel *mp_BackableDriverLabel; + + // 无备份驱动时显示 + DFrame *mp_NoRestoreDriverFrame; + DSuggestButton *mp_GotoBackupSgButton; +}; + +#endif // PAGEDRIVERRESTOREINFO_H diff --git a/deepin-devicemanager/src/Page/PageDriverTableView.cpp b/deepin-devicemanager/src/Page/PageDriverTableView.cpp index 4528dffb3..63616d84b 100644 --- a/deepin-devicemanager/src/Page/PageDriverTableView.cpp +++ b/deepin-devicemanager/src/Page/PageDriverTableView.cpp @@ -86,6 +86,21 @@ void PageDriverTableView::clear() mp_View->clear(); } +void PageDriverTableView::setItemOperationEnable(int index, bool enable) +{ + mp_View->setItemOperationEnable(index, enable); +} + +void PageDriverTableView::removeItemAndWidget(int row, int column) +{ + mp_View->removeItemAndWidget(row, column); +} + +void PageDriverTableView::setHeaderCbEnable(bool enable) +{ + mp_View->setHeaderCbEnable(enable); +} + void PageDriverTableView::paintEvent(QPaintEvent *e) { DWidget::paintEvent(e); diff --git a/deepin-devicemanager/src/Page/PageDriverTableView.h b/deepin-devicemanager/src/Page/PageDriverTableView.h index ae2a3cfa0..77b138665 100644 --- a/deepin-devicemanager/src/Page/PageDriverTableView.h +++ b/deepin-devicemanager/src/Page/PageDriverTableView.h @@ -11,6 +11,7 @@ #include #include "MacroDefinition.h" +#include "driveritem.h" class DriverTableView; @@ -99,8 +100,13 @@ class PageDriverTableView : public DWidget */ void clear(); + void setItemOperationEnable(int index, bool enable); + + void removeItemAndWidget(int row, int column); + void setHeaderCbEnable(bool enable); + signals: - void operatorClicked(int index); + void operatorClicked(int index, int itemIndex, DriverOperationItem::Mode mode); /** * @brief itemChecked 选中的信号 * @param index diff --git a/deepin-devicemanager/src/Page/PageInfo.cpp b/deepin-devicemanager/src/Page/PageInfo.cpp index 1629ee490..7d0b03e93 100644 --- a/deepin-devicemanager/src/Page/PageInfo.cpp +++ b/deepin-devicemanager/src/Page/PageInfo.cpp @@ -13,7 +13,7 @@ // Qt库文件 #include #include -#include +#include #include #include diff --git a/deepin-devicemanager/src/Page/PageInfoWidget.cpp b/deepin-devicemanager/src/Page/PageInfoWidget.cpp index 7dacdd169..ccbe1e6b4 100644 --- a/deepin-devicemanager/src/Page/PageInfoWidget.cpp +++ b/deepin-devicemanager/src/Page/PageInfoWidget.cpp @@ -15,7 +15,7 @@ // Qt库文件 #include -#include +#include #include diff --git a/deepin-devicemanager/src/Page/PageListView.cpp b/deepin-devicemanager/src/Page/PageListView.cpp index d17fe623a..ff226cdfe 100644 --- a/deepin-devicemanager/src/Page/PageListView.cpp +++ b/deepin-devicemanager/src/Page/PageListView.cpp @@ -12,7 +12,7 @@ // Qt库文件 #include -#include +#include PageListView::PageListView(DWidget *parent) : DWidget(parent) @@ -28,7 +28,7 @@ PageListView::PageListView(DWidget *parent) hLayout->setContentsMargins(0, 0, 0, 0); setLayout(hLayout); - this->setFixedWidth(152); + this->setFixedWidth(172); // 初始化右键菜单 mp_ListView->setContextMenuPolicy(Qt::CustomContextMenu); connect(mp_ListView, SIGNAL(customContextMenuRequested(const QPoint &)), @@ -86,6 +86,12 @@ void PageListView::clear() mp_ListView->clearItem(); } +void PageListView::setCurType(QString type) +{ + m_CurType = type; + mp_ListView->setCurItem(m_CurType); +} + void PageListView::paintEvent(QPaintEvent *event) { // 让背景色适合主题颜色 @@ -102,6 +108,9 @@ void PageListView::slotShowMenu(const QPoint &point) // 右键菜单 mp_Menu->clear(); + if (m_CurType == tr("Driver Install") || m_CurType == tr("Driver Backup") || m_CurType == tr("Driver Restore")) + return; + // 导出/刷新 if (mp_ListView->indexAt(point).isValid()) { mp_Menu->addAction(mp_Export); diff --git a/deepin-devicemanager/src/Page/PageListView.h b/deepin-devicemanager/src/Page/PageListView.h index a268c7e7d..29865ca15 100644 --- a/deepin-devicemanager/src/Page/PageListView.h +++ b/deepin-devicemanager/src/Page/PageListView.h @@ -46,6 +46,8 @@ class PageListView : public DWidget */ void clear(); + void setCurType(QString type); + protected: /**@brief:事件重写*/ void paintEvent(QPaintEvent *event) override; diff --git a/deepin-devicemanager/src/Page/PageMultiInfo.cpp b/deepin-devicemanager/src/Page/PageMultiInfo.cpp index fd2fd519b..b0742bbaf 100644 --- a/deepin-devicemanager/src/Page/PageMultiInfo.cpp +++ b/deepin-devicemanager/src/Page/PageMultiInfo.cpp @@ -12,6 +12,8 @@ #include "DevicePrint.h" #include "DeviceInput.h" #include "DeviceNetwork.h" +#include "DDLog.h" +#include "commonfunction.h" // Dtk头文件 #include @@ -23,11 +25,13 @@ #include #include #include -#include +#include #include DWIDGET_USE_NAMESPACE +using namespace DDLog; + #define LEAST_PAGE_HEIGHT 315 // PageMultiInfo最小高度 当小于这个高度时,上方的表格就要变小 PageMultiInfo::PageMultiInfo(QWidget *parent) @@ -36,6 +40,8 @@ PageMultiInfo::PageMultiInfo(QWidget *parent) , mp_Table(new PageTableHeader(this)) , mp_Detail(new PageDetail(this)) { + m_deviceList.clear(); + m_menuControlList.clear(); // 初始化界面布局 initWidgets(); @@ -64,6 +70,8 @@ PageMultiInfo::~PageMultiInfo() delete mp_Detail; mp_Detail = nullptr; } + m_deviceList.clear(); + m_menuControlList.clear(); } void PageMultiInfo::updateInfo(const QList &lst) @@ -73,14 +81,22 @@ void PageMultiInfo::updateInfo(const QList &lst) if (lst.size() < 1) return; + m_deviceList.clear(); + m_menuControlList.clear(); // 获取多个设备界面表格信息 - QList deviceList; - QList menuControlList; - getTableListInfo(lst, deviceList, menuControlList); + getTableListInfo(lst, m_deviceList, m_menuControlList); // 更新表格 - mp_Table->updateTable(deviceList, menuControlList); + mp_Table->setVisible(true); + mp_Table->setFixedHeight(TABLE_HEIGHT); + mp_Table->updateTable(m_deviceList, m_menuControlList); + if (Common::specialComType >= 1) { + if (mp_Label->text() == tr("Storage") || mp_Label->text() == tr("Memory")) { + mp_Table->setVisible(false); + mp_Table->setFixedHeight(0); + } + } // 更新详细信息 mp_Detail->showDeviceInfo(lst); @@ -113,15 +129,22 @@ void PageMultiInfo::resizeEvent(QResizeEvent *e) // 先获取当前窗口大小 int curHeight = this->height(); - QList deviceList; - QList menuControlList; - getTableListInfo(m_lstDevice, deviceList, menuControlList); if (curHeight < LEAST_PAGE_HEIGHT) { // 获取多个设备界面表格信息 - mp_Table->updateTable(deviceList, menuControlList, true, (LEAST_PAGE_HEIGHT - curHeight) / TREE_ROW_HEIGHT + 1); + if (Common::specialComType <= 0) { + mp_Table->updateTable(m_deviceList, m_menuControlList, true, (LEAST_PAGE_HEIGHT - curHeight) / TREE_ROW_HEIGHT + 1); + } else { + if (mp_Label->text() != tr("Storage") && mp_Label->text() != tr("Memory")) + mp_Table->updateTable(m_deviceList, m_menuControlList, true, (LEAST_PAGE_HEIGHT - curHeight) / TREE_ROW_HEIGHT + 1); + } } else { // 获取多个设备界面表格信息 - mp_Table->updateTable(deviceList, menuControlList, true, 0); + if (Common::specialComType <= 0) { + mp_Table->updateTable(m_deviceList, m_menuControlList, true, 0); + } else { + if (mp_Label->text() != tr("Storage") && mp_Label->text() != tr("Memory")) + mp_Table->updateTable(m_deviceList, m_menuControlList, true, 0); + } } return PageInfo::resizeEvent(e); @@ -177,7 +200,7 @@ void PageMultiInfo::slotActionUpdateDriver(int row) //打印设备卸载驱动时,通过dde-printer来操作 if (nullptr != device && device->hardwareClass() == "printer") { if (!QProcess::startDetached("dde-printer")) - qInfo() << "dde-printer startDetached error"; + qCInfo(appLog) << "dde-printer startDetached error"; return; } @@ -242,8 +265,10 @@ void PageMultiInfo::initWidgets() void PageMultiInfo::getTableListInfo(const QList &lst, QList &deviceList, QList &menuControlList) { // 获取多个设备界面表格信息 + if(lst[0] == nullptr) return; deviceList.append(lst[0]->getTableHeader()); foreach (DeviceBaseInfo *info, lst) { + if(info == nullptr) continue; QStringList lstDeviceInfo = info->getTableData(); deviceList.append(lstDeviceInfo); @@ -254,6 +279,10 @@ void PageMultiInfo::getTableListInfo(const QList &lst, QListcanWakeupMachine() ? "true" : "false"); menuControl.append(input->wakeupPath()); + if (info->name().contains("PS/2")) { + menuControl.append(input->getBusInfo()); + menuControl.append(input->name()); + } } DeviceNetwork *network = dynamic_cast(info); diff --git a/deepin-devicemanager/src/Page/PageMultiInfo.h b/deepin-devicemanager/src/Page/PageMultiInfo.h index 36fc9ba22..f6b1bbb48 100644 --- a/deepin-devicemanager/src/Page/PageMultiInfo.h +++ b/deepin-devicemanager/src/Page/PageMultiInfo.h @@ -127,6 +127,8 @@ private slots: PageTableHeader *mp_Table; // m_lstDevice; // m_deviceList; // m_menuControlList; // #include #include -#include +#include #include #define ENTER_ONE 60 // 换行的位置 1 diff --git a/deepin-devicemanager/src/Page/PageSingleInfo.cpp b/deepin-devicemanager/src/Page/PageSingleInfo.cpp index cd53a0a46..bd4b53c10 100644 --- a/deepin-devicemanager/src/Page/PageSingleInfo.cpp +++ b/deepin-devicemanager/src/Page/PageSingleInfo.cpp @@ -13,6 +13,7 @@ #include "DeviceNetwork.h" #include "DBusWakeupInterface.h" #include "RichTextDelegate.h" +#include "DDLog.h" // Dtk头文件 #include @@ -27,10 +28,13 @@ #include #include #include +#include #define WAKEUP_OPEN 3 #define WAKEUP_CLOSE 4 +using namespace DDLog; + PageSingleInfo::PageSingleInfo(QWidget *parent) : PageInfo(parent) , mp_Content(new PageTableWidget(this)) @@ -98,8 +102,8 @@ void PageSingleInfo::updateInfo(const QList &lst) clearContent(); //获取设备信息 - QList> baseInfoMap = lst[0]->getBaseAttribs(); - QList> otherInfoMap = lst[0]->getOtherAttribs(); + QList> baseInfoMap = lst[0]->getBaseTranslationAttribs(); + QList> otherInfoMap = lst[0]->getOtherTranslationAttribs(); baseInfoMap = baseInfoMap + otherInfoMap; // 加载设备信息 @@ -136,6 +140,8 @@ void PageSingleInfo::loadDeviceInfo(const QList> &lst) QStringList lstStr = lst[i].second.split("\n"); if (lstStr.size() > 1) { mp_Content->setItemDelegateForRow(i, m_ItemDelegate); + } else { + mp_Content->setItemDelegateForRow(i, nullptr); } // 第一列 @@ -312,7 +318,7 @@ void PageSingleInfo::slotActionUpdateDriver() //打印设备更新驱动时,通过dde-printer来操作 if (mp_Device->hardwareClass() == "printer") { if (!QProcess::startDetached("dde-printer")) - qInfo() << "dde-printer startDetached error"; + qCInfo(appLog) << "dde-printer startDetached error"; return; } PageDriverControl *installDriver = new PageDriverControl(this, tr("Update Drivers"), true, mp_Device->name(), ""); @@ -346,7 +352,10 @@ void PageSingleInfo::slotWakeupMachine() // 键盘鼠标唤醒机器 DeviceInput *input = qobject_cast(mp_Device); if (input && !input->wakeupID().isEmpty() && !input->sysPath().isEmpty()) { - DBusWakeupInterface::getInstance()->setWakeupMachine(input->wakeupID(), input->sysPath(), mp_WakeupMachine->isChecked()); + DBusWakeupInterface::getInstance()->setWakeupMachine(input->wakeupID(), + input->sysPath(), + mp_WakeupMachine->isChecked(), + input->getInterface()); } // 网卡的远程唤醒 diff --git a/deepin-devicemanager/src/Page/PageTableHeader.cpp b/deepin-devicemanager/src/Page/PageTableHeader.cpp index e62aedc2e..f0824ca58 100644 --- a/deepin-devicemanager/src/Page/PageTableHeader.cpp +++ b/deepin-devicemanager/src/Page/PageTableHeader.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include PageTableHeader::PageTableHeader(QWidget *parent) : DWidget(parent) diff --git a/deepin-devicemanager/src/Page/PageTableWidget.cpp b/deepin-devicemanager/src/Page/PageTableWidget.cpp index a7df49f9b..c4005f538 100644 --- a/deepin-devicemanager/src/Page/PageTableWidget.cpp +++ b/deepin-devicemanager/src/Page/PageTableWidget.cpp @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include PageTableWidget::PageTableWidget(DWidget *parent) @@ -81,7 +81,11 @@ void PageTableWidget::setRowHeight(int row, int height) void PageTableWidget::setItemDelegateForRow(int row, RichTextDelegate *itemDelegate) { // 设置单元格代理 - mp_Table->setItemDelegateForRow(row, itemDelegate); + if (itemDelegate == nullptr) { + mp_Table->setItemDelegateForRow(row, mp_Table->itemDelegate()); + } else { + mp_Table->setItemDelegateForRow(row, itemDelegate); + } } bool PageTableWidget::isCurDeviceEnable() diff --git a/deepin-devicemanager/src/SingleDeviceManager.cpp b/deepin-devicemanager/src/SingleDeviceManager.cpp index 8f1ac4987..4d7b9402d 100644 --- a/deepin-devicemanager/src/SingleDeviceManager.cpp +++ b/deepin-devicemanager/src/SingleDeviceManager.cpp @@ -5,11 +5,14 @@ #include "SingleDeviceManager.h" #include "MainWindow.h" #include "eventlogutils.h" +#include "DDLog.h" #include #include #include +using namespace DDLog; + SingleDeviceManager::SingleDeviceManager(int &argc, char **argv) : DApplication(argc, argv) { @@ -18,7 +21,7 @@ SingleDeviceManager::SingleDeviceManager(int &argc, char **argv) void SingleDeviceManager::activateWindow() { - qInfo() << "SingleDeviceManager::activateWindow()"; + qCInfo(appLog) << "SingleDeviceManager::activateWindow()"; if (nullptr == m_qspMainWnd.get()) { m_qspMainWnd.reset(new MainWindow()); Dtk::Widget::moveToCenter(m_qspMainWnd.get()); @@ -41,7 +44,7 @@ void SingleDeviceManager::activateWindow() bool SingleDeviceManager::parseCmdLine() { - qInfo() << "SingleDeviceManager::parseCmdLine()"; + qCInfo(appLog) << "SingleDeviceManager::parseCmdLine()"; QCommandLineParser parser; parser.setApplicationDescription("Deepin Device Manager."); parser.addHelpOption(); @@ -65,7 +68,7 @@ bool SingleDeviceManager::parseCmdLine() void SingleDeviceManager::startDeviceManager(QString pageDescription) { - qInfo() << "SingleDeviceManager::startDeviceManager" << pageDescription; + qCInfo(appLog) << "SingleDeviceManager::startDeviceManager" << pageDescription; if (!pageDescription.isEmpty()) { QMetaObject::invokeMethod(m_qspMainWnd.get(), "slotSetPage", Qt::QueuedConnection, Q_ARG(QString, pageDescription)); } else { diff --git a/deepin-devicemanager/src/Tool/DBusAnythingInterface.h b/deepin-devicemanager/src/Tool/DBusAnythingInterface.h index f04cfd546..544af7033 100644 --- a/deepin-devicemanager/src/Tool/DBusAnythingInterface.h +++ b/deepin-devicemanager/src/Tool/DBusAnythingInterface.h @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include diff --git a/deepin-devicemanager/src/Tool/EDIDParser.cpp b/deepin-devicemanager/src/Tool/EDIDParser.cpp index ad0c43e6d..082adbaa8 100644 --- a/deepin-devicemanager/src/Tool/EDIDParser.cpp +++ b/deepin-devicemanager/src/Tool/EDIDParser.cpp @@ -6,7 +6,7 @@ #include "EDIDParser.h" // Qt库文件 -#include +#include #include // 其它头文件 @@ -88,6 +88,11 @@ const QString &EDIDParser::vendor()const return m_Vendor; } +const QString &EDIDParser::model()const +{ + return m_Model; +} + const QString &EDIDParser::releaseDate()const { return m_ReleaseDate; @@ -134,6 +139,11 @@ void EDIDParser::parserVendor() m_Vendor = QString(name); + QString h0a = getBytes(0, 10); + QString h0b = getBytes(0, 11); + + m_Model = h0a + h0b; + // // 将16进制的厂商信息转换成二进制的厂商信息 // QString binStr = hexToBin(vendorStr); @@ -163,11 +173,44 @@ void EDIDParser::parseReleaseDate() void EDIDParser::parseScreenSize() { - // edid中的 15H和16H就是屏幕大小 - m_Width = hexToDec(getBytes(1, m_LittleEndianMode ? 5 : 4)).toInt(); - m_Height = hexToDec(getBytes(1, m_LittleEndianMode ? 6 : 7)).toInt(); - double inch = sqrt((m_Width / 2.54) * (m_Width / 2.54) + (m_Height / 2.54) * (m_Height / 2.54)); - m_ScreenSize = QString("%1 %2(%3cm X %4cm)").arg(QString::number(inch, 'f', 1)).arg(QObject::tr("inch")).arg(m_Width).arg(m_Height); + + //Detailed Timing + if(m_LittleEndianMode){ + QString tmpw = getBytes(4,2); + QString tmph = getBytes(4,3); + QString tmpshl = getBytes(4,4); + m_Width = hexToDec(tmpshl.mid(0,1) + tmpw).toInt(); + m_Height = hexToDec(tmpshl.mid(1,1) + tmph).toInt(); + } + + // edid中的 15H和16H就是屏幕大小 , 与Detailed Timing相差超10mm 则用15H和16H的。 + int width15 = hexToDec(getBytes(1, m_LittleEndianMode ? 5 : 4)).toInt()*10; + int height16 = hexToDec(getBytes(1, m_LittleEndianMode ? 6 : 7)).toInt()*10; + if(m_Width+10 < width15 || m_Height+10 < height16) { + m_Width = width15; + m_Height = height16; + } + + QString s66 = getBytes(4, m_LittleEndianMode ? 2 : 3), + s67 = getBytes(4, m_LittleEndianMode ? 3 : 2), + s68 = getBytes(4, m_LittleEndianMode ? 4 : 5); + + if (!s66.isEmpty() && !s67.isEmpty() && !s68.isEmpty()) { + int width_mm = hexToDec(s66).toInt() + ((hexToDec(s68).toInt() & 0xF0) << 4); + int height_mm = hexToDec(s67).toInt() + ((hexToDec(s68).toInt() & 0x0F) << 8); + + if (width_mm > 0 && height_mm > 0) { + m_Width = width_mm; + m_Height = height_mm; + } + } + + if (Common::specialComType == 7){ // sepcial task:378963 + m_Width = 296; + m_Height = 197; + } + double inch = sqrt((m_Width / 2.54) * (m_Width / 2.54) + (m_Height / 2.54) * (m_Height / 2.54))/10; + m_ScreenSize = QString("%1 %2(%3mm×%4mm)").arg(QString::number(inch, '0', Common::specialComType == 7 ? 0 : 1)).arg(QObject::tr("inch")).arg(m_Width).arg(m_Height); } QString EDIDParser::binToDec(QString strBin) //二进制转十进制 @@ -204,7 +247,7 @@ QString EDIDParser::decTobin(QString strDec) //十进制转二进制 while (bContinue) { nYushu = nDec % 2; nShang = nDec / 2; - strBin = QString::number(nYushu) + strBin; //qInfo()< #include #include - +#include /** * @brief The EDIDParser class * 用于解析edid的类 @@ -34,6 +34,12 @@ class EDIDParser */ const QString &vendor()const; + /** + * @brief model:获取厂商信息 + * @return 厂商信息 + */ + const QString &model()const; + /** * @brief releaseDate:获取生产日期 * @return 生产日期 @@ -131,6 +137,7 @@ class EDIDParser private: /**@brief:机器的存储模式不同,会导致计算结果不同,所以在解析的时候需要考虑大小端模式*/ QString m_Vendor; // 显示屏的厂商信息 + QString m_Model; // 显示屏的型号信息 QString m_ReleaseDate; // 显示屏的生产日期 QString m_ScreenSize; // 屏幕大小 bool m_LittleEndianMode; // 小端模式 diff --git a/deepin-devicemanager/src/Tool/LoadCpuInfoThread.cpp b/deepin-devicemanager/src/Tool/LoadCpuInfoThread.cpp index 84c726e18..a325fd04e 100644 --- a/deepin-devicemanager/src/Tool/LoadCpuInfoThread.cpp +++ b/deepin-devicemanager/src/Tool/LoadCpuInfoThread.cpp @@ -6,7 +6,7 @@ #include "LoadCpuInfoThread.h" #include -#include +#include #include "DeviceManager.h" #include "DeviceCpu.h" diff --git a/deepin-devicemanager/src/Tool/ThreadExecXrandr.cpp b/deepin-devicemanager/src/Tool/ThreadExecXrandr.cpp index 749716272..a32d2aa8a 100644 --- a/deepin-devicemanager/src/Tool/ThreadExecXrandr.cpp +++ b/deepin-devicemanager/src/Tool/ThreadExecXrandr.cpp @@ -3,9 +3,11 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "ThreadExecXrandr.h" +#include "commonfunction.h" +#include "DDLog.h" #include -#include +#include #include #include #include @@ -15,7 +17,18 @@ #include #include - +#include +#ifdef OS_BUILD_V23 +const QString DISPLAY_SERVICE_NAME = "org.deepin.dde.Display1"; +const QString DISPLAY_SERVICE_PATH = "/org/deepin/dde/Display1"; +const QString DISPLAY_INTERFACE = "org.deepin.dde.Display1"; + +const QString DISPLAY_DAEMON_SERVICE_NAME = "org.deepin.dde.Display1"; +const QString DISPLAY_DAEMON_SERVICE_PATH = "/org/deepin/dde/Display1"; +const QString DISPLAY_DAEMON_INTERFACE = "org.deepin.dde.Display1"; +const QString DISPLAY_PROPERTIES_INTERFACE = "org.freedesktop.DBus.Properties"; +const QString DISPLAY_MONITOR_INTERFACE = "org.deepin.dde.Display1.Monitor"; +#else const QString DISPLAY_SERVICE_NAME = "com.deepin.system.Display"; const QString DISPLAY_SERVICE_PATH = "/com/deepin/system/Display"; const QString DISPLAY_INTERFACE = "com.deepin.system.Display"; @@ -25,7 +38,8 @@ const QString DISPLAY_DAEMON_SERVICE_PATH = "/com/deepin/daemon/Display"; const QString DISPLAY_DAEMON_INTERFACE = "com.deepin.daemon.Display"; const QString DISPLAY_PROPERTIES_INTERFACE = "org.freedesktop.DBus.Properties"; const QString DISPLAY_MONITOR_INTERFACE = "com.deepin.daemon.Display.Monitor"; - +#endif +using namespace DDLog; ThreadExecXrandr::ThreadExecXrandr(bool gpu, bool isDXcbPlatform) : m_Gpu(gpu), m_isDXcbPlatform(isDXcbPlatform) { @@ -36,8 +50,12 @@ void ThreadExecXrandr::run() { if (m_Gpu) { getGpuInfoFromXrandr(); - } else { - getMonitorInfoFromXrandrVerbose(); + } else { + if(Common::boardVendorType() == "PGUV") { + QList> lstMap; + getResolutionRateFromDBus(lstMap); + }else + getMonitorInfoFromXrandrVerbose(); } } @@ -60,7 +78,7 @@ void ThreadExecXrandr::loadXrandrInfo(QList> &lstMap, con QRegExp re(".*([0-9]{1,5}\\sx\\s[0-9]{1,5}).*([0-9]{1,5}\\sx\\s[0-9]{1,5}).*([0-9]{1,5}\\sx\\s[0-9]{1,5}).*"); if (re.exactMatch(line)) { lstMap[lstMap.count() - 1].insert("minResolution", re.cap(1)); - lstMap[lstMap.count() - 1].insert("curResolution", re.cap(2)); + lstMap[lstMap.count() - 1].insert("curResolution", re.cap(2).replace(" ", "").replace("x", "×", Qt::CaseInsensitive)); lstMap[lstMap.count() - 1].insert("maxResolution", re.cap(3)); } continue; @@ -99,6 +117,10 @@ void ThreadExecXrandr::loadXrandrVerboseInfo(QList> &lstM // 新的显示屏 QMap newMap; newMap.insert("mainInfo", (*it).trimmed()); + auto mainInfoList = (*it).trimmed().split(" "); + if (mainInfoList.size() > 0) { + newMap.insert("port", mainInfoList.at(0)); + } lstMap.append(newMap); continue; } @@ -213,7 +235,12 @@ void ThreadExecXrandr::getMonitorInfoFromXrandrVerbose() { QList> lstMap; loadXrandrVerboseInfo(lstMap, "xrandr --verbose"); - + std::sort(lstMap.begin(), lstMap.end(), [](const QMap &monintor1, const QMap &monintor2) { + if (monintor1.contains("port") && monintor2.contains("port")) + return monintor1.value("port") < monintor2.value("port"); + else + return false; + }); QList >::const_iterator it = lstMap.begin(); for (; it != lstMap.end(); ++it) { if ((*it).size() < 1) @@ -250,13 +277,14 @@ void ThreadExecXrandr::getResolutionFromDBus(QMap &lstMap) if (!monitors.isValid()) return; - + m_monitorLst.clear(); QList monitorList = monitors.value >(); int maxResolutionWidth = -1, maxResolutionHeight = -1, minResolutionWidth = -1, minResolutionHeight = -1; for (auto monitor : monitorList) { if (monitor.path().isEmpty()) continue; + m_monitorLst << monitor.path(); QDBusInterface monitorEnabledInterface(DISPLAY_DAEMON_SERVICE_NAME, monitor.path(), DISPLAY_MONITOR_INTERFACE, QDBusConnection::sessionBus()); if (!monitorEnabledInterface.isValid()) continue; @@ -271,7 +299,7 @@ void ThreadExecXrandr::getResolutionFromDBus(QMap &lstMap) QDBusMessage replay = monitorInterface.call("Get", DISPLAY_MONITOR_INTERFACE, "Modes"); QVariant v = replay.arguments().first(); - qDebug() << v.value().variant(); + qCDebug(appLog) << v.value().variant(); QDBusArgument arg = v.value().variant().value(); arg.beginArray(); int curMaxResolutionWidth = -1, curMaxResolutionHeight = -1; @@ -309,8 +337,8 @@ void ThreadExecXrandr::getResolutionFromDBus(QMap &lstMap) } if (maxResolutionWidth != -1) { - lstMap.insert("maxResolution", QString("%1 x %2").arg(maxResolutionWidth).arg(maxResolutionHeight)); - lstMap.insert("minResolution", QString("%1 x %2").arg(minResolutionWidth).arg(minResolutionHeight)); + lstMap.insert("maxResolution", QString("%1×%2").arg(maxResolutionWidth).arg(maxResolutionHeight)); + lstMap.insert("minResolution", QString("%1×%2").arg(minResolutionWidth).arg(minResolutionHeight)); } } @@ -339,3 +367,69 @@ void ThreadExecXrandr::getGpuInfoFromXrandr() DeviceManager::instance()->setGpuInfoFromXrandr(*it); } } + +void ThreadExecXrandr::getResolutionRateFromDBus(QList > &lstMap) +{ + QDBusInterface displayInterface(DISPLAY_DAEMON_SERVICE_NAME, DISPLAY_DAEMON_SERVICE_PATH, DISPLAY_DAEMON_INTERFACE, QDBusConnection::sessionBus()); + if (!displayInterface.isValid()) + return; + + QVariant monitors = displayInterface.property("Monitors"); + + if (!monitors.isValid()) + return; + + QList monitorList = monitors.value >(); + for (auto monitor : monitorList) { + if (monitor.path().isEmpty()) + continue; + + QDBusInterface monitorEnabledInterface(DISPLAY_DAEMON_SERVICE_NAME, monitor.path(), DISPLAY_MONITOR_INTERFACE, QDBusConnection::sessionBus()); + if (!monitorEnabledInterface.isValid()) + continue; + + QVariant enbaled = monitorEnabledInterface.property("Enabled"); + if (!enbaled.isValid() || !enbaled.toBool()) + continue; + QVariant tconnected = monitorEnabledInterface.property("Connected"); + QVariant tmanufacture = monitorEnabledInterface.property("Manufacturer"); + QVariant tname = monitorEnabledInterface.property("Name"); + + // QVariant rep_currentRes = monitorEnabledInterface.property("CurrentMode"); + + QDBusInterface monitorInterface(DISPLAY_DAEMON_SERVICE_NAME, monitor.path(), DISPLAY_PROPERTIES_INTERFACE, QDBusConnection::sessionBus()); + if (!monitorInterface.isValid()) + continue; + + QDBusMessage replay = monitorInterface.call("Get", DISPLAY_MONITOR_INTERFACE, "CurrentMode"); // "com.deepin.daemon.Display.Monitor","CurrentMode" + QVariant v = replay.arguments().first(); + qCDebug(appLog) << v.value().variant(); + QDBusArgument arg = v.value().variant().value(); + + int curResolutionWidth = -1, curResolutionHeight = -1; + double resRate = 0; + { + MonitorResolution resolution; + arg >> resolution; + + curResolutionWidth = resolution.width; + curResolutionHeight = resolution.height; + resRate = resolution.refreshRate; + QMapinfoMap; + QString tmpS = QString("%1×%2@").arg(curResolutionWidth).arg(curResolutionHeight) + QString::number(resRate, 'f', 2); + infoMap.insert("CurResolution", tmpS + "Hz"); + infoMap.insert("Name", tname.toString()); + infoMap.insert("Display Input", tname.toString()); + infoMap.insert("Manufacture", tmanufacture.toString()); + lstMap.append(infoMap); + } //end of while + } //end of for + + QList >::const_iterator it = lstMap.begin(); + for (; it != lstMap.end(); ++it) { + if ((*it).size() < 1) + continue; + + DeviceManager::instance()->setMonitorInfoFromDbus(*it); + } +} diff --git a/deepin-devicemanager/src/Tool/ThreadExecXrandr.h b/deepin-devicemanager/src/Tool/ThreadExecXrandr.h index c372c5690..563d90a9f 100644 --- a/deepin-devicemanager/src/Tool/ThreadExecXrandr.h +++ b/deepin-devicemanager/src/Tool/ThreadExecXrandr.h @@ -17,6 +17,10 @@ class ThreadExecXrandr : public QThread * @brief run */ virtual void run() override; + /** + * @brief getMonitorNumber + */ + int getMonitorNumber() { return m_monitorLst.size(); } private: /** @@ -52,6 +56,12 @@ class ThreadExecXrandr : public QThread */ void getResolutionFromDBus(QMap &lstMap); + /** + * @brief getResolutionRateFromDBus:通过dbus获取分辨率和刷新率 + * @param lstMap + */ + void getResolutionRateFromDBus(QList > &lstMap); + /** * @brief getMonitorInfoFromXrandrVerbose:从xrandr --verbose获取显示设备信息 */ @@ -66,6 +76,7 @@ class ThreadExecXrandr : public QThread private: bool m_Gpu; // +#include #include #include #include #include #include +#include +#include DWIDGET_USE_NAMESPACE - +using namespace DDLog; #define ICON_SIZE_WIDTH 36 #define ICON_SIZE_HEIGHT 36 @@ -28,6 +33,7 @@ QMap CommonTools::m_MapDriverIcon = { , {DR_Scaner, QString(":/icons/deepin/builtin/icons/scaner.svg")} , {DR_Tablet, QString(":/icons/deepin/builtin/icons/tablet.svg")} , {DR_WiFi, QString(":/icons/deepin/builtin/icons/Wi-Fi.svg")} + , {DR_OtherDevice, QString(":/icons/deepin/builtin/icons/scaner.svg")} }; QMap CommonTools::m_MapDriverType = { @@ -42,6 +48,7 @@ QMap CommonTools::m_MapDriverType = { , {DR_Scaner, QObject::tr("Imaging device")} , {DR_Tablet, QObject::tr("Other Devices")} , {DR_WiFi, QObject::tr("Wireless network adapter")} + , {DR_OtherDevice, QObject::tr("Other Devices")} }; QMap CommonTools::m_MapStatusIcon = { @@ -52,6 +59,11 @@ QMap CommonTools::m_MapStatusIcon = { , {ST_NOT_INSTALL, QString(":/icons/deepin/builtin/icons/alert.svg")} , {ST_CAN_UPDATE, QString(":/icons/deepin/builtin/icons/alert.svg")} , {ST_WAITING, QString(":/icons/deepin/builtin/icons/waiting.svg")} + , {ST_DRIVER_NOT_BACKUP, QString(":/icons/deepin/builtin/icons/alert.svg")} + , {ST_DRIVER_BACKING_UP, QString("")} + , {ST_DRIVER_BACKUP_FAILED, QString(":/icons/deepin/builtin/icons/warning.svg")} + , {ST_DRIVER_BACKUP_SUCCESS, QString(":/icons/deepin/builtin/icons/ok.svg")} + , {ST_DRIVER_RESTORING, QString("")} }; QMap CommonTools::m_MapStatusType = { @@ -62,6 +74,11 @@ QMap CommonTools::m_MapStatusType = { , {ST_NOT_INSTALL, QObject::tr("Not installed")} , {ST_CAN_UPDATE, QObject::tr("Out-of-date")} , {ST_WAITING, QObject::tr("Waiting")} + , {ST_DRIVER_NOT_BACKUP, QObject::tr("Not backed up")} + , {ST_DRIVER_BACKING_UP, QObject::tr("Backing up")} + , {ST_DRIVER_BACKUP_FAILED, QObject::tr("Backup failed")} + , {ST_DRIVER_BACKUP_SUCCESS, QObject::tr("Backup successful")} + , {ST_DRIVER_RESTORING, QObject::tr("Restoring")} }; QMap CommonTools::m_MapErrorString = { @@ -125,9 +142,9 @@ void CommonTools::feedback() uint8_t supporttype = 1; QDBusReply reply = interface.call("ServiceSession", supporttype); if (reply.isValid()) { - qDebug() << "call com.deepin.dde.ServiceAndSupport success"; + qCDebug(appLog) << "call com.deepin.dde.ServiceAndSupport success"; } else { - qDebug() << "call com.deepin.dde.ServiceAndSupport failed"; + qCDebug(appLog) << "call com.deepin.dde.ServiceAndSupport failed"; } } @@ -144,3 +161,61 @@ QString CommonTools::getUrl() return "https://drive-pre.uniontech.com/api/v1/drive/search"; } } + +QString CommonTools::getBackupPath() +{ + return "/usr/share/deepin-devicemanager/"; +} + +void CommonTools::parseEDID(const QStringList &allEDIDS, const QString &input) +{ + for (auto edid:allEDIDS) { + QProcess process; + process.start(QString("hexdump %1").arg(edid)); + process.waitForFinished(-1); + + QString deviceInfo = process.readAllStandardOutput(); + if (deviceInfo.isEmpty()) + continue; + + QString edidStr; + QStringList lines = deviceInfo.split("\n"); + for (auto line:lines) { + QStringList words = line.trimmed().split(" "); + if (words.size() != 9) + continue; + + words.removeAt(0); + QString l = words.join(""); + l.append("\n"); + edidStr.append(l); + } + + lines = edidStr.split("\n"); + if (lines.size() > 3){ + EDIDParser edidParser; + QString errorMsg; + edidParser.setEdid(edidStr,errorMsg,"\n", false); + + QMap mapInfo; + mapInfo.insert("Vendor",edidParser.vendor()); + mapInfo.insert("Model",edidParser.model()); + //mapInfo.insert("Date",edidParser.releaseDate()); + mapInfo.insert("Size",edidParser.screenSize()); + mapInfo.insert("Display Input",input); + + DeviceMonitor *device = new DeviceMonitor(); + device->setInfoFromEdid(mapInfo); + DeviceManager::instance()->addMonitor(device); + } + } +} + +QString CommonTools::getGpuInfoCommandFromDConfig() +{ + QString cmd; + DConfig *dconfig = DConfig::create("org.deepin.devicemanager","org.deepin.devicemanager"); + if (dconfig && dconfig->isValid() && dconfig->keyList().contains("CommandToGetGPUInfo")) + cmd = dconfig->value("CommandToGetGPUInfo").toString(); + return cmd; +} diff --git a/deepin-devicemanager/src/Tool/commontools.h b/deepin-devicemanager/src/Tool/commontools.h index b54fb2d97..71b2bc890 100644 --- a/deepin-devicemanager/src/Tool/commontools.h +++ b/deepin-devicemanager/src/Tool/commontools.h @@ -73,6 +73,14 @@ class CommonTools : public QObject */ static QString getUrl(); + /** + * @brief getBackupPath 备份路径 + */ + static QString getBackupPath(); + + static void parseEDID(const QStringList &allEDIDS, const QString &input); + static QString getGpuInfoCommandFromDConfig(); + signals: public slots: diff --git a/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.cpp b/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.cpp index 6dca25c64..ae1d7a2b5 100644 --- a/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.cpp +++ b/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.cpp @@ -7,7 +7,7 @@ #include #include #include -#include +#include #include #include @@ -15,12 +15,18 @@ std::atomic DBusWakeupInterface::s_Instance; std::mutex DBusWakeupInterface::m_mutex; -const QString SERVICE_NAME = "com.deepin.devicemanager"; -const QString WAKEUP_SERVICE_PATH = "/com/deepin/wakeupmanager"; -const QString WAKEUP_INTERFACE = "com.deepin.wakeupmanager"; +const QString SERVICE_NAME = "org.deepin.DeviceControl"; +const QString WAKEUP_SERVICE_PATH = "/org/deepin/DeviceControl"; +const QString WAKEUP_INTERFACE = "org.deepin.DeviceControl"; +#ifdef OS_BUILD_V23 +const QString INPUT_SERVICE_NAME = "org.deepin.dde.InputDevices1"; +const QString INPUT_WAKEUP_SERVICE_PATH = "/org/deepin/dde/InputDevices1"; +const QString INPUT_WAKEUP_INTERFACE = "org.deepin.dde.InputDevices1"; +#else const QString INPUT_SERVICE_NAME = "com.deepin.system.InputDevices"; const QString INPUT_WAKEUP_SERVICE_PATH = "/com/deepin/system/InputDevices"; const QString INPUT_WAKEUP_INTERFACE = "com.deepin.system.InputDevices"; +#endif const QString INPUT_WAKEUP_PROPERTIES_INTERFACE = "org.freedesktop.DBus.Properties"; DBusWakeupInterface::DBusWakeupInterface() @@ -29,23 +35,46 @@ DBusWakeupInterface::DBusWakeupInterface() init(); } -bool DBusWakeupInterface::setWakeupMachine(const QString &unique_id, const QString &path, bool wakeup) +bool DBusWakeupInterface::setWakeupMachine(const QString &unique_id, const QString &path, bool wakeup, const QString &name) { if (nullptr != mp_InputIface && mp_InputIface->isValid()) { QStringList pathList = path.split("/", QString::SkipEmptyParts); if (pathList.size() < 3) return false; - auto metaObject = mp_InputIface->metaObject(); - for (int i = 0 ; i < metaObject->methodCount(); ++i) { - if (metaObject->method(i).name() == "SetWakeupDevices") { - QString curPath = pathList[pathList.size() - 2]; - QString busPath = QString("/sys/bus/usb/devices/%1/power/wakeup").arg(curPath); - mp_InputIface->call("SetWakeupDevices", busPath, wakeup ? "enabled" : "disabled"); - return true; + if (name.contains("PS/2")) { + // ps2设备无法通过/sys/devices/platform/i8042/serio1/power/wakeup控制,只能通过acpi的接口进行控制 + QDBusInterface interface(INPUT_SERVICE_NAME, INPUT_WAKEUP_SERVICE_PATH, INPUT_WAKEUP_PROPERTIES_INTERFACE, QDBusConnection::systemBus()); + if (interface.isValid()) { + QDBusMessage replay = interface.call("Get", INPUT_WAKEUP_INTERFACE, "SupportWakeupDevices"); + QVariant v = replay.arguments().first(); + if (v.isValid()) { + QDBusArgument arg = v.value().variant().value(); + QMap allSupportWakeupDevices; + arg >> allSupportWakeupDevices; + QStringList pathList = allSupportWakeupDevices.keys(); + + for (QString path : pathList) { + if (path.contains("PS2")) { + mp_InputIface->call("SetWakeupDevices", path, wakeup ? "enabled" : "disabled"); + return true; + } + } + } + } + } else { + auto metaObject = mp_InputIface->metaObject(); + for (int i = 0 ; i < metaObject->methodCount(); ++i) { + if (metaObject->method(i).name() == "SetWakeupDevices") { + QString curPath = pathList[pathList.size() - 2]; + QString busPath = QString("/sys/bus/usb/devices/%1/power/wakeup").arg(curPath); + mp_InputIface->call("SetWakeupDevices", busPath, wakeup ? "enabled" : "disabled"); + return true; + } } } } + QDBusReply reply = mp_Iface->call("setWakeupMachine", unique_id, path, wakeup); if (reply.isValid()) { return reply.value(); @@ -81,7 +110,7 @@ bool DBusWakeupInterface::canInputWakeupMachine(const QString &path) return file.open(QIODevice::ReadOnly); } -bool DBusWakeupInterface::isInputWakeupMachine(const QString &path) +bool DBusWakeupInterface::isInputWakeupMachine(const QString &path, const QString &name) { if (nullptr != mp_InputIface && mp_InputIface->isValid()) { QDBusInterface interface(INPUT_SERVICE_NAME, INPUT_WAKEUP_SERVICE_PATH, INPUT_WAKEUP_PROPERTIES_INTERFACE, QDBusConnection::systemBus()); @@ -93,13 +122,21 @@ bool DBusWakeupInterface::isInputWakeupMachine(const QString &path) QMap allSupportWakeupDevices; arg >> allSupportWakeupDevices; - QString curPath = path.left(path.size() - 13); - int index = curPath.lastIndexOf('/'); - if (index < 1) - return false; - curPath = curPath.right(curPath.size() - index - 1); - QString busPath = QString("/sys/bus/usb/devices/%1/power/wakeup").arg(curPath); - return (allSupportWakeupDevices.contains(busPath) && allSupportWakeupDevices[busPath] == "enabled"); + if (name.contains("PS/2")) { + for(QString path : allSupportWakeupDevices.keys()) { + if (path.contains("PS2")) { + return allSupportWakeupDevices[path] == "enabled"; + } + } + } else { + QString curPath = path.left(path.size() - 13); + int index = curPath.lastIndexOf('/'); + if (index < 1) + return false; + curPath = curPath.right(curPath.size() - index - 1); + QString busPath = QString("/sys/bus/usb/devices/%1/power/wakeup").arg(curPath); + return (allSupportWakeupDevices.contains(busPath) && allSupportWakeupDevices[busPath] == "enabled"); + } } } } diff --git a/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.h b/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.h index 79fe77641..d9e8e9950 100644 --- a/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.h +++ b/deepin-devicemanager/src/WakeupControl/DBusWakeupInterface.h @@ -40,7 +40,7 @@ class DBusWakeupInterface * @param wakeup 可唤醒 不可唤醒 * @return */ - bool setWakeupMachine(const QString &unique_id, const QString &path, bool wakeup); + bool setWakeupMachine(const QString &unique_id, const QString &path, bool wakeup, const QString &name); /** * @brief canWakeupMachine 获取input是否支持唤醒 @@ -54,7 +54,7 @@ class DBusWakeupInterface * @param path 设备节点路径 * @return */ - bool isInputWakeupMachine(const QString &path); + bool isInputWakeupMachine(const QString &path, const QString &name); /** * @brief isNetworkWakeup 获取网卡是否支持远程唤醒 diff --git a/deepin-devicemanager/src/Widget/BtnLabel.cpp b/deepin-devicemanager/src/Widget/BtnLabel.cpp index 35eb86ea9..73211c7dc 100644 --- a/deepin-devicemanager/src/Widget/BtnLabel.cpp +++ b/deepin-devicemanager/src/Widget/BtnLabel.cpp @@ -3,12 +3,17 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "BtnLabel.h" +#include "commontools.h" +#include "DDLog.h" + +#include #include #include #include #include - +#include +using namespace DDLog; BtnLabel::BtnLabel(DWidget *parent) : DLabel(parent) , m_Desc("") @@ -18,11 +23,39 @@ BtnLabel::BtnLabel(DWidget *parent) connect(this, &QLabel::linkActivated, this, [this]() { if (m_Desc.isEmpty()) return; - DDialog dialog; - dialog.setIcon(style()->standardIcon(QStyle::SP_MessageBoxWarning)); - dialog.setTitle(m_Desc); - dialog.addButton(tr("OK", "button")); - dialog.exec(); + + if (m_Desc == QString("Backup Failed")) { + DDialog dialog; + + DWidget *contentFrame = new DWidget(this); + + DLabel *retryLabel = new DLabel(this); + QVBoxLayout *vLayout = new QVBoxLayout(this); + retryLabel->setElideMode(Qt::ElideMiddle); + retryLabel->setText(QObject::tr("Please try again or give us feedback")); + vLayout->addWidget(retryLabel, 0, Qt::AlignHCenter); + + contentFrame->setLayout(vLayout); + + dialog.setIcon(QIcon::fromTheme("cautious")); + dialog.setTitle(QObject::tr("Driver backup failed!")); + dialog.addContent(contentFrame); + dialog.addButton(tr("OK"), false, DDialog::ButtonNormal); + dialog.addButton(tr("Feedback"), false, DDialog::ButtonNormal); + + int clickedButtonIndex = dialog.exec(); + if (1 == clickedButtonIndex) { + //反馈 + qCDebug(appLog) << __func__ << "fedback...."; + CommonTools::feedback(); + } + } else { + DDialog dialog; + dialog.setIcon(style()->standardIcon(QStyle::SP_MessageBoxWarning)); + dialog.setTitle(m_Desc); + dialog.addButton(tr("OK", "button")); + dialog.exec(); + } }); } diff --git a/deepin-devicemanager/src/Widget/CmdButtonWidget.cpp b/deepin-devicemanager/src/Widget/CmdButtonWidget.cpp index 4023020d0..b08c60c2b 100644 --- a/deepin-devicemanager/src/Widget/CmdButtonWidget.cpp +++ b/deepin-devicemanager/src/Widget/CmdButtonWidget.cpp @@ -9,7 +9,7 @@ // Qt库文件 #include #include -#include +#include #include // Dtk头文件 diff --git a/deepin-devicemanager/src/Widget/DetailTreeView.cpp b/deepin-devicemanager/src/Widget/DetailTreeView.cpp index 5c3718aa5..5613d6416 100644 --- a/deepin-devicemanager/src/Widget/DetailTreeView.cpp +++ b/deepin-devicemanager/src/Widget/DetailTreeView.cpp @@ -10,7 +10,7 @@ #include #include #include -#include +#include #include #include #include @@ -120,6 +120,8 @@ void DetailTreeView::setItem(int row, int column, QTableWidgetItem *item) void DetailTreeView::clear() { + mp_OldItem = nullptr; + mp_CurItem = nullptr; // 清空表格内容 DTableWidget::clear(); @@ -523,6 +525,19 @@ void DetailTreeView::resizeEvent(QResizeEvent *event) mp_CurItem = itemAt(pt); } +void DetailTreeView::mousePressEvent(QMouseEvent *event) +{ + // 鼠标右键事件 + if (event->button() == Qt::RightButton) { + if (mp_ToolTips) { + // 隐藏toopTips + mp_CurItem = nullptr; + mp_ToolTips->hide(); + } + } + DTableWidget::mousePressEvent(event); +} + void DetailTreeView::mouseMoveEvent(QMouseEvent *event) { // 鼠标移动获取位置 diff --git a/deepin-devicemanager/src/Widget/DetailTreeView.h b/deepin-devicemanager/src/Widget/DetailTreeView.h index 9810abe67..a1f84cbbf 100644 --- a/deepin-devicemanager/src/Widget/DetailTreeView.h +++ b/deepin-devicemanager/src/Widget/DetailTreeView.h @@ -161,6 +161,12 @@ public slots: */ void resizeEvent(QResizeEvent *event) override; + /** + * @brief mousePressEvent + * @param event + */ + void mousePressEvent(QMouseEvent *event) override; + /** * @brief mouseMoveEvent * @param event diff --git a/deepin-devicemanager/src/Widget/DetailViewDelegate.cpp b/deepin-devicemanager/src/Widget/DetailViewDelegate.cpp index 4689c487f..8b894af07 100644 --- a/deepin-devicemanager/src/Widget/DetailViewDelegate.cpp +++ b/deepin-devicemanager/src/Widget/DetailViewDelegate.cpp @@ -7,7 +7,7 @@ // Qt库文件 #include -#include +#include #include // Dtk头文件 diff --git a/deepin-devicemanager/src/Widget/DetectedStatusWidget.cpp b/deepin-devicemanager/src/Widget/DetectedStatusWidget.cpp index f5c3afcc0..42c9d23cd 100644 --- a/deepin-devicemanager/src/Widget/DetectedStatusWidget.cpp +++ b/deepin-devicemanager/src/Widget/DetectedStatusWidget.cpp @@ -5,12 +5,14 @@ #include "DetectedStatusWidget.h" #include "commontools.h" #include "BtnLabel.h" +#include "DDLog.h" #include #include #include #include #include +#include #include #include @@ -19,6 +21,8 @@ #include #include #include +#include + #define MARGIN_LR 20 #define MARGIN_TB 12 #define ICON_BT_SIZE 36 @@ -33,9 +37,17 @@ #define SPACE_9 9 #define SPACE_5 5 +#ifdef OS_BUILD_V23 +const QString SERVICE_NAME = "org.deepin.dde.ShutdownFront1"; +const QString DEVICE_SERVICE_PATH = "/org/deepin/dde/ShutdownFront1"; +const QString DEVICE_SERVICE_INTERFACE = "org.deepin.dde.ShutdownFront1"; +#else const QString SERVICE_NAME = "com.deepin.dde.shutdownFront"; const QString DEVICE_SERVICE_PATH = "/com/deepin/dde/shutdownFront"; const QString DEVICE_SERVICE_INTERFACE = "com.deepin.dde.shutdownFront"; +#endif + +using namespace DDLog; DetectedStatusWidget::DetectedStatusWidget(QWidget *parent) : DFrame(parent) @@ -45,14 +57,17 @@ DetectedStatusWidget::DetectedStatusWidget(QWidget *parent) , mp_ModelLabel(new TipsLabel(this)) , mp_RebootLabel(new DLabel(this)) , mp_FeedBackLabel(new DLabel(this)) + , mp_BackupPathLabel(new DLabel(this)) , mp_InstallButton(new DSuggestButton(this)) , mp_ReDetectedSgButton(new DSuggestButton(this)) + , mp_BackupSgButton(new DSuggestButton(this)) , mp_CancelButton(new DPushButton(this)) , mp_ReDetectedIconButton(new DIconButton(this)) , mp_Progress(new DProgressBar(this)) , mp_HLayoutTotal(nullptr) , mp_HLayoutButton(nullptr) , mp_VLayoutLabel(nullptr) + , mp_HLayoutLabel(nullptr) { initUI(); initConnect(); @@ -63,6 +78,11 @@ DetectedStatusWidget::~DetectedStatusWidget() DELETE_PTR(mp_HLayoutButton); DELETE_PTR(mp_VLayoutLabel); DELETE_PTR(mp_HLayoutTotal); + + if (mp_HLayoutLabel) { + mp_HLayoutLabel->deleteLater(); + mp_HLayoutLabel = nullptr; + } } void DetectedStatusWidget::setDetectFinishUI(const QString &size, const QString &model, bool hasInstall) @@ -362,7 +382,6 @@ void DetectedStatusWidget::setNoUpdateDriverUI(const QString &model) mp_HLayoutTotal->addLayout(mp_VLayoutLabel); // 重新检测 - mp_HLayoutButton->addStretch(); mp_HLayoutButton->addWidget(mp_ReDetectedSgButton); mp_HLayoutTotal->addLayout(mp_HLayoutButton); @@ -378,7 +397,7 @@ void DetectedStatusWidget::setNoUpdateDriverUI(const QString &model) void DetectedStatusWidget::refreshUI(Status pageType) { - qInfo() << pageType; + qCInfo(appLog) << pageType; switch (pageType) { case ST_NOT_INSTALL: { this->setDetectFinishUI("5", "fffffff", true); @@ -418,6 +437,258 @@ void DetectedStatusWidget::setInstallBtnEnable(bool enable) } } +void DetectedStatusWidget::setBackupBtnEnable(bool enable) +{ + if (mp_BackupSgButton) { + mp_BackupSgButton->setEnabled(enable); + } +} + +void DetectedStatusWidget::setNoBackupDriverUI(int backableSize, int backedupSize) +{ + hideAll(); + // Icon Label + QIcon icon(QIcon::fromTheme(":/icons/deepin/builtin/icons/latest.svg")); + QPixmap pic = icon.pixmap(ICON_LABEL_SIZE, ICON_LABEL_SIZE); + mp_PicLabel->setPixmap(pic); + + int total = backableSize + backedupSize; + QString updateStr = QObject::tr("All drivers have been backed up"); + mp_UpdateLabel->setText(updateStr); + mp_ModelLabel->setText(QObject::tr("A total of %1 drivers, of which %2 have been backed up").arg(total).arg(backedupSize)); + + mp_HLayoutTotal->addWidget(mp_PicLabel); + mp_HLayoutTotal->addSpacing(SPACE_15); + mp_VLayoutLabel->addStretch(); + mp_VLayoutLabel->addWidget(mp_UpdateLabel); + mp_VLayoutLabel->addSpacing(SPACE_5); + mp_HLayoutLabel->addWidget(mp_ModelLabel); + mp_HLayoutLabel->addSpacing(SPACE_5); + mp_HLayoutLabel->addWidget(mp_BackupPathLabel); + mp_VLayoutLabel->addLayout(mp_HLayoutLabel); + mp_VLayoutLabel->addStretch(); + mp_HLayoutTotal->addLayout(mp_VLayoutLabel); + + // 重新检测 + mp_HLayoutButton->addStretch(); + mp_HLayoutButton->addWidget(mp_ReDetectedSgButton); + mp_HLayoutTotal->addLayout(mp_HLayoutButton); + + // 显示控件 + mp_PicLabel->show(); + mp_UpdateLabel->show(); + mp_ModelLabel->show(); + mp_ReDetectedSgButton->show(); + mp_BackupPathLabel->show(); + this->setLayout(mp_HLayoutTotal); +} + +void DetectedStatusWidget::setBackableDriverUI(int backableSize, int backedupSize) +{ + hideAll(); + + QIcon icon(QIcon::fromTheme(":/icons/deepin/builtin/icons/backup_96.svg")); + QPixmap pic = icon.pixmap(ICON_LABEL_SIZE, ICON_LABEL_SIZE); + mp_PicLabel->setPixmap(pic); + + int total = backableSize + backedupSize; + if (backedupSize <= 0) { + mp_UpdateLabel->setText(QObject::tr("You have %1 drivers that can be backed up, it is recommended to do so immediately").arg(backableSize)); + mp_ModelLabel->setText(""); + } else { + mp_UpdateLabel->setText(QObject::tr("You have %1 drivers that can be backed up").arg(backableSize)); + mp_ModelLabel->setText(QObject::tr("A total of %1 drivers, of which %2 have been backed up").arg(total).arg(backedupSize)); + } + + mp_HLayoutTotal->addWidget(mp_PicLabel); + mp_HLayoutTotal->addSpacing(SPACE_15); + mp_VLayoutLabel->addStretch(); + mp_VLayoutLabel->addWidget(mp_UpdateLabel); + mp_VLayoutLabel->addSpacing(SPACE_5); + mp_HLayoutLabel->addWidget(mp_ModelLabel); + if (backedupSize > 0) { + mp_HLayoutLabel->addSpacing(SPACE_5); + mp_HLayoutLabel->addWidget(mp_BackupPathLabel); + } + mp_VLayoutLabel->addLayout(mp_HLayoutLabel); + mp_VLayoutLabel->addStretch(); + mp_HLayoutTotal->addLayout(mp_VLayoutLabel); + + mp_HLayoutButton->addStretch(); + mp_HLayoutButton->addWidget(mp_ReDetectedIconButton); + mp_HLayoutButton->addSpacing(SPACE_10); + mp_HLayoutButton->addWidget(mp_BackupSgButton); + mp_HLayoutTotal->addLayout(mp_HLayoutButton); + + mp_BackupSgButton->setEnabled(false); + + mp_PicLabel->show(); + mp_UpdateLabel->show(); + mp_ModelLabel->show(); + mp_ReDetectedIconButton->show(); + mp_BackupSgButton->show(); + if (backedupSize > 0) { + mp_BackupPathLabel->show(); + } + this->setLayout(mp_HLayoutTotal); +} + +void DetectedStatusWidget::setBackingUpDriverUI(const QString &driverDescription, int totalValue, int progressValue) +{ + hideAll(); + + QIcon icon(QIcon::fromTheme(":/icons/deepin/builtin/icons/backup_96.svg")); + QPixmap pic = icon.pixmap(ICON_LABEL_SIZE, ICON_LABEL_SIZE); + mp_PicLabel->setPixmap(pic); + + mp_UpdateLabel->setText(QObject::tr("Backing up the %1 driver, a total of %2 drivers").arg(progressValue).arg(totalValue)); + mp_ModelLabel->setText(QObject::tr("Backing up: %1").arg(driverDescription)); + mp_Progress->setValue(progressValue * 10); + + mp_HLayoutTotal->addWidget(mp_PicLabel); + mp_HLayoutTotal->addSpacing(SPACE_15); + mp_VLayoutLabel->addStretch(); + mp_VLayoutLabel->addWidget(mp_UpdateLabel); + mp_VLayoutLabel->addSpacing(SPACE_5); + mp_VLayoutLabel->addWidget(mp_Progress); + mp_VLayoutLabel->addSpacing(SPACE_5); + mp_VLayoutLabel->addWidget(mp_ModelLabel); + mp_VLayoutLabel->addStretch(); + + mp_HLayoutTotal->addLayout(mp_VLayoutLabel); + + // 取消 + mp_HLayoutButton->addStretch(); + mp_HLayoutButton->addWidget(mp_CancelButton); + mp_HLayoutTotal->addLayout(mp_HLayoutButton); + + mp_PicLabel->show(); + mp_UpdateLabel->show(); + mp_ModelLabel->show(); + mp_Progress->show(); + mp_CancelButton->show(); + this->setLayout(mp_HLayoutTotal); +} + +void DetectedStatusWidget::setBackupSuccessUI(int success, int failed) +{ + hideAll(); + // Icon Label + QIcon icon(QIcon::fromTheme(":/icons/deepin/builtin/icons/backup_96.svg")); + QPixmap pic = icon.pixmap(ICON_LABEL_SIZE, ICON_LABEL_SIZE); + mp_PicLabel->setPixmap(pic); + + QString successStr; + if (failed > 0) { + successStr = QObject::tr("%1 drivers backed up, %2 drivers failed").arg(success).arg(failed); + } else if (success <= 0) { + successStr = QObject::tr("Failed to backup drivers"); + } else { + successStr = QObject::tr("%1 drivers backed up").arg(success); + } + + mp_UpdateLabel->setText(successStr); + + mp_HLayoutTotal->addWidget(mp_PicLabel); + mp_HLayoutTotal->addSpacing(11); + mp_VLayoutLabel->addStretch(); + mp_VLayoutLabel->addWidget(mp_UpdateLabel); +// mp_VLayoutLabel->addSpacing(SPACE_9); +// mp_VLayoutLabel->addWidget(mp_RebootLabel); + mp_VLayoutLabel->addStretch(); + mp_HLayoutTotal->addLayout(mp_VLayoutLabel); + + +// mp_BackupSgButton->setEnabled(false); + mp_HLayoutButton->addStretch(); + mp_HLayoutButton->addWidget(mp_ReDetectedIconButton); + mp_HLayoutButton->addSpacing(SPACE_10); + mp_HLayoutButton->addWidget(mp_BackupSgButton); + mp_HLayoutTotal->addLayout(mp_HLayoutButton); + + // 显示控件 + mp_PicLabel->show(); + mp_UpdateLabel->show(); +// mp_RebootLabel->show(); + mp_ReDetectedIconButton->show(); + mp_BackupSgButton->show(); + this->setLayout(mp_HLayoutTotal); +} + +void DetectedStatusWidget::setRestoreDriverUI(int restorableSize) +{ + hideAll(); + + QIcon icon(QIcon::fromTheme(":/icons/deepin/builtin/icons/restore_96.svg")); + QPixmap pic = icon.pixmap(ICON_LABEL_SIZE, ICON_LABEL_SIZE); + mp_PicLabel->setPixmap(pic); + + mp_UpdateLabel->setText(QObject::tr("You have %1 drivers that can be restored").arg(restorableSize)); + mp_ModelLabel->setText(QObject::tr("Please select a driver to restore")); + + mp_HLayoutTotal->addWidget(mp_PicLabel); + mp_HLayoutTotal->addSpacing(SPACE_15); + mp_VLayoutLabel->addStretch(); + mp_VLayoutLabel->addWidget(mp_UpdateLabel); + mp_VLayoutLabel->addSpacing(SPACE_5); + mp_VLayoutLabel->addWidget(mp_ModelLabel); + mp_VLayoutLabel->addStretch(); + mp_HLayoutTotal->addLayout(mp_VLayoutLabel); + + mp_HLayoutButton->addStretch(); + mp_HLayoutButton->addWidget(mp_ReDetectedSgButton); + mp_HLayoutTotal->addLayout(mp_HLayoutButton); + + mp_PicLabel->show(); + mp_UpdateLabel->show(); + mp_ModelLabel->show(); + mp_ReDetectedSgButton->show(); + this->setLayout(mp_HLayoutTotal); +} + +void DetectedStatusWidget::setRestoringUI(int progressValue, QString driverDescription) +{ + hideAll(); + + QIcon icon(QIcon::fromTheme(":/icons/deepin/builtin/icons/restore_96.svg")); + QPixmap pic = icon.pixmap(ICON_LABEL_SIZE, ICON_LABEL_SIZE); + mp_PicLabel->setPixmap(pic); + + mp_UpdateLabel->setText(QObject::tr("Driver is restoring...")); + mp_ModelLabel->setText(QObject::tr("Restoring: %1").arg(driverDescription)); + mp_Progress->setValue(progressValue); + + mp_HLayoutTotal->addWidget(mp_PicLabel); + mp_HLayoutTotal->addSpacing(SPACE_15); + mp_VLayoutLabel->addStretch(); + mp_VLayoutLabel->addWidget(mp_UpdateLabel); + mp_VLayoutLabel->addSpacing(SPACE_5); + mp_VLayoutLabel->addWidget(mp_Progress); + mp_VLayoutLabel->addSpacing(SPACE_5); + mp_VLayoutLabel->addWidget(mp_ModelLabel); + mp_VLayoutLabel->addStretch(); + mp_HLayoutTotal->addLayout(mp_VLayoutLabel); + + mp_HLayoutButton->addStretch(); + mp_HLayoutButton->addWidget(mp_ReDetectedSgButton); + mp_HLayoutTotal->addLayout(mp_HLayoutButton); + + mp_PicLabel->show(); + mp_UpdateLabel->show(); + mp_ModelLabel->show(); + mp_Progress->show(); + mp_ReDetectedSgButton->hide(); + this->setLayout(mp_HLayoutTotal); +} + +void DetectedStatusWidget::setReDetectEnable(bool enable) +{ + if (mp_ReDetectedSgButton) + mp_ReDetectedSgButton->setEnabled(enable); + if (mp_ReDetectedIconButton) + mp_ReDetectedIconButton->setEnabled(enable); +} + void DetectedStatusWidget::slotReboot() { // 调用DBus接口重启 @@ -427,7 +698,6 @@ void DetectedStatusWidget::slotReboot() "/teval `dbus-launch --auto-syntax`/n"); } - // QDBusInterface *iface = new QDBusInterface(SERVICE_NAME, DEVICE_SERVICE_PATH, DEVICE_SERVICE_INTERFACE, QDBusConnection::sessionBus()); iface->call("Restart"); } @@ -437,11 +707,22 @@ void DetectedStatusWidget::slotFeedBack() CommonTools::feedback(); } +void DetectedStatusWidget::slotBackupPath() +{ + Dtk::Widget::DDesktopServices::showFolder(CommonTools::getBackupPath() + "driver"); +} + + void DetectedStatusWidget::slotInstall() { emit installAll(); } +void DetectedStatusWidget::slotBackup() +{ + emit backupAll(); +} + void DetectedStatusWidget::slotReDetectSlot() { emit redetected(); @@ -449,7 +730,7 @@ void DetectedStatusWidget::slotReDetectSlot() void DetectedStatusWidget::slotCancel() { - emit undoInstall(); + emit cancelClicked(); } void DetectedStatusWidget::onUpdateTheme() @@ -507,6 +788,7 @@ void DetectedStatusWidget::initUI() QFont font = mp_UpdateLabel->font(); font.setWeight(FONT_WEIGHT); mp_UpdateLabel->setFont(font); + mp_UpdateLabel->setWordWrap(true); DFontSizeManager::instance()->bind(mp_UpdateLabel, DFontSizeManager::T5); // 检测时间 @@ -523,6 +805,10 @@ void DetectedStatusWidget::initUI() QString feedbackStr = QString("") + QObject::tr("submit feedback") + ""; mp_FeedBackLabel->setText(QObject::tr("Please try again or %1 to us").arg(feedbackStr)); + // 备份路径 + DFontSizeManager::instance()->bind(mp_BackupPathLabel, DFontSizeManager::T9); + mp_BackupPathLabel->setText(QString("") + QObject::tr("View backup path") + ""); + // 一键安装 mp_InstallButton->setText(QObject::tr("Install All")); mp_InstallButton->setFixedWidth(BUTTON_WIDTH); @@ -533,6 +819,11 @@ void DetectedStatusWidget::initUI() mp_ReDetectedSgButton->setFixedWidth(BUTTON_WIDTH); mp_ReDetectedSgButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + // 一键备份 + mp_BackupSgButton->setText(QObject::tr("Backup All")); + mp_BackupSgButton->setFixedWidth(BUTTON_WIDTH); + mp_BackupSgButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + // 取消 mp_CancelButton->setText(QObject::tr("Cancel")); mp_CancelButton->setMinimumWidth(BUTTON_WIDTH); @@ -555,9 +846,15 @@ void DetectedStatusWidget::initConnect() // 反馈 connect(mp_FeedBackLabel, &QLabel::linkActivated, this, &DetectedStatusWidget::slotFeedBack); + // 备份路径 + connect(mp_BackupPathLabel, &QLabel::linkActivated, this, &DetectedStatusWidget::slotBackupPath); + // 一键安装 connect(mp_InstallButton, &DSuggestButton::clicked, this, &DetectedStatusWidget::slotInstall); + // 一键备份 + connect(mp_BackupSgButton, &DSuggestButton::clicked, this, &DetectedStatusWidget::slotBackup); + // redetected button connect(mp_ReDetectedIconButton, &DIconButton::clicked, this, &DetectedStatusWidget::slotReDetectSlot); connect(mp_ReDetectedSgButton, &DIconButton::clicked, this, &DetectedStatusWidget::slotReDetectSlot); @@ -577,7 +874,9 @@ void DetectedStatusWidget::hideAll() mp_ModelLabel->hide(); mp_RebootLabel->hide(); mp_FeedBackLabel->hide(); + mp_BackupPathLabel->hide(); mp_InstallButton->hide(); + mp_BackupSgButton->hide(); mp_ReDetectedSgButton->hide(); mp_CancelButton->hide(); mp_ReDetectedIconButton->hide(); @@ -587,8 +886,10 @@ void DetectedStatusWidget::hideAll() mp_HLayoutTotal = new QHBoxLayout(); mp_HLayoutButton = new QHBoxLayout(); mp_VLayoutLabel = new QVBoxLayout(); + mp_HLayoutLabel = new QHBoxLayout(); mp_HLayoutTotal->setContentsMargins(MARGIN_LR, MARGIN_TB, MARGIN_LR, MARGIN_TB); mp_HLayoutTotal->setSpacing(0); mp_HLayoutButton->setSpacing(0); mp_VLayoutLabel->setSpacing(0); + mp_HLayoutLabel->setSpacing(0); } diff --git a/deepin-devicemanager/src/Widget/DetectedStatusWidget.h b/deepin-devicemanager/src/Widget/DetectedStatusWidget.h index 45f9caa1d..6a03e51ff 100644 --- a/deepin-devicemanager/src/Widget/DetectedStatusWidget.h +++ b/deepin-devicemanager/src/Widget/DetectedStatusWidget.h @@ -104,11 +104,21 @@ class DetectedStatusWidget : public DFrame * @param enable */ void setInstallBtnEnable(bool enable); + void setBackupBtnEnable(bool enable); + + void setNoBackupDriverUI(int backableSize, int backedupSize); + void setBackableDriverUI(int backableSize, int backedupSize); + void setBackingUpDriverUI(const QString &driverDescription, int totalValue, int progressValue); + void setBackupSuccessUI(int success, int failed); + void setRestoreDriverUI(int restorableSize); + void setRestoringUI(int progressValue = 0, QString driverDescription = ""); + void setReDetectEnable(bool enable); signals: void redetected(); void installAll(); - void undoInstall(); + void backupAll(); + void cancelClicked(); public slots: /** @@ -121,11 +131,21 @@ public slots: */ void slotFeedBack(); + /** + * @brief slotBackupPath: 打开备份路径 + */ + void slotBackupPath(); + /** * @brief slotInstall: 一键安装槽函数 */ void slotInstall(); + /** + * @brief slotInstall: 一键备份槽函数 + */ + void slotBackup(); + /** * @brief slotReDetectSlot: 重新检测槽函数 */ @@ -169,8 +189,10 @@ public slots: TipsLabel *mp_ModelLabel; // 第三行 联想 Lenovo Product 台式机 或 下载速度 Label DLabel *mp_RebootLabel; // 重启Label DLabel *mp_FeedBackLabel; // 反馈Label + DLabel *mp_BackupPathLabel; // 备份路径Label DSuggestButton *mp_InstallButton; // 一键安装 Button DSuggestButton *mp_ReDetectedSgButton; // 重新检测 Suggest Button + DSuggestButton *mp_BackupSgButton; // 一键备份 Suggest Button DPushButton *mp_CancelButton; // 取消 Button DIconButton *mp_ReDetectedIconButton; // 重新检测 Icon Button DProgressBar *mp_Progress; // 下载进度 安装进度 @@ -178,6 +200,7 @@ public slots: QHBoxLayout *mp_HLayoutTotal; // 整体横向布局 QHBoxLayout *mp_HLayoutButton; // Button 横向布局 QVBoxLayout *mp_VLayoutLabel; // label 纵向布局 + QHBoxLayout *mp_HLayoutLabel; // label 横向布局 }; diff --git a/deepin-devicemanager/src/Widget/DeviceListView.cpp b/deepin-devicemanager/src/Widget/DeviceListView.cpp index 43c8f6214..8cd56b9d0 100644 --- a/deepin-devicemanager/src/Widget/DeviceListView.cpp +++ b/deepin-devicemanager/src/Widget/DeviceListView.cpp @@ -12,7 +12,7 @@ // Qt库文件 #include #include -#include +#include #include #include diff --git a/deepin-devicemanager/src/Widget/DriverListViewDelegate.cpp b/deepin-devicemanager/src/Widget/DriverListViewDelegate.cpp index 97f56234d..0fa8ada53 100644 --- a/deepin-devicemanager/src/Widget/DriverListViewDelegate.cpp +++ b/deepin-devicemanager/src/Widget/DriverListViewDelegate.cpp @@ -14,7 +14,7 @@ #include // Qt -#include +#include #include #include #include diff --git a/deepin-devicemanager/src/Widget/LongTextLabel.cpp b/deepin-devicemanager/src/Widget/LongTextLabel.cpp index 72877e821..a69b5c849 100644 --- a/deepin-devicemanager/src/Widget/LongTextLabel.cpp +++ b/deepin-devicemanager/src/Widget/LongTextLabel.cpp @@ -11,7 +11,7 @@ #include // Qt库文件 -#include +#include #include #include diff --git a/deepin-devicemanager/src/Widget/RichTextDelegate.cpp b/deepin-devicemanager/src/Widget/RichTextDelegate.cpp index ed99cf497..c071a7519 100644 --- a/deepin-devicemanager/src/Widget/RichTextDelegate.cpp +++ b/deepin-devicemanager/src/Widget/RichTextDelegate.cpp @@ -15,7 +15,7 @@ #include #include #include -#include +#include #include #include diff --git a/deepin-devicemanager/src/Widget/TableWidget.cpp b/deepin-devicemanager/src/Widget/TableWidget.cpp index 8631d1e51..c9dd8a628 100644 --- a/deepin-devicemanager/src/Widget/TableWidget.cpp +++ b/deepin-devicemanager/src/Widget/TableWidget.cpp @@ -20,7 +20,7 @@ // Qt库文件 #include -#include +#include #include #include @@ -280,10 +280,18 @@ void TableWidget::slotShowMenu(const QPoint &point) bool isWakeup = false; if(file.open(QIODevice::ReadOnly)){ QString info = file.readAll(); - if(info.contains("disabled")) - isWakeup = false; - else - isWakeup = true; + if (wakeupPath.contains("/proc/acpi/wakeup")) { + bool wakedUp = DBusWakeupInterface::getInstance()->isInputWakeupMachine(item->data(Qt::UserRole+4).toString(), + item->data(Qt::UserRole+5).toString()); + isWakeup = wakedUp; + } else { + if(info.contains("disabled")) { + isWakeup = false; + } + else { + isWakeup = true; + } + } } mp_WakeupMachine->setChecked(isWakeup); }else{ diff --git a/deepin-devicemanager/src/Widget/TextBrowser.cpp b/deepin-devicemanager/src/Widget/TextBrowser.cpp index eb6d2a0d0..c63f47ba6 100644 --- a/deepin-devicemanager/src/Widget/TextBrowser.cpp +++ b/deepin-devicemanager/src/Widget/TextBrowser.cpp @@ -21,7 +21,7 @@ #include #include #include -#include +#include TextBrowser::TextBrowser(QWidget *parent) : DTextBrowser(parent) @@ -62,7 +62,7 @@ void TextBrowser::showDeviceInfo(DeviceBaseInfo *info) // 添加一个表格 if (mp_Info->enable() && mp_Info->available()) { - const QList> &baseInfo = info->getBaseAttribs(); + const QList> &baseInfo = info->getBaseTranslationAttribs(); domTableInfo(doc, baseInfo); } @@ -87,10 +87,10 @@ void TextBrowser::updateInfo() // 添加一个表格 if (mp_Info->enable() && mp_Info->available()) { - const QList> &baseInfo = mp_Info->getBaseAttribs(); + const QList> &baseInfo = mp_Info->getBaseTranslationAttribs(); domTableInfo(doc, baseInfo); if (m_ShowOtherInfo) { - const QList> &otherInfo = mp_Info->getOtherAttribs(); + const QList> &otherInfo = mp_Info->getOtherTranslationAttribs(); domTableInfo(doc, otherInfo); } } @@ -111,7 +111,7 @@ void TextBrowser::setWakeupMachine(bool wakeup) // 键盘鼠标唤醒机器 DeviceInput *input = qobject_cast(mp_Info); if(input && !input->wakeupID().isEmpty() && !input->sysPath().isEmpty()){ - DBusWakeupInterface::getInstance()->setWakeupMachine(input->wakeupID(),input->sysPath(),wakeup); + DBusWakeupInterface::getInstance()->setWakeupMachine(input->wakeupID(),input->sysPath(),wakeup, input->name()); } // 网卡的远程唤醒 diff --git a/deepin-devicemanager/src/Widget/TipsWidget.cpp b/deepin-devicemanager/src/Widget/TipsWidget.cpp index abdafa98d..9802d66d8 100644 --- a/deepin-devicemanager/src/Widget/TipsWidget.cpp +++ b/deepin-devicemanager/src/Widget/TipsWidget.cpp @@ -10,7 +10,7 @@ #include #include -#include +#include TipsWidget::TipsWidget(QWidget *parent) : DWidget(parent) { diff --git a/deepin-devicemanager/src/Widget/UrlChooserEdit.cpp b/deepin-devicemanager/src/Widget/UrlChooserEdit.cpp index d307a9e19..784032b89 100644 --- a/deepin-devicemanager/src/Widget/UrlChooserEdit.cpp +++ b/deepin-devicemanager/src/Widget/UrlChooserEdit.cpp @@ -4,6 +4,7 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "UrlChooserEdit.h" +#include "DDLog.h" #include #include @@ -16,7 +17,9 @@ #include #include #include +#include +using namespace DDLog; UrlChooserEdit::UrlChooserEdit(QWidget *parent) : DWidget(parent) ,mp_urlEdit(new DLineEdit) @@ -80,7 +83,7 @@ void UrlChooserEdit::checkLocalFolder(const QString &path) bool isLocal = true; mp_urlEdit->setAlert(false); QStorageInfo info(mp_folderPath); //获取路径信息 - qInfo() << __func__ <setAlert(true); mp_urlEdit->showAlertMessage(tr("Select a local folder please"),this,1000); diff --git a/deepin-devicemanager/src/Widget/driveritem.cpp b/deepin-devicemanager/src/Widget/driveritem.cpp index db4add263..6da8b78a7 100644 --- a/deepin-devicemanager/src/Widget/driveritem.cpp +++ b/deepin-devicemanager/src/Widget/driveritem.cpp @@ -168,13 +168,13 @@ DriverStatusItem::DriverStatusItem(DWidget *parent, Status s) void DriverStatusItem::setStatus(Status st) { - showSpinner(ST_DOWNLOADING == st || ST_INSTALL == st); + showSpinner(ST_DOWNLOADING == st || ST_INSTALL == st || ST_DRIVER_BACKING_UP == st || ST_DRIVER_RESTORING == st); mp_Icon->setPixmap(QIcon(CommonTools::getStatusPixmap(st)).pixmap(16, 16)); // bug132075 安装成功状态此button无法点击 QString ts = DApplication::translate("QObject", CommonTools::getStausType(st).toStdString().data()); - if (ST_FAILED == st) { + if (ST_FAILED == st || ST_DRIVER_BACKUP_FAILED == st) { QString statusStr = QString("") + ts + ""; mp_Status->setText(statusStr); } else { @@ -202,7 +202,7 @@ void DriverStatusItem::showSpinner(bool spin) mp_Status->setVisible(true); } -DriverOperationItem::DriverOperationItem(DWidget *parent, bool install) +DriverOperationItem::DriverOperationItem(DWidget *parent, Mode mode) : DWidget(parent) , mp_Btn(new DToolButton(this)) { @@ -211,11 +211,9 @@ DriverOperationItem::DriverOperationItem(DWidget *parent, bool install) hLayout->addWidget(mp_Btn); mp_Btn->setFixedSize(36, 36); mp_Btn->setIconSize(QSize(36, 36)); - m_IsInstall = install; + m_mode = mode; setBtnIcon(); this->setLayout(hLayout); - // bug134379 驱动更新/安装按钮,悬浮框提示 - mp_Btn->setToolTip(install ? QObject::tr("Install") : QObject::tr("Update")); // 处理信号逻辑 connect(mp_Btn, &DIconButton::clicked, this, &DriverOperationItem::clicked); } @@ -227,10 +225,25 @@ void DriverOperationItem::setBtnEnable(bool enable) void DriverOperationItem::setBtnIcon() { - if (m_IsInstall) { + switch (m_mode) { + case Mode::INSTALL: mp_Btn->setIcon(QIcon::fromTheme("install")); - } else { + mp_Btn->setToolTip(QObject::tr("Install")); + break; + case Mode::UPDATE: mp_Btn->setIcon(QIcon::fromTheme("update-btn")); + mp_Btn->setToolTip(QObject::tr("Update")); + break; + case Mode::BACKUP: + mp_Btn->setIcon(QIcon(":/icons/deepin/builtin/light/backup.svg")); + mp_Btn->setIconSize(QSize(16, 16)); + mp_Btn->setToolTip(QObject::tr("Backup")); + break; + case Mode::RESTORE: + mp_Btn->setIcon(QIcon(":/icons/deepin/builtin/light/restore.svg")); + mp_Btn->setIconSize(QSize(16, 16)); + mp_Btn->setToolTip(QObject::tr("Restore")); + break; } } diff --git a/deepin-devicemanager/src/Widget/driveritem.h b/deepin-devicemanager/src/Widget/driveritem.h index 55ab06028..b6376bac5 100644 --- a/deepin-devicemanager/src/Widget/driveritem.h +++ b/deepin-devicemanager/src/Widget/driveritem.h @@ -162,19 +162,31 @@ class DriverOperationItem : public DWidget { Q_OBJECT public: - explicit DriverOperationItem(DWidget *parent = nullptr, bool install = true); + enum Mode { + INSTALL = 0, + UPDATE, + BACKUP, + RESTORE + }; + + explicit DriverOperationItem(DWidget *parent = nullptr, Mode m_mode = INSTALL); void setBtnEnable(bool enable); // 设置Btn Icon void setBtnIcon(); + + Mode mode() {return m_mode;} + protected: void enterEvent(QEvent *event) override; void leaveEvent(QEvent *event) override; + signals: void clicked(bool checked = false); + private: DToolButton *mp_Btn; - bool m_IsInstall; // 是否是安装 + Mode m_mode; }; #endif // DRIVERITEM_H diff --git a/deepin-devicemanager/src/Widget/drivertableview.cpp b/deepin-devicemanager/src/Widget/drivertableview.cpp index 77c54c003..6b84b9116 100644 --- a/deepin-devicemanager/src/Widget/drivertableview.cpp +++ b/deepin-devicemanager/src/Widget/drivertableview.cpp @@ -3,7 +3,6 @@ // SPDX-License-Identifier: GPL-3.0-or-later #include "drivertableview.h" -#include "driveritem.h" #include "MacroDefinition.h" #include @@ -13,7 +12,7 @@ #include #include -#include +#include #include #include #include @@ -379,27 +378,36 @@ void DriverTableView::setWidget(int row, int column, DWidget *widget) Q_UNUSED(checked) int rowCount = mp_Model->rowCount(); for (int i = 0; i < rowCount; i++) { - DriverOperationItem *curItem = dynamic_cast(indexWidget(mp_Model->index(i, 5))); - DriverCheckItem *cb = dynamic_cast(indexWidget(mp_Model->index(i, 0))); - DriverNameItem *name = dynamic_cast(indexWidget(mp_Model->index(i, 1))); - DriverStatusItem *status = dynamic_cast(indexWidget(mp_Model->index(i, 4))); - if (curItem && cb && name && status) { - if (curItem == orItem) { - // 当前行按钮置灰 - curItem->setBtnEnable(false); - // 当前行的勾选框置灰 - cb->setCbEnable(false); - cb->setChecked(true); - // 状态修改为等待中 - status->setStatus(ST_WAITING); - // 发送信号出去 - emit operatorClicked(name->index()); - } else { - // 此时如果选中,则取消选中 - if (cb->checked() && (status->getStatus() == ST_NOT_INSTALL || status->getStatus() == ST_CAN_UPDATE)) { - cb->setChecked(false); + if (DriverOperationItem::RESTORE == orItem->mode()) { + DriverNameItem *name = dynamic_cast(indexWidget(mp_Model->index(i, 0))); + DriverOperationItem *curItem = dynamic_cast(indexWidget(mp_Model->index(i, 3))); + if (curItem && name && curItem == orItem) { + emit operatorClicked(name->index(), i, orItem->mode()); + } + } else { + DriverCheckItem *cb = dynamic_cast(indexWidget(mp_Model->index(i, 0))); + DriverNameItem *name = dynamic_cast(indexWidget(mp_Model->index(i, 1))); + DriverStatusItem *status = dynamic_cast(indexWidget(mp_Model->index(i, 4))); + DriverOperationItem *curItem = dynamic_cast(indexWidget(mp_Model->index(i, 5))); + if (curItem && cb && name && status) { + if (curItem == orItem) { + // 当前行按钮置灰 + curItem->setBtnEnable(false); + // 当前行的勾选框置灰 + cb->setCbEnable(false); + cb->setChecked(true); + // 状态修改为等待中 + status->setStatus(ST_WAITING); + // 发送信号出去 + emit operatorClicked(name->index(), i, orItem->mode()); + } else { + // 此时如果选中,则取消选中 + if (cb->checked() && (status->getStatus() == ST_NOT_INSTALL || status->getStatus() == ST_CAN_UPDATE)) { + cb->setChecked(false); + } } } + } } }); @@ -467,21 +475,37 @@ void DriverTableView::setCheckedCBDisable() // 设置不能选中 item->setCbEnable(false); - // 设置不可操作 + DriverStatusItem *status = dynamic_cast(indexWidget(mp_Model->index(i, 4))); DriverOperationItem *opera = dynamic_cast(indexWidget(mp_Model->index(i, 5))); + + // 设置不可操作 if (opera) { opera->setBtnEnable(false); } // 设置状态为等待 - DriverStatusItem *status = dynamic_cast(indexWidget(mp_Model->index(i, 4))); - if (status && status->getStatus() != ST_DOWNLOADING && status->getStatus() != ST_INSTALL) { + if (status && status->getStatus() != ST_DOWNLOADING && status->getStatus() != ST_INSTALL && status->getStatus() != ST_DRIVER_BACKING_UP) { status->setStatus(ST_WAITING); } } } } +void DriverTableView::setItemOperationEnable(int index, bool enable) +{ + int rowCount = mp_Model->rowCount(); + for (int i = 0; i < rowCount; i++) { + DriverNameItem *name = dynamic_cast(indexWidget(mp_Model->index(i, 0))); + if (name && name->index() == index) { + DriverOperationItem *opera = dynamic_cast(indexWidget(mp_Model->index(i, 3))); + + if (opera) { + opera->setBtnEnable(enable); + } + } + } +} + void DriverTableView::getCheckedDriverIndex(QList &lstIndex) { int rowCount = mp_Model->rowCount(); @@ -498,21 +522,23 @@ void DriverTableView::setItemStatus(int index, Status s) { int rowCount = mp_Model->rowCount(); for (int i = 0; i < rowCount; i++) { - DriverStatusItem *status = dynamic_cast(indexWidget(mp_Model->index(i, 4))); DriverNameItem *name = dynamic_cast(indexWidget(mp_Model->index(i, 1))); + DriverStatusItem *status = dynamic_cast(indexWidget(mp_Model->index(i, 4))); + if (name && status && name->index() == index) { status->setStatus(s); // 如果是安装成功则取消选中且不可选 - if (ST_SUCESS == s || ST_FAILED == s) { + if (ST_SUCESS == s || ST_FAILED == s|| ST_DRIVER_BACKUP_FAILED == s || ST_DRIVER_BACKUP_SUCCESS == s + || ST_DRIVER_NOT_BACKUP == s || ST_CAN_UPDATE == s || ST_NOT_INSTALL == s) { DriverCheckItem *cb = dynamic_cast(indexWidget(mp_Model->index(i, 0))); if (cb) { - cb->setCbEnable(ST_FAILED == s ? true : false); + cb->setCbEnable(ST_FAILED == s || ST_DRIVER_BACKUP_FAILED == s || ST_DRIVER_NOT_BACKUP == s || ST_CAN_UPDATE == s || ST_NOT_INSTALL == s ? true : false); cb->setChecked(false); } DriverOperationItem *opera = dynamic_cast(indexWidget(mp_Model->index(i, 5))); if (opera) { - opera->setBtnEnable(ST_FAILED == s ? true : false); + opera->setBtnEnable(ST_FAILED == s || ST_DRIVER_BACKUP_FAILED == s || ST_DRIVER_NOT_BACKUP == s || ST_CAN_UPDATE == s || ST_NOT_INSTALL == s ? true : false); } } break; @@ -524,8 +550,9 @@ void DriverTableView::setErrorMsg(int index, const QString &msg) { int rowCount = mp_Model->rowCount(); for (int i = 0; i < rowCount; i++) { - DriverStatusItem *status = dynamic_cast(indexWidget(mp_Model->index(i, 4))); DriverNameItem *name = dynamic_cast(indexWidget(mp_Model->index(i, 1))); + DriverStatusItem *status = dynamic_cast(indexWidget(mp_Model->index(i, 4))); + if (name && status && name->index() == index) { status->setErrorMsg(msg); break; diff --git a/deepin-devicemanager/src/Widget/drivertableview.h b/deepin-devicemanager/src/Widget/drivertableview.h index 5281c6be0..280f1de44 100644 --- a/deepin-devicemanager/src/Widget/drivertableview.h +++ b/deepin-devicemanager/src/Widget/drivertableview.h @@ -7,6 +7,7 @@ #define DRIVERTABLEVIEW_H #include "MacroDefinition.h" +#include "driveritem.h" #include #include @@ -120,6 +121,8 @@ class DriverTableView : public DTreeView */ void setCheckedCBDisable(); + void setItemOperationEnable(int index, bool enable); + /** * @brief getCheckedDriverIndex 获取选中的index * @param lstIndex @@ -177,7 +180,7 @@ class DriverTableView : public DTreeView * @brief operatorClicked 点击安装或更新的信号 * @param index */ - void operatorClicked(int index); + void operatorClicked(int index, int itemIndex, DriverOperationItem::Mode mode); /** * @brief itemChecked 选中的信号 diff --git a/deepin-devicemanager/src/Widget/logtreeview.cpp b/deepin-devicemanager/src/Widget/logtreeview.cpp index 8ebd077f5..98d5a3bdc 100644 --- a/deepin-devicemanager/src/Widget/logtreeview.cpp +++ b/deepin-devicemanager/src/Widget/logtreeview.cpp @@ -9,7 +9,7 @@ #include #include -#include +#include #include #include #include diff --git a/deepin-devicemanager/src/Widget/logviewheaderview.cpp b/deepin-devicemanager/src/Widget/logviewheaderview.cpp index 06f4cb342..f29168cff 100644 --- a/deepin-devicemanager/src/Widget/logviewheaderview.cpp +++ b/deepin-devicemanager/src/Widget/logviewheaderview.cpp @@ -8,7 +8,7 @@ #include #include -#include +#include #include #include #include diff --git a/deepin-devicemanager/src/Widget/logviewitemdelegate.cpp b/deepin-devicemanager/src/Widget/logviewitemdelegate.cpp index c5f96adeb..b5e92c27b 100644 --- a/deepin-devicemanager/src/Widget/logviewitemdelegate.cpp +++ b/deepin-devicemanager/src/Widget/logviewitemdelegate.cpp @@ -11,7 +11,7 @@ #include // Qt -#include +#include #include #include #include diff --git a/deepin-devicemanager/src/commonfunction.cpp b/deepin-devicemanager/src/commonfunction.cpp index bd0d6f18d..116b1ada5 100644 --- a/deepin-devicemanager/src/commonfunction.cpp +++ b/deepin-devicemanager/src/commonfunction.cpp @@ -6,15 +6,20 @@ #include "commonfunction.h" #include "commondefine.h" #include "DBusInterface.h" +#include "DDLog.h" // 其它头文件 #include #include #include #include +#include +#include #include +using namespace DDLog; + static QMap mapArch = { {"aarch64", "arm64"} , {"x86_64", "amd64"} , {"mips64", "mips64el"} @@ -26,7 +31,8 @@ static QMap mapArch = { {"aarch64", "arm64"} static bool initBoardVendorFlag = false; static QString boardVendorKey = ""; - +int Common::specialComType = -1; +static QString tomlFilesName = "tomlFilesName"; QString Common::getArch() { QString arch; @@ -64,26 +70,107 @@ static bool getDeviceInfo(QString &deviceInfo, const QString &debugFile) return true; } -QString Common::checkBoardVendorFlag() +static bool isModeM900(void) { - QProcess process; - process.start("dmidecode", QStringList() << "-s" << "system-product-name"); - process.waitForFinished(-1); - QString info = process.readAllStandardOutput(); - if (info.isEmpty()) { - getDeviceInfo(info, "dmidecode_spn.txt"); + QFile file("/proc/cpuinfo"); // Hardware : PANGU M900 + if (file.open(QIODevice::ReadOnly)){ + QString cpuInfo = file.readAll(); + file.close(); + if(cpuInfo.contains("Hardware") && cpuInfo.contains("PANGU M900")){ + return true; + } } - if (info.contains("KLVV")) { - boardVendorKey = "KLVV"; - } else if (info.contains("KLVU")) { - boardVendorKey = "KLVU"; - } else if (info.contains("PGUV")) { - boardVendorKey = "PGUV"; - } else if (info.contains("PGUW")) { - boardVendorKey = "PGUW"; + return false; +} +/* dmidecode | grep -i “String 4”中的值来区分主板类型,PWC30表示PanguW(也就是W525)*/ +static bool isModeW525(void) +{ + QString outInfo = Common::executeClientCmd("dmidecode"); + if(outInfo.isEmpty()) + return false; + + // 使用正则表达式进行匹配 + QRegularExpression regex("String 4: (.*)"); + QRegularExpressionMatch match = regex.match(outInfo); + if (match.hasMatch()) { + return match.captured(1).contains("PWC30", Qt::CaseInsensitive); // 返回匹配的内容 + } else { + return false; // 返回空字符串,表示没有找到 } - process.close(); +} +static QString readDmidecode11_String4(void) +{ + QString outInfo = Common::executeClientCmd("dmidecode", QStringList() << "-t" << "11"); + if(outInfo.isEmpty()) + return QString(""); + + // 使用正则表达式进行匹配 + QRegularExpression regex("String 4: (.*)"); + QRegularExpressionMatch match = regex.match(outInfo); + if (match.hasMatch()) { + return match.captured(1).trimmed(); // 返回匹配的内容 + } else { + return QString(); // 返回空字符串,表示没有找到 + } +} + +QString Common::checkBoardVendorFlag() +{ + if(specialComType != -1){ + switch (specialComType) { + case NormalCom: + boardVendorKey = ""; + break; + case PGUW: + boardVendorKey = "PGUW"; + break; + case KLVV: + boardVendorKey = "KLVV"; + break; + case KLVU: + boardVendorKey = "KLVU"; + break; + case PGUV: + boardVendorKey = "PGUV"; + break; + case PGUX: + boardVendorKey = "PGUX"; + break; + case kCustomType: + boardVendorKey = "CustomType"; + break; + default: + boardVendorKey = "PGUW"; + break; + } + }else{ + QProcess process; + process.start("dmidecode", QStringList() << "-s" << "system-product-name"); + process.waitForFinished(-1); + QString info = process.readAllStandardOutput(); + if (info.isEmpty()) { + getDeviceInfo(info, "dmidecode_spn.txt"); + } + if (info.contains("KLVV", Qt::CaseInsensitive) || info.contains("L540", Qt::CaseInsensitive)) { + boardVendorKey = "KLVV"; + } else if (info.contains("KLVU", Qt::CaseInsensitive)) { + boardVendorKey = "KLVU"; + } else if (info.contains("PGUV", Qt::CaseInsensitive) || info.contains("W585", Qt::CaseInsensitive)) { + boardVendorKey = "PGUV"; + } else if (info.contains("PGUW", Qt::CaseInsensitive)) { + boardVendorKey = "PGUW"; + } else if (readDmidecode11_String4().contains("PGUX", Qt::CaseInsensitive)) { + boardVendorKey = "PGUX"; + } + process.close(); + + if(boardVendorKey.isEmpty() && (isModeM900() || isModeW525())){ + boardVendorKey = "PGUW"; + } + qCInfo(appLog) << "boardVendorKey:" << boardVendorKey; + } + qCInfo(appLog) << "Current special computer type is " << boardVendorKey; initBoardVendorFlag = true; return boardVendorKey; } @@ -92,3 +179,55 @@ QString Common::boardVendorType() { return initBoardVendorFlag ? boardVendorKey : checkBoardVendorFlag(); } + +QString Common::specialVendorType() +{ + QString type = Common::boardVendorType(); + if (type == "KLVV" || type == "KLVU" || type == "PGUV" || type == "PGUW") + return specialHString(); + return QString("normalmagical"); +} + +QString Common::specialHString() +{ + int asciiValues[] = {72, 85, 65, 87, 69, 73}; // ASCII values for 'H' .... 'I' + QString result; + + // Convert ASCII values to characters and append to QString + for (int ascii : asciiValues) { + result.append(QChar(ascii)); // Convert ASCII to QChar and append to QString + } + return result; +} + +void Common::tomlFilesNameSet(QString name) +{ + tomlFilesName = name; +} + +QString Common::tomlFilesNameGet() +{ + return tomlFilesName; +} + +QByteArray Common::executeClientCmd(const QString &cmd, const QStringList &args, const QString &workPath, int msecsWaiting/* = 30000*/) +{ + QProcess process; + if (!workPath.isEmpty()) + process.setWorkingDirectory(workPath); + + process.setProgram(cmd); + process.setArguments(args); + process.setEnvironment({"LANG=en_US.UTF-8", "LANGUAGE=en_US"}); + process.start(); + // Wait for process to finish without timeout. + process.waitForFinished(msecsWaiting); + QByteArray outPut = process.readAllStandardOutput(); + int nExitCode = process.exitCode(); + bool bRet = (process.exitStatus() == QProcess::NormalExit && nExitCode == 0); + if (!bRet) { + qCWarning(appLog) << "run cmd error, caused by:" << process.errorString() << "output:" << outPut; + return QByteArray(); + } + return outPut; +} diff --git a/deepin-devicemanager/src/commonfunction.h b/deepin-devicemanager/src/commonfunction.h index f2a10d857..7f8ac14bf 100644 --- a/deepin-devicemanager/src/commonfunction.h +++ b/deepin-devicemanager/src/commonfunction.h @@ -8,12 +8,25 @@ // 其它头文件 #include +#include class Common { public: Common(); ~Common(); + enum SpecialComputerType{ + Unknow = -1, + NormalCom, + PGUW, + KLVV, + KLVU, + PGUV, + PGUX, + kSpecialType6, + kSpecialType7, + kCustomType + }; static QString getArch(); static QString getArchStore(); @@ -21,5 +34,17 @@ class Common static QString checkBoardVendorFlag(); static QString boardVendorType(); + static QString specialVendorType(); + static QString specialHString(); + static QString tomlFilesNameGet(); + static void tomlFilesNameSet(QString name); + + /** + * @brief specialComType + * special computer type:PGUW(value:1),KLVV/L540(value:2),KLVU(value:3),PGUV/W585(value:4) + */ + static int specialComType; + + static QByteArray executeClientCmd(const QString& cmd, const QStringList& args = QStringList(), const QString& workPath = QString(), int msecsWaiting = 30000); }; #endif // COMMONFUNCTION_H diff --git a/deepin-devicemanager/src/main.cpp b/deepin-devicemanager/src/main.cpp index b94096390..c12e182c0 100644 --- a/deepin-devicemanager/src/main.cpp +++ b/deepin-devicemanager/src/main.cpp @@ -9,7 +9,7 @@ #include "environments.h" #include "DebugTimeManager.h" #include "SingleDeviceManager.h" - +#include "DDLog.h" #include #include #include @@ -20,22 +20,47 @@ #include #include #include +#include +#include "LogConfigread.h" + +#include + +using namespace DDLog; DWIDGET_USE_NAMESPACE +#ifdef OS_BUILD_V23 +const QString SERVICE_NAME = "org.deepin.dde.Notification1"; +const QString DEVICE_SERVICE_PATH = "/org/deepin/dde/Notification1"; +const QString DEVICE_SERVICE_INTERFACE = "org.deepin.dde.Notification1"; +#else const QString SERVICE_NAME = "com.deepin.dde.Notification"; const QString DEVICE_SERVICE_PATH = "/com/deepin/dde/Notification"; const QString DEVICE_SERVICE_INTERFACE = "com.deepin.dde.Notification"; +#endif + +DCORE_USE_NAMESPACE +using namespace PolkitQt1; void notify(int argc, char *argv[]); int main(int argc, char *argv[]) { + MLogger(); + // /usr/bin/devicemanager notify if (argc > 2 && QString(argv[1]).contains("notify")) { notify(argc, argv); return -1; } + #if (DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 8, 0)) + Dtk::Core::DLogManager::registerJournalAppender(); + #else + Dtk::Core::DLogManager::registerFileAppender(); + #endif + #ifdef QT_DEBUG + Dtk::Core::DLogManager::registerConsoleAppender(); + #endif if (!QString(qgetenv("XDG_CURRENT_DESKTOP")).toLower().startsWith("deepin")) { setenv("XDG_CURRENT_DESKTOP", "Deepin", 1); @@ -60,8 +85,18 @@ int main(int argc, char *argv[]) app.setApplicationDescription(QObject::tr("Device Manager is a handy tool for viewing hardware information and managing the devices.") + "\n"); const QString acknowledgementLink = "https://www.deepin.org/original/device-manager/"; app.setApplicationAcknowledgementPage(acknowledgementLink); + + if (!DGuiApplicationHelper::instance()->setSingleInstance(app.applicationName(), DGuiApplicationHelper::UserScope)) { + exit(0); + } +#ifndef DISABLE_POLKIT + Authority::Result result = Authority::instance()->checkAuthorizationSync("com.deepin.deepin-devicemanager.checkAuthentication", + UnixProcessSubject(getpid()), + Authority::AllowUserInteraction); + if (result != Authority::Yes) + return 0; +#endif DApplicationSettings settinAgs; - Dtk::Core::DLogManager::registerConsoleAppender(); Dtk::Core::DLogManager::registerFileAppender(); QIcon appIcon = QIcon::fromTheme("deepin-devicemanager"); @@ -85,7 +120,7 @@ int main(int argc, char *argv[]) if (parser.positionalArguments().size() > 0) { var = parser.positionalArguments().at(0); } - qInfo() << var; + qCInfo(appLog) << var; QDBusInterface notification("com.deepin.DeviceManagerNotify", "/com/deepin/DeviceManagerNotify", "com.deepin.DeviceManagerNotify", QDBusConnection::sessionBus()); QDBusMessage msg = notification.call(QDBus::AutoDetect, "startDeviceManager", var); return 0; diff --git a/deepin-devicemanager/tests/CMakeLists.txt b/deepin-devicemanager/tests/CMakeLists.txt index 9704ecca4..bfbb0a704 100644 --- a/deepin-devicemanager/tests/CMakeLists.txt +++ b/deepin-devicemanager/tests/CMakeLists.txt @@ -62,7 +62,6 @@ find_package(PolkitQt5-1 REQUIRED) find_package(Qt5Test REQUIRED) find_package(DtkWidget REQUIRED) find_package(DtkCore REQUIRED) -find_package(DFrameworkdbus REQUIRED) #add_subdirectory(${CMAKE_SOURCE_DIR}/deepin-devicemanager/tests/) @@ -119,7 +118,6 @@ target_link_libraries(${PROJECT_NAME_TEST} ${DtkWidget_LIBRARIES} ${DtkCore_LIBRARIES} ${DtkGUI_LIBRARIES} - ${DFrameworkdbus_LIBRARIES} ${GTEST_LIBRARIES} ${GTEST_MAIN_LIBRARIES} PolkitQt5-1::Agent diff --git a/deepin-devicemanager/tests/src/DeviceManager/ut_DeviceAudio.cpp b/deepin-devicemanager/tests/src/DeviceManager/ut_DeviceAudio.cpp index 6c87cb837..1917ae710 100644 --- a/deepin-devicemanager/tests/src/DeviceManager/ut_DeviceAudio.cpp +++ b/deepin-devicemanager/tests/src/DeviceManager/ut_DeviceAudio.cpp @@ -190,7 +190,7 @@ TEST_F(UT_DeviceAudio, UT_DeviceAudio_getOverviewInfo) TEST_F(UT_DeviceAudio, UT_DeviceAudio_initFilterKey) { m_deviceAudio->initFilterKey(); - EXPECT_EQ(19, m_deviceAudio->m_FilterKey.size()); + EXPECT_EQ(16, m_deviceAudio->m_FilterKey.size()); } TEST_F(UT_DeviceAudio, UT_DeviceAudio_loadBaseDeviceInfo) diff --git a/deepin-devicemanager/tests/src/DeviceManager/ut_devicecpu.cpp b/deepin-devicemanager/tests/src/DeviceManager/ut_devicecpu.cpp index 54ac1e0ec..457249405 100644 --- a/deepin-devicemanager/tests/src/DeviceManager/ut_devicecpu.cpp +++ b/deepin-devicemanager/tests/src/DeviceManager/ut_devicecpu.cpp @@ -3,8 +3,6 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "DeviceCpu.h" - #include "ut_Head.h" #include "stub.h" @@ -14,6 +12,10 @@ #include +#define private public +#define protected public +#include "DeviceCpu.h" + class UT_DeviceCpu : public UT_HEAD { public: @@ -77,7 +79,7 @@ TEST_F(UT_DeviceCpu, UT_DeviceCpu_setCpuInfo) m_deviceCpu->setCpuInfo(mapLscpu, mapLshw, mapDmidecode, 4, 4); - EXPECT_STREQ("Intel(R) Core(TM) i3-9100F CPU @ 3.60GHz", m_deviceCpu->m_Name.toStdString().c_str()); + EXPECT_STREQ("Intel(R) Core(TM) i3-9100F CPU @ 3.60GHz", m_deviceCpu->name().toStdString().c_str()); EXPECT_EQ(4, m_deviceCpu->m_LogicalCPUNum); EXPECT_EQ(4, m_deviceCpu->m_CPUCoreNum); } @@ -130,8 +132,8 @@ TEST_F(UT_DeviceCpu, UT_DeviceCpu_loadBaseDeviceInfo) EXPECT_STREQ("x86_64", value7.second.toStdString().c_str()); QPair value8 = m_deviceCpu->m_LstBaseInfo.at(8); EXPECT_STREQ("6", value8.second.toStdString().c_str()); - QPair value9 = m_deviceCpu->m_LstBaseInfo.at(9); - EXPECT_STREQ("158", value9.second.toStdString().c_str()); +// QPair value9 = m_deviceCpu->m_LstBaseInfo.at(9); +// EXPECT_STREQ("158", value9.second.toStdString().c_str()); } TEST_F(UT_DeviceCpu, UT_DeviceCpu_loadOtherDeviceInfo) diff --git a/deepin-devicemanager/tests/src/DeviceManager/ut_deviceinput.cpp b/deepin-devicemanager/tests/src/DeviceManager/ut_deviceinput.cpp index 4d7fd8a5e..96d9deb10 100644 --- a/deepin-devicemanager/tests/src/DeviceManager/ut_deviceinput.cpp +++ b/deepin-devicemanager/tests/src/DeviceManager/ut_deviceinput.cpp @@ -123,46 +123,6 @@ TEST_F(UT_DeviceInput, UT_DeviceInput_setInfoFromHwinfo_002) EXPECT_STREQ("usb@1:8", m_deviceInput->m_HwinfoToLshw.toStdString().c_str()); } -TEST_F(UT_DeviceInput, UT_DeviceInput_setKLUInfoFromHwinfo_001) -{ - QMap map; - setHwinfoMap(map); - map.insert("Device File", "/dev/input/mice (/dev/input/mouse1)"); - - m_deviceInput->setKLUInfoFromHwinfo(map); - EXPECT_STREQ("MX board 8.0", m_deviceInput->m_Name.toStdString().c_str()); - EXPECT_STREQ("Cherry GmbH", m_deviceInput->m_Vendor.toStdString().c_str()); - EXPECT_STREQ("Cherry MX board 8.0", m_deviceInput->m_Model.toStdString().c_str()); - EXPECT_STREQ("1.07", m_deviceInput->m_Version.toStdString().c_str()); - EXPECT_STREQ("USB", m_deviceInput->m_Interface.toStdString().c_str()); - EXPECT_STREQ("1-8:1.1", m_deviceInput->m_BusInfo.toStdString().c_str()); - EXPECT_STREQ("keyboard", m_deviceInput->m_Description.toStdString().c_str()); - EXPECT_STREQ("usbhid", m_deviceInput->m_Driver.toStdString().c_str()); - EXPECT_STREQ("12 Mbps", m_deviceInput->m_Speed.toStdString().c_str()); - EXPECT_STREQ("usb@1:8", m_deviceInput->m_KeyToLshw.toStdString().c_str()); -} - -TEST_F(UT_DeviceInput, UT_DeviceInput_setKLUInfoFromHwinfo_002) -{ - QMap map; - setHwinfoMap(map); - map.insert("Model", "Cherry MX board 8.0 Bluetooth"); - map.insert("Device", "MX board 8.0 Bluetooth"); - map.remove("Hotplug"); - - m_deviceInput->setKLUInfoFromHwinfo(map); - EXPECT_STREQ("MX board 8.0 Bluetooth", m_deviceInput->m_Name.toStdString().c_str()); - EXPECT_STREQ("Cherry GmbH", m_deviceInput->m_Vendor.toStdString().c_str()); - EXPECT_STREQ("Cherry MX board 8.0 Bluetooth", m_deviceInput->m_Model.toStdString().c_str()); - EXPECT_STREQ("1.07", m_deviceInput->m_Version.toStdString().c_str()); - EXPECT_STREQ("Bluetooth", m_deviceInput->m_Interface.toStdString().c_str()); - EXPECT_STREQ("1-8:1.1", m_deviceInput->m_BusInfo.toStdString().c_str()); - EXPECT_STREQ("keyboard", m_deviceInput->m_Description.toStdString().c_str()); - EXPECT_STREQ("usbhid", m_deviceInput->m_Driver.toStdString().c_str()); - EXPECT_STREQ("12 Mbps", m_deviceInput->m_Speed.toStdString().c_str()); - EXPECT_STREQ("usb@1:8", m_deviceInput->m_KeyToLshw.toStdString().c_str()); -} - bool ut_isValueValid() { return true; diff --git a/deepin-devicemanager/tests/src/DeviceManager/ut_devicemanager.cpp b/deepin-devicemanager/tests/src/DeviceManager/ut_devicemanager.cpp index ba6d7dd0f..f34489f27 100644 --- a/deepin-devicemanager/tests/src/DeviceManager/ut_devicemanager.cpp +++ b/deepin-devicemanager/tests/src/DeviceManager/ut_devicemanager.cpp @@ -257,20 +257,7 @@ TEST_F(UT_DeviceManager, UT_DeviceManager_setStorageDeviceMediaType) DeviceManager::instance()->m_ListDeviceStorage.clear(); delete device; } - -TEST_F(UT_DeviceManager, UT_DeviceManager_setKLUStorageDeviceMediaType) -{ - DeviceStorage *device = new DeviceStorage; - device->m_DeviceFile = "/dev/sda"; - DeviceManager::instance()->m_ListDeviceStorage.append(device); - - DeviceManager::instance()->setKLUStorageDeviceMediaType("sda", "1"); - EXPECT_STREQ("HDD", device->m_MediaType.toStdString().c_str()); - - DeviceManager::instance()->m_ListDeviceStorage.clear(); - delete device; -} - +S TEST_F(UT_DeviceManager, UT_DeviceManager_addGpuDevice) { DeviceGpu *gpu = new DeviceGpu; diff --git a/deepin-devicemanager/tests/src/DeviceManager/ut_devicemonitor.cpp b/deepin-devicemanager/tests/src/DeviceManager/ut_devicemonitor.cpp index fe360249c..1d27b7071 100644 --- a/deepin-devicemanager/tests/src/DeviceManager/ut_devicemonitor.cpp +++ b/deepin-devicemanager/tests/src/DeviceManager/ut_devicemonitor.cpp @@ -98,21 +98,6 @@ void ut_monitor_setselfmap(QMap &mapinfo) mapinfo.insert("Date", "Date"); } -TEST_F(UT_DeviceMonitor, UT_DeviceMonitor_setInfoFromSelfDefine) -{ - QMap mapinfo; - ut_monitor_setselfmap(mapinfo); - - m_deviceMonitor->setInfoFromSelfDefine(mapinfo); - EXPECT_STREQ("Name", m_deviceMonitor->m_Name.toStdString().c_str()); - EXPECT_STREQ("Vendor", m_deviceMonitor->m_Vendor.toStdString().c_str()); - EXPECT_STREQ("CurResolution", m_deviceMonitor->m_CurrentResolution.toStdString().c_str()); - EXPECT_STREQ("SupportResolution", m_deviceMonitor->m_SupportResolution.toStdString().c_str()); - EXPECT_STREQ("Size", m_deviceMonitor->m_ScreenSize.toStdString().c_str()); - EXPECT_STREQ("Date", m_deviceMonitor->m_ProductionWeek.toStdString().c_str()); - -} - void ut_monitor_setedidmap(QMap &mapinfo) { mapinfo.insert("Vendor", "Vendor"); diff --git a/deepin-devicemanager/tests/src/DeviceManager/ut_devicenetwork.cpp b/deepin-devicemanager/tests/src/DeviceManager/ut_devicenetwork.cpp index 5be2bdf7b..6465a0aee 100644 --- a/deepin-devicemanager/tests/src/DeviceManager/ut_devicenetwork.cpp +++ b/deepin-devicemanager/tests/src/DeviceManager/ut_devicenetwork.cpp @@ -57,7 +57,7 @@ void ut_network_setlshwinfo(QMap &mapinfo) mapinfo.insert("ip", "ip"); mapinfo.insert("size", "size"); mapinfo.insert("capacity", "capacity"); - mapinfo.insert("latency", "latency"); + mapinfo.insert("Latency", "Latency"); mapinfo.insert("multicast", "multicast"); } @@ -113,7 +113,7 @@ TEST_F(UT_DeviceNetwork, DeviceNetwork_UT_setInfoFromLshw) EXPECT_STREQ("ip", m_deviceNetwork->m_Ip.toStdString().c_str()); EXPECT_STREQ("size", m_deviceNetwork->m_Speed.toStdString().c_str()); EXPECT_STREQ("capacity", m_deviceNetwork->m_Capacity.toStdString().c_str()); - EXPECT_STREQ("latency", m_deviceNetwork->m_Latency.toStdString().c_str()); + EXPECT_STREQ("Latency", m_deviceNetwork->m_Latency.toStdString().c_str()); EXPECT_STREQ("multicast", m_deviceNetwork->m_Multicast.toStdString().c_str()); } diff --git a/deepin-devicemanager/tests/src/DeviceManager/ut_devicestorage.cpp b/deepin-devicemanager/tests/src/DeviceManager/ut_devicestorage.cpp index f2e65a603..fc1531784 100644 --- a/deepin-devicemanager/tests/src/DeviceManager/ut_devicestorage.cpp +++ b/deepin-devicemanager/tests/src/DeviceManager/ut_devicestorage.cpp @@ -127,53 +127,6 @@ TEST_F(UT_DeviceStorage, UT_DeviceStorage_setHwinfoInfo_003) EXPECT_STREQ("", m_deviceStorage->m_SerialNumber.toStdString().c_str()); } -TEST_F(UT_DeviceStorage, UT_DeviceStorage_setKLUHwinfoInfo_001) -{ - QMap mapinfo; - ut_storage_setHwinfoInfo(mapinfo); - mapinfo.insert("Driver", "usb-storage"); - mapinfo.insert("Vendor", "PASON"); - - ASSERT_TRUE(m_deviceStorage->setKLUHwinfoInfo(mapinfo)); - EXPECT_STREQ("ST240BX500SSD1", m_deviceStorage->m_Model.toStdString().c_str()); - EXPECT_STREQ("PASON", m_deviceStorage->m_Vendor.toStdString().c_str()); - EXPECT_STREQ("usb-storage", m_deviceStorage->m_Driver.toStdString().c_str()); - EXPECT_STREQ("SATA ", m_deviceStorage->m_Interface.toStdString().c_str()); - EXPECT_STREQ("R013", m_deviceStorage->m_Version.toStdString().c_str()); - EXPECT_STREQ("disk", m_deviceStorage->m_Description.toStdString().c_str()); - EXPECT_STREQ("223GB", m_deviceStorage->m_Size.toStdString().c_str()); - EXPECT_STREQ("2002E3E0B393", m_deviceStorage->m_SerialNumber.toStdString().c_str()); - EXPECT_STREQ("/dev/nvme0n1", m_deviceStorage->m_DeviceFile.toStdString().c_str()); - EXPECT_STREQ("nvme0n12:0:0:0", m_deviceStorage->m_KeyToLshw.toStdString().c_str()); - EXPECT_STREQ("USB", m_deviceStorage->m_MediaType.toStdString().c_str()); -} - -TEST_F(UT_DeviceStorage, UT_DeviceStorage_setKLUHwinfoInfo_002) -{ - QMap mapinfo; - ut_storage_setHwinfoInfo(mapinfo); - mapinfo.remove("SysFS BusID"); - - ASSERT_FALSE(m_deviceStorage->setKLUHwinfoInfo(mapinfo)); -} - -TEST_F(UT_DeviceStorage, UT_DeviceStorage_setKLUHwinfoInfo_003) -{ - QMap mapinfo; - ut_storage_setHwinfoInfo(mapinfo); - mapinfo.insert("Vendor", "PASON"); - mapinfo.remove("Capacity"); - - ASSERT_FALSE(m_deviceStorage->setKLUHwinfoInfo(mapinfo)); - EXPECT_STREQ("ST240BX500SSD1", m_deviceStorage->m_Model.toStdString().c_str()); - EXPECT_STREQ("PASON", m_deviceStorage->m_Vendor.toStdString().c_str()); - EXPECT_STREQ("ahci, sd", m_deviceStorage->m_Driver.toStdString().c_str()); - EXPECT_STREQ("SATA ", m_deviceStorage->m_Interface.toStdString().c_str()); - EXPECT_STREQ("R013", m_deviceStorage->m_Version.toStdString().c_str()); - EXPECT_STREQ("disk", m_deviceStorage->m_Description.toStdString().c_str()); - EXPECT_STREQ("", m_deviceStorage->m_Size.toStdString().c_str()); -} - TEST_F(UT_DeviceStorage, UT_DeviceStorage_addInfoFromlshw_001) { QMap mapinfo; @@ -273,37 +226,6 @@ TEST_F(UT_DeviceStorage, UT_DeviceStorage_setMediaType_004) EXPECT_TRUE(m_deviceStorage->setMediaType("sda", "2")); } -TEST_F(UT_DeviceStorage, UT_DeviceStorage_setKLUMediaType_001) -{ - m_deviceStorage->m_DeviceFile = "/dev/sda"; - EXPECT_FALSE(m_deviceStorage->setKLUMediaType("nvme0n1", "0")); -} - -TEST_F(UT_DeviceStorage, UT_DeviceStorage_setKLUMediaType_002) -{ - m_deviceStorage->m_DeviceFile = "/dev/sda"; - EXPECT_TRUE(m_deviceStorage->setKLUMediaType("sda", "0")); -} - -TEST_F(UT_DeviceStorage, UT_DeviceStorage_setKLUMediaType_003) -{ - m_deviceStorage->m_DeviceFile = "/dev/sda"; - EXPECT_TRUE(m_deviceStorage->setKLUMediaType("sda", "1")); -} - -TEST_F(UT_DeviceStorage, UT_DeviceStorage_setKLUMediaType_004) -{ - m_deviceStorage->m_DeviceFile = "/dev/sda"; - EXPECT_TRUE(m_deviceStorage->setKLUMediaType("sda", "2")); -} - -TEST_F(UT_DeviceStorage, UT_DeviceStorage_setKLUMediaType_005) -{ - m_deviceStorage->m_DeviceFile = "/dev/sda"; - m_deviceStorage->m_MediaType = "USB"; - EXPECT_TRUE(m_deviceStorage->setKLUMediaType("sda", "2")); -} - TEST_F(UT_DeviceStorage, UT_DeviceStorage_isValid_001) { m_deviceStorage->m_Size = "32GB"; diff --git a/deepin-devicemanager/tests/src/GenerateDevice/ut_klugenerator.cpp b/deepin-devicemanager/tests/src/GenerateDevice/ut_klugenerator.cpp index 597c295b7..192ff895d 100644 --- a/deepin-devicemanager/tests/src/GenerateDevice/ut_klugenerator.cpp +++ b/deepin-devicemanager/tests/src/GenerateDevice/ut_klugenerator.cpp @@ -3,11 +3,9 @@ // // SPDX-License-Identifier: GPL-3.0-or-later -#include "KLUGenerator.h" #include "DeviceManager.h" #include "ut_Head.h" #include "stub.h" - #include #include #include diff --git a/deepin-devicemanager/tests/src/Page/ut_pagedriverinfo.cpp b/deepin-devicemanager/tests/src/Page/ut_pagedriverinfo.cpp new file mode 100644 index 000000000..ee41f06ce --- /dev/null +++ b/deepin-devicemanager/tests/src/Page/ut_pagedriverinfo.cpp @@ -0,0 +1,111 @@ +// Copyright (C) 2019 ~ 2020 UnionTech Software Technology Co.,Ltd +// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include + +#include +#include +#include +#include + +#include "ut_Head.h" +#include "stub.h" + +#define private public +#include "PageDriverInstallInfo.h" +#include "PageDriverBackupInfo.h" +#include "PageDriverRestoreInfo.h" +#include "PageDriverTableView.h" + + +class PageDriverInfo_UT : public UT_HEAD +{ +public: + void SetUp() + { + m_dPageDriverInstallInfo = new PageDriverInstallInfo; + m_dPageDriverBackupInfo = new PageDriverBackupInfo; + m_dPageDriverRestoreInfo = new PageDriverRestoreInfo; + } + void TearDown() + { + } + PageDriverInstallInfo *m_dPageDriverInstallInfo; + PageDriverBackupInfo *m_dPageDriverBackupInfo; + PageDriverRestoreInfo *m_dPageDriverRestoreInfo; +}; + +TEST_F(PageDriverInfo_UT, ut_addDriverInfoToTableView) +{ + DriverInfo *info = new DriverInfo(); + info->m_Name = "Sharp MX-C2622R PS, 1.1"; + info->m_DebVersion = "1.0.0"; + info->m_Type = DR_Tablet; + info->m_Packages = "com.sharp.griffin2light"; + info->m_Status = ST_DRIVER_IS_NEW; + + DriverInfo *info1 = new DriverInfo(); + info1->m_Name = "Sharp MX-C2622R PS, 1.1"; + info1->m_DebVersion = "1.0.0"; + info1->m_DebBackupVersion = "0.0.9"; + info1->m_Type = DR_Tablet; + info1->m_Packages = "com.sharp.griffin2light"; + info1->m_Status = ST_CAN_UPDATE; + + DriverInfo *info2 = new DriverInfo(); + info2->m_Name = "GeFore RTX30 Series (Notebooks) 001"; + info2->m_Size = "124.36"; + info2->m_Type = DR_Gpu; + info2->m_Status = ST_NOT_INSTALL; + info2->m_Checked = true; + info2->m_DriverName = "lenovo-image-g-series"; + info2->m_Packages = "lenovo-image-g-series"; + info2->m_DebVersion = "1.0-17"; + + m_dPageDriverInstallInfo->addDriverInfoToTableView(info, 0); + m_dPageDriverInstallInfo->addDriverInfoToTableView(info1, 0); + m_dPageDriverInstallInfo->addDriverInfoToTableView(info2, 0); + EXPECT_EQ(1, m_dPageDriverInstallInfo->mp_ViewNotInstall->model()->rowCount()); + EXPECT_EQ(1, m_dPageDriverInstallInfo->mp_ViewCanUpdate->model()->rowCount()); + EXPECT_EQ(1, m_dPageDriverInstallInfo->mp_AllDriverIsNew->model()->rowCount()); + + m_dPageDriverBackupInfo->addDriverInfoToTableView(info, 0); + m_dPageDriverBackupInfo->addDriverInfoToTableView(info1, 0); + m_dPageDriverBackupInfo->addDriverInfoToTableView(info2, 0); + EXPECT_EQ(2, m_dPageDriverBackupInfo->mp_ViewBackable->model()->rowCount()); + EXPECT_EQ(1, m_dPageDriverBackupInfo->mp_ViewBackedUp->model()->rowCount()); + + m_dPageDriverRestoreInfo->addDriverInfoToTableView(info1, 0); + EXPECT_EQ(1, m_dPageDriverRestoreInfo->mp_ViewBackable->model()->rowCount()); +} + +TEST_F(PageDriverInfo_UT, ut_addCurDriverInfo) +{ + DriverInfo *info = new DriverInfo(); + info->m_Name = "Sharp MX-C2622R PS, 1.1"; + info->m_DebVersion = "1.0.0"; + info->m_Type = DR_Tablet; + info->m_Packages = "com.sharp.griffin2light"; + info->m_Status = ST_DRIVER_IS_NEW; + + m_dPageDriverInstallInfo->addCurDriverInfo(info); +} + +TEST_F(PageDriverInfo_UT, ut_showTables) +{ + m_dPageDriverInstallInfo->showTables(1, 1, 1); + m_dPageDriverBackupInfo->showTables(1, 1); + m_dPageDriverRestoreInfo->showTables(1); +} + +TEST_F(PageDriverInfo_UT, ut_getCheckedDriverIndex) +{ + QList list; + m_dPageDriverInstallInfo->getCheckedDriverIndex(list); + EXPECT_EQ(0, list.size()); + + m_dPageDriverBackupInfo->getCheckedDriverIndex(list); + EXPECT_EQ(0, list.size()); +} diff --git a/deepin-devicemanager/tests/src/Page/ut_pagedrivermanager.cpp b/deepin-devicemanager/tests/src/Page/ut_pagedrivermanager.cpp new file mode 100644 index 000000000..5a92beb23 --- /dev/null +++ b/deepin-devicemanager/tests/src/Page/ut_pagedrivermanager.cpp @@ -0,0 +1,159 @@ +// Copyright (C) 2019 ~ 2020 UnionTech Software Technology Co.,Ltd +// SPDX-FileCopyrightText: 2022 UnionTech Software Technology Co., Ltd. +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#include + +#include +#include +#include +#include + +#include "ut_Head.h" +#include "stub.h" + +#define private public +#include "PageDriverManager.h" +#include "PageListView.h" + +void ut_installNextDriver() +{ + return; +} + +void ut_backupNextDriver() +{ + return; +} + + +class PageDriverManager_UT : public UT_HEAD +{ +public: + void SetUp() + { + stub.set(ADDR(PageDriverManager, installNextDriver), ut_installNextDriver); + stub.set(ADDR(PageDriverManager, backupNextDriver), ut_backupNextDriver); + m_dPageDriverManager = new PageDriverManager; + } + void TearDown() + { + } + PageDriverManager *m_dPageDriverManager; + Stub stub; +}; + +TEST_F(PageDriverManager_UT, ut_updateListView) +{ + QList > list; + list.append(QPair("Driver Install", "driverinstall##Overview")); + list.append(QPair("Driver Backup", "driverbackup##Overview")); + list.append(QPair("Driver Restore", "driverrestore##Overview")); + m_dPageDriverManager->updateListView(list); + + m_dPageDriverManager->mp_ListView->setCurType("Driver Install"); + + EXPECT_EQ("Driver Install", m_dPageDriverManager->mp_ListView->currentType()); +} + +TEST_F(PageDriverManager_UT, ut_addDriverInfo) +{ + DriverInfo *info = new DriverInfo(); + info->m_Name = "Sharp MX-C2622R PS, 1.1"; + info->m_DebVersion = "1.0.0"; + info->m_Type = DR_Tablet; + info->m_Packages = "com.sharp.griffin2light"; + info->m_Status = ST_CAN_UPDATE; + + m_dPageDriverManager->addDriverInfo(info); + EXPECT_EQ(1, m_dPageDriverManager->m_ListDriverInfo.size()); +} + +TEST_F(PageDriverManager_UT, ut_scanDriverInfo) +{ + m_dPageDriverManager->clearAllData(); + m_dPageDriverManager->scanDriverInfo(); + EXPECT_TRUE(m_dPageDriverManager->isScanning()); +} + +TEST_F(PageDriverManager_UT, ut_slotScanFinished) +{ + m_dPageDriverManager->clearAllData(); + m_dPageDriverManager->testDevices(); + m_dPageDriverManager->slotScanFinished(SR_SUCESS); + EXPECT_EQ(4, m_dPageDriverManager->m_ListDriverInfo.size()); +} + +TEST_F(PageDriverManager_UT, ut_slotDriverOperationClicked) +{ + m_dPageDriverManager->testDevices(); + m_dPageDriverManager->slotScanFinished(SR_SUCESS); + + m_dPageDriverManager->slotDriverOperationClicked(0, 0, DriverOperationItem::INSTALL); + EXPECT_EQ(1, m_dPageDriverManager->m_ListDriverIndex.size()); + + m_dPageDriverManager->slotDriverOperationClicked(0, 0, DriverOperationItem::BACKUP); + EXPECT_EQ(1, m_dPageDriverManager->m_ListBackupIndex.size()); +} + +TEST_F(PageDriverManager_UT, ut_slotItemCheckedClicked) +{ + m_dPageDriverManager->slotItemCheckedClicked(0, true); + EXPECT_EQ(1, m_dPageDriverManager->m_ListDriverIndex.size()); + + m_dPageDriverManager->slotItemCheckedClicked(0, false); + EXPECT_EQ(0, m_dPageDriverManager->m_ListDriverIndex.size()); +} + +TEST_F(PageDriverManager_UT, ut_slotBackupItemCheckedClicked) +{ + m_dPageDriverManager->slotBackupItemCheckedClicked(0, true); + EXPECT_EQ(1, m_dPageDriverManager->m_ListBackupIndex.size()); + + m_dPageDriverManager->slotBackupItemCheckedClicked(0, false); + EXPECT_EQ(0, m_dPageDriverManager->m_ListBackupIndex.size()); +} + +TEST_F(PageDriverManager_UT, ut_slotDownloadProgressChanged) +{ + QStringList msg; + msg.append("20"); + msg.append("test"); + msg.append("test-info"); + m_dPageDriverManager->slotDownloadProgressChanged(msg); + m_dPageDriverManager->slotDownloadFinished(); +} + +TEST_F(PageDriverManager_UT, ut_slotInstallProgressChanged) +{ + m_dPageDriverManager->slotInstallProgressChanged(30); + m_dPageDriverManager->slotInstallProgressFinished(false, 4); +} + +TEST_F(PageDriverManager_UT, ut_slotBackupFinished) +{ + m_dPageDriverManager->slotBackupFinished(true); + EXPECT_EQ(0, m_dPageDriverManager->m_ListBackupIndex.size()); +} + +TEST_F(PageDriverManager_UT, ut_slotRestoreProgress) +{ + DriverInfo *info = new DriverInfo(); + info->m_Name = "Sharp MX-C2622R PS, 1.1"; + info->m_DebVersion = "1.0.1"; + info->m_DebBackupVersion = "1.0.0"; + info->m_Type = DR_Tablet; + info->m_Packages = "com.sharp.griffin2light"; + info->m_Status = ST_CAN_UPDATE; + + m_dPageDriverManager->mp_CurRestoreDriverInfo = info; + m_dPageDriverManager->slotRestoreProgress(50, "test"); +} + +TEST_F(PageDriverManager_UT, ut_slotRestoreFinished) +{ + m_dPageDriverManager->slotRestoreFinished(true, "test"); + EXPECT_EQ(0, m_dPageDriverManager->m_ListBackedupeIndex.size()); +} + diff --git a/deepin-devicemanager/tests/src/test_main.cpp b/deepin-devicemanager/tests/src/test_main.cpp index 9031132b9..9aa946616 100644 --- a/deepin-devicemanager/tests/src/test_main.cpp +++ b/deepin-devicemanager/tests/src/test_main.cpp @@ -5,14 +5,16 @@ #include #include - #if defined(CMAKE_SAFETYTEST_ARG_ON) #include #endif +DCORE_USE_NAMESPACE + // gtest的入口函数 int main(int argc, char **argv) { + qputenv("QT_QPA_PLATFORM", "offscreen"); QApplication a(argc, argv); ::testing::InitGoogleTest(&argc, argv); diff --git a/deepin-devicemanager/tests/src/ut_Head.h b/deepin-devicemanager/tests/src/ut_Head.h index bb3965b65..dac5a989a 100644 --- a/deepin-devicemanager/tests/src/ut_Head.h +++ b/deepin-devicemanager/tests/src/ut_Head.h @@ -5,7 +5,7 @@ #ifndef UT_HEAD_HH #define UT_HEAD_HH #include -#include +#include class UT_HEAD : public testing::Test { public: diff --git a/deepin-devicemanager/translations/deepin-devicemanager.ts b/deepin-devicemanager/translations/deepin-devicemanager.ts index 54007b7b2..0d869b005 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More More @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More More - + Collapse Collapse @@ -51,14 +63,14 @@ DetailTreeView - - + + More More - - + + Collapse Collapse @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Disable - + Unavailable Unavailable @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Device Name - - + + Name Name - - + + Vendor Vendor - - Model - Model + + Chip + Chip - - Version - Version + + Capabilities + Capabilities - - Bus Info - Bus Info + + + Module Alias + Module Alias - - Chip - Chip + + + Physical ID + Physical ID - - Capabilities - Capabilities + + SysFS_Path + - - Clock - Clock + + Description + Description + + + + Revision + - - Width - Width + + KernelModeDriver + - + Memory Address Memory Address - + IRQ IRQ - + Unavailable Unavailable - + Disable Disable @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Name - + Vendor Vendor - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Vendor - + Version Version - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Name - + Vendor Vendor - + Version Version - + Model Model - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Speed Speed - + Maximum Power Maximum Power - + Driver Version Driver Version - + Driver Driver - + Capabilities Capabilities - + Bus Info Bus Info - + Logical Name Logical Name - + MAC Address MAC Address - + Unavailable Unavailable - + Disable Disable @@ -264,57 +293,67 @@ DeviceCdrom - + Name Name - + Vendor Vendor - + Model Model - + Version Version - + Bus Info Bus Info - + Capabilities Capabilities - + Driver Driver - + Maximum Power Maximum Power - + Speed Speed - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Unavailable Unavailable - + Disable Disable @@ -322,7 +361,7 @@ DeviceComputer - + Name Name @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Name - - + + Vendor Vendor - + CPU ID CPU ID - + Core ID Core ID - + Threads Threads - - Current Speed - Current Speed - - - + BogoMIPS BogoMIPS - - + + Architecture Architecture - + CPU Family CPU Family - + Model Model - - + + Processor Processor - + Core(s) Core(s) - + Virtualization Virtualization - + Flags Flags - + Extensions Extensions - + L3 Cache L3 Cache - + L2 Cache L2 Cache - + L1i Cache L1i Cache - + L1d Cache L1d Cache - + Stepping Stepping - + Speed Speed - + + + Max Speed Max Speed @@ -447,132 +483,127 @@ DeviceGpu - + Name Name - + Vendor Vendor - + Model Model - + Version Version - + Graphics Memory Graphics Memory - + + Module Alias + Module Alias + + + Physical ID Physical ID - + Memory Address Memory Address - + IO Port IO Port - + Bus Info Bus Info - + Maximum Resolution Maximum Resolution - + Minimum Resolution Minimum Resolution - + Current Resolution Current Resolution - + Driver Driver - + Description Description - - Clock - Clock - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output Display Output - + Capabilities Capabilities - + IRQ IRQ - - Width - Width - - - + Unavailable Unavailable @@ -580,62 +611,72 @@ DeviceImage - + Name Name - + Vendor Vendor - + Version Version - + Model Model - + Bus Info Bus Info - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Speed Speed - + Maximum Power Maximum Power - + Driver Driver - + Capabilities Capabilities - + Serial Number Serial Number - + Unavailable Unavailable - + Disable Disable @@ -643,62 +684,72 @@ DeviceInput - + Name Name - + Vendor Vendor - + Model Model - + Interface Interface - + Bus Info Bus Info - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Speed Speed - + Maximum Current Maximum Current - + Driver Driver - + Capabilities Capabilities - + Version Version - + Unavailable Unavailable - + Disable Disable @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Overview - - - + + + CPU CPU - - + + CPU quantity CPU quantity - - + + Motherboard Motherboard - - + + Memory Memory - - + + Display Adapter Display Adapter - - + + Sound Adapter Sound Adapter - - + + Storage Storage - - + + Other PCI Devices Other PCI Devices - - + + Battery Battery - - + + Bluetooth Bluetooth - - + + Network Adapter Network Adapter - - + + Mouse - Mouse + Mouse and Pointer Devices - - + + Keyboard Keyboard - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Printer - - + + Camera Camera - - + + Other Devices Other Input Devices Other Devices - - - + + + Device Device - - - + + + OS OS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Name - - + + Vendor Vendor - - + + Size Size - - + + Type Type - - + + Speed Speed - + Total Width Total Width - + Locator Locator - + Serial Number Serial Number - + Configured Voltage Configured Voltage - + Maximum Voltage Maximum Voltage - + Minimum Voltage Minimum Voltage - + Configured Speed Configured Speed - + Data Width Data Width @@ -920,200 +971,198 @@ DeviceMonitor - + Name Name - + Vendor Vendor - + Type Type - + Display Input Display Input - + Interface Type Interface Type - + Support Resolution Support Resolution - + Current Resolution Current Resolution - + Display Ratio Display Ratio - + Primary Monitor Primary Monitor - + Size Size - + Serial Number Serial Number - - - Product Date - Product Date - DeviceNetwork - + + Name Name - + + Vendor Vendor - + + Type Type - + Version Version - + Bus Info Bus Info - + Capabilities Capabilities - + Driver Driver - + Driver Version Driver Version - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Maximum Rate Maximum Rate - + Negotiation Rate Negotiation Rate - + Port Port - + Multicast Multicast - + Link Link - + Latency Latency - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Broadcast - + Auto Negotiation Auto Negotiation - - Clock - Clock - - - - Width - Width - - - + Memory Address Memory Address - + IRQ IRQ - + MAC Address MAC Address - + Logical Name Logical Name - + Unavailable Unavailable - + Disable Disable @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Name - + Vendor Vendor - + Model Model - + Bus Info Bus Info - + Version Version - + Input/Output Input/Output - + Memory Memory - + IRQ IRQ - + Latency Latency - - Clock - Clock - - - - Width - Width - - - + Driver Driver - + Capabilities Capabilities @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Name - + Vendor Vendor - + Model Model - + Version Version - + Bus Info Bus Info - + Capabilities Capabilities - + Driver Driver - + Maximum Power Maximum Power - + Speed Speed - + Serial Number Serial Number - + Unavailable Unavailable - + Disable Disable @@ -1252,82 +1291,82 @@ DevicePower - + Name Name - + Model Model - + Vendor Vendor - + Serial Number Serial Number - + Type Type - + Status Status - + Capacity Capacity - + Voltage Voltage - + Slot Slot - + Design Capacity Design Capacity - + Design Voltage Design Voltage - + SBDS Version SBDS Version - + SBDS Serial Number SBDS Serial Number - + SBDS Manufacture Date SBDS Manufacture Date - + SBDS Chemistry SBDS Chemistry - + Temperature Temperature @@ -1335,47 +1374,47 @@ DevicePrint - + Name Name - + Model Model - + Vendor Vendor - + Serial Number Serial Number - + Shared Shared - + URI URI - + Status Status - + Interface Type Interface Type - + Disable Disable @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Vendor - - + + Media Type Media Type - - + + + Size Size - + + + Name + Name + + + Version Version - + Capabilities Capabilities - + + + Module Alias + Module Alias + + + + + Physical ID + Physical ID + + + Firmware Version Firmware Version - + Speed Speed - + Description Description - + Serial Number Serial Number - + Interface Interface - + Rotation Rate Rotation Rate - + Unavailable Unavailable @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Select a driver for update - + No drivers found in this folder No drivers found in this folder @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Loading Audio Device Info... - + Loading BIOS Info... Loading BIOS Info... - + Loading CD-ROM Info... Loading CD-ROM Info... - + Loading Operating System Info... Loading Operating System Info... - + Loading CPU Info... Loading CPU Info... - + Loading Other Devices Info... Loading Other Devices Info... - + Loading Power Info... Loading Power Info... - + Loading Printer Info... Loading Printer Info... - + Loading Mouse Info... Loading Mouse Info... - + Loading Network Adapter Info... Loading Network Adapter Info... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Disable - + Unavailable Unavailable @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Disable - + Unavailable Unavailable @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Device Info - + Display shortcuts Display shortcuts - + Close Close - + Help Help - + Copy Copy - + System System - + Export Export - + Refresh Refresh - + Device Manager Device Manager - + Hardware Hardware - + Drivers Drivers - + Monitor Monitor - + Overview Overview - + Display Adapter Display Adapter - + CPU CPU - + Network Adapter Network Adapter - + Battery Battery @@ -1639,191 +1691,377 @@ PageDetail - + More More + + PageDriverBackupInfo + + + + Name + Name + + + + + Current Version + Current Version + + + + + Driver Platform Version + + + + + Status + Status + + + + Action + Action + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Updating - - - + + + Cancel button Cancel - + Next Next - + Warning Warning - + The device will be unavailable after the driver uninstallation The device will be unavailable after the driver uninstallation - + Uninstall button Uninstall - + Uninstalling Uninstalling - + Update successful Update successful - + Uninstallation successful Uninstallation successful - + Update failed Update failed - + Uninstallation failed Uninstallation failed - + OK button OK - + Next button Next - + The selected folder does not exist, please select again The selected folder does not exist, please select again - + Update button Update - + Previous button Previous - + Broken package Broken package - + Unmatched package architecture Unmatched package architecture - - + + The selected file does not exist, please select again The selected file does not exist, please select again - + It is not a driver It is not a driver - + Unable to install - no digital signature Unable to install - no digital signature - + Unknown error Unknown error - + The driver module was not found The driver module was not found - + Invalid module format Invalid module format - + The driver module has dependencies The driver module has dependencies - PageListView + PageDriverInstallInfo - - Refresh - Refresh + + + + Device Name + Device Name + + + + Version Available + Version Available + + + + + Size + Size + + + + + Status + Status + + + + + Action + Action + + + + New Version + New Version + + + + Current Version + Current Version + + + + Missing drivers (%1) + Missing drivers (%1) + + + + Outdated drivers (%1) + Outdated drivers (%1) - + + Up-to-date drivers (%1) + Up-to-date drivers (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Name + + + + Current Version + Current Version + + + + Backup Version + + + + + Action + Action + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Refresh + + + Export Export - + Overview Overview + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Failed to enable the device - + Failed to disable the device Failed to disable the device - + Failed to disable it: unable to get the device SN Failed to disable it: unable to get the device SN - + Update Drivers Update Drivers - + Uninstall Drivers Uninstall Drivers @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Refresh - + Export Export - + Copy Copy - + Overview Overview @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Refresh - + Export Export - + Copy Copy - - + + Enable Enable - + Update drivers Update drivers - + Uninstall drivers Uninstall drivers - + Allow it to wake the computer Allow it to wake the computer - + Disable Disable - - + + Failed to disable it: unable to get the device SN Failed to disable it: unable to get the device SN - + Failed to disable the device Failed to disable the device - + Failed to enable the device Failed to enable the device - + Update Drivers Update Drivers - + Uninstall Drivers Uninstall Drivers @@ -1924,867 +2162,847 @@ QObject - + SubVendor SubVendor - + SubDevice SubDevice - + Driver Driver - + Driver Status Driver Status - + Driver Activation Cmd Driver Activation Cmd - - + - + + Config Status Config Status - - - - - - - physical id - physical id - - - - latency - latency + + Latency + Latency - + Phys Phys - + Sysfs Sysfs - + Handlers Handlers - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Model - - - - Vendor - Vendor - - - + Version Version - - + + + Bus Bus - - + + BIOS Information BIOS Information - - + + Base Board Information Base Board Information - - + + System Information System Information - - + + Chassis Information Chassis Information - - + + Physical Memory Array Physical Memory Array - + Release Date Release Date - + Address Address - + Runtime Size Runtime Size - + ROM Size ROM Size - + Characteristics Characteristics - + BIOS Revision BIOS Revision - + Firmware Revision Firmware Revision - - + + Product Name Product Name - - - + + + Serial Number Serial Number - - - + + + Asset Tag Asset Tag - - + + Features Features - + Location In Chassis Location In Chassis - + Chassis Handle Chassis Handle - - + + Type Type - + Contained Object Handles Contained Object Handles - - + + UUID UUID - + Wake-up Type Wake-up Type - - + + SKU Number SKU Number - + Family Family - + Lock Lock - + Boot-up State Boot-up State - + Power Supply State Power Supply State - + Thermal State Thermal State - + Security Status Security Status - + OEM Information OEM Information - + Height Height - + Number Of Power Cords Number Of Power Cords - + Contained Elements Contained Elements - + Location Location - + Error Correction Type Error Correction Type - + Maximum Capacity Maximum Capacity - - + + Error Information Handle Error Information Handle - + Number Of Devices Number Of Devices - + BIOS ROMSIZE BIOS ROMSIZE - + Release date Release date - + Board name Board name - + SMBIOS Version SMBIOS Version - + Language Description Format Language Description Format - + Installable Languages Installable Languages - + Currently Installed Language Currently Installed Language - + BD Address BD Address - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Packet type - + Link policy Link policy - + Link mode Link mode - - + + Class Class - + Service Classes Service Classes - + Device Class Device Class - + HCI Version HCI Version - + LMP Version LMP Version - + Subversion Subversion - + Device Device - - + + Serial ID Serial ID - + product product - + description description - + Powered Powered - + Discoverable Discoverable - + Pairable Pairable - + Modalias Modalias - + Discovering Discovering - + Driver Modules Driver Modules - - - + + + + + Device File Device File - + Device Files Device Files - - + + + Device Number Device Number - - Module Alias - Module Alias - - - + Application Application - + status status - - + + + logical name logical name - - + + ansiversion ansiversion - + CPU implementer CPU implementer - + CPU architecture CPU architecture - + CPU variant CPU variant - + CPU part CPU part - + CPU revision CPU revision - + One One - + Two Two - + Four Four - + Six Six - + Eight Eight - + Ten Ten - + Twelve Twelve - + Fourteen Fourteen - + Sixteen Sixteen - + Eighteen Eighteen - + Twenty Twenty - + Twenty-two Twenty-two - + Twenty-four Twenty-four - + Twenty-six Twenty-six - + Twenty-eight Twenty-eight - + Thirty Thirty - + Thirty-two Thirty-two - + Thirty-four Thirty-four - + Thirty-six Thirty-six - + Thirty-eight Thirty-eight - + Forty Forty - + Forty-two Forty-two - + Forty-four Forty-four - + Forty-six Forty-six - + Forty-eight Forty-eight - + Fifty Fifty - + Fifty-two Fifty-two - + Fifty-four Fifty-four - + Fifty-six Fifty-six - + Fifty-eight Fifty-eight - + Sixty Sixty - + Sixty-two Sixty-two - + Sixty-four Sixty-four - + Sixty-six Sixty-six - + Sixty-eight Sixty-eight - + Seventy Seventy - + Seventy-two Seventy-two - + Seventy-four Seventy-four - + Seventy-six Seventy-six - + Seventy-eight Seventy-eight - + Eighty Eighty - + Eighty-two Eighty-two - + Eighty-four Eighty-four - + Eighty-six Eighty-six - + Eighty-eight Eighty-eight - + Ninety Ninety - + Ninety-two Ninety-two - + Ninety-four Ninety-four - + Ninety-six Ninety-six - + Ninety-eight Ninety-eight - + One hundred One hundred - + One hundred and Two One hundred and Two - + One hundred and four One hundred and four - + One hundred and Six One hundred and Six - + One hundred and Eight One hundred and Eight - + One hundred and Ten One hundred and Ten - + One hundred and Twelve One hundred and Twelve - + One hundred and Fourteen One hundred and Fourteen - + One hundred and Sixteen One hundred and Sixteen - + One hundred and Eighteen One hundred and Eighteen - + One hundred and Twenty One hundred and Twenty - + One hundred and Twenty-two One hundred and Twenty-two - + One hundred and Twenty-four One hundred and Twenty-four - + One hundred and Twenty-six One hundred and Twenty-six - + One hundred and Twenty-eight One hundred and Twenty-eight - + One hundred and Ninety-two One hundred and Ninety-two - + Two hundred and fifty-six Two hundred and fifty-six @@ -2824,988 +3042,1084 @@ GLSL version - - - + + + Unknown Unknown - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Hardware Class - - - - + + + + CPU CPU - - - - + + + + No CPU found No CPU found - - - - + + + + Motherboard Motherboard - - - - + + + + No motherboard found No motherboard found - - - - + + + + Memory Memory - - - - + + + + No memory found No memory found - - - - + + + + Storage Storage - - - - + + + + No disk found No disk found - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Display Adapter - - - - + + + + No GPU found No GPU found - - - - + + + + Monitor Monitor - - - - + + + + No monitor found No monitor found - - - - - + + + + + Network Adapter Network Adapter - - - - + + + + No network adapter found No network adapter found - - - - - + + + + + Sound Adapter Sound Adapter - - - - + + + + No audio device found No audio device found - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found No Bluetooth device found - - - - + + + + Other PCI Devices Other PCI Devices - - - - + + + + No other PCI devices found No other PCI devices found - - - - + + + + Power Power - - - - + + + + No battery found No battery found - - - - - + + + + + Keyboard Keyboard - - - - + + + + No keyboard found No keyboard found - - - - - + + + + + Mouse Mouse - - - - + + + + No mouse found No mouse found - - - - - - + + + + + + Printer Printer - - - - + + + + No printer found No printer found - - - - + + + + Camera Camera - - - - + + + + No camera found No camera found - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found No CD-ROM found - - - - - + + + + + Other Devices Other Devices - - - - + + + + No other devices found No other devices found - + Array Handle Array Handle - + Form Factor Form Factor - + Set Set - + Bank Locator Bank Locator - + Type Detail Type Detail - + Part Number Part Number - + Rank Rank - + Memory Technology Memory Technology - + Memory Operating Mode Capability Memory Operating Mode Capability - + Firmware Version Firmware Version - + Module Manufacturer ID Module Manufacturer ID - + Module Product ID Module Product ID - + Memory Subsystem Controller Manufacturer ID Memory Subsystem Controller Manufacturer ID - + Memory Subsystem Controller Product ID Memory Subsystem Controller Product ID - + Non-Volatile Size Non-Volatile Size - + Volatile Size Volatile Size - + Cache Size Cache Size - + Logical Size Logical Size - - - - - + + + + + inch inch - + Date Date - + ioport ioport - + network network - - + battery battery - + native-path native-path - + power supply power supply - + updated updated - + has history has history - + has statistics has statistics - + rechargeable rechargeable - + state state - + warning-level warning-level - + energy energy - + energy-empty energy-empty - + energy-full energy-full - + energy-full-design energy-full-design - + energy-rate energy-rate - + voltage voltage - + percentage percentage - + technology technology - + icon-name icon-name - + online online - + daemon-version daemon-version - + on-battery on-battery - + lid-is-closed lid-is-closed - + lid-is-present lid-is-present - + critical-action critical-action - + copies copies - + job-cancel-after job-cancel-after - + job-hold-until job-hold-until - + job-priority job-priority - + marker-change-time marker-change-time - + number-up number-up - + orientation-requested orientation-requested - + print-color-mode print-color-mode - + printer-is-accepting-jobs printer-is-accepting-jobs - + printer-is-shared printer-is-shared - + printer-is-temporary printer-is-temporary - + printer-make-and-model printer-make-and-model - + printer-state-change-time printer-state-change-time - + printer-state-reasons printer-state-reasons - + printer-type printer-type - + printer-uri-supported printer-uri-supported - + sides sides - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info bus info - + logicalsectorsize logicalsectorsize - + sectorsize sectorsize - + guid guid - + Geometry (Logical) Geometry (Logical) - - + + Device Manager Device Manager - + Device Manager is a handy tool for viewing hardware information and managing the devices. Device Manager is a handy tool for viewing hardware information and managing the devices. - + New drivers available! Install or update them now. New drivers available! Install or update them now. - + + View + + + + Include subfolders Include subfolders - + Search for drivers in this path Search for drivers in this path - - - - Device Name - Device Name - - - - Version Available - Version Available - - - - - Size - Size - - - - - Status - Status - - - - - Action - Action - - - - New Version - New Version - - - - Current Version - Current Version - - - - Missing drivers (%1) - Missing drivers (%1) - - - - Outdated drivers (%1) - Outdated drivers (%1) - - - - Up-to-date drivers (%1) - Up-to-date drivers (%1) - - - + %1 driver updates available %1 driver updates available - - + + Time checked: %1 Time checked: %1 - + Downloading drivers for %1... Downloading drivers for %1... - + Download speed: %1 Downloaded %2/%3 Download speed: %1 Downloaded %2/%3 - + Installing drivers for %1... Installing drivers for %1... - + %1 drivers installed, %2 drivers failed %1 drivers installed, %2 drivers failed - + %1 drivers installed %1 drivers installed - + Failed to install drivers Failed to install drivers - + Network error. Reconnecting... Network error. Reconnecting... - + Download speed: %1 Download speed: %1 - + Your drivers are up to date Your drivers are up to date - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot reboot - + Please %1 for the installed drivers to take effect Please %1 for the installed drivers to take effect - - + + View backup path + + + + + Backup All + + + + + submit feedback submit feedback - + Please try again or %1 to us Please try again or %1 to us - + Install All Install All - - + + Scan Again Scan Again - + Cancel Cancel - + Scanning hardware device drivers, please wait... Scanning hardware device drivers, please wait... - - + + Scanning %1 Scanning %1 - + Scan failed Scan failed - + Network unavailable Network unavailable - + Please check your network connection Please check your network connection - + Please scan again or %1 to us Please scan again or %1 to us - + You are installing a driver, which will be interrupted if you exit. You are installing a driver, which will be interrupted if you exit. - + + + Are you sure you want to exit? Are you sure you want to exit? - + + + Exit button Exit - + + + Cancel button Cancel - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Bluetooth adapter - - + + Imaging device Imaging device - + Display adapter Display adapter - + Sound card Sound card - + Network adapter Network adapter - + Wireless network adapter Wireless network adapter - + Installation successful Installation successful - + Installation failed Installation failed - + Downloading Downloading - + Installing Installing - + Not installed Not installed - + Out-of-date Out-of-date - + Waiting Waiting - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Unknown error - + Network error Network error - + Canceled Canceled - + Failed to get driver files Failed to get driver files - + Update Update - + + Backup + + + + + Restore + + + + Install Install @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Disable - + Refresh Refresh - + Export Export - + Update drivers Update drivers - + Uninstall drivers Uninstall drivers - + Allow it to wake the computer Allow it to wake the computer - - + + Enable Enable @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Refresh - + Export Export - + Copy Copy - + Disable Disable - + Unavailable Unavailable @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Select a local folder please @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Loading... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_az.ts b/deepin-devicemanager/translations/deepin-devicemanager_az.ts index e6152a28e..876eed992 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_az.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_az.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OLDU + + + + Feedback + + + + OK button OLDU @@ -11,7 +23,7 @@ CmdButtonWidget - + More Daha çox @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Daha çox - + Collapse Yığmaq @@ -51,14 +63,14 @@ DetailTreeView - - + + More Daha çox - - + + Collapse Yığmaq @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Söndürmək - + Unavailable Əlçatmaz @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Cihazın adı - - + + Name Ad - - + + Vendor İstehsalçı - - Model - Modeli + + Chip + Çip - - Version - Versiya + + Capabilities + İmkanlar - - Bus Info - Kanal haqqında məlumatlar + + + Module Alias + Modulun alternativ adı - - Chip - Çip + + + Physical ID + Fiziki İD - - Capabilities - İmkanlar + + SysFS_Path + - - Clock - Saat + + Description + Təsviri + + + + Revision + - - Width - Eni + + KernelModeDriver + - + Memory Address Yaddaş ünvanı - + IRQ IRQ - + Unavailable Əlçatmaz - + Disable Söndürmək @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Adı - + Vendor İstehsalçı - + Model Modeli @@ -173,17 +192,17 @@ DeviceBios - + Vendor İstehsalçı - + Version Versiya - + Chipset Mikrosxem dəsti @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Ad - + Vendor İstehsalçı - + Version Versiya - + Model Model - + + Module Alias + Modulun alternativ adı + + + + Physical ID + Fiziki İD + + + Speed Sürət - + Maximum Power Maksimum güc - + Driver Version Sürücü versiyası - + Driver Sürücü - + Capabilities İmkanlar - + Bus Info Kanal haqqında məlumatlar - + Logical Name Məntiqi ad - + MAC Address MAC ünvanı - + Unavailable Əlçatmaz - + Disable Söndürmək @@ -264,57 +293,67 @@ DeviceCdrom - + Name Ad - + Vendor İstehsalçı - + Model Modeli - + Version Versiya - + Bus Info Kanal haqqında məlumatlar - + Capabilities İmkanlar - + Driver Sürücü - + Maximum Power Maksimum Güc - + Speed Sürət - + + Module Alias + Modulun alternativ adı + + + + Physical ID + Fiziki İD + + + Unavailable Əlçatmaz - + Disable Söndürmək @@ -322,7 +361,7 @@ DeviceComputer - + Name Ad @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Ad - - + + Vendor İstehsalçı - + CPU ID Mərkəzi Prosessor ID-si - + Core ID Nüvə İD-si - + Threads Axınlar - - Current Speed - Mövcud sürət - - - + BogoMIPS BogoMIPS - - + + Architecture Arxitektura - + CPU Family Mərkəzi prosessor ailəsi - + Model Model - - + + Processor Prosessor - + Core(s) Nüvə(lər) - + Virtualization Vizuallaşdırma - + Flags Bayraqlar - + Extensions Əlavələr - + L3 Cache L3 keş - + L2 Cache L2 keş - + L1i Cache L1i keşi - + L1d Cache L1d keş - + Stepping Addımlama - + Speed Sürət - + + + Max Speed Maksimum sürət @@ -447,132 +483,127 @@ DeviceGpu - + Name Ad - + Vendor İstehsalçı - + Model Model - + Version Versiya - + Graphics Memory Qrafik yaddaş - + + Module Alias + Modulun alternativ adı + + + Physical ID Fiziki İD - + Memory Address Yaddaş ünvanı - + IO Port Giriş/Çıxış portu - + Bus Info Kanal haqqında məlumatlar - + Maximum Resolution Maksimum görüntü imkanı - + Minimum Resolution Minimum görüntü imkanı - + Current Resolution Mövcud görüntü imkanı - + Driver Sürücü - + Description Təsviri - - Clock - Saat - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput RəqəmsalÇıxış - + Display Output Cihaz çıxışı - + Capabilities İmkanlar - + IRQ IRQ - - Width - Eni - - - + Unavailable Əlçatmaz @@ -580,62 +611,72 @@ DeviceImage - + Name Ad - + Vendor İstehsalçı - + Version Versiya - + Model Model - + Bus Info Kanal haqqında məlumatlar - + + Module Alias + Modulun alternativ adı + + + + Physical ID + Fiziki İD + + + Speed Sürət - + Maximum Power Maksimum güc - + Driver Sürücü - + Capabilities İmkanlar - + Serial Number Seriya nömrəsi - + Unavailable Əlçatmaz - + Disable Söndürmək @@ -643,62 +684,72 @@ DeviceInput - + Name Adı - + Vendor İstehsalçı - + Model Model - + Interface İnterfeys - + Bus Info Kanal haqqında məlumatlar - + + Module Alias + Modulun alternativ adı + + + + Physical ID + Fiziki İD + + + Speed Sürət - + Maximum Current Maksimum cərəyan - + Driver Sürücü - + Capabilities İmkanlar - + Version Versiya - + Unavailable Əlçatmaz - + Disable Söndürmək @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview İcmal - - - + + + CPU Mərkəzi prosessor - - + + CPU quantity Mərkəzi Prosessor sayı - - + + Motherboard Ana plata - - + + Memory Yaddaş - - + + Display Adapter Ekran uzlaşdırıcısı - - + + Sound Adapter Səs uzlaşdırıcısı - - + + Storage Saxlama - - + + Other PCI Devices Digər PCİ qurğular - - + + Battery Batareya - - + + Bluetooth Bluetooth - - + + Network Adapter Şəbəkə uzlaşdırıcısı - - + + Mouse Siçan - - + + Keyboard Klaviatura - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Printer - - + + Camera Kamera - - + + Other Devices Other Input Devices Digər qurğular - - - + + + Device Cihaz - - - + + + OS ƏS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Ad - - + + Vendor İstehsalçı - - + + Size Ölçü - - + + Type Növ - - + + Speed Sürət - + Total Width Ümumi genişlik - + Locator Lokator - + Serial Number Seriya Nömrəsi - + Configured Voltage Ayarlanmış gərginlik - + Maximum Voltage Maksimum gərginlik - + Minimum Voltage Minimum gərginlik - + Configured Speed Ayarlanmış sürət - + Data Width Verilənlərin genişliyi @@ -920,200 +971,198 @@ DeviceMonitor - + Name Adı - + Vendor İstehsalçı - + Type Növ - + Display Input Ekran girişi - + Interface Type İnterfeys növü - + Support Resolution Dəstəklənən görüntü imkanı - + Current Resolution Mövcud görüntü imkanı - + Display Ratio Görüntü nisbəti - + Primary Monitor İlkin monitor - + Size Ölçü - + Serial Number Seriya nömrəsi - - - Product Date - Məhsulun tarixi - DeviceNetwork - + + Name Adı - + + Vendor İstehsalçı - + + Type Növ - + Version Versiya - + Bus Info Kanal haqqında məlumatlar - + Capabilities İmkanlar - + Driver Sürücü - + Driver Version Sürücü versiyası - + + Module Alias + Modulun alternativ adı + + + + Physical ID + Fiziki İD + + + Maximum Rate Maksimum dərəcədə - + Negotiation Rate Razılaşma dərəcəsi - + Port Port - + Multicast Çoxsaylı yayım - + Link Əlaqələndirmə - + Latency Gecikmə - + IP İP - + Firmware Mikroproqram - + Duplex İkili - + Broadcast Yayım - + Auto Negotiation Avtomatik müzakirə - - Clock - Saat - - - - Width - Eni - - - + Memory Address Yaddaş ünvanı - + IRQ IRQ - + MAC Address MAC ünvanı - + Logical Name Məntiqi ad - + Unavailable Əlçatmaz - + Disable Söndürmək @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Adı - + Vendor İstehsalçı - + Model Modeli - + Bus Info Kanal haqqında məlumat - + Version Versiya - + Input/Output Giriş/Çıxış - + Memory Yaddaş - + IRQ IRQ - + Latency Gecikmə - - Clock - Saat - - - - Width - Eni - - - + Driver Sürücü - + Capabilities İmkanlar @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Ad - + Vendor İstehsalçı - + Model Model - + Version Versiya - + Bus Info Kanal haqqında məlumatlar - + Capabilities İmkanlar - + Driver Sürücü - + Maximum Power Maksimum güc - + Speed Sürət - + Serial Number Seriya nömrəsi - + Unavailable Əlçatmaz - + Disable Söndürmək @@ -1252,82 +1291,82 @@ DevicePower - + Name Adı - + Model Model - + Vendor İstehsalçı - + Serial Number Seriya nömrəsi - + Type Növ - + Status Vəziyyət - + Capacity Tutumu - + Voltage Gərginlik - + Slot Yuva - + Design Capacity Tərtibat bacarığı - + Design Voltage Layihə gərginliyi - + SBDS Version SBDS Versiyası - + SBDS Serial Number SBDS seriya nömrəsi - + SBDS Manufacture Date SBDS istehsal tarixi - + SBDS Chemistry SBDS yığımı - + Temperature Temperatur @@ -1335,47 +1374,47 @@ DevicePrint - + Name Ad - + Model Model - + Vendor İstehsalçı - + Serial Number Seriya Nömrəsi - + Shared Paylaşılan - + URI URİ - + Status Status - + Interface Type İnterfeys növü - + Disable Söndürmək @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor İstehsalçı - - + + Media Type Daşıyıcının növü - - + + + Size Ölçü - + + + Name + + + + Version Versiya - + Capabilities Bacarıqlar - + + + Module Alias + Modulun alternativ adı + + + + + Physical ID + Fiziki İD + + + Firmware Version Mikroproqram versiyası - + Speed Sürət - + Description Təsviri - + Serial Number Seriya nömrəsi - + Interface İnterfeys - + Rotation Rate Dönmə dərəcəsi - + Unavailable Əlçatmaz @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Yeniləmək üçün sürücünü seçin - + No drivers found in this folder Bu qovluqda fayl tapılmadı @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Səs cihazı məlumatı yüklənir... - + Loading BIOS Info... BİOS məlumatı yüklənir... - + Loading CD-ROM Info... CD-ROM məlumatı yüklənir... - + Loading Operating System Info... Əməliyyat Sistemi məlumatları yüklənir... - + Loading CPU Info... Prosessor məlumatları yüklənir... - + Loading Other Devices Info... Digər cihaz məlumatları yüklənir... - + Loading Power Info... Güc məlumatları yüklənir... - + Loading Printer Info... Printer məlumatı yüklənir... - + Loading Mouse Info... Siçan məlumatı yüklənir... - + Loading Network Adapter Info... Şəbəkə uzlaşdırıcısı məlumatları yüklənir... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Söndürmək - + Unavailable Əlçatmaz @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Söndürmək - + Unavailable Əlçatmaz @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Cihaz məlumatı - + Display shortcuts Qısayolları göstərmək - + Close Bağlamaq - + Help Kömək - + Copy Kopyalamaq - + System Sİstem - + Export İxrac - + Refresh Təzələmək - + Device Manager Cihaz idarəetməsi - + Hardware Avadanlıq - + Drivers Sürücülər - + Monitor Monitor - + Overview İcmal - + Display Adapter Ekran uzlaşdırıcısı - + CPU Mərkəzi Prosessor - + Network Adapter Şəbəkə uzlaşdırıcısı - + Battery Batareya @@ -1639,191 +1691,377 @@ PageDetail - + More Daha çox + + PageDriverBackupInfo + + + + Name + + + + + + Current Version + Cari versiya + + + + + Driver Platform Version + + + + + Status + + + + + Action + Əməl + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Yenilənir - - - + + + Cancel button İmtina - + Next Sonrakı - + Warning Xəbərdarlıq - + The device will be unavailable after the driver uninstallation Sürücü silindikdən sonra cihaz əlçatmaz olacaq - + Uninstall button Silmək - + Uninstalling Silinir - + Update successful Uğurla yeniləndi - + Uninstallation successful Uğurla silindi - + Update failed Yenilənmə alınmadı - + Uninstallation failed Silinmə uğursuz oldu - + OK button OLDU - + Next button Sonrakı - + The selected folder does not exist, please select again Seçilmiş fayl mövcud deyil, lütfən yenidən seçin - + Update button Yeniləmə - + Previous button Əvvəlkilər - + Broken package Zədələnmiş paket - + Unmatched package architecture Uyğun gəlməyən paket arxitekturası - - + + The selected file does not exist, please select again Seçilmiş fayl mövcud deyil, lütfən yenidən seçin - + It is not a driver Bu sürücü deyil - + Unable to install - no digital signature Quraşdırmaq mümkün deyil - rəqəmsal imza yoxdur - + Unknown error Bilinməyən xəta - + The driver module was not found Sürücü modulu tapılmadı - + Invalid module format Səhv modul formatı - + The driver module has dependencies Sürücü modulunda asılılıqlar var - PageListView + PageDriverInstallInfo - - Refresh - Təzələmək + + + + Device Name + Cihazın adı - + + Version Available + Əlçatan versiya + + + + + Size + Ölçü + + + + + Status + + + + + + Action + Əməl + + + + New Version + Yeni versiya + + + + Current Version + Cari versiya + + + + Missing drivers (%1) + Sürücülər çatışmır (%1) + + + + Outdated drivers (%1) + Köhnəlmiş sürücülər (%1) + + + + Up-to-date drivers (%1) + Yenilənmiş sürücülər (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OLDU + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + + + + + Current Version + Cari versiya + + + + Backup Version + + + + + Action + Əməl + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Təzələmək + + + Export İxrac - + Overview İcmal + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Cihaz aktiv edilə bilmədi - + Failed to disable the device Cihaz söndürülə bilmədi - + Failed to disable it: unable to get the device SN Bunu söndürmək baş tutmadı: cihazın SN-ni əldə etmək mümkün deyil - + Update Drivers Sürücüləri yeniləyin - + Uninstall Drivers Sürücüləri silin @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Təzələmək - + Export İxrac - + Copy Kopyalamaq - + Overview İcmal @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Təzələmək - + Export İxrac - + Copy Kopyalamaq - - + + Enable Aktiv etmək - + Update drivers Sürücüləri yeniləyin - + Uninstall drivers Sürücüləri silin - + Allow it to wake the computer Kompyuteri ayıltmağa ona icazə verin - + Disable Söndürmək - - + + Failed to disable it: unable to get the device SN Bunu söndürmək baş tutmadı: cihazın SN-ni əldə etmək mümkün deyil - + Failed to disable the device Cihaz söndürülə bilmədi - + Failed to enable the device Cihaz aktiv edilə bilmədi - + Update Drivers Sürücüləri yeniləyin - + Uninstall Drivers Sürücüləri silin @@ -1924,867 +2162,847 @@ QObject - + SubVendor Podratçı - + SubDevice AltCihaz - + Driver Sürücü - + Driver Status Sürücünün vəziyyəti - + Driver Activation Cmd Sürücünü aktivləşdirmə əmri - - + - + + Config Status Ayarlanma vəziyyəti - - - - - - - physical id - fiziki id - - - + latency gecikmə - + Phys Fiz - + Sysfs Sysfs - + Handlers İcraçılar - - + + PROP PROP - - + + EV EV - - + + KEY AÇAR - - Model - Modeli - - - - Vendor - İstehsalçı - - - + Version Versiya - - + + + Bus Kanal - - + + BIOS Information BİOS məlumatı - - + + Base Board Information Plata haqqında başlıca məlumat - - + + System Information Sistem haqqında - - + + Chassis Information Ana gövdə məlumatı - - + + Physical Memory Array Fiziki yaddaş düzümü - + Release Date Buraxılış tarixi - + Address Ünvan - + Runtime Size İcraolunma vaxt ölçüsü - + ROM Size ROM ölçüsü - + Characteristics Özəllikləri - + BIOS Revision BİOS buraxılışı - + Firmware Revision Mikroproqram buraxılışı - - + + Product Name Məhsulun adı - - - + + + Serial Number Seriya nömrəsi - - - + + + Asset Tag Dəyər etiketi - - + + Features İmkanlar - + Location In Chassis Ana gövdədəki yeri - + Chassis Handle Ana gövdə tanıtımı - - + + Type Növ - + Contained Object Handles Tərkibindəki obyektlərin göstəricisi - - + + UUID UUID - + Wake-up Type Oyatma növü - - + + SKU Number SKU nömrəsi - + Family Ailə - + Lock Kilidləmək - + Boot-up State Açılma vəziyyəti - + Power Supply State Enerji təhcizatı vəziyyəti - + Thermal State Termal vəziyyəti - + Security Status Təhlükəsizlik vəziyyəti - + OEM Information OEM məlumatı - + Height Hündürlük - + Number Of Power Cords Gec kabellərinin sayı - + Contained Elements Tərkibindəki elementlər - + Location Yeri - + Error Correction Type Xəta düzəlmə növü - + Maximum Capacity Maksimum tutum - - + + Error Information Handle Xəta məlumatı tanıdılması - + Number Of Devices Cihazların sayı - + BIOS ROMSIZE BIOS ROM ÖLÇÜSÜ - + Release date Buraxılış tarixi - + Board name Platanın adı - + SMBIOS Version SMBIOS Versiyası - + Language Description Format Dil təsviri formatı - + Installable Languages Quraşdırılmış Dillər - + Currently Installed Language Hal-hazırda quraşdırılan dil - + BD Address BD ünvanı - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Paket növü - + Link policy Əlaqələndirmə siyasəti - + Link mode Əlaqələndirmə rejimi - - + + Class Sinif - + Service Classes Xidmət sinifləri - + Device Class Cihaz sinifi - + HCI Version HCİ versiyas - + LMP Version LMP versiyası - + Subversion Alt versiya - + Device Cihaz - - + + Serial ID Seriya İD-si - + product məhsul - + description təsviri - + Powered İşləyən - + Discoverable Tapıla bilən - + Pairable Qoşulabilən - + Modalias Bağlama modu - + Discovering Aşkarlanır - + Driver Modules Sürücü modulları - - - + + + + + Device File Cihaz faylı - + Device Files Cihaz faylları - - + + + Device Number Cihazın nomrəsi - - Module Alias - Modulun alternativ adı - - - + Application Tətbiq - + status status - - + + + logical name məntiqi ad - - + + ansiversion ANSİ versiyası - + CPU implementer Mərkəzi Prosessor icraçısı - + CPU architecture Mərkəzi Prosessor arxitekturası - + CPU variant Mərkəzi Prosessor variantı - + CPU part Mərkəzi Prosessor bölümü - + CPU revision Mərkəzi Prosessor buraxılışı - + One Bir - + Two İki - + Four Dörd - + Six Altı - + Eight Səkkiz - + Ten On - + Twelve On iki - + Fourteen On dörd - + Sixteen On altı - + Eighteen On səkkiz - + Twenty İyirmi - + Twenty-two İyirmi iki - + Twenty-four İyirmi dörd - + Twenty-six İyirmi altı - + Twenty-eight İyirmi səkkiz - + Thirty Otuz - + Thirty-two Otuz iki - + Thirty-four Otuz dörd - + Thirty-six Otuz altı - + Thirty-eight Otuz səkkiz - + Forty Qırx - + Forty-two Qirx iki - + Forty-four Qırx dörd - + Forty-six Qırx altı - + Forty-eight Qırx səkkiz - + Fifty Əlli - + Fifty-two Əlli iki - + Fifty-four Əlli dörd - + Fifty-six Əlli altı - + Fifty-eight Əlli səkkiz - + Sixty Altmış - + Sixty-two Altmış iki - + Sixty-four Altmış dörd - + Sixty-six Altmış altı - + Sixty-eight Altmış səkkiz - + Seventy Yetmiş - + Seventy-two Yetmiş iki - + Seventy-four Yetmiş dörd - + Seventy-six Yetmiş altı - + Seventy-eight Yetmiş səkkiz - + Eighty Səksən - + Eighty-two Səksən iki - + Eighty-four Səksən dörd - + Eighty-six Səksən altı - + Eighty-eight Səksən səkkiz - + Ninety Doxsan - + Ninety-two Doxsan iki - + Ninety-four Doxsan dörd - + Ninety-six Doxsan altı - + Ninety-eight Dozsan səkkiz - + One hundred Yüz - + One hundred and Two Yüz iki - + One hundred and four Yüz dörd - + One hundred and Six Yüz altı - + One hundred and Eight Yüz səkkiz - + One hundred and Ten Yüz on - + One hundred and Twelve Yüz on iki - + One hundred and Fourteen Yüz on dörd - + One hundred and Sixteen Yüz on altı - + One hundred and Eighteen Yüz on səkkiz - + One hundred and Twenty Yüz iyirmi - + One hundred and Twenty-two Yüz iyirmi iki - + One hundred and Twenty-four Yüz iyirmi dörd - + One hundred and Twenty-six Yüz iyirmi altı - + One hundred and Twenty-eight Yüz iyirmi səkkiz - + One hundred and Ninety-two Bir yüz və Dixsan iki - + Two hundred and fifty-six İki yüz əlli altı @@ -2824,988 +3042,1084 @@ GLSL versiyası - - - + + + Unknown Naməlum - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Avadanlıq sinfi - - - - + + + + CPU Mərkəzi Prosessor - - - - + + + + No CPU found Mərkəzi Orosessor tapılmadı - - - - + + + + Motherboard Ana plata - - - - + + + + No motherboard found Ana plata tapılmadı - - - - + + + + Memory Yaddaş - - - - + + + + No memory found Yaddaş tapılmadı - - - - + + + + Storage Saxlama - - - - + + + + No disk found Disk tapılmadı - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Ekran uzlaşdırıcısı - - - - + + + + No GPU found Qrafik Prosessor tapılmadı - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Monitor tapılmadı - - - - - + + + + + Network Adapter Şəbəkə uzlaşdırıcısı - - - - + + + + No network adapter found Şəbəkə uzlaşdırıcısı tapılmadı - - - - - + + + + + Sound Adapter Səs uzlaşdırıcısı - - - - + + + + No audio device found Səs cihazı tapılmadı - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Bluetooth cihazı tapılmadı - - - - + + + + Other PCI Devices Digər PCİ qurğular - - - - + + + + No other PCI devices found Başqa PCİ qurğuları tapılmadı - - - - + + + + Power Güc - - - - + + + + No battery found Batareya tapılmadı - - - - - + + + + + Keyboard Klaviatura - - - - + + + + No keyboard found Klaviatura tapılmadı - - - - - + + + + + Mouse Siçan - - - - + + + + No mouse found Siçan tapılmadı - - - - - - + + + + + + Printer Printer - - - - + + + + No printer found Printer tapılmadı - - - - + + + + Camera Kamera - - - - + + + + No camera found Kamera tapılmadı - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found CD-ROM tapılmadı - - - - - + + + + + Other Devices Digər cihazlar - - - - + + + + No other devices found Başqa cihazlar tapılmadı - + Array Handle Massiv göstəricisi - + Form Factor Formfaktor - + Set Ayarlamaq - + Bank Locator Yuva aşkarlayıcı - + Type Detail Növ təfərrüatları - + Part Number Hissə nömrəsi - + Rank Dərəcə - + Memory Technology Yaddaş texnologiyası - + Memory Operating Mode Capability Yaddaşın işləmə rejimi imkanı - + Firmware Version Mikroproqram versiyası - + Module Manufacturer ID Modul istehsalçısı kimliyi - + Module Product ID Modulun məhsul İD-si - + Memory Subsystem Controller Manufacturer ID Yaddaş alt sistem nəzarətçisi məlumatları - + Memory Subsystem Controller Product ID Yaddaş alt sistem nəzarətçisinin İD-si - + Non-Volatile Size Dəyişməz ölçü - + Volatile Size Dəyişkən ölçü - + Cache Size Keş ölçüsü - + Logical Size Məntiqi ölçü - - - - - + + + + + inch düym - + Date Tarix - + ioport internet port - + network şəbəkə - - + battery batareya - + native-path yerli yol - + power supply enerji təhcizatı - + updated yenilənmiş - + has history jurnal var - + has statistics statistikalar var - + rechargeable təkrar doldurulabilən - + state vəziyyət - + warning-level xəbərdarləq səviyyəsi - + energy enerji - + energy-empty enerji boşalıb - + energy-full enerji dolu - + energy-full-design tam dolma tərtibatı - + energy-rate enerji dəyəri - + voltage gərginlik - + percentage faiz - + technology texnologiya - + icon-name nişan adı - + online onlayn - + daemon-version fon xidməti versiyası - + on-battery batareyadan - + lid-is-closed qapaq bağlıdır - + lid-is-present qapaq mövcuddur - + critical-action kritik əməl - + copies kopyalar - + job-cancel-after tapşırıq bundan sonra ləğv edildi - + job-hold-until tapşırığı, buna qədər təxirə salmaq - + job-priority iş üstünlüyü - + marker-change-time markerin dəyişmə vaxtı - + number-up nömrələnmə - + orientation-requested istiqamət tələb edilir - + print-color-mode rəngli çap növü - + printer-is-accepting-jobs printer işi qəbul edir - + printer-is-shared printer paylaşılandır - + printer-is-temporary printer müvəqqətidir - + printer-make-and-model printer istehsalçısı və modeli - + printer-state-change-time printerin vəziyyətinin dəyişmə vaxtı - + printer-state-reasons printerin vəziyyətinin səbəbləri - + printer-type çap növü - + printer-uri-supported printer ünvanı dəstəyi - + sides tərəflər - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info kanal məlumatı - + logicalsectorsize məntiqi sektor ölçüsü - + sectorsize sektor ölçüsü - + guid guid - + Geometry (Logical) Geometriya (Məntiqi) - - + + Device Manager Cihaz idarəetməsi - + Device Manager is a handy tool for viewing hardware information and managing the devices. Cihaz İdarəetməsi avadanlıq haqqında məlumatlara baxmaq və cihazları idarə etmək üçün lazımlı bir vasitədir. - + New drivers available! Install or update them now. Yeni sürücülər əlçatandır! Onları indi quraşdırın və ya yeniləyin. - + + View + + + + Include subfolders Alt qovluqlar daxil - + Search for drivers in this path Sürücüləri bu yolda axtarın - - - - Device Name - Cihazın adı - - - - Version Available - Əlçatan versiya - - - - - Size - Ölçü - - - - - Status - Status - - - - - Action - Əməl - - - - New Version - Yeni versiya - - - - Current Version - Cari versiya - - - - Missing drivers (%1) - Sürücülər çatışmır (%1) - - - - Outdated drivers (%1) - Köhnəlmiş sürücülər (%1) - - - - Up-to-date drivers (%1) - Yenilənmiş sürücülər (%1) - - - + %1 driver updates available %1 sürücü yenilənmələri əlçatandır - - + + Time checked: %1 Yoxlanılma vaxtı: %1 - + Downloading drivers for %1... %1 üçün sürücülər endirilir... - + Download speed: %1 Downloaded %2/%3 Endirmə sürəti: %1 Endirildi: %2/%3 - + Installing drivers for %1... %1 üçün sürücülər quraşdırılır... - + %1 drivers installed, %2 drivers failed %1 sürücü quraşdırıldı, %2 sürücü alınmadı - + %1 drivers installed %1 sürücüquraşdırıldı - + Failed to install drivers Sürücülərin quraşdırılması baş tutmadı - + Network error. Reconnecting... Şəbəkə xətası. Yenidən qoşulur... - + Download speed: %1 Endirmə srəti: %1 - + Your drivers are up to date Sürücüləriniz köhnəlib - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot yenidən başladın - + Please %1 for the installed drivers to take effect Sürücülərin işə düşməsi üçün lütfən %1 - - + + View backup path + + + + + Backup All + + + + + submit feedback rəy göndərin - + Please try again or %1 to us Lütfən yenidən cəhd edin və ya bizə %1 - + Install All Hamısını quraşdırın - - + + Scan Again Yenidən axtarılsın - + Cancel İmtina - + Scanning hardware device drivers, please wait... Sürücülər axtarılır, lütfən gözləyin... - - + + Scanning %1 %1 axtarılır - + Scan failed Axtarış baş tutmadı - + Network unavailable İnternet bağlantısı əlçatmazdır - + Please check your network connection İnternet bağlantınızı yoxlayın - + Please scan again or %1 to us Lütfən yenidən axtarın edin və ya bizə %1 - + You are installing a driver, which will be interrupted if you exit. Sürücü quraşdırılır, indi çıxsanız quraşdırma pozulacaq. - + + + Are you sure you want to exit? Çıxmaq istədiyinizə əminsiniz? - + + + Exit button Çıxış - + + + Cancel button İmtina - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Bluetooth uzlaşdırıcı - - + + Imaging device Təsvir cihazı - + Display adapter Ekran uzlaşdırıcı - + Sound card Səs kartı - + Network adapter Şəbəkə uzlaşdırıcısı - + Wireless network adapter Simsiz şəbəkə uzlaşdırıcısı - + Installation successful Quraşdırma uğurlu oldu - + Installation failed Quraşdırılma alınmadı - + Downloading Endirilir - + Installing Quraşdırılır - + Not installed Quraşdırılmadı - + Out-of-date Köhnəlib - + Waiting Gözləyir - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Bilinməyən xəta - + Network error Şəbəkə xətası - + Canceled İmtina edildi - + Failed to get driver files Sürücü faylları alına bilmədi - + Update Yeniləmə - + + Backup + + + + + Restore + + + + Install Quraşdırın @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Söndürmək - + Refresh Təzələmək - + Export İxrac - + Update drivers Sürücüləri yeniləyin - + Uninstall drivers Sürücüləri silin - + Allow it to wake the computer Kompyuteri ayıltmağa ona icazə verin - - + + Enable Aktiv etmək @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Təzələmək - + Export İxrac - + Copy Kopyalamaq - + Disable Söndürmək - + Unavailable Əlçatmaz @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Yerli qovluğu seçin @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Yüklənir... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_bo.ts b/deepin-devicemanager/translations/deepin-devicemanager_bo.ts index e11008714..79e966fb3 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_bo.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_bo.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + གཏན་ཁེལ། + + + + Feedback + + + + OK button གཏན་ཁེལ། @@ -11,7 +23,7 @@ CmdButtonWidget - + More དེ་བས་མང་། @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More དེ་བས་མང་། - + Collapse བསྡུ་བ། @@ -51,14 +63,14 @@ DetailTreeView - - + + More དེ་བས་མང་། - - + + Collapse བསྡུ་བ། @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable སྤྱོད་མི་ཆོག - + Unavailable སྤྱོད་མི་རུང་། @@ -80,74 +92,81 @@ DeviceAudio - + Device Name སྒྲིག་ཆས་མིང་། - - + + Name མིང་། - - + + Vendor བཟོ་མཁན། - - Model - བཟོ་རྟགས། + + Chip + ཉིང་ལྷེབ། - - Version - པར་གཞི། + + Capabilities + བྱེད་ནུས། - - Bus Info - མ་སྐུད་ཆ་འཕྲིན། + + + Module Alias + དཔེ་དུམ་གྱི་མིང་གཞན། - - Chip - ཉིང་ལྷེབ། + + + Physical ID + དངོས་ཁམས་ID - - Capabilities - བྱེད་ནུས། + + SysFS_Path + - - Clock - ཆུ་ཚོད་ཟློས་ཕྱོད། + + Description + ཞིབ་བརྗོད། + + + + Revision + - - Width - ཞེང་ཚད། + + KernelModeDriver + - + Memory Address ནང་གསོག་བྱེད་ས། - + IRQ ཆད་པ། - + Unavailable སྤྱོད་མི་རུང་། - + Disable སྤྱོད་མི་ཆོག @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name མིང་། - + Vendor བཟོ་མཁན། - + Model བཟོ་རྟགས། @@ -173,17 +192,17 @@ DeviceBios - + Vendor བཟོ་མཁན། - + Version པར་གཞི། - + Chipset ཉིང་ལྷེབ་ཙུའུ། @@ -191,72 +210,82 @@ DeviceBluetooth - + Name མིང་། - + Vendor བཟོ་མཁན། - + Version པར་གཞི། - + Model བཟོ་རྟགས། - + + Module Alias + དཔེ་དུམ་གྱི་མིང་གཞན། + + + + Physical ID + དངོས་ཁམས་ID + + + Speed ཟློས་ཕྱོད། - + Maximum Power ནུས་ཆོད་ཆེ་ཤོས། - + Driver Version སྒུལ་བྱེད་པར་གཞི། - + Driver སྒུལ་བྱེད། - + Capabilities བྱེད་ནུས། - + Bus Info མ་སྐུད་ཆ་འཕྲིན། - + Logical Name གཏན་ཚིགས་མིང་། - + MAC Address MACསྡོད་གནས། - + Unavailable སྤྱོད་མི་རུང་། - + Disable སྤྱོད་མི་ཆོག @@ -264,57 +293,67 @@ DeviceCdrom - + Name མིང་། - + Vendor བཟོ་མཁན། - + Model བཟོ་རྟགས། - + Version པར་གཞི། - + Bus Info མ་སྐུད་ཆ་འཕྲིན། - + Capabilities བྱེད་ནུས། - + Driver སྒུལ་བྱེད། - + Maximum Power ནུས་ཆོད་ཆེ་ཤོས། - + Speed ཟློས་ཕྱོད། - + + Module Alias + དཔེ་དུམ་གྱི་མིང་གཞན། + + + + Physical ID + དངོས་ཁམས་ID + + + Unavailable སྤྱོད་མི་རུང་། - + Disable སྤྱོད་མི་ཆོག @@ -322,7 +361,7 @@ DeviceComputer - + Name མིང་། @@ -330,116 +369,113 @@ DeviceCpu - - + + Name མིང་། - - + + Vendor བཟོ་མཁན། - + CPU ID སྒྲིག་གཅོད་ཆས། ID - + Core ID ལྟེ་བ། ID - + Threads སྐུད་རིམ་གྲངས། - - Current Speed - མིག་སྔའི་ཟློས་ཕྱོད། - - - + BogoMIPS BogoMIPS - - + + Architecture གཞི་སྒྲོམ། - + CPU Family ཁྱིམ་རྒྱུད། - + Model བཟོ་རྟགས། - - + + Processor གཏན་ཚིགས་ཐག་གཅོད་ཆས། - + Core(s) ལྟེ་བ། - + Virtualization རྟོག་བཟོ་ཅན། - + Flags ཁྱད་གཤིས། - + Extensions རྒྱ་སྐྱེད་བཀའ་འདུ། - + L3 Cache L3ཤོང་གསོག - + L2 Cache L2ཤོང་གསོག - + L1i Cache L1ཤོང་གསོག(བཀའ།) - + L1d Cache L1ཤོང་གསོག(གཞི་གྲངས།) - + Stepping གོམ་བགྲོད། - + Speed ཟློས་ཕྱོད། - + + + Max Speed ཟློས་ཕྱོད་ཆེ་ཤོས། @@ -447,132 +483,127 @@ DeviceGpu - + Name མིང་། - + Vendor བཟོ་མཁན། - + Model བཟོ་རྟགས། - + Version པར་གཞི། - + Graphics Memory འཆར་གསོག - + + Module Alias + དཔེ་དུམ་གྱི་མིང་གཞན། + + + Physical ID དངོས་ཁམས་ID - + Memory Address ནང་གསོག་བྱེད་ས། - + IO Port I/Oམཐུད་སྣེ། - + Bus Info མ་སྐུད་ཆ་འཕྲིན། - + Maximum Resolution འབྱེད་ཕྱོད་ཆེ་ཤོས། - + Minimum Resolution འབྱེད་ཕྱོད་ཆུང་ཤོས། - + Current Resolution མིག་སྔའི་འབྱེད་ཕྱོད། - + Driver སྒུལ་བྱེད། - + Description ཞིབ་བརྗོད། - - Clock - ཆུ་ཚོད་ཟློས་ཕྱོད། - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output ཕྱིར་འདྲེན་འཆར་བ། - + Capabilities བྱེད་ནུས། - + IRQ ཆད་པ། - - Width - ཞེང་ཚད། - - - + Unavailable སྤྱོད་མི་རུང་། @@ -580,62 +611,72 @@ DeviceImage - + Name མིང་། - + Vendor བཟོ་མཁན། - + Version པར་གཞི། - + Model བཟོ་རྟགས། - + Bus Info མ་སྐུད་ཆ་འཕྲིན། - + + Module Alias + དཔེ་དུམ་གྱི་མིང་གཞན། + + + + Physical ID + དངོས་ཁམས་ID + + + Speed ཟློས་ཕྱོད། - + Maximum Power ནུས་ཆོད་ཆེ་ཤོས། - + Driver སྒུལ་བྱེད། - + Capabilities བྱེད་ནུས། - + Serial Number རིམ་སྟར་ཨང་གྲངས། - + Unavailable སྤྱོད་མི་རུང་། - + Disable སྤྱོད་མི་ཆོག @@ -643,62 +684,72 @@ DeviceInput - + Name མིང་། - + Vendor བཟོ་མཁན། - + Model བཟོ་རྟགས། - + Interface མཐུད་སྣེ། - + Bus Info མ་སྐུད་ཆ་འཕྲིན། - + + Module Alias + དཔེ་དུམ་གྱི་མིང་གཞན། + + + + Physical ID + དངོས་ཁམས་ID + + + Speed ཟློས་ཕྱོད། - + Maximum Current གློག་རྒྱུན་ཆེ་ཤོས། - + Driver སྒུལ་བྱེད། - + Capabilities བྱེད་ནུས། - + Version པར་གཞི། - + Unavailable སྤྱོད་མི་རུང་། - + Disable སྤྱོད་མི་ཆོག @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview གནས་ཚུལ་རགས་བསྡུས། - - - + + + CPU ཐག་གཅོད་ཆས། - - + + CPU quantity CPUགྲངས་ཚད། - - + + Motherboard མ་པང་། - - + + Memory ནང་གསོག - - + + Display Adapter འཚམ་སྒྲིག་ཆས་འཆར་བ། - - + + Sound Adapter སྒྲ་ཟློས་འཚམ་སྒྲིག་ཆས། - - + + Storage གསོག་འཇོག་སྒྲིག་ཆས། - - + + Other PCI Devices PCIསྒྲིག་ཆས་གཞན་དག - - + + Battery གློག་རྫས། - - + + Bluetooth སོ་སྔོན། - - + + Network Adapter དྲ་བའི་འཚམ་སྒྲིག་ཆས། - - + + Mouse ཙི་གུ། - - + + Keyboard མཐེབ་གཞོང་། - - + + Monitor སྒྲིག་ཆས་འཆར་བ། - - + + CD-ROM CD-ROM - - + + Printer པར་འདེབས་ཆས། - - + + Camera པར་རིས་སྒྲིག་ཆས། - - + + Other Devices Other Input Devices སྒྲིག་ཆས་གཞན་དག - - - + + + Device སྒྲིག་ཆས། - - - + + + OS བཀོལ་སྤྱོད་མ་ལག @@ -847,72 +898,72 @@ DeviceMemory - - + + Name མིང་། - - + + Vendor བཟོ་མཁན། - - + + Size ཆེ་ཆུང་། - - + + Type རིགས་གྲས། - - + + Speed ཟློས་ཕྱོད། - + Total Width སྤྱིའི་ཞེང་ཚད། - + Locator འཇུག་ཤུར། - + Serial Number རིམ་སྟར་ཨང་གྲངས། - + Configured Voltage སྒྲིག་སྦྱོར་གློག་གནོན། - + Maximum Voltage གློག་གནོན་ཆེ་ཤོས། - + Minimum Voltage གློག་གནོན་ཆུང་ཤོས། - + Configured Speed སྒྲིག་སྦྱོར་ཟློས་ཕྱོད། - + Data Width གཞི་གྲངས་ཞེང་ཚད། @@ -920,200 +971,198 @@ DeviceMonitor - + Name མིང་། - + Vendor བཟོ་མཁན། - + Type རིགས་གྲས། - + Display Input ནང་འཇུག་འཆར་བ། - + Interface Type མཐུད་སྣེའི་རིགས་གྲས། - + Support Resolution རྒྱབ་སྐྱོར་ཐུབ་པའི་འབྱེད་ཕྱོད། - + Current Resolution མིག་སྔའི་འབྱེད་ཕྱོད། - + Display Ratio འཆར་བའི་བསྡུར་ཚད། - + Primary Monitor འཆར་ཆས་གཙོ་བོ། - + Size ཆེ་ཆུང་། - + Serial Number རིམ་སྟར་ཨང་གྲངས། - - - Product Date - ཐོན་སྐྱེད་དུས་ཚོད། - DeviceNetwork - + + Name མིང་། - + + Vendor བཟོ་མཁན། - + + Type རིགས་གྲས། - + Version པར་གཞི། - + Bus Info མ་སྐུད་ཆ་འཕྲིན། - + Capabilities བྱེད་ནུས། - + Driver སྒུལ་བྱེད། - + Driver Version སྒུལ་བྱེད་པར་གཞི། - + + Module Alias + དཔེ་དུམ་གྱི་མིང་གཞན། + + + + Physical ID + དངོས་ཁམས་ID + + + Maximum Rate མྱུར་ཚད་ཆེ་ཤོས། - + Negotiation Rate གྲོས་མཐུན་མྱུར་ཚད། - + Port མཐུད་སྣེ། - + Multicast མང་བསྒྲགས། - + Link སྦྲེལ་བ། - + Latency ནར་འགྱངས། - + IP IP - + Firmware བརྟན་ཆས། - + Duplex གོ་ཉིས། - + Broadcast རྒྱང་བསྒྲགས། - + Auto Negotiation རང་འགུལ་གྲོས་དོན། - - Clock - ཆུ་ཚོད་ཟློས་ཕྱོད། - - - - Width - ཞེང་ཚད། - - - + Memory Address ནང་གསོག་བྱེད་ས། - + IRQ ཆད་པ། - + MAC Address MACསྡོད་གནས། - + Logical Name གཏན་ཚིགས་མིང་། - + Unavailable སྤྱོད་མི་རུང་། - + Disable སྤྱོད་མི་ཆོག @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name མིང་། - + Vendor བཟོ་མཁན། - + Model བཟོ་རྟགས། - + Bus Info མ་སྐུད་ཆ་འཕྲིན། - + Version པར་གཞི། - + Input/Output ནང་འཇུག/ཕྱིར་འདྲེན། - + Memory ནང་གསོག - + IRQ ཆད་པ། - + Latency ནར་འགྱངས། - - Clock - ཆུ་ཚོད་ཟློས་ཕྱོད། - - - - Width - ཞེང་ཚད། - - - + Driver སྒུལ་བྱེད། - + Capabilities བྱེད་ནུས། @@ -1189,62 +1228,62 @@ DeviceOthers - + Name མིང་། - + Vendor བཟོ་མཁན། - + Model བཟོ་རྟགས། - + Version པར་གཞི། - + Bus Info མ་སྐུད་ཆ་འཕྲིན། - + Capabilities བྱེད་ནུས། - + Driver སྒུལ་བྱེད། - + Maximum Power ནུས་ཆོད་ཆེ་ཤོས། - + Speed ཟློས་ཕྱོད། - + Serial Number རིམ་སྟར་ཨང་གྲངས། - + Unavailable སྤྱོད་མི་རུང་། - + Disable སྤྱོད་མི་ཆོག @@ -1252,82 +1291,82 @@ DevicePower - + Name མིང་། - + Model བཟོ་རྟགས། - + Vendor བཟོ་མཁན། - + Serial Number རིམ་སྟར་ཨང་གྲངས། - + Type རིགས་གྲས། - + Status ངང་ཚུལ། - + Capacity ཤོང་ཚད། - + Voltage གློག་གནོན། - + Slot འཇུག་ཤུར། - + Design Capacity ཤོང་ཚད་ཇུས་འགོད་བྱེད་པ། - + Design Voltage གློག་གནོན་ཇུས་འགོད་བྱེད་པ། - + SBDS Version SBDSཔར་གཞི། - + SBDS Serial Number SBDSརིམ་སྟར་ཨང་རྟགས། - + SBDS Manufacture Date SBDSབཟོ་བའི་དུས་ཚོད། - + SBDS Chemistry SBDSརྒྱུ་ཆ། - + Temperature དྲོད་ཚད། @@ -1335,47 +1374,47 @@ DevicePrint - + Name མིང་། - + Model བཟོ་རྟགས། - + Vendor བཟོ་མཁན། - + Serial Number རིམ་སྟར་ཨང་གྲངས། - + Shared མཉམ་སྤྱོད་བྱས་ཟིན། - + URI URI - + Status ངང་ཚུལ། - + Interface Type མཐུད་སྣེའི་རིགས་གྲས། - + Disable སྤྱོད་མི་ཆོག @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - བཟོ་རྟགས། - - - - + + Vendor བཟོ་མཁན། - - + + Media Type བར་རྫས་རིགས་གྲས། - - + + + Size ཆེ་ཆུང་། - + + + Name + མིང་། + + + Version པར་གཞི། - + Capabilities བྱེད་ནུས། - + + + Module Alias + དཔེ་དུམ་གྱི་མིང་གཞན། + + + + + Physical ID + དངོས་ཁམས་ID + + + Firmware Version བརྟན་ཆས་པར་གཞི། - + Speed ཟློས་ཕྱོད། - + Description ཞིབ་བརྗོད། - + Serial Number རིམ་སྟར་ཨང་གྲངས། - + Interface མཐུད་སྣེ། - + Rotation Rate སྐོར་ཚད། - + Unavailable སྤྱོད་མི་རུང་། @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update གསར་སྒྱུར་བྱེད་དགོས་པའི་སྐུལ་བྱེད་བྱ་རིམ་འདེམས་དང་། - + No drivers found in this folder བདམས་པའི་ཡིག་ཁུག་ལས་སྐུལ་བྱེད་ཡིག་ཆ་མ་རྙེད། @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... སྒྲ་ཟློས་སྒྲིག་ཆས་ཀྱི་ཆ་འཕྲིན་ཐོབ་པ། - + Loading BIOS Info... BIOSཆ་འཕྲིན་ཐོབ་པ། - + Loading CD-ROM Info... སྡེར་སྐུལ་ཆ་འཕྲིན་ཐོབ་པ། - + Loading Operating System Info... བཀོལ་སྤྱོད་མ་ལག་གི་ཆ་འཕྲིན་ཐོབ་པ། - + Loading CPU Info... ག་གཅོད་ཆས་ཀྱི་ཆ་འཕྲིན་ཐོབ་པ། - + Loading Other Devices Info... སྒྲིག་ཆས་གཞན་དག་གི་ཆ་འཕྲིན་ཐོབ་པ། - + Loading Power Info... གློག་རྫས་ཀྱི་ཆ་འཕྲིན་ཐོབ་པ། - + Loading Printer Info... པར་འདེབས་ཆས་ཀྱི་ཆ་འཕྲིན་ཐོབ་པ། - + Loading Mouse Info... ཙི་གུའི་ཆ་འཕྲིན་ཐོབ་པ། - + Loading Network Adapter Info... དྲ་བའི་འཚམ་སྒྲིག་ཆས་ཀྱི་ཆ་འཕྲིན་ཐོབ་པ། @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable སྤྱོད་མི་ཆོག - + Unavailable སྤྱོད་མི་རུང་། @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable སྤྱོད་མི་ཆོག - + Unavailable སྤྱོད་མི་རུང་། @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name སྒྲིག་ཆས་ཆ་འཕྲིན། - + Display shortcuts མྱུར་མཐེབ་འཆར་བ། - + Close ཁ་རྒྱག - + Help རོགས་པ། - + Copy པར་སློག - + System མ་ལག - + Export ཕྱིར་འདྲེན། - + Refresh གསར་འཇུག - + Device Manager སྒྲིག་ཆས་དོ་དམ་ཆས། - + Hardware - + - + Drivers - + - + Monitor སྒྲིག་ཆས་མངོན་སྟོན། - + Overview གནས་ཚུལ་རགས་བསྡུས། - + Display Adapter འཚམ་སྒྲིག་ཆས་མངོན་སྟོན། - + CPU ཐག་གཅོད་ཆས། - + Network Adapter དྲ་བའི་འཚམ་སྒྲིག་ཆས། - + Battery གློག་རྫས། @@ -1639,191 +1691,377 @@ PageDetail - + More དེ་བས་མང་། + + PageDriverBackupInfo + + + + Name + མིང་། + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + ངང་ཚུལ། + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating གསར་སྒྱུར་བྱེད་བཞིན་པ། - - - + + + Cancel button འདོར་བ། - + Next རྗེས་མ། - + Warning དོ་སྣང་། - + The device will be unavailable after the driver uninstallation མ་ལག་ཁྲོད་ནས་སྐུལ་བྱེད་བྱ་རིམ་འདི་བཤིག་རྒྱུ། བཤིག་རྗེས་སྒྲིག་ཆས་འདི་སྤྱོད་མི་རུང་། - + Uninstall button བཤིག་པ། - + Uninstalling བཤིག་བཞིན་པ། - + Update successful སྐུལ་བྱེད་གསར་སྒྱུར་ཐུབ་སོང་། - + Uninstallation successful སྐུལ་བྱེད་བཤིག་ཐུབ་སོང་། - + Update failed སྐུལ་བྱེད་གསར་སྒྱུར་ཐུབ་མ་སོང་། - + Uninstallation failed སྐུལ་བྱེད་བཤིག་ཐུབ་སོང་། - + OK button གཏན་ཁེལ། - + Next button རྗེས་མ། - + The selected folder does not exist, please select again བདམས་པའི་ཡིག་ཁུག་མི་འདུག་པས། ཡང་བསྐྱར་འདེམས་རོགས། - + Update button གསར་སྒྱུར། - + Previous button སྔ་མ་དེ། - + Broken package ཁུག་མའི་ཡིག་ཆ་འཕྲོ་བརླག་ཕྱིན་པ། - + Unmatched package architecture ཁུག་མའི་ཡིག་ཆ་དང་རྒྱུད་ཁོངས་ཀྱི་སྒྲོམ་གཞི་མི་མཐུན་པ། - - + + The selected file does not exist, please select again བདམས་པའི་ཡིག་ཆ་མི་འདུག་པས། ཡང་བསྐྱར་འདེམས་རོགས། - + It is not a driver ཡིག་ཆ་འདི་ནི་སྐུལ་བྱེད་ཡིག་ཆ་མ་རེད། - + Unable to install - no digital signature སྒྲིག་སྦྱོར་བྱེད་ཐབས་མེད། སྒྲིག་སྦྱོར་ཐུམ་ལ་ཨང་ཀིའི་མཚན་རྟགས་མེད། - + Unknown error མ་ཤེས་པའི་ནོར་འཁྲུལ། - + The driver module was not found སྒུལ་བྱེད་མ་དཔེ་དེ་ཉིད་མ་རྙེད། - + Invalid module format དཔེ་དུམ་རྣམ་གཞག་གོ་མི་ཆོད། - + The driver module has dependencies སྒུལ་བྱེད་མ་དཔེ་དེ་ཉིད་གཞན་གྱིས་བརྟེན་འདུག - PageListView + PageDriverInstallInfo - - Refresh - གསར་འཇུག + + + + Device Name + སྒྲིག་ཆས་མིང་། - + + Version Available + + + + + + Size + ཆེ་ཆུང་། + + + + + Status + ངང་ཚུལ། + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + གཏན་ཁེལ། + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + མིང་། + + + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + གསར་འཇུག + + + Export ཕྱིར་འདྲེན། - + Overview གནས་ཚུལ་རགས་བསྡུས། + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device འགོ་སློང་མི་ཐུབ། - + Failed to disable the device སྤྱོད་མི་ཆོག་པ་མི་ཐུབ། - + Failed to disable it: unable to get the device SN སྒྲིག་ཆས་ཀྱི་རིམ་ཨང་ཐོབ་ཐབས་མི་འདུག་པས་སྤྱོད་མི་རུང་བ་ཐུབ་མ་སོང་། - + Update Drivers སྐུལ་བྱེད་གསར་སྒྱུར། - + Uninstall Drivers སྐུལ་བྱེད་བཤིག་པ། @@ -1831,22 +2069,22 @@ PageOverview - + Refresh གསར་འཇུག - + Export ཕྱིར་འདྲེན། - + Copy པར་སློག - + Overview གནས་ཚུལ་རགས་བསྡུས། @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh གསར་འཇུག - + Export ཕྱིར་འདྲེན། - + Copy པར་སློག - - + + Enable འགོ་སློང་བ། - + Update drivers སྐུལ་བྱེད་གསར་སྒྱུར། - + Uninstall drivers སྐུལ་བྱེད་བཤིག་པ། - + Allow it to wake the computer - + - + Disable སྤྱོད་མི་ཆོག - - + + Failed to disable it: unable to get the device SN སྒྲིག་ཆས་ཀྱི་རིམ་ཨང་ཐོབ་ཐབས་མི་འདུག་པས་སྤྱོད་མི་རུང་བ་ཐུབ་མ་སོང་། - + Failed to disable the device སྤྱོད་མི་ཆོག་པ་མི་ཐུབ། - + Failed to enable the device འགོ་སློང་མི་ཐུབ། - + Update Drivers སྐུལ་བྱེད་གསར་སྒྱུར། - + Uninstall Drivers སྐུལ་བྱེད་བཤིག་པ། @@ -1924,867 +2162,847 @@ QObject - + SubVendor བཟོ་མཁན་ཡན་ལག - + SubDevice སྒྲིག་ཆས་ཡན་ལག - + Driver སྒུལ་བྱེད། - + Driver Status སྒུལ་བྱེད་ངང་ཚུལ། - + Driver Activation Cmd སྒུལ་བྱེད་སྐུལ་སློང་བཀའ་རྒྱ། - - + - + + Config Status སྒྲིག་སྦྱོར་ངང་ཚུལ། - - - - - - - physical id - དངོས་ཁམས།ID - - - + latency ནར་འགྱངས། - + Phys Phys - + Sysfs Sysfs - + Handlers ཐག་གཅོད་བྱ་རིམ། - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - བཟོ་རྟགས། - - - - Vendor - བཟོ་མཁན། - - - + Version པར་གཞི། - - + + + Bus མ་སྐུད། - - + + BIOS Information BIOSཆ་འཕྲིན། - - + + Base Board Information མ་པང་ཆ་འཕྲིན། - - + + System Information མ་ལག་ཆ་འཕྲིན། - - + + Chassis Information འཁོར་སྒམ་ཆ་འཕྲིན། - - + + Physical Memory Array ནང་གསོག་འཇུག་ཤུར་ཆ་འཕྲིན། - + Release Date ཡོངས་བསྒྲགས་བྱེད་པའི་དུས་ཚོད། - + Address གནས་ས། - + Runtime Size འཁོར་རྒྱུག་ནང་གསོག་ཆེ་ཆུང་། - + ROM Size ROMཆེ་ཆུང་། - + Characteristics ཁྱད་གཤིས། - + BIOS Revision BIOSབཟོ་བཅོས་པར་གཞི། - + Firmware Revision བརྟན་ཆས་བཟོ་བཅོས་པར་གཞི། - - + + Product Name ཐོན་རྫས་མིང་། - - - + + + Serial Number རིམ་སྟར་ཨང་གྲངས། - - - + + + Asset Tag རྒྱུ་ནོར་སྒྲིག་ཨང་། - - + + Features ཁྱད་ཆོས། - + Location In Chassis འཁོར་སྒམ་ནང་གི་སྡོད་གནས། - + Chassis Handle འཁོར་སྒམ་བྱ་རིམ། - - + + Type རིགས་གྲས། - + Contained Object Handles བྱ་ཡུལ་བྱ་རིམ་ཚུད་ཡོད། - - + + UUID UUID - + Wake-up Type གཉིད་སད་པའི་རིགས་གྲས། - - + + SKU Number SKUཨང་རྟགས། - + Family ཁྱིམ་རྒྱུད། - + Lock སྒོ་ལྕག - + Boot-up State འཕྲུལ་སྒོ་ཕྱེ་བའི་ངང་ཚུལ། - + Power Supply State གློག་འདོན་པའི་ངང་ཚུལ། - + Thermal State དྲོད་འཐོར་ངང་ཚུལ། - + Security Status བདེ་འཇགས་ངང་ཚུལ། - + OEM Information OEMཆ་འཕྲིན། - + Height མཐོ་ཚད། - + Number Of Power Cords གློག་ཁུངས་སྐུད་གྲངས། - + Contained Elements ཡོད་པའི་སྒྲིག་ཆས་གྲངས་ཀ - + Location གནས་ས། - + Error Correction Type ནོར་བཅོས་རིགས་གྲས། - + Maximum Capacity ཤོང་ཚད་ཆེ་ཤོས། - - + + Error Information Handle ནོར་འཁྲུལ་ཆ་འཕྲིན་གྱི་བྱ་རིམ། - + Number Of Devices གཱ་འཇུག་སའི་གྲངས། - + BIOS ROMSIZE BIOS ROMཆེ་ཆུང་། - + Release date ཁྱབ་བསྒྲགས་བྱས་པའི་དུས་ཚོད། - + Board name མ་པང་གི་མིང་། - + SMBIOS Version SMBIOSཔར་གཞི། - + Language Description Format སྐད་བརྡ་ཞིབ་བརྗོད་རྣམ་བཞག - + Installable Languages སྒྲིག་སྦྱོར་བྱ་རུང་བའི་སྐད་བརྡའི་གྲངས། - + Currently Installed Language མིག་སྔའི་སྒྲིག་སྦྱོར་སྐད་བརྡ། - + BD Address སོ་སྔོན་སྒྲིག་ཆས་སྡོད་གནས། - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type གཞི་གྲངས་ཁུག་གི་རིགས་གྲས། - + Link policy སྦྲེལ་མཐུད་དྲིད་ཇུས། - + Link mode སྦྲེལ་མཐུད་དཔེ་དབྱིབས། - - + + Class རིགས་དབྱེ། - + Service Classes ཞབས་ཞུའི་རིགས་དབྱེ། - + Device Class སྒྲིག་ཆས་རིགས་དབྱེ། - + HCI Version HCIཔར་གཞི། - + LMP Version LMPཔར་གཞི། - + Subversion པར་གཞི་ཡན་ལག - + Device སྒྲིག་ཆས། - - + + Serial ID རིམ་སྟར་ཨང་རྟགས། - + product ཐོན་རྫས། - + description ཞིབ་བརྗོད། - + Powered གློག་འདོན། - + Discoverable ཤེས་རྟོགས་ཐུབ་པ། - + Pairable ཆ་འགྲིག་ཐུབ་པ། - + Modalias བཀའི་མིང་གཞན་སྒྲིག་བཀོད་བྱེད་པ། - + Discovering འཚོལ་ཞིབ་བྱེད་བཞིན་པ། - + Driver Modules སྒུལ་བྱེད་དཔེ་དུམ། - - - + + + + + Device File སྒྲིག་ཆས་ཡིག་ཆ། - + Device Files སྒྲིག་ཆས་ཡིག་ཆ། - - + + + Device Number སྒྲིག་ཆས་ཨང་རྟགས། - - Module Alias - དཔེ་དུམ་གྱི་མིང་གཞན། - - - + Application ཉེར་སྤྱོད། - + status ངང་ཚུལ། - - + + + logical name གཏན་ཚིགས་སྡོད་གནས། - - + + ansiversion ANSIཔར་གཞི། - + CPU implementer CPUབྱ་རིམ། - + CPU architecture CPUགཞི་སྒྲོམ། - + CPU variant CPUའགྱུར་ཚད། - + CPU part CPUལྷུ་ལག - + CPU revision CPUཔར་གཞི། - + One རྐྱང་། - + Two ཆ། - + Four བཞི། - + Six དྲུག - + Eight བརྒྱད། - + Ten བཅུ། - + Twelve བཅུ་གཉིས། - + Fourteen བཅུ་བཞི། - + Sixteen བཅུ་དྲུག - + Eighteen བཅོ་བརྒྱད། - + Twenty ཉི་ཤུ། - + Twenty-two ཉེར་གཉིས། - + Twenty-four ཉེར་བཞི། - + Twenty-six ཉེར་དྲུག - + Twenty-eight ཕར་བརྒྱད། - + Thirty སུམ་ཅུ། - + Thirty-two སོ་གཉིས། - + Thirty-four སོ་བཞི། - + Thirty-six སོ་དྲུག - + Thirty-eight སོ་བརྒྱད། - + Forty བཞི་ཅུ། - + Forty-two ཞེ་གཉིས། - + Forty-four ཞེ་བཞི། - + Forty-six ཞེ་དྲུག - + Forty-eight ཞེ་བརྒྱད། - + Fifty ལྔ་བཅུ། - + Fifty-two ང་གཉིས། - + Fifty-four ང་བཞི། - + Fifty-six ང་དྲུག - + Fifty-eight ང་བརྒྱད། - + Sixty དྲུག་ཅུ། - + Sixty-two རེ་གཉིས། - + Sixty-four རེ་བཞི། - + Sixty-six རེ་དྲུག - + Sixty-eight རེ་བརྒྱད། - + Seventy བདུན་ཅུ། - + Seventy-two དོན་གཉིས། - + Seventy-four དོན་བཞི། - + Seventy-six དོན་དྲུག - + Seventy-eight དོན་བརྒྱད། - + Eighty བརྒྱད་ཅུ། - + Eighty-two གྱ་གཉིས། - + Eighty-four གྱ་བཞི། - + Eighty-six གྱ་དྲུག - + Eighty-eight གྱ་བརྒྱད། - + Ninety དགུ་བཅུ། - + Ninety-two གོ་གཉིས། - + Ninety-four གོ་བཞི། - + Ninety-six གོ་དྲུག - + Ninety-eight གོ་བརྒྱད། - + One hundred བརྒྱ་ཐམ་པ། - + One hundred and Two བརྒྱ་དང་གཉིས། - + One hundred and four བརྒྱ་དང་བཞི། - + One hundred and Six བརྒྱ་དང་དྲུག - + One hundred and Eight བརྒྱ་དང་བརྒྱད། - + One hundred and Ten བརྒྱ་དང་བཅུ། - + One hundred and Twelve བརྒྱ་དང་བཅུ་གཉིས། - + One hundred and Fourteen བརྒྱ་དང་བཅུ་བཞི། - + One hundred and Sixteen བརྒྱ་དང་བཅུ་དྲུག - + One hundred and Eighteen བརྒྱ་དང་བཅོ་བརྒྱད། - + One hundred and Twenty བརྒྱ་དང་ཉི་ཤུ། - + One hundred and Twenty-two བརྒྱ་དང་ཉེར་གཉིས། - + One hundred and Twenty-four བརྒྱ་དང་ཉེར་བཞི། - + One hundred and Twenty-six བརྒྱ་དང་ཉེར་དྲུག - + One hundred and Twenty-eight བརྒྱ་དང་ཉེར་བརྒྱད། - + One hundred and Ninety-two བརྒྱ་དང་གོ་གཉིས། - + Two hundred and fifty-six 256 @@ -2824,1028 +3042,1124 @@ GLSLཔར་གཞི། - - - + + + Unknown མི་ཤེས། - + Uniq Uniq - + MSC MSC - - + + + Hardware Class བརྟན་ཆས་རིགས་དབྱེ། - - - - + + + + CPU ཐག་གཅོད་ཆས། - - - - + + + + No CPU found ཐག་གཅོད་ཆས་ཤེས་རྟོགས་བྱུང་མེད། - - - - + + + + Motherboard མ་པང་། - - - - + + + + No motherboard found མ་པང་ཤེས་རྟོགས་བྱུང་མེད། - - - - + + + + Memory ནང་གསོག - - - - + + + + No memory found ནང་གསོག་ཤེས་རྟོགས་བྱུང་མེད། - - - - + + + + Storage གསོག་འཇོག་སྒྲིག་ཆས། - - - - + + + + No disk found སྡུད་སྡེར་ཤེས་རྟོགས་བྱུང་མེད། - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter འཚམ་སྒྲིག་ཆས་འཆར་བ། - - - - + + + + No GPU found GPUཤེས་རྟོགས་བྱུང་མེད། - - - - + + + + Monitor སྒྲིག་ཆས་འཆར་བ། - - - - + + + + No monitor found འཆར་བའི་སྒྲིག་ཆས་ཤེས་རྟོགས་བྱུང་མེད། - - - - - + + + + + Network Adapter དྲ་བའི་འཚམ་སྒྲིག་ཆས། - - - - + + + + No network adapter found དྲ་བའི་འཚམ་སྒྲིག་ཆས་ཤེས་རྟོགས་བྱུང་མེད། - - - - - + + + + + Sound Adapter སྒྲ་ཟློས་འཚམ་སྒྲིག་ཆས། - - - - + + + + No audio device found སྒྲ་ཟློས་སྒྲིག་ཆས་ཤེས་རྟོགས་བྱུང་མེད། - - - - - + + + + + Bluetooth སོ་སྔོན། - - - - + + + + No Bluetooth device found སོ་སྔོན་སྒྲིག་ཆས་ཤེས་རྟོགས་བྱུང་མེད། - - - - + + + + Other PCI Devices PCIསྒྲིག་ཆས་གཞན་དག - - - - + + + + No other PCI devices found PCIསྒྲིག་ཆས་གཞན་དག་ཤེས་རྟོགས་བྱུང་མེད། - - - - + + + + Power གློག་རྫས། - - - - + + + + No battery found གློག་རྫས་ཤེས་རྟོགས་བྱུང་མེད། - - - - - + + + + + Keyboard མཐེབ་གཞོང་། - - - - + + + + No keyboard found མཐེབ་གཞོང་ཤེས་རྟོགས་བྱུང་མེད། - - - - - + + + + + Mouse ཙི་གུ། - - - - + + + + No mouse found ཙི་གུ་ཤེས་རྟོགས་བྱུང་མེད། - - - - - - + + + + + + Printer པར་འདེབས་ཆས། - - - - + + + + No printer found པར་འདེབས་ཆས་ཤེས་རྟོགས་བྱུང་མེད། - - - - + + + + Camera པར་རིས་སྒྲིག་ཆས། - - - - + + + + No camera found པར་རིས་སྒྲིག་ཆས་ཤེས་རྟོགས་བྱུང་མེད། - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found CD-ROMཤེས་རྟོགས་བྱུང་མེད། - - - - - + + + + + Other Devices སྒྲིག་ཆས་གཞན་དག - - - - + + + + No other devices found སྒྲིག་ཆས་གཞན་དག་རྙེད་མ་བྱུང་། - + Array Handle གྲངས་ཚོ་བྱ་རིམ། - + Form Factor ཚད་གཞི་བཟོ་རྟགས། - + Set སྒྲིག་བཀོད། - + Bank Locator ནང་གསོག་རྒྱུ་ལམ། - + Type Detail རིགས་གྲས་ཞིབ་ཆ། - + Part Number ལྷུ་ཆས་ཨང་གྲངས། - + Rank གནས་སྟར། - + Memory Technology ནང་གསོག་ལག་རྩལ། - + Memory Operating Mode Capability ནང་གསོག་བཀོལ་སྤྱོད་དཔེ་དབྱིབས། - + Firmware Version བརྟན་ཆས་པར་གཞི། - + Module Manufacturer ID ལྷུ་ཆས་བཟོ་མཁན། - + Module Product ID ལྷུ་ཆས་ཐོན་རྫས་ID - + Memory Subsystem Controller Manufacturer ID ནང་གསོག་མ་ལག་ཡན་ལག་གྱི་ཚོད་འཛིན་ཆས་བཟོ་མཁན། - + Memory Subsystem Controller Product ID ནང་གསོག་མ་ལག་ཡན་ལག་གྱི་ཚོད་འཛིན་ཆས་ཐོན་རྫས་ID - + Non-Volatile Size བོར་མི་སླ་བའི་ཆེ་ཆུང་། - + Volatile Size བོར་སླ་བའི་ཆེ་ཆུང་། - + Cache Size ཤོང་གསོག་ཆེ་ཆུང་། - + Logical Size གཏན་ཚིགས་ཆེ་ཆུང་། - - - - - + + + + + inch དབྱིན་ཚུན། - + Date དུས་ཚོད། - + ioport I/Oམཐུད་སྣེ། - + network དྲ་བ། - - + battery གློག་རྫས། - + native-path སྒྲིག་སྦྱོར་ཐབས་ལམ། - + power supply གློག་འདོན། - + updated གསར་སྒྱུར་དུས་ཚོད། - + has history ལོ་རྒྱུས་ཟིན་ཐོ། - + has statistics གློག་སྤྱོད་སྡོམ་རྩིས། - + rechargeable གློག་བསྐྱར་གསོག་ཐུབ་པ། - + state ངང་ཚུལ། - + warning-level ཉེན་བརྡའི་བང་རིམ། - + energy ཤོང་ཚད། - + energy-empty ཤོང་ཚད་ཆུང་ཤོས། - + energy-full ཤོང་ཚད་ཡོངས་རྫོགས་གསོག་ཟིན་པ། - + energy-full-design ཤོང་ཚད་ཇུས་འགོད་བྱེད་པ། - + energy-rate ནུས་ཚད་སྟུག་ཚད། - + voltage གློག་གནོན། - + percentage གློག་ཚད། - + technology གློག་རྫས་ལག་རྩལ། - + icon-name རྟགས་རིས། - + online སྐུད་ཐོག - + daemon-version Daemonཔར་གཞི། - + on-battery གློག་རྫས་སྤྱོད་པ། - + lid-is-closed ལག་ཁྱེར་གློག་ཀླད་ཁ་རྒྱག་པ། - + lid-is-present ལག་ཁྱེར་གློག་ཀླད་ཁ་ཕྱེ་བ། - + critical-action གློག་ཚད་ཆེས་ཉུང་བའི་སྐབས་ལག་བསྟར་བྱེད་པ། - + copies བསྐྱར་པར་གྲངས་ཚད། - + job-cancel-after དེའི་སྐབས་སུ་པར་འདེབས་ལས་འགན་འདོར་བ། - + job-hold-until བར་པར་འདེབས་ལས་འགན་སོར་བཞག་བྱ་རྒྱུ། - + job-priority ལས་འགན་གྱི་སྔོན་རིམ། - + marker-change-time མཚོན་རྟགས་བཅོས་པའི་ཐེངས་གྲངས། - + number-up སྒྲིག་ཨང་། - + orientation-requested པར་འདེབས་ཕྱོགས། - + print-color-mode ཚོས་གཞི་དཔེ་དབྱིབས། - + printer-is-accepting-jobs མིག་སྔར་པར་འདེབས་ཆོག - + printer-is-shared པར་འདེབས་ཆས་མཉམ་སྤྱོད་བྱས་ཟིན། - + printer-is-temporary གནས་སྐབས་པར་འདེབས་ཆས། - + printer-make-and-model བཟོ་མཁན་དང་བཟོ་རྟགས། - + printer-state-change-time པར་འདེབས་ཆས་ཀྱི་ངང་ཚུལ་བཅོས་པའི་དུས་ཚོད། - + printer-state-reasons པར་འདེབས་ཆས་ཀྱི་ངང་ཚུལ་ཆ་འཕྲིན། - + printer-type པར་འདེབས་ཆས་ཀྱི་རིགས་གྲས། - + printer-uri-supported རྒྱབ་སྐྱོར་བྱེད་པའི་URI - + sides པར་འདེབས་ངོས་གྲངས། - - - - + + + + + + SSD སྲ་དབྱིབས། - - + + HDD འཕྲུལ་ཆས། - + + bus info ཆ་སྐུད་ཆ་འཕྲིན། - + logicalsectorsize གཏན་ཚིགས་ཁུལ་དབྱེའི་ཆེ་ཆུང་། - + sectorsize གཡབ་ཁུལ་ཆེ་ཆུང་། - + guid ཁྱོན་ཡོངས་ཀྱི་མཚོན་རྟགས་གཅིག་པུ། - + Geometry (Logical) དབྱིབས་རྩིས་གཞི་གྲངས།(གཏན་ཚིགས།) - - + + Device Manager སྒྲིག་ཆས་དོ་དམ་ཆས། - + Device Manager is a handy tool for viewing hardware information and managing the devices. སྒྲིག་ཆས་དོ་དམ་ཆས་ནི་མཁྲེགས་ཆས་ལྟ་བ་དང་དོ་དམ་བྱེད་པའི་ཡོ་བྱད་ཅིག་རེད། - + New drivers available! Install or update them now. - + - + + View + + + + Include subfolders ཡིག་ཁུག་བུ་ཚུད་པ། - + Search for drivers in this path སྐུལ་བྱེད་གནས་ཡུལ་འདེམས་པ། - - - - Device Name - སྒྲིག་ཆས་མིང་། + + %1 driver updates available + - - Version Available - + + + Time checked: %1 + - - - Size - ཆེ་ཆུང་། + + Downloading drivers for %1... + - - - Status - ངང་ཚུལ། + + Download speed: %1 Downloaded %2/%3 + - - - Action - + + Installing drivers for %1... + - - New Version - + + %1 drivers installed, %2 drivers failed + - - Current Version - + + %1 drivers installed + - - Missing drivers (%1) - + + Failed to install drivers + - - Outdated drivers (%1) - + + Network error. Reconnecting... + - - Up-to-date drivers (%1) - + + Download speed: %1 + - - %1 driver updates available - + + Your drivers are up to date + - - - Time checked: %1 - + + All drivers have been backed up + - - Downloading drivers for %1... - + + + A total of %1 drivers, of which %2 have been backed up + - - Download speed: %1 Downloaded %2/%3 - + + You have %1 drivers that can be backed up, it is recommended to do so immediately + - - Installing drivers for %1... - + + You have %1 drivers that can be backed up + - - %1 drivers installed, %2 drivers failed - + + Backing up the %1 driver, a total of %2 drivers + - - %1 drivers installed - + + Backing up: %1 + - - Failed to install drivers - + + %1 drivers backed up, %2 drivers failed + - - Network error. Reconnecting... - + + Failed to backup drivers + - - Download speed: %1 - + + %1 drivers backed up + - - Your drivers are up to date - + + You have %1 drivers that can be restored + - + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot - + - + Please %1 for the installed drivers to take effect - + + + + + View backup path + + + + + Backup All + - - + + submit feedback - + - + Please try again or %1 to us - + - + Install All - + - - + + Scan Again - + - + Cancel འདོར་བ། - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable - + - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? - + - + + + Exit button - + - + + + Cancel button འདོར་བ། - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter - + - - + + Imaging device - + - + Display adapter - + - + Sound card - + - + Network adapter - + - + Wireless network adapter - + - + Installation successful - + - + Installation failed - + - + Downloading - + - + Installing - + - + Not installed - + - + Out-of-date - + - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error མ་ཤེས་པའི་ནོར་འཁྲུལ། - + Network error - + - + Canceled - + - + Failed to get driver files - + - + Update གསར་སྒྱུར། - + + Backup + + + + + Restore + + + + Install - + TableWidget - - + + Disable སྤྱོད་མི་ཆོག - + Refresh གསར་འཇུག - + Export ཕྱིར་འདྲེན། - + Update drivers སྐུལ་བྱེད་གསར་སྒྱུར། - + Uninstall drivers སྐུལ་བྱེད་བཤིག་པ། - + Allow it to wake the computer - + - - + + Enable འགོ་སློང་བ། @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh གསར་འཇུག - + Export ཕྱིར་འདྲེན། - + Copy པར་སློག - + Disable སྤྱོད་མི་ཆོག - + Unavailable སྤྱོད་མི་རུང་། @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please གནས་དེ་གའི་ཡིག་ཁུག་འདེམས་རོགས། @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... འཇུག་བཞིན་པ། - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_ca.ts b/deepin-devicemanager/translations/deepin-devicemanager_ca.ts index 1053b358e..78747fbd8 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_ca.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_ca.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + D'acord + + + + Feedback + + + + OK button D'acord @@ -11,7 +23,7 @@ CmdButtonWidget - + More Més @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Més - + Collapse Replega @@ -51,14 +63,14 @@ DetailTreeView - - + + More Més - - + + Collapse Replega @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Inhabilita - + Unavailable No disponible @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Nom del dispositiu - - + + Name Nom - - + + Vendor Proveïdor - - Model - Model + + Chip + Xip - - Version - Versió + + Capabilities + Capacitats - - Bus Info - Informació de Bus + + + Module Alias + Àlies del mòdul - - Chip - Xip + + + Physical ID + ID físic - - Capabilities - Capacitats + + SysFS_Path + - - Clock - Rellotge + + Description + Descripció + + + + Revision + - - Width - Amplada + + KernelModeDriver + - + Memory Address Adreça de la memòria - + IRQ IRQ - + Unavailable No disponible - + Disable Inhabilita @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nom - + Vendor Proveïdor - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Proveïdor - + Version Versió - + Chipset Conjunt de xips @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nom - + Vendor Proveïdor - + Version Versió - + Model Model - + + Module Alias + Àlies del mòdul + + + + Physical ID + ID físic + + + Speed Velocitat - + Maximum Power Energia màxima - + Driver Version Versió del controlador - + Driver Controlador - + Capabilities Capacitats - + Bus Info Informació de Bus - + Logical Name Nom lògic - + MAC Address Adreça MAC - + Unavailable No disponible - + Disable Inhabilita @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nom - + Vendor Proveïdor - + Model Model - + Version Versió - + Bus Info Informació de Bus - + Capabilities Capacitats - + Driver Controlador - + Maximum Power Energia màxima - + Speed Velocitat - + + Module Alias + Àlies del mòdul + + + + Physical ID + ID físic + + + Unavailable No disponible - + Disable Inhabilita @@ -322,7 +361,7 @@ DeviceComputer - + Name Nom @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nom - - + + Vendor Proveïdor - + CPU ID ID de CPU - + Core ID ID del nucli - + Threads Fils - - Current Speed - Velocitat actual - - - + BogoMIPS BogoMIPS - - + + Architecture Arquitectura - + CPU Family Família de la CPU - + Model Model - - + + Processor Processador - + Core(s) Nucli/s - + Virtualization Virtualització - + Flags Banderes - + Extensions Extensions - + L3 Cache Cau d'L3 - + L2 Cache Cau d'L2 - + L1i Cache Cau d'L1i - + L1d Cache Cau d'L1d - + Stepping Passos - + Speed Velocitat - + + + Max Speed Velocitat màxima @@ -447,132 +483,127 @@ DeviceGpu - + Name Nom - + Vendor Proveïdor - + Model Model - + Version Versió - + Graphics Memory Memòria gràfica - + + Module Alias + Àlies del mòdul + + + Physical ID ID físic - + Memory Address Adreça de la memòria - + IO Port Port d'E/S - + Bus Info Informació de Bus - + Maximum Resolution Resolució màxima - + Minimum Resolution Resolució mínima - + Current Resolution Resolució actual - + Driver Controlador - + Description Descripció - - Clock - Rellotge - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput Sortida digital - + Display Output Sortida de pantalla - + Capabilities Capacitats - + IRQ IRQ - - Width - Amplada - - - + Unavailable No disponible @@ -580,62 +611,72 @@ DeviceImage - + Name Nom - + Vendor Proveïdor - + Version Versió - + Model Model - + Bus Info Informació de Bus - + + Module Alias + Àlies del mòdul + + + + Physical ID + ID físic + + + Speed Velocitat - + Maximum Power Energia màxima - + Driver Controlador - + Capabilities Capacitats - + Serial Number Número de sèrie - + Unavailable No disponible - + Disable Inhabilita @@ -643,62 +684,72 @@ DeviceInput - + Name Nom - + Vendor Proveïdor - + Model Model - + Interface Interfície - + Bus Info Informació de Bus - + + Module Alias + Àlies del mòdul + + + + Physical ID + ID físic + + + Speed Velocitat - + Maximum Current Corrent màxima - + Driver Controlador - + Capabilities Capacitats - + Version Versió - + Unavailable No disponible - + Disable Inhabilita @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Resum - - - + + + CPU CPU - - + + CPU quantity Quantitat de CPU - - + + Motherboard Placa base - - + + Memory Memòria - - + + Display Adapter Adaptador de pantalla - - + + Sound Adapter Adaptador d'àudio - - + + Storage Emmagatzematge - - + + Other PCI Devices Altres dispositius de PCI - - + + Battery Bateria - - + + Bluetooth Bluetooth - - + + Network Adapter Adaptador de xarxa - - + + Mouse Ratolí - - + + Keyboard Teclat - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Impressora - - + + Camera Càmera - - + + Other Devices Other Input Devices Altres dispostius - - - + + + Device Dispositiu - - - + + + OS SO @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nom - - + + Vendor Proveïdor - - + + Size Mida - - + + Type Tipus - - + + Speed Velocitat - + Total Width Amplada total - + Locator Localitzador - + Serial Number Número de sèrie - + Configured Voltage Voltatge configurat - + Maximum Voltage Voltatge màxim - + Minimum Voltage Voltatge mínim - + Configured Speed Velocitat configurada - + Data Width Amplada de dades @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nom - + Vendor Proveïdor - + Type Tipus - + Display Input Entrada de pantalla - + Interface Type Tipus d'interfície - + Support Resolution Resolució admesa - + Current Resolution Resolució actual - + Display Ratio Taxa de pantalla - + Primary Monitor Monitor primari - + Size Mida - + Serial Number Número de sèrie - - - Product Date - Data del producte - DeviceNetwork - + + Name Nom - + + Vendor Proveïdor - + + Type Tipus - + Version Versió - + Bus Info Informació de Bus - + Capabilities Capacitats - + Driver Controlador - + Driver Version Versió del controlador - + + Module Alias + Àlies del mòdul + + + + Physical ID + ID físic + + + Maximum Rate Tarifa màxima - + Negotiation Rate Taxa de negociació - + Port Port - + Multicast Multidestinació - + Link Enllaç - + Latency Latència - + IP IP - + Firmware Microprogramari - + Duplex Dúplex - + Broadcast Difusió - + Auto Negotiation Negociació automàtica - - Clock - Rellotge - - - - Width - Amplada - - - + Memory Address Adreça de la memòria - + IRQ IRQ - + MAC Address Adreça MAC - + Logical Name Nom lògic - + Unavailable No disponible - + Disable Inhabilita @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nom - + Vendor Proveïdor - + Model Model - + Bus Info Informació de Bus - + Version Versió - + Input/Output Entrada / sortida - + Memory Memòria - + IRQ IRQ - + Latency Latència - - Clock - Rellotge - - - - Width - Amplada - - - + Driver Controlador - + Capabilities Capacitats @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nom - + Vendor Proveïdor - + Model Model - + Version Versió - + Bus Info Informació de Bus - + Capabilities Capacitats - + Driver Controlador - + Maximum Power Energia màxima - + Speed Velocitat - + Serial Number Número de sèrie - + Unavailable No disponible - + Disable Inhabilita @@ -1252,82 +1291,82 @@ DevicePower - + Name Nom - + Model Model - + Vendor Proveïdor - + Serial Number Número de sèrie - + Type Tipus - + Status Estat - + Capacity Capacitat - + Voltage Voltatge - + Slot Ranura - + Design Capacity Capacitat del disseny - + Design Voltage Voltatge del disseny - + SBDS Version Versió d'SBDS - + SBDS Serial Number Número de sèrie d'SBDS - + SBDS Manufacture Date Data de fabricació d'SBDS - + SBDS Chemistry Química d'SBDS - + Temperature Temperatura @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nom - + Model Model - + Vendor Proveïdor - + Serial Number Número de sèrie - + Shared Compartit/da - + URI URI - + Status Estat - + Interface Type Tipus d'interfície - + Disable Inhabilita @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Proveïdor - - + + Media Type Tipus de mitjà - - + + + Size Mida - + + + Name + Nom + + + Version Versió - + Capabilities Capacitats - + + + Module Alias + Àlies del mòdul + + + + + Physical ID + ID físic + + + Firmware Version Versió del microprogramari - + Speed Velocitat - + Description Descripció - + Serial Number Número de sèrie - + Interface Interfície - + Rotation Rate Taxa de rotació - + Unavailable No disponible @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Seleccioneu un controlador per actualitzar-lo - + No drivers found in this folder No s'ha trobat cap controlador en aquesta carpeta. @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Es carrega la informació del dispositiu d'àudio... - + Loading BIOS Info... Es carrega la informació del BIOS... - + Loading CD-ROM Info... Es carrega la informació del CD_ROM... - + Loading Operating System Info... Es carrega la informació del sistema operatiu... - + Loading CPU Info... Es carrega la informació de la CPU... - + Loading Other Devices Info... Es carrega la informació d'altres dispositius... - + Loading Power Info... Es carrega la informació d'energia... - + Loading Printer Info... Es carrega la informació de la impressora... - + Loading Mouse Info... Es carrega la informació del ratolí... - + Loading Network Adapter Info... Es carrega la informació de l'adaptador de xarxa... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Inhabilita - + Unavailable No disponible @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Inhabilita - + Unavailable No disponible @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Informació del dispositiu - + Display shortcuts Dreceres de pantalla - + Close Tanca - + Help Ajuda - + Copy Copia - + System Sistema - + Export Exporta - + Refresh Refresca - + Device Manager Gestor de dispositius - + Hardware Maquinari - + Drivers Controladors - + Monitor Monitor - + Overview Resum - + Display Adapter Adaptador de pantalla - + CPU CPU - + Network Adapter Adaptador de xarxa - + Battery Bateria @@ -1639,191 +1691,377 @@ PageDetail - + More Més + + PageDriverBackupInfo + + + + Name + Nom + + + + + Current Version + Versió actual + + + + + Driver Platform Version + + + + + Status + Estat + + + + Action + Acció + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating S'actualitza - - - + + + Cancel button Cancel·la - + Next Següent - + Warning Avís - + The device will be unavailable after the driver uninstallation El dispositiu no estarà disponible després de la desinstal·lació del controlador. - + Uninstall button Desinstal·la - + Uninstalling Es desinstal·la - + Update successful Actualització correcta - + Uninstallation successful Desinstal·lació correcta - + Update failed Ha fallat l'actualització. - + Uninstallation failed Ha fallat la desinstal·lació. - + OK button D'acord - + Next button Següent - + The selected folder does not exist, please select again La carpeta seleccionada no existeix, torneu a seleccionar-la. - + Update button Actualitza - + Previous button Anterior - + Broken package Paquet trencat - + Unmatched package architecture Arquitectura del paquet no coincident - - + + The selected file does not exist, please select again El fitxer seleccionat no existeix, torneu a seleccionar-lo. - + It is not a driver No és un controlador. - + Unable to install - no digital signature No es pot instal·lar: sense signatura digital - + Unknown error Error desconegut - + The driver module was not found No s'ha trobat el mòdul del controlador. - + Invalid module format El format del mòdul no és vàlid. - + The driver module has dependencies El mòdul del controlador té dependències. - PageListView + PageDriverInstallInfo - - Refresh - Refresca + + + + Device Name + Nom del dispositiu - + + Version Available + Versió disponible + + + + + Size + Mida + + + + + Status + Estat + + + + + Action + Acció + + + + New Version + Versió nova + + + + Current Version + Versió actual + + + + Missing drivers (%1) + Falten controladors (%1) + + + + Outdated drivers (%1) + Controladors obsolets (%1) + + + + Up-to-date drivers (%1) + Controladors actualitzats (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + D'acord + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nom + + + + Current Version + Versió actual + + + + Backup Version + + + + + Action + Acció + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Refresca + + + Export Exporta - + Overview Resum + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Ha fallat habilitar el dispositiu. - + Failed to disable the device Ha fallat inhabilitar el dispositiu. - + Failed to disable it: unable to get the device SN No s'ha pogut desactivar: no s'ha pogut obtenir l'SN del dispositiu. - + Update Drivers Actualitza els controladors - + Uninstall Drivers Desinstal·la controladors @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Refresca - + Export Exporta - + Copy Copia - + Overview Resum @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Refresca - + Export Exporta - + Copy Copia - - + + Enable Habilita - + Update drivers Actualitza els controladors - + Uninstall drivers Desinstal·la controladors - + Allow it to wake the computer Permeteu que activi l'ordinador. - + Disable Inhabilita - - + + Failed to disable it: unable to get the device SN No s'ha pogut desactivar: no s'ha pogut obtenir l'SN del dispositiu. - + Failed to disable the device Ha fallat inhabilitar el dispositiu. - + Failed to enable the device Ha fallat habilitar el dispositiu. - + Update Drivers Actualitza els controladors - + Uninstall Drivers Desinstal·la controladors @@ -1924,867 +2162,847 @@ QObject - + SubVendor Subproveïdor - + SubDevice Subdispositiu - + Driver Controlador - + Driver Status Estat del controlador - + Driver Activation Cmd CMD d'activació del controlador - - + - + + Config Status Estat de la configuració - - - - - - - physical id - id físic - - - + latency latència - + Phys Phys - + Sysfs Sysfs - + Handlers Gestors - - + + PROP PROP - - + + EV EV - - + + KEY CLAU - - Model - Model - - - - Vendor - Proveïdor - - - + Version Versió - - + + + Bus Bus - - + + BIOS Information Informació del BIOS - - + + Base Board Information Informació de la placa base - - + + System Information Informació del sistema - - + + Chassis Information Informació del xassís - - + + Physical Memory Array Matriu de memòria física - + Release Date Data de publicació - + Address Adreça - + Runtime Size Mida de la versió d'execució - + ROM Size Mida de ROM - + Characteristics Característiques - + BIOS Revision Revisió del BIOS - + Firmware Revision Revisió del microprogramari - - + + Product Name Nom del producte - - - + + + Serial Number Número de sèrie - - - + + + Asset Tag Etiqueta d’actiu - - + + Features Característiques - + Location In Chassis Ubicació al xassís - + Chassis Handle Nansa del xassís - - + + Type Tipus - + Contained Object Handles Gestió d'objectes continguts - - + + UUID UUID - + Wake-up Type Tipus de desvetllament - - + + SKU Number Número d'SKU - + Family Família - + Lock Bloqueig - + Boot-up State Estat de l'arrencada - + Power Supply State Estat del subministrament d'energia - + Thermal State Estat tèrmic - + Security Status Estat de la seguretat - + OEM Information Informació d'OEM - + Height Alçada - + Number Of Power Cords Nombre de cables d'energia - + Contained Elements Elements continguts - + Location Ubicació - + Error Correction Type Tipus de correcció d’error - + Maximum Capacity Capacitat màxima - - + + Error Information Handle Gestió d'informació d'error - + Number Of Devices Nombre de dispositius - + BIOS ROMSIZE MIDAROM DEL BIOS - + Release date Data de publicació - + Board name Nom de la placa - + SMBIOS Version Versió d'SMBIOS - + Language Description Format Format de la descripció de la llengua - + Installable Languages Llengües instal·lables - + Currently Installed Language Llengua instal·lada actualment - + BD Address Adreça BD - + ACL MTU MTU d'ACL - + SCO MTU MTU d'SCO - + Packet type Tipus de paquet - + Link policy Política d'enllaç - + Link mode Mode d'enllaç - - + + Class Classe - + Service Classes Classes de servei - + Device Class Classe del dispositiu - + HCI Version Versió d'HCI - + LMP Version Versió d'LMP - + Subversion Subversió - + Device Dispositiu - - + + Serial ID ID de sèrie - + product producte - + description descripció - + Powered Amb energia - + Discoverable Descobrible - + Pairable Aparellable - + Modalias Modalias - + Discovering Es descobreix - + Driver Modules Mòduls del controlador - - - + + + + + Device File Fitxer del dispositiu - + Device Files Fitxers del dispositiu - - + + + Device Number Número del dispositiu - - Module Alias - Àlies del mòdul - - - + Application Aplicació - + status estat - - + + + logical name nom lògic - - + + ansiversion versió d'ansi - + CPU implementer Implementador de CPU - + CPU architecture Arquitectura de CPU - + CPU variant Variant de CPU - + CPU part Part de CPU - + CPU revision Revisió de CPU - + One Un - + Two Dos - + Four Quatre - + Six Sis - + Eight Vuit - + Ten Deu - + Twelve Dotze - + Fourteen Catorze - + Sixteen Setze - + Eighteen Divuit - + Twenty Vint - + Twenty-two Vint-i-dos - + Twenty-four Vint-i-quatre - + Twenty-six Vint-i-sis - + Twenty-eight Vint-i-vuit - + Thirty Trenta - + Thirty-two Trenta-dos - + Thirty-four Trenta-quatre - + Thirty-six Trenta-sis - + Thirty-eight Trenta-vuit - + Forty Quaranta - + Forty-two Quaranta-dos - + Forty-four Quaranta-quatre - + Forty-six Quaranta-sis - + Forty-eight Quaranta-vuit - + Fifty Cinquanta - + Fifty-two Cinquanta-dos - + Fifty-four Cinquanta-quatre - + Fifty-six Cinquanta-sis - + Fifty-eight Cinquanta-vuit - + Sixty Seixanta - + Sixty-two Seixanta-dos - + Sixty-four Seixanta-quatre - + Sixty-six Seixanta-sis - + Sixty-eight Seixanta-vuit - + Seventy Setanta - + Seventy-two Setanta-dos - + Seventy-four Setanta-quatre - + Seventy-six Setanta-sis - + Seventy-eight Setanta-vuit - + Eighty Vuitanta - + Eighty-two Vuitanta-dos - + Eighty-four Vuitanta-quatre - + Eighty-six Vuitanta-sis - + Eighty-eight Vuitanta-vuit - + Ninety Noranta - + Ninety-two Noranta-dos - + Ninety-four Noranta-quatre - + Ninety-six Noranta-sis - + Ninety-eight Noranta-vuit - + One hundred Cent - + One hundred and Two Cent dos - + One hundred and four Cent quatre - + One hundred and Six Cent sis - + One hundred and Eight Cent vuit - + One hundred and Ten Cent deu - + One hundred and Twelve Cent dotze - + One hundred and Fourteen Cent catorze - + One hundred and Sixteen Cent setze - + One hundred and Eighteen Cent divuit - + One hundred and Twenty Cent vint - + One hundred and Twenty-two Cent vint-i-dos - + One hundred and Twenty-four Cent vint-i-quatre - + One hundred and Twenty-six Cent vint-i-sis - + One hundred and Twenty-eight Cent vint-i-vuit - + One hundred and Ninety-two Cent noranta-dos - + Two hundred and fifty-six Dos-cents cinquanta-sis @@ -2824,988 +3042,1084 @@ Versió de GLSL - - - + + + Unknown Desconegut - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Classe del maquinari - - - - + + + + CPU CPU - - - - + + + + No CPU found No s'ha trobat cap CPU. - - - - + + + + Motherboard Placa base - - - - + + + + No motherboard found No s'ha trobat cap placa base. - - - - + + + + Memory Memòria - - - - + + + + No memory found No s'ha trobat cap memòria. - - - - + + + + Storage Emmagatzematge - - - - + + + + No disk found No s'ha trobat cap disc. - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Adaptador de pantalla - - - - + + + + No GPU found No s'ha trobat cap GPU. - - - - + + + + Monitor Monitor - - - - + + + + No monitor found No s'ha trobat cap monitor. - - - - - + + + + + Network Adapter Adaptador de xarxa - - - - + + + + No network adapter found No s'ha trobat cap adaptador de xarxa. - - - - - + + + + + Sound Adapter Adaptador d'àudio - - - - + + + + No audio device found No s'ha trobat cap dispositiu d'àudio. - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found No s'ha trobat cap dispositiu de Bluetooth. - - - - + + + + Other PCI Devices Altres dispositius de PCI - - - - + + + + No other PCI devices found No s'ha trobat cap altre dispositiu de PCI. - - - - + + + + Power Energia - - - - + + + + No battery found No s'ha trobat cap bateria. - - - - - + + + + + Keyboard Teclat - - - - + + + + No keyboard found No s'ha trobat cap teclat. - - - - - + + + + + Mouse Ratolí - - - - + + + + No mouse found No s'ha trobat cap ratolí. - - - - - - + + + + + + Printer Impressora - - - - + + + + No printer found No s'ha trobat cap impressora. - - - - + + + + Camera Càmera - - - - + + + + No camera found No s'ha trobat cap càmera. - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found No s'ha trobat cap CD ROM. - - - - - + + + + + Other Devices Altres dispostius - - - - + + + + No other devices found No s'ha trobat cap altre dispositiu. - + Array Handle Gestió de matriu - + Form Factor Factor de forma - + Set Establiment - + Bank Locator Localitzador de bancs - + Type Detail Detall del tipus - + Part Number Número de part - + Rank Rang - + Memory Technology Tecnologia de memòria - + Memory Operating Mode Capability Capacitat del mode operatiu de memòria - + Firmware Version Versió del microprogramari - + Module Manufacturer ID ID del fabricant del mòdul - + Module Product ID ID del producte del mòdul - + Memory Subsystem Controller Manufacturer ID ID del fabricant del controlador del subsistema de memòria - + Memory Subsystem Controller Product ID ID del producte del controlador del susbsistema de memòria - + Non-Volatile Size Mida no volàtil - + Volatile Size Mida volàtil - + Cache Size Mida de la cau - + Logical Size Mida lògica - - - - - + + + + + inch polzada/es - + Date Data - + ioport ioport - + network xarxa - - + battery bateria - + native-path camí nadiu - + power supply font d'energia - + updated actualitzat - + has history té historial - + has statistics té estadístiques - + rechargeable recarregable - + state estat - + warning-level nivell d'avís - + energy energia - + energy-empty energia buida - + energy-full energia-completa - + energy-full-design energia-disseny-complet - + energy-rate taxa d'energia - + voltage voltatge - + percentage percentatge - + technology tecnologia - + icon-name nom de la icona - + online en línia - + daemon-version versió-dimoni - + on-battery amb-bateria - + lid-is-closed tapa-tancada - + lid-is-present tapa-present - + critical-action acció-crítica - + copies còpies - + job-cancel-after tasca-cancel·la-després - + job-hold-until tasca-retinguda-fins - + job-priority prioritat-tasca - + marker-change-time hora-canvi-fabricant - + number-up número-amunt - + orientation-requested orientació-demanada - + print-color-mode mode-impressió-color - + printer-is-accepting-jobs impressora-accepta-tasques - + printer-is-shared impressora-compartida - + printer-is-temporary impressora-temporal - + printer-make-and-model fabricant i model de la impressora - + printer-state-change-time hora-canvi-estat-impressora - + printer-state-reasons raons-estat-impressora - + printer-type tipus-impressora - + printer-uri-supported uri-impressora-admès - + sides costats - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info info de bus - + logicalsectorsize mida de sector lògic - + sectorsize mida de sector - + guid guid - + Geometry (Logical) Geometria (Lògica) - - + + Device Manager Gestor de dispositius - + Device Manager is a handy tool for viewing hardware information and managing the devices. El Gestor de dispositius és una eina pràctica per veure la informació del maquinari i gestionar els dispositius. - + New drivers available! Install or update them now. Nous controladors disponibles! Instal·leu-los o actualitzeu-los ara. - + + View + + + + Include subfolders Inclou subcarpetes - + Search for drivers in this path Cerca controladors en aquest camí - - - - Device Name - Nom del dispositiu - - - - Version Available - Versió disponible - - - - - Size - Mida - - - - - Status - Estat - - - - - Action - Acció - - - - New Version - Versió nova - - - - Current Version - Versió actual - - - - Missing drivers (%1) - Falten controladors (%1) - - - - Outdated drivers (%1) - Controladors obsolets (%1) - - - - Up-to-date drivers (%1) - Controladors actualitzats (%1) - - - + %1 driver updates available %1 actualitzacions de controladors disponibles - - + + Time checked: %1 Hora de la comprovació: %1 - + Downloading drivers for %1... Es baixen els controladors per a %1... - + Download speed: %1 Downloaded %2/%3 Velocitat de baixada: %1 Baixat: %2 / %3 - + Installing drivers for %1... S'instal·len els controladors per a %1... - + %1 drivers installed, %2 drivers failed %1 controladors instal·lats, %2 controladors han fallat - + %1 drivers installed %1 controladors instal·lats - + Failed to install drivers Ha fallat instal·lar els controladors. - + Network error. Reconnecting... Error de xarxa. Es torna a connectar... - + Download speed: %1 Velocitat de baixada: %1 - + Your drivers are up to date Els controladors estan actualitzats. - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot reinicieu - + Please %1 for the installed drivers to take effect Si us plau, %1 perquè els controladors instal·lats tinguin efecte. - - + + View backup path + + + + + Backup All + + + + + submit feedback envieu comentaris - + Please try again or %1 to us Si us plau, torneu-ho a provar o %1. - + Install All Instal·la-ho tot - - + + Scan Again Torna a escanejar - + Cancel Cancel·la - + Scanning hardware device drivers, please wait... S'escanegen els controladors de dispositius de maquinari, espereu... - - + + Scanning %1 S'escaneja %1 - + Scan failed Ha fallat l'escaneig. - + Network unavailable Xarxa no disponible - + Please check your network connection Si us plau, comproveu la connexió de xarxa. - + Please scan again or %1 to us Si us plau, torneu a escanejar o %1. - + You are installing a driver, which will be interrupted if you exit. S'instal·la un controlador, i s'interromprà si en sortiu. - + + + Are you sure you want to exit? Segur que en voleu sortir? - + + + Exit button Surt - + + + Cancel button Cancel·la - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Adaptador de Bluetooth - - + + Imaging device Dispositiu d'imatge - + Display adapter Adaptador de pantalla - + Sound card Targeta de so - + Network adapter Adaptador de xarxa - + Wireless network adapter Adaptador de xarxa sense fil - + Installation successful Instal·lació correcta - + Installation failed Ha fallat la instal·lació. - + Downloading Es baixa - + Installing Instal·lació - + Not installed No instal·lat - + Out-of-date No actualitzat - + Waiting S'espera - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Error desconegut - + Network error Error de xarxa - + Canceled Cancel·lat - + Failed to get driver files No s'han pogut obtenir els fitxers del controlador. - + Update Actualitza - + + Backup + + + + + Restore + + + + Install Instal·la @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Inhabilita - + Refresh Refresca - + Export Exporta - + Update drivers Actualitza els controladors - + Uninstall drivers Desinstal·la controladors - + Allow it to wake the computer Permeteu que activi l'ordinador. - - + + Enable Habilita @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Refresca - + Export Exporta - + Copy Copia - + Disable Inhabilita - + Unavailable No disponible @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Seleccioneu una carpeta local, si us plau. @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Es carrega... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_cs.ts b/deepin-devicemanager/translations/deepin-devicemanager_cs.ts index 67b12fec3..3b75e7a86 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_cs.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_cs.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Další @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More Více - + Collapse Sbalit @@ -51,14 +63,14 @@ DetailTreeView - - + + More Další - - + + Collapse Sbalit @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Vypnout - + Unavailable Nedostupný @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Název zařízení - - + + Name Název - - + + Vendor Výrobce - - Model - Model + + Chip + Čip - - Version - Verze + + Capabilities + Schopnosti - - Bus Info - Informace o sběrnici + + + Module Alias + Alternativní název modulu - - Chip - Čip + + + Physical ID + Fyzický identif. - - Capabilities - Schopnosti + + SysFS_Path + - - Clock - Takt + + Description + Popis + + + + Revision + - - Width - Šířka + + KernelModeDriver + - + Memory Address Adresa v paměti - + IRQ Přerušení (IRQ) - + Unavailable Nedostupný - + Disable Vypnout @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Název - + Vendor Výrobce - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Výrobce - + Version Verze - + Chipset Čipová sada @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Název - + Vendor Výrobce - + Version Verze - + Model Model - + + Module Alias + Alternativní název modulu + + + + Physical ID + Fyzický identif. + + + Speed Rychlost - + Maximum Power Nejvyšší odběr - + Driver Version Verze ovladače - + Driver Ovladač - + Capabilities Schopnosti - + Bus Info Informace o sběrnici - + Logical Name Logický název - + MAC Address MAC adresa - + Unavailable Nedostupný - + Disable Vypnout @@ -264,57 +293,67 @@ DeviceCdrom - + Name Název - + Vendor Výrobce - + Model Model - + Version Verze - + Bus Info Informace o sběrnici - + Capabilities Schopnosti - + Driver Ovladač - + Maximum Power Nejvyšší odběr - + Speed Rychlost - + + Module Alias + Alternativní název modulu + + + + Physical ID + Fyzický identif. + + + Unavailable Nedostupný - + Disable Vypnout @@ -322,7 +361,7 @@ DeviceComputer - + Name Název @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Název - - + + Vendor Výrobce - + CPU ID Identif. procesoru - + Core ID Identifikátor jádra - + Threads Vláken - - Current Speed - Stávající frekvence - - - + BogoMIPS BogoMIPS - - + + Architecture Architektura - + CPU Family Generace procesoru - + Model Model - - + + Processor Procesor - + Core(s) Jader - + Virtualization Virtualizace - + Flags Výčet rozšíření instrukční sady procesoru - + Extensions Rozšíření - + L3 Cache Mezipaměť 3. úrovně - + L2 Cache Mezipaměť 2. úrovně - + L1i Cache Mezipaměť 1. úrovně (instrukční) - + L1d Cache Mezipaměť 1. úrovně (datová) - + Stepping Číslo revize - + Speed Rychlost - + + + Max Speed Nejvyšší frekvence @@ -447,132 +483,127 @@ DeviceGpu - + Name Název - + Vendor Výrobce - + Model Model - + Version Verze - + Graphics Memory Paměť pro grafiku - + + Module Alias + Alternativní název modulu + + + Physical ID Fyzický identif. - + Memory Address Adresa v paměti - + IO Port Vst./výstup. port - + Bus Info Informace o sběrnici - + Maximum Resolution Nejvyšší možné rozlišení - + Minimum Resolution Nejnižší možné rozlišení - + Current Resolution Stávající rozlišení - + Driver Ovladač - + Description Popis - - Clock - Takt - - - + DP DP - + eDP vnitřní DP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output Výstup zobrazení - + Capabilities Schopnosti - + IRQ Přerušení (IRQ) - - Width - Šířka - - - + Unavailable Nedostupný @@ -580,62 +611,72 @@ DeviceImage - + Name Název - + Vendor Výrobce - + Version Verze - + Model Model - + Bus Info Informace o sběrnici - + + Module Alias + Alternativní název modulu + + + + Physical ID + Fyzický identif. + + + Speed Rychlost - + Maximum Power Nejvyšší odběr - + Driver Ovladač - + Capabilities Schopnosti - + Serial Number Sériové číslo - + Unavailable Nedostupný - + Disable Vypnout @@ -643,62 +684,72 @@ DeviceInput - + Name Název - + Vendor Výrobce - + Model Model - + Interface Rozhraní - + Bus Info Informace o sběrnici - + + Module Alias + Alternativní název modulu + + + + Physical ID + Fyzický identif. + + + Speed Rychlost - + Maximum Current Nejvyšší napájecí proud - + Driver Ovladač - + Capabilities Schopnosti - + Version Verze - + Unavailable Nedostupný - + Disable Vypnout @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Přehled - - - + + + CPU Procesor - - + + CPU quantity Počet procesorů - - + + Motherboard Základní deska - - + + Memory Operační paměť - - + + Display Adapter Zobrazovací adaptér - - + + Sound Adapter Zvukový adaptér - - + + Storage Úložiště - - + + Other PCI Devices Ostatní PCI zařízení - - + + Battery Akumulátor - - + + Bluetooth Bluetooth - - + + Network Adapter Síťový adaptér - - + + Mouse Myš - - + + Keyboard Klávesnice - - + + Monitor Monitor - - + + CD-ROM Jednotka optických médií - - + + Printer Tiskárna - - + + Camera Kamera - - + + Other Devices Other Input Devices Ostatní zařízení - - - + + + Device Zařízení - - - + + + OS Operační systém @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Název - - + + Vendor Výrobce - - + + Size Velikost - - + + Type Typ - - + + Speed Rychlost - + Total Width Celková šíře - + Locator Slot paměti - + Serial Number Sériové číslo - + Configured Voltage Nastavené napětí - + Maximum Voltage Nejvyšší napájecí napětí - + Minimum Voltage Nejnižší napájecí napětí - + Configured Speed Nastavená rychlost - + Data Width Datová šířka @@ -920,200 +971,198 @@ DeviceMonitor - + Name Název - + Vendor Výrobce - + Type Typ - + Display Input Vstup zobrazení - + Interface Type Typ rozhraní - + Support Resolution Podpora rozlišení - + Current Resolution Stávající rozlišení - + Display Ratio Poměr stran zobrazení - + Primary Monitor Hlavní monitor - + Size Velikost - + Serial Number Sériové číslo - - - Product Date - Datum produktu - DeviceNetwork - + + Name Název - + + Vendor Výrobce - + + Type Typ - + Version Verze - + Bus Info Informace o sběrnici - + Capabilities Schopnosti - + Driver Ovladač - + Driver Version Verze ovladače - + + Module Alias + Alternativní název modulu + + + + Physical ID + Fyzický identif. + + + Maximum Rate Nejvyšší možná rychlost přenosu - + Negotiation Rate Dojednaná rychlost - + Port Port - + Multicast Vícesměrové vysílání - + Link Spojení - + Latency Prodleva - + IP IP adresa - + Firmware Firmware - + Duplex Naráz oběma směry (duplex) - + Broadcast Všesměrové vysílání - + Auto Negotiation Automatické vyjednávání - - Clock - Takt - - - - Width - Šířka - - - + Memory Address Adresa v paměti - + IRQ Přerušení (IRQ) - + MAC Address MAC adresa - + Logical Name Logický svazek - + Unavailable Nedostupný - + Disable Vypnout @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Název - + Vendor Výrobce - + Model Model - + Bus Info Informace o sběrnici - + Version Verze - + Input/Output Vstup/výstup - + Memory Operační paměť - + IRQ Přerušení (IRQ) - + Latency Prodleva - - Clock - Takt - - - - Width - Šířka - - - + Driver Ovladač - + Capabilities Schopnosti @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Název - + Vendor Výrobce - + Model Model - + Version Verze - + Bus Info Informace o sběrnici - + Capabilities Schopnosti - + Driver Ovladač - + Maximum Power Nejvyšší odběr - + Speed Rychlost - + Serial Number Sériové číslo - + Unavailable Nedostupný - + Disable Vypnout @@ -1252,82 +1291,82 @@ DevicePower - + Name Název - + Model Model - + Vendor Výrobce - + Serial Number Sériové číslo - + Type Typ - + Status Stav - + Capacity Kapacita - + Voltage Napětí - + Slot Slot - + Design Capacity Kapacita z výroby - + Design Voltage Napětí z výroby - + SBDS Version Verze SBDS údajů - + SBDS Serial Number Sériové číslo ze SBDS údajů - + SBDS Manufacture Date Datum výroby z SBDS údajů - + SBDS Chemistry Chemické složení z SBDS údajů - + Temperature Teplota @@ -1335,47 +1374,47 @@ DevicePrint - + Name Název - + Model Model - + Vendor Výrobce - + Serial Number Sériové číslo - + Shared Sdílená - + URI URI - + Status Stav - + Interface Type Typ rozhraní - + Disable Vypnout @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Výrobce - - + + Media Type Typ média - - + + + Size Velikost - + + + Name + Název + + + Version Verze - + Capabilities Schopnosti - + + + Module Alias + Alternativní název modulu + + + + + Physical ID + Fyzický identif. + + + Firmware Version Verze firmware - + Speed Rychlost - + Description Popis - + Serial Number Sériové číslo - + Interface Rozhraní - + Rotation Rate Otáčky - + Unavailable Nedostupný @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Vyberte ovladač k aktualizaci - + No drivers found in this folder V této složce nebyly nalezeny žádné ovladače @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Načítání informací o zvukovém zařízení… - + Loading BIOS Info... Načítání informací o BIOS/UEFI… - + Loading CD-ROM Info... Načítání informací o jednotce optických disků… - + Loading Operating System Info... Načítání informací o operačním systému… - + Loading CPU Info... Načítání informací o procesoru… - + Loading Other Devices Info... Načítání informací o ostatních zařízeních… - + Loading Power Info... Načítání informací o napájení… - + Loading Printer Info... Načítání informací o tiskárně… - + Loading Mouse Info... Načítání informací o myši… - + Loading Network Adapter Info... Načítání informací o síťovém adaptéru… @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Vypnout - + Unavailable Nedostupný @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Vypnout - + Unavailable Nedostupný @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Informace o zařízení - + Display shortcuts Zobrazit zkratky - + Close Zavřít - + Help Nápověda - + Copy Zkopírovat - + System Systém - + Export Exportovat - + Refresh Načíst znovu - + Device Manager Správa zařízení - + Hardware - + - + Drivers - + - + Monitor Monitor - + Overview Přehled - + Display Adapter Zobrazovací adaptér - + CPU Procesor - + Network Adapter Síťový adaptér - + Battery Akumulátor @@ -1639,191 +1691,377 @@ PageDetail - + More Další + + PageDriverBackupInfo + + + + Name + Název + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + Stav + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Aktualizace - - - + + + Cancel button Zrušit - + Next Další - + Warning Varování - + The device will be unavailable after the driver uninstallation Pokud bude ovladač odinstalován, zařízení nebude k dispozici - + Uninstall button Odinstalovat - + Uninstalling Odinstalování - + Update successful Podařilo se aktualizovat - + Uninstallation successful Podařilo se odinstalovat - + Update failed Nepodařilo se aktualizovat - + Uninstallation failed Nepodařilo se odinstalovat - + OK button OK - + Next button Další - + The selected folder does not exist, please select again Zvolená složka neexistuje, vyberte znovu - + Update button Aktualizovat - + Previous button Předchozí - + Broken package Poškozený balíček - + Unmatched package architecture Architektura balíčku neodpovídá - - + + The selected file does not exist, please select again Zvolený soubor neexistuje, vyberte znovu - + It is not a driver Toto není ovladač - + Unable to install - no digital signature Není možné nainstalovat – chybí digitální podpis - + Unknown error Neznámá chyba - + The driver module was not found Modul ovladače nebyl nalezen - + Invalid module format Neplatný formát modulu - + The driver module has dependencies Modul ovladače má závislosti - PageListView + PageDriverInstallInfo - - Refresh - Načíst znovu + + + + Device Name + Název zařízení - + + Version Available + + + + + + Size + Velikost + + + + + Status + Stav + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Název + + + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Načíst znovu + + + Export Exportovat - + Overview Přehled + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Zařízení se nepodařilo zapnout - + Failed to disable the device Zařízení se nepodařilo vypnout - + Failed to disable it: unable to get the device SN Nepodařilo se zakázat: nedaří se získat sériové číslo zařízení - + Update Drivers Aktualizovat ovladače - + Uninstall Drivers Odinstalovat ovladače @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Načíst znovu - + Export Exportovat - + Copy Zkopírovat - + Overview Přehled @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Načíst znovu - + Export Exportovat - + Copy Zkopírovat - - + + Enable Zapnout - + Update drivers Aktualizovat ovladače - + Uninstall drivers Odinstalovat ovladače - + Allow it to wake the computer Umožnit probouzet počítač - + Disable Vypnout - - + + Failed to disable it: unable to get the device SN Nepodařilo se zakázat: nedaří se získat sériové číslo zařízení - + Failed to disable the device Zařízení se nepodařilo vypnout - + Failed to enable the device Zařízení se nepodařilo zapnout - + Update Drivers Aktualizovat ovladače - + Uninstall Drivers Odinstalovat ovladače @@ -1924,867 +2162,847 @@ QObject - + SubVendor Dílčí výrobce - + SubDevice Dílčí zařízení - + Driver Ovladač - + Driver Status Stav ovladače - + Driver Activation Cmd Příkaz pro aktivaci ovladače - - + - + + Config Status Stav nastavení - - - - - - - physical id - fyzický identif. - - - + latency prodleva - + Phys Fyz - + Sysfs Sysfs - + Handlers Identif. záznamů - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Model - - - - Vendor - Výrobce - - - + Version Verze - - + + + Bus Sběrnice - - + + BIOS Information Informace o BIOS/UEFI - - + + Base Board Information Informace o základní desce - - + + System Information Informace o systému - - + + Chassis Information Informace o šasi počítače - - + + Physical Memory Array Pole fyzické paměti - + Release Date Datum vydání - + Address Adresa - + Runtime Size Velikost běhového prostředí - + ROM Size Velikost ROM - + Characteristics Charakteristiky - + BIOS Revision Revize BIOS/UEFI - + Firmware Revision Revize firmware - - + + Product Name Název produktu - - - + + + Serial Number Sériové číslo - - - + + + Asset Tag Inventární štítek - - + + Features Funkce - + Location In Chassis Umístění v šasi počítače - + Chassis Handle Identif. záznamu pro šasi - - + + Type Typ - + Contained Object Handles Identif. záznamů pro obsažená zařízení - - + + UUID Nikde se neopakující identif. - + Wake-up Type Typ probouzení - - + + SKU Number Skladové číslo - + Family Generace - + Lock Zámek - + Boot-up State Stav startu systému - + Power Supply State Stav napájecího zdroje - + Thermal State Teplotní stav - + Security Status Stav zabezpečení - + OEM Information OEM informace - + Height Výška - + Number Of Power Cords Počet napájecích kabelů - + Contained Elements Obsažené prvky - + Location Umístění - + Error Correction Type Typ oprav chyb - + Maximum Capacity Nejvyšší možná kapacita - - + + Error Information Handle Identif. záznamu informací o chybě - + Number Of Devices Počet zařízení - + BIOS ROMSIZE VELIKOST UEFI/BIOS ROM - + Release date Datum vydání - + Board name Název desky - + SMBIOS Version Verze SMBIOS - + Language Description Format Formát popisu jazyka - + Installable Languages Jazyky, které je možné nainstalovat - + Currently Installed Language Nyní nainstalované jazyky - + BD Address Adresa BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Typ paketu - + Link policy Zásada linky - + Link mode Režim linky - - + + Class Třída - + Service Classes Třídy služby - + Device Class Třída zařízení - + HCI Version verze HCI rozhraní - + LMP Version Verze LMP - + Subversion Podverze - + Device Zařízení - - + + Serial ID Identifikační sériové číslo - + product produkt - + description popis - + Powered Napájeno - + Discoverable Objevitelné - + Pairable Možné spárovat - + Modalias Alternativní název modulu - + Discovering Objevování - + Driver Modules Moduly ovladače - - - + + + + + Device File Soubor zařízení - + Device Files Soubory zařízení - - + + + Device Number Číslo zařízení - - Module Alias - Alternativní název modulu - - - + Application Aplikace - + status stav - - + + + logical name logický název - - + + ansiversion ansi verze - + CPU implementer Implementátor procesoru - + CPU architecture Architektura procesoru - + CPU variant Varianta procesoru - + CPU part Část procesoru - + CPU revision Revize procesoru - + One Jeden - + Two Dva - + Four Čtyři - + Six Šest - + Eight Osm - + Ten Deset - + Twelve Dvanáct - + Fourteen Čtrnáct - + Sixteen Šestnáct - + Eighteen Osmnáct - + Twenty Dvacet - + Twenty-two Dvacet dva - + Twenty-four Dvacet čtyři - + Twenty-six Dvacet šest - + Twenty-eight Dvacet osm - + Thirty Třicet - + Thirty-two Třicet dva - + Thirty-four Třicet čtyři - + Thirty-six Třicet šest - + Thirty-eight Třicet osm - + Forty Čtyřicet - + Forty-two Čtyřicet dva - + Forty-four Čtyřicet čtyři - + Forty-six Čtyřicet šest - + Forty-eight Čtyřicet osm - + Fifty Padesát - + Fifty-two Padesát dva - + Fifty-four Padesát čtyři - + Fifty-six Padesát šest - + Fifty-eight Padesát osm - + Sixty Šedesát - + Sixty-two Šedesát dva - + Sixty-four Šedesát čtyři - + Sixty-six Šedesát šest - + Sixty-eight Šedesát osm - + Seventy Sedmdesát - + Seventy-two Sedmdesát dva - + Seventy-four Sedmdesát čtyři - + Seventy-six Sedmdesát šest - + Seventy-eight Sedmdesát osm - + Eighty Osmdesát - + Eighty-two Osmdesát dva - + Eighty-four Devadesát čtyři - + Eighty-six Osmdesát šest - + Eighty-eight Osmdesát osm - + Ninety Devadesát - + Ninety-two Devadesát dva - + Ninety-four Devadesát čtyři - + Ninety-six Devadesát šest - + Ninety-eight Devadesát osm - + One hundred Jedno sto - + One hundred and Two Jedno sto a dva - + One hundred and four Jedno sto a čtyři - + One hundred and Six Jedno sto a šest - + One hundred and Eight Jedno sto a osm - + One hundred and Ten Jedno sto a deset - + One hundred and Twelve Jedno sto a dvanáct - + One hundred and Fourteen Jedno sto a čtrnáct - + One hundred and Sixteen Jedno sto a šestnáct - + One hundred and Eighteen Jedno sto a osmdesát - + One hundred and Twenty Jedno sto a dvacet - + One hundred and Twenty-two Jedno sto a dvacet dva - + One hundred and Twenty-four Jedno sto a dvacet čtyři - + One hundred and Twenty-six Jedno sto a dvacet šest - + One hundred and Twenty-eight Jedno sto a dvacet osm - + One hundred and Ninety-two Jedno sto a devadesát dva - + Two hundred and fifty-six Dvě stě a padesát šest @@ -2824,1028 +3042,1124 @@ Verze GLSL - - - + + + Unknown Neznámé - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Třída hardware - - - - + + + + CPU Procesor - - - - + + + + No CPU found Nenalezen žádný procesor - - - - + + + + Motherboard Základní deska - - - - + + + + No motherboard found Nenalezena žádná základní deska - - - - + + + + Memory Operační paměť - - - - + + + + No memory found Nenalezena žádná operační paměť - - - - + + + + Storage Úložiště - - - - + + + + No disk found Nenalezen žádný disk - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Zobrazovací adaptér - - - - + + + + No GPU found Nenalezen grafický čip - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Nenalezen žádný monitor - - - - - + + + + + Network Adapter Síťový adaptér - - - - + + + + No network adapter found Nenalezen žádný síťový adaptér - - - - - + + + + + Sound Adapter Zvukový adaptér - - - - + + + + No audio device found Nenalezeno žádné zvukové zařízení - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Nenalezena žádná Bluetooth zařízení - - - - + + + + Other PCI Devices Ostatní PCI zařízení - - - - + + + + No other PCI devices found Nenalezena žádná další PCI zařízení - - - - + + + + Power Napájení - - - - + + + + No battery found Nenalezen žádný akumulátor - - - - - + + + + + Keyboard Klávesnice - - - - + + + + No keyboard found Nenalezena žádná klávesnice - - - - - + + + + + Mouse Myš - - - - + + + + No mouse found Nenalezena žádná myš - - - - - - + + + + + + Printer Tiskárna - - - - + + + + No printer found Nenalezena žádná tiskárna - - - - + + + + Camera Kamera - - - - + + + + No camera found Nenalezena žádná kamera - - - - + + + + CD-ROM Jednotka optických médií - - - - + + + + No CD-ROM found Nenalezena žádná jednotka optických disků - - - - - + + + + + Other Devices Ostatní zařízení - - - - + + + + No other devices found Nenalezena žádná další zařízení - + Array Handle Identif. záznamu pro pole - + Form Factor Fyzická podoba - + Set Sada - + Bank Locator Lokátor paměťové banky - + Type Detail Podrobnosti o typu - + Part Number Katalogové číslo - + Rank Naráz přistupovaných čipů (rank) - + Memory Technology Technologie paměti - + Memory Operating Mode Capability Schopnost režimu fungování oper. paměti - + Firmware Version Verze firmware - + Module Manufacturer ID Identif. výrobce modulu - + Module Product ID Produktový identif. modulu - + Memory Subsystem Controller Manufacturer ID Identif. výrobce řadiče paměťového podsystému - + Memory Subsystem Controller Product ID Produktový identif. řadiče paměťového podsystému - + Non-Volatile Size Neměnná velikost - + Volatile Size Proměnlivá velikost - + Cache Size Velikost mezipaměti - + Logical Size Logická velikost - - - - - + + + + + inch palců - + Date Datum - + ioport vst/výstupní port - + network síť - - + battery akumulátor - + native-path native-path - + power supply napájecí zdroj - + updated aktualizováno - + has history má historii - + has statistics má statistiky - + rechargeable nabíjecí - + state stav - + warning-level úroveň varování - + energy energie - + energy-empty energie při vybití - + energy-full energie při plném nabití - + energy-full-design energie při plném nabití z výroby - + energy-rate intenzita vybíjení - + voltage napětí - + percentage procento - + technology technologie - + icon-name název ikony - + online napájeno z elektrické sítě - + daemon-version verze procesu služby - + on-battery z akumulátoru - + lid-is-closed obrazovka je přiklopená - + lid-is-present má přiklápětelnou obrazovku - + critical-action akce při kritické úrovni - + copies kopií - + job-cancel-after zrušení úlohy po uplynutí - + job-hold-until pozdržet úlohu do - + job-priority priorita úlohy - + marker-change-time marker-change-time - + number-up stránek na list - + orientation-requested požadovaná orientace - + print-color-mode režim tisku barev - + printer-is-accepting-jobs tiskárna přijímá úlohy - + printer-is-shared tiskárna je sdílená - + printer-is-temporary tiskárna je dočasná - + printer-make-and-model výrobce a model tiskárny - + printer-state-change-time okamžik změny stavu tiskárny - + printer-state-reasons důvod stavu tiskárny - + printer-type typ tiskárny - + printer-uri-supported printer-uri-supported - + sides stran - - - - + + + + + + SSD Úložiště bez pohyblivých součástek (SSD) - - + + HDD Pevný disk (HDD) - + + bus info informace o sběrnici - + logicalsectorsize velikost logického sektoru - + sectorsize velikost sektoru - + guid globálně se neopakující identif. - + Geometry (Logical) Geometrie (logická) - - + + Device Manager Správa zařízení - + Device Manager is a handy tool for viewing hardware information and managing the devices. Správa zařízení je užitečný nástroj pro zobrazování informací o hardware a správu zařízení. - + New drivers available! Install or update them now. - + + + + + View + - + Include subfolders Zahrnout podsložky - + Search for drivers in this path Ovladače hledat v této cestě - - - - Device Name - Název zařízení + + %1 driver updates available + - - Version Available - + + + Time checked: %1 + - - - Size - Velikost + + Downloading drivers for %1... + - - - Status - Stav + + Download speed: %1 Downloaded %2/%3 + - - - Action - + + Installing drivers for %1... + - - New Version - + + %1 drivers installed, %2 drivers failed + - - Current Version - + + %1 drivers installed + - - Missing drivers (%1) - + + Failed to install drivers + - - Outdated drivers (%1) - + + Network error. Reconnecting... + - - Up-to-date drivers (%1) - + + Download speed: %1 + - - %1 driver updates available - + + Your drivers are up to date + - - - Time checked: %1 - + + All drivers have been backed up + - - Downloading drivers for %1... - + + + A total of %1 drivers, of which %2 have been backed up + - - Download speed: %1 Downloaded %2/%3 - + + You have %1 drivers that can be backed up, it is recommended to do so immediately + - - Installing drivers for %1... - + + You have %1 drivers that can be backed up + - - %1 drivers installed, %2 drivers failed - + + Backing up the %1 driver, a total of %2 drivers + - - %1 drivers installed - + + Backing up: %1 + - - Failed to install drivers - + + %1 drivers backed up, %2 drivers failed + - - Network error. Reconnecting... - + + Failed to backup drivers + - - Download speed: %1 - + + %1 drivers backed up + - - Your drivers are up to date - + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + - + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot - + - + Please %1 for the installed drivers to take effect - + + + + + View backup path + - - + + Backup All + + + + + submit feedback - + - + Please try again or %1 to us - + - + Install All - + - - + + Scan Again - + - + Cancel Storno - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable - + - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? - + - + + + Exit button - + - + + + Cancel button Storno - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter - + - - + + Imaging device - + - + Display adapter - + - + Sound card - + - + Network adapter - + - + Wireless network adapter - + - + Installation successful - + - + Installation failed - + - + Downloading - + - + Installing - + - + Not installed - + - + Out-of-date - + - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error Neznámá chyba - + Network error - + - + Canceled - + - + Failed to get driver files - + - + Update Aktualizovat - + + Backup + + + + + Restore + + + + Install - + TableWidget - - + + Disable Vypnout - + Refresh Načíst znovu - + Export Exportovat - + Update drivers Aktualizovat ovladače - + Uninstall drivers Odinstalovat ovladače - + Allow it to wake the computer Umožnit probouzet počítač - - + + Enable Zapnout @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Načíst znovu - + Export Exportovat - + Copy Zkopírovat - + Disable Vypnout - + Unavailable Nedostupný @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Vyberte, prosím, místní složku @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Načítání… - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_de.ts b/deepin-devicemanager/translations/deepin-devicemanager_de.ts index d2e67dcd5..88b04a25d 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_de.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_de.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Mehr @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More Mehr - + Collapse Einklappen @@ -51,14 +63,14 @@ DetailTreeView - - + + More Mehr - - + + Collapse Einklappen @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Deaktivieren - + Unavailable Nicht verfügbar @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Gerätename - - + + Name Name - - + + Vendor Anbieter - - Model - Modell + + Chip + Chip - - Version - Version + + Capabilities + Fähigkeiten - - Bus Info - Bus-Info + + + Module Alias + - - Chip - Chip + + + Physical ID + Physische ID - - Capabilities - Fähigkeiten + + SysFS_Path + - - Clock - Taktfrequenz + + Description + Beschreibung + + + + Revision + - - Width - Breite + + KernelModeDriver + - + Memory Address Speicheradresse - + IRQ IRQ - + Unavailable Nicht verfügbar - + Disable Deaktivieren @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Name - + Vendor Anbieter - + Model Modell @@ -173,17 +192,17 @@ DeviceBios - + Vendor Anbieter - + Version Version - + Chipset Chipsatz @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Name - + Vendor Anbieter - + Version Version - + Model Modell - + + Module Alias + + + + + Physical ID + Physische ID + + + Speed Geschwindigkeit - + Maximum Power Maximale Leistung - + Driver Version Treiber-Version - + Driver Treiber - + Capabilities Fähigkeiten - + Bus Info Bus-Info - + Logical Name Logischer Name - + MAC Address MAC-Adresse - + Unavailable Nicht verfügbar - + Disable Deaktivieren @@ -264,57 +293,67 @@ DeviceCdrom - + Name Name - + Vendor Anbieter - + Model Modell - + Version Version - + Bus Info Bus-Info - + Capabilities Fähigkeiten - + Driver Treiber - + Maximum Power Maximale Leistung - + Speed Geschwindigkeit - + + Module Alias + + + + + Physical ID + Physische ID + + + Unavailable Nicht verfügbar - + Disable Deaktivieren @@ -322,7 +361,7 @@ DeviceComputer - + Name Name @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Name - - + + Vendor Anbieter - + CPU ID CPU ID - + Core ID Kern-ID - + Threads Threads - - Current Speed - Aktuelle Geschwindigkeit - - - + BogoMIPS BogoMIPS - - + + Architecture Architektur - + CPU Family CPU-Familie - + Model Modell - - + + Processor Prozessor - + Core(s) Kern(e) - + Virtualization Virtualisierung - + Flags Flags - + Extensions Erweiterungen - + L3 Cache L3 Cache - + L2 Cache L2 Cache - + L1i Cache L1i Cache - + L1d Cache L1d Cache - + Stepping Stepping - + Speed Geschwindigkeit - + + + Max Speed Max. Geschwindigkeit @@ -447,132 +483,127 @@ DeviceGpu - + Name Name - + Vendor Anbieter - + Model Modell - + Version Version - + Graphics Memory Grafikspeicher - + + Module Alias + + + + Physical ID Physische ID - + Memory Address Speicheradresse - + IO Port EA-Port - + Bus Info Bus-Info - + Maximum Resolution Maximale Auflösung - + Minimum Resolution Minimale Auflösung - + Current Resolution Aktuelle Auflösung - + Driver Treiber - + Description Beschreibung - - Clock - Taktfrequenz - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput - + - + Display Output Ausgabe anzeigen - + Capabilities Fähigkeiten - + IRQ IRQ - - Width - Breite - - - + Unavailable Nicht verfügbar @@ -580,62 +611,72 @@ DeviceImage - + Name Name - + Vendor Anbieter - + Version Version - + Model Modell - + Bus Info Bus-Info - + + Module Alias + + + + + Physical ID + Physische ID + + + Speed Geschwindigkeit - + Maximum Power Maximale Leistung - + Driver Treiber - + Capabilities Fähigkeiten - + Serial Number Seriennummer - + Unavailable Nicht verfügbar - + Disable Deaktivieren @@ -643,62 +684,72 @@ DeviceInput - + Name Name - + Vendor Anbieter - + Model Modell - + Interface Schnittstelle - + Bus Info Bus-Info - + + Module Alias + + + + + Physical ID + Physische ID + + + Speed Geschwindigkeit - + Maximum Current Maximale Stromstärke - + Driver Treiber - + Capabilities Fähigkeiten - + Version Version - + Unavailable Nicht verfügbar - + Disable Deaktivieren @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Übersicht - - - + + + CPU CPU - - + + CPU quantity CPU-Anzahl - - + + Motherboard Hauptplatine - - + + Memory Speicher - - + + Display Adapter Anzeigeadapter - - + + Sound Adapter Sound Adapter - - + + Storage Speicher - - + + Other PCI Devices Weitere PCI-Geräte - - + + Battery Akku - - + + Bluetooth Bluetooth - - + + Network Adapter Netzwerkadapter - - + + Mouse Maus - - + + Keyboard Tastatur - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Drucker - - + + Camera Kamera - - + + Other Devices Other Input Devices Weitere Geräte - - - + + + Device Gerät - - - + + + OS BS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Name - - + + Vendor Anbieter - - + + Size Größe - - + + Type Typ - - + + Speed Geschwindigkeit - + Total Width Gesamtbreite - + Locator Lokator - + Serial Number Seriennummer - + Configured Voltage Konfigurierte Spannung - + Maximum Voltage Maximale Spannung - + Minimum Voltage Minimale Spannung - + Configured Speed Konfigurierte Geschwindigkeit - + Data Width Datenbreite @@ -920,200 +971,198 @@ DeviceMonitor - + Name Name - + Vendor Anbieter - + Type Typ - + Display Input Eingang anzeigen - + Interface Type Schnittstellentyp - + Support Resolution Unterstützte Auflösung - + Current Resolution Aktuelle Auflösung - + Display Ratio Anzeigeverhältnis - + Primary Monitor Primärer Monitor - + Size Größe - + Serial Number Seriennummer - - - Product Date - Produktdatum - DeviceNetwork - + + Name Name - + + Vendor Anbieter - + + Type Typ - + Version Version - + Bus Info Bus-Info - + Capabilities Fähigkeiten - + Driver Treiber - + Driver Version Treiber-Version - + + Module Alias + + + + + Physical ID + Physische ID + + + Maximum Rate Maximale Rate - + Negotiation Rate Verhandlungsrate - + Port Port - + Multicast Multicast - + Link - + - + Latency Latenz - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Broadcast - + Auto Negotiation Automatisch aushandeln - - Clock - Taktfrequenz - - - - Width - Breite - - - + Memory Address Speicheradresse - + IRQ IRQ - + MAC Address MAC-Adresse - + Logical Name Logischer Name - + Unavailable Nicht verfügbar - + Disable Deaktivieren @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Name - + Vendor Anbieter - + Model Modell - + Bus Info Bus-Info - + Version Version - + Input/Output Eingang/Ausgang - + Memory Speicher - + IRQ IRQ - + Latency Latenz - - Clock - Taktfrequenz - - - - Width - Breite - - - + Driver Treiber - + Capabilities Fähigkeiten @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Name - + Vendor Anbieter - + Model Modell - + Version Version - + Bus Info Bus-Info - + Capabilities Fähigkeiten - + Driver Treiber - + Maximum Power Maximale Leistung - + Speed Geschwindigkeit - + Serial Number Seriennummer - + Unavailable Nicht verfügbar - + Disable Deaktivieren @@ -1252,82 +1291,82 @@ DevicePower - + Name Name - + Model Modell - + Vendor Anbieter - + Serial Number Seriennummer - + Type Typ - + Status Status - + Capacity Kapazität - + Voltage Spannung - + Slot Steckplatz - + Design Capacity Auslegungskapazität - + Design Voltage Auslegungsspannung - + SBDS Version SBDS-Version - + SBDS Serial Number SBDS-Seriennummer - + SBDS Manufacture Date SBDS-Herstellungsdatum - + SBDS Chemistry SBDS Chemie - + Temperature Temperatur @@ -1335,47 +1374,47 @@ DevicePrint - + Name Name - + Model Modell - + Vendor Anbieter - + Serial Number Seriennummer - + Shared Geimsam genutzt - + URI URI - + Status Status - + Interface Type Schnittstellentyp - + Disable Deaktivieren @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Modell - - - - + + Vendor Anbieter - - + + Media Type Medientyp - - + + + Size Größe - + + + Name + Name + + + Version Version - + Capabilities Fähigkeiten - + + + Module Alias + + + + + + Physical ID + Physische ID + + + Firmware Version Firmware-Version - + Speed Geschwindigkeit - + Description Beschreibung - + Serial Number Seriennummer - + Interface Schnittstelle - + Rotation Rate Drehgeschwindigkeit - + Unavailable Nicht verfügbar @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Wähle einen Treiber für die Aktualisierung aus - + No drivers found in this folder In diesem Ordner wurden keine Treiber gefunden @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Audiogerät-Info wird geladen ... - + Loading BIOS Info... BIOS-Info wird geladen ... - + Loading CD-ROM Info... CD-ROM-Info wird geladen ... - + Loading Operating System Info... Betriebssystem-Info wird geladen ... - + Loading CPU Info... CPU-Info wird geladen ... - + Loading Other Devices Info... - + - + Loading Power Info... - + - + Loading Printer Info... Drucker-Info wird geladen ... - + Loading Mouse Info... Maus-Info wird geladen ... - + Loading Network Adapter Info... Netzwerkadapter-Info wird geladen ... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Deaktivieren - + Unavailable Nicht verfügbar @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Deaktivieren - + Unavailable Nicht verfügbar @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Geräte-Info - + Display shortcuts Kürzel anzeigen - + Close Schließen - + Help Hilfe - + Copy Kopieren - + System System - + Export Exportieren - + Refresh Aktualisieren - + Device Manager Geräteverwaltung - + Hardware Hardware - + Drivers Treiber - + Monitor Monitor - + Overview Übersicht - + Display Adapter Anzeigeadapter - + CPU CPU - + Network Adapter Netzwerkadapter - + Battery Akku @@ -1639,191 +1691,377 @@ PageDetail - + More Mehr + + PageDriverBackupInfo + + + + Name + Name + + + + + Current Version + Aktuelle Version + + + + + Driver Platform Version + + + + + Status + Status + + + + Action + Aktion + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Wird aktualisiert - - - + + + Cancel button Abbrechen - + Next Weiter - + Warning Warnung - + The device will be unavailable after the driver uninstallation Das Gerät kann nach der Deinstallation der Treiber nicht verwendet werden - + Uninstall button Deinstallieren - + Uninstalling Wird deinstalliert - + Update successful Aktualisierung erfolgreich - + Uninstallation successful Deinstallation erfolgreich - + Update failed Aktualisierung fehlgeschlagen - + Uninstallation failed Deinstallation fehlgeschlagen - + OK button OK - + Next button Weiter - + The selected folder does not exist, please select again Der ausgewählte Ordner existiert nicht, bitte erneut auswählen - + Update button - + - + Previous button - + - + Broken package Kaputtes Paket - + Unmatched package architecture Nicht übereinstimmende Paketarchitektur - - + + The selected file does not exist, please select again Die ausgewählte Datei existiert nicht, bitte erneut auswählen - + It is not a driver Es ist kein Treiber - + Unable to install - no digital signature Konnte nicht installieren - keine digitale Signatur - + Unknown error Unbekannter Fehler - + The driver module was not found Das Treibermodul wurde nicht gefunden - + Invalid module format Ungültiges Modulformat - + The driver module has dependencies Das Treibermodul hat Abhängigkeiten - PageListView + PageDriverInstallInfo - - Refresh - Aktualisieren + + + + Device Name + Gerätename - + + Version Available + Version verfügbar + + + + + Size + Größe + + + + + Status + Status + + + + + Action + Aktion + + + + New Version + Neue Version + + + + Current Version + Aktuelle Version + + + + Missing drivers (%1) + Fehlende Treiber (%1) + + + + Outdated drivers (%1) + Veraltete Treiber (%1) + + + + Up-to-date drivers (%1) + Neueste Treiber (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Name + + + + Current Version + Aktuelle Version + + + + Backup Version + + + + + Action + Aktion + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Aktualisieren + + + Export Exportieren - + Overview Übersicht + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Das Gerät konnte nicht aktiviert werden - + Failed to disable the device Das Gerät konnte nicht deaktiviert werden - + Failed to disable it: unable to get the device SN - + - + Update Drivers Treiber aktualisieren - + Uninstall Drivers Treiber deinstallieren @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Aktualisieren - + Export Exportieren - + Copy Kopieren - + Overview Übersicht @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Aktualisieren - + Export Exportieren - + Copy Kopieren - - + + Enable Aktivieren - + Update drivers Treiber aktualisieren - + Uninstall drivers Treiber aktualisieren - + Allow it to wake the computer Aufwecken des Computers erlauben - + Disable Deaktivieren - - + + Failed to disable it: unable to get the device SN - + - + Failed to disable the device Das Gerät konnte nicht deaktiviert werden - + Failed to enable the device Das Gerät konnte nicht aktiviert werden - + Update Drivers Treiber aktualisieren - + Uninstall Drivers Treiber deinstallieren @@ -1924,867 +2162,847 @@ QObject - + SubVendor - + - + SubDevice - + - + Driver Treiber - + Driver Status Treiber-Status - + Driver Activation Cmd Befehl zur Treiberaktivierung - - + - + + Config Status Konfigurationsstatus - - - - - - - physical id - physische ID - - - + latency Latenz - + Phys Phys - + Sysfs Sysfs - + Handlers Handler - - + + PROP PROP - - + + EV EV - - + + KEY SCHLÜSSEL - - Model - Modell - - - - Vendor - Anbieter - - - + Version Version - - + + + Bus Bus - - + + BIOS Information BIOS-Information - - + + Base Board Information - + - - + + System Information System-Information - - + + Chassis Information Gehäuse-Information - - + + Physical Memory Array Physikalischer Speicher - + Release Date Veröffentlichungsdatum - + Address Adresse - + Runtime Size Laufzeitgröße - + ROM Size ROM-Größe - + Characteristics Eigenschaften - + BIOS Revision BIOS-Revision - + Firmware Revision Firmware-Revision - - + + Product Name Produktname - - - + + + Serial Number Seriennummer - - - + + + Asset Tag Systemkennnummer - - + + Features Merkmale - + Location In Chassis Platz im Gehäuse - + Chassis Handle Chassis-Griff - - + + Type Typ - + Contained Object Handles Enthaltene Objektgriffe - - + + UUID UUID - + Wake-up Type Aufwachtyp - - + + SKU Number SKU Nummer - + Family Familie - + Lock Sperre - + Boot-up State Boot-Up-Status - + Power Supply State Status Stromversorgung - + Thermal State Thermischer Zustand - + Security Status Sicherheitsstatus - + OEM Information OEM Information - + Height Höhe - + Number Of Power Cords Anzahl der Stromkabel - + Contained Elements Enthaltene Elemente - + Location Ort - + Error Correction Type Fehlerkorrekturtyp - + Maximum Capacity Maximale Kapazität - - + + Error Information Handle - + - + Number Of Devices Anzahl an Geräten - + BIOS ROMSIZE ROM-Größe - + Release date Veröffentlichungsdatum - + Board name Platinenname - + SMBIOS Version SMBIOS-Version - + Language Description Format Format der Sprachbeschreibung - + Installable Languages Installierbare Sprachen - + Currently Installed Language Aktuell installierte Sprache - + BD Address BD-Adresse - + ACL MTU - + - + SCO MTU - + - + Packet type Pakettyp - + Link policy - + - + Link mode - + - - + + Class Klasse - + Service Classes Dienstklassen - + Device Class Geräteklasse - + HCI Version HCI-Version - + LMP Version LMP-Version - + Subversion Unterversion - + Device Gerät - - + + Serial ID Serielle ID - + product Produkt - + description Beschreibung - + Powered Eingeschalten - + Discoverable Auffindbar - + Pairable Koppelbar - + Modalias Modalias - + Discovering Suchen - + Driver Modules Treiber-Module - - - + + + + + Device File Gerätedatei - + Device Files Gerätedateien - - + + + Device Number Gerätenummer - - Module Alias - - - - + Application Applikation - + status Status - - + + + logical name logischer Name - - + + ansiversion - + - + CPU implementer - + - + CPU architecture CPU-Architektur - + CPU variant CPU-Variante - + CPU part CPU-Teil - + CPU revision CPU-Revision - + One Eins - + Two Zwei - + Four Vier - + Six Sechs - + Eight Acht - + Ten Zehn - + Twelve Zwölf - + Fourteen Vierzehn - + Sixteen Sechzehn - + Eighteen Achtzehn - + Twenty Zwanzig - + Twenty-two Zweiundzwanzig - + Twenty-four Vierundzwanzig - + Twenty-six Sechsundzwanzig - + Twenty-eight Achtundzwanzig - + Thirty Dreißig - + Thirty-two Zweiunddreißig - + Thirty-four Vierunddreißig - + Thirty-six Sechsunddreißig - + Thirty-eight Achtunddreißig - + Forty Vierzig - + Forty-two Zweiundvierzig - + Forty-four Vierundvierzig - + Forty-six Sechsundvierzig - + Forty-eight Achtundvierzig - + Fifty Fünfzig - + Fifty-two Zweiundfünfzig - + Fifty-four Vierundfünfzig - + Fifty-six Sechsundfünfzig - + Fifty-eight Achtundfünfzig - + Sixty Sechszig - + Sixty-two Zweiundsechzig - + Sixty-four Vierundsechzig - + Sixty-six Sechsundsechzig - + Sixty-eight Achtundsechzig - + Seventy Siebzig - + Seventy-two Zweiundsiebzig - + Seventy-four Vierundsiebzig - + Seventy-six Sechsundsiebzig - + Seventy-eight Achtundsiebzig - + Eighty Achtzig - + Eighty-two Zweiundachtzig - + Eighty-four Vierundachtzig - + Eighty-six Sechsundachtzig - + Eighty-eight Achtundachtzig - + Ninety Neunzig - + Ninety-two Zweiundneunzig - + Ninety-four Vierundneunzig - + Ninety-six Sechsundneunzig - + Ninety-eight Achtundneunzig - + One hundred Einhundert - + One hundred and Two Einhundertzwei - + One hundred and four Einhundertvier - + One hundred and Six Einhundertsechs - + One hundred and Eight Einhundertacht - + One hundred and Ten Einhundertzehn - + One hundred and Twelve Einhundertzwölf - + One hundred and Fourteen Einhundertvierzehn - + One hundred and Sixteen Einhundertsechzehn - + One hundred and Eighteen Einhundertachtzehn - + One hundred and Twenty Einhundertzwanzig - + One hundred and Twenty-two Einhundertzweiundzwanzig - + One hundred and Twenty-four Einhundertvierundzwanzig - + One hundred and Twenty-six Einhundertsechsundzwanzig - + One hundred and Twenty-eight Hundertachtundzwanzig - + One hundred and Ninety-two Einhundertzweiundneunzig - + Two hundred and fifty-six Zweihundertsechsundfünfzig @@ -2811,7 +3029,7 @@ EGL client APIs - + @@ -2824,988 +3042,1084 @@ GLSL-Version - - - + + + Unknown Unbekannt - + Uniq Uniq - + MSC - + - - + + + Hardware Class Hardwareklasse - - - - + + + + CPU CPU - - - - + + + + No CPU found Keine CPU gefunden - - - - + + + + Motherboard Hauptplatine - - - - + + + + No motherboard found Keine Hauptplatine gefunden - - - - + + + + Memory Speicher - - - - + + + + No memory found Kein Speicher gefunden - - - - + + + + Storage Speicher - - - - + + + + No disk found Keine Festplatte gefunden - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Anzeigeadapter - - - - + + + + No GPU found Keine GPU gefunden - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Kein Monitor gefunden - - - - - + + + + + Network Adapter Netzwerkadapter - - - - + + + + No network adapter found Kein Netzwerkadapter gefunden - - - - - + + + + + Sound Adapter Sound Adapter - - - - + + + + No audio device found Kein Audiogerät gefunden - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Kein Bluetooth-Gerät gefunden - - - - + + + + Other PCI Devices Weitere PCI-Geräte - - - - + + + + No other PCI devices found Keine weiteren Geräte gefunden - - - - + + + + Power Akku - - - - + + + + No battery found Kein Akku gefunden - - - - - + + + + + Keyboard Tastatur - - - - + + + + No keyboard found Keine Tastatur gefunden - - - - - + + + + + Mouse Maus - - - - + + + + No mouse found Keine Maus gefunden - - - - - - + + + + + + Printer Drucker - - - - + + + + No printer found Kein Drucker gefunden - - - - + + + + Camera Kamera - - - - + + + + No camera found Keine Kamera gefunden - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Keine CD-ROM gefunden - - - - - + + + + + Other Devices Weitere Geräte - - - - + + + + No other devices found Keine weiteren Geräte gefunden - + Array Handle - + - + Form Factor Formfaktor - + Set - + - + Bank Locator Bank Lokator - + Type Detail - + - + Part Number Teilenummer - + Rank Rang - + Memory Technology Speichertechnologie - + Memory Operating Mode Capability - + - + Firmware Version Firmware-Version - + Module Manufacturer ID - + - + Module Product ID - + - + Memory Subsystem Controller Manufacturer ID - + - + Memory Subsystem Controller Product ID - + - + Non-Volatile Size Nicht-flüchtige Größe - + Volatile Size Flüchtige Größe - + Cache Size Cache-Größe - + Logical Size Logische Größe - - - - - + + + + + inch Zoll - + Date Datum - + ioport - + - + network Netzwerk - - + battery Akku - + native-path - + - + power supply Stromversorgung - + updated aktualisiert - + has history verfügt über einen Verlauf - + has statistics verfügt über Statistiken - + rechargeable wiederaufladbar - + state Zustand - + warning-level - + - + energy Energie - + energy-empty - + - + energy-full - + - + energy-full-design - + - + energy-rate - + - + voltage Spannung - + percentage - + - + technology Technologie - + icon-name - + - + online online - + daemon-version - + - + on-battery - + - + lid-is-closed - + - + lid-is-present - + - + critical-action - + - + copies Kopien - + job-cancel-after - + - + job-hold-until - + - + job-priority - + - + marker-change-time - + - + number-up - + - + orientation-requested - + - + print-color-mode - + - + printer-is-accepting-jobs - + - + printer-is-shared - + - + printer-is-temporary - + - + printer-make-and-model printer-make-and-model - + printer-state-change-time - + - + printer-state-reasons - + - + printer-type - + - + printer-uri-supported - + - + sides Seiten - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info Bus-Info - + logicalsectorsize - + - + sectorsize Sektorgröße - + guid - + - + Geometry (Logical) Geometrie (logisch) - - + + Device Manager Geräteverwaltung - + Device Manager is a handy tool for viewing hardware information and managing the devices. Geräteverwaltung ist ein praktisches Werkzeug zur Anzeige von Hardware-Informationen und zur Verwaltung der Geräte. - + New drivers available! Install or update them now. - + + + + + View + - + Include subfolders Unterordner einbeziehen - + Search for drivers in this path Nach Treibern in diesem Pfad suchen - - - - Device Name - Gerätename - - - - Version Available - Version verfügbar - - - - - Size - Größe - - - - - Status - Status - - - - - Action - Aktion - - - - New Version - Neue Version - - - - Current Version - Aktuelle Version - - - - Missing drivers (%1) - Fehlende Treiber (%1) - - - - Outdated drivers (%1) - Veraltete Treiber (%1) - - - - Up-to-date drivers (%1) - Neueste Treiber (%1) - - - + %1 driver updates available %1 Treiberaktualisierungen verfügbar - - + + Time checked: %1 - + - + Downloading drivers for %1... Treiber für %1 werden heruntergeladen ... - + Download speed: %1 Downloaded %2/%3 Herunterladegeschwindigkeit: %1 Heruntergeladen %2/%3 - + Installing drivers for %1... Treiber für %1 werden installiert ... - + %1 drivers installed, %2 drivers failed %1 Treiber installiert, %2 Treiber fehlgeschlagen - + %1 drivers installed %1 Treiber installiert - + Failed to install drivers - + - + Network error. Reconnecting... Netzwerkfehler. Verbindung wiederherstellen ... - + Download speed: %1 Herunterladegeschwindigkeit: %1 - + Your drivers are up to date Ihre Treiber sind auf dem neuesten Stand - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot - + - + Please %1 for the installed drivers to take effect - + - - + + View backup path + + + + + Backup All + + + + + submit feedback Rückmeldung absenden - + Please try again or %1 to us - + - + Install All Alle installieren - - + + Scan Again - + - + Cancel Abbrechen - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable Netzwerk nicht verfügbar - + Please check your network connection Bitte überprüfen Sie Ihre Netzwerkverbindung - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? Sind Sie sicher, dass Sie beenden möchten? - + + + Exit button Beenden - + + + Cancel button Abbrechen - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Bluetooth-Adapter - - + + Imaging device Bildgebendes Gerät - + Display adapter Anzeigeadapter - + Sound card - + - + Network adapter Netzwerkadapter - + Wireless network adapter Drahtloser Netzwerkadapter - + Installation successful Installation erfolgreich - + Installation failed Installation fehlgeschlagen - + Downloading Wird heruntergeladen - + Installing Wird installiert - + Not installed Nicht installiert - + Out-of-date Veraltet - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error Unbekannter Fehler - + Network error Netzwerkfehler - + Canceled Abgebrochen - + Failed to get driver files - + - + Update - + + + + + Backup + - + + Restore + + + + Install Installieren @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Deaktivieren - + Refresh Aktualisieren - + Export Exportieren - + Update drivers Treiber aktualisieren - + Uninstall drivers Treiber aktualisieren - + Allow it to wake the computer Aufwecken des Computers erlauben - - + + Enable Aktivieren @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Aktualisieren - + Export Exportieren - + Copy Kopieren - + Disable Deaktivieren - + Unavailable Nicht verfügbar @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Bitte einen lokalen Ordner auswählen @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Wird geladen ... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_en_AU.ts b/deepin-devicemanager/translations/deepin-devicemanager_en_AU.ts index 5f401ba96..c9ec6afef 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_en_AU.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_en_AU.ts @@ -1,144 +1,190 @@ - + + + + + BtnLabel + + + OK + + + + + Feedback + + + + + OK + button + + + CmdButtonWidget - + More - + + + + + CommonTools + + + EC_NOTIFY_NETWORK + + + + + EC_REINSTALL + + + + + EC_6 + DetailButton - - + + More - + - + Collapse - + DetailTreeView - - + + More - + - - + + Collapse - + DetailViewDelegate - - + + Disable - + - + Unavailable - + DeviceAudio - + Device Name Device Name - - + + Name Name - - + + Vendor Vendor - - Model - Model + + Chip + Chip - - Version - Version + + Capabilities + Capabilities - - Bus Info - Bus Info + + + Module Alias + Module Alias - - Chip - Chip + + + Physical ID + Physical ID - - Capabilities - Capabilities + + SysFS_Path + + + + + Description + Description - - Clock - Clock + + Revision + - - Width - Width + + KernelModeDriver + - + Memory Address Memory Address - + IRQ IRQ - + Unavailable - + - + Disable - + DeviceBaseInfo - + Name Name - + Vendor Vendor - + Model Model @@ -146,17 +192,17 @@ DeviceBios - + Vendor Vendor - + Version Version - + Chipset Chipset @@ -164,138 +210,158 @@ DeviceBluetooth - + Name Name - + Vendor Vendor - + Version Version - + Model Model - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Speed Speed - + Maximum Power Maximum Power - + Driver Version Driver Version - + Driver Driver - + Capabilities Capabilities - + Bus Info Bus Info - + Logical Name Logical Name - + MAC Address MAC Address - + Unavailable - + - + Disable - + DeviceCdrom - + Name Name - + Vendor Vendor - + Model Model - + Version Version - + Bus Info Bus Info - + Capabilities Capabilities - + Driver Driver - + Maximum Power Maximum Power - + Speed Speed - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Unavailable - + - + Disable - + DeviceComputer - + Name Name @@ -303,116 +369,113 @@ DeviceCpu - - + + Name Name - - + + Vendor Vendor - + CPU ID CPU ID - + Core ID Core ID - + Threads Threads - - Current Speed - Current Speed - - - + BogoMIPS BogoMIPS - - + + Architecture Architecture - + CPU Family CPU Family - + Model Model - - + + Processor Processor - + Core(s) Core(s) - + Virtualization Virtualisation - + Flags Flags - + Extensions Extensions - + L3 Cache L3 Cache - + L2 Cache L2 Cache - + L1i Cache L1i Cache - + L1d Cache L1d Cache - + Stepping Stepping - + Speed Speed - + + + Max Speed Max Speed @@ -420,472 +483,487 @@ DeviceGpu - + Name Name - + Vendor Vendor - + Model Model - + Version Version - + Graphics Memory Graphics Memory - + + Module Alias + Module Alias + + + Physical ID Physical ID - + Memory Address Memory Address - + IO Port IO Port - + Bus Info Bus Info - + Maximum Resolution Maximum Resolution - + Minimum Resolution Minimum Resolution - + Current Resolution Current Resolution - + Driver Driver - + Description Description - - Clock - Clock - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI - + - + DigitalOutput - + - + Display Output Display Output - + Capabilities Capabilities - + IRQ IRQ - - Width - Width - - - + Unavailable - + DeviceImage - + Name Name - + Vendor Vendor - + Version Version - + Model Model - + Bus Info Bus Info - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Speed Speed - + Maximum Power Maximum Power - + Driver Driver - + Capabilities Capabilities - + Serial Number Serial Number - + Unavailable - + - + Disable - + DeviceInput - + Name Name - + Vendor Vendor - + Model Model - + Interface Interface - + Bus Info Bus Info - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Speed Speed - + Maximum Current - + - + Driver Driver - + Capabilities Capabilities - + Version Version - + Unavailable - + - + Disable - + DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Overview - - - + + + CPU CPU - - + + CPU quantity - + - - + + Motherboard Motherboard - - + + Memory Memory - - + + Display Adapter Display Adapter - - + + Sound Adapter Sound Adapter - - + + Storage Storage - - + + Other PCI Devices Other PCI Devices - - + + Battery Battery - - + + Bluetooth Bluetooth - - + + Network Adapter Network Adapter - - + + Mouse Mouse - - + + Keyboard Keyboard - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Printer - - + + Camera Camera - - + + Other Devices Other Input Devices Other Devices - - - + + + Device Device - - - + + + OS - + DeviceMemory - - + + Name Name - - + + Vendor Vendor - - + + Size Size - - + + Type Type - - + + Speed Speed - + Total Width Total Width - + Locator Locator - + Serial Number Serial Number - + Configured Voltage Configured Voltage - + Maximum Voltage Maximum Voltage - + Minimum Voltage Minimum Voltage - + Configured Speed Configured Speed - + Data Width Data Width @@ -893,268 +971,256 @@ DeviceMonitor - + Name Name - + Vendor Vendor - + Type Type - + Display Input Display Input - + Interface Type Interface Type - + Support Resolution Support Resolution - + Current Resolution Current Resolution - + Display Ratio Display Ratio - + Primary Monitor Primary Monitor - + Size Size - + Serial Number Serial Number - - - Product Date - Product Date - DeviceNetwork - + + Name Name - + + Vendor Vendor - + + Type Type - + Version Version - + Bus Info Bus Info - + Capabilities Capabilities - + Driver Driver - + Driver Version Driver Version - + + Module Alias + Module Alias + + + + Physical ID + Physical ID + + + Maximum Rate - + - + Negotiation Rate - + - + Port Port - + Multicast Multicast - + Link Link - + Latency Latency - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Broadcast - + Auto Negotiation Auto Negotiation - - Clock - Clock - - - - Width - Width - - - + Memory Address Memory Address - + IRQ IRQ - + MAC Address MAC Address - + Logical Name Logical Name - + Unavailable - + - + Disable - + DeviceOtherPCI - + Name Name - + Vendor Vendor - + Model Model - + Bus Info Bus Info - + Version Version - + Input/Output Input/Output - + Memory Memory - + IRQ IRQ - + Latency Latency - - Clock - Clock - - - - Width - Width - - - + Driver Driver - + Capabilities Capabilities @@ -1162,332 +1228,345 @@ DeviceOthers - + Name Name - + Vendor Vendor - + Model Model - + Version Version - + Bus Info Bus Info - + Capabilities Capabilities - + Driver Driver - + Maximum Power Maximum Power - + Speed Speed - + Serial Number Serial Number - + Unavailable - + - + Disable - + DevicePower - + Name Name - + Model Model - + Vendor Vendor - + Serial Number Serial Number - + Type Type - + Status Status - + Capacity Capacity - + Voltage Voltage - + Slot Slot - + Design Capacity Design Capacity - + Design Voltage Design Voltage - + SBDS Version SBDS Version - + SBDS Serial Number SBDS Serial Number - + SBDS Manufacture Date SBDS Manufacture Date - + SBDS Chemistry SBDS Chemistry - + Temperature - + DevicePrint - + Name Name - + Model Model - + Vendor Vendor - + Serial Number Serial Number - + Shared Shared - + URI URI - + Status Status - + Interface Type Interface Type - + Disable - + DeviceStorage - - - Model - Model - - - - + + Vendor Vendor - - + + Media Type Media Type - - + + + Size Size - + + + Name + Name + + + Version Version - + Capabilities Capabilities - + + + Module Alias + Module Alias + + + + + Physical ID + Physical ID + + + Firmware Version Firmware Version - + Speed Speed - + Description Description - + Serial Number Serial Number - + Interface Interface - + Rotation Rate Rotation Rate - + Unavailable - + GetDriverNameWidget - - + + Select a driver for update - + - + No drivers found in this folder - + GetInfoPool - + Loading Audio Device Info... Loading Audio Device Info... - + Loading BIOS Info... Loading BIOS Info... - + Loading CD-ROM Info... Loading CD-ROM Info... - + Loading Operating System Info... Loading Operating System Info... - + Loading CPU Info... Loading CPU Info... - + Loading Other Devices Info... Loading Other Devices Info... - + Loading Power Info... Loading Power Info... - + Loading Printer Info... Loading Printer Info... - + Loading Mouse Info... Loading Mouse Info... - + Loading Network Adapter Info... Loading Network Adapter Info... @@ -1495,106 +1574,116 @@ LogTreeView - - - + + + Disable - + - + Unavailable - + LogViewItemDelegate - + Disable - + - + Unavailable - + MainWindow - + Device Info - export file's name + export file's name Device Info - + Display shortcuts Display shortcuts - + Close Close - + Help Help - + Copy Copy - + System System - + Export Export - + Refresh Refresh - + Device Manager Device Manager - + + Hardware + + + + + Drivers + + + + Monitor - + Monitor - + Overview Overview - + Display Adapter - + Display Adapter - + CPU CPU - + Network Adapter Network Adapter - + Battery Battery @@ -1602,214 +1691,400 @@ PageDetail - + More - + + + + + PageDriverBackupInfo + + + + Name + Name + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + Status + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + PageDriverControl - - + + Updating - + - - - + + + Cancel button Cancel - + Next - + - + Warning - + - + The device will be unavailable after the driver uninstallation - + - + Uninstall button - + - + Uninstalling - + - + Update successful - + - + Uninstallation successful - + - + Update failed - + - + Uninstallation failed - + - + OK button - + - + Next button - + - + The selected folder does not exist, please select again - + - + Update button - + - + Previous button - + - + Broken package - + - + Unmatched package architecture - + - - + + The selected file does not exist, please select again - + - + It is not a driver - + - + Unable to install - no digital signature - + - + Unknown error - + - + The driver module was not found - + - + Invalid module format - + - + The driver module has dependencies - + - PageListView + PageDriverInstallInfo - - Refresh - Refresh + + + + Device Name + Device Name + + + + Version Available + + + + + + Size + Size + + + + + Status + Status + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Name - + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Refresh + + + Export Export - + Overview Overview + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device - + - + Failed to disable the device - + - + Failed to disable it: unable to get the device SN - + - + Update Drivers - + - + Uninstall Drivers - + PageOverview - + Refresh Refresh - + Export Export - + Copy Copy - + Overview Overview @@ -1817,939 +2092,919 @@ PageSingleInfo - + Refresh Refresh - + Export Export - + Copy Copy - - + + Enable - + - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - + Disable - + - - + + Failed to disable it: unable to get the device SN - + - + Failed to disable the device - + - + Failed to enable the device - + - + Update Drivers - + - + Uninstall Drivers - + QObject - + SubVendor SubVendor - + SubDevice SubDevice - + Driver Driver - + Driver Status Driver Status - + Driver Activation Cmd Driver Activation Cmd - - + - + + Config Status Config Status - - - - - - - physical id - physical id - - - + latency latency - + Phys Phys - + Sysfs Sysfs - + Handlers Handlers - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Model - - - - Vendor - Vendor - - - + Version Version - - + + + Bus Bus - - + + BIOS Information BIOS Information - - + + Base Board Information Base Board Information - - + + System Information System Information - - + + Chassis Information Chassis Information - - + + Physical Memory Array Physical Memory Array - + Release Date Release Date - + Address Address - + Runtime Size Runtime Size - + ROM Size ROM Size - + Characteristics Characteristics - + BIOS Revision BIOS Revision - + Firmware Revision Firmware Revision - - + + Product Name Product Name - - - + + + Serial Number Serial Number - - - + + + Asset Tag Asset Tag - - + + Features Features - + Location In Chassis Location In Chassis - + Chassis Handle Chassis Handle - - + + Type Type - + Contained Object Handles Contained Object Handles - - + + UUID UUID - + Wake-up Type Wake-up Type - - + + SKU Number SKU Number - + Family Family - + Lock Lock - + Boot-up State Boot-up State - + Power Supply State Power Supply State - + Thermal State Thermal State - + Security Status Security Status - + OEM Information OEM Information - + Height Height - + Number Of Power Cords Number Of Power Cords - + Contained Elements Contained Elements - + Location Location - + Error Correction Type Error Correction Type - + Maximum Capacity Maximum Capacity - - + + Error Information Handle Error Information Handle - + Number Of Devices Number Of Devices - + BIOS ROMSIZE BIOS ROMSIZE - + Release date Release date - + Board name Board name - + SMBIOS Version SMBIOS Version - + Language Description Format Language Description Format - + Installable Languages Installable Languages - + Currently Installed Language Currently Installed Language - + BD Address BD Address - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Packet type - + Link policy Link policy - + Link mode Link mode - - + + Class Class - + Service Classes Service Classes - + Device Class Device Class - + HCI Version HCI Version - + LMP Version LMP Version - + Subversion Subversion - + Device Device - - + + Serial ID Serial ID - + product product - + description description - + Powered Powered - + Discoverable Discoverable - + Pairable Pairable - + Modalias Modalias - + Discovering Discovering - + Driver Modules Driver Modules - - - + + + + + Device File Device File - + Device Files Device Files - - + + + Device Number Device Number - - Module Alias - Module Alias - - - + Application Application - + status status - - + + + logical name logical name - - + + ansiversion ansiversion - + CPU implementer CPU implementer - + CPU architecture CPU architecture - + CPU variant CPU variant - + CPU part CPU part - + CPU revision CPU revision - + One One - + Two Two - + Four Four - + Six Six - + Eight Eight - + Ten Ten - + Twelve Twelve - + Fourteen Fourteen - + Sixteen Sixteen - + Eighteen Eighteen - + Twenty Twenty - + Twenty-two Twenty-two - + Twenty-four Twenty-four - + Twenty-six Twenty-six - + Twenty-eight Twenty-eight - + Thirty Thirty - + Thirty-two Thirty-two - + Thirty-four Thirty-four - + Thirty-six Thirty-six - + Thirty-eight Thirty-eight - + Forty Forty - + Forty-two Forty-two - + Forty-four Forty-four - + Forty-six Forty-six - + Forty-eight Forty-eight - + Fifty Fifty - + Fifty-two Fifty-two - + Fifty-four Fifty-four - + Fifty-six Fifty-six - + Fifty-eight Fifty-eight - + Sixty Sixty - + Sixty-two Sixty-two - + Sixty-four Sixty-four - + Sixty-six - + - + Sixty-eight - + - + Seventy - + - + Seventy-two - + - + Seventy-four - + - + Seventy-six - + - + Seventy-eight - + - + Eighty - + - + Eighty-two - + - + Eighty-four - + - + Eighty-six - + - + Eighty-eight - + - + Ninety - + - + Ninety-two - + - + Ninety-four - + - + Ninety-six - + - + Ninety-eight - + - + One hundred - + - + One hundred and Two - + - + One hundred and four - + - + One hundred and Six - + - + One hundred and Eight - + - + One hundred and Ten - + - + One hundred and Twelve - + - + One hundred and Fourteen - + - + One hundred and Sixteen - + - + One hundred and Eighteen - + - + One hundred and Twenty - + - + One hundred and Twenty-two - + - + One hundred and Twenty-four - + - + One hundred and Twenty-six - + - + One hundred and Twenty-eight One hundred and Twenty-eight - + One hundred and Ninety-two - + - + Two hundred and fifty-six - + @@ -2787,763 +3042,1170 @@ GLSL version - - - + + + Unknown Unknown - + Uniq - + - + MSC MSC - - + + + Hardware Class Hardware Class - - - - + + + + CPU CPU - - - - + + + + No CPU found No CPU found - - - - + + + + Motherboard Motherboard - - - - + + + + No motherboard found No motherboard found - - - - + + + + Memory Memory - - - - + + + + No memory found No memory found - - - - + + + + Storage Storage - - - - + + + + No disk found No disk found - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Display Adapter - - - - + + + + No GPU found No GPU found - - - - + + + + Monitor Monitor - - - - + + + + No monitor found No monitor found - - - - + + + + + Network Adapter Network Adapter - - - - + + + + No network adapter found No network adapter found - - - - + + + + + Sound Adapter Sound Adapter - - - - + + + + No audio device found No audio device found - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found No Bluetooth device found - - - - + + + + Other PCI Devices Other PCI Devices - - - - + + + + No other PCI devices found No other PCI devices found - - - - + + + + Power Power - - - - + + + + No battery found No battery found - - - - + + Bluetooth adapter + + + + + + Imaging device + + + + + Display adapter + + + + + + + + Keyboard Keyboard - - - - + + Sound card + + + + + Network adapter + + + + + Wireless network adapter + + + + + Installation successful + + + + + Installation failed + + + + + Downloading + + + + + Installing + + + + + Not installed + + + + + Out-of-date + + + + + Waiting + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + + Unknown error + + + + + Network error + + + + + Canceled + + + + + Failed to get driver files + + + + + + + No keyboard found No keyboard found - - - - + + + + + Mouse Mouse - - - - + + + + No mouse found No mouse found - - - - + + + + + + Printer Printer - - - - + + + + No printer found No printer found - - - - + + + + Camera Camera - - - - + + + + No camera found No camera found - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found No CD-ROM found - - - - + + + + + Other Devices Other Devices - - - - + + + + No other devices found No other devices found - + Array Handle Array Handle - + Form Factor Form Factor - + Set Set - + Bank Locator Bank Locator - + Type Detail Type Detail - + Part Number Part Number - + Rank Rank - + Memory Technology Memory Technology - + Memory Operating Mode Capability Memory Operating Mode Capability - + Firmware Version Firmware Version - + Module Manufacturer ID Module Manufacturer ID - + Module Product ID Module Product ID - + Memory Subsystem Controller Manufacturer ID Memory Subsystem Controller Manufacturer ID - + Memory Subsystem Controller Product ID Memory Subsystem Controller Product ID - + Non-Volatile Size Non-Volatile Size - + Volatile Size Volatile Size - + Cache Size Cache Size - + Logical Size Logical Size - - - - - + + + + + inch inch - + Date Date - + ioport ioport - + network network - - + battery battery - + native-path native-path - + power supply power supply - + updated updated - + has history has history - + has statistics has statistics - + rechargeable rechargeable - + state state - + warning-level warning-level - + energy energy - + energy-empty energy-empty - + energy-full energy-full - + energy-full-design energy-full-design - + energy-rate energy-rate - + voltage voltage - + percentage percentage - + technology technology - + icon-name icon-name - + online online - + daemon-version daemon-version - + on-battery on-battery - + lid-is-closed lid-is-closed - + lid-is-present lid-is-present - + critical-action critical-action - + copies copies - + job-cancel-after job-cancel-after - + job-hold-until job-hold-until - + job-priority job-priority - + marker-change-time marker-change-time - + number-up number-up - + orientation-requested orientation-requested - + print-color-mode print-color-mode - + printer-is-accepting-jobs printer-is-accepting-jobs - + printer-is-shared printer-is-shared - + printer-is-temporary printer-is-temporary - + printer-make-and-model printer-make-and-model - + printer-state-change-time printer-state-change-time - + printer-state-reasons printer-state-reasons - + printer-type printer-type - + printer-uri-supported printer-uri-supported - + sides sides - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info bus info - + logicalsectorsize logicalsectorsize - + sectorsize sectorsize - + guid guid - + Geometry (Logical) Geometry (Logical) - + Device Manager Device Manager - + Device Manager is a handy tool for viewing hardware information and managing the devices. Device Manager is a handy tool for viewing hardware information and managing the devices. - + + New drivers available! Install or update them now. + + + + + View + + + + Include subfolders - + - + Search for drivers in this path - + + + + + Install + + + + + Update + + + + + Backup + + + + + Restore + + + + + Scanning hardware device drivers, please wait... + + + + + + Scanning %1 + + + + + Scan failed + + + + + Network unavailable + + + + + Please check your network connection + + + + + + submit feedback + + + + + Please scan again or %1 to us + + + + + + Scan Again + + + + + %1 driver updates available + + + + + + Time checked: %1 + + + + + Downloading drivers for %1... + + + + + Download speed: %1 Downloaded %2/%3 + + + + + Installing drivers for %1... + + + + + %1 drivers installed, %2 drivers failed + + + + + %1 drivers installed + + + + + Failed to install drivers + + + + + Network error. Reconnecting... + + + + + Download speed: %1 + + + + + Your drivers are up to date + + + + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + + reboot + + + + + Please %1 for the installed drivers to take effect + + + + + Please try again or %1 to us + + + + + View backup path + + + + + Install All + + + + + Backup All + + + + + Cancel + Cancel + + + + You are installing a driver, which will be interrupted if you exit. + + + + + + + Are you sure you want to exit? + + + + + + + Exit + button + + + + + + + Cancel + button + Cancel + + + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + TableWidget - - + + Disable - + - + Refresh Refresh - + Export Export - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - - + + Enable - + TextBrowser - + Refresh Refresh - + Export Export - + Copy Copy - + Disable - + - + Unavailable - + UrlChooserEdit - + Select a local folder please - + WaitingWidget - + Loading... Loading... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_es.ts b/deepin-devicemanager/translations/deepin-devicemanager_es.ts index 26e21d2ff..fff6ab85e 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_es.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_es.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + Aceptar + + + + Feedback + + + + OK button Aceptar @@ -11,7 +23,7 @@ CmdButtonWidget - + More Más @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFICAR_RED - + EC_REINSTALL EC_REINSTALAR - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Más - + Collapse Desplegar @@ -51,14 +63,14 @@ DetailTreeView - - + + More Más - - + + Collapse Desplegar @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Deshabilitar - + Unavailable No disponible @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Nombre del dispositivo - - + + Name Nombre - - + + Vendor Vendedor - - Model - Modelo + + Chip + Chip - - Version - Versión + + Capabilities + Capacidades - - Bus Info - Información de bus + + + Module Alias + Alias del módulo - - Chip - Chip + + + Physical ID + ID físico - - Capabilities - Capacidades + + SysFS_Path + - - Clock - Reloj + + Description + Descripción + + + + Revision + - - Width - Ancho + + KernelModeDriver + - + Memory Address Dirección de memoria - + IRQ IRQ - + Unavailable No disponible - + Disable Deshabilitar @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nombre - + Vendor Vendedor - + Model Modelo @@ -173,17 +192,17 @@ DeviceBios - + Vendor Vendedor - + Version Versión - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nombre - + Vendor Vendedor - + Version Versión - + Model Modelo - + + Module Alias + Alias del módulo + + + + Physical ID + ID físico + + + Speed Velocidad - + Maximum Power Potencia máxima - + Driver Version Versión del controlador - + Driver Controlador - + Capabilities Capacidades - + Bus Info Información de bus - + Logical Name Nombre lógico - + MAC Address Dirección MAC - + Unavailable No disponible - + Disable Deshabilitar @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nombre - + Vendor Vendedor - + Model Modelo - + Version Versión - + Bus Info Información de bus - + Capabilities Capacidades - + Driver Controlador - + Maximum Power Potencia máxima - + Speed Velocidad - + + Module Alias + Alias del módulo + + + + Physical ID + ID físico + + + Unavailable No disponible - + Disable Deshabilitar @@ -322,7 +361,7 @@ DeviceComputer - + Name Nombre @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nombre - - + + Vendor Vendedor - + CPU ID ID del CPU - + Core ID ID del núcleo - + Threads Hilos - - Current Speed - Velocidad actual - - - + BogoMIPS BogoMIPS - - + + Architecture Arquitectura - + CPU Family Familia de CPU - + Model Modelo - - + + Processor Procesador - + Core(s) Núcleo(s) - + Virtualization Virtualización - + Flags Banderas - + Extensions Extensiones - + L3 Cache Caché L3 - + L2 Cache Caché L2 - + L1i Cache Caché L1i - + L1d Cache Caché L1d - + Stepping N.° de revisión - + Speed Velocidad - + + + Max Speed Velocidad máxima @@ -447,132 +483,127 @@ DeviceGpu - + Name Nombre - + Vendor Vendedor - + Model Modelo - + Version Versión - + Graphics Memory Memoria gráfica - + + Module Alias + Alias del módulo + + + Physical ID ID físico - + Memory Address Dirección de memoria - + IO Port Puerto I/O - + Bus Info Información de bus - + Maximum Resolution Resolución máxima - + Minimum Resolution Resolución mínima - + Current Resolution Resolución actual - + Driver Controlador - + Description Descripción - - Clock - Reloj - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput Salida digital - + Display Output Salida de pantalla - + Capabilities Capacidades - + IRQ IRQ - - Width - Ancho - - - + Unavailable No disponible @@ -580,62 +611,72 @@ DeviceImage - + Name Nombre - + Vendor Vendedor - + Version Versión - + Model Modelo - + Bus Info Información de bus - + + Module Alias + Alias del módulo + + + + Physical ID + ID físico + + + Speed Velocidad - + Maximum Power Potencia máxima - + Driver Controlador - + Capabilities Capacidades - + Serial Number Número de serie - + Unavailable No disponible - + Disable Deshabilitar @@ -643,62 +684,72 @@ DeviceInput - + Name Nombre - + Vendor Vendedor - + Model Modelo - + Interface Interfaz - + Bus Info Información de bus - + + Module Alias + Alias del módulo + + + + Physical ID + ID físico + + + Speed Velocidad - + Maximum Current Potencia máxima - + Driver Controlador - + Capabilities Capacidades - + Version Versión - + Unavailable No disponible - + Disable Deshabilitar @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Resumen - - - + + + CPU CPU - - + + CPU quantity Cantidad de CPU - - + + Motherboard Tarjeta madre - - + + Memory Memoria - - + + Display Adapter Adaptador de pantalla - - + + Sound Adapter Adaptador de sonido - - + + Storage Almacenamiento - - + + Other PCI Devices Otros dispositivos PCI - - + + Battery Batería - - + + Bluetooth Bluetooth - - + + Network Adapter Adaptador de red - - + + Mouse Ratón - - + + Keyboard Teclado - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Impresora - - + + Camera Cámara - - + + Other Devices Other Input Devices Otros dispositivos - - - + + + Device Dispositivo - - - + + + OS SO @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nombre - - + + Vendor Vendedor - - + + Size Tamaño - - + + Type Tipo - - + + Speed Velocidad - + Total Width Ancho total - + Locator Ubicación - + Serial Number Número de serie - + Configured Voltage Voltaje configurado - + Maximum Voltage Voltaje máximo - + Minimum Voltage Voltaje mínimo - + Configured Speed Velocidad configurada - + Data Width Ancho de datos @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nombre - + Vendor Vendedor - + Type Tipo - + Display Input Entrada de la pantalla - + Interface Type Tipo de interfaz - + Support Resolution Resolución compatible - + Current Resolution Resolución actual - + Display Ratio Relación de pantalla - + Primary Monitor Monitor primario - + Size Tamaño - + Serial Number Número de serie - - - Product Date - Fecha de producto - DeviceNetwork - + + Name Nombre - + + Vendor Vendedor - + + Type Tipo - + Version Versión - + Bus Info Información de bus - + Capabilities Capacidades - + Driver Controlador - + Driver Version Versión del controlador - + + Module Alias + Alias del módulo + + + + Physical ID + ID físico + + + Maximum Rate Tasa máxima - + Negotiation Rate Tasa de Negociación - + Port Puerto - + Multicast Multidifusión - + Link Enlace - + Latency Latencia - + IP IP - + Firmware Firmware - + Duplex Dúplex - + Broadcast Difusión - + Auto Negotiation Negociación automática - - Clock - Reloj - - - - Width - Ancho - - - + Memory Address Dirección de memoria - + IRQ IRQ - + MAC Address Dirección MAC - + Logical Name Nombre lógico - + Unavailable No disponible - + Disable Deshabilitar @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nombre - + Vendor Vendedor - + Model Modelo - + Bus Info Información de bus - + Version Versión - + Input/Output Entrada/Salida - + Memory Memoria - + IRQ IRQ - + Latency Latencia - - Clock - Reloj - - - - Width - Ancho - - - + Driver Controlador - + Capabilities Capacidades @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nombre - + Vendor Vendedor - + Model Modelo - + Version Versión - + Bus Info Información de bus - + Capabilities Capacidades - + Driver Controlador - + Maximum Power Potencia máxima - + Speed Velocidad - + Serial Number Número de serie - + Unavailable No disponible - + Disable Deshabilitar @@ -1252,82 +1291,82 @@ DevicePower - + Name Nombre - + Model Modelo - + Vendor Vendedor - + Serial Number Número de serie - + Type Tipo - + Status Estado - + Capacity Capacidad - + Voltage Voltaje - + Slot Ranura - + Design Capacity Capacidad de diseño - + Design Voltage Voltaje de diseño - + SBDS Version Versión SBDS - + SBDS Serial Number Número de serie SBDS - + SBDS Manufacture Date Fecha de fabricación SBDS - + SBDS Chemistry Química SBDS - + Temperature Temperatura @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nombre - + Model Modelo - + Vendor Vendedor - + Serial Number Número de serie - + Shared Compartido - + URI URI - + Status Estado - + Interface Type Tipo de interfaz - + Disable Deshabilitar @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Modelo - - - - + + Vendor Vendedor - - + + Media Type Tipo de medio - - + + + Size Tamaño - + + + Name + Nombre + + + Version Versión - + Capabilities Capacidades - + + + Module Alias + Alias del módulo + + + + + Physical ID + ID físico + + + Firmware Version Versión de firmware - + Speed Velocidad - + Description Descripción - + Serial Number Número de serie - + Interface Interfaz - + Rotation Rate Tasa de rotación - + Unavailable No disponible @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Seleccione un controlador para actualizar - + No drivers found in this folder No se han encontrado controladores en esta carpeta @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Cargando información del dispositivo de audio… - + Loading BIOS Info... Cargando información del BIOS… - + Loading CD-ROM Info... Cargando información del CD-ROM… - + Loading Operating System Info... Cargando información del sistema operativo… - + Loading CPU Info... Cargando información de CPU… - + Loading Other Devices Info... Cargando información de otros dispositivos... - + Loading Power Info... Cargando información de energía... - + Loading Printer Info... Cargando información de impresora… - + Loading Mouse Info... Cargando información del ratón... - + Loading Network Adapter Info... Cargando información del adaptador de red... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Deshabilitar - + Unavailable No disponible @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Deshabilitar - + Unavailable No disponible @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Información del dispositivo - + Display shortcuts Mostrar atajos - + Close Cerrar - + Help Ayuda - + Copy Copiar - + System Sistema - + Export Exportar - + Refresh Actualizar - + Device Manager Administrador de dispositivos - + Hardware Hardware - + Drivers Controladores - + Monitor Monitor - + Overview Resumen - + Display Adapter Adaptador de pantalla - + CPU CPU - + Network Adapter Adaptador de red - + Battery Batería @@ -1639,191 +1691,377 @@ PageDetail - + More Más + + PageDriverBackupInfo + + + + Name + Nombre + + + + + Current Version + Versión actual + + + + + Driver Platform Version + + + + + Status + Estado + + + + Action + Acción + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Actualizando - - - + + + Cancel button Cancelar - + Next Siguiente - + Warning Advertencia - + The device will be unavailable after the driver uninstallation El dispositivo no estará disponible tras la desinstalación del controlador - + Uninstall button Desinstalar - + Uninstalling Desinstalando - + Update successful Actualización exitosa - + Uninstallation successful Desinstalación exitosa - + Update failed Actualización fallida - + Uninstallation failed Desinstalación Fallida - + OK button Aceptar - + Next button Siguiente - + The selected folder does not exist, please select again La carpeta seleccionada no existe, por favor seleccione de nuevo - + Update button Actualizar - + Previous button Anterior - + Broken package Paquete roto - + Unmatched package architecture Arquitectura de paquetes inigualable - - + + The selected file does not exist, please select again El archivo seleccionado no existe, por favor seleccione de nuevo - + It is not a driver No es un controlador - + Unable to install - no digital signature No se puede instalar - no hay firma digital - + Unknown error Error desconocido - + The driver module was not found No se ha encontrado el módulo del controlador - + Invalid module format Formato de módulo inválido - + The driver module has dependencies El módulo del controlador tiene dependencias - PageListView + PageDriverInstallInfo - - Refresh - Actualizar + + + + Device Name + Nombre del dispositivo - + + Version Available + Versión disponible + + + + + Size + Tamaño + + + + + Status + Estado + + + + + Action + Acción + + + + New Version + Nueva versión + + + + Current Version + Versión actual + + + + Missing drivers (%1) + Controladores faltantes (%1) + + + + Outdated drivers (%1) + Controladores obsoletos (%1) + + + + Up-to-date drivers (%1) + Controladores actualizados (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + Aceptar + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nombre + + + + Current Version + Versión actual + + + + Backup Version + + + + + Action + Acción + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Actualizar + + + Export Exportar - + Overview Resumen + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device No se ha podido activar el dispositivo - + Failed to disable the device No se ha podido desactivar el dispositivo - + Failed to disable it: unable to get the device SN No se ha podido desactivar: no se ha podido obtener el SN del dispositivo - + Update Drivers Actualizar controladores - + Uninstall Drivers Desinstalar controladores @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Actualizar - + Export Exportar - + Copy Copiar - + Overview Resumen @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Actualizar - + Export Exportar - + Copy Copiar - - + + Enable Habilitar - + Update drivers Actualizar los controladores - + Uninstall drivers Desinstalar controladores - + Allow it to wake the computer Permitir activar la computadora - + Disable Deshabilitar - - + + Failed to disable it: unable to get the device SN No se ha podido desactivar: no se ha podido obtener el SN del dispositivo - + Failed to disable the device No se ha podido desactivar el dispositivo - + Failed to enable the device No se ha podido activar el dispositivo - + Update Drivers Actualizar controladores - + Uninstall Drivers Desinstalar controladores @@ -1924,867 +2162,847 @@ QObject - + SubVendor Subvendedor - + SubDevice Subdispositivo - + Driver Controlador - + Driver Status Estado del controlador - + Driver Activation Cmd Comando de activación del controlador - - + - + + Config Status Estado de configuración - - - - - - - physical id - ID físico - - - + latency latencia - + Phys Phys - + Sysfs Sysfs - + Handlers Manejadores - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Modelo - - - - Vendor - Vendedor - - - + Version Versión - - + + + Bus Bus - - + + BIOS Information Información del BIOS - - + + Base Board Information Información de la placa base - - + + System Information Información del sistema - - + + Chassis Information Información de chasis - - + + Physical Memory Array El conjunto de la memoria física - + Release Date Fecha de lanzamiento - + Address Dirección - + Runtime Size Tamaño de tiempo de ejecución - + ROM Size Tamaño de ROM - + Characteristics Caracteristicas - + BIOS Revision Revisión del BIOS - + Firmware Revision Revisión de firmware - - + + Product Name Nombre de producto - - - + + + Serial Number Número de serie - - - + + + Asset Tag Etiqueta de activo - - + + Features Características - + Location In Chassis Ubicación en chasis - + Chassis Handle Manejador de chasis - - + + Type Tipo - + Contained Object Handles Manejador de objeto contenido - - + + UUID UUID - + Wake-up Type Tipo de despertador - - + + SKU Number Número SKU - + Family Familia - + Lock Bloquear - + Boot-up State Estado de arranque - + Power Supply State Estado de fuente de alimentación - + Thermal State Estado térmico - + Security Status Estado de seguridad - + OEM Information Información de OEM - + Height Altura - + Number Of Power Cords Número de cables de alimentación - + Contained Elements Elementos contenidos - + Location Ubicación - + Error Correction Type Tipo de corrección de errores - + Maximum Capacity Capacidad máxima - - + + Error Information Handle Manejador de información de errores - + Number Of Devices Número de dispositivos - + BIOS ROMSIZE BIOS ROMSIZE - + Release date Fecha de lanzamiento - + Board name Nombre de tarjeta - + SMBIOS Version Versión del SMBIOS - + Language Description Format Descripción de formato de Idioma - + Installable Languages Idiomas instalables - + Currently Installed Language Idiomas actualmente instalados - + BD Address BD Address - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Tipo de paquete - + Link policy Política de enlace - + Link mode Modo de enlace - - + + Class Clase - + Service Classes Clases de servicio - + Device Class Clase de dispositivo - + HCI Version Versión HCI - + LMP Version Versión LMP - + Subversion Subversión - + Device Dispositivo - - + + Serial ID Serie ID - + product producto - + description Descripción - + Powered Potenciado - + Discoverable Reconocible - + Pairable Emparejable - + Modalias Modalias - + Discovering Descubriendo - + Driver Modules Módulos de controladores - - - + + + + + Device File Archivo del dispositivo - + Device Files Archivos del dispositivo - - + + + Device Number Número del dispositivo - - Module Alias - Alias del módulo - - - + Application Solicitud - + status estado - - + + + logical name nombre lógico - - + + ansiversion versión ANSI - + CPU implementer Implementador de CPU - + CPU architecture Arquitectura de CPU - + CPU variant Variante de CPU - + CPU part Parte de CPU - + CPU revision Versión de CPU - + One Uno - + Two Dos - + Four Cuatro - + Six Seis - + Eight Ocho - + Ten Diez - + Twelve Doce - + Fourteen Catorce - + Sixteen Dieciséis - + Eighteen Dieciocho - + Twenty Veinte - + Twenty-two Veintidós - + Twenty-four Veinticuatro - + Twenty-six Veintiséis - + Twenty-eight Veintiocho - + Thirty Treinta - + Thirty-two Treinta y dos - + Thirty-four Treinta y cuatro - + Thirty-six Treinta y seis - + Thirty-eight Treinta y ocho - + Forty Cuarenta - + Forty-two Cuarenta y dos - + Forty-four Cuarenta y cuatro - + Forty-six Cuarenta y seis - + Forty-eight Cuarenta y ocho - + Fifty Cincuenta - + Fifty-two Cincuenta y dos - + Fifty-four Cincuenta y cuatro - + Fifty-six Cincuenta y seis - + Fifty-eight Cincuenta y ocho - + Sixty Sesenta - + Sixty-two Sesenta y dos - + Sixty-four Sesenta y cuatro - + Sixty-six Sesenta y seis - + Sixty-eight Sesenta y ocho - + Seventy Setenta - + Seventy-two Setenta y dos - + Seventy-four Setenta y cuatro - + Seventy-six Setenta y seis - + Seventy-eight Setenta y ocho - + Eighty Ochenta - + Eighty-two Ochenta y dos - + Eighty-four Ochenta y cuatro - + Eighty-six Ochenta y seis - + Eighty-eight Ochenta y ocho - + Ninety Noventa - + Ninety-two Noventa y dos - + Ninety-four Noventa y cuatro - + Ninety-six Noventa y seis - + Ninety-eight Noventa y ocho - + One hundred Cien - + One hundred and Two Ciento dos - + One hundred and four Ciento cuatro - + One hundred and Six Ciento seis - + One hundred and Eight Ciento ocho - + One hundred and Ten Ciento diez - + One hundred and Twelve Ciento doce - + One hundred and Fourteen Ciento catorce - + One hundred and Sixteen Ciento dieciséis - + One hundred and Eighteen Ciento dieciocho - + One hundred and Twenty Ciento veinte - + One hundred and Twenty-two Ciento veintidós - + One hundred and Twenty-four Ciento veinticuatro - + One hundred and Twenty-six Ciento veintiséis - + One hundred and Twenty-eight Ciento veintiocho - + One hundred and Ninety-two Ciento noventa y dos - + Two hundred and fifty-six Doscientos cincuenta y seis @@ -2824,988 +3042,1084 @@ Versión de GLSL - - - + + + Unknown Desconocido - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Clase de hardware - - - - + + + + CPU CPU - - - - + + + + No CPU found No se encontró ningún CPU - - - - + + + + Motherboard Tarjeta madre - - - - + + + + No motherboard found No se encontró la tarjeta madre - - - - + + + + Memory Memoria - - - - + + + + No memory found No se encontró la memoria - - - - + + + + Storage Almacenamiento - - - - + + + + No disk found No se encontró ningún disco - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Adaptador de pantalla - - - - + + + + No GPU found No se encontró ninguna GPU - - - - + + + + Monitor Monitor - - - - + + + + No monitor found No se encontró ningún monitor - - - - - + + + + + Network Adapter Adaptador de red - - - - + + + + No network adapter found No se encontraron adaptadores de red - - - - - + + + + + Sound Adapter Adaptador de sonido - - - - + + + + No audio device found No se encontraron dispositivos de audio - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found No se encontraron dispositivos Bluetooth - - - - + + + + Other PCI Devices Otros dispositivos PCI - - - - + + + + No other PCI devices found No se encontraron otros dispositivos PCI - - - - + + + + Power Energía - - - - + + + + No battery found No se encontró batería - - - - - + + + + + Keyboard Teclado - - - - + + + + No keyboard found No se encontró teclado - - - - - + + + + + Mouse Ratón - - - - + + + + No mouse found No se encontró ningún ratón - - - - - - + + + + + + Printer Impresora - - - - + + + + No printer found No se encontraron impresoras - - - - + + + + Camera Cámara - - - - + + + + No camera found No se encontró ninguna cámara - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found No se encontró ningún CD-ROM - - - - - + + + + + Other Devices Otros dispositivos - - - - + + + + No other devices found No se encontraron otros dispositivos - + Array Handle Manejador de arreglo - + Form Factor Factor de forma - + Set Conjunto - + Bank Locator Localizador de bancos - + Type Detail Detalle de tipo - + Part Number Número de parte - + Rank Rango - + Memory Technology Tecnología de memoria - + Memory Operating Mode Capability Capacidad de modo operativo de memoria - + Firmware Version Versión de firmware - + Module Manufacturer ID ID del fabricante del módulo - + Module Product ID ID del producto del módulo - + Memory Subsystem Controller Manufacturer ID ID del fabricante del controlador del subsistema de memoria - + Memory Subsystem Controller Product ID ID del producto del controlador del subsistema de memoria - + Non-Volatile Size Tamaño no volátil - + Volatile Size Tamaño volátil - + Cache Size Tamaño caché - + Logical Size Tamaño lógico - - - - - + + + + + inch pulgadas - + Date Fecha - + ioport ioport - + network red - - + battery Batería - + native-path ruta-nativa - + power supply fuente de alimentación - + updated actualizado - + has history tiene historial - + has statistics tiene estadísticas - + rechargeable recargable - + state estado - + warning-level nivel-advertencia - + energy energía - + energy-empty carga-vacía - + energy-full carga-completa - + energy-full-design carga-completa-diseño - + energy-rate tasa-carga - + voltage voltaje - + percentage porcentaje - + technology tecnología - + icon-name nombre-ícono - + online online - + daemon-version versión-demonio - + on-battery con-batería - + lid-is-closed tapa-está-cerrada - + lid-is-present tapa-está-abierta - + critical-action acción-crítica - + copies copias - + job-cancel-after cancelar-trabajo-después - + job-hold-until mantener-trabajo-hasta - + job-priority prioridad-trabajo - + marker-change-time marcador-cambio-tiempo - + number-up numeración - + orientation-requested orientación-solicitada - + print-color-mode modo-impresión-color - + printer-is-accepting-jobs impresora-está-aceptando-trabajos - + printer-is-shared impresora-es-compartida - + printer-is-temporary impresora-es-temporal - + printer-make-and-model impresora-marca-y-modelo - + printer-state-change-time tiempo-cambio-estado-impresora - + printer-state-reasons razones-estado-impresora - + printer-type tipo-impresora - + printer-uri-supported uri-impresora-compatible - + sides lados - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info información de bus - + logicalsectorsize tamaño de sector lógico - + sectorsize tamaño de sector - + guid guid - + Geometry (Logical) Geometría (lógica) - - + + Device Manager Administrador de dispositivos - + Device Manager is a handy tool for viewing hardware information and managing the devices. Administrador de dispositivos de Deepin es una herramienta útil para ver la información del hardware y administrarlo. - + New drivers available! Install or update them now. ¡Nuevos controladores disponibles! Instálelos o actualícelos ahora. - + + View + + + + Include subfolders Incluir subcarpetas - + Search for drivers in this path Buscar controladores en esta ruta - - - - Device Name - Nombre del dispositivo - - - - Version Available - Versión disponible - - - - - Size - Tamaño - - - - - Status - Estado - - - - - Action - Acción - - - - New Version - Nueva versión - - - - Current Version - Versión actual - - - - Missing drivers (%1) - Controladores faltantes (%1) - - - - Outdated drivers (%1) - Controladores obsoletos (%1) - - - - Up-to-date drivers (%1) - Controladores actualizados (%1) - - - + %1 driver updates available %1 actualizaciones de controladores disponibles - - + + Time checked: %1 Tiempo de comprobación: %1 - + Downloading drivers for %1... Descargando controladores para %1... - + Download speed: %1 Downloaded %2/%3 Velocidad de descarga: %1 Descargado %2/%3 - + Installing drivers for %1... Instalando controladores para %1... - + %1 drivers installed, %2 drivers failed %1 controladores instalados, %2 controladores que fallaron - + %1 drivers installed %1 controladores instalados - + Failed to install drivers Error al instalar los controladores - + Network error. Reconnecting... Error de red. Reconectando... - + Download speed: %1 Velocidad de descarga: %1 - + Your drivers are up to date Sus controladores están actualizados - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot Reiniciar - + Please %1 for the installed drivers to take effect Por favor espere, %1 para que los controladores instalados surtan efecto - - + + View backup path + + + + + Backup All + + + + + submit feedback Enviar comentarios - + Please try again or %1 to us Vuelva a intentarlo o %1 contáctenos - + Install All Instalar todo - - + + Scan Again Buscar nuevamente - + Cancel Cancelar - + Scanning hardware device drivers, please wait... Buscando controladores para los dispositivos , espere... - - + + Scanning %1 Buscando %1 - + Scan failed Búsqueda fallida - + Network unavailable Red no disponible - + Please check your network connection Por favor, compruebe su conexión de red - + Please scan again or %1 to us Escanee de nuevo o %1 contáctenos - + You are installing a driver, which will be interrupted if you exit. Está instalando un controlador, se interrumpirá si sale. - + + + Are you sure you want to exit? ¿Está seguro de que quiere salir? - + + + Exit button Salir - + + + Cancel button Cancelar - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Adaptador de Bluetooth - - + + Imaging device Dispositivo de imagen - + Display adapter Adaptador de pantalla - + Sound card Tarjeta de sonido - + Network adapter Adaptador de red - + Wireless network adapter Adaptador de red inalámbrica - + Installation successful Instalación exitosa - + Installation failed Instalación fallida - + Downloading Descargando - + Installing Instalando - + Not installed No instalado - + Out-of-date Tiempo agotado - + Waiting Esperando - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Error desconocido - + Network error Error de red - + Canceled Cancelado - + Failed to get driver files Error al obtener los archivos del controlador - + Update Actualizar - + + Backup + + + + + Restore + + + + Install Instalar @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Deshabilitar - + Refresh Actualizar - + Export Exportar - + Update drivers Actualizar los controladores - + Uninstall drivers Desinstalar controladores - + Allow it to wake the computer Permitir activar la computadora - - + + Enable Habilitar @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Actualizar - + Export Exportar - + Copy Copiar - + Disable Deshabilitar - + Unavailable No disponible @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Seleccione una carpeta local @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Cargando… - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_fi.ts b/deepin-devicemanager/translations/deepin-devicemanager_fi.ts index 1691e42b1..50baa8f11 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_fi.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_fi.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Lisää @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Lisää - + Collapse Tiivistä @@ -51,14 +63,14 @@ DetailTreeView - - + + More Lisää - - + + Collapse Tiivistä @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Poista - + Unavailable Ei saatavilla @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Laitteen nimi - - + + Name Nimi - - + + Vendor Valmistaja - - Model - Malli + + Chip + Piiri - - Version - Versio + + Capabilities + Ominaisuuksia - - Bus Info - Väylän tiedot + + + Module Alias + Moduulialias - - Chip - Piiri + + + Physical ID + Fyysinen tunnus - - Capabilities - Ominaisuuksia + + SysFS_Path + - - Clock - Kello + + Description + Kuvaus + + + + Revision + - - Width - Leveys + + KernelModeDriver + - + Memory Address Muistin osoite - + IRQ IRQ - + Unavailable Ei saatavilla - + Disable Poista @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nimi - + Vendor Valmistaja - + Model Malli @@ -173,17 +192,17 @@ DeviceBios - + Vendor Valmistaja - + Version Versio - + Chipset Piirisarja @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nimi - + Vendor Valmistaja - + Version Versio - + Model Malli - + + Module Alias + Moduulialias + + + + Physical ID + Fyysinen tunnus + + + Speed Nopeus - + Maximum Power Suurin teho - + Driver Version Ajurin versio - + Driver Ajuri - + Capabilities Ominaisuuksia - + Bus Info Väylän tiedot - + Logical Name Looginen nimi - + MAC Address Mac osoite - + Unavailable Ei saatavilla - + Disable Poista @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nimi - + Vendor Valmistaja - + Model Malli - + Version Versio - + Bus Info Väylän tiedot - + Capabilities Ominaisuuksia - + Driver Ajuri - + Maximum Power Suurin teho - + Speed Nopeus - + + Module Alias + Moduulialias + + + + Physical ID + Fyysinen tunnus + + + Unavailable Ei saatavilla - + Disable Poista @@ -322,7 +361,7 @@ DeviceComputer - + Name Nimi @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nimi - - + + Vendor Valmistaja - + CPU ID Prosessorin tunnus - + Core ID Core ID - + Threads Säikeet - - Current Speed - Nykyinen nopeus - - - + BogoMIPS BogoMIPS - - + + Architecture Arkkitehtuuri - + CPU Family Prosessorin tuoteperhe - + Model Malli - - + + Processor Prosessori - + Core(s) Ytimet - + Virtualization Virtualisointi - + Flags Tunnus - + Extensions Laajennukset - + L3 Cache L3 välimuisti - + L2 Cache L2 välimuisti - + L1i Cache L1i välimuisti - + L1d Cache L1d välimuisti - + Stepping Kerroin - + Speed Nopeus - + + + Max Speed Maksimi nopeus @@ -447,132 +483,127 @@ DeviceGpu - + Name Nimi - + Vendor Valmistaja - + Model Malli - + Version Versio - + Graphics Memory Grafiikkamuisti - + + Module Alias + Moduulialias + + + Physical ID Fyysinen tunnus - + Memory Address Muistin osoite - + IO Port IO-portti - + Bus Info Väylän tiedot - + Maximum Resolution Maksimi tarkkuus - + Minimum Resolution Minimi tarkkuus - + Current Resolution Nykyinen tarkkuus - + Driver Ajuri - + Description Kuvaus - - Clock - Kello - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output Näytön ulostulo - + Capabilities Ominaisuuksia - + IRQ IRQ - - Width - Leveys - - - + Unavailable Ei saatavilla @@ -580,62 +611,72 @@ DeviceImage - + Name Nimi - + Vendor Valmistaja - + Version Versio - + Model Malli - + Bus Info Väylän tiedot - + + Module Alias + Moduulialias + + + + Physical ID + Fyysinen tunnus + + + Speed Nopeus - + Maximum Power Suurin teho - + Driver Ajuri - + Capabilities Ominaisuuksia - + Serial Number Sarjanumero - + Unavailable Ei saatavilla - + Disable Poista @@ -643,62 +684,72 @@ DeviceInput - + Name Nimi - + Vendor Valmistaja - + Model Malli - + Interface Liitäntä - + Bus Info Väylän tiedot - + + Module Alias + Moduulialias + + + + Physical ID + Fyysinen tunnus + + + Speed Nopeus - + Maximum Current Maksimi - + Driver Ajuri - + Capabilities Ominaisuuksia - + Version Versio - + Unavailable Ei saatavilla - + Disable Poista @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Yleiskuva - - - + + + CPU Prosessori - - + + CPU quantity Suorittimen määrä - - + + Motherboard Emolevy - - + + Memory Muisti - - + + Display Adapter Näytönohjain - - + + Sound Adapter Äänikortti - - + + Storage Levytila - - + + Other PCI Devices Muut PCI -laitteet - - + + Battery Akku - - + + Bluetooth Bluetooth - - + + Network Adapter Verkkokortti - - + + Mouse Hiiri - - + + Keyboard Näppäimistö - - + + Monitor Näyttö - - + + CD-ROM CD-ROM - - + + Printer Tulostin - - + + Camera Kamera - - + + Other Devices Other Input Devices Muut laitteet - - - + + + Device Laite - - - + + + OS OS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nimi - - + + Vendor Valmistaja - - + + Size Koko - - + + Type Tyyppi - - + + Speed Nopeus - + Total Width Kokonaisleveys - + Locator Kohdistus - + Serial Number Sarjanumero - + Configured Voltage Määritetty jännite - + Maximum Voltage Suurin jännite - + Minimum Voltage Pienin jännite - + Configured Speed Määritetty nopeus - + Data Width Datan leveys @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nimi - + Vendor Valmistaja - + Type Tyyppi - + Display Input Näytön sisääntulo - + Interface Type Liitännän tyyppi - + Support Resolution Tukee tarkkuutta - + Current Resolution Nykyinen tarkkuus - + Display Ratio Näytön taajuus - + Primary Monitor Ensisijainen näyttö - + Size Koko - + Serial Number Sarjanumero - - - Product Date - Valmistuspäivä - DeviceNetwork - + + Name Nimi - + + Vendor Valmistaja - + + Type Tyyppi - + Version Versio - + Bus Info Väylän tiedot - + Capabilities Ominaisuuksia - + Driver Ajuri - + Driver Version Ajurin versio - + + Module Alias + Moduulialias + + + + Physical ID + Fyysinen tunnus + + + Maximum Rate Suurin taajuus - + Negotiation Rate Aloitustaajuus - + Port Portti - + Multicast Ryhmälähetys - + Link Linkki - + Latency Viive - + IP IP - + Firmware Firmware - + Duplex Kaksinpuolin - + Broadcast Alaverkko - + Auto Negotiation Automaattinen neuvottelu - - Clock - Kello - - - - Width - Leveys - - - + Memory Address Muistin osoite - + IRQ IRQ - + MAC Address Mac osoite - + Logical Name Looginen nimi - + Unavailable Ei saatavilla - + Disable Poista @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nimi - + Vendor Valmistaja - + Model Malli - + Bus Info Väylän tiedot - + Version Versio - + Input/Output Tulo/lähtö - + Memory Muisti - + IRQ IRQ - + Latency Viive - - Clock - Kello - - - - Width - Leveys - - - + Driver Ajuri - + Capabilities Ominaisuuksia @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nimi - + Vendor Valmistaja - + Model Malli - + Version Versio - + Bus Info Väylän tiedot - + Capabilities Ominaisuuksia - + Driver Ajuri - + Maximum Power Suurin teho - + Speed Nopeus - + Serial Number Sarjanumero - + Unavailable Ei saatavilla - + Disable Poista @@ -1252,82 +1291,82 @@ DevicePower - + Name Nimi - + Model Malli - + Vendor Valmistaja - + Serial Number Sarjanumero - + Type Tyyppi - + Status Tila - + Capacity Kapasiteetti - + Voltage Jännite - + Slot Paikka - + Design Capacity Suunniteltu kapasiteetti - + Design Voltage Suunniteltu jännite - + SBDS Version SBDS versio - + SBDS Serial Number SBDS Sarjanumero - + SBDS Manufacture Date SBDS Valmistuspäivä - + SBDS Chemistry SBDS kemia - + Temperature Lämpötila @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nimi - + Model Malli - + Vendor Valmistaja - + Serial Number Sarjanumero - + Shared Jaettu - + URI Osoite - + Status Tila - + Interface Type Liitännän tyyppi - + Disable Poista @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Malli - - - - + + Vendor Valmistaja - - + + Media Type Median tyyppi - - + + + Size Koko - + + + Name + Nimi + + + Version Versio - + Capabilities Ominaisuuksia - + + + Module Alias + Moduulialias + + + + + Physical ID + Fyysinen tunnus + + + Firmware Version Firmware versio - + Speed Nopeus - + Description Kuvaus - + Serial Number Sarjanumero - + Interface Liitäntä - + Rotation Rate Pyörimisnopeus - + Unavailable Ei saatavilla @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Valitse päivitettävä ohjain - + No drivers found in this folder Kansiosta ei löytynyt ohjaimia @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Ladataan äänilaitteen tietoja... - + Loading BIOS Info... Ladataan BIOS-tietoja... - + Loading CD-ROM Info... Ladataan CD-ROM-tietoja... - + Loading Operating System Info... Ladataan käyttöjärjestelmän tietoja... - + Loading CPU Info... Ladataan prosessorin tietoja... - + Loading Other Devices Info... Ladataan muiden laitteiden tietoja... - + Loading Power Info... Ladataan virtatietoja... - + Loading Printer Info... Ladataan tulostintietoja... - + Loading Mouse Info... Ladataan hiiren tietoja... - + Loading Network Adapter Info... Ladataan verkkokortin tietoja... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Poista - + Unavailable Ei saatavilla @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Poista - + Unavailable Ei saatavilla @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Laiteen tiedot - + Display shortcuts Näytä pikakuvakkeet - + Close Sulje - + Help Apua - + Copy Kopio - + System Järjestelmä - + Export Vie - + Refresh Virkistä - + Device Manager Laitehallinta - + Hardware Laitteisto - + Drivers Ajurit - + Monitor Näyttö - + Overview Yleiskuva - + Display Adapter Näytönohjain - + CPU Prosessori - + Network Adapter Verkkokortti - + Battery Akku @@ -1639,191 +1691,377 @@ PageDetail - + More Lisää + + PageDriverBackupInfo + + + + Name + Nimi + + + + + Current Version + Nykyinen versio + + + + + Driver Platform Version + + + + + Status + Tila + + + + Action + Toiminta + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Päivittää - - - + + + Cancel button Peru - + Next Seuraava - + Warning Varoitus - + The device will be unavailable after the driver uninstallation Laite ei ole käytettävissä ohjaimen poistamisen jälkeen - + Uninstall button Poista asennus - + Uninstalling Poistetaan - + Update successful Päivitys onnistui - + Uninstallation successful Asennuksen poisto onnistui - + Update failed Päivitys epäonnistui - + Uninstallation failed Asennuksen poistaminen epäonnistui - + OK button OK - + Next button Seuraava - + The selected folder does not exist, please select again Valittua kansiota ei ole, valitse uudelleen - + Update button Päivitä - + Previous button Edellinen - + Broken package Viallinen paketti - + Unmatched package architecture Epäsopiva pakettiarkkitehtuuri - - + + The selected file does not exist, please select again Valittua tiedostoa ei ole, valitse uudelleen - + It is not a driver Tämä ei ole ajuri - + Unable to install - no digital signature Asennus ei onnistu – ei digitaalista allekirjoitusta - + Unknown error Tuntematon virhe - + The driver module was not found Ohjainta ei löytynyt - + Invalid module format Virheellinen moduulin formaatti - + The driver module has dependencies Ohjaimella on riippuvuuksia - PageListView + PageDriverInstallInfo - - Refresh - Virkistä + + + + Device Name + Laitteen nimi - + + Version Available + Versio saatavilla + + + + + Size + Koko + + + + + Status + Tila + + + + + Action + Toiminta + + + + New Version + Uusi versio + + + + Current Version + Nykyinen versio + + + + Missing drivers (%1) + Puuttuvat ajurit (%1) + + + + Outdated drivers (%1) + Vanhetuneet ajurit (%1) + + + + Up-to-date drivers (%1) + Ajantasaiset ajurit (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nimi + + + + Current Version + Nykyinen versio + + + + Backup Version + + + + + Action + Toiminta + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Virkistä + + + Export Vie - + Overview Yleiskuva + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Laitteen käyttöönotto epäonnistui - + Failed to disable the device Laitteen poistaminen käytöstä epäonnistui - + Failed to disable it: unable to get the device SN Käytöstä poisto epäonnistui: laitteen SN:n haku epäonnistui - + Update Drivers Päivitä ajurit - + Uninstall Drivers Poista ajurit @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Virkistä - + Export Vie - + Copy Kopio - + Overview Yleiskuva @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Virkistä - + Export Vie - + Copy Kopio - - + + Enable Käyttöön - + Update drivers Päivitä ajurit - + Uninstall drivers Poista ajurit - + Allow it to wake the computer Salli sen herättää tietokone - + Disable Poista - - + + Failed to disable it: unable to get the device SN Käytöstä poisto epäonnistui: laitteen SN:n haku epäonnistui - + Failed to disable the device Laitteen poistaminen käytöstä epäonnistui - + Failed to enable the device Laitteen käyttöönotto epäonnistui - + Update Drivers Päivitä ajurit - + Uninstall Drivers Poista ajurit @@ -1924,867 +2162,847 @@ QObject - + SubVendor Alihankkija - + SubDevice Alalaite - + Driver Ajuri - + Driver Status Ajurin tila - + Driver Activation Cmd Ajurin aktivointi cmd - - + - + + Config Status Määrityksen tila - - - - - - - physical id - fyysinen tunnus - - - + latency viive - + Phys Phys - + Sysfs Sysfs - + Handlers Käsittelijät - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Malli - - - - Vendor - Valmistaja - - - + Version Versio - - + + + Bus Väylä - - + + BIOS Information BIOS-tiedot - - + + Base Board Information Pohjan tiedot - - + + System Information Järjestelmätiedot - - + + Chassis Information Laitteen tiedot - - + + Physical Memory Array Fyysisen muistin ryhmä - + Release Date Julkaisupäivä - + Address Osoite - + Runtime Size Suorituksen kesto - + ROM Size ROM-koko - + Characteristics Ominaisuudet - + BIOS Revision BIOS-versio - + Firmware Revision Firmware-versio - - + + Product Name Tuotteen nimi - - - + + + Serial Number Sarjanumero - - - + + + Asset Tag Sisältökuvaus - - + + Features Ominaisuuksia - + Location In Chassis Sijainti kotelossa - + Chassis Handle Laitteen käsittely - - + + Type Tyyppi - + Contained Object Handles Sisällön käsittely - - + + UUID UUID - + Wake-up Type Herätys tyyppi - - + + SKU Number SKU numero - + Family Perhe - + Lock Lukko - + Boot-up State Käynnistystila - + Power Supply State Virtalähteen tila - + Thermal State Lämpötila - + Security Status Turvallisuuden tila - + OEM Information OEM-tiedot - + Height Korkeus - + Number Of Power Cords Virtajohtojen lukumäärä - + Contained Elements Sisältää elementtejä - + Location Paikannin - + Error Correction Type Virheenkorjauksen tyyppi - + Maximum Capacity Maksimi kapasiteetti - - + + Error Information Handle Virheilmoitusten käsittely - + Number Of Devices Laitteiden määrä - + BIOS ROMSIZE BIOS-muistin koko - + Release date Julkaisupäivä - + Board name Piirilevyn nimi - + SMBIOS Version SMBIOS Versio - + Language Description Format Kieli Kuvaus Formaatti - + Installable Languages Asennettavat kielet - + Currently Installed Language Asennettu kieli - + BD Address BD-osoite - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Pakettityyppi - + Link policy Yhteyskäytäntö - + Link mode Linkin tila - - + + Class Luokka - + Service Classes Palvelun luokat - + Device Class Laiteluokka - + HCI Version HCI versio - + LMP Version LMP versio - + Subversion Alaversio - + Device Laite - - + + Serial ID Sarjan tunnus - + product tuote - + description kuvaus - + Powered Käytössä - + Discoverable Löydettävissä - + Pairable Liitettävissä - + Modalias Modpeite - + Discovering Hakemassa - + Driver Modules Ajuripaketit - - - + + + + + Device File Laitetiedosto - + Device Files Laiteen tiedostot - - + + + Device Number Laitteen numero - - Module Alias - Moduulialias - - - + Application Sovellus - + status tila - - + + + logical name looginen nimi - - + + ansiversion ansiversio - + CPU implementer CPU-valmistaja - + CPU architecture CPU-arkkitehtuuri - + CPU variant CPU-muunnelma - + CPU part CPU-osa - + CPU revision CPU-versio - + One Yksi - + Two Kaksi - + Four Neljä - + Six Kuusi - + Eight Kahdeksan - + Ten Kymmenen - + Twelve Kaksitoista - + Fourteen Viisitoista - + Sixteen Kuusitoista - + Eighteen Kahdeksantoista - + Twenty Kaksikymmentä - + Twenty-two Kaksikymmentäkaksi - + Twenty-four Kaksikymmentäneljä - + Twenty-six Kaksikymmentäkuusi - + Twenty-eight Kaksikymmentäkahdeksan - + Thirty Kolmekymmentä - + Thirty-two Kolmekymmentäkaksi - + Thirty-four Kolmekymmentäneljä - + Thirty-six Kolmekymmentäkuusi - + Thirty-eight Kolmekymmentäkahdeksan - + Forty Neljäkymmentä - + Forty-two Neljäkymmentäkaksi - + Forty-four Neljäkymmentäneljä - + Forty-six Neljäkymmentäkuusi - + Forty-eight Neljäkymmentäkahdeksan - + Fifty Viisikymmentä - + Fifty-two Viisikymmentäkaksi - + Fifty-four Viisikymmentäneljä - + Fifty-six Viisikymmentäkuusi - + Fifty-eight Viisikymmentäkahdeksan - + Sixty Kuusikymmentä - + Sixty-two Kuusikymmentäkaksi - + Sixty-four Kuusikymmentäneljä - + Sixty-six Kuusikymmentäkuusi - + Sixty-eight Kuusikymmentäkahdeksan - + Seventy Seitsemänkymmentä - + Seventy-two Seitsemänkymmentäkaksi - + Seventy-four Seitsemänkymmentäneljä - + Seventy-six Seitsemänkymmentäkuusi - + Seventy-eight Seitsemänkymmentäkahdeksan - + Eighty Kahdeksankymmentä - + Eighty-two Kahdeksankymmentäkaksi - + Eighty-four Kahdeksankymmentäneljä - + Eighty-six Kahdeksankymmentäkuusi - + Eighty-eight Kahdeksankymmentäkahdeksan - + Ninety Yhdeksänkymmentä - + Ninety-two Yhdeksänkymmentäkaksi - + Ninety-four Yhdeksänkymmentäneljä - + Ninety-six Yhdeksänkymmentäkuusi - + Ninety-eight Yhdeksänkymmentäkahdeksan - + One hundred Sata - + One hundred and Two Satakaksi - + One hundred and four Sataneljä - + One hundred and Six Satakuusi - + One hundred and Eight Satakahdeksan - + One hundred and Ten Satakymmenen - + One hundred and Twelve Sata kaksitoista - + One hundred and Fourteen Sata neljätoista - + One hundred and Sixteen Sata kuusitoista - + One hundred and Eighteen Sata kahdeksantoista - + One hundred and Twenty Sata kaksikymmentä - + One hundred and Twenty-two Sata kaksikymmentäkaksi - + One hundred and Twenty-four Sata kaksikymmentäneljä - + One hundred and Twenty-six Sata kaksikymmentäkuusi - + One hundred and Twenty-eight Sata kaksikymmentäkahdeksan - + One hundred and Ninety-two Sata yhdeksänkymmentäkaksi - + Two hundred and fifty-six Kaksisataa viisikymmentäkuusi @@ -2824,988 +3042,1084 @@ GLSL-versio - - - + + + Unknown Tuntematon - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Laitteistoluokka - - - - + + + + CPU Prosessori - - - - + + + + No CPU found Suoritinta ei löytynyt - - - - + + + + Motherboard Emolevy - - - - + + + + No motherboard found Emolevyä ei löytynyt - - - - + + + + Memory Muisti - - - - + + + + No memory found Muistia ei löytynyt - - - - + + + + Storage Levytila - - - - + + + + No disk found Levyä ei löytynyt - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Näytönohjain - - - - + + + + No GPU found GPU:ta ei löytynyt - - - - + + + + Monitor Näyttö - - - - + + + + No monitor found Näyttöä ei löytynyt - - - - - + + + + + Network Adapter Verkkokortti - - - - + + + + No network adapter found Verkkokorttia ei löytynyt - - - - - + + + + + Sound Adapter Äänikortti - - - - + + + + No audio device found Äänilaitetta ei löytynyt - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Bluetooth ei löytynyt - - - - + + + + Other PCI Devices Muut PCI -laitteet - - - - + + + + No other PCI devices found Muita PCI-laitteita ei löytynyt - - - - + + + + Power Virta - - - - + + + + No battery found Akkua ei löytynyt - - - - - + + + + + Keyboard Näppäimistö - - - - + + + + No keyboard found Näppäimistöä ei löytynyt - - - - - + + + + + Mouse Hiiri - - - - + + + + No mouse found Hiirtä ei löytynyt - - - - - - + + + + + + Printer Tulostin - - - - + + + + No printer found Tulostinta ei löytynyt! - - - - + + + + Camera Kamera - - - - + + + + No camera found Kameraa ei löytynyt - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found CD-levyä ei löytynyt! - - - - - + + + + + Other Devices Muut laitteet - - - - + + + + No other devices found Muita laitteita ei löytynyt - + Array Handle Matriisin käsittely - + Form Factor Muotoseikka - + Set Aseta - + Bank Locator Muistin sijainti - + Type Detail Tyypin tiedot - + Part Number Osanumero - + Rank Sijoitus - + Memory Technology Muistitekniikka - + Memory Operating Mode Capability Muistin käyttötilan ominaisuus - + Firmware Version Firmware versio - + Module Manufacturer ID Moduulin valmistajan tunnus - + Module Product ID Moduulin tuotetunnus - + Memory Subsystem Controller Manufacturer ID Muistin alihankkijan tunnus - + Memory Subsystem Controller Product ID Muistin alihankkijan tuotetunnus - + Non-Volatile Size Pysyvä koko - + Volatile Size Kiinteä koko - + Cache Size Välimuistin koko - + Logical Size Looginen koko - - - - - + + + + + inch tuumaa - + Date Päivämäärä - + ioport ioportti - + network lähiverkko - - + battery akku - + native-path natiivi-polku - + power supply virtalähde - + updated päivitetty - + has history on historiaa - + has statistics on tilastoja - + rechargeable ladattava - + state tila - + warning-level varoitus-taso - + energy käyttöaika - + energy-empty energia-tyhjä - + energy-full energia-täysi - + energy-full-design täynnä-energiaa - + energy-rate energia-osuus - + voltage jännite - + percentage prosenttiosuus - + technology teknologia - + icon-name kuvake-nimi - + online verkossa - + daemon-version palvelun-versio - + on-battery akkuvirralla - + lid-is-closed kansi-on-suljettu - + lid-is-present kansi-on-auki - + critical-action kriittiset-toimet - + copies kopioita - + job-cancel-after työn-peruminen-jälkeen - + job-hold-until työn-pito-kunnes - + job-priority työn-prioriteetti - + marker-change-time markkeri-muutos-aika - + number-up Määrä - + orientation-requested suunta-pyydettiin - + print-color-mode tulostin-väri-moodi - + printer-is-accepting-jobs tulostin-on-hyväksynyt-töitä - + printer-is-shared tulostin-on-jaettu - + printer-is-temporary tulostin-on-tilapäisesti - + printer-make-and-model tulostin-valmistaja-malli - + printer-state-change-time tulostimen-tila-muutos-aika - + printer-state-reasons tulostimen-tila-syistä - + printer-type tulostimen-tyyppi - + printer-uri-supported tulostimen-osoite-tuettu - + sides sivut - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info väylän tiedot - + logicalsectorsize looginensektorikoko - + sectorsize sektorikoko - + guid guid - + Geometry (Logical) Geometria (looginen) - - + + Device Manager Laitehallinta - + Device Manager is a handy tool for viewing hardware information and managing the devices. Laitehallinta on kätevä työkalu laittetietojen tarkastelemiseen ja laitteiden hallintaan. - + New drivers available! Install or update them now. Uusia ajureita saatavilla! Asenna tai päivitä ne nyt. - + + View + + + + Include subfolders Sisällytä alikansiot - + Search for drivers in this path Etsi ajurit tästä polusta - - - - Device Name - Laitteen nimi - - - - Version Available - Versio saatavilla - - - - - Size - Koko - - - - - Status - Tila - - - - - Action - Toiminta - - - - New Version - Uusi versio - - - - Current Version - Nykyinen versio - - - - Missing drivers (%1) - Puuttuvat ajurit (%1) - - - - Outdated drivers (%1) - Vanhetuneet ajurit (%1) - - - - Up-to-date drivers (%1) - Ajantasaiset ajurit (%1) - - - + %1 driver updates available %1 ajuripäivitystä saatavilla - - + + Time checked: %1 Tarkistettu: %1 - + Downloading drivers for %1... Ajurien lataus %1... - + Download speed: %1 Downloaded %2/%3 Latausnopeus: %1 ladattu %2/%3 - + Installing drivers for %1... Asennetaan ajureita %1... - + %1 drivers installed, %2 drivers failed %1 ajuria asennettu, %2 ajuria epäonnistui - + %1 drivers installed %1 ajuria asennettu - + Failed to install drivers Ajurien asentaminen epäonnistui - + Network error. Reconnecting... Verkkovirhe. Yhdistetään uudelleen... - + Download speed: %1 Latausnopeus: %1 - + Your drivers are up to date Ajurit ovat ajan tasalla - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot käynnistä uudelleen - + Please %1 for the installed drivers to take effect Ole hyvä ja %1, jotta asennetut ajurit tulevat voimaan - - + + View backup path + + + + + Backup All + + + + + submit feedback anna palautetta - + Please try again or %1 to us Yritä uudelleen tai %1 meille - + Install All Asenna kaikki - - + + Scan Again Tarkista uudelleen - + Cancel Peru - + Scanning hardware device drivers, please wait... Tarkistetaan laitteisto-ajureita, odota... - - + + Scanning %1 Tarkistetaan %1 - + Scan failed Tarkistus epäonnistui - + Network unavailable Verkko ei saatavilla - + Please check your network connection Tarkista verkkoyhteytesi - + Please scan again or %1 to us Tarkista uudelleen tai %1 meille - + You are installing a driver, which will be interrupted if you exit. Olet asentamassa ajuria, joka rikkoutuu, jos poistut. - + + + Are you sure you want to exit? Oletko varma, että haluat poistua? - + + + Exit button Poistu - + + + Cancel button Peru - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Bluetooth sovitin - - + + Imaging device Kuvauslaite - + Display adapter Näytön sovitin - + Sound card Äänikortti - + Network adapter Verkkokortti - + Wireless network adapter Langaton verkkosovitin - + Installation successful Asennus onnistui - + Installation failed Asennus epäonnistui - + Downloading Ladataan - + Installing Asennus - + Not installed Ei asennettu - + Out-of-date Vanhentunut - + Waiting Odottaa - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Tuntematon virhe - + Network error Verkkovirhe - + Canceled Peruutettu - + Failed to get driver files Ajuritiedostoja ei saatu - + Update Päivitä - + + Backup + + + + + Restore + + + + Install Asenna @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Poista - + Refresh Virkistä - + Export Vie - + Update drivers Päivitä ajurit - + Uninstall drivers Poista ajurit - + Allow it to wake the computer Salli sen herättää tietokone - - + + Enable Käyttöön @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Virkistä - + Export Vie - + Copy Kopio - + Disable Poista - + Unavailable Ei saatavilla @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Valitse paikallinen kansio @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Ladataan... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_fr.ts b/deepin-devicemanager/translations/deepin-devicemanager_fr.ts index 9f24749dc..29e4d16cb 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_fr.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_fr.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Plus @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 CE_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Plus - + Collapse Réduire @@ -51,14 +63,14 @@ DetailTreeView - - + + More Plus - - + + Collapse Réduire @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Désactiver - + Unavailable Indisponible @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Nom du périphérique - - + + Name Nom - - + + Vendor Vendeur - - Model - Modèle + + Chip + Puce - - Version - Version + + Capabilities + Capacités - - Bus Info - Infos du bus + + + Module Alias + Alias du module - - Chip - Puce + + + Physical ID + ID physique - - Capabilities - Capacités + + SysFS_Path + - - Clock - Horloge + + Description + Description + + + + Revision + - - Width - Largeur + + KernelModeDriver + - + Memory Address Adresse mémoire - + IRQ IRQ - + Unavailable Indisponible - + Disable Désactiver @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nom - + Vendor Vendeur - + Model Modèle @@ -173,17 +192,17 @@ DeviceBios - + Vendor Vendeur - + Version Version - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nom - + Vendor Vendeur - + Version Version - + Model Modèle - + + Module Alias + Alias du module + + + + Physical ID + ID physique + + + Speed Vitesse - + Maximum Power Charge maximum - + Driver Version Version du pilote - + Driver Pilote - + Capabilities Capacités - + Bus Info Infos du bus - + Logical Name Nom logique - + MAC Address Adresse MAC - + Unavailable Indisponible - + Disable Désactiver @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nom - + Vendor Vendeur - + Model Modèle - + Version Version - + Bus Info Infos du bus - + Capabilities Capacités - + Driver Pilote - + Maximum Power Charge maximum - + Speed Vitesse - + + Module Alias + Alias du module + + + + Physical ID + ID physique + + + Unavailable Indisponible - + Disable Désactiver @@ -322,7 +361,7 @@ DeviceComputer - + Name Nom @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nom - - + + Vendor Vendeur - + CPU ID ID CPU - + Core ID Core ID - + Threads Tâches - - Current Speed - Vitesse actuelle - - - + BogoMIPS BogoMIPS - - + + Architecture Architecture - + CPU Family Famille de CPU - + Model Modèle - - + + Processor Processeur - + Core(s) Noyau(x) - + Virtualization Virtualisation - + Flags Indicateurs - + Extensions Extensions - + L3 Cache Cache L3 - + L2 Cache Cache L2 - + L1i Cache Cache L1i - + L1d Cache Cache L1d - + Stepping Étape - + Speed Vitesse - + + + Max Speed Vitesse max @@ -447,132 +483,127 @@ DeviceGpu - + Name Nom - + Vendor Vendeur - + Model Modèle - + Version Version - + Graphics Memory Mémoire graphique - + + Module Alias + Alias du module + + + Physical ID ID physique - + Memory Address Adresse mémoire - + IO Port Port E/S - + Bus Info Infos du bus - + Maximum Resolution Résolution maximale - + Minimum Resolution Résolution minimale - + Current Resolution Résolution actuelle - + Driver Pilote - + Description Description - - Clock - Horloge - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput Sortie numérique - + Display Output Sortie écran - + Capabilities Capacités - + IRQ IRQ - - Width - Largeur - - - + Unavailable Indisponible @@ -580,62 +611,72 @@ DeviceImage - + Name Nom - + Vendor Vendeur - + Version Version - + Model Modèle - + Bus Info Infos du bus - + + Module Alias + Alias du module + + + + Physical ID + ID physique + + + Speed Vitesse - + Maximum Power Charge maximum - + Driver Pilote - + Capabilities Capacités - + Serial Number Numéro de série - + Unavailable Indisponible - + Disable Désactiver @@ -643,62 +684,72 @@ DeviceInput - + Name Nom - + Vendor Vendeur - + Model Modèle - + Interface Interface - + Bus Info Infos du bus - + + Module Alias + Alias du module + + + + Physical ID + ID physique + + + Speed Vitesse - + Maximum Current Courant maximal - + Driver Pilote - + Capabilities Capacités - + Version Version - + Unavailable Indisponible - + Disable Désactiver @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Aperçu - - - + + + CPU CPU - - + + CPU quantity Quantité de CPU - - + + Motherboard Carte mère - - + + Memory Mémoire - - + + Display Adapter Carte graphique - - + + Sound Adapter Adaptateur audio - - + + Storage Stockage - - + + Other PCI Devices Autres périphériques PCI - - + + Battery Batterie - - + + Bluetooth Bluetooth - - + + Network Adapter Adaptateur réseau - - + + Mouse Souris - - + + Keyboard Clavier - - + + Monitor Écran - - + + CD-ROM CD-ROM - - + + Printer Imprimante - - + + Camera Appareil photo - - + + Other Devices Other Input Devices Autres appareils - - - + + + Device Appareil - - - + + + OS Système d'exploitation @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nom - - + + Vendor Vendeur - - + + Size Taille - - + + Type Type - - + + Speed Vitesse - + Total Width Largeur totale - + Locator Localisateur - + Serial Number Numéro de série - + Configured Voltage Tension configurée - + Maximum Voltage Tension maximale - + Minimum Voltage Tension minimale - + Configured Speed Vitesse configurée - + Data Width Largeur des données @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nom - + Vendor Vendeur - + Type Type - + Display Input Entrée écran - + Interface Type Type d'interface - + Support Resolution Résolution de prise en charge - + Current Resolution Résolution actuelle - + Display Ratio Ratio d'affichage - + Primary Monitor Écran principal - + Size Taille - + Serial Number Numéro de série - - - Product Date - Date de production - DeviceNetwork - + + Name Nom - + + Vendor Vendeur - + + Type Type - + Version Version - + Bus Info Infos du bus - + Capabilities Capacités - + Driver Pilote - + Driver Version Version du pilote - + + Module Alias + Alias du module + + + + Physical ID + ID physique + + + Maximum Rate Taux maximal - + Negotiation Rate Taux de négociation - + Port Port - + Multicast Multidiffusion - + Link Lien - + Latency Latence - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Diffusion - + Auto Negotiation Négociation automatique - - Clock - Horloge - - - - Width - Largeur - - - + Memory Address Adresse mémoire - + IRQ IRQ - + MAC Address Adresse MAC - + Logical Name Nom logique - + Unavailable Indisponible - + Disable Désactiver @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nom - + Vendor Vendeur - + Model Modèle - + Bus Info Infos du bus - + Version Version - + Input/Output Entrée/Sortie - + Memory Mémoire - + IRQ IRQ - + Latency Latence - - Clock - Horloge - - - - Width - Largeur - - - + Driver Pilote - + Capabilities Capacités @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nom - + Vendor Vendeur - + Model Modèle - + Version Version - + Bus Info Infos du bus - + Capabilities Capacités - + Driver Pilote - + Maximum Power Charge maximum - + Speed Vitesse - + Serial Number Numéro de série - + Unavailable Indisponible - + Disable Désactiver @@ -1252,82 +1291,82 @@ DevicePower - + Name Nom - + Model Modèle - + Vendor Vendeur - + Serial Number Numéro de série - + Type Type - + Status Statut - + Capacity Capacité - + Voltage Tension - + Slot Emplacement - + Design Capacity Capacité de conception - + Design Voltage Tension de conception - + SBDS Version Version SBDS - + SBDS Serial Number Numéro de série SBDS - + SBDS Manufacture Date Date de fabrication SBDS - + SBDS Chemistry SBDS Chemistry - + Temperature Température @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nom - + Model Modèle - + Vendor Vendeur - + Serial Number Numéro de série - + Shared Partagé - + URI URI - + Status Statut - + Interface Type Type d'interface - + Disable Désactiver @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Modèle - - - - + + Vendor Vendeur - - + + Media Type Type de support - - + + + Size Taille - + + + Name + Nom + + + Version Version - + Capabilities Capacités - + + + Module Alias + Alias du module + + + + + Physical ID + ID physique + + + Firmware Version Version du micrologiciel - + Speed Vitesse - + Description Description - + Serial Number Numéro de série - + Interface Interface - + Rotation Rate Taux de rotation - + Unavailable Indisponible @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Sélectionner un pilote pour la mise à jour - + No drivers found in this folder Aucun pilote trouvé dans ce dossier @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Chargement des informations du périphérique audio... - + Loading BIOS Info... Chargement des informations du BIOS... - + Loading CD-ROM Info... Chargement des informations du lecteur CD-ROM... - + Loading Operating System Info... Chargement des informations du système d'exploitation... - + Loading CPU Info... Chargement des informations du processeur... - + Loading Other Devices Info... Chargement des informations des autres périphériques... - + Loading Power Info... Chargement des informations de la batterie... - + Loading Printer Info... Chargement des informations de l'imprimante... - + Loading Mouse Info... Chargement des informations de la souris... - + Loading Network Adapter Info... Chargement des informations de l'adaptateur réseau... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Désactiver - + Unavailable Indisponible @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Désactiver - + Unavailable Indisponible @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Infos de l'appareil - + Display shortcuts Afficher les raccourcis - + Close Fermer - + Help Aide - + Copy Copier - + System Système - + Export Exporter - + Refresh Actualiser - + Device Manager Gestionnaire de périphériques - + Hardware Matériel - + Drivers Conducteurs - + Monitor Écran - + Overview Aperçu - + Display Adapter Adaptateur pour écran - + CPU CPU - + Network Adapter Adaptateur réseau - + Battery Batterie @@ -1639,191 +1691,377 @@ PageDetail - + More Plus + + PageDriverBackupInfo + + + + Name + Nom + + + + + Current Version + Version actuelle + + + + + Driver Platform Version + + + + + Status + Statut + + + + Action + Action + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Mise à jour - - - + + + Cancel button Annuler - + Next Prochain - + Warning Avertissement - + The device will be unavailable after the driver uninstallation Le périphérique sera indisponible après la désinstallation du pilote - + Uninstall button Désinstaller - + Uninstalling Désinstallation - + Update successful Mise à jour réussie - + Uninstallation successful Désinstallation réussie - + Update failed Mise à jour a échoué - + Uninstallation failed La désinstallation a échoué - + OK button OK - + Next button Prochain - + The selected folder does not exist, please select again Le dossier sélectionné n'existe pas, veuillez sélectionner à nouveau - + Update button Mise à jour - + Previous button Précédent - + Broken package Colis cassé - + Unmatched package architecture Architecture de package inégalée - - + + The selected file does not exist, please select again Le fichier sélectionné n'existe pas, veuillez sélectionner à nouveau - + It is not a driver Ce n'est pas un pilote - + Unable to install - no digital signature Impossible d'installer - pas de signature numérique - + Unknown error Erreur inconnue - + The driver module was not found Le module de pilote n'a pas été trouvé - + Invalid module format Format de module invalide - + The driver module has dependencies Le module de pilote a des dépendances - PageListView + PageDriverInstallInfo - - Refresh - Actualiser + + + + Device Name + Nom du périphérique - + + Version Available + Version disponible + + + + + Size + Taille + + + + + Status + Statut + + + + + Action + Action + + + + New Version + Nouvelle version + + + + Current Version + Version actuelle + + + + Missing drivers (%1) + Pilotes manquants (%1) + + + + Outdated drivers (%1) + Pilotes obsolètes (%1) + + + + Up-to-date drivers (%1) + Pilotes à jour (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nom + + + + Current Version + Version actuelle + + + + Backup Version + + + + + Action + Action + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Actualiser + + + Export Exporter - + Overview Aperçu + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Échec de l'activation de l'appareil - + Failed to disable the device Échec de la désactivation de l'appareil - + Failed to disable it: unable to get the device SN - Échec de la désactivation : impossible d'obtenir le numéro de série de l'appareil + Échec de la désactivation : impossible d'obtenir le numéro de série de l'appareil - + Update Drivers Mettre à jour les pilotes - + Uninstall Drivers Désinstaller les pilotes @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Actualiser - + Export Exporter - + Copy Copier - + Overview Aperçu @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Actualiser - + Export Exporter - + Copy Copier - - + + Enable Activer - + Update drivers Mettre à jour les pilotes - + Uninstall drivers Désinstaller les pilotes - + Allow it to wake the computer Laisser-le réveiller l'ordinateur - + Disable Désactiver - - + + Failed to disable it: unable to get the device SN - Échec de la désactivation : impossible d'obtenir le numéro de série de l'appareil + Échec de la désactivation : impossible d'obtenir le numéro de série de l'appareil - + Failed to disable the device Échec de la désactivation de l'appareil - + Failed to enable the device Échec de l'activation de l'appareil - + Update Drivers Mettre à jour les pilotes - + Uninstall Drivers Désinstaller les pilotes @@ -1924,867 +2162,847 @@ QObject - + SubVendor Revendeur - + SubDevice Appareil secondaire - + Driver Pilote - + Driver Status Statut du pilote - + Driver Activation Cmd Commande d'activation du pilote - - + - + + Config Status Statut de la configuration - - - - - - - physical id - identifiant physique - - - + latency latence - + Phys Phys - + Sysfs Sysfs - + Handlers Sous-routines - - + + PROP PROP - - + + EV EV - - + + KEY CLÉ - - Model - Modèle - - - - Vendor - Vendeur - - - + Version Version - - + + + Bus Bus - - + + BIOS Information Informations du BIOS - - + + Base Board Information Informations sur la carte de base - - + + System Information Informations système - - + + Chassis Information Informations sur le châssis - - + + Physical Memory Array Tableau de mémoire physique - + Release Date Date de sortie - + Address Adresse - + Runtime Size Taille d'exécution - + ROM Size Taille de la ROM - + Characteristics Caractéristiques - + BIOS Revision Révision du BIOS - + Firmware Revision Révision du micrologiciel - - + + Product Name Nom du produit - - - + + + Serial Number Numéro de série - - - + + + Asset Tag Numéro d'inventaire - - + + Features Fonctionnalités - + Location In Chassis Emplacement dans le châssis - + Chassis Handle Poignée du châssis - - + + Type Type - + Contained Object Handles Gestionnaires d'objet contenus - - + + UUID UUID - + Wake-up Type Type de réveil - - + + SKU Number Numéro SKU - + Family Famille - + Lock Verrouiller - + Boot-up State État d'amorçage - + Power Supply State État de l'alimentation électrique - + Thermal State État thermique - + Security Status État de sécurité - + OEM Information Informations OEM - + Height Hauteur - + Number Of Power Cords Nombre de cordons d'alimentation - + Contained Elements Éléments contenus - + Location Emplacement - + Error Correction Type Type de correction d'erreur - + Maximum Capacity Capacité maximale - - + + Error Information Handle Traitement des informations d'erreur - + Number Of Devices Nombre de périphériques - + BIOS ROMSIZE Taille de la ROM du BIOS - + Release date Date de sortie - + Board name Nom de la carte - + SMBIOS Version Version SMBIOS - + Language Description Format Format de description de la langue - + Installable Languages Langues disponibles - + Currently Installed Language Langue actuellement installée - + BD Address Adresse BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Type de paquet - + Link policy Politique de liage - + Link mode Mode de liage - - + + Class Classe - + Service Classes Classes du service - + Device Class Classe du périphérique - + HCI Version Version HCI - + LMP Version Version LMP - + Subversion Sous version - + Device Appareil - - + + Serial ID ID de série - + product produit - + description description - + Powered Alimenté - + Discoverable Visible - + Pairable Jumelable - + Modalias Modalias - + Discovering Découvrir - + Driver Modules Modules pilotes - - - + + + + + Device File Fichier du périphérique - + Device Files Fichiers du périphérique - - + + + Device Number Numéro du périphérique - - Module Alias - Alias du module - - - + Application Application - + status statut - - + + + logical name nom logique - - + + ansiversion version ansi - + CPU implementer Implementeur du CPU - + CPU architecture Architecture du CPU - + CPU variant Variante du CPU - + CPU part Partie du CPU - + CPU revision Révision du CPU - + One Un - + Two Deux - + Four Quatre - + Six Six - + Eight Huit - + Ten Dix - + Twelve Douze - + Fourteen Quatorze - + Sixteen Seize - + Eighteen Dix-huit - + Twenty Vingt - + Twenty-two Vingt-deux - + Twenty-four Vingt-quatre - + Twenty-six Vingt-six - + Twenty-eight Vingt-huit - + Thirty Trente - + Thirty-two Trente-deux - + Thirty-four Trente-quatre - + Thirty-six Trente-six - + Thirty-eight Trente-huit - + Forty Quarante - + Forty-two Quarante-deux - + Forty-four Quarante-quatre - + Forty-six Quarante-six - + Forty-eight Quarante-huit - + Fifty Cinquante - + Fifty-two Cinquante-deux - + Fifty-four Cinquante-quatre - + Fifty-six Cinquante-six - + Fifty-eight Cinquante-huit - + Sixty Soixante - + Sixty-two Soixante-deux - + Sixty-four Soixante-quatre - + Sixty-six Soixante-six - + Sixty-eight Soixante-huit - + Seventy Soixante-dix - + Seventy-two Soixante-douze - + Seventy-four Soixante-quatorze - + Seventy-six Soixante-seize - + Seventy-eight Soixante-dix-huit - + Eighty Quatre-vingts - + Eighty-two Quatre-vingt-deux - + Eighty-four Quatre-vingt-quatre - + Eighty-six Quatre-vingt-six - + Eighty-eight Quatre-vingt-huit - + Ninety Quatre-vingt-dix - + Ninety-two Quatre-vingt-douze - + Ninety-four Quatre-vingt-quatorze - + Ninety-six Quatre-vingt-seize - + Ninety-eight Quatre-vingt-dix-huit - + One hundred Cent - + One hundred and Two Cent deux - + One hundred and four Cent quatre - + One hundred and Six Cent six - + One hundred and Eight Cent huit - + One hundred and Ten Cent dix - + One hundred and Twelve Cent douze - + One hundred and Fourteen Cent quatorze - + One hundred and Sixteen Cent seize - + One hundred and Eighteen Cent dix-huit - + One hundred and Twenty Cent vingt - + One hundred and Twenty-two Cent vingt-deux - + One hundred and Twenty-four Cent vingt-quatre - + One hundred and Twenty-six Cent vingt-six - + One hundred and Twenty-eight Cent vingt-huit - + One hundred and Ninety-two Cent quatre-vingt-douze - + Two hundred and fifty-six Deux cent cinquante-six @@ -2824,988 +3042,1084 @@ Version de GLSL - - - + + + Unknown Inconnu - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Classe de matériel - - - - + + + + CPU CPU - - - - + + + + No CPU found Aucun CPU trouvé - - - - + + + + Motherboard Carte mère - - - - + + + + No motherboard found Aucune carte mère trouvée - - - - + + + + Memory Mémoire - - - - + + + + No memory found Aucune mémoire trouvée - - - - + + + + Storage Stockage - - - - + + + + No disk found Aucun disque trouvé - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Carte graphique - - - - + + + + No GPU found Aucun GPU trouvé - - - - + + + + Monitor Écran - - - - + + + + No monitor found Aucun écran trouvé - - - - - + + + + + Network Adapter Adaptateur réseau - - - - + + + + No network adapter found Aucune carte réseau trouvée - - - - - + + + + + Sound Adapter Adaptateur audio - - - - + + + + No audio device found Aucun appareil audio détecté - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Aucun périphérique Bluetooth trouvé - - - - + + + + Other PCI Devices Autres périphériques PCI - - - - + + + + No other PCI devices found Aucun autre périphérique PCI trouvé - - - - + + + + Power Alimentation - - - - + + + + No battery found Aucune batterie trouvée - - - - - + + + + + Keyboard Clavier - - - - + + + + No keyboard found Aucun clavier trouvé - - - - - + + + + + Mouse Souris - - - - + + + + No mouse found Aucune souris trouvée - - - - - - + + + + + + Printer Imprimante - - - - + + + + No printer found Aucune imprimante trouvée - - - - + + + + Camera Caméra - - - - + + + + No camera found Aucune caméra trouvée - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Aucun CD-ROM trouvé - - - - - + + + + + Other Devices Autres appareils - - - - + + + + No other devices found Aucun autre appareil trouvé - + Array Handle Poignée du tableau - + Form Factor Facteur de forme - + Set Définir - + Bank Locator Localisateur de banque - + Type Detail Détails du type - + Part Number Numéro de pièce - + Rank Rang - + Memory Technology Technologie de la mémoire - + Memory Operating Mode Capability Capacité du mode d'opération mémoire - + Firmware Version Version du micrologiciel - + Module Manufacturer ID ID du manufacturier de module - + Module Product ID ID de produit du module - + Memory Subsystem Controller Manufacturer ID ID du manufacturier du système de sous contrôle de la mémoire - + Memory Subsystem Controller Product ID ID de production du sous système de contrôle de la mémoire - + Non-Volatile Size Taille non volatile - + Volatile Size Taille volatile - + Cache Size Taille du cache - + Logical Size Taille logique - - - - - + + + + + inch pouce - + Date Date - + ioport port es - + network réseau - - + battery Batterie - + native-path chemin natif - + power supply Alimentation - + updated mis à jour - + has history a un historique - + has statistics a des statistiques - + rechargeable rechargeable - + state état - + warning-level niveau d'avertissement - + energy énergie - + energy-empty énergie vide - + energy-full pleine énergie - + energy-full-design pleine énergie en conception - + energy-rate taux d'énergie - + voltage tension - + percentage pourcentage - + technology technologie - + icon-name nom d'icône - + online en ligne - + daemon-version version du daemon - + on-battery sur batterie - + lid-is-closed la LID est fermée - + lid-is-present la LID est présente - + critical-action action critique - + copies copies - + job-cancel-after arrêt de la tâche après - + job-hold-until prend en charge la tâche jusqu'à - + job-priority priorité de la tâche - + marker-change-time marqueur de changement de temps - + number-up numéroter - + orientation-requested demande d'orientation - + print-color-mode mode d'impression en couleur - + printer-is-accepting-jobs l'imprimante accepte les impressions - + printer-is-shared l'imprimante est partagée - + printer-is-temporary l'imprimante est temporaire - + printer-make-and-model marque et modèle de l'imprimante - + printer-state-change-time Heure de changement d'état de l'imprimante - + printer-state-reasons état de l'imprimante - + printer-type type d'imprimante - + printer-uri-supported l'imprimante supporte les URis - + sides côtés - - - - + + + + + + SSD SSD - - + + HDD Disque dur - + + bus info infos du bus - + logicalsectorsize taille du secteur logique - + sectorsize taille du secteur - + guid guid - + Geometry (Logical) Géométrie (Logique) - - + + Device Manager Gestionnaire de périphériques - + Device Manager is a handy tool for viewing hardware information and managing the devices. Gestionnaire de périphériques est un outil pratique pour afficher les informations sur le matériel et gérer les périphériques. - + New drivers available! Install or update them now. - Nouveaux pilotes disponibles ! Installer-les ou les-mettre à jour maintenant. + Nouveaux pilotes disponibles ! Installer-les ou les-mettre à jour maintenant. + + + + View + - + Include subfolders Inclure les sous-dossiers - + Search for drivers in this path Rechercher des pilotes dans ce chemin - - - - Device Name - Nom du périphérique - - - - Version Available - Version disponible - - - - - Size - Taille - - - - - Status - Statut - - - - - Action - Action - - - - New Version - Nouvelle version - - - - Current Version - Version actuelle - - - - Missing drivers (%1) - Pilotes manquants (%1) - - - - Outdated drivers (%1) - Pilotes obsolètes (%1) - - - - Up-to-date drivers (%1) - Pilotes à jour (%1) - - - + %1 driver updates available %1 mises à jour de pilotes disponibles - - + + Time checked: %1 Heure vérifiée : %1 - + Downloading drivers for %1... Téléchargement des pilotes pour %1... - + Download speed: %1 Downloaded %2/%3 Vitesse de téléchargement : %1 Téléchargé %2/%3 - + Installing drivers for %1... Installation des pilotes pour %1... - + %1 drivers installed, %2 drivers failed %1 pilotes installés, %2 pilotes ont échoué - + %1 drivers installed %1 pilotes installés - + Failed to install drivers Échec de l'installation des pilotes - + Network error. Reconnecting... Erreur réseau. Reconnexion... - + Download speed: %1 Vitesse de téléchargement & #160; : %1 - + Your drivers are up to date Vos pilotes sont à jour - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot redémarrer - + Please %1 for the installed drivers to take effect Veuillez %1 pour que les pilotes installés prennent effet - - + + View backup path + + + + + Backup All + + + + + submit feedback soumettre des commentaires - + Please try again or %1 to us Veuillez réessayer ou %1 pour nous - + Install All Tout installer - - + + Scan Again Numériser à nouveau - + Cancel Annuler - + Scanning hardware device drivers, please wait... Analyse des pilotes de périphériques matériels, veuillez patienter... - - + + Scanning %1 Numérisation de %1 - + Scan failed L'analyse a échoué - + Network unavailable Réseau indisponible - + Please check your network connection Veuillez vérifier votre connexion réseau - + Please scan again or %1 to us Veuillez numériser à nouveau ou %1 pour nous - + You are installing a driver, which will be interrupted if you exit. Vous êtes en train d'installer un pilote, qui sera interrompu si vous quittez. - + + + Are you sure you want to exit? Êtes-vous sûr de vouloir quitter ? - + + + Exit button Quitter - + + + Cancel button Annuler - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Adaptateur Bluetooth - - + + Imaging device Dispositif d'imagerie - + Display adapter Adaptateur pour écran - + Sound card Carte son - + Network adapter Adaptateur de réseau - + Wireless network adapter Adaptateur réseau sans fil - + Installation successful installation réussie - + Installation failed L'installation a échoué - + Downloading Téléchargement - + Installing Installation - + Not installed Pas installé - + Out-of-date Périmé - + Waiting Attendre - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Erreur inconnue - + Network error Erreur réseau - + Canceled Annulé - + Failed to get driver files Impossible d'obtenir les fichiers du pilote - + Update Mise à jour - + + Backup + + + + + Restore + + + + Install Installer @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Désactiver - + Refresh Actualiser - + Export Exporter - + Update drivers Mettre à jour les pilotes - + Uninstall drivers Désinstaller les pilotes - + Allow it to wake the computer Permettre le réveille de l'ordinateur - - + + Enable Activer @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Actualiser - + Export Exporter - + Copy Copier - + Disable Désactiver - + Unavailable Indisponible @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Sélectionner un dossier local, s'il vous plaît @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Chargement... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_gl_ES.ts b/deepin-devicemanager/translations/deepin-devicemanager_gl_ES.ts index 305055a0c..abc95ed33 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_gl_ES.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_gl_ES.ts @@ -1,17 +1,29 @@ - + + + BtnLabel - + + OK + + + + + Feedback + + + + OK button - + CmdButtonWidget - + More Máis @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More Máis - + Collapse Colapsar @@ -51,14 +63,14 @@ DetailTreeView - - + + More Máis - - + + Collapse Colapsar @@ -66,88 +78,95 @@ DetailViewDelegate - - + + Disable Desactivar - + Unavailable - + DeviceAudio - + Device Name Nome do dispositivo - - + + Name Nome - - + + Vendor Fabricante - - Model - Modelo + + Chip + Chip - - Version - Versión + + Capabilities + Capacidades - - Bus Info - Información do bus + + + Module Alias + Alias do módulo - - Chip - Chip + + + Physical ID + ID físico - - Capabilities - Capacidades + + SysFS_Path + - - Clock - Reloxo + + Description + Descrición + + + + Revision + - - Width - Ancho + + KernelModeDriver + - + Memory Address - + - + IRQ IRQ - + Unavailable - + - + Disable Desactivar @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nome - + Vendor Fabricante - + Model Modelo @@ -173,17 +192,17 @@ DeviceBios - + Vendor Fabricante - + Version Versión - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nome - + Vendor Fabricante - + Version Versión - + Model Modelo - + + Module Alias + Alias do módulo + + + + Physical ID + ID físico + + + Speed Velocidade - + Maximum Power Poder máximo - + Driver Version Versión do controlador - + Driver Controlador - + Capabilities Capacidades - + Bus Info Información do bus - + Logical Name Nome lóxico - + MAC Address Enderezo MAC - + Unavailable - + - + Disable Desactivar @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versión - + Bus Info Información do bus - + Capabilities Capacidades - + Driver Controlador - + Maximum Power Poder máximo - + Speed Velocidade - + + Module Alias + Alias do módulo + + + + Physical ID + ID físico + + + Unavailable - + - + Disable Desactivar @@ -322,7 +361,7 @@ DeviceComputer - + Name Nome @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nome - - + + Vendor Fabricante - + CPU ID ID da CPU - + Core ID ID do Núcleo - + Threads Fíos - - Current Speed - Velocidade actual - - - + BogoMIPS BogoMIPS - - + + Architecture Arquitectura - + CPU Family Familia CPU - + Model Modelo - - + + Processor Procesador - + Core(s) Núcleo(s) - + Virtualization Virtualización - + Flags Bandeiras - + Extensions Extensións - + L3 Cache Caché L3 - + L2 Cache Caché L2 - + L1i Cache Caché L1i - + L1d Cache Caché L1d - + Stepping Pisando - + Speed Velocidade - + + + Max Speed Velocidade máxima @@ -447,195 +483,200 @@ DeviceGpu - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versión - + Graphics Memory Memoria gráfica - + + Module Alias + Alias do módulo + + + Physical ID ID físico - + Memory Address - + - + IO Port Porto IO - + Bus Info Información do bus - + Maximum Resolution Resolución máxima - + Minimum Resolution Resolución mínima - + Current Resolution Resolución actual - + Driver Controlador - + Description Descrición - - Clock - Reloxo - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput - + - + Display Output Saída a pantalla - + Capabilities Capacidades - + IRQ IRQ - - Width - Ancho - - - + Unavailable - + DeviceImage - + Name Nome - + Vendor Fabricante - + Version Versión - + Model Modelo - + Bus Info Información do bus - + + Module Alias + Alias do módulo + + + + Physical ID + ID físico + + + Speed Velocidade - + Maximum Power Poder máximo - + Driver Controlador - + Capabilities Capacidades - + Serial Number Número de serie - + Unavailable - + - + Disable Desactivar @@ -643,62 +684,72 @@ DeviceInput - + Name Nome - + Vendor Fabricante - + Model Modelo - + Interface Interface - + Bus Info Información do bus - + + Module Alias + Alias do módulo + + + + Physical ID + ID físico + + + Speed Velocidade - + Maximum Current - + - + Driver Controlador - + Capabilities Capacidades - + Version Versión - + Unavailable - + - + Disable Desactivar @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Visión xeral - - - + + + CPU CPU - - + + CPU quantity Número de CPUs - - + + Motherboard Placa base - - + + Memory Memoria - - + + Display Adapter Adaptador de pantalla - - + + Sound Adapter Adaptador do son - - + + Storage Almacenamento - - + + Other PCI Devices Outros dispositivos PCI - - + + Battery Batería - - + + Bluetooth Bluetooth - - + + Network Adapter Adaptador de rede - - + + Mouse Rato - - + + Keyboard Teclado - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Impresora - - + + Camera Cámara - - + + Other Devices Other Input Devices Outros dispositivos - - - + + + Device Dispositivo - - - + + + OS SO @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nome - - + + Vendor Fabricante - - + + Size Tamaño - - + + Type Tipo - - + + Speed Velocidade - + Total Width Ancho total - + Locator Localizador - + Serial Number Número de serie - + Configured Voltage Tensión configurada - + Maximum Voltage Tensión máxima - + Minimum Voltage Tensión mínima - + Configured Speed Velocidade configurada - + Data Width Ancho dos datos @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nome - + Vendor Fabricante - + Type Tipo - + Display Input Ancho da visualización - + Interface Type Tipo de interface - + Support Resolution Resolución de apoio - + Current Resolution Resolución actual - + Display Ratio Amosar ratio - + Primary Monitor Monitor principal - + Size Tamaño - + Serial Number Número de serie - - - Product Date - Data do produto - DeviceNetwork - + + Name Nome - + + Vendor Fabricante - + + Type Tipo - + Version Versión - + Bus Info Información do bus - + Capabilities Capacidades - + Driver Controlador - + Driver Version Versión do controlador - + + Module Alias + Alias do módulo + + + + Physical ID + ID físico + + + Maximum Rate - + - + Negotiation Rate - + - + Port Porto - + Multicast Multidifusión - + Link Ligazón - + Latency Latencia - + IP IP - + Firmware Firmware - + Duplex Dúplex - + Broadcast Transmisión - + Auto Negotiation Negociación automática - - Clock - Reloxo - - - - Width - Ancho - - - + Memory Address - + - + IRQ IRQ - + MAC Address Enderezo MAC - + Logical Name Nome lóxico - + Unavailable - + - + Disable Desactivar @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nome - + Vendor Fabricante - + Model Modelo - + Bus Info Información do bus - + Version Versión - + Input/Output Entrada/Saída - + Memory Memoria - + IRQ IRQ - + Latency Latencia - - Clock - Reloxo - - - - Width - Ancho - - - + Driver Controlador - + Capabilities Capacidades @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versión - + Bus Info Información do bus - + Capabilities Capacidades - + Driver Controlador - + Maximum Power Poder máximo - + Speed Velocidade - + Serial Number Número de serie - + Unavailable - + - + Disable Desactivar @@ -1252,82 +1291,82 @@ DevicePower - + Name Nome - + Model Modelo - + Vendor Fabricante - + Serial Number Número de serie - + Type Tipo - + Status Estado - + Capacity Capacidade - + Voltage Tensión - + Slot Ranura - + Design Capacity Deseñar capacidade - + Design Voltage Deseñar tensión - + SBDS Version Versión SBDS - + SBDS Serial Number Número de serie SBDS - + SBDS Manufacture Date Data de manufactura SBDS - + SBDS Chemistry Química SBDS - + Temperature Temperatura @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nome - + Model Modelo - + Vendor Fabricante - + Serial Number Número de serie - + Shared Compartido - + URI URI - + Status Estado - + Interface Type Tipo de interface - + Disable Desactivar @@ -1383,138 +1422,151 @@ DeviceStorage - - - Model - Modelo - - - - + + Vendor Fabricante - - + + Media Type Tipo de media - - + + + Size Tamaño - + + + Name + Nome + + + Version Versión - + Capabilities Capacidades - + + + Module Alias + Alias do módulo + + + + + Physical ID + ID físico + + + Firmware Version Versión do firmware - + Speed Velocidade - + Description Descrición - + Serial Number Número de serie - + Interface Interface - + Rotation Rate Taxa de rotación - + Unavailable - + GetDriverNameWidget - - + + Select a driver for update - + - + No drivers found in this folder - + GetInfoPool - + Loading Audio Device Info... Cargando a información do dispositivo de audio... - + Loading BIOS Info... Cargando información BIOS... - + Loading CD-ROM Info... Cargando información CD-ROM... - + Loading Operating System Info... Cargando información do sistema operativo - + Loading CPU Info... Cargando información da CPU... - + Loading Other Devices Info... Cargando a información doutros dispositivos... - + Loading Power Info... Cargando a información do poder... - + Loading Printer Info... Cargando a información da impresora... - + Loading Mouse Info... Cargando a información do rato - + Loading Network Adapter Info... Cargando a información do adaptador da rede... @@ -1522,116 +1574,116 @@ LogTreeView - - - + + + Disable Desactivar - + Unavailable - + LogViewItemDelegate - + Disable Desactivar - + Unavailable - + MainWindow - + Device Info - export file's name + export file's name Información do dispositivo - + Display shortcuts Amosar atallos - + Close Pechar - + Help Axuda - + Copy Copiar - + System Sistema - + Export Exportar - + Refresh Recargar - + Device Manager Xestor de dispositivos - + Hardware - + - + Drivers - + - + Monitor Monitor - + Overview Visión xeral - + Display Adapter Adaptador de pantalla - + CPU CPU - + Network Adapter Adaptador de rede - + Battery Batería @@ -1639,214 +1691,400 @@ PageDetail - + More Máis + + PageDriverBackupInfo + + + + Name + Nome + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + Estado + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating - + - - - + + + Cancel button Cancelar - + Next - + - + Warning - + - + The device will be unavailable after the driver uninstallation - + - + Uninstall button - + - + Uninstalling - + - + Update successful - + - + Uninstallation successful - + - + Update failed - + - + Uninstallation failed - + - + OK button - + - + Next button - + - + The selected folder does not exist, please select again - + - + Update button - + - + Previous button - + - + Broken package - + - + Unmatched package architecture - + - - + + The selected file does not exist, please select again - + - + It is not a driver - + - + Unable to install - no digital signature - + - + Unknown error - + - + The driver module was not found - + - + Invalid module format - + - + The driver module has dependencies - + - PageListView + PageDriverInstallInfo - - Refresh - Recargar + + + + Device Name + Nome do dispositivo - + + Version Available + + + + + + Size + Tamaño + + + + + Status + Estado + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nome + + + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Recargar + + + Export Exportar - + Overview Visión xeral + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Fallo ao activar o dispositivo - + Failed to disable the device Fallo ao desactivar o dispositivo - + Failed to disable it: unable to get the device SN - + - + Update Drivers - + - + Uninstall Drivers - + PageOverview - + Refresh Recargar - + Export Exportar - + Copy Copiar - + Overview Visión xeral @@ -1854,939 +2092,919 @@ PageSingleInfo - + Refresh Recargar - + Export Exportar - + Copy Copiar - - + + Enable Activar - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - + Disable Desactivar - - + + Failed to disable it: unable to get the device SN - + - + Failed to disable the device Fallo ao desactivar o dispositivo - + Failed to enable the device Fallo ao activar o dispositivo - + Update Drivers - + - + Uninstall Drivers - + QObject - + SubVendor SubFabricante - + SubDevice SubDispositivo - + Driver Controlador - + Driver Status Estado do controlador - + Driver Activation Cmd Activación do controlador Cmd - - + - + + Config Status Configuración do estado - - - - - - - physical id - identificación física - - - + latency Latencia - + Phys Fis - + Sysfs Sysfs - + Handlers Manipuladores - - + + PROP PROP - - + + EV EV - - + + KEY CLAVE - - Model - Modelo - - - - Vendor - Fabricante - - - + Version Versión - - + + + Bus Bus - - + + BIOS Information Información BIOS - - + + Base Board Information Información da tarxeta base - - + + System Information Información do sistema - - + + Chassis Information Información do chasis - - + + Physical Memory Array Matriz de memoria física - + Release Date Data de lanzamento - + Address Enderezo - + Runtime Size Tamaño de tempo de execución - + ROM Size Tamaño ROM - + Characteristics Características - + BIOS Revision Revisión BIOS - + Firmware Revision Revisión do firmware - - + + Product Name Nome do produto - - - + + + Serial Number Número de serie - - - + + + Asset Tag Etiqueta de activos - - + + Features Características - + Location In Chassis Localización en chasis - + Chassis Handle Manexador do chasis - - + + Type Tipo - + Contained Object Handles Tiradores de obxectos contidos - - + + UUID UUID - + Wake-up Type Tipo de erguer - - + + SKU Number Número de SKU - + Family Familia - + Lock Pechar - + Boot-up State Estado do inicio - + Power Supply State Estado de subministración de enerxía - + Thermal State Estado térmico - + Security Status Estado de seguranza - + OEM Information Información OEM - + Height Altura - + Number Of Power Cords Número de cables de alimentación - + Contained Elements Elementos contidos - + Location Localización - + Error Correction Type Tipo de corrección de erro - + Maximum Capacity Capacidade máxima - - + + Error Information Handle Manexo de información de erro - + Number Of Devices Número de dispositivos - + BIOS ROMSIZE TAMAÑO ROM DE BIOS - + Release date Data de lanzamento - + Board name Nome da placa - + SMBIOS Version Versión SMBIOS - + Language Description Format Formato de descrición do idioma - + Installable Languages Idiomas instalables - + Currently Installed Language Idioma instalado actualmente - + BD Address Enderezo BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Tipo de paquete - + Link policy Política de ligazón - + Link mode Modo da ligazón - - + + Class Clase - + Service Classes Clases do servidor - + Device Class Clase do dispositivo - + HCI Version Versión HCI - + LMP Version Versión LMP - + Subversion Subversión - + Device Dispositivo - - + + Serial ID ID de serie - + product produto - + description descrición - + Powered Impulsado - + Discoverable Descuberto - + Pairable Pariable - + Modalias Modalidades - + Discovering Descubrindo - + Driver Modules Módulos de controladores - - - + + + + + Device File Ficheiro do dispositivo - + Device Files Ficheiros do dispositivo - - + + + Device Number Número de dispositivos - - Module Alias - Alias do módulo - - - + Application Aplicativos - + status estado - - + + + logical name nome lóxico - - + + ansiversion versión ansi - + CPU implementer Implementador de CPU - + CPU architecture Arquitectura de CPU - + CPU variant Variante de CPU - + CPU part Parte de CPU - + CPU revision Revisión de CPU - + One Un - + Two Dous - + Four Catro - + Six Seis - + Eight Oito - + Ten Dez - + Twelve Doce - + Fourteen Catorce - + Sixteen Dezaseis - + Eighteen Dezaoito - + Twenty Vinte - + Twenty-two Vinte e dous - + Twenty-four Vinte e catro - + Twenty-six Vinte e seis - + Twenty-eight Vinte e oito - + Thirty Trinta - + Thirty-two Trinta e dous - + Thirty-four Trinta e catro - + Thirty-six Trinta e seis - + Thirty-eight Trinta e oito - + Forty Corenta - + Forty-two Corenta e dous - + Forty-four Corenta e catro - + Forty-six Corenta e seis - + Forty-eight Corenta e oito - + Fifty Cincuenta - + Fifty-two Cincuenta e dous - + Fifty-four Cincuenta e catro - + Fifty-six Cincuenta e seis - + Fifty-eight Cincuenta e oito - + Sixty Sesenta - + Sixty-two Sesenta e dous - + Sixty-four Sesenta e catro - + Sixty-six Sesenta e seis - + Sixty-eight Sesenta e oito - + Seventy Setenta - + Seventy-two Setenta e dous - + Seventy-four Setenta e catro - + Seventy-six Setenta e seis - + Seventy-eight Setenta e oito - + Eighty Oitenta - + Eighty-two Oitenta e dous - + Eighty-four Oitenta e catro - + Eighty-six Oitenta e seis - + Eighty-eight Oitenta e oito - + Ninety Noventa - + Ninety-two Noventa e dous - + Ninety-four Noventa e catro - + Ninety-six Noventa e seis - + Ninety-eight Noventa e oito - + One hundred Cen - + One hundred and Two Cento dous - + One hundred and four Cento catro - + One hundred and Six Cento seis - + One hundred and Eight Cento oito - + One hundred and Ten Cento dez - + One hundred and Twelve Cento doce - + One hundred and Fourteen Cento catorce - + One hundred and Sixteen Cento dezaseis - + One hundred and Eighteen Cento dezaoito - + One hundred and Twenty Cento vinte - + One hundred and Twenty-two Cento vinte e dous - + One hundred and Twenty-four Cento vinte e catro - + One hundred and Twenty-six Cento vinte e seis - + One hundred and Twenty-eight Cento vinte e oito - + One hundred and Ninety-two - + - + Two hundred and fifty-six - + @@ -2824,1028 +3042,1124 @@ Versión GLSL - - - + + + Unknown Descoñecido - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Clase de hardware - - - - + + + + CPU CPU - - - - + + + + No CPU found Non se atopou ningunha CPU - - - - + + + + Motherboard Placa base - - - - + + + + No motherboard found Non se atopou ningunha placa base - - - - + + + + Memory Memoria - - - - + + + + No memory found Non se atopou ningunha memoria - - - - + + + + Storage Almacenamento - - - - + + + + No disk found Non se atopou ningún disco - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Amosar o adaptador - - - - + + + + No GPU found Non se atopou ningún GPU - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Non se atopou ningún monitor - - - - - + + + + + Network Adapter Adaptador de rede - - - - + + + + No network adapter found Non se atopou ningún adaptador da rede - - - - - + + + + + Sound Adapter Adaptador do son - - - - + + + + No audio device found Non se atopou ningún dispositivo de audio - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Non se atopou ningún dispositivo Bluetooth - - - - + + + + Other PCI Devices Outros dispositivos PCI - - - - + + + + No other PCI devices found Non se atopou outro dispositivo PCI - - - - + + + + Power Poder - - - - + + + + No battery found Non se atopou ningunha batería - - - - - + + + + + Keyboard Teclado - - - - + + + + No keyboard found Non se atopou ningún teclado - - - - - + + + + + Mouse Ratón - - - - + + + + No mouse found Non se atopou ningún rato - - - - - - + + + + + + Printer Impresora - - - - + + + + No printer found Non se atopou ningunha impresora - - - - + + + + Camera Cámara - - - - + + + + No camera found Non se atopou ningunha cámara - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Non se atopou ningún CD-ROM - - - - - + + + + + Other Devices Outros dispositivos - - - - + + + + No other devices found Non se atopou outro dispositivo - + Array Handle Matriz de manexo - + Form Factor Factor de forma - + Set Establecer - + Bank Locator Localizador de bancos - + Type Detail Detalle tipo - + Part Number Parte número - + Rank Rango - + Memory Technology Memoria tecnolóxica - + Memory Operating Mode Capability Modo de funcionamento da memoria - + Firmware Version Versión do firmware - + Module Manufacturer ID ID do fabricante do módulo - + Module Product ID ID do produto do módulo - + Memory Subsystem Controller Manufacturer ID ID do fabricante do controlador de subsistemas de memoria - + Memory Subsystem Controller Product ID ID do produto do controlador de subsistemas de memoria - + Non-Volatile Size Tamaño non volátil - + Volatile Size Tamaño volátil - + Cache Size Tamaño caché - + Logical Size Tamaño lóxico - - - - - + + + + + inch polgada - + Date Data - + ioport ioport - + network rede - - + battery batería - + native-path ruta-nativa - + power supply fonte de alimentación - + updated actualizado - + has history ten historial - + has statistics ten estatísticas - + rechargeable recargable - + state estado - + warning-level nivel-de-advertencia - + energy enerxía - + energy-empty vacía-de-enerxía - + energy-full chea-de-enerxía - + energy-full-design deseñar-con-enerxía-chea - + energy-rate taxa-de-enerxía - + voltage tensión - + percentage porcentaxe - + technology tecnoloxía - + icon-name icon-name - + online en liña - + daemon-version daemon-version - + on-battery batería-acendida - + lid-is-closed a tapa está pechada - + lid-is-present a tapa está presente - + critical-action acción crítica - + copies copias - + job-cancel-after cancelación de postos de traballo - + job-hold-until mantemento de traballo ata - + job-priority prioridade laboral - + marker-change-time marcador de cambio de tempo - + number-up numeración - + orientation-requested orientación solicitada - + print-color-mode modo de impresión en cor - + printer-is-accepting-jobs impresión está aceptando traballos - + printer-is-shared a impresora é compartida - + printer-is-temporary a impresora é temporal - + printer-make-and-model impresora-marca e modelo - + printer-state-change-time impresora-estado-cambio de tempo - + printer-state-reasons razóns de impresora-estado - + printer-type Tipo de impresora - + printer-uri-supported compatible con impresora-uri - + sides lados - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info información do bus - + logicalsectorsize Tamaño do sector lóxico - + sectorsize Tamaño do sector - + guid guía - + Geometry (Logical) Xeometría (Lóxico) - - + + Device Manager Xestor de dispositivos - + Device Manager is a handy tool for viewing hardware information and managing the devices. Xestor de dispositivos é unha ferramenta útil para ver información de hardware e xestionar os dispositivos. - + New drivers available! Install or update them now. - + - + + View + + + + Include subfolders - + - + Search for drivers in this path - + - - - - Device Name - Nome do dispositivo + + %1 driver updates available + - - Version Available - + + + Time checked: %1 + - - - Size - Tamaño + + Downloading drivers for %1... + - - - Status - Estado + + Download speed: %1 Downloaded %2/%3 + - - - Action - + + Installing drivers for %1... + - - New Version - + + %1 drivers installed, %2 drivers failed + - - Current Version - + + %1 drivers installed + - - Missing drivers (%1) - + + Failed to install drivers + - - Outdated drivers (%1) - + + Network error. Reconnecting... + - - Up-to-date drivers (%1) - + + Download speed: %1 + - - %1 driver updates available - + + Your drivers are up to date + - - - Time checked: %1 - + + All drivers have been backed up + - - Downloading drivers for %1... - + + + A total of %1 drivers, of which %2 have been backed up + - - Download speed: %1 Downloaded %2/%3 - + + You have %1 drivers that can be backed up, it is recommended to do so immediately + - - Installing drivers for %1... - + + You have %1 drivers that can be backed up + - - %1 drivers installed, %2 drivers failed - + + Backing up the %1 driver, a total of %2 drivers + - - %1 drivers installed - + + Backing up: %1 + - - Failed to install drivers - + + %1 drivers backed up, %2 drivers failed + - - Network error. Reconnecting... - + + Failed to backup drivers + - - Download speed: %1 - + + %1 drivers backed up + - - Your drivers are up to date - + + You have %1 drivers that can be restored + - + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot - + - + Please %1 for the installed drivers to take effect - + + + + + View backup path + + + + + Backup All + - - + + submit feedback - + - + Please try again or %1 to us - + - + Install All - + - - + + Scan Again - + - + Cancel Cancelar - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable - + - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? - + - + + + Exit button - + - + + + Cancel button Cancelar - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter - + - - + + Imaging device - + - + Display adapter - + - + Sound card - + - + Network adapter - + - + Wireless network adapter - + - + Installation successful - + - + Installation failed - + - + Downloading - + - + Installing - + - + Not installed - + - + Out-of-date - + - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error - + - + Network error - + - + Canceled - + - + Failed to get driver files - + - + Update - + - + + Backup + + + + + Restore + + + + Install - + TableWidget - - + + Disable Desactivar - + Refresh Recargar - + Export Exportar - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - - + + Enable Activar @@ -3853,45 +4167,45 @@ TextBrowser - + Refresh Recargar - + Export Exportar - + Copy Copiar - + Disable Desactivar - + Unavailable - + UrlChooserEdit - + Select a local folder please - + WaitingWidget - + Loading... Cargando... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_hu.ts b/deepin-devicemanager/translations/deepin-devicemanager_hu.ts index ce944f588..7ada16b7c 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_hu.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_hu.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Több @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Több - + Collapse Összeomlás @@ -51,14 +63,14 @@ DetailTreeView - - + + More Több - - + + Collapse Összeomlás @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Letiltás - + Unavailable Nem elérhető @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Eszköz neve - - + + Name Név - - + + Vendor Gyártó - - Model - Modell + + Chip + Lapka - - Version - Verzió + + Capabilities + Képességek - - Bus Info - Busz adatok + + + Module Alias + Becenév modul - - Chip - Lapka + + + Physical ID + Fizikai azonosító - - Capabilities - Képességek + + SysFS_Path + - - Clock - Óra + + Description + Leírás + + + + Revision + - - Width - Szélesség + + KernelModeDriver + - + Memory Address Memóriacím - + IRQ IRQ - + Unavailable Nem elérhető - + Disable Letiltás @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Név - + Vendor Gyártó - + Model Modell @@ -173,17 +192,17 @@ DeviceBios - + Vendor Gyártó - + Version Verzió - + Chipset Lapkakészlet @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Név - + Vendor Gyártó - + Version Verzió - + Model Modell - + + Module Alias + Becenév modul + + + + Physical ID + Fizikai azonosító + + + Speed Sebesség - + Maximum Power Legnagyobb teljesítmény - + Driver Version Illesztőprogram verziója - + Driver Illesztőprogram - + Capabilities Képességek - + Bus Info Busz adatok - + Logical Name Logikai név - + MAC Address MAC cím - + Unavailable Nem elérhető - + Disable Letiltás @@ -264,57 +293,67 @@ DeviceCdrom - + Name Név - + Vendor Gyártó - + Model Modell - + Version Verzió - + Bus Info Busz adatok - + Capabilities Képességek - + Driver Illesztőprogram - + Maximum Power Legnagyobb teljesítmény - + Speed Sebesség - + + Module Alias + Becenév modul + + + + Physical ID + Fizikai azonosító + + + Unavailable Nem elérhető - + Disable Letiltás @@ -322,7 +361,7 @@ DeviceComputer - + Name Név @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Név - - + + Vendor Gyártó - + CPU ID Processzor azonosító - + Core ID Mag azonosító - + Threads Szálak - - Current Speed - Aktuális sebesség - - - + BogoMIPS BogoMIPS - - + + Architecture Architektúra - + CPU Family Processzorcsalád - + Model Modell - - + + Processor Processzor - + Core(s) Mag(ok) - + Virtualization Virtualizáció - + Flags Zászlók - + Extensions Kiterjesztések - + L3 Cache L3 gyorsítótár - + L2 Cache L2 gyorsítótár - + L1i Cache L1i gyorsítótár - + L1d Cache L1d gyorsítótár - + Stepping Lépés - + Speed Sebesség - + + + Max Speed Maximális sebesség @@ -447,132 +483,127 @@ DeviceGpu - + Name Név - + Vendor Gyártó - + Model Modell - + Version Verzió - + Graphics Memory Grafikus memória - + + Module Alias + Becenév modul + + + Physical ID Fizikai azonosító - + Memory Address Memóriacím - + IO Port IO Port - + Bus Info Busz adatok - + Maximum Resolution Legnagyobb felbontás - + Minimum Resolution Legkisebb felbontás - + Current Resolution Aktuális felbontás - + Driver Illesztőprogram - + Description Leírás - - Clock - Óra - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput Digitális Kimenet - + Display Output Kijelző kimenete - + Capabilities Képességek - + IRQ IRQ - - Width - Szélesség - - - + Unavailable Nem elérhető @@ -580,62 +611,72 @@ DeviceImage - + Name Név - + Vendor Gyártó - + Version Verzió - + Model Modell - + Bus Info Busz adatok - + + Module Alias + Becenév modul + + + + Physical ID + Fizikai azonosító + + + Speed Sebesség - + Maximum Power Legnagyobb teljesítmény - + Driver Illesztőprogram - + Capabilities Képességek - + Serial Number Sorozatszám - + Unavailable Nem elérhető - + Disable Letiltás @@ -643,62 +684,72 @@ DeviceInput - + Name Név - + Vendor Gyártó - + Model Modell - + Interface Interfész - + Bus Info Busz adatok - + + Module Alias + Becenév modul + + + + Physical ID + Fizikai azonosító + + + Speed Sebesség - + Maximum Current Legnagyobb áram - + Driver Illesztőprogram - + Capabilities Képességek - + Version Verzió - + Unavailable Nem elérhető - + Disable Letiltás @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Áttekintés - - - + + + CPU Processzor - - + + CPU quantity Processzorok száma - - + + Motherboard Alaplap - - + + Memory Memória - - + + Display Adapter Kijelző feldolgozó - - + + Sound Adapter Hang feldolgozó - - + + Storage Tárhely - - + + Other PCI Devices Egyéb PCI-eszközök - - + + Battery Akkumulátor - - + + Bluetooth Bluetooth - - + + Network Adapter Hálózati feldolgozó - - + + Mouse Egér - - + + Keyboard Billentyűzet - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Nyomtató - - + + Camera Kamera - - + + Other Devices Other Input Devices Egyéb eszközök - - - + + + Device Eszköz - - - + + + OS Operációs rendszer @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Név - - + + Vendor Gyártó - - + + Size Méret - - + + Type Típus - - + + Speed Sebesség - + Total Width Teljes szélesség - + Locator Helykereső - + Serial Number Sorozatszám - + Configured Voltage Beállított feszültség - + Maximum Voltage Legnagyobb feszültség - + Minimum Voltage Legkisebb feszültség - + Configured Speed Beállított sebesség - + Data Width Adat szélesség @@ -920,200 +971,198 @@ DeviceMonitor - + Name Név - + Vendor Gyártó - + Type Típus - + Display Input Kijelző bemenete - + Interface Type Interfész típusa - + Support Resolution Támogatott felbontás - + Current Resolution Aktuális felbontás - + Display Ratio Kijelző képarány - + Primary Monitor Elsődleges megjelenítő - + Size Méret - + Serial Number Sorozatszám - - - Product Date - Termék dátuma - DeviceNetwork - + + Name Név - + + Vendor Gyártó - + + Type Típus - + Version Verzió - + Bus Info Busz adatok - + Capabilities Képességek - + Driver Illesztőprogram - + Driver Version Illesztőprogram verziója - + + Module Alias + Becenév modul + + + + Physical ID + Fizikai azonosító + + + Maximum Rate Legnagyobb arány - + Negotiation Rate Forgalomba hozatali arány - + Port Port - + Multicast Többszereplős - + Link Hivatkozás - + Latency Késleltetés - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Adás - + Auto Negotiation Automatikus forgalmazás - - Clock - Óra - - - - Width - Szélesség - - - + Memory Address Memóriacím - + IRQ IRQ - + MAC Address MAC cím - + Logical Name Logikai név - + Unavailable Nem elérhető - + Disable Letiltás @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Név - + Vendor Gyártó - + Model Modell - + Bus Info Busz adatok - + Version Verzió - + Input/Output Bemenet/Kimenet - + Memory Memória - + IRQ IRQ - + Latency Késleltetés - - Clock - Óra - - - - Width - Szélesség - - - + Driver Illesztőprogram - + Capabilities Képességek @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Név - + Vendor Gyártó - + Model Modell - + Version Verzió - + Bus Info Busz adatok - + Capabilities Képességek - + Driver Illesztőprogram - + Maximum Power Legnagyobb teljesítmény - + Speed Sebesség - + Serial Number Sorozatszám - + Unavailable Nem elérhető - + Disable Letiltás @@ -1252,82 +1291,82 @@ DevicePower - + Name Név - + Model Modell - + Vendor Gyártó - + Serial Number Sorozatszám - + Type Típus - + Status Állapot - + Capacity Kapacitás - + Voltage Feszültség - + Slot Foglalat - + Design Capacity Tervezési kapacitás - + Design Voltage Tervezési feszültség - + SBDS Version SBDS Verzió - + SBDS Serial Number SBDS Sorozatszám - + SBDS Manufacture Date SBDS Gyártási dátum - + SBDS Chemistry SBDS Kémia - + Temperature Hőmérséklet @@ -1335,47 +1374,47 @@ DevicePrint - + Name Név - + Model Modell - + Vendor Gyártó - + Serial Number Sorozatszám - + Shared Megosztott - + URI URI - + Status Állapot - + Interface Type Interfész típusa - + Disable Letiltás @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Modell - - - - + + Vendor Gyártó - - + + Media Type Adathordozó típusa - - + + + Size Méret - + + + Name + Név + + + Version Verzió - + Capabilities Képességek - + + + Module Alias + Becenév modul + + + + + Physical ID + Fizikai azonosító + + + Firmware Version Firmware verzió - + Speed Sebesség - + Description Leírás - + Serial Number Sorozatszám - + Interface Interfész - + Rotation Rate Forgási sebesség - + Unavailable Nem elérhető @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Válasszon illesztőprogramot a frissítéshez - + No drivers found in this folder Ebben a mappában nem található illesztőprogram @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Hangeszköz információinak betöltése... - + Loading BIOS Info... BIOS információk betöltése... - + Loading CD-ROM Info... CD-ROM információinak betöltése... - + Loading Operating System Info... Operációs rendszer információinak betöltése... - + Loading CPU Info... Processzor információinak betöltése... - + Loading Other Devices Info... Egyéb eszközök információinak betöltése... - + Loading Power Info... Tápellátás információinak betöltése... - + Loading Printer Info... Nyomtató információinak betöltése... - + Loading Mouse Info... Egér információinak betöltése... - + Loading Network Adapter Info... Hálózati csatoló információinak betöltése... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Letiltás - + Unavailable Nem elérhető @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Letiltás - + Unavailable Nem elérhető @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Eszköz információ - + Display shortcuts Parancsikonok megjelenítése - + Close Bezárás - + Help Segítség - + Copy Másolás - + System Rendszer - + Export Exportálás - + Refresh Frissítés - + Device Manager Eszközkezelő - + Hardware Hardver - + Drivers Illesztőprogramok - + Monitor Kijelző - + Overview Áttekintés - + Display Adapter Kijelző feldolgozó - + CPU Processzor - + Network Adapter Hálózati feldolgozó - + Battery Akkumulátor @@ -1639,191 +1691,377 @@ PageDetail - + More Több + + PageDriverBackupInfo + + + + Name + Név + + + + + Current Version + Jelenlegi verzió + + + + + Driver Platform Version + + + + + Status + Állapot + + + + Action + Művelet + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Frissítés... - - - + + + Cancel button Mégsem - + Next Következő - + Warning Figyelmeztetés - + The device will be unavailable after the driver uninstallation Az eszköz nem lesz elérhető az illesztőprogram eltávolítása után - + Uninstall button Eltávolítás - + Uninstalling Eltávolítás.... - + Update successful A frissítés sikeres - + Uninstallation successful Az eltávolítás sikeres - + Update failed A frissítés sikertelen - + Uninstallation failed Az eltávolítás sikertelen - + OK button OK - + Next button Következő - + The selected folder does not exist, please select again A kiválasztott mappa nem létezik, kérjük válasszon ki egy másikat - + Update button Frissítés - + Previous button Előző - + Broken package Törött csomag - + Unmatched package architecture Páratlan csomagarchitektúra - - + + The selected file does not exist, please select again A kiválasztott fájl nem létezik, kérjük válasszon ki egy másikat - + It is not a driver Ez nem egy illesztőprogram - + Unable to install - no digital signature A telepítés nem lehetséges – nincs digitális aláírás - + Unknown error Ismeretlen hiba - + The driver module was not found Az illesztőprogram modul nem található - + Invalid module format Érvénytelen modul formátum - + The driver module has dependencies Az illesztőprogram modulnak függőségei vannak - PageListView + PageDriverInstallInfo - - Refresh - Frissítés + + + + Device Name + Eszköz neve - + + Version Available + Elérhető verzió + + + + + Size + Méret + + + + + Status + Állapot + + + + + Action + Művelet + + + + New Version + Új verzió + + + + Current Version + Jelenlegi verzió + + + + Missing drivers (%1) + Hiányzó illesztőprogramok (%1) + + + + Outdated drivers (%1) + Elavult illesztőprogramok (%1) + + + + Up-to-date drivers (%1) + Naprakész illesztőprogramok (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Név + + + + Current Version + Jelenlegi verzió + + + + Backup Version + + + + + Action + Művelet + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Frissítés + + + Export Exportálás - + Overview Áttekintés + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Nem sikerült engedélyezni az eszközt - + Failed to disable the device Nem sikerült letiltani az eszközt - + Failed to disable it: unable to get the device SN A letiltás sikertelen: nem sikerült lekérni az eszköz sorozatszámát - + Update Drivers Illesztőprogramok frissítése - + Uninstall Drivers Illesztőprogramok eltávolítása @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Frissítés - + Export Exportálás - + Copy Másolás - + Overview Áttekintés @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Frissítés - + Export Exportálás - + Copy Másolás - - + + Enable Engedélyezés - + Update drivers Illesztőprogramok frissítése - + Uninstall drivers Illesztőprogramok eltávolítása - + Allow it to wake the computer Engedélyezze számára, hogy felébressze a számítógépet - + Disable Letiltás - - + + Failed to disable it: unable to get the device SN A letiltás sikertelen: nem sikerült lekérni az eszköz sorozatszámát - + Failed to disable the device Nem sikerült letiltani az eszközt - + Failed to enable the device Nem sikerült engedélyezni az eszközt - + Update Drivers Illesztőprogramok frissítése - + Uninstall Drivers Illesztőprogramok eltávolítása @@ -1924,867 +2162,847 @@ QObject - + SubVendor Alszállító - + SubDevice Aleszköz - + Driver Illesztőprogram - + Driver Status Illesztőprogram állapot - + Driver Activation Cmd Illesztőprogram aktiválási parancs - - + - + + Config Status Konfigurációs állapot - - - - - - - physical id - Fizikai azonosító - - - + latency késleltetés - + Phys Fizikai - + Sysfs Sysfs - + Handlers Kezelők - - + + PROP PROP - - + + EV EV - - + + KEY Kulcs - - Model - Modell - - - - Vendor - Gyártó - - - + Version Verzió - - + + + Bus Busz - - + + BIOS Information BIOS információ - - + + Base Board Information Alaplapi információk - - + + System Information Rendszerinformációk - - + + Chassis Information Alváz információ - - + + Physical Memory Array Fizikai memória tömb - + Release Date Megjelenési dátum - + Address Cím - + Runtime Size Futásidő méret - + ROM Size ROM mérete - + Characteristics Karakterisztika - + BIOS Revision BIOS felülvizsgálat - + Firmware Revision Firmware felülvizsgálat - - + + Product Name Terméknév - - - + + + Serial Number Sorozatszám - - - + + + Asset Tag Eszközcímke - - + + Features Jellemzők - + Location In Chassis Elhelyezkedés az alvázon - + Chassis Handle Alváz kezelő - - + + Type Típus - + Contained Object Handles Tartalmazott objektum kezelők - - + + UUID UUID - + Wake-up Type Felébresztés típusa - - + + SKU Number SKU szám - + Family Család - + Lock Zárolás - + Boot-up State Bootolási állapot - + Power Supply State Tápellátási állapot - + Thermal State Hőmérséklet állapot - + Security Status Biztonsági állapot - + OEM Information OEM információ - + Height Magasság - + Number Of Power Cords Tápkábelek száma - + Contained Elements Tartalmazott elemek - + Location Hely - + Error Correction Type Hibajavítás típusa - + Maximum Capacity Legnagyobb kapacitás - - + + Error Information Handle Hibainformáció kezelő - + Number Of Devices Eszközök száma - + BIOS ROMSIZE BIOS ROM-mérete - + Release date Kiadás dátuma - + Board name Tábla neve - + SMBIOS Version SMBIOS Verzió - + Language Description Format Nyelvi leírás formátuma - + Installable Languages Telepíthető nyelvek - + Currently Installed Language A jelenleg telepített nyelvek - + BD Address BD címek - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Csomagtípus - + Link policy Hivatkozási szabályok - + Link mode Hivatkozási mód - - + + Class Osztály - + Service Classes Szolgáltatási osztályok - + Device Class Eszköz osztályok - + HCI Version HCI Verzió - + LMP Version LMP Verzió - + Subversion Alverzió - + Device Eszköz - - + + Serial ID Sorozat azonosító - + product termék - + description leírás - + Powered Gyártó - + Discoverable Felfedezhető - + Pairable Párosítható - + Modalias Becenév módosítása - + Discovering Felfedezés - + Driver Modules Illesztőprogram modulok - - - + + + + + Device File Eszköz fájl - + Device Files Eszköz fájlok - - + + + Device Number Eszköz szám - - Module Alias - Becenév modul - - - + Application Alkalmazás - + status állapot - - + + + logical name logikai név - - + + ansiversion ansi verzió - + CPU implementer Processzor megvalósító - + CPU architecture Processzor acrhitektúra - + CPU variant Processzor variáció - + CPU part Processzor rész - + CPU revision Processzor felülvizsgálat - + One Egy - + Two Kettő - + Four Négy - + Six Hat - + Eight Nyolc - + Ten Tíz - + Twelve Tizenkettő - + Fourteen Tizennégy - + Sixteen Tizenhat - + Eighteen Tizennyolc - + Twenty Húsz - + Twenty-two Huszonkettő - + Twenty-four Huszonnégy - + Twenty-six Huszonhat - + Twenty-eight Huszonnyolc - + Thirty Harminc - + Thirty-two Harminckettő - + Thirty-four Harmincnégy - + Thirty-six Harminchat - + Thirty-eight Harmincnyolc - + Forty Negyven - + Forty-two Negyvenkettő - + Forty-four Negyvennégy - + Forty-six Negyvenhat - + Forty-eight Negyvennyolc - + Fifty Ötven - + Fifty-two Ötvenkettő - + Fifty-four Ötvennégy - + Fifty-six Ötvenhat - + Fifty-eight Ötvennyolc - + Sixty Hatvan - + Sixty-two Hatvankettő - + Sixty-four Hatvannégy - + Sixty-six Hatvanhat - + Sixty-eight Hatvannyolc - + Seventy Hetven - + Seventy-two Hetvenkettő - + Seventy-four Hetvennégy - + Seventy-six Hetvenhat - + Seventy-eight Hetvennyolc - + Eighty Nyolcvan - + Eighty-two Nyolcvankettő - + Eighty-four Nyolcvannégy - + Eighty-six Nyolcvanhat - + Eighty-eight Nyolcvannyolc - + Ninety Kilencven - + Ninety-two Kilencvenkettő - + Ninety-four Kilencvennégy - + Ninety-six Kilencvenhat - + Ninety-eight Kilencvennyolc - + One hundred Száz - + One hundred and Two Százkettő - + One hundred and four Száznégy - + One hundred and Six Százhat - + One hundred and Eight Száznyolc - + One hundred and Ten Száztíz - + One hundred and Twelve Száztizenkettő - + One hundred and Fourteen Száztizennégy - + One hundred and Sixteen Száztizenhat - + One hundred and Eighteen Száztizennyolc - + One hundred and Twenty Százhúsz - + One hundred and Twenty-two Százhuszonkettő - + One hundred and Twenty-four Százhuszonnégy - + One hundred and Twenty-six Százhuszonhat - + One hundred and Twenty-eight Százhuszonnyolc - + One hundred and Ninety-two Százkilencvenkettő - + Two hundred and fifty-six Kétszázötvenhat @@ -2824,988 +3042,1084 @@ GLSL verzió - - - + + + Unknown Ismeretlen - + Uniq Egyedi - + MSC MSC - - + + + Hardware Class Hardver osztályok - - - - + + + + CPU Processzor - - - - + + + + No CPU found Processzor nem található - - - - + + + + Motherboard Alaplap - - - - + + + + No motherboard found Alaplap nem található - - - - + + + + Memory Memória - - - - + + + + No memory found Memória nem található - - - - + + + + Storage Tárhely - - - - + + + + No disk found Lemez nem található - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Kijelző feldolgozó - - - - + + + + No GPU found Grafikus processzor nem található - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Monitor nem található - - - - - + + + + + Network Adapter Hálózati feldolgozó - - - - + + + + No network adapter found Hálózati feldolgozó nem található - - - - - + + + + + Sound Adapter Hang feldolgozó - - - - + + + + No audio device found Hang eszköz nem található - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Bluetooth eszköz nem található - - - - + + + + Other PCI Devices Egyéb PCI-eszközök - - - - + + + + No other PCI devices found Egyéb PCI-eszközök nem találhatóak - - - - + + + + Power Energia - - - - + + + + No battery found Akkumulátor nem található - - - - - + + + + + Keyboard Billentyűzet - - - - + + + + No keyboard found Billentyűzet nem található - - - - - + + + + + Mouse Egér - - - - + + + + No mouse found Egér nem található - - - - - - + + + + + + Printer Nyomtató - - - - + + + + No printer found Nyomtató nem található - - - - + + + + Camera Kamera - - - - + + + + No camera found Kamera nem található - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found CD-ROM nem található - - - - - + + + + + Other Devices Egyéb eszközök - - - - + + + + No other devices found Egyéb eszközök nem találhatóak - + Array Handle Tömb kezelő - + Form Factor Űrlap tényező - + Set Beállít - + Bank Locator Töltés kereső - + Type Detail Típus részletek - + Part Number Rész szám - + Rank Besorolás - + Memory Technology Memória technológia - + Memory Operating Mode Capability Memória üzemmód képesség - + Firmware Version Firmware verzió - + Module Manufacturer ID Modul gyártói azonosító - + Module Product ID Termék modul azonosító - + Memory Subsystem Controller Manufacturer ID Memória alrendszer vezérlő gyártói azonosító - + Memory Subsystem Controller Product ID Memória alrendszer vezérlő termék azonosító - + Non-Volatile Size Nem illékony méret - + Volatile Size Illékony méret - + Cache Size Gyorsítótár méret - + Logical Size Logikai méret - - - - - + + + + + inch incs - + Date Dátum - + ioport IO port - + network hálózat - - + battery akkumulátor - + native-path natív útvonal - + power supply tápellátás - + updated frissítve - + has history történet - + has statistics statisztika - + rechargeable újratölthető - + state állapot - + warning-level figyelmeztetési szint - + energy energia - + energy-empty energia-üres - + energy-full energia-teli - + energy-full-design energia-teljes tervezése - + energy-rate energia-arány - + voltage feszültség - + percentage százalék - + technology technológia - + icon-name Ikon név - + online online - + daemon-version démon-verzió - + on-battery Akkumulátoron - + lid-is-closed lezárt fedélnél - + lid-is-present nyitott fedélnél - + critical-action kritikus művelet - + copies másolatok - + job-cancel-after munka törlése utána - + job-hold-until munka tartása amíg - + job-priority munka fontossága - + marker-change-time jelölő váltás ideje - + number-up felszámítás - + orientation-requested tájolást kíván - + print-color-mode színes nyomtatási mód - + printer-is-accepting-jobs nyomtató fogadta a feladatokat - + printer-is-shared a nyomtató megosztva - + printer-is-temporary a nyomtató elfoglalt - + printer-make-and-model nyomtató-gyártmány és modell - + printer-state-change-time nyomtató-állapot-váltás ideje - + printer-state-reasons nyomtató-állapot-váltás oka - + printer-type nyomtató típusa - + printer-uri-supported nyomtató uri-támogatott - + sides oldalak - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info busz adatok - + logicalsectorsize logikai szektorméret - + sectorsize szektorméret - + guid guid - + Geometry (Logical) Geometria (Logikai) - - + + Device Manager Eszközkezelő - + Device Manager is a handy tool for viewing hardware information and managing the devices. Az Eszközkezelő egy praktikus eszköz a hardverinformációk megtekintéséhez és az eszközök kezeléséhez. - + New drivers available! Install or update them now. Új illesztőprogramok érhetőek el! Telepítse, vagy frissítse őket most. - + + View + + + + Include subfolders Tartalmazza az almappákat is - + Search for drivers in this path Keressen illesztőprogramokat ezen az útvonalon - - - - Device Name - Eszköz neve - - - - Version Available - Elérhető verzió - - - - - Size - Méret - - - - - Status - Állapot - - - - - Action - Művelet - - - - New Version - Új verzió - - - - Current Version - Jelenlegi verzió - - - - Missing drivers (%1) - Hiányzó illesztőprogramok (%1) - - - - Outdated drivers (%1) - Elavult illesztőprogramok (%1) - - - - Up-to-date drivers (%1) - Naprakész illesztőprogramok (%1) - - - + %1 driver updates available %1 illesztőprogram frissítése érhető el - - + + Time checked: %1 Ellenőrzési idő: %1 - + Downloading drivers for %1... A %1 illesztőprogramjának letöltése - + Download speed: %1 Downloaded %2/%3 letöltési sebesség: %1 Letöltve %2 / %3 - + Installing drivers for %1... A %1 illesztőprogramjának telepítése - + %1 drivers installed, %2 drivers failed %1 illesztőprogram telepítve, %2 illesztőprogram meghiúsult - + %1 drivers installed %1 illesztőprogram telepítve - + Failed to install drivers Az illesztőprogramok telepítése sikertelen - + Network error. Reconnecting... Hálózati hiba. Újra csatlakozás... - + Download speed: %1 Letöltési sebesség: %1 - + Your drivers are up to date Az illesztőprogramok naprakészek - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot Újraindítás - + Please %1 for the installed drivers to take effect Kérjük %1, hogy a telepített illesztőprogramok érvénybe lépjenek - - + + View backup path + + + + + Backup All + + + + + submit feedback Visszajelzés küldése - + Please try again or %1 to us Kérjük próbálja újra, vagy küldje el nekünk %1-et - + Install All Összes telepítése - - + + Scan Again Újra ellenőrzés - + Cancel Mégsem - + Scanning hardware device drivers, please wait... Hardvereszköz illesztőprogramok ellenőrzése, kérjük várjon... - - + + Scanning %1 Ellenőrzés %1 - + Scan failed Az ellenőrzés sikertelen - + Network unavailable A hálózat nem érhető el - + Please check your network connection Kérjük ellenőrizze a hálózati kapcsolatot - + Please scan again or %1 to us Kérjük ellenőrizze újra, vagy küldje be nekünk a %1-et - + You are installing a driver, which will be interrupted if you exit. Az illesztőprogramok telepítése folyamatban, kilépés esetén a folyamat megszakad. - + + + Are you sure you want to exit? Valóban ki szeretne lépni? - + + + Exit button Kilépés - + + + Cancel button Mégsem - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Bluetooth adapter - - + + Imaging device Képalkotó eszköz - + Display adapter Kijelző adapter - + Sound card Hangkártya - + Network adapter Hálózati adapter - + Wireless network adapter Vezeték nélküli hálózati adapter - + Installation successful A telepítés sikeres - + Installation failed A telepítés sikertelen - + Downloading Letöltés - + Installing Telepítés - + Not installed Nincs telepítve - + Out-of-date Lejárt - + Waiting Várakozás - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Ismeretlen hiba - + Network error Hálózati hiba - + Canceled Megszakítva - + Failed to get driver files Nem sikerült beolvasni az illesztőprogram fájljait - + Update Frissítés - + + Backup + + + + + Restore + + + + Install Telepítés @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Letiltás - + Refresh Frissítés - + Export Exportálás - + Update drivers Illesztőprogramok frissítése - + Uninstall drivers Illesztőprogramok eltávolítása - + Allow it to wake the computer Engedélyezze számára, hogy felébressze a számítógépet - - + + Enable Engedélyezés @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Frissítés - + Export Exportálás - + Copy Másolás - + Disable Letiltás - + Unavailable Nem elérhető @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Kérjük válasszon egy helyi mappát @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Betöltés... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_it.ts b/deepin-devicemanager/translations/deepin-devicemanager_it.ts index 3d7f84911..3bb4bdb78 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_it.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_it.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Di più @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Di più - + Collapse Collassa @@ -51,14 +63,14 @@ DetailTreeView - - + + More Di più - - + + Collapse Collassa @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Disabilita - + Unavailable Non disponibile @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Nome dispositivo - - + + Name Nome - - + + Vendor Marca - - Model - Modello + + Chip + Chip - - Version - Versione + + Capabilities + Funzionalità - - Bus Info - Info BUS + + + Module Alias + Alias modulo - - Chip - Chip + + + Physical ID + ID Fisico - - Capabilities - Funzionalità + + SysFS_Path + - - Clock - Clock + + Description + Descrizione + + + + Revision + - - Width - Larghezza + + KernelModeDriver + - + Memory Address Indirizzo di memoria - + IRQ IRQ - + Unavailable Non disponibile - + Disable Disabilita @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nome - + Vendor Marca - + Model Modello @@ -173,17 +192,17 @@ DeviceBios - + Vendor Marca - + Version Versione - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nome - + Vendor Marca - + Version Versione - + Model Modello - + + Module Alias + Alias modulo + + + + Physical ID + ID Fisico + + + Speed Velocità - + Maximum Power Potenza massima - + Driver Version Versione driver - + Driver Driver - + Capabilities Funzionalità - + Bus Info Info BUS - + Logical Name Nome logico - + MAC Address Indirizzo MAC - + Unavailable Non disponibile - + Disable Disabilita @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nome - + Vendor Marca - + Model Modello - + Version Versione - + Bus Info Info BUS - + Capabilities Funzionalità - + Driver Driver - + Maximum Power Potenza massima - + Speed Velocità - + + Module Alias + Alias modulo + + + + Physical ID + ID Fisico + + + Unavailable Non disponibile - + Disable Disabilita @@ -322,7 +361,7 @@ DeviceComputer - + Name Nome @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nome - - + + Vendor Marca - + CPU ID CPU - + Core ID ID Core - + Threads Thread - - Current Speed - Velocità attuale - - - + BogoMIPS BogoMIPS - - + + Architecture Architettura - + CPU Family Famiglia CPU - + Model Modello - - + + Processor Thread - + Core(s) Core(s) - + Virtualization Virtualizzazione - + Flags Flag - + Extensions Estensioni - + L3 Cache Cache L3 - + L2 Cache Cache L2 - + L1i Cache Cache L1i - + L1d Cache Cache L1d - + Stepping Stepping - + Speed Velocità - + + + Max Speed Velocità massima @@ -447,132 +483,127 @@ DeviceGpu - + Name Nome - + Vendor Marca - + Model Modello - + Version Versione - + Graphics Memory Memoria grafica - + + Module Alias + Alias modulo + + + Physical ID ID Fisico - + Memory Address Indirizzo di memoria - + IO Port Porta IO - + Bus Info Info BUS - + Maximum Resolution Risoluzione massima - + Minimum Resolution Risoluzione minima - + Current Resolution Risoluzione corrente - + Driver Driver - + Description Descrizione - - Clock - Clock - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output Uscita video - + Capabilities Funzionalità - + IRQ IRQ - - Width - Larghezza - - - + Unavailable Non disponibile @@ -580,62 +611,72 @@ DeviceImage - + Name Nome - + Vendor Marca - + Version Versione - + Model Modello - + Bus Info Info BUS - + + Module Alias + Alias modulo + + + + Physical ID + ID Fisico + + + Speed Velocità - + Maximum Power Potenza massima - + Driver Driver - + Capabilities Funzionalità - + Serial Number Numero di serie - + Unavailable Non disponibile - + Disable Disabilita @@ -643,62 +684,72 @@ DeviceInput - + Name Nome - + Vendor Marca - + Model Modello - + Interface Interfaccia - + Bus Info Info BUS - + + Module Alias + Alias modulo + + + + Physical ID + ID Fisico + + + Speed Velocità - + Maximum Current Corrente massima - + Driver Driver - + Capabilities Funzionalità - + Version Versione - + Unavailable Non disponibile - + Disable Disabilita @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Panoramica - - - + + + CPU CPU - - + + CPU quantity Quantità CPU - - + + Motherboard Scheda Madre - - + + Memory Memoria - - + + Display Adapter Adattatore video - - + + Sound Adapter Adattatore audio - - + + Storage Archiviazione - - + + Other PCI Devices Altri Dispositivi PCI - - + + Battery Batteria - - + + Bluetooth Bluetooth - - + + Network Adapter Adattatore di Rete - - + + Mouse Mouse - - + + Keyboard Tastiera - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Stampante - - + + Camera Camera - - + + Other Devices Other Input Devices Altri dispositivi - - - + + + Device Dispositivo - - - + + + OS OS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nome - - + + Vendor Marca - - + + Size Dimensione - - + + Type Tipo - - + + Speed Velocità - + Total Width Dimensioni totali - + Locator Locazione - + Serial Number Numero di serie - + Configured Voltage Voltaggio configurato - + Maximum Voltage Voltaggio Massimo - + Minimum Voltage Voltaggio minimo - + Configured Speed Velocita configurata - + Data Width Dimensione dei dati @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nome - + Vendor Marca - + Type Tipo - + Display Input Ingresso video - + Interface Type Tipo interfaccia - + Support Resolution Risoluzione supportata - + Current Resolution Risoluzione corrente - + Display Ratio Frequenza di aggiornamento - + Primary Monitor Monitor primario - + Size Dimensione - + Serial Number Numero di serie - - - Product Date - Data produzione - DeviceNetwork - + + Name Nome - + + Vendor Marca - + + Type Tipo - + Version Versione - + Bus Info Info BUS - + Capabilities Funzionalità - + Driver Driver - + Driver Version Versione driver - + + Module Alias + Alias modulo + + + + Physical ID + ID Fisico + + + Maximum Rate Tasso massimo - + Negotiation Rate Tasso di negoziazione - + Port Porta - + Multicast Multicast - + Link Link - + Latency Latenza - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Broadcast - + Auto Negotiation Negoziazione automatica - - Clock - Clock - - - - Width - Larghezza - - - + Memory Address Indirizzo di memoria - + IRQ IRQ - + MAC Address Indirizzo MAC - + Logical Name Nome logico - + Unavailable Non disponibile - + Disable Disabilita @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nome - + Vendor Marca - + Model Modello - + Bus Info Info BUS - + Version Versione - + Input/Output Ingressi/Uscite - + Memory Memoria - + IRQ IRQ - + Latency Latenza - - Clock - Clock - - - - Width - Larghezza - - - + Driver Driver - + Capabilities Funzionalità @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nome - + Vendor Marca - + Model Modello - + Version Versione - + Bus Info Info BUS - + Capabilities Funzionalità - + Driver Driver - + Maximum Power Potenza massima - + Speed Velocità - + Serial Number Numero di serie - + Unavailable Non disponibile - + Disable Disabilita @@ -1252,82 +1291,82 @@ DevicePower - + Name Nome - + Model Modello - + Vendor Marca - + Serial Number Numero di serie - + Type Tipo - + Status Stato - + Capacity Capacità - + Voltage Voltaggio - + Slot Slot - + Design Capacity Capacità designata - + Design Voltage Voltaggio designato - + SBDS Version Versione SBDS - + SBDS Serial Number Serial Number SBDS - + SBDS Manufacture Date Data di produzione SBDS - + SBDS Chemistry Chimica SBDS - + Temperature Temperatura @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nome - + Model Modello - + Vendor Marca - + Serial Number Numero di serie - + Shared Condivisa - + URI URI - + Status Stato - + Interface Type Tipo interfaccia - + Disable Disabilita @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Modello - - - - + + Vendor Marca - - + + Media Type Tipo Media - - + + + Size Dimensione - + + + Name + Nome + + + Version Versione - + Capabilities Funzionalità - + + + Module Alias + Alias modulo + + + + + Physical ID + ID Fisico + + + Firmware Version Versione firmware - + Speed Velocità - + Description Descrizione - + Serial Number Numero di serie - + Interface Interfaccia - + Rotation Rate Velocità rotazione - + Unavailable Non disponibile @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Seleziona un driver per l'aggiornamento - + No drivers found in this folder Nessun driver rilevato nel percorso selezionato @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Caricamento info dispositivi audio... - + Loading BIOS Info... Caricamento info BIOS... - + Loading CD-ROM Info... Caricamento info CD-ROM... - + Loading Operating System Info... Caricamento info Sistema Operativo... - + Loading CPU Info... Caricamento info CPU... - + Loading Other Devices Info... Caricamento info degli altri dispositivi... - + Loading Power Info... Caricamento info alimentazione... - + Loading Printer Info... Caricamento info stampanti... - + Loading Mouse Info... Caricamento info mouse... - + Loading Network Adapter Info... Caricamento info adattatore di rete... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Disabilita - + Unavailable Non disponibile @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Disabilita - + Unavailable Non disponibile @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Info dispositivo - + Display shortcuts Visualizza scorciatoie - + Close Chiudi - + Help Aiuto - + Copy Copia - + System Sistema - + Export Esporta - + Refresh Aggiorna - + Device Manager Gestore dispositivi - + Hardware Hardware - + Drivers Drivers - + Monitor Monitor - + Overview Panoramica - + Display Adapter Adattatore video - + CPU CPU - + Network Adapter Adattatore di Rete - + Battery Batteria @@ -1639,191 +1691,377 @@ PageDetail - + More Di più + + PageDriverBackupInfo + + + + Name + Nome + + + + + Current Version + Versione corrente + + + + + Driver Platform Version + + + + + Status + Stato + + + + Action + Azione + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Aggiornamento in corso - - - + + + Cancel button Annulla - + Next Avanti - + Warning Attenzione - + The device will be unavailable after the driver uninstallation Il dispositivo non sarà disponibile dopo la disinstallazione del driver - + Uninstall button Disinstalla - + Uninstalling Disinstallazione in corso - + Update successful Aggiornamento riuscito - + Uninstallation successful Disinstallazione riuscita - + Update failed Aggiornamento fallito - + Uninstallation failed Disinstallazione fallita - + OK button OK - + Next button Avanti - + The selected folder does not exist, please select again Il percorso selezionato non esiste, riprova - + Update button Aggiorna - + Previous button Precedente - + Broken package Pacchetto danneggiato - + Unmatched package architecture Architettura pacchetto non compatibile - - + + The selected file does not exist, please select again Il file selezionato non esiste, riprova - + It is not a driver Non è un driver - + Unable to install - no digital signature Installazione interrotta - Nessuna firma digitale - + Unknown error Errore sconosciuto - + The driver module was not found Il modulo driver non è stato trovato - + Invalid module format Formato modulo non valido - + The driver module has dependencies Il driver del modulo ha delle dipendenze - PageListView + PageDriverInstallInfo - - Refresh - Aggiorna + + + + Device Name + Nome dispositivo - + + Version Available + Versioni disponibili + + + + + Size + Dimensione + + + + + Status + Stato + + + + + Action + Azione + + + + New Version + Nuova versione + + + + Current Version + Versione corrente + + + + Missing drivers (%1) + Driver mancanti (%1) + + + + Outdated drivers (%1) + Driver obsoleti (%1) + + + + Up-to-date drivers (%1) + Driver aggiornati (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nome + + + + Current Version + Versione corrente + + + + Backup Version + + + + + Action + Azione + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Aggiorna + + + Export Esporta - + Overview Panoramica + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Attivazione dispositivo fallita - + Failed to disable the device Attivazione dispositivo fallita - + Failed to disable it: unable to get the device SN Disabilitazione fallita: impossibile ottenere il SN del dispositivo - + Update Drivers Aggiornamento driver - + Uninstall Drivers Disinstallazione driver @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Aggiorna - + Export Esporta - + Copy Copia - + Overview Panoramica @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Aggiorna - + Export Esporta - + Copy Copia - - + + Enable Abilita - + Update drivers Aggiornamento driver - + Uninstall drivers Disinstallazione driver - + Allow it to wake the computer Consenti il risveglio del computer - + Disable Disabilita - - + + Failed to disable it: unable to get the device SN Disabilitazione fallita: impossibile ottenere il SN del dispositivo - + Failed to disable the device Attivazione dispositivo fallita - + Failed to enable the device Attivazione dispositivo fallita - + Update Drivers Aggiornamento driver - + Uninstall Drivers Disinstallazione driver @@ -1924,867 +2162,847 @@ QObject - + SubVendor Vendor secondario - + SubDevice Dispositivo secondario - + Driver Driver - + Driver Status Stato driver - + Driver Activation Cmd Comandi di attivazione driver - - + - + + Config Status Stato configurazione - - - - - - - physical id - ID Fisico - - - + latency latenza - + Phys Phys - + Sysfs Sysfs - + Handlers Handlers - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Modello - - - - Vendor - Marca - - - + Version Versione - - + + + Bus BUS - - + + BIOS Information Info BIOS - - + + Base Board Information Info base scheda - - + + System Information Info Sistema - - + + Chassis Information Info Chassis - - + + Physical Memory Array Matrice di memoria fisica - + Release Date Data di rilascio - + Address Indirizzi - + Runtime Size Dimensione Runtime - + ROM Size Dimensione ROM - + Characteristics Caratteristiche - + BIOS Revision Revisione BIOS - + Firmware Revision Revisione Firmware - - + + Product Name Nome Prodotto - - - + + + Serial Number Numero di serie - - - + + + Asset Tag Etichetta risorsa - - + + Features Funzionalità - + Location In Chassis Locazione nello Chassis - + Chassis Handle Chassis Handle - - + + Type Tipo - + Contained Object Handles Contenuto dello Chassis - - + + UUID UUID - + Wake-up Type Tempo di attività - - + + SKU Number Numero SKU - + Family Famiglia - + Lock Blocco - + Boot-up State Stato Boot-up - + Power Supply State Stato dell'alimentazione - + Thermal State Stato termico - + Security Status Stato sicurezza - + OEM Information Info OEM - + Height Altezza - + Number Of Power Cords Numero di cavi di alimentazione - + Contained Elements Elementi contenuti - + Location Locazione - + Error Correction Type Tipo di correzione errori - + Maximum Capacity Capacità massima - - + + Error Information Handle Gestione delle informazioni sull'errore - + Number Of Devices Numero di dispositivi - + BIOS ROMSIZE Dimensione ROM del BIOS - + Release date Data di rilascio - + Board name Nome scheda - + SMBIOS Version Versione SMBIOS - + Language Description Format Formato linguaggi supportato - + Installable Languages Linguaggi installabili - + Currently Installed Language Linguaggi attualmente installati - + BD Address Indirizzo BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Tipo pacchetto - + Link policy Link policy - + Link mode Link mode - - + + Class Classe - + Service Classes Classi Servizio - + Device Class Classe Dispositivo - + HCI Version Versione HCI - + LMP Version Versione LMP - + Subversion Sottoversione - + Device Dispositivo - - + + Serial ID ID Seriale - + product prodotto - + description descrizione - + Powered Alimentato - + Discoverable Identificabile - + Pairable Associabile - + Modalias Modalias - + Discovering Mostra - + Driver Modules Moduli driver - - - + + + + + Device File File dispositivo - + Device Files File dispositivo - - + + + Device Number Numero dispositivo - - Module Alias - Alias modulo - - - + Application Applicazione - + status stato - - + + + logical name Nome logico - - + + ansiversion versione ANSI - + CPU implementer CPU implementer - + CPU architecture Architettura CPU - + CPU variant Variante CPU - + CPU part Parte CPU - + CPU revision Revisione CPU - + One Uno - + Two Due - + Four Quattro - + Six Sei - + Eight Otto - + Ten Dieci - + Twelve Dodici - + Fourteen Quattordici - + Sixteen Sedici - + Eighteen Diciotto - + Twenty Venti - + Twenty-two Ventidue - + Twenty-four Ventiquattro - + Twenty-six Ventisei - + Twenty-eight Ventotto - + Thirty Trenta - + Thirty-two Trentadue - + Thirty-four Trentaquattro - + Thirty-six Tentasei - + Thirty-eight Trentotto - + Forty Quaranta - + Forty-two Quarantadue - + Forty-four Quarantaquattro - + Forty-six Quarantasei - + Forty-eight Quarantotto - + Fifty Cinquanta - + Fifty-two Cinquantadue - + Fifty-four Cinquataquattro - + Fifty-six Cinquantasei - + Fifty-eight Cinquantotto - + Sixty Sessanta - + Sixty-two Sessantadue - + Sixty-four Sessantaquattro - + Sixty-six Sessantasei - + Sixty-eight Sessantotto - + Seventy Settanta - + Seventy-two Settandadue - + Seventy-four Settantaquattro - + Seventy-six Settantasei - + Seventy-eight Sessantotto - + Eighty Ottanta - + Eighty-two Ottantadue - + Eighty-four Ottantaquattro - + Eighty-six Ottantasei - + Eighty-eight Ottantotto - + Ninety Novanta - + Ninety-two Novantadue - + Ninety-four Novantaquattro - + Ninety-six Novantasei - + Ninety-eight Novantotto - + One hundred Cento - + One hundred and Two Centodue - + One hundred and four Centoquattro - + One hundred and Six Centosei - + One hundred and Eight Centootto - + One hundred and Ten Centodieci - + One hundred and Twelve Centododici - + One hundred and Fourteen Centoquattordici - + One hundred and Sixteen Centosedici - + One hundred and Eighteen Centodiciotto - + One hundred and Twenty Centoventi - + One hundred and Twenty-two Centoventidue - + One hundred and Twenty-four Centoventiquattro - + One hundred and Twenty-six Centoventisei - + One hundred and Twenty-eight Centoventotto - + One hundred and Ninety-two Centonovantadue - + Two hundred and fifty-six Duecentocinquantasei @@ -2824,989 +3042,1085 @@ Versione GLSL - - - + + + Unknown Sconosciuto - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Classe hardware - - - - + + + + CPU CPU - - - - + + + + No CPU found Nessuna CPU rilevata - - - - + + + + Motherboard Scheda Madre - - - - + + + + No motherboard found Nessuna scheda madre rilevata - - - - + + + + Memory Memoria - - - - + + + + No memory found Nessuna memoria rilevata - - - - + + + + Storage Archiviazione - - - - + + + + No disk found Nessun disco rilevato - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Adattatore video - - - - + + + + No GPU found Nessuna GPU rilevata - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Nessuno schermo rilevato - - - - - + + + + + Network Adapter Adattatore di Rete - - - - + + + + No network adapter found Nessun adattatore di rete rilevato - - - - - + + + + + Sound Adapter Adattatore audio - - - - + + + + No audio device found Nessun dispositivo audio rilevato - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Nessun adattatore Bluetooth rilevato - - - - + + + + Other PCI Devices Altri Dispositivi PCI - - - - + + + + No other PCI devices found Nessun altro dispositivo rilevato - - - - + + + + Power Alimentazione - - - - + + + + No battery found Nessuna batteria rilevata - - - - - + + + + + Keyboard Tastiera - - - - + + + + No keyboard found Nessuna tastiera rilevata - - - - - + + + + + Mouse Mouse - - - - + + + + No mouse found Nessun mouse rilevato - - - - - - + + + + + + Printer Stampante - - - - + + + + No printer found Nessuna stampante rilevata - - - - + + + + Camera Camera - - - - + + + + No camera found Nessuna Camera rilevata - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Nessun CD-ROM rilevato - - - - - + + + + + Other Devices Altri dispositivi - - - - + + + + No other devices found Nessun altro dispositivo rilevato - + Array Handle Array Handle - + Form Factor Fattore forma - + Set Imposta - + Bank Locator Locazione Banco - + Type Detail Dettagli - + Part Number Numero componente - + Rank Classifica - + Memory Technology Tecnologia della memoria - + Memory Operating Mode Capability Capacità modalità operativa della memoria - + Firmware Version Versione firmware - + Module Manufacturer ID ID modulo fabbricante - + Module Product ID ID Prodotti del modulo - + Memory Subsystem Controller Manufacturer ID ID produttore controller sottosistema memoria - + Memory Subsystem Controller Product ID ID prodotto controller sottosistema memoria - + Non-Volatile Size Dimensione Non-Volatile - + Volatile Size Dimensione Volatile - + Cache Size Dimensioni Cache - + Logical Size Dimensione logica - - - - - + + + + + inch pollici - + Date Data - + ioport ioport - + network rete - - + battery Batteria - + native-path percorso-nativo - + power supply alimentatore - + updated aggiornato - + has history ha la cronologia - + has statistics ha delle statistiche - + rechargeable ricaricabile - + state stato - + warning-level livello-avviso - + energy energia - + energy-empty batteria-scarica - + energy-full energia-completa - + energy-full-design energia-completa-tipologia - + energy-rate indice-energetico - + voltage voltaggio - + percentage percentuale - + technology tecnologia - + icon-name nome-icona - + online online - + daemon-version versione-demone - + on-battery a-batteria - + lid-is-closed coperchio-chiuso - + lid-is-present coperchio-presente - + critical-action azione-critica - + copies copie - + job-cancel-after azione-cancellata-dopo - + job-hold-until azione-sospesa-sino - + job-priority priorità-azione - + marker-change-time marker-change-time - + number-up number-up - + orientation-requested orientation-requested - + print-color-mode print-color-mode - + printer-is-accepting-jobs printer-is-accepting-jobs - + printer-is-shared printer-is-shared - + printer-is-temporary printer-is-temporary - + printer-make-and-model marca-modello-stampante - + printer-state-change-time printer-state-change-time - + printer-state-reasons printer-state-reasons - + printer-type printer-type - + printer-uri-supported printer-uri-supported - + sides sides - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info Info BUS - + logicalsectorsize dimensione settore logico - + sectorsize dimensioni settore - + guid guid - + Geometry (Logical) Geometria (logica) - - + + Device Manager Gestore dispositivi - + Device Manager is a handy tool for viewing hardware information and managing the devices. Il Gestore Dispositivi è uno strumento utile per visualizzare informazioni sull'hardware e gestire i dispositivi. Localizzazione italiana a cura di Massimo A. Carofano. - + New drivers available! Install or update them now. Nuovi driver disponibili! Installali o aggiornali ora. - + + View + + + + Include subfolders Includi sottocartelle - + Search for drivers in this path Ricerca driver in questo percorso - - - - Device Name - Nome dispositivo - - - - Version Available - Versioni disponibili - - - - - Size - Dimensione - - - - - Status - Stato - - - - - Action - Azione - - - - New Version - Nuova versione - - - - Current Version - Versione corrente - - - - Missing drivers (%1) - Driver mancanti (%1) - - - - Outdated drivers (%1) - Driver obsoleti (%1) - - - - Up-to-date drivers (%1) - Driver aggiornati (%1) - - - + %1 driver updates available %1 aggiornamenti driver disponibili - - + + Time checked: %1 Ora verifica: %1 - + Downloading drivers for %1... Download dei driver per %1... - + Download speed: %1 Downloaded %2/%3 Valicità download: %1 Scaricati %2/%3 - + Installing drivers for %1... Installazione driver per %1... - + %1 drivers installed, %2 drivers failed %1 driver installati, %2 installazione driver fallita - + %1 drivers installed %1 driver installati - + Failed to install drivers Installazione driver fallita - + Network error. Reconnecting... Errore rete. Riconnessione in corso... - + Download speed: %1 Valocità Download: %1 - + Your drivers are up to date I tuoi driver sono aggiornati - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot riavvia - + Please %1 for the installed drivers to take effect Per cortesia %1 per rendere effettive le modifiche ai driver - - + + View backup path + + + + + Backup All + + + + + submit feedback invia un feedback - + Please try again or %1 to us Per cortesia riprova oppure %1 - + Install All Installa tutti - - + + Scan Again Analizza nuovamente - + Cancel Annulla - + Scanning hardware device drivers, please wait... Analisi dei driver dei dispositivi hardware, attendi... - - + + Scanning %1 Analisi %1 - + Scan failed Analisi fallita - + Network unavailable Rete non disponibile - + Please check your network connection Controlla la configurazione della rete - + Please scan again or %1 to us Analizza nuovamente oppure %1 - + You are installing a driver, which will be interrupted if you exit. Stai installando un driver, così facendo rischi di interrompere l'operazione. - + + + Are you sure you want to exit? Desideri veramente proseguire? - + + + Exit button Esci - + + + Cancel button Annulla - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Adattatore Bluetooth - - + + Imaging device Dispositivo immagine - + Display adapter Adattatore Display - + Sound card Scheda audio - + Network adapter Scheda di rete - + Wireless network adapter Dispositivo WiFi - + Installation successful Installazione completata - + Installation failed Installazione fallita - + Downloading In download - + Installing Installazione in corso - + Not installed Non installato - + Out-of-date Obsoleto - + Waiting Attendi - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Errore sconosciuto - + Network error Errore di rete - + Canceled Cancellato - + Failed to get driver files Ottenimento driver fallito - + Update Aggiorna - + + Backup + + + + + Restore + + + + Install Installa @@ -3814,39 +4128,39 @@ Localizzazione italiana a cura di Massimo A. Carofano. TableWidget - - + + Disable Disabilita - + Refresh Aggiorna - + Export Esporta - + Update drivers Aggiornamento driver - + Uninstall drivers Disinstallazione driver - + Allow it to wake the computer Consenti il risveglio del computer - - + + Enable Abilita @@ -3854,27 +4168,27 @@ Localizzazione italiana a cura di Massimo A. Carofano. TextBrowser - + Refresh Aggiorna - + Export Esporta - + Copy Copia - + Disable Disabilita - + Unavailable Non disponibile @@ -3882,7 +4196,7 @@ Localizzazione italiana a cura di Massimo A. Carofano. UrlChooserEdit - + Select a local folder please Seleziona un percorso locale @@ -3890,9 +4204,9 @@ Localizzazione italiana a cura di Massimo A. Carofano. WaitingWidget - + Loading... Caricamento... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_ko.ts b/deepin-devicemanager/translations/deepin-devicemanager_ko.ts index 17ed4f850..270c730af 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_ko.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_ko.ts @@ -1,144 +1,190 @@ - + + + + + BtnLabel + + + OK + + + + + Feedback + + + + + OK + button + + + CmdButtonWidget - + More - + + + + + CommonTools + + + EC_NOTIFY_NETWORK + + + + + EC_REINSTALL + + + + + EC_6 + DetailButton - - + + More - + - + Collapse - + DetailTreeView - - + + More - + - - + + Collapse - + DetailViewDelegate - - + + Disable - + - + Unavailable - + DeviceAudio - + Device Name 장치 이름 - - + + Name 이름 - - + + Vendor 공급 업체 - - Model - 모델 + + Chip + - - Version - 버전 + + Capabilities + 기능 - - Bus Info - 버스 정보 + + + Module Alias + 모듈 별칭 - - Chip - + + + Physical ID + 물리적 ID - - Capabilities - 기능 + + SysFS_Path + + + + + Description + 설명 - - Clock - 클럭 + + Revision + - - Width - 너비 + + KernelModeDriver + - + Memory Address 메모리 주소 - + IRQ IRQ - + Unavailable - + - + Disable - + DeviceBaseInfo - + Name 이름 - + Vendor 공급 업체 - + Model 모델 @@ -146,17 +192,17 @@ DeviceBios - + Vendor 공급 업체 - + Version 버전 - + Chipset 칩셋 @@ -164,138 +210,158 @@ DeviceBluetooth - + Name 이름 - + Vendor 공급 업체 - + Version 버전 - + Model 모델 - + + Module Alias + 모듈 별칭 + + + + Physical ID + 물리적 ID + + + Speed 속도 - + Maximum Power 최대 전원 - + Driver Version 드라이버 버전 - + Driver 드라이버 - + Capabilities 기능 - + Bus Info 버스 정보 - + Logical Name 논리 이름 - + MAC Address MAC 주소 - + Unavailable - + - + Disable - + DeviceCdrom - + Name 이름 - + Vendor 공급 업체 - + Model 모델 - + Version 버전 - + Bus Info 버스 정보 - + Capabilities 기능 - + Driver 드라이버 - + Maximum Power 최대 전원 - + Speed 속도 - + + Module Alias + 모듈 별칭 + + + + Physical ID + 물리적 ID + + + Unavailable - + - + Disable - + DeviceComputer - + Name 이름 @@ -303,116 +369,113 @@ DeviceCpu - - + + Name 이름 - - + + Vendor 공급 업체 - + CPU ID CPU ID - + Core ID 코어 ID - + Threads 쓰레드 - - Current Speed - 현재 속도 - - - + BogoMIPS BogoMIPS - - + + Architecture 아키텍처 - + CPU Family CPU 제품군 - + Model 모델 - - + + Processor 프로세서 - + Core(s) 코어 - + Virtualization 가상화 - + Flags 플래그 - + Extensions 확장 - + L3 Cache L3 캐시 - + L2 Cache L2 캐시 - + L1i Cache L1i 캐시 - + L1d Cache L1d 캐시 - + Stepping 스테핑 - + Speed 속도 - + + + Max Speed 최대 속도 @@ -420,472 +483,487 @@ DeviceGpu - + Name 이름 - + Vendor 공급 업체 - + Model 모델 - + Version 버전 - + Graphics Memory 그래픽 메모리 - + + Module Alias + 모듈 별칭 + + + Physical ID 물리적 ID - + Memory Address 메모리 주소 - + IO Port IO 포트 - + Bus Info 버스 정보 - + Maximum Resolution 최대 해상도 - + Minimum Resolution 최소 해상도 - + Current Resolution 현재 해상도 - + Driver 드라이버 - + Description 설명 - - Clock - 클럭 - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI - + - + DigitalOutput - + - + Display Output 디스플레이 출력 - + Capabilities 기능 - + IRQ IRQ - - Width - 너비 - - - + Unavailable - + DeviceImage - + Name 이름 - + Vendor 공급 업체 - + Version 버전 - + Model 모델 - + Bus Info 버스 정보 - + + Module Alias + 모듈 별칭 + + + + Physical ID + 물리적 ID + + + Speed 속도 - + Maximum Power 최대 전원 - + Driver 드라이버 - + Capabilities 기능 - + Serial Number 일련 번호 - + Unavailable - + - + Disable - + DeviceInput - + Name 이름 - + Vendor 공급 업체 - + Model 모델 - + Interface 인터페이스 - + Bus Info 버스 정보 - + + Module Alias + 모듈 별칭 + + + + Physical ID + 물리적 ID + + + Speed 속도 - + Maximum Current - + - + Driver 드라이버 - + Capabilities 기능 - + Version 버전 - + Unavailable - + - + Disable - + DeviceManager - - - - - - - - - - + + + + + + + + + + Overview 개요 - - - + + + CPU CPU - - + + CPU quantity - + - - + + Motherboard 마더보드 - - + + Memory 메모리 - - + + Display Adapter 디스플레이 어댑터 - - + + Sound Adapter 사운드 어댑터 - - + + Storage 스토리지 - - + + Other PCI Devices 다른 PCI 장치 - - + + Battery 배터리 - - + + Bluetooth 블루투스 - - + + Network Adapter 네트워크 어댑터 - - + + Mouse 마우스 - - + + Keyboard 키보드 - - + + Monitor 모니터 - - + + CD-ROM CD-ROM - - + + Printer 프린터 - - + + Camera 카메라 - - + + Other Devices Other Input Devices 다른 장치 - - - + + + Device 장치 - - - + + + OS - + DeviceMemory - - + + Name 이름 - - + + Vendor 공급 업체 - - + + Size 크기 - - + + Type 유형 - - + + Speed 속도 - + Total Width 전체 너비 - + Locator 로케이터 - + Serial Number 일련 번호 - + Configured Voltage 설정된 전압 - + Maximum Voltage 최대 전압 - + Minimum Voltage 최소 전압 - + Configured Speed 설정된 속도 - + Data Width 데이터 너비 @@ -893,268 +971,256 @@ DeviceMonitor - + Name 이름 - + Vendor 공급 업체 - + Type 유형 - + Display Input 디스플레이 입력 - + Interface Type 인터페이스 유형 - + Support Resolution 지원 해상도 - + Current Resolution 현재 해상도 - + Display Ratio 디스플레이 비율 - + Primary Monitor 기본 모니터 - + Size 크기 - + Serial Number 일련 번호 - - - Product Date - 생산 일자 - DeviceNetwork - + + Name 이름 - + + Vendor 공급 업체 - + + Type 유형 - + Version 버전 - + Bus Info 버스 정보 - + Capabilities 기능 - + Driver 드라이버 - + Driver Version 드라이버 버전 - + + Module Alias + 모듈 별칭 + + + + Physical ID + 물리적 ID + + + Maximum Rate - + - + Negotiation Rate - + - + Port 포트 - + Multicast 멀티캐스트 - + Link 링크 - + Latency 지연 시간 - + IP IP - + Firmware 펌웨어 - + Duplex 이중 - + Broadcast 방송 - + Auto Negotiation 자동 협상 - - Clock - 클럭 - - - - Width - 너비 - - - + Memory Address 메모리 주소 - + IRQ IRQ - + MAC Address MAC 주소 - + Logical Name 논리 이름 - + Unavailable - + - + Disable - + DeviceOtherPCI - + Name 이름 - + Vendor 공급 업체 - + Model 모델 - + Bus Info 버스 정보 - + Version 버전 - + Input/Output 입력/출력 - + Memory 메모리 - + IRQ IRQ - + Latency 지연 시간 - - Clock - 클럭 - - - - Width - 너비 - - - + Driver 드라이버 - + Capabilities 기능 @@ -1162,332 +1228,345 @@ DeviceOthers - + Name 이름 - + Vendor 공급 업체 - + Model 모델 - + Version 버전 - + Bus Info 버스 정보 - + Capabilities 기능 - + Driver 드라이버 - + Maximum Power 최대 전원 - + Speed 속도 - + Serial Number 일련 번호 - + Unavailable - + - + Disable - + DevicePower - + Name 이름 - + Model 모델 - + Vendor 공급 업체 - + Serial Number 일련 번호 - + Type 유형 - + Status 상태 - + Capacity 용량 - + Voltage 전압 - + Slot 슬롯 - + Design Capacity 설계 용량 - + Design Voltage 설계 전압 - + SBDS Version SBDS 버전 - + SBDS Serial Number SBDS 일련 번호 - + SBDS Manufacture Date SBDS 제조 일자 - + SBDS Chemistry SBDS 화학 - + Temperature - + DevicePrint - + Name 이름 - + Model 모델 - + Vendor 공급 업체 - + Serial Number 일련 번호 - + Shared 공유됨 - + URI URI - + Status 상태 - + Interface Type 인터페이스 유형 - + Disable - + DeviceStorage - - - Model - 모델 - - - - + + Vendor 공급 업체 - - + + Media Type 미디어 유형 - - + + + Size 크기 - + + + Name + 이름 + + + Version 버전 - + Capabilities 기능 - + + + Module Alias + 모듈 별칭 + + + + + Physical ID + 물리적 ID + + + Firmware Version 펌웨어 버전 - + Speed 속도 - + Description 설명 - + Serial Number 일련 번호 - + Interface 인터페이스 - + Rotation Rate 회전 속도 - + Unavailable - + GetDriverNameWidget - - + + Select a driver for update - + - + No drivers found in this folder - + GetInfoPool - + Loading Audio Device Info... 오디오 장치 정보 불러오는 중... - + Loading BIOS Info... BIOS 정보 불러오는 중... - + Loading CD-ROM Info... CD-ROM 정보 불러오는 중... - + Loading Operating System Info... 운영 체제 정보 불러오는 중... - + Loading CPU Info... CPU 정보 불러오는 중... - + Loading Other Devices Info... 기타 장치 정보 불러오는 중... - + Loading Power Info... 전원 정보 불러오는 중... - + Loading Printer Info... 프린터 정보 불러오는 중... - + Loading Mouse Info... 마우스 정보 불러오는 중... - + Loading Network Adapter Info... 네트워크 정보 불러오는 중... @@ -1495,106 +1574,116 @@ LogTreeView - - - + + + Disable - + - + Unavailable - + LogViewItemDelegate - + Disable - + - + Unavailable - + MainWindow - + Device Info - export file's name + export file's name 장치 정보 - + Display shortcuts 단축키 표시 - + Close 닫기 - + Help 도움말 - + Copy 복사 - + System 시스텝 - + Export 내보내기 - + Refresh 새로고침 - + Device Manager 장치 관리자 - + + Hardware + + + + + Drivers + + + + Monitor - + 모니터 - + Overview 개요 - + Display Adapter - + 디스플레이 어댑터 - + CPU CPU - + Network Adapter 네트워크 어댑터 - + Battery 배터리 @@ -1602,191 +1691,377 @@ PageDetail - + More - + + + + + PageDriverBackupInfo + + + + Name + 이름 + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + 상태 + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + PageDriverControl - - + + Updating - + - - - + + + Cancel button 취소 - + Next - + - + Warning - + - + The device will be unavailable after the driver uninstallation - + - + Uninstall button - + - + Uninstalling - + - + Update successful - + - + Uninstallation successful 제거 성공 - + Update failed 업데이트가 실패 - + Uninstallation failed 제거 실패 - + OK button - + - + Next button - + - + The selected folder does not exist, please select again 선택한 폴더가 존재하지 않습니다. 다시 선택하십시오 - + Update button 업데이트 - + Previous button 이전 - + Broken package 깨진 패키지 - + Unmatched package architecture 맞지 않는 패키지 아키텍처 - - + + The selected file does not exist, please select again 선택한 파일이 존재하지 않습니다. 다시 선택하십시오 - + It is not a driver 드라이버가 아닙니다 - + Unable to install - no digital signature - + - + Unknown error 알수없는 오류 - + The driver module was not found 드라이버 모듈을 찾을 수 없습니다 - + Invalid module format 잘못된 모듈 형식 - + The driver module has dependencies - + - PageListView + PageDriverInstallInfo - - Refresh - 새로고침 + + + + Device Name + 장치 이름 + + + + Version Available + + + + + + Size + 크기 + + + + + Status + 상태 + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + 이름 - + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + 새로고침 + + + Export 내보내기 - + Overview 개요 + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device 장치를 활성화하지 못했습니다. - + Failed to disable the device 장치를 비활성화하지 못했습니다. - + Failed to disable it: unable to get the device SN 비활성화 실패: 장치 SN을 가져올 수 없습니다 - + Update Drivers 드라이버 업데이트 - + Uninstall Drivers 드라이버 제거 @@ -1794,22 +2069,22 @@ PageOverview - + Refresh 새로고침 - + Export 내보내기 - + Copy 복사 - + Overview 개요 @@ -1817,69 +2092,69 @@ PageSingleInfo - + Refresh 새로고침 - + Export 내보내기 - + Copy 복사 - - + + Enable - + - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - + Disable - + - - + + Failed to disable it: unable to get the device SN 비활성화 실패: 장치 SN을 가져올 수 없습니다 - + Failed to disable the device 장치를 비활성화하지 못했습니다. - + Failed to enable the device 장치를 활성화하지 못했습니다. - + Update Drivers 드라이버 업데이트 - + Uninstall Drivers 드라이버 제거 @@ -1887,869 +2162,849 @@ QObject - + SubVendor 하위 공급업체 - + SubDevice 보조장치 - + Driver 드라이버 - + Driver Status 드라이버 상태 - + Driver Activation Cmd 드라이버 활성화 Cmd - - + - + + Config Status 구성 상태 - - - - - - - physical id - 물리적 id - - - + latency 레이턴시 - + Phys Phys - + Sysfs Sysfs - + Handlers 핸들러 - - + + PROP PROP - - + + EV EV - - + + KEY - - Model - 모델 - - - - Vendor - 공급 업체 - - - + Version 버전 - - + + + Bus 버스 - - + + BIOS Information BIOS 정보 - - + + Base Board Information 기본 보드 정보 - - + + System Information 시스템 정보 - - + + Chassis Information 섀시 정보 - - + + Physical Memory Array 실제 메모리 배열 - + Release Date 출시일 - + Address 주소 - + Runtime Size 런타임 크기 - + ROM Size ROM 크기 - + Characteristics 특성 - + BIOS Revision BIOS 리비전 - + Firmware Revision 펌웨어 리비전 - - + + Product Name 제품 이름 - - - + + + Serial Number 일련 번호 - - - + + + Asset Tag Asset 태그 - - + + Features 기능 - + Location In Chassis 섀시 내 위치 - + Chassis Handle 섀시 핸들 - - + + Type 유형 - + Contained Object Handles 포함된 개체 핸들 - - + + UUID UUID - + Wake-up Type 절전모드 해제 유형 - - + + SKU Number SKU 번호 - + Family 제품군 - + Lock 잠금 - + Boot-up State 부팅 상태 - + Power Supply State 전원 공급 상태 - + Thermal State 열 상태 - + Security Status 보안 상태 - + OEM Information OEM 정보 - + Height 높이 - + Number Of Power Cords 전원 코드 수 - + Contained Elements 포함된 요소 - + Location 위치 - + Error Correction Type 오류 수정 유형 - + Maximum Capacity 최대 용량 - - + + Error Information Handle 오류 정보 핸들 - + Number Of Devices 장치의 수 - + BIOS ROMSIZE BIOS 롬크기 - + Release date 출시일 - + Board name 보드 이름 - + SMBIOS Version SMBIOS 버전 - + Language Description Format 언어 설명 형식 - + Installable Languages 설치 가능한 언어 - + Currently Installed Language 현재 설치된 언어 - + BD Address BD 주소 - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type 패킷 유형 - + Link policy 링크 정책 - + Link mode 링크 모드 - - + + Class 클래스 - + Service Classes 서비스 클래스 - + Device Class 장치 클래스 - + HCI Version HCI 버전 - + LMP Version LMP 버전 - + Subversion 서브버전 - + Device 장치 - - + + Serial ID 직렬 ID - + product 제품 - + description 설명 - + Powered 전원 공급됨 - + Discoverable 발견 가능 - + Pairable 페어링 가능 - + Modalias Modalias - + Discovering 발견 중 - + Driver Modules 드라이버 모듈 - - - + + + + + Device File 장치 파일 - + Device Files 장치 파일 - - + + + Device Number 장치 번호 - - Module Alias - 모듈 별칭 - - - + Application 응용 프로그램 - + status 상태 - - + + + logical name 논리 이름 - - + + ansiversion ansi버전 - + CPU implementer CPU 구현도구 - + CPU architecture CPU 아키텍처 - + CPU variant CPU 변종 - + CPU part CPU 부품 - + CPU revision CPU 리비전 - + One - + Two - + Four - + Six - + Eight - + Ten - + Twelve 십이 - + Fourteen 십사 - + Sixteen 십육 - + Eighteen 십팔 - + Twenty 이십 - + Twenty-two 이십 이 - + Twenty-four 이십 사 - + Twenty-six 이십 육 - + Twenty-eight 이십 팔 - + Thirty 삼십 - + Thirty-two 삼십 이 - + Thirty-four 삼십 사 - + Thirty-six 삼십 육 - + Thirty-eight 삼십 팔 - + Forty 사십 - + Forty-two 사십 이 - + Forty-four 사십 사 - + Forty-six 사십 육 - + Forty-eight 사십 팔 - + Fifty 오십 - + Fifty-two 오십 이 - + Fifty-four 오십 사 - + Fifty-six 오십 육 - + Fifty-eight 오십 팔 - + Sixty 육십 - + Sixty-two 육십 이 - + Sixty-four 육십 사 - + Sixty-six - + - + Sixty-eight - + - + Seventy - + - + Seventy-two - + - + Seventy-four - + - + Seventy-six - + - + Seventy-eight - + - + Eighty - + - + Eighty-two - + - + Eighty-four - + - + Eighty-six - + - + Eighty-eight - + - + Ninety - + - + Ninety-two - + - + Ninety-four - + - + Ninety-six - + - + Ninety-eight - + - + One hundred - + - + One hundred and Two - + - + One hundred and four - + - + One hundred and Six - + - + One hundred and Eight - + - + One hundred and Ten - + - + One hundred and Twelve - + - + One hundred and Fourteen - + - + One hundred and Sixteen - + - + One hundred and Eighteen - + - + One hundred and Twenty - + - + One hundred and Twenty-two - + - + One hundred and Twenty-four - + - + One hundred and Twenty-six - + - + One hundred and Twenty-eight 백 이십 팔 - + One hundred and Ninety-two - + - + Two hundred and fifty-six - + @@ -2787,763 +3042,1170 @@ GLSL 버전 - - - + + + Unknown 알 수 없음 - + Uniq Uniq - + MSC MSC - - + + + Hardware Class 하드웨어 클래스 - - - - + + + + CPU CPU - - - - + + + + No CPU found CPU를 찾을 수 없음 - - - - + + + + Motherboard 마더보드 - - - - + + + + No motherboard found 마더보드를 찾을 수 없음 - - - - + + + + Memory 메모리 - - - - + + + + No memory found 메모리를 찾을 수 없음 - - - - + + + + Storage 스토리지 - - - - + + + + No disk found 디스크를 찾을 수 없음 - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter 디스플레이 어댑터 - - - - + + + + No GPU found GPU를 찾을 수 없음 - - - - + + + + Monitor 모니터 - - - - + + + + No monitor found 모니터를 찾을 수 없음 - - - - + + + + + Network Adapter 네트워크 어댑터 - - - - + + + + No network adapter found 네트워크 어댑터를 찾을 수 없음 - - - - + + + + + Sound Adapter 사운드 어댑터 - - - - + + + + No audio device found 오디오 장치를 찾을 수 없음 - - - - + + + + + Bluetooth 블루투스 - - - - + + + + No Bluetooth device found 블루투스 장치를 찾을 수 없음 - - - - + + + + Other PCI Devices 다른 PCI 장치 - - - - + + + + No other PCI devices found 다른 PCI 디바이스를 찾을 수 없음 - - - - + + + + Power 전원 - - - - + + + + No battery found 배터리를 찾을 수 없음 - - - - + + Bluetooth adapter + + + + + + Imaging device + + + + + Display adapter + + + + + + + + Keyboard 키보드 - - - - + + Sound card + + + + + Network adapter + + + + + Wireless network adapter + + + + + Installation successful + + + + + Installation failed + + + + + Downloading + + + + + Installing + + + + + Not installed + + + + + Out-of-date + + + + + Waiting + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + + Unknown error + 알수없는 오류 + + + + Network error + + + + + Canceled + + + + + Failed to get driver files + + + + + + + No keyboard found 키보드를 찾을 수 없음 - - - - + + + + + Mouse 마우스 - - - - + + + + No mouse found 마우스를 찾을 수 없음 - - - - + + + + + + Printer 프린터 - - - - + + + + No printer found 프린터를 찾을 수 없음 - - - - + + + + Camera 카메라 - - - - + + + + No camera found 카메라를 찾을 수 없음 - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found CD-ROM을 찾을 수 없음 - - - - + + + + + Other Devices 다른 장치 - - - - + + + + No other devices found 다른 장치를 찾을 수 없음 - + Array Handle 배열 핸들 - + Form Factor 폼 팩터 - + Set 지정 - + Bank Locator 뱅크 로케이터 - + Type Detail 세부사항 유형 - + Part Number 부품 번호 - + Rank 순위 - + Memory Technology 메모리 기술 - + Memory Operating Mode Capability 메모리 작동 모드 기능 - + Firmware Version 펌웨어 버전 - + Module Manufacturer ID 모듈 제조업체 ID - + Module Product ID 모듈 제품 ID - + Memory Subsystem Controller Manufacturer ID 메모리 서브시스템 컨트롤러 제조업체 ID - + Memory Subsystem Controller Product ID 메모리 서브시스템 컨트롤러 제품 ID - + Non-Volatile Size 비휘발성 크기 - + Volatile Size 휘발성 크기 - + Cache Size 캐시 크기 - + Logical Size 논리적 크기 - - - - - + + + + + inch 인치 - + Date 날짜 - + ioport io포트 - + network 네트워크 - - + battery 배터리 - + native-path 기본 경로 - + power supply 전원 공급 장치 - + updated 업데이트됨 - + has history 기록 있음 - + has statistics 통계 있음 - + rechargeable 재충전가능 - + state 상태 - + warning-level 경고 수준 - + energy 에너지 - + energy-empty 에너지 없음 - + energy-full 에너지 가득 - + energy-full-design 에너지 가득 설계 - + energy-rate 에너지 비율 - + voltage 전압 - + percentage 백분율 - + technology 기술 - + icon-name 아이콘 이름 - + online 온라인 - + daemon-version 데몬 버전 - + on-battery 배터리 켜기 - + lid-is-closed 덮개 닫힘 - + lid-is-present 덮개 있음 - + critical-action 중요 작업 - + copies 복사 - + job-cancel-after 작업-취소-후 - + job-hold-until 작업-보류-까지 - + job-priority 작업-우선순위 - + marker-change-time 마커-변경-시간 - + number-up 번호-증가 - + orientation-requested 요청된-방향 - + print-color-mode 인쇄-색상-모드 - + printer-is-accepting-jobs 프린터가-작업을-수락하는-중 - + printer-is-shared 프린터-공유됨 - + printer-is-temporary 프린터-임시 - + printer-make-and-model printer-make-and-model - + printer-state-change-time 프린터-상태-변경-시간 - + printer-state-reasons 프린터-상태-이유 - + printer-type 프린터-유형 - + printer-uri-supported 프린터-uri-지원됨 - + sides sides - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info 버스 정보 - + logicalsectorsize 논리섹터크기 - + sectorsize 섹터크기 - + guid guid - + Geometry (Logical) 기하학적 구조(논리적) - + Device Manager 장치 관리자 - + Device Manager is a handy tool for viewing hardware information and managing the devices. 장치 관리자는 하드웨어 정보를 보고 장치를 관리하기 위한 편리한 도구입니다. - + + New drivers available! Install or update them now. + + + + + View + + + + Include subfolders - + - + Search for drivers in this path - + + + + + Install + + + + + Update + 업데이트 + + + + Backup + + + + + Restore + + + + + Scanning hardware device drivers, please wait... + + + + + + Scanning %1 + + + + + Scan failed + + + + + Network unavailable + + + + + Please check your network connection + + + + + + submit feedback + + + + + Please scan again or %1 to us + + + + + + Scan Again + + + + + %1 driver updates available + + + + + + Time checked: %1 + + + + + Downloading drivers for %1... + + + + + Download speed: %1 Downloaded %2/%3 + + + + + Installing drivers for %1... + + + + + %1 drivers installed, %2 drivers failed + + + + + %1 drivers installed + + + + + Failed to install drivers + + + + + Network error. Reconnecting... + + + + + Download speed: %1 + + + + + Your drivers are up to date + + + + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + + reboot + + + + + Please %1 for the installed drivers to take effect + + + + + Please try again or %1 to us + + + + + View backup path + + + + + Install All + + + + + Backup All + + + + + Cancel + 취소 + + + + You are installing a driver, which will be interrupted if you exit. + + + + + + + Are you sure you want to exit? + + + + + + + Exit + button + + + + + + + Cancel + button + 취소 + + + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + TableWidget - - + + Disable - + - + Refresh 새로고침 - + Export 내보내기 - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - - + + Enable - + TextBrowser - + Refresh 새로고침 - + Export 내보내기 - + Copy 복사 - + Disable - + - + Unavailable - + UrlChooserEdit - + Select a local folder please - + WaitingWidget - + Loading... 불러오는 중... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_ms.ts b/deepin-devicemanager/translations/deepin-devicemanager_ms.ts index e1ee338ec..690347af5 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_ms.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_ms.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Lagi @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Lagi - + Collapse Kuncup @@ -51,14 +63,14 @@ DetailTreeView - - + + More Lagi - - + + Collapse Kuncup @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Lumpuhkan - + Unavailable Tidak tersedia @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Nama Peranti - - + + Name Nama - - + + Vendor Pembekal - - Model - Model + + Chip + Cip - - Version - Versi + + Capabilities + Keupayaan - - Bus Info - Maklumat Bas + + + Module Alias + Alias Modul - - Chip - Cip + + + Physical ID + ID Fizikal - - Capabilities - Keupayaan + + SysFS_Path + - - Clock - Jam + + Description + Keterangan + + + + Revision + - - Width - Lebar + + KernelModeDriver + - + Memory Address Alamat Ingatan - + IRQ IRQ - + Unavailable Tidak tersedia - + Disable Lumpuhkan @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nama - + Vendor Pembekal - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Pembekal - + Version Versi - + Chipset Cipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nama - + Vendor Pembekal - + Version Versi - + Model Model - + + Module Alias + Alias Modul + + + + Physical ID + ID Fizikal + + + Speed Kelajuan - + Maximum Power Kuasa Maksimum - + Driver Version Versi Pemacu - + Driver Pemacu - + Capabilities Keupayaan - + Bus Info Maklumat Bas - + Logical Name Nama Logikal - + MAC Address Alamat MAC - + Unavailable Tidak tersedia - + Disable Lumpuh @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nama - + Vendor Pembekal - + Model Model - + Version Versi - + Bus Info Maklumat Bas - + Capabilities Keupayaan - + Driver Pemacu - + Maximum Power Kuasa Maksimum - + Speed Kelajuan - + + Module Alias + Alias Modul + + + + Physical ID + ID Fizikal + + + Unavailable Tidak tersedia - + Disable Lumpuh @@ -322,7 +361,7 @@ DeviceComputer - + Name Nama @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nama - - + + Vendor Pembekal - + CPU ID ID CPU - + Core ID ID Teras - + Threads Jaluran - - Current Speed - Kelajuan Semasa - - - + BogoMIPS BogoMIPS - - + + Architecture Seni Bina - + CPU Family Keluarga CPU - + Model Model - - + + Processor Pemproses - + Core(s) Teras - + Virtualization Pemayaan - + Flags Bendera - + Extensions Sambungan - + L3 Cache Cache L3 - + L2 Cache Cache L2 - + L1i Cache Cache L1i - + L1d Cache Cache L1d - + Stepping Tahap - + Speed Kelajuan - + + + Max Speed Kelajuan Maks. @@ -447,132 +483,127 @@ DeviceGpu - + Name Nama - + Vendor Pembekal - + Model Model - + Version Versi - + Graphics Memory Ingatan Grafik - + + Module Alias + Alias Modul + + + Physical ID ID Fizikal - + Memory Address Alamat Ingatan - + IO Port Port IO - + Bus Info Maklumat Bas - + Maximum Resolution Resolusi Maksimum - + Minimum Resolution Resolusi Minimum - + Current Resolution Resolusi Semasa - + Driver Pemacu - + Description Keterangan - - Clock - Jam - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput OutputDigital - + Display Output Output Paparan - + Capabilities Keupayaan - + IRQ IRQ - - Width - Lebar - - - + Unavailable Tidak tersedia @@ -580,62 +611,72 @@ DeviceImage - + Name Nama - + Vendor Pembekal - + Version Versi - + Model Model - + Bus Info Maklumat Bas - + + Module Alias + Alias Modul + + + + Physical ID + ID Fizikal + + + Speed Kelajuan - + Maximum Power Kuasa Maksimum - + Driver Pemacu - + Capabilities Keupayaan - + Serial Number Nombor Siri - + Unavailable Tidak tersedia - + Disable Lumpuh @@ -643,62 +684,72 @@ DeviceInput - + Name Nama - + Vendor Pembekal - + Model Model - + Interface Antara Muka - + Bus Info Maklumat Bas - + + Module Alias + Alias Modul + + + + Physical ID + ID Fizikal + + + Speed Kelajuan - + Maximum Current Arus Maksimum - + Driver Pemacu - + Capabilities Keupayaan - + Version Versi - + Unavailable Tidak tersedia - + Disable Lumpuh @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Selayang Pandang - - - + + + CPU CPU - - + + CPU quantity Kuantiti CPU - - + + Motherboard Papan Induk - - + + Memory Ingatan - - + + Display Adapter Penyesuai Paparan - - + + Sound Adapter Penyesuai Bunyi - - + + Storage Storan - - + + Other PCI Devices Lain-lain Peranti PCI - - + + Battery Bateri - - + + Bluetooth Bluetooth - - + + Network Adapter Penyesuai Rangkaian - - + + Mouse Tetikus - - + + Keyboard Papan Kekunci - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Pencetak - - + + Camera Kamera - - + + Other Devices Other Input Devices Lain-lain Peranti - - - + + + Device Peranti - - - + + + OS OS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nama - - + + Vendor Pembekal - - + + Size Saiz - - + + Type Jenis - - + + Speed Kelajuan - + Total Width Jumlah Lebar - + Locator Lokasi - + Serial Number Nombor Siri - + Configured Voltage Voltan Terkonfigur - + Maximum Voltage Voltan Maksimum - + Minimum Voltage Voltan Minimum - + Configured Speed Kelajuan Terkonfigur - + Data Width Lebar Data @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nama - + Vendor Pembekal - + Type Jenis - + Display Input Input Paparan - + Interface Type Jenis Antara Muka - + Support Resolution Resolusi Disokong - + Current Resolution Resolusi Semasa - + Display Ratio Nisbah Paparan - + Primary Monitor Monitor Utama - + Size Saiz - + Serial Number Nombor Siri - - - Product Date - Tarikh Produk - DeviceNetwork - + + Name Nama - + + Vendor Pembekal - + + Type Jenis - + Version Versi - + Bus Info Maklumat Bas - + Capabilities Keupayaan - + Driver Pemacu - + Driver Version Versi Pemacu - + + Module Alias + Alias Modul + + + + Physical ID + ID Fizikal + + + Maximum Rate Kadar Maksimum - + Negotiation Rate Kadar Negosiasi - + Port Port - + Multicast Multikas - + Link Pautan - + Latency Kependaman - + IP IP - + Firmware Perisian Tegar - + Duplex Dupleks - + Broadcast Siaran - + Auto Negotiation Auto Runding - - Clock - Jam - - - - Width - Lebar - - - + Memory Address Alamat Ingatan - + IRQ IRQ - + MAC Address Alamat MAC - + Logical Name Nama Logikal - + Unavailable Tidak tersedia - + Disable Lumpuh @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nama - + Vendor Pembekal - + Model Model - + Bus Info Maklumat Bas - + Version Versi - + Input/Output Input/Output - + Memory Ingatan - + IRQ IRQ - + Latency Kependaman - - Clock - Jam - - - - Width - Lebar - - - + Driver Pemacu - + Capabilities Keupayaan @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nama - + Vendor Pembekal - + Model Model - + Version Versi - + Bus Info Maklumat Bas - + Capabilities Keupayaan - + Driver Pemacu - + Maximum Power Kuasa Maksimum - + Speed Kelajuan - + Serial Number Nombor Siri - + Unavailable Tidak tersedia - + Disable Lumpuhkan @@ -1252,82 +1291,82 @@ DevicePower - + Name Nama - + Model Model - + Vendor Pembekal - + Serial Number Nombor Siri - + Type Jenis - + Status Status - + Capacity Kapasiti - + Voltage Voltan - + Slot Slot - + Design Capacity Kapasiti Reka Bentuk - + Design Voltage Voltan Reka Bentuk - + SBDS Version Versi SBDS - + SBDS Serial Number Nombor Siri SBDS - + SBDS Manufacture Date Tarikh Dibuat SBDS - + SBDS Chemistry Kimia SBDS - + Temperature Suhu @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nama - + Model Model - + Vendor Pembekal - + Serial Number Nombor Siri - + Shared Dikongsi - + URI URI - + Status Status - + Interface Type Jenis Antara Muka - + Disable Lumpuh @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Pembekal - - + + Media Type Jenis Media - - + + + Size Saiz - + + + Name + Nama + + + Version Versi - + Capabilities Keupayaan - + + + Module Alias + Alias Modul + + + + + Physical ID + ID Fizikal + + + Firmware Version Versi Perisian Tegar - + Speed Kelajuan - + Description Keterangan - + Serial Number Nombor Siri - + Interface Antara Muka - + Rotation Rate Kadar Putaran - + Unavailable Tidak tersedia @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Pilih satu pemacu untuk dikemas kini - + No drivers found in this folder Tiada pemacu ditemui dalam folder ini @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Memuatkan Maklumat Peranti Audio... - + Loading BIOS Info... Memuatkan Maklumat BIOS... - + Loading CD-ROM Info... Memuatkan Maklumat CD-ROM... - + Loading Operating System Info... Memuatkan Maklumat Sistem Pengoperasian... - + Loading CPU Info... Memuatkan Maklumat CPU... - + Loading Other Devices Info... Memuatkan Maklumat Peranti Lain... - + Loading Power Info... Memuatkan Maklumat Kuasa... - + Loading Printer Info... Memuatkan Maklumat Pencetak... - + Loading Mouse Info... Memuatkan Maklumat Tetikus... - + Loading Network Adapter Info... Memuatkan Maklumat Penyesuai Rangkaian... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Lumpuh - + Unavailable Tidak tersedia @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Lumpuh - + Unavailable Tidak tersedia @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Maklumat Peranti - + Display shortcuts Papar pintasan - + Close Tutup - + Help Bantuan - + Copy Salin - + System Sistem - + Export Eksport - + Refresh Segar Semula - + Device Manager Pengurus Peranti - + Hardware Perkakasan - + Drivers Pemacu - + Monitor Monitor - + Overview Selayang Pandang - + Display Adapter Penyesuai Paparan - + CPU CPU - + Network Adapter Penyesuai Rangkaian - + Battery Bateri @@ -1639,191 +1691,377 @@ PageDetail - + More Lagi + + PageDriverBackupInfo + + + + Name + Nama + + + + + Current Version + Versi Semasa + + + + + Driver Platform Version + + + + + Status + Status + + + + Action + Tindakan + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Mengemas kini - - - + + + Cancel button Batal - + Next Berikutnya - + Warning Amaran - + The device will be unavailable after the driver uninstallation Peranti menjadi tidak tersedia setelah menyahpasang pemacu - + Uninstall button Nyahpasang - + Uninstalling Menyahpasang - + Update successful Kemas kini berjaya - + Uninstallation successful Penyahpasangan berjaya - + Update failed Kemas kini gagal - + Uninstallation failed Penyahpasangan gagal - + OK button OK - + Next button Berikutnya - + The selected folder does not exist, please select again Folder yang dipilih tidak wujud, sila pilih yang lain - + Update button Kemas kini - + Previous button Terdahulu - + Broken package Pakej rosak - + Unmatched package architecture Seni bina pakej tidak sepadan - - + + The selected file does not exist, please select again Faild yang dipilih tidak wujud, sila pilih yang lain - + It is not a driver Ia bukan pemacu - + Unable to install - no digital signature Gagal dipasang - tiada tandatangan - + Unknown error Ralat tidak diketahui - + The driver module was not found Modul pemacu tidak ditemui - + Invalid module format Format modul tidak sah - + The driver module has dependencies Modul pemacu mempunyai dependensi - PageListView + PageDriverInstallInfo - - Refresh - Segar Semula + + + + Device Name + Nama Peranti - + + Version Available + Versi Tersedia + + + + + Size + Saiz + + + + + Status + Status + + + + + Action + Tindakan + + + + New Version + Versi Baharu + + + + Current Version + Versi Semasa + + + + Missing drivers (%1) + Pemacu hilang (%1) + + + + Outdated drivers (%1) + Pemacu lapuk (%1) + + + + Up-to-date drivers (%1) + Pemacu terkini (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nama + + + + Current Version + Versi Semasa + + + + Backup Version + + + + + Action + Tindakan + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Segar Semula + + + Export Eksport - + Overview Selayang Pandang + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Gagal membenarkan peranti - + Failed to disable the device Gagal melumpuhkan peranti - + Failed to disable it: unable to get the device SN Gagal melumpuhkannya: Gagal mendapatkan SN peranti - + Update Drivers Kemas Kini Pemacu - + Uninstall Drivers Nyahpasang Pemacu @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Segar Semula - + Export Eksport - + Copy Salin - + Overview Selayang Pandang @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Segar Semula - + Export Eksport - + Copy Salin - - + + Enable Benarkan - + Update drivers Kemas kini pemacu - + Uninstall drivers Nyahpasang pemacu - + Allow it to wake the computer Dayakannya supaya komputer dapat dibangunkan - + Disable Lumpuh - - + + Failed to disable it: unable to get the device SN Gagal melumpuhkannya: Gagal mendapatkan SN peranti - + Failed to disable the device Gagal melumpuhkan peranti - + Failed to enable the device Gagal membenarkan peranti - + Update Drivers Kemas Kini Pemacu - + Uninstall Drivers Nyahpasang Pemacu @@ -1924,867 +2162,847 @@ QObject - + SubVendor SubVendor - + SubDevice SubPeranti - + Driver Pemacu - + Driver Status Status Pemacu - + Driver Activation Cmd Cmd Pengaktifan Pemacu - - + - + + Config Status Status Konfig - - - - - - - physical id - id fizikal - - - + latency kependaman - + Phys Phys - + Sysfs Sysfs - + Handlers Pemegang - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Model - - - - Vendor - Pembekal - - - + Version Versi - - + + + Bus Bas - - + + BIOS Information Maklumat BIOS - - + + Base Board Information Maklumat Papan Utama - - + + System Information Maklumat Sistem - - + + Chassis Information Maklumat Casis - - + + Physical Memory Array Tatasusunan Ingatan Fizikal - + Release Date Tarikh Keluaran - + Address Alamat - + Runtime Size Saiz Masa Jalan - + ROM Size Saiz ROM - + Characteristics Sifat-Sifat - + BIOS Revision Revisi BIOS - + Firmware Revision Revisi Perisian Tegar - - + + Product Name Nama Produk - - - + + + Serial Number Nombor Siri - - - + + + Asset Tag Tag Aset - - + + Features Fitur-Fitur - + Location In Chassis Lokasi Dalam Casis - + Chassis Handle Pemegang Casis - - + + Type Jenis - + Contained Object Handles Pemegang Objek Terkandung - - + + UUID UUID - + Wake-up Type Jenis Bangun - - + + SKU Number Nombor SKU - + Family Keluarga - + Lock Kunci - + Boot-up State Keadaan But - + Power Supply State Keadaan Bekalan Kuasa - + Thermal State Keadaan Termal - + Security Status Status Keselamatan - + OEM Information Maklumat OEM - + Height Tinggi - + Number Of Power Cords Bilangan Wayar Kuasa - + Contained Elements Elemen Terkandung - + Location Lokasi - + Error Correction Type Ralat Jenis Sambungan - + Maximum Capacity Kapasiti Maksimum - - + + Error Information Handle Ralat Pemegang Maklumat - + Number Of Devices Bilangan Peranti - + BIOS ROMSIZE BIOS ROMSIZE - + Release date Tarikh keluaran - + Board name Nama papan - + SMBIOS Version Versi SMBIOS - + Language Description Format Format Keterangan Bahasa - + Installable Languages Bahasa Boleh Dipasang - + Currently Installed Language Bahasa Terpasang Semasa - + BD Address Alamat BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Jenis bingkisan - + Link policy Dasar paut - + Link mode Mod pautan - - + + Class Kelas - + Service Classes Kelas Perkhidmatan - + Device Class Kelas Peranti - + HCI Version Versi HCI - + LMP Version Versi LMP - + Subversion Subversi - + Device Peranti - - + + Serial ID ID Serial - + product produk - + description keterangan - + Powered Hidup - + Discoverable Boleh Ditemui - + Pairable Boleh Pasang - + Modalias Modalias - + Discovering Menemukan - + Driver Modules Modul Pemacu - - - + + + + + Device File Fail Peranti - + Device Files Fail Peranti - - + + + Device Number Nombor Peranti - - Module Alias - Alias Modul - - - + Application Aplikasi - + status status - - + + + logical name nama logikal - - + + ansiversion ansiversion - + CPU implementer Pelaksanan CPU - + CPU architecture Seni bina CPU - + CPU variant Varian CPU - + CPU part Bahagian CPU - + CPU revision Revisi CPU - + One Satu - + Two Dua - + Four Empat - + Six Enam - + Eight Lapan - + Ten Sepuluh - + Twelve Dua Belas - + Fourteen Empat Belas - + Sixteen Enam Belas - + Eighteen Lapan Belas - + Twenty Dua Puluh - + Twenty-two Dua Puluh Satu - + Twenty-four Dua Puluh Empat - + Twenty-six Dua Puluh Enam - + Twenty-eight Dua Puluh Lapan - + Thirty Tiga Puluh - + Thirty-two Tiga Puluh Dua - + Thirty-four Tiga Puluh Empat - + Thirty-six Tiga Puluh Enam - + Thirty-eight Tiga Puluh Lapan - + Forty Empat Puluh - + Forty-two Empat Puluh Dua - + Forty-four Empat Puluh Empat - + Forty-six Empat Puluh Enam - + Forty-eight Empat Puluh Lapan - + Fifty Lima Puluh - + Fifty-two Lima Puluh Dua - + Fifty-four Lima Puluh Empat - + Fifty-six Lima Puluh Enam - + Fifty-eight Lima Puluh Lapan - + Sixty Enam Puluh - + Sixty-two Enam Puluh Dua - + Sixty-four Enam Puluh Empat - + Sixty-six Enam-puluh-enam - + Sixty-eight Enam-puluh-lapan - + Seventy Tujuh-puluh - + Seventy-two Tujuh-puluh-dua - + Seventy-four Tujuh-puluh-empat - + Seventy-six Tujuh-puluh-enam - + Seventy-eight Tujuh-puluh-lapan - + Eighty Lapan-puluh - + Eighty-two Lapan-puluh-dua - + Eighty-four Lapan-puluh-empat - + Eighty-six Lapan-puluh-enam - + Eighty-eight Lapan-puluh-lapan - + Ninety Sembilan-puluh - + Ninety-two Sembilan-puluh-dua - + Ninety-four Sembilan-puluh-empat - + Ninety-six Sembilan-puluh-enam - + Ninety-eight Sembilan-puluh-lapan - + One hundred Seratus - + One hundred and Two Seratus Dua - + One hundred and four Seratus Empat - + One hundred and Six Seratus Enam - + One hundred and Eight Seratus Lapan - + One hundred and Ten Seratus Sepuluh - + One hundred and Twelve Seratus Sebelas - + One hundred and Fourteen Seratus Empat Belas - + One hundred and Sixteen Seratus Enam Belas - + One hundred and Eighteen Seratus Lapan Belas - + One hundred and Twenty Seratus Dua Puluh - + One hundred and Twenty-two Seratus Dua Puluh Dua - + One hundred and Twenty-four Seratus Dua Puluh Empat - + One hundred and Twenty-six Seratus Dua Puluh Enam - + One hundred and Twenty-eight Seratus Dua Puluh Lapan - + One hundred and Ninety-two Seratus Dua Puluh Sembilan - + Two hundred and fifty-six Dua ratus lima puluh enam @@ -2824,988 +3042,1084 @@ Versi GLSL - - - + + + Unknown Tidak diketahui - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Kelas Perkakasan - - - - + + + + CPU CPU - - - - + + + + No CPU found Tiada CPU ditemui - - - - + + + + Motherboard Papan Induk - - - - + + + + No motherboard found Tiada papan induk ditemui - - - - + + + + Memory Ingatan - - - - + + + + No memory found Tiada ingatan ditemui - - - - + + + + Storage Storan - - - - + + + + No disk found Tiada cakera ditemui - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Penyesuai Paparan - - - - + + + + No GPU found Tiada GPU ditemui - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Tiada monitor ditemui - - - - - + + + + + Network Adapter Penyesuai Rangkaian - - - - + + + + No network adapter found Tiada penyesuai rangkaian ditemui - - - - - + + + + + Sound Adapter Penyesuai Bunyi - - - - + + + + No audio device found Tiada peranti audio ditemui - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Tiada pemacu Bluetooth ditemui - - - - + + + + Other PCI Devices Lain-lain Peranti PCI - - - - + + + + No other PCI devices found Tiada peranti PCI lain ditemui - - - - + + + + Power Hidup - - - - + + + + No battery found Tiada bateri ditemui - - - - - + + + + + Keyboard Papan Kekunci - - - - + + + + No keyboard found Tiada papan kekunci ditemui - - - - - + + + + + Mouse Tetikus - - - - + + + + No mouse found Tiada tetikus ditemui - - - - - - + + + + + + Printer Pencetak - - - - + + + + No printer found Tiada pencetak ditemui - - - - + + + + Camera Kamera - - - - + + + + No camera found Tiada kamera ditemui - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Tiada CD-ROM ditemui - - - - - + + + + + Other Devices Lain-lain Peranti - - - - + + + + No other devices found Tiada peranti lain ditemui - + Array Handle Pemegang Tatasusunan - + Form Factor Faktor Bentuk - + Set Set - + Bank Locator Lokasi Bank - + Type Detail Perincian Jenis - + Part Number Nombor Bahagian - + Rank Kedudukan - + Memory Technology Teknologi Ingatan - + Memory Operating Mode Capability Keupayaan Mod Pengoperasian Ingatan - + Firmware Version Versi Perisian Tegar - + Module Manufacturer ID ID Pengilang Modul - + Module Product ID ID Produk Modul - + Memory Subsystem Controller Manufacturer ID ID Pengilang Pengawal Subsistem Ingatan - + Memory Subsystem Controller Product ID ID Produk Pengawal Subsistem Ingatan - + Non-Volatile Size Saiz Tidak-Meruap - + Volatile Size Saiz Meruap - + Cache Size Saiz Cache - + Logical Size Saiz Logikal - - - - - + + + + + inch inci - + Date Tarikh - + ioport ioport - + network rangkaian - - + battery bateri - + native-path laluan-tabii - + power supply bekalan kuasa - + updated dikemas kini - + has history ada sejarah - + has statistics ada statistik - + rechargeable boleh dicas semula - + state keadaan - + warning-level aras-amaran - + energy tenaga - + energy-empty tenaga-kosong - + energy-full tenaga-penuh - + energy-full-design reka-bentuk-tenaga-penuh - + energy-rate kadar-tenaga - + voltage voltan - + percentage peratus - + technology teknologi - + icon-name nama-ikon - + online dalam-talian - + daemon-version versi-daemon - + on-battery kuasa-bateri - + lid-is-closed penutup-ditutup - + lid-is-present penutup-ada - + critical-action tindakan-kritikal - + copies salinan - + job-cancel-after kerja-batal-selepas - + job-hold-until kerja-tangguh-sehingga - + job-priority prioriti-kerja - + marker-change-time masa-ubah-penanda - + number-up nombor-atas - + orientation-requested orientasi-dipinta - + print-color-mode mod-warna-cetak - + printer-is-accepting-jobs pencetak-menerima-kerja - + printer-is-shared pencetak-dikongsi - + printer-is-temporary pencetak-buat-masa-ini - + printer-make-and-model printer-make-and-model - + printer-state-change-time masa-ubah-keadaan-pencetak - + printer-state-reasons sebab-keadaan-pencetak - + printer-type jenis-pencetak - + printer-uri-supported uri-pencetak-disokong - + sides sisi - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info maklumat bas - + logicalsectorsize saizsektorlogikal - + sectorsize saizsektor - + guid guid - + Geometry (Logical) Geometri (Logikal) - - + + Device Manager Pengurus Peranti - + Device Manager is a handy tool for viewing hardware information and managing the devices. Pengurus Peranti ialah sebuah alat mudah yang dapat melihat maklumat perkakasan dan mengurus peranti-peranti. - + New drivers available! Install or update them now. Pemacu baharu tersedia! Sila pasang atau kemas kini ia sekarang. - + + View + + + + Include subfolders Termasuk subfolder - + Search for drivers in this path Gelintar pemacu dalam laluan ini - - - - Device Name - Nama Peranti - - - - Version Available - Versi Tersedia - - - - - Size - Saiz - - - - - Status - Status - - - - - Action - Tindakan - - - - New Version - Versi Baharu - - - - Current Version - Versi Semasa - - - - Missing drivers (%1) - Pemacu hilang (%1) - - - - Outdated drivers (%1) - Pemacu lapuk (%1) - - - - Up-to-date drivers (%1) - Pemacu terkini (%1) - - - + %1 driver updates available %1 kemas kini pemacu telah tersedia - - + + Time checked: %1 Masa diperiksa: %1 - + Downloading drivers for %1... Memuat turun pemacu untuk %1... - + Download speed: %1 Downloaded %2/%3 Kelajuan muat turun: %1 Muat turun %2/%3 - + Installing drivers for %1... Memasang pemacu untuk %1... - + %1 drivers installed, %2 drivers failed %1 pemacu dipasang, %2 pemacu mengalami kegagalan - + %1 drivers installed %1 pemacu dipasang - + Failed to install drivers Gagal memasang pemacu - + Network error. Reconnecting... Ralat rangkaian. Menyambung semula... - + Download speed: %1 Kelajuan muat turun: %1 - + Your drivers are up to date Pemacu anda adalah yang terkini - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot but semula - + Please %1 for the installed drivers to take effect Sila %1 supaya pemacu yang baru dipasang berkesan - - + + View backup path + + + + + Backup All + + + + + submit feedback serah maklum balas - + Please try again or %1 to us Cuba sekali lagi atau %1 kepada kami - + Install All Pasang Semua - - + + Scan Again Imbas Sekali Lagi - + Cancel Batal - + Scanning hardware device drivers, please wait... Mengimbas pemacu peranti perkakasan, tunggu sebentar... - - + + Scanning %1 Mengimbas %1 - + Scan failed Pengimbasan gagal - + Network unavailable Rangkaian tidak tersedia - + Please check your network connection Sila periksa sambungan rangkaian anda - + Please scan again or %1 to us Sila imbas sekali lagi atau %1 kepada kami - + You are installing a driver, which will be interrupted if you exit. Anda sedang memasang sebuah pemacu, yang akan terganggu sekiranya anda keluar. - + + + Are you sure you want to exit? Anda pasti mahu keluar? - + + + Exit button Keluar - + + + Cancel button Batal - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Penyesuai Bluetooth - - + + Imaging device Peranti pengimejan - + Display adapter Penyesuai paparan - + Sound card Kad bunyi - + Network adapter Penyesuai rangkaian - + Wireless network adapter Penyesuai rangkaian tanpa wayar - + Installation successful Pemasangan berjaya - + Installation failed Pemasangan gagal - + Downloading Memuat turun - + Installing Memasang - + Not installed Tidak dipasang - + Out-of-date telah-lapuk - + Waiting Menunggu - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Ralat tidak diketahui - + Network error Ralat rangkaian - + Canceled Dibatalkan - + Failed to get driver files Gagal mendapatkan fail pemacu - + Update Kemas kini - + + Backup + + + + + Restore + + + + Install Pasang @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Lumpuh - + Refresh Segar Semula - + Export Eksport - + Update drivers Kemas kini pemacu - + Uninstall drivers Nyahpasang pemacu - + Allow it to wake the computer Dayakannya supaya komputer dapat dibangunkan - - + + Enable Benarkan @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Segar Semula - + Export Eksport - + Copy Salin - + Disable Lumpuh - + Unavailable Tidak tersedia @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Sila pilih satu folder setempat @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Memuatkan... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_nl.ts b/deepin-devicemanager/translations/deepin-devicemanager_nl.ts index 69d14be3d..32ba23036 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_nl.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_nl.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + Oké + + + + Feedback + + + + OK button Oké @@ -11,7 +23,7 @@ CmdButtonWidget - + More Meer @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Meer - + Collapse Inklappen @@ -51,14 +63,14 @@ DetailTreeView - - + + More Meer - - + + Collapse Inklappen @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Uitschakelen - + Unavailable Niet beschikbaar @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Apparaatnaam - - + + Name Naam - - + + Vendor Maker - - Model - Model + + Chip + Chip - - Version - Versie + + Capabilities + Mogelijkheden - - Bus Info - Businformatie + + + Module Alias + Module-alias - - Chip - Chip + + + Physical ID + Fysieke id - - Capabilities - Mogelijkheden + + SysFS_Path + - - Clock - Klok + + Description + Omschrijving + + + + Revision + - - Width - Breedte + + KernelModeDriver + - + Memory Address Aanspreekbaar geheugen - + IRQ IRQ - + Unavailable Niet beschikbaar - + Disable Uitschakelen @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Naam - + Vendor Maker - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Maker - + Version Versie - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Naam - + Vendor Maker - + Version Versie - + Model Model - + + Module Alias + Module-alias + + + + Physical ID + Fysieke id + + + Speed Snelheid - + Maximum Power Maximale energie - + Driver Version Stuurprogrammaversie - + Driver Stuurprogramma - + Capabilities Mogelijkheden - + Bus Info Businformatie - + Logical Name Logische naam - + MAC Address MAC-adres - + Unavailable Niet beschikbaar - + Disable Uitschakelen @@ -264,57 +293,67 @@ DeviceCdrom - + Name Naam - + Vendor Maker - + Model Model - + Version Versie - + Bus Info Businformatie - + Capabilities Mogelijkheden - + Driver Stuurprogramma - + Maximum Power Maximale energie - + Speed Snelheid - + + Module Alias + Module-alias + + + + Physical ID + Fysieke id + + + Unavailable Niet beschikbaar - + Disable Uitschakelen @@ -322,7 +361,7 @@ DeviceComputer - + Name Naam @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Naam - - + + Vendor Maker - + CPU ID Processor-id - + Core ID Kern-id - + Threads Threads - - Current Speed - Huidige snelheid - - - + BogoMIPS BogoMIPS - - + + Architecture Architectuur - + CPU Family Processor-familie - + Model Model - - + + Processor Processor - + Core(s) Kern(en) - + Virtualization Virtualisatie - + Flags Vlaggen - + Extensions Uitbreidingen - + L3 Cache L3-cache - + L2 Cache L2-cache - + L1i Cache L1i-cache - + L1d Cache L1d-cache - + Stepping Stappen - + Speed Snelheid - + + + Max Speed Max. snelheid @@ -447,132 +483,127 @@ DeviceGpu - + Name Naam - + Vendor Maker - + Model Model - + Version Versie - + Graphics Memory Videokaartgeheugen - + + Module Alias + Module-alias + + + Physical ID Fysieke id - + Memory Address Aanspreekbaar geheugen - + IO Port I/O-poort - + Bus Info Businformatie - + Maximum Resolution Maximumresolutie - + Minimum Resolution Minimumresolutie - + Current Resolution Huidige resolutie - + Driver Stuurprogramma - + Description Omschrijving - - Clock - Klok - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput Digitale uitvoer - + Display Output Schermuitvoer - + Capabilities Mogelijkheden - + IRQ IRQ - - Width - Breedte - - - + Unavailable Niet beschikbaar @@ -580,62 +611,72 @@ DeviceImage - + Name Naam - + Vendor Maker - + Version Versie - + Model Model - + Bus Info Businformatie - + + Module Alias + Module-alias + + + + Physical ID + Fysieke id + + + Speed Snelheid - + Maximum Power Maximale energie - + Driver Stuurprogramma - + Capabilities Mogelijkheden - + Serial Number Serienummer - + Unavailable Niet beschikbaar - + Disable Uitschakelen @@ -643,62 +684,72 @@ DeviceInput - + Name Naam - + Vendor Maker - + Model Model - + Interface Interface - + Bus Info Businformatie - + + Module Alias + Module-alias + + + + Physical ID + Fysieke id + + + Speed Snelheid - + Maximum Current Maximumvoltage - + Driver Stuurprogramma - + Capabilities Mogelijkheden - + Version Versie - + Unavailable Niet beschikbaar - + Disable Uitschakelen @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Overzicht - - - + + + CPU Processor - - + + CPU quantity Aantal cpu's - - + + Motherboard Moederbord - - + + Memory Geheugen - - + + Display Adapter Schermadapter - - + + Sound Adapter Geluidsadapter - - + + Storage Opslag - - + + Other PCI Devices Overige PCI-apparaten - - + + Battery Accu - - + + Bluetooth Bluetooth - - + + Network Adapter Netwerkadapter - - + + Mouse Muis - - + + Keyboard Toetsenbord - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Printer - - + + Camera Camera - - + + Other Devices Other Input Devices Overige apparaten - - - + + + Device Apparaat - - - + + + OS Besturingssysteem @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Naam - - + + Vendor Maker - - + + Size Grootte - - + + Type Type - - + + Speed Snelheid - + Total Width Totale breedte - + Locator Locator - + Serial Number Serienummer - + Configured Voltage Ingesteld voltage - + Maximum Voltage Maximumvoltage - + Minimum Voltage Minimumvoltage - + Configured Speed Ingestelde snelheid - + Data Width Databreedte @@ -920,200 +971,198 @@ DeviceMonitor - + Name Naam - + Vendor Maker - + Type Type - + Display Input Scherminvoer - + Interface Type Soort interface - + Support Resolution Ondersteunt resolutie - + Current Resolution Huidige resolutie - + Display Ratio Beeldverhouding - + Primary Monitor Primair beeldscherm - + Size Grootte - + Serial Number Serienummer - - - Product Date - Productiedatum - DeviceNetwork - + + Name Naam - + + Vendor Maker - + + Type Type - + Version Versie - + Bus Info Businformatie - + Capabilities Mogelijkheden - + Driver Stuurprogramma - + Driver Version Stuurprogrammaversie - + + Module Alias + Module-alias + + + + Physical ID + Fysieke id + + + Maximum Rate Maximumsnelheid - + Negotiation Rate Overdrachtssnelheid - + Port Poort - + Multicast Multicast - + Link Link - + Latency Vertraging - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Uitzenden - + Auto Negotiation Automatisch onderhandelen - - Clock - Klok - - - - Width - Breedte - - - + Memory Address Aanspreekbaar geheugen - + IRQ IRQ - + MAC Address MAC-adres - + Logical Name Logische naam - + Unavailable Niet beschikbaar - + Disable Uitschakelen @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Naam - + Vendor Maker - + Model Model - + Bus Info Businformatie - + Version Versie - + Input/Output Invoer/Uitvoer - + Memory Geheugen - + IRQ IRQ - + Latency Vertraging - - Clock - Klok - - - - Width - Breedte - - - + Driver Stuurprogramma - + Capabilities Mogelijkheden @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Naam - + Vendor Maker - + Model Model - + Version Versie - + Bus Info Businformatie - + Capabilities Mogelijkheden - + Driver Stuurprogramma - + Maximum Power Maximale energie - + Speed Snelheid - + Serial Number Serienummer - + Unavailable Niet beschikbaar - + Disable Uitschakelen @@ -1252,82 +1291,82 @@ DevicePower - + Name Naam - + Model Model - + Vendor Maker - + Serial Number Serienummer - + Type Type - + Status Status - + Capacity Capaciteit - + Voltage Voltage - + Slot Slot - + Design Capacity Ontwerpcapaciteit - + Design Voltage Ontwerpvoltage - + SBDS Version SBDS-versie - + SBDS Serial Number SBDS-serienummer - + SBDS Manufacture Date SBDS - gemaakt op - + SBDS Chemistry SBDS-kunde - + Temperature Temperatuur @@ -1335,47 +1374,47 @@ DevicePrint - + Name Naam - + Model Model - + Vendor Maker - + Serial Number Serienummer - + Shared Gedeeld - + URI URI - + Status Status - + Interface Type Soort interface - + Disable Uitschakelen @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Maker - - + + Media Type Soort media - - + + + Size Grootte - + + + Name + Naam + + + Version Versie - + Capabilities Mogelijkheden - + + + Module Alias + Module-alias + + + + + Physical ID + Fysieke id + + + Firmware Version Firmwareversie - + Speed Snelheid - + Description Omschrijving - + Serial Number Serienummer - + Interface Interface - + Rotation Rate Bewegingssnelheid - + Unavailable Niet beschikbaar @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Kies een bij te werken stuurprogramma - + No drivers found in this folder Er zijn geen stuurprogramma's aangetroffen in deze map @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Bezig met laden van audio-apparaten... - + Loading BIOS Info... Bezig met laden van BIOS-informatie... - + Loading CD-ROM Info... Bezig met laden van cd-rominformatie... - + Loading Operating System Info... Bezig met laden van besturingssysteeminformatie... - + Loading CPU Info... Bezig met laden van processorinformatie... - + Loading Other Devices Info... Bezig met laden van overige apparaten... - + Loading Power Info... Bezig met laden van energie-informatie... - + Loading Printer Info... Bezig met laden van printers... - + Loading Mouse Info... Bezig met laden van muisinformatie... - + Loading Network Adapter Info... Bezig met laden van netwerkadapters... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Uitschakelen - + Unavailable Niet beschikbaar @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Uitschakelen - + Unavailable Niet beschikbaar @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Apparaatinformatie - + Display shortcuts Sneltoetsen tonen - + Close Sluiten - + Help Hulp - + Copy Kopiëren - + System Systeem - + Export Exporteren - + Refresh Verversen - + Device Manager Apparaatbeheer - + Hardware Hardware - + Drivers Stuurprogramma's - + Monitor Beeldscherm - + Overview Overzicht - + Display Adapter Beeldschermadapter - + CPU Processor - + Network Adapter Netwerkadapter - + Battery Accu @@ -1639,191 +1691,377 @@ PageDetail - + More Meer + + PageDriverBackupInfo + + + + Name + Naam + + + + + Current Version + Huidige versie + + + + + Driver Platform Version + + + + + Status + Status + + + + Action + Actie + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Bezig met bijwerken… - - - + + + Cancel button Annuleren - + Next Volgende - + Warning Waarschuwing - + The device will be unavailable after the driver uninstallation Het apparaat is niet meer beschikbaar na het verwijderen van het stuurprogramma - + Uninstall button Verwijderen - + Uninstalling Bezig met verwijderen… - + Update successful Het bijwerken is voltooid - + Uninstallation successful Het verwijderen is voltooid - + Update failed Het bijwerken is mislukt - + Uninstallation failed Het verwijderen is mislukt - + OK button Oké - + Next button Volgende - + The selected folder does not exist, please select again De gekozen map bestaat niet - kies een andere - + Update button Bijwerken - + Previous button Vorige - + Broken package Beschadigd pakket - + Unmatched package architecture Niet-overeenkomende pakketarchitectuur - - + + The selected file does not exist, please select again Het gekozen bestand bestaat niet - kies een andere - + It is not a driver Dit is geen stuurprogramma - + Unable to install - no digital signature Het installeren is niet mogelijk omdat er een ondertekening ontbreekt - + Unknown error Onbekende fout - + The driver module was not found De stuurprogrammamodule is niet aangetroffen - + Invalid module format Ongeldig moduleformaat - + The driver module has dependencies De stuurprogrammamodule kent vereisten - PageListView + PageDriverInstallInfo - - Refresh - Verversen + + + + Device Name + Apparaatnaam - + + Version Available + Versie beschikbaar + + + + + Size + Grootte + + + + + Status + Status + + + + + Action + Actie + + + + New Version + Nieuwe versie + + + + Current Version + Huidige versie + + + + Missing drivers (%1) + Ontbrekende stuurprogramma's (%1) + + + + Outdated drivers (%1) + Verouderde stuurprogramma's (%1) + + + + Up-to-date drivers (%1) + Actuele stuurprogramma's (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + Oké + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Naam + + + + Current Version + Huidige versie + + + + Backup Version + + + + + Action + Actie + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Verversen + + + Export Exporteren - + Overview Overzicht + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Het apparaat kan niet worden ingeschakeld - + Failed to disable the device Het apparaat kan niet worden ingeschakeld - + Failed to disable it: unable to get the device SN Het uitschakelen is mislukt: het serienummer van het apparaat kan niet worden opgevraagd - + Update Drivers Stuurprogramma's bijwerken - + Uninstall Drivers Stuurprogramma's verwijderen @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Verversen - + Export Exporteren - + Copy Kopiëren - + Overview Overzicht @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Verversen - + Export Exporteren - + Copy Kopiëren - - + + Enable Inschakelen - + Update drivers Stuurprogramma's bijwerken - + Uninstall drivers Stuurprogramma's verwijderen - + Allow it to wake the computer Toestemming geven om de computer te ontwaken - + Disable Uitschakelen - - + + Failed to disable it: unable to get the device SN Het uitschakelen is mislukt: het serienummer van het apparaat kan niet worden opgevraagd - + Failed to disable the device Het apparaat kan niet worden ingeschakeld - + Failed to enable the device Het apparaat kan niet worden ingeschakeld - + Update Drivers Stuurprogramma's bijwerken - + Uninstall Drivers Stuurprogramma's verwijderen @@ -1924,867 +2162,847 @@ QObject - + SubVendor Submaker - + SubDevice Subapparaat - + Driver Stuurprogramma - + Driver Status Stuurprogrammastatus - + Driver Activation Cmd Stuurprogramma-activatie - - + - + + Config Status Configuratiestatus - - - - - - - physical id - fysieke id - - - + latency vertraging - + Phys Phys - + Sysfs Sysfs - + Handlers Behandeld door - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Model - - - - Vendor - Maker - - - + Version Versie - - + + + Bus Bus - - + + BIOS Information BIOS-informatie - - + + Base Board Information Basisbordinformatie - - + + System Information Systeeminformatie - - + + Chassis Information Chassis-informatie - - + + Physical Memory Array Fysieke geheugenreeks - + Release Date Uitgebracht op - + Address Adres - + Runtime Size Runtimegrootte - + ROM Size ROM-grootte - + Characteristics Kenmerken - + BIOS Revision BIOS-revisie - + Firmware Revision Firmware-revisie - - + + Product Name Productnaam - - - + + + Serial Number Serienummer - - - + + + Asset Tag Asset-label - - + + Features Mogelijkheden - + Location In Chassis Locatie in chassis - + Chassis Handle Chassis-handgreep - - + + Type Type - + Contained Object Handles Inbegrepen objecthandgrepen - - + + UUID UUID - + Wake-up Type Soort ontwaking - - + + SKU Number SKU-nummer - + Family Familie - + Lock Vergrendeling - + Boot-up State Opstartstatus - + Power Supply State Voedingsstatus - + Thermal State Temperatuurstatus - + Security Status Beveiligingsstatus - + OEM Information OEM-informatie - + Height Hoogte - + Number Of Power Cords Aantal stroomkabels - + Contained Elements Inbegrepen elementen - + Location Locatie - + Error Correction Type Foutieve correctie - + Maximum Capacity Maximale capaciteit - - + + Error Information Handle Foutinformatiehandgreep - + Number Of Devices Aantal apparaten - + BIOS ROMSIZE BIOS-ROM-grootte - + Release date Uitgebracht op - + Board name Bordnaam - + SMBIOS Version SMBIOS-versie - + Language Description Format Taalomschrijvingsopmaak - + Installable Languages Talen beschikbaar voor installatie - + Currently Installed Language Momenteel geïnstalleerde taal - + BD Address BD-adres - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Pakketsoort - + Link policy Koppelbeleid - + Link mode Koppelmodus - - + + Class Klasse - + Service Classes Dienstklassen - + Device Class Apparaatklasse - + HCI Version HCI-versie - + LMP Version LMP-versie - + Subversion Subversie - + Device Apparaat - - + + Serial ID Seriële id - + product product - + description omschrijving - + Powered Ingeschakeld - + Discoverable Vindbaar - + Pairable Koppelbaar - + Modalias Modalias - + Discovering Vindbaar - + Driver Modules Stuurprogrammamodules - - - + + + + + Device File Apparaatbestand - + Device Files Apparaatbestanden - - + + + Device Number Apparaatnummer - - Module Alias - Module-alias - - - + Application Applicatie - + status status - - + + + logical name logische naam - - + + ansiversion ansiversie - + CPU implementer Processorimplementaat - + CPU architecture Processorarchitectuur - + CPU variant Processorvariant - + CPU part Processoronderdeel - + CPU revision Processorrevisie - + One Eén - + Two Twee - + Four Vier - + Six Zes - + Eight Acht - + Ten Tien - + Twelve Twaalf - + Fourteen Veertien - + Sixteen Zestien - + Eighteen Achttien - + Twenty Twintig - + Twenty-two Tweeëntwintig - + Twenty-four Vierentwintig - + Twenty-six Zesentwintig - + Twenty-eight Achtentwintig - + Thirty Dertig - + Thirty-two Tweeëndertig - + Thirty-four Vierendertig - + Thirty-six Zesendertig - + Thirty-eight Achtendertig - + Forty Veertig - + Forty-two Tweeënveertig - + Forty-four Vierendertig - + Forty-six Zesendertig - + Forty-eight Achtendertig - + Fifty Vijftig - + Fifty-two Tweeënvijftig - + Fifty-four Vierenvijftig - + Fifty-six Zesenvijftig - + Fifty-eight Achtenvijftig - + Sixty Zestig - + Sixty-two Tweeënzestig - + Sixty-four Vierenzestig - + Sixty-six Zesenzestig - + Sixty-eight Zesentachtig - + Seventy Zeventig - + Seventy-two Tweeënzeventig - + Seventy-four Vierenzeventig - + Seventy-six Zesenzeventig - + Seventy-eight Achtenzeventig - + Eighty Tachtig - + Eighty-two Tweeëntachtig - + Eighty-four Vierentachtig - + Eighty-six Zesentachtig - + Eighty-eight Achtentachtig - + Ninety Negentig - + Ninety-two Tweeënnegentig - + Ninety-four Vierennegentig - + Ninety-six Zesennegentig - + Ninety-eight Achtennegentig - + One hundred Honderd - + One hundred and Two Honderdtwee - + One hundred and four Honderdvier - + One hundred and Six Honderdzes - + One hundred and Eight Honderdacht - + One hundred and Ten Honderdtien - + One hundred and Twelve Honderdtwaalf - + One hundred and Fourteen Honderdveertien - + One hundred and Sixteen Honderdzestien - + One hundred and Eighteen Honderdachttien - + One hundred and Twenty Honderdtwintig - + One hundred and Twenty-two Honderdtweeëntwintig - + One hundred and Twenty-four Honderdvierentwintig - + One hundred and Twenty-six Honderdzesentwintig - + One hundred and Twenty-eight Honderdachtentwintig - + One hundred and Ninety-two Honderdtweeënnegentig - + Two hundred and fifty-six Tweehonderdzesenvijftig @@ -2824,988 +3042,1084 @@ GLSL-versie - - - + + + Unknown Onbekend - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Hardwareklasse - - - - + + + + CPU Processor - - - - + + + + No CPU found Geen processor aangetroffen - - - - + + + + Motherboard Moederbord - - - - + + + + No motherboard found Geen moederbord aangetroffen - - - - + + + + Memory Geheugen - - - - + + + + No memory found Geen geheugen aangetroffen - - - - + + + + Storage Opslag - - - - + + + + No disk found Geen schijf aangetroffen - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Schermadapter - - - - + + + + No GPU found Geen videokaart aangetroffen - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Geen beeldscherm aangetroffen - - - - - + + + + + Network Adapter Netwerkadapter - - - - + + + + No network adapter found Geen netwerkadapter aangetroffen - - - - - + + + + + Sound Adapter Geluidsadapter - - - - + + + + No audio device found Geen audio-apparaat aangetroffen - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Geen Bluetooth-apparaat aangetroffen - - - - + + + + Other PCI Devices Overige PCI-apparaten - - - - + + + + No other PCI devices found Geen andere PCI-apparaten aangetroffen - - - - + + + + Power Energie - - - - + + + + No battery found Geen accu aangetroffen - - - - - + + + + + Keyboard Toetsenbord - - - - + + + + No keyboard found Geen toetsenbord aangetroffen - - - - - + + + + + Mouse Muis - - - - + + + + No mouse found Geen muis aangetroffen - - - - - - + + + + + + Printer Printer - - - - + + + + No printer found Geen printer aangetroffen - - - - + + + + Camera Camera - - - - + + + + No camera found Geen camera aangetroffen - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Geen cd-romspeler aangetroffen - - - - - + + + + + Other Devices Overige apparaten - - - - + + + + No other devices found Geen andere apparaten aangetroffen - + Array Handle Reekshandgreep - + Form Factor Vormfactor - + Set Instellen - + Bank Locator Bank Locator - + Type Detail Type-informatie - + Part Number Onderdeelnummer - + Rank Rang - + Memory Technology Geheugentechnologie - + Memory Operating Mode Capability Geheugenoperatiemodi - + Firmware Version Firmwareversie - + Module Manufacturer ID ID van modulemaker - + Module Product ID Productnummer van module - + Memory Subsystem Controller Manufacturer ID ID van maker van geheugensubsysteem - + Memory Subsystem Controller Product ID Productnummer van geheugensubsysteem - + Non-Volatile Size Niet-volatilegrootte - + Volatile Size Volatilegrootte - + Cache Size Cachegrootte - + Logical Size Logische grootte - - - - - + + + + + inch inch - + Date Datum - + ioport in-/uitvoerpoort - + network netwerk - - + battery accu - + native-path systeempad - + power supply voeding - + updated bijgewerkt - + has history bevat geschiedenis - + has statistics bevat statistieken - + rechargeable oplaadbaar - + state status - + warning-level waarschuwingsniveau - + energy energie - + energy-empty leeg - + energy-full opgeladen - + energy-full-design opgeladen - + energy-rate hoeveelheid - + voltage voltage - + percentage percentage - + technology technologie - + icon-name pictogramnaam - + online online - + daemon-version achtergronddienstversie - + on-battery op accu - + lid-is-closed deksel is gesloten - + lid-is-present deksel is aanwezig - + critical-action kritieke actie - + copies kopieën - + job-cancel-after taak breekt af na - + job-hold-until taak wordt vastgehouden tot - + job-priority taakprioriteit - + marker-change-time marker-change-time - + number-up number-up - + orientation-requested orientation-requested - + print-color-mode print-color-mode - + printer-is-accepting-jobs printer-is-accepting-jobs - + printer-is-shared printer-is-shared - + printer-is-temporary printer-is-temporary - + printer-make-and-model printermaker en -model - + printer-state-change-time printer-state-change-time - + printer-state-reasons printer-state-reasons - + printer-type printer-type - + printer-uri-supported printer-uri-supported - + sides kanten - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info businformatie - + logicalsectorsize logische sectorgrootte - + sectorsize sectorgrootte - + guid guid - + Geometry (Logical) Afmetingen (logisch) - - + + Device Manager Apparaatbeheer - + Device Manager is a handy tool for viewing hardware information and managing the devices. Apparaatbeheer is een programma dat hardware-informatie toont en apparaten kan beheren. - + New drivers available! Install or update them now. Er zijn nieuwe stuurprogramma's beschikbaar! Installeer of werk ze nu bij. - + + View + + + + Include subfolders Inclusief onderliggende mappen - + Search for drivers in this path Deze locatie doorzoeken - - - - Device Name - Apparaatnaam - - - - Version Available - Versie beschikbaar - - - - - Size - Grootte - - - - - Status - Status - - - - - Action - Actie - - - - New Version - Nieuwe versie - - - - Current Version - Huidige versie - - - - Missing drivers (%1) - Ontbrekende stuurprogramma's (%1) - - - - Outdated drivers (%1) - Verouderde stuurprogramma's (%1) - - - - Up-to-date drivers (%1) - Actuele stuurprogramma's (%1) - - - + %1 driver updates available Er zijn %1 stuurprogramma-updates beschikbaar - - + + Time checked: %1 Gecontroleerd om %1 - + Downloading drivers for %1... Bezig met downloaden van stuurprogramma's… - + Download speed: %1 Downloaded %2/%3 Downloadsnelheid: %1 - Gedownload: %2/%3 - + Installing drivers for %1... Bezig met installeren van stuurprogramma's… - + %1 drivers installed, %2 drivers failed %1 stuurprogramma's geïnstalleerd; %2 mislukt - + %1 drivers installed %1 stuurprogramma's geïnstalleerd - + Failed to install drivers De stuurprogramma's kunnen niet worden geïnstalleerd - + Network error. Reconnecting... Netwerfout - bezig met opnieuw verbinden… - + Download speed: %1 Downloadsnelheid: %1 - + Your drivers are up to date Alle stuurprogramma's zijn actueel - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot Start de computer opnieuw op - + Please %1 for the installed drivers to take effect %1 om de geïnstalleerde stuurprogramma's in gebruik te nemen - - + + View backup path + + + + + Backup All + + + + + submit feedback verstuur feedback - + Please try again or %1 to us Probeer het opnieuw of %1 - + Install All Alles installeren - - + + Scan Again Opnieuw zoeken - + Cancel Annuleren - + Scanning hardware device drivers, please wait... Bezig met zoeken naar stuurprogramma's… - - + + Scanning %1 Bezig met zoeken naar %1… - + Scan failed Het zoeken is mislukt - + Network unavailable Netwerkfout - + Please check your network connection Controleer je internetverbinding - + Please scan again or %1 to us Probeer het opnieuw of %1 - + You are installing a driver, which will be interrupted if you exit. Er wordt nog een stuurprogramma geïnstalleerd, Als je nu afsluit, wordt het proces afgebroken. - + + + Are you sure you want to exit? Weet je zeker dat je wilt afsluiten? - + + + Exit button Afsluiten - + + + Cancel button Annuleren - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Bluetoothadapter - - + + Imaging device Scanapparaat - + Display adapter Beeldschermadapter - + Sound card Geluidskaart - + Network adapter Netwerkadapter - + Wireless network adapter Draadloze netwerkadapter - + Installation successful De installatie is voltooid - + Installation failed De installatie is mislukt - + Downloading Bezig met downloaden… - + Installing Bezig met installeren… - + Not installed Niet geïnstalleerd - + Out-of-date Verouderd - + Waiting Aan het wachten… - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Onbekende fout - + Network error Netwerkfout - + Canceled Afgebroken - + Failed to get driver files De bestanden kunnen niet worden opgehaald - + Update Bijwerken - + + Backup + + + + + Restore + + + + Install Installeren @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Uitschakelen - + Refresh Verversen - + Export Exporteren - + Update drivers Stuurprogramma's bijwerken - + Uninstall drivers Stuurprogramma's verwijderen - + Allow it to wake the computer Toestemming geven om de computer te ontwaken - - + + Enable Inschakelen @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Verversen - + Export Exporteren - + Copy Kopiëren - + Disable Uitschakelen - + Unavailable Niet beschikbaar @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Kies een lokale map @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Bezig met laden... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_pl.ts b/deepin-devicemanager/translations/deepin-devicemanager_pl.ts index 78dd81bd1..68ee86f14 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_pl.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_pl.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Więcej @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Więcej - + Collapse Zwiń @@ -51,14 +63,14 @@ DetailTreeView - - + + More Więcej - - + + Collapse Zwiń @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Wyłącz - + Unavailable Niedostępne @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Nazwa urządzenia - - + + Name Nazwa - - + + Vendor Producent - - Model - Model + + Chip + Czip - - Version - Wersja + + Capabilities + Możliwości - - Bus Info - Informacje o szynie + + + Module Alias + Alias modułu - - Chip - Czip + + + Physical ID + Identyfikator fizyczny - - Capabilities - Możliwości + + SysFS_Path + - - Clock - Zegar + + Description + Opis + + + + Revision + - - Width - Szerokość + + KernelModeDriver + - + Memory Address Adres pamięci - + IRQ IRQ - + Unavailable Niedostępne - + Disable Wyłącz @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nazwa - + Vendor Producent - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Producent - + Version Wersja - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nazwa - + Vendor Producent - + Version Wersja - + Model Model - + + Module Alias + Alias modułu + + + + Physical ID + Identyfikator fizyczny + + + Speed Prędkość - + Maximum Power Moc maksymalna - + Driver Version Wersja sterownika - + Driver Sterownik - + Capabilities Możliwości - + Bus Info Informacje o szynie - + Logical Name Nazwa logiczna - + MAC Address Adres MAC - + Unavailable Niedostępne - + Disable Wyłącz @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nazwa - + Vendor Producent - + Model Model - + Version Wersja - + Bus Info Informacje o szynie - + Capabilities Możliwości - + Driver Sterownik - + Maximum Power Moc maksymalna - + Speed Prędkość - + + Module Alias + Alias modułu + + + + Physical ID + Identyfikator fizyczny + + + Unavailable Niedostępne - + Disable Wyłącz @@ -322,7 +361,7 @@ DeviceComputer - + Name Nazwa @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nazwa - - + + Vendor Producent - + CPU ID ID procesora - + Core ID ID rdzenia - + Threads Wątki - - Current Speed - Aktualna prędkość - - - + BogoMIPS BogoMIPS - - + + Architecture Architektura - + CPU Family Rodzina procesorów - + Model Model - - + + Processor Wątków - + Core(s) Rdzeń(ie) - + Virtualization Wirtualizacja - + Flags Flagi - + Extensions Rozszerzenia - + L3 Cache L3 Cache - + L2 Cache L2 Cache - + L1i Cache L1i Cache - + L1d Cache L1d Cache - + Stepping Wkraczanie - + Speed Prędkość - + + + Max Speed Prędkość maksymalna @@ -447,132 +483,127 @@ DeviceGpu - + Name Nazwa - + Vendor Producent - + Model Model - + Version Wersja - + Graphics Memory Pamięć wideo - + + Module Alias + Alias modułu + + + Physical ID Identyfikator fizyczny - + Memory Address Adres pamięci - + IO Port Port IO - + Bus Info Informacje o szynie - + Maximum Resolution Rozdzielczość maksymalna - + Minimum Resolution Minimalna rozdzielczość - + Current Resolution Aktualna rozdzielczość - + Driver Sterownik - + Description Opis - - Clock - Zegar - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output Wyjście wyświetlacza - + Capabilities Możliwości - + IRQ IRQ - - Width - Szerokość - - - + Unavailable Niedostępne @@ -580,62 +611,72 @@ DeviceImage - + Name Nazwa - + Vendor Producent - + Version Wersja - + Model Model - + Bus Info Informacje o szynie - + + Module Alias + Alias modułu + + + + Physical ID + Identyfikator fizyczny + + + Speed Prędkość - + Maximum Power Moc maksymalna - + Driver Sterownik - + Capabilities Możliwości - + Serial Number Numer seryjny - + Unavailable Niedostępne - + Disable Wyłącz @@ -643,62 +684,72 @@ DeviceInput - + Name Nazwa - + Vendor Producent - + Model Model - + Interface Interfejs - + Bus Info Informacje o szynie - + + Module Alias + Alias modułu + + + + Physical ID + Identyfikator fizyczny + + + Speed Prędkość - + Maximum Current Prąd maksymalny - + Driver Sterownik - + Capabilities Możliwości - + Version Wersja - + Unavailable Niedostępne - + Disable Wyłącz @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Podgląd - - - + + + CPU Procesor - - + + CPU quantity Rodzina procesorów - - + + Motherboard Płyta główna - - + + Memory Pamięć - - + + Display Adapter Karta graficzna - - + + Sound Adapter Adapter dźwięku - - + + Storage Magazyn danych - - + + Other PCI Devices Inne urządzenia PCI - - + + Battery Bateria - - + + Bluetooth Bluetooth - - + + Network Adapter Adapter sieciowy - - + + Mouse Myszka - - + + Keyboard Klawiatura - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Drukarka - - + + Camera Aparat - - + + Other Devices Other Input Devices Inne urządzenia - - - + + + Device Urządzenie - - - + + + OS OS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nazwa - - + + Vendor Producent - - + + Size Rozmiar - - + + Type Typ - - + + Speed Prędkość - + Total Width Całkowita szerokość - + Locator Lokalizator - + Serial Number Numer seryjny - + Configured Voltage Skonfigurowane napięcie - + Maximum Voltage Maksymalne napięcie - + Minimum Voltage Minimalne napięcie - + Configured Speed Skonfigurowana prędkość - + Data Width Szerokość danych @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nazwa - + Vendor Producent - + Type Typ - + Display Input Wyświetl wejście - + Interface Type Typ interfejsu - + Support Resolution Wspierane rozdzielczości - + Current Resolution Aktualna rozdzielczość - + Display Ratio Współczynnik wyświetlania - + Primary Monitor Główny monitor - + Size Rozmiar - + Serial Number Numer seryjny - - - Product Date - Data produktu - DeviceNetwork - + + Name Nazwa - + + Vendor Producent - + + Type Typ - + Version Wersja - + Bus Info Informacje o szynie - + Capabilities Możliwości - + Driver Sterownik - + Driver Version Wersja sterownika - + + Module Alias + Alias modułu + + + + Physical ID + Identyfikator fizyczny + + + Maximum Rate Prędkość maksymalna - + Negotiation Rate Negotiation Rate - + Port Port - + Multicast Multicast - + Link Link - + Latency Czas oczekiwania - + IP IP - + Firmware Oprogramowanie układowe - + Duplex Dwustronny - + Broadcast Nadawanie - + Auto Negotiation Auto Negotiation - - Clock - Zegar - - - - Width - Szerokość - - - + Memory Address Adres pamięci - + IRQ IRQ - + MAC Address Adres MAC - + Logical Name Nazwa logiczna - + Unavailable Niedostępne - + Disable Wyłącz @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nazwa - + Vendor Producent - + Model Model - + Bus Info Informacje o szynie - + Version Wersja - + Input/Output Wejście/Wyjście - + Memory Pamięć - + IRQ IRQ - + Latency Czas oczekiwania - - Clock - Zegar - - - - Width - Szerokość - - - + Driver Sterownik - + Capabilities Możliwości @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nazwa - + Vendor Producent - + Model Model - + Version Wersja - + Bus Info Informacje o szynie - + Capabilities Możliwości - + Driver Sterownik - + Maximum Power Moc maksymalna - + Speed Prędkość - + Serial Number Numer seryjny - + Unavailable Niedostępne - + Disable Wyłącz @@ -1252,82 +1291,82 @@ DevicePower - + Name Nazwa - + Model Model - + Vendor Producent - + Serial Number Numer seryjny - + Type Typ - + Status Status - + Capacity Pojemność - + Voltage Napięcie - + Slot Miejsce - + Design Capacity Pojemność projektowa - + Design Voltage Napięcie obliczeniowe - + SBDS Version Wersja SBDS - + SBDS Serial Number Numer seryjny SBDS - + SBDS Manufacture Date Data produkcji SBDS - + SBDS Chemistry Chemia SBDS - + Temperature Temperatura @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nazwa - + Model Model - + Vendor Producent - + Serial Number Numer seryjny - + Shared Udostępniony - + URI URI - + Status Status - + Interface Type Typ interfejsu - + Disable Wyłącz @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Producent - - + + Media Type Typ mediów - - + + + Size Rozmiar - + + + Name + Nazwa + + + Version Wersja - + Capabilities Możliwości - + + + Module Alias + Alias modułu + + + + + Physical ID + Identyfikator fizyczny + + + Firmware Version Wersja firmware - + Speed Prędkość - + Description Opis - + Serial Number Numer seryjny - + Interface Interfejs - + Rotation Rate Szybkość rotacji - + Unavailable Niedostępne @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Wybierz sterownik do zaktualizowania - + No drivers found in this folder Nie znaleziono sterowników w tym katalogu @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Wczytywanie informacji o urządzeniu dźwiękowym... - + Loading BIOS Info... Wczytywanie informacji o systemie BIOS... - + Loading CD-ROM Info... Wczytywanie informacji o płycie CD-ROM... - + Loading Operating System Info... Wczytywanie informacji o systemie operacyjnym... - + Loading CPU Info... Wczytywanie informacji o procesorze... - + Loading Other Devices Info... Wczytywanie informacji o innych urządzeniach... - + Loading Power Info... Wczytywanie informacji o zasilaniu... - + Loading Printer Info... Wczytywanie informacji o drukarce... - + Loading Mouse Info... Wczytywanie informacji o myszce... - + Loading Network Adapter Info... Wczytywanie informacji o adapterze sieciowym... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Wyłącz - + Unavailable Niedostępne @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Wyłącz - + Unavailable Niedostępne @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Informacje o urządzeniu - + Display shortcuts Wyświetl skróty - + Close Zamknij - + Help Pomoc - + Copy Kopiuj - + System System - + Export Eksportuj - + Refresh Odśwież - + Device Manager Menedżer urządzeń - + Hardware Sprzęt - + Drivers Sterowniki - + Monitor Monitor - + Overview Podgląd - + Display Adapter Karta graficzna - + CPU Procesor - + Network Adapter Adapter sieciowy - + Battery Bateria @@ -1639,191 +1691,377 @@ PageDetail - + More Więcej + + PageDriverBackupInfo + + + + Name + Nazwa + + + + + Current Version + Bieżąca wersja + + + + + Driver Platform Version + + + + + Status + Status + + + + Action + Działanie + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Aktualizowanie - - - + + + Cancel button Anuluj - + Next Dalej - + Warning Ostrzeżenie - + The device will be unavailable after the driver uninstallation Urządzenie nie będzie dostępne po usunięciu sterownika - + Uninstall button Odinstaluj - + Uninstalling Odinstalowywanie - + Update successful Zaktualizowano pomyślnie - + Uninstallation successful Usunięto pomyślnie - + Update failed Aktualizacja zakończona niepowodzeniem - + Uninstallation failed Odinstalowanie nie powiodło się - + OK button OK - + Next button Dalej - + The selected folder does not exist, please select again Zaznaczony katalog nie istnieje, spróbuj ponownie - + Update button Zaktualizuj - + Previous button Wstecz - + Broken package Uszkodzony pakiet - + Unmatched package architecture Niezgodna architektura pakietu - - + + The selected file does not exist, please select again Zaznaczony plik nie istnieje, spróbuj ponownie - + It is not a driver To nie jest sterownik - + Unable to install - no digital signature Nie można zainstalować - brak cyfrowej sygnatury - + Unknown error Nieznany błąd - + The driver module was not found Moduł sterownika nie został znaleziony - + Invalid module format Nieprawidłowy format modułu - + The driver module has dependencies Moduł sterownika posiada zależności - PageListView + PageDriverInstallInfo - - Refresh - Odśwież + + + + Device Name + Nazwa urządzenia - + + Version Available + Wersja dostępna + + + + + Size + Rozmiar + + + + + Status + Status + + + + + Action + Działanie + + + + New Version + Nowa wersja + + + + Current Version + Bieżąca wersja + + + + Missing drivers (%1) + Brakujące sterowniki (%1) + + + + Outdated drivers (%1) + Nieaktualne sterowniki (%1) + + + + Up-to-date drivers (%1) + Aktualne sterowniki (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nazwa + + + + Current Version + Bieżąca wersja + + + + Backup Version + + + + + Action + Działanie + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Odśwież + + + Export Eksportuj - + Overview Podgląd + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Nie udało się włączyć urządzenia - + Failed to disable the device Nie udało się wyłączyć urządzenia - + Failed to disable it: unable to get the device SN Nie udało się wyłączyć: nie można uzyskać numeru seryjnego - + Update Drivers Zaktualizuj sterowniki - + Uninstall Drivers Odinstaluj sterowniki @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Odśwież - + Export Eksportuj - + Copy Kopiuj - + Overview Podgląd @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Odśwież - + Export Eksportuj - + Copy Kopiuj - - + + Enable Włącz - + Update drivers Zaktualizuj sterowniki - + Uninstall drivers Odinstaluj sterowniki - + Allow it to wake the computer Zezwól urządzeniu na obudzenie komputera - + Disable Wyłącz - - + + Failed to disable it: unable to get the device SN Nie udało się wyłączyć: nie można uzyskać numeru seryjnego - + Failed to disable the device Nie udało się wyłączyć urządzenia - + Failed to enable the device Nie udało się włączyć urządzenia - + Update Drivers Zaktualizuj sterowniki - + Uninstall Drivers Odinstaluj sterowniki @@ -1924,867 +2162,847 @@ QObject - + SubVendor Podwykonawca - + SubDevice Podurządzenie - + Driver Sterownik - + Driver Status Status sterownika - + Driver Activation Cmd Aktywacja sterownika Cmd - - + - + + Config Status Stan konfiguracji - - - - - - - physical id - identyfikator fizyczny - - - + latency opóźnienie - + Phys Phys - + Sysfs Sysfs - + Handlers Rączki - - + + PROP PROP - - + + EV EV - - + + KEY KLUCZ - - Model - Model - - - - Vendor - Producent - - - + Version Wersja - - + + + Bus Szyna - - + + BIOS Information Informacje o BIOS - - + + Base Board Information Informacje o płycie głównej - - + + System Information Informacje o systemie - - + + Chassis Information Informacje o obudowie - - + + Physical Memory Array Tablica pamięci fizycznej - + Release Date Data wydania - + Address Adres - + Runtime Size Rozmiar środowiska wykonawczego - + ROM Size Rozmiar ROM - + Characteristics Charakterystyka - + BIOS Revision Wersja systemu BIOS - + Firmware Revision Wersja Firmware - - + + Product Name Nazwa produktu - - - + + + Serial Number Numer seryjny - - - + + + Asset Tag Znacznik zasobu - - + + Features Funkcje - + Location In Chassis Miejsce w obudowie - + Chassis Handle Rączka obudowy - - + + Type Typ - + Contained Object Handles Zaznaczony przedmiot zajmuje się - - + + UUID UUID - + Wake-up Type Typ budzenia - - + + SKU Number Numer SKU - + Family Rodzina - + Lock Zablokuj - + Boot-up State Stan rozruchu - + Power Supply State Stan zasilania - + Thermal State Stan termiczny - + Security Status Status bezpieczeństwa - + OEM Information Informacje OEM - + Height Wysokość - + Number Of Power Cords Liczba kabli zasilających - + Contained Elements Zawarte elementy - + Location Położenie - + Error Correction Type Typ korekcji błędów - + Maximum Capacity Pojemność maksymalna - - + + Error Information Handle Uchwyt informacji o błędzie - + Number Of Devices Liczba urządzeń - + BIOS ROMSIZE BIOS ROMSIZE - + Release date Data wydania - + Board name Nazwa płyty - + SMBIOS Version Wersja SMBIOS - + Language Description Format Format opisu języka - + Installable Languages Języki do zainstalowania - + Currently Installed Language Aktualnie zainstalowany język - + BD Address Adres BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Typ pakietu - + Link policy Polityka linków - + Link mode Tryb łącza - - + + Class Klasa - + Service Classes Klasy usług - + Device Class Klasa urządzenia - + HCI Version Wersja HCI - + LMP Version Wersja LMP - + Subversion Podwersja - + Device Urządzenie - - + + Serial ID Numer seryjny - + product produkt - + description opis - + Powered Zasilany - + Discoverable Wykrywalne - + Pairable Parowanie - + Modalias Modalias - + Discovering Odkrywanie - + Driver Modules Moduły sterowników - - - + + + + + Device File Plik urządzenia - + Device Files Pliki urządzenia - - + + + Device Number Numer urządzenia - - Module Alias - Alias modułu - - - + Application Aplikacja - + status status - - + + + logical name nazwa logiczna - - + + ansiversion Wersja ansi - + CPU implementer Realizator CPU - + CPU architecture Architektura CPU - + CPU variant Wariant CPU - + CPU part Część CPU - + CPU revision Wersja CPU - + One Jeden - + Two Dwa - + Four Cztery - + Six Sześć - + Eight Osiem - + Ten Dziesięć - + Twelve Dwanaście - + Fourteen Czternaście - + Sixteen Szesnaście - + Eighteen Osiemnaście - + Twenty Dwadzieścia - + Twenty-two Dwadzieścia dwa - + Twenty-four Dwadzieścia cztery - + Twenty-six Dwadzieścia sześć - + Twenty-eight Dwadzieścia osiem - + Thirty Trzydzieści - + Thirty-two Trzydzieści dwa - + Thirty-four Trzydzieści cztery - + Thirty-six Trzydzieści sześć - + Thirty-eight Trzydzieści osiem - + Forty Czterdzieści - + Forty-two Czterdzieści dwa - + Forty-four Czterdzieści cztery - + Forty-six Czterdzieści sześć - + Forty-eight Czterdzieści osiem - + Fifty Pięćdziesiąt - + Fifty-two Pięćdziesiąt dwa - + Fifty-four Pięćdziesiąt cztery - + Fifty-six Pięćdziesiąt sześć - + Fifty-eight Pięćdziesiąt osiem - + Sixty Sześćdziesiąt - + Sixty-two Sześćdziesiąt dwa - + Sixty-four Sześćdziesiąt cztery - + Sixty-six Sześćdziesiąt sześć - + Sixty-eight Sześćdziesiąt osiem - + Seventy Siedemdziesiąt - + Seventy-two Siedemdziesiąt dwa - + Seventy-four Siedemdziesiąt cztery - + Seventy-six Siedemdziesiąt sześć - + Seventy-eight Siedemdziesiąt osiem - + Eighty Osiemdziesiąt - + Eighty-two Osiemdziesiąt-dwa - + Eighty-four Osiemdziesiąt-cztery - + Eighty-six Osiemdziesiąt-cześć - + Eighty-eight Osiemdziesiąt-osiem - + Ninety Dziewięćdziesiąt - + Ninety-two Dziewięćdziesiąt dwa - + Ninety-four Dziewięćdziesiąt cztery - + Ninety-six Dziewięćdziesiąt sześć - + Ninety-eight Dziewięćdziesiąt osiem - + One hundred Sto - + One hundred and Two Sto dwa - + One hundred and four Sto cztery - + One hundred and Six Sto sześć - + One hundred and Eight Sto osiem - + One hundred and Ten Sto dziesięć - + One hundred and Twelve Sto dwanaście - + One hundred and Fourteen Sto czernaście - + One hundred and Sixteen Sto szesnaście - + One hundred and Eighteen Sto osiemnaście - + One hundred and Twenty Sto dwadzieścia - + One hundred and Twenty-two Sto dwadzieścia-dwa - + One hundred and Twenty-four Sto dwadzieścia-cztery - + One hundred and Twenty-six Sto dwadzieścia-sześć - + One hundred and Twenty-eight Sto dwadzieścia-osiem - + One hundred and Ninety-two Sto dziewięćdziesiąt-dwa - + Two hundred and fifty-six Dwieście pięćdziesiąt-sześć @@ -2824,988 +3042,1084 @@ Wersja GLSL - - - + + + Unknown Nieznany - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Klasa sprzętu - - - - + + + + CPU Procesor - - - - + + + + No CPU found Nie znaleziono procesora - - - - + + + + Motherboard Płyta główna - - - - + + + + No motherboard found Nie znaleziono płyty głównej - - - - + + + + Memory Pamięć - - - - + + + + No memory found Nie znaleziono pamięci - - - - + + + + Storage Magazyn danych - - - - + + + + No disk found Nie znaleziono dysku - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Karta graficzna - - - - + + + + No GPU found Nie znaleziono GPU - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Nie znaleziono monitora - - - - - + + + + + Network Adapter Adapter sieciowy - - - - + + + + No network adapter found Nie znaleziono adaptera sieciowego - - - - - + + + + + Sound Adapter Adapter dźwięku - - - - + + + + No audio device found Nie znaleziono urządzenia audio - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Nie znaleziono urządzenia Bluetooth - - - - + + + + Other PCI Devices Inne urządzenia PCI - - - - + + + + No other PCI devices found Nie znaleziono innych urządzeń PCI - - - - + + + + Power Zasilanie - - - - + + + + No battery found Nie znaleziono baterii - - - - - + + + + + Keyboard Klawiatura - - - - + + + + No keyboard found Nie znaleziono klawiatury - - - - - + + + + + Mouse Myszka - - - - + + + + No mouse found Nie znaleziono myszy - - - - - - + + + + + + Printer Drukarka - - - - + + + + No printer found Nie znaleziono drukarki - - - - + + + + Camera Aparat - - - - + + + + No camera found Nie znaleziono aparatu - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Nie znaleziono dysku CD-ROM - - - - - + + + + + Other Devices Inne urządzenia - - - - + + + + No other devices found Nie znaleziono innych urządzeń - + Array Handle Szyk rączek - + Form Factor Współczynnik kształtu - + Set Ustaw - + Bank Locator Lokalizator banków - + Type Detail Wpisz szczegół - + Part Number Numer części - + Rank Ranga - + Memory Technology Technologia pamięci - + Memory Operating Mode Capability Możliwość trybu pracy pamięci - + Firmware Version Wersja firmware - + Module Manufacturer ID ID producenta modułu - + Module Product ID ID produktu modułu - + Memory Subsystem Controller Manufacturer ID ID producenta kontrolera pamięci podsystemu - + Memory Subsystem Controller Product ID ID kontrolera pamięci subsystemu - + Non-Volatile Size Rozmiar Zmiennej nie-ulotnej - + Volatile Size Rozmiar zmiennej ulotnej - + Cache Size Rozmiar pamięci podręcznej - + Logical Size Rozmiar logiczny - - - - - + + + + + inch cal - + Date Data - + ioport portio - + network sieć - - + battery bateria - + native-path ścieżka-natywna - + power supply źródło zasilania - + updated zaktualizowany - + has history ma historię - + has statistics ma statystyki - + rechargeable zdolny do ponownego naładowania - + state stan - + warning-level poziom-ostrzeżenia - + energy energia - + energy-empty pusta-bateria - + energy-full pełna-bateria - + energy-full-design poziom pełnej baterii podany przed producenta - + energy-rate wskaźnik-energii - + voltage Napięcie - + percentage Procent - + technology technologia - + icon-name nazwa-ikony - + online Połączony - + daemon-version wersja-daemon - + on-battery na-baterii - + lid-is-closed pokrywa-zamknięta - + lid-is-present pokrywa-jest-obecna - + critical-action akcja-krytyczna - + copies kopii - + job-cancel-after anuluj-zadanie-po - + job-hold-until wstrzymaj-zadanie-dopóki - + job-priority priorytet-pracy - + marker-change-time marker-zmiany-czasu - + number-up numer-w-górę - + orientation-requested wymagana-orientacja - + print-color-mode tryb-kolorowego-wydruku - + printer-is-accepting-jobs drukarka-przyjmuje-zadania - + printer-is-shared drukarka-jest-udostępniona - + printer-is-temporary drukarka-jest-tymczasowa - + printer-make-and-model drukarka-producent-i-model - + printer-state-change-time czas-zmiany-stanu-drukarki - + printer-state-reasons stan-drukarki - + printer-type typ-drukarki - + printer-uri-supported drukarka-uri-wspierane - + sides strony - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info Informacje o szynie - + logicalsectorsize Rozmiar sektora logicznego - + sectorsize Rozmiar sektora - + guid guid - + Geometry (Logical) Geometria (logiczna) - - + + Device Manager Menedżer urządzeń - + Device Manager is a handy tool for viewing hardware information and managing the devices. Menedżer urządzeń to przydatne narzędzie do przeglądania informacji o sprzęcie i zarządzania urządzeniami. - + New drivers available! Install or update them now. Nowe sterowniki są dostępne do pobrania! Zaktualizuj lub zainstaluj je teraz. - + + View + + + + Include subfolders Włącznie z podkatalogami - + Search for drivers in this path Szukaj sterowników w tej ścieżce - - - - Device Name - Nazwa urządzenia - - - - Version Available - Wersja dostępna - - - - - Size - Rozmiar - - - - - Status - Status - - - - - Action - Działanie - - - - New Version - Nowa wersja - - - - Current Version - Bieżąca wersja - - - - Missing drivers (%1) - Brakujące sterowniki (%1) - - - - Outdated drivers (%1) - Nieaktualne sterowniki (%1) - - - - Up-to-date drivers (%1) - Aktualne sterowniki (%1) - - - + %1 driver updates available %1 sterowników może zostać zaktualizowanych - - + + Time checked: %1 Data sprawdzania: %1 - + Downloading drivers for %1... Pobieranie sterowników dla %1... - + Download speed: %1 Downloaded %2/%3 Prędkość pobierania: %1 Pobrano %2/%3 - + Installing drivers for %1... Instalowanie sterowników dla %1... - + %1 drivers installed, %2 drivers failed %1 sterowników zainstalowano, %2 napotkało błąd - + %1 drivers installed Zainstalowano %1 sterowników - + Failed to install drivers Nie udało się zainstalować sterowników - + Network error. Reconnecting... Błąd sieci. Próba ponownego połączenia... - + Download speed: %1 Prędkość pobierania %1 - + Your drivers are up to date Wszystkie sterowniki są aktualne - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot uruchom ponownie - + Please %1 for the installed drivers to take effect Prosimy %1, aby zastosować zmiany - - + + View backup path + + + + + Backup All + + + + + submit feedback prześlij opinię - + Please try again or %1 to us Spróbuj ponownie lub %1 do nas - + Install All Zainstaluj wszystko - - + + Scan Again Skanuj ponownie - + Cancel Anuluj - + Scanning hardware device drivers, please wait... Skanowanie sterowników urządzeń, proszę czekać... - - + + Scanning %1 Skanowanie %1 - + Scan failed Skanowanie nie powiodło się - + Network unavailable Sieć niedostępna - + Please check your network connection Sprawdź swoje połączenie sieciowe - + Please scan again or %1 to us Zeskanuj ponownie lub %1 do nas - + You are installing a driver, which will be interrupted if you exit. Wyjście przerwie instalację sterownika. - + + + Are you sure you want to exit? Czy na pewno chcesz wyjść? - + + + Exit button Wyjście - + + + Cancel button Anuluj - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Adapter Bluetooth - - + + Imaging device Urządzenie przechwytywania - + Display adapter Karta graficzna - + Sound card Karta dźwiękowa - + Network adapter Adapter sieciowy - + Wireless network adapter Adapter sieci bezprzewodowej - + Installation successful Zainstalowano pomyślnie - + Installation failed Instalacja nie powiodła się - + Downloading Pobieranie - + Installing Instalowanie - + Not installed Nie zainstalowano - + Out-of-date Nieaktualny - + Waiting Oczekiwanie - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Nieznany błąd - + Network error Błąd sieci - + Canceled Anulowano - + Failed to get driver files Nie udało się zdobyć plików sterownika - + Update Zaktualizuj - + + Backup + + + + + Restore + + + + Install Zainstaluj @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Wyłącz - + Refresh Odśwież - + Export Eksportuj - + Update drivers Zaktualizuj sterowniki - + Uninstall drivers Odinstaluj sterowniki - + Allow it to wake the computer Zezwól urządzeniu na obudzenia komputera - - + + Enable Włącz @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Odśwież - + Export Eksportuj - + Copy Kopiuj - + Disable Wyłącz - + Unavailable Niedostępne @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Wybierz katalog lokalny @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Wczytywanie... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_pt.ts b/deepin-devicemanager/translations/deepin-devicemanager_pt.ts index 05ca81b80..bd9e3d7e4 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_pt.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_pt.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + Aceitar + + + + Feedback + + + + OK button Aceitar @@ -11,7 +23,7 @@ CmdButtonWidget - + More Mais @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Mais - + Collapse Recolher @@ -51,14 +63,14 @@ DetailTreeView - - + + More Mais - - + + Collapse Recolher @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Desativar - + Unavailable Indisponível @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Nome do dispositivo - - + + Name Nome - - + + Vendor Fabricante - - Model - Modelo + + Chip + Chip - - Version - Versão + + Capabilities + Recursos - - Bus Info - Bus Info + + + Module Alias + Módulo Alias - - Chip - Chip + + + Physical ID + ID Física - - Capabilities - Recursos + + SysFS_Path + - - Clock - Frequência + + Description + Descrição + + + + Revision + - - Width - Largura + + KernelModeDriver + - + Memory Address Endereço de memória - + IRQ IRQ - + Unavailable Indisponível - + Disable Desativar @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nome - + Vendor Fabricante - + Model Modelo @@ -173,17 +192,17 @@ DeviceBios - + Vendor Fabricante - + Version Versão - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nome - + Vendor Fabricante - + Version Versão - + Model Modelo - + + Module Alias + Módulo Alias + + + + Physical ID + ID Física + + + Speed Velocidade - + Maximum Power Energia máxima - + Driver Version Versão do controlador - + Driver Controlador - + Capabilities Recursos - + Bus Info Bus Info - + Logical Name Nome lógico - + MAC Address Endereço MAC - + Unavailable Indisponível - + Disable Desativar @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versão - + Bus Info Bus Info - + Capabilities Recursos - + Driver Controlador - + Maximum Power Energia máxima - + Speed Velocidade - + + Module Alias + Módulo Alias + + + + Physical ID + ID Física + + + Unavailable Indisponível - + Disable Desativar @@ -322,7 +361,7 @@ DeviceComputer - + Name Nome @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nome - - + + Vendor Fabricante - + CPU ID ID da CPU - + Core ID ID do núcleo - + Threads Threads - - Current Speed - Velocidade atual - - - + BogoMIPS BogoMIPS - - + + Architecture Arquitetura - + CPU Family Família da CPU - + Model Modelo - - + + Processor Processador - + Core(s) Núcleo(s) - + Virtualization Virtualização - + Flags Flags - + Extensions Extensões - + L3 Cache Cache L3 - + L2 Cache Cache L2 - + L1i Cache Cache L1i - + L1d Cache Cache L1d - + Stepping Stepping - + Speed Velocidade - + + + Max Speed Velocidade máxima @@ -447,132 +483,127 @@ DeviceGpu - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versão - + Graphics Memory Memória gráfica - + + Module Alias + Módulo Alias + + + Physical ID ID Física - + Memory Address Endereço de memória - + IO Port Porta IO - + Bus Info Bus Info - + Maximum Resolution Resolução máxima - + Minimum Resolution Resolução mínima - + Current Resolution Resolução atual - + Driver Controlador - + Description Descrição - - Clock - Frequência - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output Saída do monitor - + Capabilities Recursos - + IRQ IRQ - - Width - Largura - - - + Unavailable Indisponível @@ -580,62 +611,72 @@ DeviceImage - + Name Nome - + Vendor Fabricante - + Version Versão - + Model Modelo - + Bus Info Bus Info - + + Module Alias + Módulo Alias + + + + Physical ID + ID Física + + + Speed Velocidade - + Maximum Power Energia máxima - + Driver Controlador - + Capabilities Recursos - + Serial Number Número de série - + Unavailable Indisponível - + Disable Desativar @@ -643,62 +684,72 @@ DeviceInput - + Name Nome - + Vendor Fabricante - + Model Modelo - + Interface Interface - + Bus Info Bus Info - + + Module Alias + Módulo Alias + + + + Physical ID + ID Física + + + Speed Velocidade - + Maximum Current Corrente máxima - + Driver Controlador - + Capabilities Recursos - + Version Versão - + Unavailable Indisponível - + Disable Desativar @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Visão Geral - - - + + + CPU CPU - - + + CPU quantity Quantidade de CPU - - + + Motherboard Motherboard - - + + Memory Memória - - + + Display Adapter Adaptador gráfico - - + + Sound Adapter Adaptador de som - - + + Storage Armazenamento - - + + Other PCI Devices Outros dispositivos PCI - - + + Battery Bateria - - + + Bluetooth Bluetooth - - + + Network Adapter Adaptador de rede - - + + Mouse Rato - - + + Keyboard Teclado - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Impressora - - + + Camera Câmara - - + + Other Devices Other Input Devices Outros dispositivos - - - + + + Device Dispositivo - - - + + + OS SO @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nome - - + + Vendor Fabricante - - + + Size Tamanho - - + + Type Tipo - - + + Speed Velocidade - + Total Width Largura Total - + Locator Localizador - + Serial Number Número de série - + Configured Voltage Voltagem configurada - + Maximum Voltage Voltagem máxima - + Minimum Voltage Voltagem mínima - + Configured Speed Velocidade configurada - + Data Width Largura dos dados @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nome - + Vendor Fabricante - + Type Tipo - + Display Input Entrada do monitor - + Interface Type Tipo de interface - + Support Resolution Resolução de suporte - + Current Resolution Resolução atual - + Display Ratio Formato - + Primary Monitor Monitor principal - + Size Tamanho - + Serial Number Número de série - - - Product Date - Data do produto - DeviceNetwork - + + Name Nome - + + Vendor Fabricante - + + Type Tipo - + Version Versão - + Bus Info Bus Info - + Capabilities Recursos - + Driver Controlador - + Driver Version Versão do controlador - + + Module Alias + Módulo Alias + + + + Physical ID + ID Física + + + Maximum Rate Taxa máxima - + Negotiation Rate Taxa de negociação - + Port Porta - + Multicast Multicast - + Link Ligação - + Latency Latência - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Difusão - + Auto Negotiation Auto negociação - - Clock - Frequência - - - - Width - Largura - - - + Memory Address Endereço de memória - + IRQ IRQ - + MAC Address Endereço MAC - + Logical Name Nome lógico - + Unavailable Indisponível - + Disable Desativar @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nome - + Vendor Fabricante - + Model Modelo - + Bus Info Bus Info - + Version Versão - + Input/Output Entrada/Saída - + Memory Memória - + IRQ IRQ - + Latency Latência - - Clock - Frequência - - - - Width - Largura - - - + Driver Controlador - + Capabilities Recursos @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versão - + Bus Info Bus Info - + Capabilities Recursos - + Driver Controlador - + Maximum Power Energia máxima - + Speed Velocidade - + Serial Number Número de série - + Unavailable Indisponível - + Disable Desativar @@ -1252,82 +1291,82 @@ DevicePower - + Name Nome - + Model Modelo - + Vendor Fabricante - + Serial Number Número de série - + Type Tipo - + Status Estado - + Capacity Capacidade - + Voltage Voltagem - + Slot Conector - + Design Capacity Capacidade do projeto - + Design Voltage Voltagem do projeto - + SBDS Version Versão do SBDS - + SBDS Serial Number Número de série do SBDS - + SBDS Manufacture Date Data de fabrico do SBDS - + SBDS Chemistry Química do SBDS - + Temperature Temperatura @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nome - + Model Modelo - + Vendor Fabricante - + Serial Number Número de série - + Shared Partilhada - + URI URI - + Status Estado - + Interface Type Tipo de interface - + Disable Desativar @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Modelo - - - - + + Vendor Fabricante - - + + Media Type Tipo de suporte - - + + + Size Tamanho - + + + Name + Nome + + + Version Versão - + Capabilities Recursos - + + + Module Alias + Módulo Alias + + + + + Physical ID + ID Física + + + Firmware Version Versão do firmware - + Speed Velocidade - + Description Descrição - + Serial Number Número de série - + Interface Interface - + Rotation Rate Taxa de rotação - + Unavailable Indisponível @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Selecione um controlador para atualizar - + No drivers found in this folder Nenhum controlador encontrado nesta pasta @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... A carregar informações do dispositivo de áudio... - + Loading BIOS Info... A carregar informações do BIOS... - + Loading CD-ROM Info... A carregar informações do CD-ROM... - + Loading Operating System Info... A carregar informações do sistema operativo... - + Loading CPU Info... A carregar informações da CPU... - + Loading Other Devices Info... A carregar informações de outros dispositivos... - + Loading Power Info... A carregar informação de energia... - + Loading Printer Info... A carregar informações da impressora... - + Loading Mouse Info... A carregar informações do rato... - + Loading Network Adapter Info... A carregar informações do adaptador de rede... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Desativar - + Unavailable Indisponível @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Desativar - + Unavailable Indisponível @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Info dispositivo - + Display shortcuts Mostrar atalhos - + Close Fechar - + Help Ajuda - + Copy Copiar - + System Sistema - + Export Exportar - + Refresh Atualizar - + Device Manager Gestor de Dispositivos - + Hardware Equipamento - + Drivers Controladores - + Monitor Monitor - + Overview Visão Geral - + Display Adapter Adaptador gráfico - + CPU CPU - + Network Adapter Adaptador de rede - + Battery Bateria @@ -1639,191 +1691,377 @@ PageDetail - + More Mais + + PageDriverBackupInfo + + + + Name + Nome + + + + + Current Version + Versão atual + + + + + Driver Platform Version + + + + + Status + Estado + + + + Action + Ação + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating A atualizar - - - + + + Cancel button Cancelar - + Next Seguinte - + Warning Aviso - + The device will be unavailable after the driver uninstallation O dispositivo ficará indisponível depois da desinstalação do controlador - + Uninstall button Desinstalar - + Uninstalling A desinstalar - + Update successful Atualização bem sucedida - + Uninstallation successful Desinstalação bem sucedida - + Update failed Falha ao atualizar - + Uninstallation failed Falha ao desinstalar - + OK button Aceitar - + Next button Seguinte - + The selected folder does not exist, please select again A pasta selecionada não existe, selecione novamente - + Update button Atualizar - + Previous button Anterior - + Broken package Pacote quebrado - + Unmatched package architecture Arquitetura do pacote não correspondente - - + + The selected file does not exist, please select again O ficheiro selecionado não existe, selecione novamente - + It is not a driver Não é um controlador - + Unable to install - no digital signature Não foi possível instalar - sem assinatura digital - + Unknown error Erro desconhecido - + The driver module was not found O controlador não foi encontrado - + Invalid module format Formato de módulo inválido - + The driver module has dependencies O módulo do controlador têm dependências - PageListView + PageDriverInstallInfo - - Refresh - Atualizar + + + + Device Name + Nome do dispositivo - + + Version Available + Versão disponível + + + + + Size + Tamanho + + + + + Status + Estado + + + + + Action + Ação + + + + New Version + Nova versão + + + + Current Version + Versão atual + + + + Missing drivers (%1) + Controladores em falta (%1) + + + + Outdated drivers (%1) + Controladores desatualizados (%1) + + + + Up-to-date drivers (%1) + Controladores atualizados (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + Aceitar + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nome + + + + Current Version + Versão atual + + + + Backup Version + + + + + Action + Ação + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Atualizar + + + Export Exportar - + Overview Visão Geral + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Falha ao ativar o dispositivo - + Failed to disable the device Falha ao desativar o dispositivo - + Failed to disable it: unable to get the device SN Falha ao desativar: não foi possível obter o SN do dispositivo - + Update Drivers Atualizar Controladores - + Uninstall Drivers Desinstalar Controladores @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Atualizar - + Export Exportar - + Copy Copiar - + Overview Visão Geral @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Atualizar - + Export Exportar - + Copy Copiar - - + + Enable Ativar - + Update drivers Atualizar controladores - + Uninstall drivers Desinstalar controladores - + Allow it to wake the computer Permitir que ative o computador - + Disable Desativar - - + + Failed to disable it: unable to get the device SN Falha ao desativar: não foi possível obter o SN do dispositivo - + Failed to disable the device Falha ao desativar o dispositivo - + Failed to enable the device Falha ao ativar o dispositivo - + Update Drivers Atualizar Controladores - + Uninstall Drivers Desinstalar Controladores @@ -1924,867 +2162,847 @@ QObject - + SubVendor SubFabricante - + SubDevice SubDispositivo - + Driver Controlador - + Driver Status Estado do controlador - + Driver Activation Cmd Cmd de ativação do controlador - - + - + + Config Status Estado de configuração - - - - - - - physical id - id física - - - + latency latência - + Phys Phys - + Sysfs Sysfs - + Handlers Manipuladores - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Modelo - - - - Vendor - Fabricante - - - + Version Versão - - + + + Bus Bus - - + + BIOS Information Informação do BIOS - - + + Base Board Information Informação da placa base - - + + System Information Informação do Sistema - - + + Chassis Information Informação do chassis - - + + Physical Memory Array Conjunto de memória física - + Release Date Data de lançamento - + Address Endereço - + Runtime Size Tamanho do tempo de execução - + ROM Size Tamanho da ROM - + Characteristics Características - + BIOS Revision Revisão do BIOS - + Firmware Revision Revisão do Firmware - - + + Product Name Nome do produto - - - + + + Serial Number Número de série - - - + + + Asset Tag Etiqueta de identificação - - + + Features Recursos - + Location In Chassis Localização no chassis - + Chassis Handle Identificador do chassis - - + + Type Tipo - + Contained Object Handles Identificadores de objetos contidos - - + + UUID UUID - + Wake-up Type Tipo de retomar - - + + SKU Number Número SKU - + Family Família - + Lock Bloquear - + Boot-up State Estado do arranque - + Power Supply State Estado da fonte de alimentação - + Thermal State Estado térmico - + Security Status Estado da segurança - + OEM Information Informação OEM - + Height Altura - + Number Of Power Cords Número de cabos de alimentação - + Contained Elements Elementos contidos - + Location Localização - + Error Correction Type Tipo de correcção de erro - + Maximum Capacity Capacidade máxima - - + + Error Information Handle Identificador de informações de erro - + Number Of Devices Número de dispositivos - + BIOS ROMSIZE TAMANHO ROM BIOS - + Release date Data de lançamento - + Board name Nome da placa - + SMBIOS Version Versão da SMBIOS - + Language Description Format Formato da descrição do idioma - + Installable Languages Idiomas instaláveis - + Currently Installed Language Idioma atualmente instalado - + BD Address Endereço BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Tipo de pacote - + Link policy Política de ligação - + Link mode Modo de ligação - - + + Class Classe - + Service Classes Classes de serviço - + Device Class Classe do dispositivo - + HCI Version Versão de HCI - + LMP Version Versão de LMP - + Subversion Subversão - + Device Dispositivo - - + + Serial ID ID série - + product produto - + description descrição - + Powered Alimentado - + Discoverable Detetável - + Pairable Emparelhável - + Modalias Modalias - + Discovering Descobrindo - + Driver Modules Módulos de controlador - - - + + + + + Device File Ficheiro do dispositivo - + Device Files Ficheiros do dispositivo - - + + + Device Number Número do dispositivo - - Module Alias - Módulo Alias - - - + Application Aplicação - + status estado - - + + + logical name nome lógico - - + + ansiversion versãoansi - + CPU implementer Implementador da CPU - + CPU architecture Arquitetura da CPU - + CPU variant Variante da CPU - + CPU part Peça de CPU - + CPU revision Revisão da CPU - + One Um - + Two Dois - + Four Quatro - + Six Seis - + Eight Oito - + Ten Dez - + Twelve Doze - + Fourteen Catorze - + Sixteen Dezasseis - + Eighteen Dezoito - + Twenty Vinte - + Twenty-two Vinte e dois - + Twenty-four Vinte e quatro - + Twenty-six Vinte e seis - + Twenty-eight Vinte e oito - + Thirty Trinta - + Thirty-two Trinta e dois - + Thirty-four Trinta e quatro - + Thirty-six Trinta e seis - + Thirty-eight Trinta e oito - + Forty Quarenta - + Forty-two Quarenta e dois - + Forty-four Quarenta e quatro - + Forty-six Quarenta e seis - + Forty-eight Quarenta e oito - + Fifty Cinquenta - + Fifty-two Cinquenta e dois - + Fifty-four Cinquenta e quatro - + Fifty-six Cinquenta e seis - + Fifty-eight Cinquenta e oito - + Sixty Sessenta - + Sixty-two Sessenta e dois - + Sixty-four Sessenta e quatro - + Sixty-six Sessenta e seis - + Sixty-eight Sessenta e oito - + Seventy Setenta - + Seventy-two Setenta e dois - + Seventy-four Setenta e quatro - + Seventy-six Setenta e seis - + Seventy-eight Setenta e oito - + Eighty Oitenta - + Eighty-two Oitenta e dois - + Eighty-four Oitenta e quatro - + Eighty-six Oitenta e seis - + Eighty-eight Oitenta e oito - + Ninety Noventa - + Ninety-two Noventa e dois - + Ninety-four Noventa e quatro - + Ninety-six Noventa e seis - + Ninety-eight Noventa e oito - + One hundred Cem - + One hundred and Two Cento e dois - + One hundred and four Cento e quatro - + One hundred and Six Cento e seis - + One hundred and Eight Cento e oito - + One hundred and Ten Cento e dez - + One hundred and Twelve Cento e doze - + One hundred and Fourteen Cento e catorze - + One hundred and Sixteen Cento e dezasseis - + One hundred and Eighteen Cento e dezoito - + One hundred and Twenty Cento e vinte - + One hundred and Twenty-two Cento e vinte e dois - + One hundred and Twenty-four Cento e vinte e quatro - + One hundred and Twenty-six Cento e vinte e seis - + One hundred and Twenty-eight Cento e vinte e oito - + One hundred and Ninety-two Cento e noventa e dois - + Two hundred and fifty-six Duzentos e cinquenta e seis @@ -2824,1028 +3042,1124 @@ Versão da GLSL - - - + + + Unknown Desconhecido - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Classe de hardware - - - - + + + + CPU CPU - - - - + + + + No CPU found Nenhuma CPU encontrada - - - - + + + + Motherboard Motherboard - - - - + + + + No motherboard found Nenhuma motherboard encontrada - - - - + + + + Memory Memória - - - - + + + + No memory found Nenhuma memória encontrada - - - - + + + + Storage Armazenamento - - - - + + + + No disk found Nenhum disco encontrado - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Adaptador gráfico - - - - + + + + No GPU found Nenhuma GPU encontrada - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Nenhum monitor encontrado - - - - - + + + + + Network Adapter Adaptador de rede - - - - + + + + No network adapter found Nenhum adaptador de rede encontrado - - - - - + + + + + Sound Adapter Adaptador de som - - - - + + + + No audio device found Nenhum dispositivo áudio encontrado - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Nenhum dispositivo Bluetooth encontrado - - - - + + + + Other PCI Devices Outros Dispositivos PCI - - - - + + + + No other PCI devices found Nenhum dispositivo PCI encontrado - - - - + + + + Power Energia - - - - + + + + No battery found Nenhuma bateria encontrada - - - - - + + + + + Keyboard Teclado - - - - + + + + No keyboard found Nenhum teclado encontrado - - - - - + + + + + Mouse Rato - - - - + + + + No mouse found Nenhum rato encontrado - - - - - - + + + + + + Printer Impressora - - - - + + + + No printer found Nenhuma impressora encontrada - - - - + + + + Camera Câmara - - - - + + + + No camera found Nenhuma câmara encontrada - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Nenhum CD-ROM encontrado - - - - - + + + + + Other Devices Outros dispositivos - - - - + + + + No other devices found Nenhum dispositivo encontrado - + Array Handle Identificador matriz - + Form Factor Fator de forma - + Set Conjunto - + Bank Locator Localizador de bancos - + Type Detail Detalhes do tipo - + Part Number Número da peça - + Rank Classificação - + Memory Technology Tecnologia de memória - + Memory Operating Mode Capability Capacidade do modo de funcionamento da memória - + Firmware Version Versão do firmware - + Module Manufacturer ID ID do fabricante do módulo - + Module Product ID ID do produto do módulo - + Memory Subsystem Controller Manufacturer ID ID do fabricante do controlador do subsistema da memória - + Memory Subsystem Controller Product ID ID do produto controlador do subsistema da memória - + Non-Volatile Size Tamanho não volátil - + Volatile Size Tamanho volátil - + Cache Size Tamanho da cache - + Logical Size Tamanho lógico - - - - - + + + + + inch pol - + Date Data - + ioport ioport - + network rede - - + battery bateria - + native-path caminho-nativo - + power supply Fonte de alimentação - + updated atualizado - + has history tem histórico - + has statistics tem estatística - + rechargeable recarregável - + state estado - + warning-level nível-aviso - + energy energia - + energy-empty energia-vazia - + energy-full energia-total - + energy-full-design concepção-energia-total - + energy-rate energia-taxa - + voltage voltagem - + percentage percentagem - + technology tecnologia - + icon-name nome-ícone - + online online - + daemon-version versão-daemon - + on-battery a-bateria - + lid-is-closed tampa-está-fechada - + lid-is-present tampa-está-presente - + critical-action ação-crítica - + copies cópias - + job-cancel-after cancelar-trabalho-após - + job-hold-until manter-trabalho-até - + job-priority prioridade-trabalho - + marker-change-time tempo-mudar-marcador - + number-up numeração - + orientation-requested orientação-solicitada - + print-color-mode modo-cor-impressão - + printer-is-accepting-jobs impressora-está-aceitar-trabalhos - + printer-is-shared impressora-é-partilhada - + printer-is-temporary impressora-é-temporária - + printer-make-and-model fabricante e modelo da impressora - + printer-state-change-time tempo-mudar-estado-impressora - + printer-state-reasons razões-estado-impressora - + printer-type tipo-impressora - + printer-uri-supported impressora-uri-suportada - + sides lados - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info info bus - + logicalsectorsize tamanhosectorlógico - + sectorsize tamanhosector - + guid guid - + Geometry (Logical) Geometria(Lógica) - - + + Device Manager Gestor de Dispositivos - + Device Manager is a handy tool for viewing hardware information and managing the devices. O Gestor de Dispositivos é uma ferramenta útil para visualizar informações do equipamento e gerir os dispositivos. - + New drivers available! Install or update them now. - + + + + + View + - + Include subfolders Incluir subpastas - + Search for drivers in this path Procurar por controladores neste local - - - - Device Name - Nome do dispositivo + + %1 driver updates available + %1 atualizações de controladores disponíveis - - Version Available - Versão disponível + + + Time checked: %1 + Hora da verificação: %1 - - - Size - Tamanho + + Downloading drivers for %1... + A transferir controladores para %1... - - - Status - Estado + + Download speed: %1 Downloaded %2/%3 + - - - Action - Ação + + Installing drivers for %1... + A instalar controladores para %1... - - New Version - Nova versão + + %1 drivers installed, %2 drivers failed + - - Current Version - Versão atual + + %1 drivers installed + - - Missing drivers (%1) - Controladores em falta (%1) + + Failed to install drivers + Falha ao instalar controladores - - Outdated drivers (%1) - Controladores desatualizados (%1) + + Network error. Reconnecting... + - - Up-to-date drivers (%1) - Controladores atualizados (%1) + + Download speed: %1 + - - %1 driver updates available - %1 atualizações de controladores disponíveis + + Your drivers are up to date + - - - Time checked: %1 - Hora da verificação: %1 + + All drivers have been backed up + - - Downloading drivers for %1... - A transferir controladores para %1... + + + A total of %1 drivers, of which %2 have been backed up + - - Download speed: %1 Downloaded %2/%3 - + + You have %1 drivers that can be backed up, it is recommended to do so immediately + - - Installing drivers for %1... - A instalar controladores para %1... + + You have %1 drivers that can be backed up + - - %1 drivers installed, %2 drivers failed - + + Backing up the %1 driver, a total of %2 drivers + - - %1 drivers installed - + + Backing up: %1 + - - Failed to install drivers - Falha ao instalar controladores + + %1 drivers backed up, %2 drivers failed + - - Network error. Reconnecting... - + + Failed to backup drivers + - - Download speed: %1 - + + %1 drivers backed up + - - Your drivers are up to date - + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + - + + Restoring: %1 + + + + reboot reiniciar - + Please %1 for the installed drivers to take effect - + + + + + View backup path + + + + + Backup All + - - + + submit feedback - + - + Please try again or %1 to us - + - + Install All Instalar tudo - - + + Scan Again Verificar novamente - + Cancel Cancelar - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 A analisar %1 - + Scan failed - + - + Network unavailable Ligação não disponível - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? Sair? - + + + Exit button Sair - + + + Cancel button Cancelar - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Adaptador Bluetooth - - + + Imaging device - + - + Display adapter Adaptador do ecrã - + Sound card Placa de som - + Network adapter Adaptador de rede - + Wireless network adapter - + - + Installation successful - + - + Installation failed - + - + Downloading - + - + Installing - + - + Not installed - + - + Out-of-date - + - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error Erro desconhecido - + Network error - + - + Canceled - + - + Failed to get driver files - + - + Update Atualizar - + + Backup + + + + + Restore + + + + Install - + TableWidget - - + + Disable Desativar - + Refresh Atualizar - + Export Exportar - + Update drivers Atualizar controladores - + Uninstall drivers Desinstalar controladores - + Allow it to wake the computer Permitir que ative o computador - - + + Enable Ativar @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Atualizar - + Export Exportar - + Copy Copiar - + Disable Desativar - + Unavailable Indisponível @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Selecione uma pasta local @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... A carregar... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_pt_BR.ts b/deepin-devicemanager/translations/deepin-devicemanager_pt_BR.ts index 6d4aeb482..abd250265 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_pt_BR.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_pt_BR.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Mais @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFICAÇÃO_REDE - + EC_REINSTALL EC_REINSTALAÇÃO - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Mais - + Collapse Recolher @@ -51,14 +63,14 @@ DetailTreeView - - + + More Mais - - + + Collapse Recolher @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Desativar - + Unavailable Indisponível @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Nome do Dispositivo - - + + Name Nome - - + + Vendor Fabricante - - Model - Modelo + + Chip + Chip - - Version - Versão + + Capabilities + Recursos - - Bus Info - Informações do Barramento + + + Module Alias + Pseudônimo do Módulo - - Chip - Chip + + + Physical ID + ID Físico - - Capabilities - Recursos + + SysFS_Path + - - Clock - Frequência + + Description + Descrição + + + + Revision + - - Width - Largura + + KernelModeDriver + - + Memory Address Endereço de Memória - + IRQ IRQ - + Unavailable Indisponível - + Disable Desativar @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nome - + Vendor Fabricante - + Model Modelo @@ -173,17 +192,17 @@ DeviceBios - + Vendor Fabricante - + Version Versão - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nome - + Vendor Fabricante - + Version Versão - + Model Modelo - + + Module Alias + Pseudônimo do Módulo + + + + Physical ID + ID Físico + + + Speed Velocidade - + Maximum Power Potência Máxima - + Driver Version Versão do Driver - + Driver Driver - + Capabilities Recursos - + Bus Info Informações do Barramento - + Logical Name Nome Lógico - + MAC Address Endereço MAC - + Unavailable Indisponível - + Disable Desativar @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versão - + Bus Info Informações do Barramento - + Capabilities Recursos - + Driver Driver - + Maximum Power Potência Máxima - + Speed Velocidade - + + Module Alias + Pseudônimo do Módulo + + + + Physical ID + ID Físico + + + Unavailable Indisponível - + Disable Desativar @@ -322,7 +361,7 @@ DeviceComputer - + Name Nome @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nome - - + + Vendor Fabricante - + CPU ID ID da CPU - + Core ID ID do Núcleo - + Threads Threads - - Current Speed - Velocidade Atual - - - + BogoMIPS BogoMIPS - - + + Architecture Arquitetura - + CPU Family Família da CPU - + Model Modelo - - + + Processor Processador - + Core(s) Núcleo(s) - + Virtualization Virtualização - + Flags Bandeiras - + Extensions Extensões - + L3 Cache Cache L3 - + L2 Cache Cache L2 - + L1i Cache Cache L1i - + L1d Cache Cache L1d - + Stepping Stepping - + Speed Velocidade - + + + Max Speed Velocidade Máxima @@ -447,132 +483,127 @@ DeviceGpu - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versão - + Graphics Memory Memória Gráfica - + + Module Alias + Pseudônimo do Módulo + + + Physical ID ID Físico - + Memory Address Endereço de Memória - + IO Port Porta de E/S - + Bus Info Informações do Barramento - + Maximum Resolution Resolução Máxima - + Minimum Resolution Resolução Mínima - + Current Resolution Resolução Atual - + Driver Driver - + Description Descrição - - Clock - Frequência - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput Saída Digital - + Display Output Exibir Saída - + Capabilities Recursos - + IRQ IRQ - - Width - Largura - - - + Unavailable Indisponível @@ -580,62 +611,72 @@ DeviceImage - + Name Nome - + Vendor Fabricante - + Version Versão - + Model Modelo - + Bus Info Informações do Barramento - + + Module Alias + Pseudônimo do Módulo + + + + Physical ID + ID Físico + + + Speed Velocidade - + Maximum Power Potência Máxima - + Driver Driver - + Capabilities Recursos - + Serial Number Número de Série - + Unavailable Indisponível - + Disable Desativar @@ -643,62 +684,72 @@ DeviceInput - + Name Nome - + Vendor Fabricante - + Model Modelo - + Interface Interface - + Bus Info Informações do Barramento - + + Module Alias + Pseudônimo do Módulo + + + + Physical ID + ID Físico + + + Speed Velocidade - + Maximum Current Corrente máxima - + Driver Driver - + Capabilities Recursos - + Version Versão - + Unavailable Indisponível - + Disable Desativar @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Visão Geral - - - + + + CPU CPU - - + + CPU quantity Número de CPUs - - + + Motherboard Placa-mãe - - + + Memory Memória - - + + Display Adapter Placa de Vídeo - - + + Sound Adapter Placa de Som - - + + Storage Armazenamento - - + + Other PCI Devices Outros Dispositivos PCI - - + + Battery Bateria - - + + Bluetooth Bluetooth - - + + Network Adapter Placa de Rede - - + + Mouse Mouse - - + + Keyboard Teclado - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Impressora - - + + Camera Câmera - - + + Other Devices Other Input Devices Outros Dispositivos - - - + + + Device Dispositivo - - - + + + OS SO @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nome - - + + Vendor Fabricante - - + + Size Tamanho - - + + Type Tipo - - + + Speed Velocidade - + Total Width Largura Total - + Locator Localizador - + Serial Number Número de Série - + Configured Voltage Tensão Configurada - + Maximum Voltage Tensão Máxima - + Minimum Voltage Tensão Mínima - + Configured Speed Velocidade Configurada - + Data Width Largura de Dados @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nome - + Vendor Fabricante - + Type Tipo - + Display Input Exibir Entrada - + Interface Type Tipo de Interface - + Support Resolution Resolução de Suporte - + Current Resolution Resolução Atual - + Display Ratio Formato - + Primary Monitor Monitor Principal - + Size Tamanho - + Serial Number Número de Série - - - Product Date - Data do Produto - DeviceNetwork - + + Name Nome - + + Vendor Fabricante - + + Type Tipo - + Version Versão - + Bus Info Informações do Barramento - + Capabilities Recursos - + Driver Driver - + Driver Version Versão do Driver - + + Module Alias + Pseudônimo do Módulo + + + + Physical ID + ID Físico + + + Maximum Rate Taxa máxima - + Negotiation Rate Taxa de negociação - + Port Porta - + Multicast Multicast - + Link Link - + Latency Latência - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Transmissão - + Auto Negotiation Negociação Automática - - Clock - Frequência - - - - Width - Largura - - - + Memory Address Endereço de Memória - + IRQ IRQ - + MAC Address Endereço MAC - + Logical Name Nome Lógico - + Unavailable Indisponível - + Disable Desativar @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nome - + Vendor Fabricante - + Model Modelo - + Bus Info Informações do Barramento - + Version Versão - + Input/Output Entrada/Saída - + Memory Memória - + IRQ IRQ - + Latency Latência - - Clock - Frequência - - - - Width - Largura - - - + Driver Driver - + Capabilities Recursos @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nome - + Vendor Fabricante - + Model Modelo - + Version Versão - + Bus Info Informações do Barramento - + Capabilities Recursos - + Driver Driver - + Maximum Power Potência Máxima - + Speed Velocidade - + Serial Number Número de Série - + Unavailable Indisponível - + Disable Desativar @@ -1252,82 +1291,82 @@ DevicePower - + Name Nome - + Model Modelo - + Vendor Fabricante - + Serial Number Número de Série - + Type Tipo - + Status Status - + Capacity Capacidade - + Voltage Tensão - + Slot Slot - + Design Capacity Capacidade de Projeto - + Design Voltage Tensão de Projeto - + SBDS Version Versão do SBDS - + SBDS Serial Number Número de Série do SBDS - + SBDS Manufacture Date Data de Fabricação do SBDS - + SBDS Chemistry Química do SBDS - + Temperature Temperatura @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nome - + Model Modelo - + Vendor Fabricante - + Serial Number Número de Série - + Shared Compartilhado - + URI URI - + Status Status - + Interface Type Tipo de Interface - + Disable Desativar @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Modelo - - - - + + Vendor Fabricante - - + + Media Type Tipo de Mídia - - + + + Size Tamanho - + + + Name + Nome + + + Version Versão - + Capabilities Recursos - + + + Module Alias + Pseudônimo do Módulo + + + + + Physical ID + ID Físico + + + Firmware Version Versão do Firmware - + Speed Velocidade - + Description Descrição - + Serial Number Número de Série - + Interface Interface - + Rotation Rate Taxa de Rotação - + Unavailable Indisponível @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Selecione um driver para atualizar - + No drivers found in this folder Não há drivers nesta pasta @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Carregando as Informações do Dispositivo de Áudio... - + Loading BIOS Info... Carregando as Informações da BIOS... - + Loading CD-ROM Info... Carregando as Informações do CD-ROM... - + Loading Operating System Info... Carregando as Informações do Sistema Operacional... - + Loading CPU Info... Carregando as Informações da CPU... - + Loading Other Devices Info... Carregando as Informações de Outros Dispositivos... - + Loading Power Info... Carregando as Informações de Energia... - + Loading Printer Info... Carregando as Informações da Impressora... - + Loading Mouse Info... Carregando as Informações do Mouse... - + Loading Network Adapter Info... Carregando as Informações da Placa de Rede... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Desativar - + Unavailable Indisponível @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Desativar - + Unavailable Indisponível @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Informações do Dispositivo - + Display shortcuts Exibir atalhos - + Close Fechar - + Help Ajuda - + Copy Copiar - + System Sistema - + Export Exportar - + Refresh Atualizar - + Device Manager Gerenciador de Dispositivos - + Hardware Máquina - + Drivers Drivers - + Monitor Monitor - + Overview Visão Geral - + Display Adapter Placa de Vídeo - + CPU CPU - + Network Adapter Placa de Rede - + Battery Bateria @@ -1639,191 +1691,377 @@ PageDetail - + More Mais + + PageDriverBackupInfo + + + + Name + Nome + + + + + Current Version + Versão Atual + + + + + Driver Platform Version + + + + + Status + Status + + + + Action + Ações + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Atualizando - - - + + + Cancel button Cancelar - + Next Próximo - + Warning Aviso - + The device will be unavailable after the driver uninstallation O dispositivo ficará indisponível depois da desinstalação do driver - + Uninstall button Desinstalar - + Uninstalling Desinstalando - + Update successful Atualizado com sucesso - + Uninstallation successful Desinstalado com sucesso - + Update failed A atualização falhou - + Uninstallation failed A desinstalação falhou - + OK button OK - + Next button Próximo - + The selected folder does not exist, please select again A pasta selecionada não existe, por favor, selecione novamente - + Update button Atualizar - + Previous button Anterior - + Broken package Pacote corrompido - + Unmatched package architecture Arquitetura do pacote não correspondente - - + + The selected file does not exist, please select again O arquivo selecionado não existe, por favor, selecione novamente - + It is not a driver Não é um driver - + Unable to install - no digital signature Não é possível instalar - assinatura digital não encontrada - + Unknown error Erro desconhecido - + The driver module was not found O módulo do driver não foi encontrado - + Invalid module format Formato de módulo inválido - + The driver module has dependencies O módulo do driver tem dependências - PageListView + PageDriverInstallInfo - - Refresh - Atualizar + + + + Device Name + Nome do Dispositivo - + + Version Available + Versão Disponível + + + + + Size + Tamanho + + + + + Status + Status + + + + + Action + Ações + + + + New Version + Nova Versão + + + + Current Version + Versão Atual + + + + Missing drivers (%1) + Drivers faltando (%1) + + + + Outdated drivers (%1) + Drivers desatualizados (%1) + + + + Up-to-date drivers (%1) + Drivers atualizados (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nome + + + + Current Version + Versão Atual + + + + Backup Version + + + + + Action + Ações + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Atualizar + + + Export Exportar - + Overview Visão Geral + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Falha ao ativar o dispositivo - + Failed to disable the device Falha ao desativar o dispositivo - + Failed to disable it: unable to get the device SN Falha em desabilitar: não foi possível obter o SN do dispositivo - + Update Drivers Atualizar drivers - + Uninstall Drivers Desinstalar drivers @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Atualizar - + Export Exportar - + Copy Copiar - + Overview Visão Geral @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Atualizar - + Export Exportar - + Copy Copiar - - + + Enable Ativar - + Update drivers Atualizar drivers - + Uninstall drivers Desinstalar drivers - + Allow it to wake the computer Permitir despertar o computador - + Disable Desativar - - + + Failed to disable it: unable to get the device SN Falha em desabilitar: não foi possível obter o SN do dispositivo - + Failed to disable the device Falha ao desativar o dispositivo - + Failed to enable the device Falha ao ativar o dispositivo - + Update Drivers Atualizar drivers - + Uninstall Drivers Desinstalar drivers @@ -1924,867 +2162,847 @@ QObject - + SubVendor Subfabricante - + SubDevice Subdispositivo - + Driver Driver - + Driver Status Status do Driver - + Driver Activation Cmd Cmd de Ativação do Driver - - + - + + Config Status Status da Configuração - - - - - - - physical id - id físico - - - + latency latência - + Phys Phys - + Sysfs Sysfs - + Handlers Controladores - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - Modelo - - - - Vendor - Fabricante - - - + Version Versão - - + + + Bus Barramento - - + + BIOS Information Informações da BIOS - - + + Base Board Information Informações da Placa de Base - - + + System Information Informações do Sistema - - + + Chassis Information Informações do Chassi - - + + Physical Memory Array Conjunto de Memória Física - + Release Date Data de Lançamento - + Address Endereço - + Runtime Size Tamanho do Tempo de Execução - + ROM Size Tamanho da ROM - + Characteristics Características - + BIOS Revision Revisão da BIOS - + Firmware Revision Revisão do Firmware - - + + Product Name Nome do Produto - - - + + + Serial Number Número de Série - - - + + + Asset Tag Etiqueta de Recurso - - + + Features Recursos - + Location In Chassis Localização no Chassi - + Chassis Handle Identificador do Chassi - - + + Type Tipo - + Contained Object Handles Identificador de Objetos Contidos - - + + UUID UUID - + Wake-up Type Tipo de Despertar - - + + SKU Number Número SKU - + Family Família - + Lock Bloquear - + Boot-up State Estado de Inicialização - + Power Supply State Estado da Fonte de Alimentação - + Thermal State Estado Térmico - + Security Status Status de Segurança - + OEM Information Informações OEM - + Height Altura - + Number Of Power Cords Número de Cabos de Alimentação - + Contained Elements Elementos Contidos - + Location Localização - + Error Correction Type Tipo de Erro da Correção - + Maximum Capacity Capacidade Máxima - - + + Error Information Handle Identificador das Informações de Erro - + Number Of Devices Número de Dispositivos - + BIOS ROMSIZE TAMANHO DA ROM DA BIOS - + Release date Data de lançamento - + Board name Nome da placa - + SMBIOS Version Versão da SMBIOS - + Language Description Format Formato de Descrição do Idioma - + Installable Languages Idiomas Instaláveis - + Currently Installed Language Idioma Atualmente Instalado - + BD Address Endereço BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Tipo de pacote - + Link policy Política de link - + Link mode Modo de link - - + + Class Classe - + Service Classes Classes de Serviço - + Device Class Classe de Dispositivo - + HCI Version Versão do HCI - + LMP Version Versão do LMP - + Subversion Subversão - + Device Dispositivo - - + + Serial ID Identificação de Série - + product produto - + description descrição - + Powered Ligado - + Discoverable Detectável - + Pairable Pareável - + Modalias Modalias - + Discovering Procurando - + Driver Modules Módulos do Driver - - - + + + + + Device File Arquivo do Dispositivo - + Device Files Arquivos do Dispositivo - - + + + Device Number Número do Dispositivo - - Module Alias - Pseudônimo do Módulo - - - + Application Aplicativo - + status status - - + + + logical name nome lógico - - + + ansiversion ansiversion - + CPU implementer Implementador da CPU - + CPU architecture Arquitetura da CPU - + CPU variant Variante da CPU - + CPU part Peça da CPU - + CPU revision Revisão da CPU - + One Um - + Two Dois - + Four Quatro - + Six Seis - + Eight Oito - + Ten Dez - + Twelve Doze - + Fourteen Quatorze - + Sixteen Dezesseis - + Eighteen Dezoito - + Twenty Vinte - + Twenty-two Vinte e dois - + Twenty-four Vinte e quatro - + Twenty-six Vinte e seis - + Twenty-eight Vinte e oito - + Thirty Trinta - + Thirty-two Trinta e dois - + Thirty-four Trinta e quatro - + Thirty-six Trinta e seis - + Thirty-eight Trinta e oito - + Forty Quarenta - + Forty-two Quarenta e dois - + Forty-four Quarenta e quatro - + Forty-six Quarenta e seis - + Forty-eight Quarenta e oito - + Fifty Cinquenta - + Fifty-two Cinquenta e dois - + Fifty-four Cinquenta e quatro - + Fifty-six Cinquenta e seis - + Fifty-eight Cinquenta e oito - + Sixty Sessenta - + Sixty-two Sessenta e dois - + Sixty-four Sessenta e quatro - + Sixty-six Sessenta e seis - + Sixty-eight Sessenta e oito - + Seventy Setenta - + Seventy-two Setenta e dois - + Seventy-four Setenta e quatro - + Seventy-six Setenta e seis - + Seventy-eight Setenta e oito - + Eighty Oitenta - + Eighty-two Oitenta e dois - + Eighty-four Oitenta e quatro - + Eighty-six Oitenta e seis - + Eighty-eight Oitenta e oito - + Ninety Noventa - + Ninety-two Noventa e dois - + Ninety-four Noventa e quatro - + Ninety-six Noventa e seis - + Ninety-eight Noventa e oito - + One hundred Cem - + One hundred and Two Cento e dois - + One hundred and four Cento e quatro - + One hundred and Six Cento e seis - + One hundred and Eight Cento e oito - + One hundred and Ten Cento e dez - + One hundred and Twelve Cento e doze - + One hundred and Fourteen Cento e quatorze - + One hundred and Sixteen Cento e dezesseis - + One hundred and Eighteen Cento e dezoito - + One hundred and Twenty Cento e vinte - + One hundred and Twenty-two Cento e vinte e dois - + One hundred and Twenty-four Cento e vinte e quatro - + One hundred and Twenty-six Cento e vinte e seis - + One hundred and Twenty-eight Cento e vinte e oito - + One hundred and Ninety-two Cento e noventa e dois - + Two hundred and fifty-six Duzentos e cinquenta e seis @@ -2824,988 +3042,1084 @@ Versão do GLSL - - - + + + Unknown Desconhecido - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Classe do Hardware - - - - + + + + CPU CPU - - - - + + + + No CPU found Nenhuma CPU encontrada - - - - + + + + Motherboard Placa-mãe - - - - + + + + No motherboard found Nenhuma placa-mãe encontrada - - - - + + + + Memory Memória - - - - + + + + No memory found Nenhuma memória encontrada - - - - + + + + Storage Armazenamento - - - - + + + + No disk found Nenhum disco encontrado - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Placa de Vídeo - - - - + + + + No GPU found Nenhuma GPU encontrada - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Nenhum monitor encontrado - - - - - + + + + + Network Adapter Placa de Rede - - - - + + + + No network adapter found Nenhuma placa de rede encontrada - - - - - + + + + + Sound Adapter Placa de Som - - - - + + + + No audio device found Nenhum dispositivo de áudio encontrado - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Nenhum dispositivo Bluetooth encontrado - - - - + + + + Other PCI Devices Outros Dispositivos PCI - - - - + + + + No other PCI devices found Nenhum dispositivo PCI encontrado - - - - + + + + Power Energia - - - - + + + + No battery found Nenhuma bateria encontrada - - - - - + + + + + Keyboard Teclado - - - - + + + + No keyboard found Nenhum teclado encontrado - - - - - + + + + + Mouse Mouse - - - - + + + + No mouse found Nenhum mouse encontrado - - - - - - + + + + + + Printer Impressora - - - - + + + + No printer found Nenhuma impressora encontrada - - - - + + + + Camera Câmera - - - - + + + + No camera found Nenhuma câmera encontrada - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Nenhum CD-ROM encontrado - - - - - + + + + + Other Devices Outros Dispositivos - - - - + + + + No other devices found Nenhum dispositivo encontrado - + Array Handle Controlador de Matriz - + Form Factor Fator de Forma - + Set Definir - + Bank Locator Localizador de Banco - + Type Detail Detalhes do Tipo - + Part Number Número da Peça - + Rank Rank - + Memory Technology Tecnologia da Memória - + Memory Operating Mode Capability Capacidade do Modo de Operação da Memória - + Firmware Version Versão do Firmware - + Module Manufacturer ID ID do Fabricante do Módulo - + Module Product ID ID do Módulo de Produto - + Memory Subsystem Controller Manufacturer ID ID do Fabricante do Controlador do Subsistema de Memória - + Memory Subsystem Controller Product ID ID do Produto do Controlador do Subsistema de Memória - + Non-Volatile Size Tamanho Não Volátil - + Volatile Size Tamanho Volátil - + Cache Size Tamanho do Cache - + Logical Size Tamanho Lógico - - - - - + + + + + inch pol - + Date Data - + ioport ioport - + network rede - - + battery bateria - + native-path native-path - + power supply fonte de energia - + updated atualizado - + has history possui histórico - + has statistics possui estatísticas - + rechargeable recarregável - + state estado - + warning-level warning-level - + energy energia - + energy-empty energy-empty - + energy-full energy-full - + energy-full-design energy-full-design - + energy-rate energy-rate - + voltage tensão - + percentage porcentagem - + technology tecnologia - + icon-name icon-name - + online on-line - + daemon-version daemon-version - + on-battery on-battery - + lid-is-closed lid-is-closed - + lid-is-present lid-is-present - + critical-action critical-action - + copies cópias - + job-cancel-after job-cancel-after - + job-hold-until job-hold-until - + job-priority job-priority - + marker-change-time marker-change-time - + number-up number-up - + orientation-requested orientation-requested - + print-color-mode print-color-mode - + printer-is-accepting-jobs printer-is-accepting-jobs - + printer-is-shared printer-is-shared - + printer-is-temporary printer-is-temporary - + printer-make-and-model printer-make-and-model - + printer-state-change-time printer-state-change-time - + printer-state-reasons printer-state-reasons - + printer-type printer-type - + printer-uri-supported printer-uri-supported - + sides sides - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info informações do barramento - + logicalsectorsize logicalsectorsize - + sectorsize sectorsize - + guid guid - + Geometry (Logical) Geometria (lógica) - - + + Device Manager Gerenciador de Dispositivos - + Device Manager is a handy tool for viewing hardware information and managing the devices. O Gerenciador de Dispositivos é uma ferramenta útil para visualizar as informações de hardware e gerenciar os dispositivos. - + New drivers available! Install or update them now. Novos drivers disponíveis! Instale-os ou atualize-os agora. - + + View + + + + Include subfolders Incluir subpastas - + Search for drivers in this path Procurar por drivers neste local - - - - Device Name - Nome do Dispositivo - - - - Version Available - Versão Disponível - - - - - Size - Tamanho - - - - - Status - Status - - - - - Action - Ações - - - - New Version - Nova Versão - - - - Current Version - Versão Atual - - - - Missing drivers (%1) - Drivers faltando (%1) - - - - Outdated drivers (%1) - Drivers desatualizados (%1) - - - - Up-to-date drivers (%1) - Drivers atualizados (%1) - - - + %1 driver updates available %1 atualizações de drivers disponíveis - - + + Time checked: %1 Tempo decorrido: %1 - + Downloading drivers for %1... Baixando drivers %1 - + Download speed: %1 Downloaded %2/%3 Velocidade download: %1 Baixado %2/%3 - + Installing drivers for %1... Drivers sendo instalados %1 - + %1 drivers installed, %2 drivers failed %1 Drivers instalados, %2 Falhas na instalação - + %1 drivers installed %1 Drivers instalados - + Failed to install drivers Falha ao instalar drivers - + Network error. Reconnecting... Erro de conexão. Reconectando... - + Download speed: %1 Velocidade download: %1 - + Your drivers are up to date Seus drivers estão desatualizados - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot Reiniciar - + Please %1 for the installed drivers to take effect Por favor aguarde %1 para os drivers instalados surtirem efeito - - + + View backup path + + + + + Backup All + + + + + submit feedback Enviar feedback - + Please try again or %1 to us Por favor tente novamente ou %1 para nós - + Install All Instalador Todos - - + + Scan Again Verificar Novamente - + Cancel Cancelar - + Scanning hardware device drivers, please wait... Verificando drivers de dispositivos de hardware, aguarde... - - + + Scanning %1 Verificados %1 - + Scan failed Verificação falhou - + Network unavailable Conexão não disponível - + Please check your network connection Por favor verifique sua conexão a internet - + Please scan again or %1 to us Por favor verifique novamente ou %1 para nós - + You are installing a driver, which will be interrupted if you exit. O driver está sendo instalado, a instalação será cancelada se você sair. - + + + Are you sure you want to exit? Tem certeza que deseja sair? - + + + Exit button Sair - + + + Cancel button Cancelar - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Adaptador Bluetooth - - + + Imaging device Dispositivo de câmera - + Display adapter Adaptador tela - + Sound card Placa de som - + Network adapter Adaptador Internet - + Wireless network adapter Adaptador Rede Wi-Fi - + Installation successful Instalado com sucesso - + Installation failed Falha na instalação - + Downloading Baixando - + Installing Instalando - + Not installed Não Instalado - + Out-of-date Desatualizado - + Waiting Aguardando - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Erro desconhecido - + Network error Erro de Conexão - + Canceled Cancelado - + Failed to get driver files Falha na obtenção dos arquivos de drivers - + Update Atualizar - + + Backup + + + + + Restore + + + + Install Instalação @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Desativar - + Refresh Atualizar - + Export Exportar - + Update drivers Atualizar drivers - + Uninstall drivers Desinstalar drivers - + Allow it to wake the computer Permitir despertar o computador - - + + Enable Ativar @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Atualizar - + Export Exportar - + Copy Copiar - + Disable Desativar - + Unavailable Indisponível @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Por favor, selecione uma pasta local @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Carregando... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_ro.ts b/deepin-devicemanager/translations/deepin-devicemanager_ro.ts index d4d183b75..320ae5011 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_ro.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_ro.ts @@ -1,17 +1,29 @@ - + + + BtnLabel - + + OK + + + + + Feedback + + + + OK button - + CmdButtonWidget - + More Mai mult @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More Mai mult - + Collapse Colaps @@ -51,14 +63,14 @@ DetailTreeView - - + + More Mai mult - - + + Collapse Colaps @@ -66,88 +78,95 @@ DetailViewDelegate - - + + Disable Dezactivează - + Unavailable - + DeviceAudio - + Device Name Nume dispozitiv - - + + Name Nume - - + + Vendor Furnizor - - Model - Model + + Chip + Cip - - Version - Versiune + + Capabilities + Capabilități - - Bus Info - Info Bus + + + Module Alias + Module Alias - - Chip - Cip + + + Physical ID + ID fizic - - Capabilities - Capabilități + + SysFS_Path + - - Clock - Ceas + + Description + Descriere + + + + Revision + - - Width - Lăţime + + KernelModeDriver + - + Memory Address - + - + IRQ IRQ - + Unavailable - + - + Disable Dezactivează @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Nume - + Vendor Furnizor - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Furnizor - + Version Versiune - + Chipset Chipset @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Nume - + Vendor Furnizor - + Version Versiune - + Model Model - + + Module Alias + Module Alias + + + + Physical ID + ID fizic + + + Speed Viteză - + Maximum Power Putere Maximă - + Driver Version Versiune Driver - + Driver Driver - + Capabilities Capabilități - + Bus Info Info Bus - + Logical Name Nume Logic - + MAC Address Adresă MAC - + Unavailable - + - + Disable Dezactivează @@ -264,57 +293,67 @@ DeviceCdrom - + Name Nume - + Vendor Furnizor - + Model Model - + Version Versiune - + Bus Info Info Bus - + Capabilities Capabilități - + Driver Driver - + Maximum Power Putere Maximă - + Speed Viteză - + + Module Alias + Module Alias + + + + Physical ID + ID fizic + + + Unavailable - + - + Disable Dezactivează @@ -322,7 +361,7 @@ DeviceComputer - + Name Nume @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Nume - - + + Vendor Furnizor - + CPU ID ID CPU - + Core ID ID Nucleu - + Threads Thread-uri - - Current Speed - Viteză Curentă - - - + BogoMIPS BogoMIPS - - + + Architecture Arhitectură - + CPU Family Familie CPU - + Model Model - - + + Processor Procesor - + Core(s) Nucleu(e) - + Virtualization Virtualizare - + Flags Steaguri - + Extensions Extensii - + L3 Cache Cache L3 - + L2 Cache Cache L2 - + L1i Cache Cache L1i - + L1d Cache Cache L1d - + Stepping Pași - + Speed Viteză - + + + Max Speed Viteză Maximă @@ -447,195 +483,200 @@ DeviceGpu - + Name Nume - + Vendor Furnizor - + Model Model - + Version Versiune - + Graphics Memory Memorie Grafică - + + Module Alias + Module Alias + + + Physical ID ID fizic - + Memory Address - + - + IO Port Port IO - + Bus Info Info Bus - + Maximum Resolution Rezoluție Maximă - + Minimum Resolution Rezoluție Minimă - + Current Resolution Rezoluție curentă - + Driver Driver - + Description Descriere - - Clock - Ceas - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput - + - + Display Output Ieșire Afișaj - + Capabilities Capabilități - + IRQ IRQ - - Width - Lăţime - - - + Unavailable - + DeviceImage - + Name Nume - + Vendor Furnizor - + Version Versiune - + Model Model - + Bus Info Info Bus - + + Module Alias + Module Alias + + + + Physical ID + ID fizic + + + Speed Viteză - + Maximum Power Putere Maximă - + Driver Driver - + Capabilities Capabilități - + Serial Number Numar Serie - + Unavailable - + - + Disable Dezactivează @@ -643,62 +684,72 @@ DeviceInput - + Name Nume - + Vendor Furnizor - + Model Model - + Interface Interfață - + Bus Info Info Bus - + + Module Alias + Module Alias + + + + Physical ID + ID fizic + + + Speed Viteză - + Maximum Current - + - + Driver Driver - + Capabilities Capabilități - + Version Versiune - + Unavailable - + - + Disable Dezactivează @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Prezentare Generală - - - + + + CPU CPU - - + + CPU quantity Cantitate CPU - - + + Motherboard Placa de bază - - + + Memory Memorie - - + + Display Adapter Adaptor Afișaj - - + + Sound Adapter Adaptor Sunet - - + + Storage Stocare - - + + Other PCI Devices Alte dispozitive PCI - - + + Battery Baterie - - + + Bluetooth Bluetooth - - + + Network Adapter Adaptor Rețea - - + + Mouse Mouse - - + + Keyboard Tastatură - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Imprimantă - - + + Camera Cameră - - + + Other Devices Other Input Devices Alte Dispozitive - - - + + + Device Dispozitiv - - - + + + OS SO @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Nume - - + + Vendor Furnizor - - + + Size Mărime - - + + Type Tip - - + + Speed Viteză - + Total Width Lățime totală - + Locator Localizator - + Serial Number Numar Serie - + Configured Voltage Voltaj Configurat - + Maximum Voltage Voltaj Maxim - + Minimum Voltage Voltaj Minim - + Configured Speed Viteză Configurată - + Data Width Lățime date @@ -920,200 +971,198 @@ DeviceMonitor - + Name Nume - + Vendor Furnizor - + Type Tip - + Display Input Intrare Afișaj - + Interface Type Tip Interfață - + Support Resolution Rezoluție Suportată - + Current Resolution Rezoluție curentă - + Display Ratio Rație Afișaj - + Primary Monitor Monitor Principal - + Size Mărime - + Serial Number Numar Serie - - - Product Date - Dată Produs - DeviceNetwork - + + Name Nume - + + Vendor Furnizor - + + Type Tip - + Version Versiune - + Bus Info Info Bus - + Capabilities Capabilități - + Driver Driver - + Driver Version Versiune Driver - + + Module Alias + Module Alias + + + + Physical ID + ID fizic + + + Maximum Rate - + - + Negotiation Rate - + - + Port Port - + Multicast Multicast - + Link Legătură - + Latency Latență - + IP IP - + Firmware Firmware - + Duplex Duplex - + Broadcast Difuzare - + Auto Negotiation Auto Negociere - - Clock - Ceas - - - - Width - Lăţime - - - + Memory Address - + - + IRQ IRQ - + MAC Address Adresă MAC - + Logical Name Nume Logic - + Unavailable - + - + Disable Dezactivează @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Nume - + Vendor Furnizor - + Model Model - + Bus Info Info Bus - + Version Versiune - + Input/Output Intrare/Ieșire - + Memory Memorie - + IRQ IRQ - + Latency Latență - - Clock - Ceas - - - - Width - Lăţime - - - + Driver Driver - + Capabilities Capabilități @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Nume - + Vendor Furnizor - + Model Model - + Version Versiune - + Bus Info Info Bus - + Capabilities Capabilități - + Driver Driver - + Maximum Power Putere Maximă - + Speed Viteză - + Serial Number Numar Serie - + Unavailable - + - + Disable Dezactivează @@ -1252,82 +1291,82 @@ DevicePower - + Name Nume - + Model Model - + Vendor Furnizor - + Serial Number Număr Serie - + Type Tip - + Status Stare - + Capacity Capacitate - + Voltage Voltaj - + Slot Slot - + Design Capacity Capacitate Proiectată - + Design Voltage Voltaj Proiectat - + SBDS Version Versiune SBDS - + SBDS Serial Number Numar Serie SBDS - + SBDS Manufacture Date Dată Fabricație SBDS - + SBDS Chemistry Chimie SBDS - + Temperature Temperatură @@ -1335,47 +1374,47 @@ DevicePrint - + Name Nume - + Model Model - + Vendor Furnizor - + Serial Number Număr Serie - + Shared Partajat - + URI URI - + Status Stare - + Interface Type Tip Interfață - + Disable Dezactivează @@ -1383,138 +1422,151 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Furnizor - - + + Media Type Tip Media - - + + + Size Mărime - + + + Name + Nume + + + Version Versiune - + Capabilities Capabilități - + + + Module Alias + Module Alias + + + + + Physical ID + ID fizic + + + Firmware Version Versiune Firmware - + Speed Viteză - + Description Descriere - + Serial Number Număr Serie - + Interface Interfață - + Rotation Rate Rată Rotație - + Unavailable - + GetDriverNameWidget - - + + Select a driver for update - + - + No drivers found in this folder - + GetInfoPool - + Loading Audio Device Info... Încărcare Informații Dispozitiv Audio... - + Loading BIOS Info... Încărcare Informații BIOS... - + Loading CD-ROM Info... Încărcare Informații CD-ROM... - + Loading Operating System Info... Încărcare Informații Sistem de Operare... - + Loading CPU Info... Încărcare Informații CPU... - + Loading Other Devices Info... Încărcare Informații Alte Dispozitive... - + Loading Power Info... Încărcare Informații Alimentare... - + Loading Printer Info... Încărcare Informații Imprimantă... - + Loading Mouse Info... Încărcare Informații Mouse... - + Loading Network Adapter Info... Încărcare Informații Adaptor Rețea... @@ -1522,116 +1574,116 @@ LogTreeView - - - + + + Disable Dezactivează - + Unavailable - + LogViewItemDelegate - + Disable Dezactivează - + Unavailable - + MainWindow - + Device Info - export file's name + export file's name Informații Dispozitiv - + Display shortcuts Scurtături Afișaj - + Close Închide - + Help Ajutor - + Copy Copiază - + System Sistem - + Export Exportare - + Refresh Reîmprospătare - + Device Manager Manager Dispozitive - + Hardware - + - + Drivers - + - + Monitor Monitor - + Overview Prezentare Generală - + Display Adapter Adaptor Afișaj - + CPU CPU - + Network Adapter Adaptor Rețea - + Battery Baterie @@ -1639,214 +1691,400 @@ PageDetail - + More Mai mult + + PageDriverBackupInfo + + + + Name + Nume + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + Stare + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating - + - - - + + + Cancel button Anulare - + Next - + - + Warning - + - + The device will be unavailable after the driver uninstallation - + - + Uninstall button - + - + Uninstalling - + - + Update successful - + - + Uninstallation successful - + - + Update failed - + - + Uninstallation failed - + - + OK button - + - + Next button - + - + The selected folder does not exist, please select again - + - + Update button - + - + Previous button - + - + Broken package - + - + Unmatched package architecture - + - - + + The selected file does not exist, please select again - + - + It is not a driver - + - + Unable to install - no digital signature - + - + Unknown error - + - + The driver module was not found - + - + Invalid module format - + - + The driver module has dependencies - + - PageListView + PageDriverInstallInfo - - Refresh - Reîmprospătare + + + + Device Name + Nume dispozitiv - + + Version Available + + + + + + Size + Mărime + + + + + Status + Stare + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Nume + + + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Reîmprospătare + + + Export Exportare - + Overview Prezentare Generală + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Activarea dispozitivului a eșuat - + Failed to disable the device Dezactivarea dispozitivului a eșuat - + Failed to disable it: unable to get the device SN - + - + Update Drivers - + - + Uninstall Drivers - + PageOverview - + Refresh Reîmprospătare - + Export Exportare - + Copy Copiază - + Overview Prezentare Generală @@ -1854,939 +2092,919 @@ PageSingleInfo - + Refresh Reîmprospătare - + Export Exportare - + Copy Copiază - - + + Enable Activează - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - + Disable Dezactivează - - + + Failed to disable it: unable to get the device SN - + - + Failed to disable the device Dezactivarea dispozitivului a eșuat - + Failed to enable the device Activarea dispozitivului a eșuat - + Update Drivers - + - + Uninstall Drivers - + QObject - + SubVendor SubFurnizor - + SubDevice SubDispozitiv - + Driver Driver - + Driver Status Stare Driver - + Driver Activation Cmd Comandă Activare Driver - - + - + + Config Status Stare Configurare - - - - - - - physical id - ID fizic - - - + latency Latență - + Phys Fizic - + Sysfs Sysfs - + Handlers Manipulatori - - + + PROP PROP - - + + EV EV - - + + KEY CHEIE - - Model - Model - - - - Vendor - Furnizor - - - + Version Versiune - - + + + Bus Bus - - + + BIOS Information Informații BIOS - - + + Base Board Information Informații Placă de Bază - - + + System Information Informații Sistem - - + + Chassis Information Informații Șasiu - - + + Physical Memory Array Matrice Memorie Fizică - + Release Date Dată Emitere - + Address Adresă - + Runtime Size Dimensiune Execuție - + ROM Size Mărime ROM - + Characteristics Caracteristici - + BIOS Revision Revizie BIOS - + Firmware Revision Revizie Firmware - - + + Product Name Nume Produs - - - + + + Serial Number Numar Serie - - - + + + Asset Tag Etichetă Bun - - + + Features Caracteristici - + Location In Chassis Locația in Șasiu - + Chassis Handle Mâner Șasiu - - + + Type Tip - + Contained Object Handles Mânerele obiectelor conținute - - + + UUID UUID - + Wake-up Type Tipul de trezire - - + + SKU Number Număr SKU - + Family Familie - + Lock Lacăt - + Boot-up State Starea de pornire - + Power Supply State Stare Sursa Alimentare - + Thermal State Stare Termică - + Security Status Status Securitate - + OEM Information Informații OEM - + Height Înalțime - + Number Of Power Cords Număr Cabluri Alimentare - + Contained Elements Elemente Conținute - + Location Locație - + Error Correction Type Tip Corecție Erori - + Maximum Capacity Capacitate Maximă - - + + Error Information Handle Manevrare Informații Erori - + Number Of Devices Număr De Dispozitive - + BIOS ROMSIZE MĂRIMEROM BIOS - + Release date Dată Emitere - + Board name Nume Placa - + SMBIOS Version Versiune SMBIOS - + Language Description Format Format Limbă Descriere - + Installable Languages Limbi instalabile - + Currently Installed Language Limba Curentă Instalată - + BD Address Adresă BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Tip Pachet - + Link policy Politică Legătura - + Link mode Mod Legătură - - + + Class Clasă - + Service Classes Clase Servicii - + Device Class Clasă Dispozitiv - + HCI Version Versiune HCI - + LMP Version Versiune LMP - + Subversion SubVersiune - + Device Dispozitiv - - + + Serial ID ID Serie - + product Produs - + description Descriere - + Powered Alimentat - + Discoverable Descoperibil - + Pairable Împerecheabil - + Modalias Modalias - + Discovering Descoperire - + Driver Modules Module Driver - - - + + + + + Device File Dosar Dispozitiv - + Device Files Dosare Dispozitiv - - + + + Device Number Număr Dispozitiv - - Module Alias - Module Alias - - - + Application Aplicație - + status Stare - - + + + logical name Nume Logic - - + + ansiversion VersiuneAnsi - + CPU implementer Implementator CPU - + CPU architecture Arhitectură CPU - + CPU variant Varianta CPU - + CPU part Partea CPU - + CPU revision Revizie CPU - + One Unul - + Two Două - + Four Patru - + Six Șase - + Eight Opt - + Ten Zece - + Twelve Doisprezece - + Fourteen Paisprezece - + Sixteen Şaisprezece - + Eighteen Optsprezece - + Twenty Douăzeci - + Twenty-two Douăzeci și Doi - + Twenty-four Douăzeci și Patru - + Twenty-six Douăzeci și Șase - + Twenty-eight Douăzeci și Opt - + Thirty Treizeci - + Thirty-two Treizeci și Doi - + Thirty-four Treizeci și Patru - + Thirty-six Treizeci și șase - + Thirty-eight Treizeci și opt - + Forty Patruzeci - + Forty-two Patruzeci și Doi - + Forty-four Patruzeci și Patru - + Forty-six Patruzeci și Șase - + Forty-eight Patruzeci și Opt - + Fifty Cincizeci - + Fifty-two Cincizeci și Doi - + Fifty-four Cincizeci și Patru - + Fifty-six Cincizeci și Șase - + Fifty-eight Cincizeci și Opt - + Sixty Şaizeci - + Sixty-two Şaizeci și Doi - + Sixty-four Şaizeci și Patru - + Sixty-six Şaizeci și Șase - + Sixty-eight Şaizeci și Opt - + Seventy Șaptezeci - + Seventy-two Șaptezeci și Doi - + Seventy-four Șaptezeci și Patru - + Seventy-six Șaptezeci și Șase - + Seventy-eight Șaptezeci și Opt - + Eighty Optzeci - + Eighty-two Optzeci și Doi - + Eighty-four Optzeci și Patru - + Eighty-six Optzeci și Șase - + Eighty-eight Optzeci și Opt - + Ninety Nouăzeci - + Ninety-two Nouăzeci și Doi - + Ninety-four Nouăzeci și Patru - + Ninety-six Nouăzeci și Șase - + Ninety-eight Nouăzeci și Opt - + One hundred O sută - + One hundred and Two O sută Doi - + One hundred and four O sută Patru - + One hundred and Six O sută Șase - + One hundred and Eight O sută Opt - + One hundred and Ten O sută Zece - + One hundred and Twelve O sută doisprezece - + One hundred and Fourteen O sută paisprezece - + One hundred and Sixteen O sută șaisprezece - + One hundred and Eighteen O sută optsprezece - + One hundred and Twenty O suta douazeci - + One hundred and Twenty-two O sută douăzeci și doi - + One hundred and Twenty-four O sută douăzeci și patru - + One hundred and Twenty-six O sută douăzeci și șase - + One hundred and Twenty-eight O sută douăzeci și opt - + One hundred and Ninety-two - + - + Two hundred and fifty-six - + @@ -2824,1028 +3042,1124 @@ Versiune GLSL - - - + + + Unknown Necunoscut - + Uniq Unic - + MSC MSC - - + + + Hardware Class Clasă Hardware - - - - + + + + CPU CPU - - - - + + + + No CPU found CPU Negăsit - - - - + + + + Motherboard Placa de bază - - - - + + + + No motherboard found Placa de bază negăsită - - - - + + + + Memory Memorie - - - - + + + + No memory found Memorie Negăsită - - - - + + + + Storage Stocare - - - - + + + + No disk found Unitate disc negasită - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Adaptor Afișaj - - - - + + + + No GPU found GPU Negăsit - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Monitor Negăsit - - - - - + + + + + Network Adapter Adaptor Rețea - - - - + + + + No network adapter found Adaptor Rețea Negăsit - - - - - + + + + + Sound Adapter Adaptor Sunet - - - - + + + + No audio device found Dispozitiv Audio Negăsit - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Bluetooth Negăsit - - - - + + + + Other PCI Devices Alte dispozitive PCI - - - - + + + + No other PCI devices found Alte dispozitive PCI Negăsite - - - - + + + + Power Alimentare - - - - + + + + No battery found Nu s-a găsit baterie - - - - - + + + + + Keyboard Tastatură - - - - + + + + No keyboard found Tastatură Negăsită - - - - - + + + + + Mouse Mouse - - - - + + + + No mouse found Mouse negăsit - - - - - - + + + + + + Printer Imprimantă - - - - + + + + No printer found Imprimantă Negăsită - - - - + + + + Camera Cameră - - - - + + + + No camera found Cameră Negăsită - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found CD-ROM Negăsit - - - - - + + + + + Other Devices Alte Dispozitive - - - - + + + + No other devices found Alte dispozitive negăsite - + Array Handle Manipulare Matrice - + Form Factor Factor Formă - + Set Set - + Bank Locator Locație Banc - + Type Detail Detalii Tip - + Part Number Număr Piesă - + Rank Rang - + Memory Technology Tehnologie Memorie - + Memory Operating Mode Capability Capacitatea Modului de Operare a Memoriei - + Firmware Version Versiune Firmware - + Module Manufacturer ID ID Producător Modul - + Module Product ID ID Produs Modul - + Memory Subsystem Controller Manufacturer ID ID Producător al Controlerului Subsistemului de Memorie - + Memory Subsystem Controller Product ID ID Controler Subsistem Memorie - + Non-Volatile Size Dimensiune Non-Volatilă - + Volatile Size Dimensiune Volatilă - + Cache Size Dimensiune Cache - + Logical Size Dimensiune Logică - - - - - + + + + + inch inch - + Date Dată - + ioport ioport - + network rețea - - + battery baterie - + native-path cale-nativă - + power supply Sursa Alimentare - + updated actualizat - + has history are istorie - + has statistics are statistici - + rechargeable reîncărcabilă - + state Stare - + warning-level Nivel Avertizare - + energy energie - + energy-empty energie-gol - + energy-full energie-plină - + energy-full-design energie-plină-proiectată - + energy-rate rată-energie - + voltage Voltaj - + percentage procentual - + technology tehnologie - + icon-name nume-icoană - + online online - + daemon-version versiune-demon - + on-battery pe-baterie - + lid-is-closed capacul-este-închis - + lid-is-present capacul-este-prezent - + critical-action acțiune-critică - + copies copii - + job-cancel-after anulare-job-după - + job-hold-until ține-job-până - + job-priority prioritate-job - + marker-change-time marker-schimbare-timp - + number-up mărește-număr - + orientation-requested orientare-cerută - + print-color-mode mod-printare-color - + printer-is-accepting-jobs imprimanta-acceptă-servicii - + printer-is-shared imprimanta-este-partajată - + printer-is-temporary imprimanta-este-temporară - + printer-make-and-model imprimantă-producător-și-model - + printer-state-change-time timp-schimbare-status-imprimantă - + printer-state-reasons motiv-stare-imprimantă - + printer-type tip-imprimantă - + printer-uri-supported printer-uri-suportat - + sides fețe - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info Info Bus - + logicalsectorsize DimensiuneSectorLogic - + sectorsize DimensiuneSector - + guid guid - + Geometry (Logical) Geometrie (Logică) - - + + Device Manager Manager Dispozitive - + Device Manager is a handy tool for viewing hardware information and managing the devices. Manager Dispozitive este un instrument la îndemână pentru vizualizarea informațiilor hardware și gestionarea dispozitivelor. - + New drivers available! Install or update them now. - + + + + + View + - + Include subfolders - + - + Search for drivers in this path - + - - - - Device Name - Nume dispozitiv + + %1 driver updates available + - - Version Available - + + + Time checked: %1 + - - - Size - Mărime + + Downloading drivers for %1... + - - - Status - Stare + + Download speed: %1 Downloaded %2/%3 + - - - Action - + + Installing drivers for %1... + - - New Version - + + %1 drivers installed, %2 drivers failed + - - Current Version - + + %1 drivers installed + - - Missing drivers (%1) - + + Failed to install drivers + - - Outdated drivers (%1) - + + Network error. Reconnecting... + - - Up-to-date drivers (%1) - + + Download speed: %1 + - - %1 driver updates available - + + Your drivers are up to date + - - - Time checked: %1 - + + All drivers have been backed up + - - Downloading drivers for %1... - + + + A total of %1 drivers, of which %2 have been backed up + - - Download speed: %1 Downloaded %2/%3 - + + You have %1 drivers that can be backed up, it is recommended to do so immediately + - - Installing drivers for %1... - + + You have %1 drivers that can be backed up + - - %1 drivers installed, %2 drivers failed - + + Backing up the %1 driver, a total of %2 drivers + - - %1 drivers installed - + + Backing up: %1 + - - Failed to install drivers - + + %1 drivers backed up, %2 drivers failed + - - Network error. Reconnecting... - + + Failed to backup drivers + - - Download speed: %1 - + + %1 drivers backed up + - - Your drivers are up to date - + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + - + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot - + - + Please %1 for the installed drivers to take effect - + + + + + View backup path + - - + + Backup All + + + + + submit feedback - + - + Please try again or %1 to us - + - + Install All - + - - + + Scan Again - + - + Cancel Anulare - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable - + - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? - + - + + + Exit button - + - + + + Cancel button Anulare - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter - + - - + + Imaging device - + - + Display adapter - + - + Sound card - + - + Network adapter - + - + Wireless network adapter - + - + Installation successful - + - + Installation failed - + - + Downloading - + - + Installing - + - + Not installed - + - + Out-of-date - + - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error - + - + Network error - + - + Canceled - + - + Failed to get driver files - + - + Update - + - + + Backup + + + + + Restore + + + + Install - + TableWidget - - + + Disable Dezactivează - + Refresh Reîmprospătare - + Export Exportare - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - - + + Enable Activează @@ -3853,45 +4167,45 @@ TextBrowser - + Refresh Reîmprospătare - + Export Exportare - + Copy Copiază - + Disable Dezactivează - + Unavailable - + UrlChooserEdit - + Select a local folder please - + WaitingWidget - + Loading... Încărcare... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_ru.ts b/deepin-devicemanager/translations/deepin-devicemanager_ru.ts index f013dcc1a..c47033c95 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_ru.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_ru.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + ОК + + + + Feedback + + + + OK button ОК @@ -11,7 +23,7 @@ CmdButtonWidget - + More Ещё @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More Ещё - + Collapse Свернуть @@ -51,14 +63,14 @@ DetailTreeView - - + + More Ещё - - + + Collapse Свернуть @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Отключить - + Unavailable Недоступно @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Имя Устройства - - + + Name Название - - + + Vendor Поставщик - - Model - Модель + + Chip + Микросхема - - Version - Версия + + Capabilities + Способность - - Bus Info - Информация о шине + + + Module Alias + Псевдоним модуля - - Chip - Микросхема + + + Physical ID + Физическая идентификация - - Capabilities - Способность + + SysFS_Path + - - Clock - Часы + + Description + Описание + + + + Revision + - - Width - Ширина + + KernelModeDriver + - + Memory Address Адрес памяти - + IRQ IRQ - + Unavailable Недоступно - + Disable Отключить @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Название - + Vendor Поставщик - + Model Модель @@ -173,17 +192,17 @@ DeviceBios - + Vendor Поставщик - + Version Версия - + Chipset Чипсет @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Название - + Vendor Поставщик - + Version Версия - + Model Модель - + + Module Alias + Псевдоним модуля + + + + Physical ID + Физическая идентификация + + + Speed Скорость - + Maximum Power Максимальная мощность - + Driver Version Версия драйвера - + Driver Драйвер - + Capabilities Способность - + Bus Info Информация о шине - + Logical Name Логическое название - + MAC Address MAC-адрес - + Unavailable Недоступно - + Disable Отключить @@ -264,57 +293,67 @@ DeviceCdrom - + Name Название - + Vendor Поставщик - + Model Модель - + Version Версия - + Bus Info Информация о шине - + Capabilities Способность - + Driver Драйвер - + Maximum Power Максимальная мощность - + Speed Скорость - + + Module Alias + Псевдоним модуля + + + + Physical ID + Физическая идентификация + + + Unavailable Недоступно - + Disable Отключить @@ -322,7 +361,7 @@ DeviceComputer - + Name Название @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Название - - + + Vendor Поставщик - + CPU ID CPU ID - + Core ID идентификатор ядра - + Threads Потоки - - Current Speed - Текущая скорость - - - + BogoMIPS BogoMIPS - - + + Architecture Архитектура - + CPU Family семейство ЦП - + Model Модель - - + + Processor Процессор - + Core(s) ядро(а) - + Virtualization Виртуализация - + Flags Флаги - + Extensions Расширения - + L3 Cache L3 кэш - + L2 Cache L2 кэш - + L1i Cache L1i кэш - + L1d Cache L1d кэш - + Stepping Степпинг - + Speed Скорость - + + + Max Speed Максимальная скорость @@ -447,132 +483,127 @@ DeviceGpu - + Name Название - + Vendor Поставщик - + Model Модель - + Version Версия - + Graphics Memory Графическая память - + + Module Alias + Псевдоним модуля + + + Physical ID Физическая идентификация - + Memory Address Адрес памяти - + IO Port Порт ввода-вывода - + Bus Info Информация о шине - + Maximum Resolution Максимальное разрешение - + Minimum Resolution Минимальное разрешение - + Current Resolution Текущее разрешение - + Driver Драйвер - + Description Описание - - Clock - Часы - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput - + - + Display Output Вывод на Дисплей - + Capabilities Способность - + IRQ IRQ - - Width - Ширина - - - + Unavailable Недоступно @@ -580,62 +611,72 @@ DeviceImage - + Name Название - + Vendor Поставщик - + Version Версия - + Model Модель - + Bus Info Информация о шине - + + Module Alias + Псевдоним модуля + + + + Physical ID + Физическая идентификация + + + Speed Скорость - + Maximum Power Максимальная мощность - + Driver Драйвер - + Capabilities Способность - + Serial Number Серийный номер - + Unavailable Недоступно - + Disable Отключить @@ -643,62 +684,72 @@ DeviceInput - + Name Название - + Vendor Поставщик - + Model Модель - + Interface Интерфейс - + Bus Info Информация о шине - + + Module Alias + Псевдоним модуля + + + + Physical ID + Физическая идентификация + + + Speed Скорость - + Maximum Current Максимальный ток - + Driver Драйвер - + Capabilities Способность - + Version Версия - + Unavailable Недоступно - + Disable Отключить @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Обзор - - - + + + CPU Процессор - - + + CPU quantity Количество ЦП - - + + Motherboard Материнская плата - - + + Memory Память - - + + Display Adapter Дисплейный адаптер - - + + Sound Adapter Звуковой Адаптер - - + + Storage Хранилище - - + + Other PCI Devices Другие PCI Устройства - - + + Battery Батарея - - + + Bluetooth Bluetooth - - + + Network Adapter Сетевой адаптер - - + + Mouse Мышь - - + + Keyboard Клавиатура - - + + Monitor Монитор - - + + CD-ROM CD-ROM - - + + Printer Принтер - - + + Camera Камера - - + + Other Devices Other Input Devices Остальные устройства - - - + + + Device Устройство - - - + + + OS ОС @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Название - - + + Vendor Поставщик - - + + Size Размер - - + + Type Тип - - + + Speed Скорость - + Total Width Общая ширина - + Locator - + - + Serial Number Серийный номер - + Configured Voltage Текущее Напряжение - + Maximum Voltage Максимальное Напряжение - + Minimum Voltage Минимальное напряжение - + Configured Speed Настроенная скорость - + Data Width Ширина шины данных @@ -920,200 +971,198 @@ DeviceMonitor - + Name Название - + Vendor Поставщик - + Type Тип - + Display Input - + - + Interface Type Тип интерфейса - + Support Resolution Поддерживаемое разрешение - + Current Resolution Текущее разрешение - + Display Ratio - + - + Primary Monitor Основной Монитор - + Size Размер - + Serial Number Серийный номер - - - Product Date - - DeviceNetwork - + + Name Название - + + Vendor Поставщик - + + Type Тип - + Version Версия - + Bus Info Информация о шине - + Capabilities Способность - + Driver Драйвер - + Driver Version Версия драйвера - + + Module Alias + Псевдоним модуля + + + + Physical ID + Физическая идентификация + + + Maximum Rate - + - + Negotiation Rate - + - + Port Порт - + Multicast Мультикаст - + Link - + - + Latency Задержка - + IP IP - + Firmware Прошивка - + Duplex Дуплекс - + Broadcast Широковещание - + Auto Negotiation Автосогласование - - Clock - Часы - - - - Width - Ширина - - - + Memory Address Адрес памяти - + IRQ IRQ - + MAC Address MAC-адрес - + Logical Name Логическое название - + Unavailable Недоступно - + Disable Отключить @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Название - + Vendor Поставщик - + Model Модель - + Bus Info Информация о шине - + Version Версия - + Input/Output Ввод/Вывод - + Memory Память - + IRQ IRQ - + Latency Задержка - - Clock - Часы - - - - Width - Ширина - - - + Driver Драйвер - + Capabilities Способность @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Название - + Vendor Поставщик - + Model Модель - + Version Версия - + Bus Info Информация о шине - + Capabilities Способность - + Driver Драйвер - + Maximum Power Максимальная мощность - + Speed Скорость - + Serial Number Серийный номер - + Unavailable Недоступно - + Disable Отключить @@ -1252,82 +1291,82 @@ DevicePower - + Name Название - + Model Модель - + Vendor Поставщик - + Serial Number Серийный номер - + Type Тип - + Status Состояние - + Capacity Емкость - + Voltage Напряжение - + Slot Слот - + Design Capacity - + - + Design Voltage - + - + SBDS Version - + - + SBDS Serial Number - + - + SBDS Manufacture Date - + - + SBDS Chemistry - + - + Temperature Температура @@ -1335,47 +1374,47 @@ DevicePrint - + Name Название - + Model Модель - + Vendor Поставщик - + Serial Number Серийный номер - + Shared - + - + URI - + - + Status Состояние - + Interface Type Тип интерфейса - + Disable Отключить @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Модель - - - - + + Vendor Поставщик - - + + Media Type Тип Носителя - - + + + Size Размер - + + + Name + Название + + + Version Версия - + Capabilities Способность - + + + Module Alias + Псевдоним модуля + + + + + Physical ID + Физическая идентификация + + + Firmware Version Версия ПО - + Speed Скорость - + Description Описание - + Serial Number Серийный номер - + Interface Интерфейс - + Rotation Rate Частота вращения - + Unavailable Недоступно @@ -1455,66 +1507,66 @@ GetDriverNameWidget - - + + Select a driver for update - + - + No drivers found in this folder - + GetInfoPool - + Loading Audio Device Info... Загрузка информации об аудио устройствах - + Loading BIOS Info... Загрузка информации о BIOS - + Loading CD-ROM Info... Загрузка информации о CD-ROM - + Loading Operating System Info... Загрузка информации об операционной системе - + Loading CPU Info... Загрузка информации о процессоре - + Loading Other Devices Info... Загружаю информацию о Других Устройствах... - + Loading Power Info... Загружаю информацию о Питании... - + Loading Printer Info... Загрузка информации о принтере - + Loading Mouse Info... Загружаю информацию о Мыши... - + Loading Network Adapter Info... Загружаю информацию о Сетевом Адаптере... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Отключить - + Unavailable Недоступно @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Отключить - + Unavailable Недоступно @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Информация об устройстве - + Display shortcuts Отобразить горячие клавиши - + Close Закрыть - + Help Справка - + Copy Скопировать - + System Система - + Export Экспорт - + Refresh Обновить - + Device Manager Диспетчер устройств - + Hardware Оборудование - + Drivers Драйверы - + Monitor Монитор - + Overview Обзор - + Display Adapter Видеоадаптер - + CPU Процессор - + Network Adapter Сетевой адаптер - + Battery Батарея @@ -1639,191 +1691,377 @@ PageDetail - + More Ещё + + PageDriverBackupInfo + + + + Name + Название + + + + + Current Version + Текущая версия + + + + + Driver Platform Version + + + + + Status + Состояние + + + + Action + Действие + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Обновление - - - + + + Cancel button Отменить - + Next - + - + Warning Внимание - + The device will be unavailable after the driver uninstallation - + - + Uninstall button Удалить - + Uninstalling Удаление - + Update successful Обновление прошло успешно - + Uninstallation successful Удаление прошло успешно - + Update failed Обновление не удалось - + Uninstallation failed Удаление не удалось - + OK button ОК - + Next button - + - + The selected folder does not exist, please select again - + - + Update button Обновить - + Previous button - + - + Broken package Нарушены зависимости - + Unmatched package architecture Не совпадает архитектура пакета - - + + The selected file does not exist, please select again - + - + It is not a driver Не является драйвером - + Unable to install - no digital signature Установка невозможна: отсутствует цифровая подпись - + Unknown error Неизвестная ошибка - + The driver module was not found Модуль драйвера не найден - + Invalid module format Неверный формат модуля - + The driver module has dependencies У модуля есть зависимости - PageListView + PageDriverInstallInfo - - Refresh - Обновить + + + + Device Name + Имя Устройства - + + Version Available + Доступная версия + + + + + Size + Размер + + + + + Status + Состояние + + + + + Action + Действие + + + + New Version + Новая версия + + + + Current Version + Текущая версия + + + + Missing drivers (%1) + Отсутствующие драйверы (%1) + + + + Outdated drivers (%1) + Устаревшие драйверы (%1) + + + + Up-to-date drivers (%1) + Обновленные драйверы (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + ОК + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Название + + + + Current Version + Текущая версия + + + + Backup Version + + + + + Action + Действие + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Обновить + + + Export Экспорт - + Overview Обзор + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Не удалось включить устройство - + Failed to disable the device Не удалось отключить устройство - + Failed to disable it: unable to get the device SN - + - + Update Drivers Обновить драйверы - + Uninstall Drivers Удалить драйверы @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Обновить - + Export Экспорт - + Copy Скопировать - + Overview Обзор @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Обновить - + Export Экспорт - + Copy Скопировать - - + + Enable Включить - + Update drivers Обновить драйверы - + Uninstall drivers Удалить драйверы - + Allow it to wake the computer Разрешать вывод компьютера из ждущего режима - + Disable Отключить - - + + Failed to disable it: unable to get the device SN - + - + Failed to disable the device Не удалось отключить устройство - + Failed to enable the device Не удалось включить устройство - + Update Drivers Обновить драйверы - + Uninstall Drivers Удалить драйверы @@ -1924,884 +2162,864 @@ QObject - + SubVendor - + - + SubDevice - + - + Driver Драйвер - + Driver Status Состояние драйвера - + Driver Activation Cmd - + - - + - + + Config Status - - - - - - - - - - physical id - физический идентификатор + - + latency задержка - + Phys - + - + Sysfs Sysfs - + Handlers - + - - + + PROP - + - - + + EV - + - - + + KEY - - - - - Model - Модель - - - - Vendor - Поставщик + - + Version Версия - - + + + Bus Шина - - + + BIOS Information Информация о BIOS - - + + Base Board Information Информация о материнской плате - - + + System Information Информация о системе - - + + Chassis Information Информация о корпусе - - + + Physical Memory Array - + - + Release Date Дата выпуска - + Address Адрес - + Runtime Size Размер Времени Выполнения - + ROM Size Размер диска - + Characteristics Характеристики - + BIOS Revision Ревизия BIOS - + Firmware Revision Версия прошивки - - + + Product Name Наименование Продукта - - - + + + Serial Number Серийный номер - - - + + + Asset Tag Инвентарный номер - - + + Features Особенности - + Location In Chassis - + - + Chassis Handle - + - - + + Type Тип - + Contained Object Handles - + - - + + UUID UUID - + Wake-up Type Тип Пробуждения - - + + SKU Number Номер SKU - + Family Семейство - + Lock - + - + Boot-up State - + - + Power Supply State - + - + Thermal State - + - + Security Status Состояние безопасности - + OEM Information OEM информация - + Height Высота - + Number Of Power Cords Число сетевых шнуров - + Contained Elements - + - + Location Расположение - + Error Correction Type Тип коррекции ошибок - + Maximum Capacity Максимальная вместимость - - + + Error Information Handle - + - + Number Of Devices Число устройств - + BIOS ROMSIZE - + - + Release date Дата выпуска - + Board name Название платы - + SMBIOS Version Версия SMBIOS - + Language Description Format Формат Описания Языка - + Installable Languages Устанавливаемые языки - + Currently Installed Language Текущий установленный язык - + BD Address - + - + ACL MTU - + - + SCO MTU - + - + Packet type Тип пакетов - + Link policy - + - + Link mode - + - - + + Class Класс - + Service Classes - + - + Device Class Класс устройства - + HCI Version Версия HCI - + LMP Version Версия LMP - + Subversion - + - + Device Устройство - - + + Serial ID Серийный номер - + product продукт - + description описание - + Powered Работающий - + Discoverable Обнаруженный - + Pairable Парный - + Modalias Modalias - + Discovering Обнаружение - + Driver Modules Модули драйвера - - - + + + + + Device File Файл устройства - + Device Files Файлы устройства - - + + + Device Number Номер устройства - - Module Alias - Псевдоним модуля - - - + Application Приложение - + status Состояние - - + + + logical name логическое название - - + + ansiversion антиверсия - + CPU implementer - + - + CPU architecture Архитектура ЦП - + CPU variant Вариант ЦП - + CPU part Номер по каталогу - + CPU revision Версия ЦП - + One Один - + Two Два - + Four Четыре - + Six Шесть - + Eight Восемь - + Ten Десять - + Twelve Двенадцать - + Fourteen Четырнадцать - + Sixteen Шестнадцать - + Eighteen Восемнадцать - + Twenty Двадцать - + Twenty-two Двадцать два - + Twenty-four Двадцать четыре - + Twenty-six Двадцать шесть - + Twenty-eight Двадцать восемь - + Thirty Тридцать - + Thirty-two Тридцать два - + Thirty-four Тридцать четыре - + Thirty-six Тридцать шесть - + Thirty-eight Тридцать восемь - + Forty Сорок - + Forty-two Сорок два - + Forty-four Сорок четыре - + Forty-six Сорок шесть - + Forty-eight Сорок восемь - + Fifty Пятьдесят - + Fifty-two Пятьдесят два - + Fifty-four Пятьдесят четыре - + Fifty-six Пятьдесят шесть - + Fifty-eight Пятьдесят восемь - + Sixty Шестьдесят - + Sixty-two Шестьдесят два - + Sixty-four Шестьдесят четыре - + Sixty-six Шестьдесят шесть - + Sixty-eight Шестьдесят восемь - + Seventy Семьдесят - + Seventy-two Семьдесят два - + Seventy-four Семьдесят четыре - + Seventy-six Семьдесят шесть - + Seventy-eight - + - + Eighty Восемьдесят - + Eighty-two Восемьдесят два - + Eighty-four - + - + Eighty-six - + - + Eighty-eight - + - + Ninety Девяносто - + Ninety-two - + - + Ninety-four - + - + Ninety-six - + - + Ninety-eight Девяносто восемь - + One hundred Сто - + One hundred and Two Сто два - + One hundred and four Сто четыре - + One hundred and Six Сто шесть - + One hundred and Eight Сто восемь - + One hundred and Ten Сто десять - + One hundred and Twelve Сто двенадцать - + One hundred and Fourteen Сто четырнадцать - + One hundred and Sixteen Сто шестнадцать - + One hundred and Eighteen Сто восемнадцать - + One hundred and Twenty Сто двадцать - + One hundred and Twenty-two Сто двадцать два - + One hundred and Twenty-four Сто двадцать четыре - + One hundred and Twenty-six Сто двадцать шесть - + One hundred and Twenty-eight Сто двадцать восемь - + One hundred and Ninety-two Сто девяносто два - + Two hundred and fifty-six Сто пятьдесят восемь GDDR capacity - + GPU vendor - + GPU type - + @@ -2811,7 +3029,7 @@ EGL client APIs - + @@ -2824,988 +3042,1084 @@ версия GLSL - - - + + + Unknown Неизвестный - + Uniq - + - + MSC - + - - + + + Hardware Class - + - - - - + + + + CPU Процессор - - - - + + + + No CPU found Процессор не найден - - - - + + + + Motherboard Материнская плата - - - - + + + + No motherboard found Материнская плата не найдена - - - - + + + + Memory Память - - - - + + + + No memory found Память не найдена - - - - + + + + Storage Хранилище - - - - + + + + No disk found Диск не найден - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Дисплейный адаптер - - - - + + + + No GPU found Графический процессор не найден - - - - + + + + Monitor Монитор - - - - + + + + No monitor found - + - - - - - + + + + + Network Adapter Сетевой адаптер - - - - + + + + No network adapter found Сетевой адаптер не найден - - - - - + + + + + Sound Adapter Звуковой Адаптер - - - - + + + + No audio device found Не найдено звуковое устройство - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Устройство Bluetooth не найдено - - - - + + + + Other PCI Devices Другие PCI Устройства - - - - + + + + No other PCI devices found Не найдено других PCI устройств - - - - + + + + Power Питание - - - - + + + + No battery found Батарея не найдена - - - - - + + + + + Keyboard Клавиатура - - - - + + + + No keyboard found Клавиатура не найдена - - - - - + + + + + Mouse Мышь - - - - + + + + No mouse found Мышь не найдена - - - - - - + + + + + + Printer Принтер - - - - + + + + No printer found Притер не найден - - - - + + + + Camera Камера - - - - + + + + No camera found Камера не найдена - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found CD-ROM не найден - - - - - + + + + + Other Devices Остальные устройства - - - - + + + + No other devices found Остальные устройства не найдены - + Array Handle - + - + Form Factor Форм-фактор - + Set - + - + Bank Locator - + - + Type Detail - + - + Part Number Номер по каталогу - + Rank - + - + Memory Technology Технология памяти - + Memory Operating Mode Capability - + - + Firmware Version Версия ПО - + Module Manufacturer ID - + - + Module Product ID - + - + Memory Subsystem Controller Manufacturer ID - + - + Memory Subsystem Controller Product ID - + - + Non-Volatile Size - + - + Volatile Size - + - + Cache Size Размер кэша - + Logical Size Логический размер - - - - - + + + + + inch дюйм - + Date - + - + ioport интернет-порт - + network - + - - + battery батарея - + native-path нативный-путь - + power supply - + - + updated обновлен - + has history - + - + has statistics - + - + rechargeable - + - + state - + - + warning-level - + - + energy - + - + energy-empty - + - + energy-full - + - + energy-full-design - + - + energy-rate - + - + voltage - + - + percentage - + - + technology - + - + icon-name - + - + online онлайн - + daemon-version - + - + on-battery - + - + lid-is-closed - + - + lid-is-present - + - + critical-action - + - + copies - + - + job-cancel-after - + - + job-hold-until - + - + job-priority - + - + marker-change-time - + - + number-up - + - + orientation-requested - + - + print-color-mode - + - + printer-is-accepting-jobs - + - + printer-is-shared - + - + printer-is-temporary - + - + printer-make-and-model - + - + printer-state-change-time - + - + printer-state-reasons - + - + printer-type - + - + printer-uri-supported - + - + sides - + - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info Информация о шине - + logicalsectorsize логический размер - + sectorsize размер сектора - + guid руководство - + Geometry (Logical) Геометрия (логическая) - - + + Device Manager Диспетчер устройств - + Device Manager is a handy tool for viewing hardware information and managing the devices. Диспетчер устройств - удобный инструмент для просмотра информации об оборудовании и управления устройствами. - + New drivers available! Install or update them now. Доступны новые драйверы! Установите или обновите их. - + + View + + + + Include subfolders Включая подпапки - + Search for drivers in this path - - - - - - - Device Name - Имя Устройства - - - - Version Available - Доступная версия - - - - - Size - Размер - - - - - Status - Состояние - - - - - Action - Действие - - - - New Version - Новая версия - - - - Current Version - Текущая версия - - - - Missing drivers (%1) - Отсутствующие драйверы (%1) - - - - Outdated drivers (%1) - Устаревшие драйверы (%1) - - - - Up-to-date drivers (%1) - Обновленные драйверы (%1) + - + %1 driver updates available Доступно обновленных драйверов: %1 - - + + Time checked: %1 Последняя проверка: %1 - + Downloading drivers for %1... Загрузка драйверов для %1... - + Download speed: %1 Downloaded %2/%3 Скорость загрузки: %1 Загружено %2/%3 - + Installing drivers for %1... Установка драйверов для %1... - + %1 drivers installed, %2 drivers failed - + - + %1 drivers installed Установлено драйверов: %1 - + Failed to install drivers Не удалось установить драйверы - + Network error. Reconnecting... - + - + Download speed: %1 Скорость загрузки: %1 - + Your drivers are up to date Ваши драйверы обновлены - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot перезагрузите компьютер - + Please %1 for the installed drivers to take effect Чтобы задействовать установленные драйвера, %1 - - + + View backup path + + + + + Backup All + + + + + submit feedback - + - + Please try again or %1 to us - + - + Install All Установить все - - + + Scan Again Повторный поиск - + Cancel Отменить - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable Сеть недоступна - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? - + - + + + Exit button Выход - + + + Cancel button Отменить - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Адаптер Bluetooth - - + + Imaging device - + - + Display adapter Видеоадаптер - + Sound card Звуковая карта - + Network adapter Сетевой адаптер - + Wireless network adapter Беспроводной адаптер - + Installation successful Установка прошла успешно - + Installation failed Установка не удалась - + Downloading Загрузка - + Installing Установка - + Not installed Не установлен - + Out-of-date Устарел - + Waiting Ожидание - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Неизвестная ошибка - + Network error Ошибка сети - + Canceled Отменено - + Failed to get driver files - + - + Update Обновить - + + Backup + + + + + Restore + + + + Install Установка @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Отключить - + Refresh Обновить - + Export Экспорт - + Update drivers Обновить драйверы - + Uninstall drivers Удалить драйверы - + Allow it to wake the computer Разрешать вывод компьютера из ждущего режима - - + + Enable Включить @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Обновить - + Export Экспорт - + Copy Скопировать - + Disable Отключить - + Unavailable Недоступно @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Выберите локальную папку @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Загрузка... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_sl.ts b/deepin-devicemanager/translations/deepin-devicemanager_sl.ts index eaffd8290..aed6d962e 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_sl.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_sl.ts @@ -1,17 +1,29 @@ - + + + BtnLabel - + + OK + + + + + Feedback + + + + OK button - + CmdButtonWidget - + More Več @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More Več - + Collapse Zloži @@ -51,14 +63,14 @@ DetailTreeView - - + + More Več - - + + Collapse Zloži @@ -66,88 +78,95 @@ DetailViewDelegate - - + + Disable Onemogoči - + Unavailable - + DeviceAudio - + Device Name Ime naprave - - + + Name Ime - - + + Vendor Proizvajalec - - Model - Model + + Chip + Čip - - Version - Različica + + Capabilities + Zmogljivosti - - Bus Info - Podatki o vodilu + + + Module Alias + Alias modula - - Chip - Čip + + + Physical ID + Fizični ID - - Capabilities - Zmogljivosti + + SysFS_Path + - - Clock - Ura + + Description + Opis + + + + Revision + - - Width - Širina + + KernelModeDriver + - + Memory Address Pomnilniški naslov - + IRQ IRQ - + Unavailable - + - + Disable Onemogoči @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Ime - + Vendor Proizvajalec - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Proizvajalec - + Version Različica - + Chipset Nabor vezja @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Ime - + Vendor Proizvajalec - + Version Različica - + Model Model - + + Module Alias + Alias modula + + + + Physical ID + Fizični ID + + + Speed Hitrost - + Maximum Power Največja moč - + Driver Version Različica gonilnika - + Driver Gonilnik - + Capabilities Zmogljivosti - + Bus Info Podatki o vodilu - + Logical Name Logično ime - + MAC Address MAC naslov - + Unavailable - + - + Disable Onemogoči @@ -264,57 +293,67 @@ DeviceCdrom - + Name Ime - + Vendor Proizvajalec - + Model Model - + Version Različica - + Bus Info Podatki o vodilu - + Capabilities Zmogljivosti - + Driver Gonilnik - + Maximum Power Največja moč - + Speed Hitrost - + + Module Alias + Alias modula + + + + Physical ID + Fizični ID + + + Unavailable - + - + Disable Onemogoči @@ -322,7 +361,7 @@ DeviceComputer - + Name Ime @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Ime - - + + Vendor Proizvajalec - + CPU ID ID procesorja - + Core ID ID jedra - + Threads Niti - - Current Speed - Trenutna hitrost - - - + BogoMIPS BogoMIPS - - + + Architecture Arhitektura - + CPU Family Družina procesorjev - + Model Model - - + + Processor Procesor - + Core(s) Jeder - + Virtualization Virtualizacija - + Flags Zastavice - + Extensions Razširitve - + L3 Cache L3 predpomnilnik - + L2 Cache L2 predpomnilnik - + L1i Cache L1i predpomnilnik - + L1d Cache L1d predpomnilnik - + Stepping Revizija - + Speed Hitrost - + + + Max Speed Največja hitrost @@ -447,195 +483,200 @@ DeviceGpu - + Name Ime - + Vendor Proizvajalec - + Model Model - + Version Različica - + Graphics Memory Grafični pomnilnik - + + Module Alias + Alias modula + + + Physical ID Fizični ID - + Memory Address Pomnilniški naslov - + IO Port V/I vrata - + Bus Info Podatki o vodilu - + Maximum Resolution Največja ločljivost - + Minimum Resolution Najmanjša ločljivost - + Current Resolution Trenutna ločljivost - + Driver Gonilnik - + Description Opis - - Clock - Ura - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput - + - + Display Output Display Output - + Capabilities Zmogljivosti - + IRQ IRQ - - Width - Širina - - - + Unavailable - + DeviceImage - + Name Ime - + Vendor Proizvajalec - + Version Različica - + Model Model - + Bus Info Podatki o vodilu - + + Module Alias + Alias modula + + + + Physical ID + Fizični ID + + + Speed Hitrost - + Maximum Power Največja moč - + Driver Gonilnik - + Capabilities Zmogljivosti - + Serial Number Serijska številka - + Unavailable - + - + Disable Onemogoči @@ -643,62 +684,72 @@ DeviceInput - + Name Ime - + Vendor Proizvajalec - + Model Model - + Interface Vmesnik - + Bus Info Podatki o vodilu - + + Module Alias + Alias modula + + + + Physical ID + Fizični ID + + + Speed Hitrost - + Maximum Current - + - + Driver Gonilnik - + Capabilities Zmogljivosti - + Version Različica - + Unavailable - + - + Disable Onemogoči @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Pregled - - - + + + CPU Procesor - - + + CPU quantity Število procesorjev - - + + Motherboard Matična plošča - - + + Memory Pomnilnik - - + + Display Adapter Grafični vmesnik - - + + Sound Adapter Zvočni vmesnik - - + + Storage Shramba - - + + Other PCI Devices Druge PCI naprave - - + + Battery Akumulator - - + + Bluetooth Bluetooth - - + + Network Adapter Omrežni vmesnik - - + + Mouse Miška - - + + Keyboard Tipkovnica - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Tiskalnik - - + + Camera Kamera - - + + Other Devices Other Input Devices Druge naprave - - - + + + Device Naprava - - - + + + OS OS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Ime - - + + Vendor Proizvajalec - - + + Size Velikost - - + + Type VrstaVrsta - - + + Speed Hitrost - + Total Width Celotna širina - + Locator Lokator - + Serial Number Serijska številka - + Configured Voltage Nastavljena napetost - + Maximum Voltage Največja napetost - + Minimum Voltage Najmanjša napetost - + Configured Speed Nastavljena hitrost - + Data Width Podatkovna širina @@ -920,200 +971,198 @@ DeviceMonitor - + Name Ime - + Vendor Proizvajalec - + Type VrstaVrsta - + Display Input Vhod zaslona - + Interface Type Vrsta vmesnika - + Support Resolution Podprta ločljivost - + Current Resolution Trenutna ločljivost - + Display Ratio Razmerje slike - + Primary Monitor Glavni monitor - + Size Velikost - + Serial Number Serijska številka - - - Product Date - Datum izdelave - DeviceNetwork - + + Name Ime - + + Vendor Proizvajalec - + + Type VrstaVrsta - + Version Različica - + Bus Info Podatki o vodilu - + Capabilities Zmogljivosti - + Driver Gonilnik - + Driver Version Različica gonilnika - + + Module Alias + Alias modula + + + + Physical ID + Fizični ID + + + Maximum Rate - + - + Negotiation Rate - + - + Port Vrata - + Multicast Hkratno dostavljanje - + Link Povezava - + Latency Latenca - + IP IP - + Firmware Strojni program - + Duplex Dupleks - + Broadcast Oddajanje - + Auto Negotiation Samodejno pogajanje - - Clock - Ura - - - - Width - Širina - - - + Memory Address Pomnilniški naslov - + IRQ IRQ - + MAC Address MAC naslov - + Logical Name Logično ime - + Unavailable - + - + Disable Onemogoči @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Ime - + Vendor Proizvajalec - + Model Model - + Bus Info Podatki o vodilu - + Version Različica - + Input/Output Vhod/Izhod - + Memory Pomnilnik - + IRQ IRQ - + Latency Latenca - - Clock - Ura - - - - Width - Širina - - - + Driver Gonilnik - + Capabilities Zmogljivosti @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Ime - + Vendor Proizvajalec - + Model Model - + Version Različica - + Bus Info Podatki o vodilu - + Capabilities Zmogljivosti - + Driver Gonilnik - + Maximum Power Največja moč - + Speed Hitrost - + Serial Number Serijska številka - + Unavailable - + - + Disable Onemogoči @@ -1252,82 +1291,82 @@ DevicePower - + Name Ime - + Model Model - + Vendor Proizvajalec - + Serial Number Serijska številka - + Type VrstaVrsta - + Status Status - + Capacity Zmogljivost - + Voltage Napetost - + Slot Reža - + Design Capacity Načrtovana zmogljivost - + Design Voltage Načrtovana napetost - + SBDS Version SBDS različica - + SBDS Serial Number SBDS serijska številka - + SBDS Manufacture Date SBDS datum izdelave - + SBDS Chemistry SBDS kemija - + Temperature Temperatura @@ -1335,47 +1374,47 @@ DevicePrint - + Name Ime - + Model Model - + Vendor Proizvajalec - + Serial Number Serijska številka - + Shared Skupna raba - + URI URI - + Status Status - + Interface Type Vrsta vmesnika - + Disable Onemogoči @@ -1383,138 +1422,151 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Proizvajalec - - + + Media Type Vrsta nosilca - - + + + Size Velikost - + + + Name + Ime + + + Version Različica - + Capabilities Zmogljivosti - + + + Module Alias + Alias modula + + + + + Physical ID + Fizični ID + + + Firmware Version Različica strojnega programa - + Speed Hitrost - + Description Opis - + Serial Number Serijska številka - + Interface Vmesnik - + Rotation Rate Hitrost vrtenja - + Unavailable - + GetDriverNameWidget - - + + Select a driver for update - + - + No drivers found in this folder - + GetInfoPool - + Loading Audio Device Info... Nalaganje podatkov o zvočni napravi... - + Loading BIOS Info... Nalaganje podatkov o BIOS... - + Loading CD-ROM Info... Nalaganje podatkov o CD-ROM pogonu - + Loading Operating System Info... Nalaganje podatkov o operacijskem sistemu... - + Loading CPU Info... Nalaganje podatkov o procesorju... - + Loading Other Devices Info... Nalaganje podatkov o drugih napravah... - + Loading Power Info... Nalaganje podatkov o napajanju... - + Loading Printer Info... Nalaganje podatkov o tiskalniku... - + Loading Mouse Info... Nalaganje podatkov o miški... - + Loading Network Adapter Info... Nalaganje podatkov o omrežnem vmesniku... @@ -1522,116 +1574,116 @@ LogTreeView - - - + + + Disable Onemogoči - + Unavailable - + LogViewItemDelegate - + Disable Onemogoči - + Unavailable - + MainWindow - + Device Info - export file's name + export file's name Podatki o napravi - + Display shortcuts Bližnjice zaslona - + Close Zapri - + Help Pomoč - + Copy Kopiraj - + System Sistem - + Export Izvozi - + Refresh Osveži - + Device Manager Upravitelj naprav - + Hardware - + - + Drivers - + - + Monitor Monitor - + Overview Pregled - + Display Adapter Grafični vmesnik - + CPU Procesor - + Network Adapter Omrežni vmesnik - + Battery Akumulator @@ -1639,214 +1691,400 @@ PageDetail - + More Več + + PageDriverBackupInfo + + + + Name + Ime + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + Status + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating - + - - - + + + Cancel button Prekini - + Next - + - + Warning - + - + The device will be unavailable after the driver uninstallation - + - + Uninstall button - + - + Uninstalling - + - + Update successful - + - + Uninstallation successful - + - + Update failed - + - + Uninstallation failed - + - + OK button - + - + Next button - + - + The selected folder does not exist, please select again - + - + Update button - + - + Previous button - + - + Broken package - + - + Unmatched package architecture - + - - + + The selected file does not exist, please select again - + - + It is not a driver - + - + Unable to install - no digital signature - + - + Unknown error - + - + The driver module was not found - + - + Invalid module format - + - + The driver module has dependencies - + - PageListView + PageDriverInstallInfo - - Refresh - Osveži + + + + Device Name + Ime naprave - + + Version Available + + + + + + Size + Velikost + + + + + Status + Status + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Ime + + + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Osveži + + + Export Izvozi - + Overview Pregled + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Neuspešen vklop naprave - + Failed to disable the device Neuspešen izklop naprave - + Failed to disable it: unable to get the device SN - + - + Update Drivers - + - + Uninstall Drivers - + PageOverview - + Refresh Osveži - + Export Izvozi - + Copy Kopiraj - + Overview Pregled @@ -1854,937 +2092,917 @@ PageSingleInfo - + Refresh Osveži - + Export Izvozi - + Copy Kopiraj - - + + Enable Omogoči - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - + Disable Onemogoči - - + + Failed to disable it: unable to get the device SN - + - + Failed to disable the device Neuspešen izklop naprave - + Failed to enable the device Neuspešen vklop naprave - + Update Drivers - + - + Uninstall Drivers - + QObject - + SubVendor Podizvajalec - + SubDevice Pod-naprava - + Driver Gonilnik - + Driver Status Status gonilnika - + Driver Activation Cmd Ukaz za aktivacijo gonilnika - - + - + + Config Status Status nastavitev - - - - - - - physical id - fizični id - - - + latency latenca - + Phys Fiz. - + Sysfs Sysfs - + Handlers Ročice - - + + PROP PROP - - + + EV EV - - + + KEY KLJUČ - - Model - Model - - - - Vendor - Proizvajalec - - - + Version Različica - - + + + Bus Vodilo - - + + BIOS Information Podatki o BIOS - - + + Base Board Information Osnovni podatki o plošči - - + + System Information Podatki o sistemu - - + + Chassis Information Podatki o ohišju - - + + Physical Memory Array Polje fizičnega pomnilnika - + Release Date Datum izdaje - + Address Naslov - + Runtime Size Velikost ob zagonu - + ROM Size Velikost ROM - + Characteristics Karakteristike - + BIOS Revision BIOS revizija - + Firmware Revision Revizija strojnega programa - - + + Product Name Ime izdelka - - - + + + Serial Number Serijska številka - - - + + + Asset Tag Oznaka dobrine - - + + Features Funkcionalnost - + Location In Chassis Lokacija v ohišju - + Chassis Handle Ročica ohišja - - + + Type VrstaVrsta - + Contained Object Handles Vsebovane ročice objekta - - + + UUID UUID - + Wake-up Type Vrsta bujenja - - + + SKU Number SKU številka - + Family Rod - + Lock Zaklep - + Boot-up State Zagonsko stanje - + Power Supply State Stanje napajanja - + Thermal State Termalno stanje - + Security Status Varnostni status - + OEM Information OEM podatki - + Height Višina - + Number Of Power Cords Število napajalnih kablov - + Contained Elements Vsebovani predmeti - + Location Lokacija - + Error Correction Type Vrsta popravljanja napak - + Maximum Capacity Največja zmogljivost - - + + Error Information Handle Ročica podatkov ob napakah - + Number Of Devices Število naprav - + BIOS ROMSIZE BIOS velikost ROM - + Release date Datum izdaje - + Board name Ime plošče - + SMBIOS Version SMBIOS različica - + Language Description Format Format opisa jezika - + Installable Languages Jeziki za namestitev - + Currently Installed Language Trenutno nameščen jezik - + BD Address BD naslov - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Vrsta paketa - + Link policy Pravila povezovanja - + Link mode Vrsta povezave - - + + Class Razred - + Service Classes Razred storitve - + Device Class Razred naprave - + HCI Version HCI različice - + LMP Version LMP različica - + Subversion Pod-različica - + Device Naprava - - + + Serial ID Serijski ID - + product proizvod - + description opis - + Powered Napajan - + Discoverable Viden - + Pairable Se lahko pari - + Modalias Mod-alias - + Discovering Odkrivanje - + Driver Modules Moduli gonilnika - - - + + + + + Device File Datoteka naprave - + Device Files Datoteke naprave - - + + + Device Number Številka naprave - - Module Alias - Alias modula - - - + Application Aplikacija - + status status - - + + + logical name logično ime - - + + ansiversion ansir-azličica - + CPU implementer Implementacija procesorja - + CPU architecture Arhitektura procesorja - + CPU variant Izvedba procesorja - + CPU part Del procesorja - + CPU revision Revizija procesorja - + One Ena - + Two Dve - + Four Štiri - + Six Šest - + Eight Osem - + Ten Deset - + Twelve Dvanajst - + Fourteen Štirinajst - + Sixteen Šestnajst - + Eighteen Osemnajst - + Twenty Dvajset - + Twenty-two Dvaindvajset - + Twenty-four Štiriindvajset - + Twenty-six Šestindvajset - + Twenty-eight Osemindvajset - + Thirty Trideset - + Thirty-two Dvaintrideset - + Thirty-four Štirintrideset - + Thirty-six Šestintrideset - + Thirty-eight Osemintrideset - + Forty Štirideset - + Forty-two Dvainštirideset - + Forty-four Štiriinštirideset - + Forty-six Šestinštirideset - + Forty-eight Oseminštirideset - + Fifty Petdeset - + Fifty-two Dvainpetdeset - + Fifty-four Štiriinpetdeset - + Fifty-six Šestinpetdeset - + Fifty-eight Oseminpetdeset - + Sixty Šestdeset - + Sixty-two Dvainšestdeset - + Sixty-four Štiriinšestdeset - + Sixty-six Šestinšestdeset - + Sixty-eight Oseminšestdeset - + Seventy Sedemdeset - + Seventy-two Dvainsedemdeset - + Seventy-four Štiriinsedemdeset - + Seventy-six Šestinsedemdeset - + Seventy-eight Oseminsedemdeset - + Eighty Osemdeset - + Eighty-two Dvainosemdeset - + Eighty-four Štiriinosemdeset - + Eighty-six Šestinosemdeset - + Eighty-eight Oseminosemdeset - + Ninety Devetdeset - + Ninety-two Dvaindevetdeset - + Ninety-four Štiriindevetdeset - + Ninety-six Šestindevetdeset - + Ninety-eight Osemindevetdeset - + One hundred Sto - + One hundred and Two Stodve - + One hundred and four Stoštiri - + One hundred and Six Stošest - + One hundred and Eight Stoosem - + One hundred and Ten Stodeset - + One hundred and Twelve Stodvanajst - + One hundred and Fourteen Stoštirinajst - + One hundred and Sixteen Stošestnajst - + One hundred and Eighteen Stoosemnajst - + One hundred and Twenty Stodvajset - + One hundred and Twenty-two Stodvaindvajset - + One hundred and Twenty-four Stoštiriindvajset - + One hundred and Twenty-six Stošestindvajset - + One hundred and Twenty-eight Stoosemindvajset - + One hundred and Ninety-two - + - + Two hundred and fifty-six Dvestošestinpetdeset @@ -2824,1028 +3042,1124 @@ Različica GLSL - - - + + + Unknown Neznano - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Razred strojne opreme - - - - + + + + CPU Procesor - - - - + + + + No CPU found Procesor ni bil najden - - - - + + + + Motherboard Matična plošča - - - - + + + + No motherboard found Ni najdene osnovne plošče - - - - + + + + Memory Pomnilnik - - - - + + + + No memory found Ni najdenega pomnilnika - - - - + + + + Storage Shramba - - - - + + + + No disk found Ni najdenega diska - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Grafični vmesnik - - - - + + + + No GPU found Ni najdene GPE - - - - + + + + Monitor Monitor - - - - + + + + No monitor found Ni najdenega monitorja - - - - - + + + + + Network Adapter Omrežni vmesnik - - - - + + + + No network adapter found Ni najdenega omrežnega vmesnika - - - - - + + + + + Sound Adapter Zvočni vmesnik - - - - + + + + No audio device found Ni najdene zvočne naprave - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Ni najdene bluetooth naprave - - - - + + + + Other PCI Devices Druge PCI naprave - - - - + + + + No other PCI devices found Ni najdenih drugih PCI naprav - - - - + + + + Power Napajanje - - - - + + + + No battery found Ni najdenega akumulatorja - - - - - + + + + + Keyboard Tipkovnica - - - - + + + + No keyboard found Ni najdene tipkovnice - - - - - + + + + + Mouse Miška - - - - + + + + No mouse found Ni najdene miške - - - - - - + + + + + + Printer Tiskalnik - - - - + + + + No printer found Ni najdenega tiskalnika - - - - + + + + Camera Kamera - - - - + + + + No camera found Ni najdene kamere - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Ni najdenega CD-ROM pogona - - - - - + + + + + Other Devices Druge naprave - - - - + + + + No other devices found Ni najdenih drugih naprav - + Array Handle Ročica polja - + Form Factor Oblikovni faktor - + Set Nabor - + Bank Locator Lokator banke - + Type Detail Podrobnosti o vrsti - + Part Number Številka dela - + Rank Uvrstitev - + Memory Technology Tehnologija pomnilnika - + Memory Operating Mode Capability Zmožnosti načina delovanja pomnilnika - + Firmware Version Različica strojnega programa - + Module Manufacturer ID ID proizvajalca modula - + Module Product ID ID izdelka modula - + Memory Subsystem Controller Manufacturer ID ID proizvajalca kontrolerja pomnilniškega podsistema - + Memory Subsystem Controller Product ID ID izdelka kontrolerja pomnilniškega podsistema - + Non-Volatile Size Ohlapna velikost - + Volatile Size Obstojna velikost - + Cache Size Velikost medpomnilnika - + Logical Size Logična velikost - - - - - + + + + + inch palcev - + Date Datum - + ioport V/I-vrata - + network omrežje - - + battery akumulator - + native-path izvorna pot - + power supply napajalnik - + updated posodobljeno - + has history ima zgodovino - + has statistics ima statistiko - + rechargeable možnost polnjenja - + state stanje - + warning-level opozorilni nivo - + energy energija - + energy-empty energija-prazno - + energy-full energija-polno - + energy-full-design energija-polno-načrtovano - + energy-rate enerijga-stopnja - + voltage napetost - + percentage odstotek - + technology tehnologija - + icon-name ime-ikone - + online povezano - + daemon-version različica pritajenega demona - + on-battery na-akumulatorju - + lid-is-closed poklopec-je-zaprt - + lid-is-present poklopec-je-na-voljo - + critical-action kritično-dejanje - + copies kopije - + job-cancel-after prekini-opravilo-po - + job-hold-until zadrži-opravilo-po - + job-priority prioriteta-opravila - + marker-change-time označba-spremembe-časa - + number-up število-gor - + orientation-requested orientacija-zahtevana - + print-color-mode tiskanje-barvni-način - + printer-is-accepting-jobs tiskalni-sprejema-opravila - + printer-is-shared tiskalnik-v-skupni-rabi - + printer-is-temporary tiskalnik-je-začasen - + printer-make-and-model tiskalnik-izdelava-in-model - + printer-state-change-time tiskalnik-stanje-sprememba-čas - + printer-state-reasons tiskalnik-stanje-razlogi - + printer-type tiskalnik-vrsta - + printer-uri-supported tiskalnik-url-podprt - + sides strani - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info podatki vodila - + logicalsectorsize velikostlogičnegasektorja - + sectorsize velikostsektorja - + guid guid - + Geometry (Logical) Geometrija (logična) - - + + Device Manager Upravitelj naprav - + Device Manager is a handy tool for viewing hardware information and managing the devices. Upravitelj naprav je priročno orodje za prikaz podatkov o strojni opremi in upravljanje naprav. - + New drivers available! Install or update them now. - + - + + View + + + + Include subfolders - + - + Search for drivers in this path - + - - - - Device Name - Ime naprave + + %1 driver updates available + - - Version Available - + + + Time checked: %1 + - - - Size - Velikost + + Downloading drivers for %1... + - - - Status - Status + + Download speed: %1 Downloaded %2/%3 + - - - Action - + + Installing drivers for %1... + - - New Version - + + %1 drivers installed, %2 drivers failed + - - Current Version - + + %1 drivers installed + - - Missing drivers (%1) - + + Failed to install drivers + - - Outdated drivers (%1) - + + Network error. Reconnecting... + - - Up-to-date drivers (%1) - + + Download speed: %1 + - - %1 driver updates available - + + Your drivers are up to date + - - - Time checked: %1 - + + All drivers have been backed up + - - Downloading drivers for %1... - + + + A total of %1 drivers, of which %2 have been backed up + - - Download speed: %1 Downloaded %2/%3 - + + You have %1 drivers that can be backed up, it is recommended to do so immediately + - - Installing drivers for %1... - + + You have %1 drivers that can be backed up + - - %1 drivers installed, %2 drivers failed - + + Backing up the %1 driver, a total of %2 drivers + - - %1 drivers installed - + + Backing up: %1 + - - Failed to install drivers - + + %1 drivers backed up, %2 drivers failed + - - Network error. Reconnecting... - + + Failed to backup drivers + - - Download speed: %1 - + + %1 drivers backed up + - - Your drivers are up to date - + + You have %1 drivers that can be restored + - + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot - + - + Please %1 for the installed drivers to take effect - + + + + + View backup path + + + + + Backup All + - - + + submit feedback - + - + Please try again or %1 to us - + - + Install All - + - - + + Scan Again - + - + Cancel Prekini - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable - + - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? - + - + + + Exit button - + - + + + Cancel button Prekini - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter - + - - + + Imaging device - + - + Display adapter - + - + Sound card - + - + Network adapter - + - + Wireless network adapter - + - + Installation successful - + - + Installation failed - + - + Downloading - + - + Installing - + - + Not installed - + - + Out-of-date - + - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error - + - + Network error - + - + Canceled - + - + Failed to get driver files - + - + Update - + - + + Backup + + + + + Restore + + + + Install - + TableWidget - - + + Disable Onemogoči - + Refresh Osveži - + Export Izvozi - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - - + + Enable Omogoči @@ -3853,45 +4167,45 @@ TextBrowser - + Refresh Osveži - + Export Izvozi - + Copy Kopiraj - + Disable Onemogoči - + Unavailable - + UrlChooserEdit - + Select a local folder please - + WaitingWidget - + Loading... Nalaganje... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_sq.ts b/deepin-devicemanager/translations/deepin-devicemanager_sq.ts index 99900b2f1..955209551 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_sq.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_sq.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Më tepër @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Më tepër - + Collapse Tkurre @@ -51,14 +63,14 @@ DetailTreeView - - + + More Më tepër - - + + Collapse Tkurre @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Çaktivizoje - + Unavailable Jo i passhëm @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Emër Pajisjeje - - + + Name Emër - - + + Vendor Prodhues - - Model - Model + + Chip + - - Version - Version + + Capabilities + Aftësi - - Bus Info - Të dhëna Busi + + + Module Alias + Alias Moduli - - Chip - + + + Physical ID + ID Fizike - - Capabilities - Aftësi + + SysFS_Path + + + + + Description + Përshkrim - - Clock - Sahat + + Revision + - - Width - Gjerësi + + KernelModeDriver + - + Memory Address Adresë Kujtese - + IRQ IRQ - + Unavailable Jo i passhëm - + Disable Çaktivizoje @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Emër - + Vendor Prodhues - + Model Model @@ -173,90 +192,100 @@ DeviceBios - + Vendor Prodhues - + Version Version - + Chipset - + DeviceBluetooth - + Name Emër - + Vendor Prodhues - + Version Version - + Model Model - + + Module Alias + Alias Moduli + + + + Physical ID + ID Fizike + + + Speed Shpejtësi - + Maximum Power Maksimum Fuqie - + Driver Version Version Përudhësi - + Driver Përudhës - + Capabilities Aftësi - + Bus Info Të dhëna Busi - + Logical Name Emër Logjik - + MAC Address Adresë Mac - + Unavailable Jo i passhëm - + Disable Çaktivizoje @@ -264,57 +293,67 @@ DeviceCdrom - + Name Emër - + Vendor Prodhues - + Model Model - + Version Version - + Bus Info Të dhëna Busi - + Capabilities Aftësi - + Driver Përudhës - + Maximum Power Maksimum Fuqie - + Speed Shpejtësi - + + Module Alias + Alias Moduli + + + + Physical ID + ID Fizike + + + Unavailable Jo i passhëm - + Disable Çaktivizoje @@ -322,7 +361,7 @@ DeviceComputer - + Name Emër @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Emër - - + + Vendor Prodhues - + CPU ID ID CPU-je - + Core ID - + - + Threads Rrjedha - - Current Speed - Shpejtësi e Tanishme - - - + BogoMIPS BogoMIPS - - + + Architecture Arkitekturë - + CPU Family Familje CPU-sh - + Model Model - - + + Processor Procesor - + Core(s) - + - + Virtualization Virtualizim - + Flags Flamurka - + Extensions Zgjerime - + L3 Cache Fshehtinë l3 - + L2 Cache Fshehtinë L2 - + L1i Cache Fshehtinë L1i - + L1d Cache Fshehtinë L1d - + Stepping - + - + Speed Shpejtësi - + + + Max Speed Shpejtësi Maks. @@ -447,132 +483,127 @@ DeviceGpu - + Name Emër - + Vendor Prodhues - + Model Model - + Version Version - + Graphics Memory Kujtesë Grafike - + + Module Alias + Alias Moduli + + + Physical ID ID Fizike - + Memory Address Adresë Kujtese - + IO Port Portë IO - + Bus Info Të dhëna Busi - + Maximum Resolution Qartësi Maksimum - + Minimum Resolution Qartësi Minimum - + Current Resolution Qartësi e Tanishme - + Driver Përudhës - + Description Përshkrim - - Clock - Sahat - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput - + - + Display Output - + - + Capabilities Aftësi - + IRQ IRQ - - Width - Gjerësi - - - + Unavailable Jo i passhëm @@ -580,62 +611,72 @@ DeviceImage - + Name Emër - + Vendor Prodhues - + Version Version - + Model Model - + Bus Info Të dhëna Busi - + + Module Alias + Alias Moduli + + + + Physical ID + ID Fizike + + + Speed Shpejtësi - + Maximum Power Maksimum Fuqie - + Driver Përudhës - + Capabilities Aftësi - + Serial Number Numër Serial - + Unavailable Jo i passhëm - + Disable Çaktivizoje @@ -643,62 +684,72 @@ DeviceInput - + Name Emër - + Vendor Prodhues - + Model Model - + Interface Ndërfaqe - + Bus Info Të dhëna Busi - + + Module Alias + Alias Moduli + + + + Physical ID + ID Fizike + + + Speed Shpejtësi - + Maximum Current Rrymë Maksimum - + Driver Përudhës - + Capabilities Aftësi - + Version Version - + Unavailable Jo i passhëm - + Disable Çaktivizoje @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Përmbledhje - - - + + + CPU CPU - - + + CPU quantity Sasi CPU-sh - - + + Motherboard Skeda mëmë - - + + Memory Kujtesë - - + + Display Adapter Përshtatës Ekrani - - + + Sound Adapter Përshtatës Zëri - - + + Storage Depozitim - - + + Other PCI Devices Pajisje të tjera PCI - - + + Battery Bateri - - + + Bluetooth Bluetooth - - + + Network Adapter Përshtatës Rrjeti - - + + Mouse Mi - - + + Keyboard Tastierë - - + + Monitor Monitor - - + + CD-ROM CD-ROM - - + + Printer Shtypës - - + + Camera Kamerë - - + + Other Devices Other Input Devices Pajisje të Tjera - - - + + + Device Pajisje - - - + + + OS OS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Emër - - + + Vendor Prodhues - - + + Size Madhësi - - + + Type Lloj - - + + Speed Shpejtësi - + Total Width Gjerësi Gjithsej - + Locator - + - + Serial Number Numër Serial - + Configured Voltage Voltazh i Formësuar - + Maximum Voltage Voltazh Maksimum - + Minimum Voltage Voltazh Minimum - + Configured Speed Shpejtësi e Formësuar - + Data Width Gjerësi të Dhënash @@ -920,200 +971,198 @@ DeviceMonitor - + Name Emër - + Vendor Prodhues - + Type Lloj - + Display Input - + - + Interface Type Lloj Ndërfaqeje - + Support Resolution Qartësi e Mbuluar - + Current Resolution Qartësi e Tanishme - + Display Ratio Përpjesëtim Ekrani - + Primary Monitor Monitor Parësor - + Size Madhësi - + Serial Number Numër Serial - - - Product Date - Datë Produkti - DeviceNetwork - + + Name Emër - + + Vendor Prodhues - + + Type Lloj - + Version Version - + Bus Info Të dhëna Busi - + Capabilities Aftësi - + Driver Përudhës - + Driver Version Version Përudhësi - + + Module Alias + Alias Moduli + + + + Physical ID + ID Fizike + + + Maximum Rate - + - + Negotiation Rate - + - + Port Portë - + Multicast Multikast - + Link Lidhje - + Latency Vonesë - + IP IP - + Firmware Firmware - + Duplex Dupleks - + Broadcast Transmetim - + Auto Negotiation - + - - Clock - Sahat - - - - Width - Gjerësi - - - + Memory Address Adresë Kujtese - + IRQ IRQ - + MAC Address Adresë Mac - + Logical Name Emër Logjik - + Unavailable Jo i passhëm - + Disable Çaktivizoje @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Emër - + Vendor Prodhues - + Model Model - + Bus Info Të dhëna Busi - + Version Version - + Input/Output Input/Output - + Memory Kujtesë - + IRQ IRQ - + Latency Vonesë - - Clock - Sahat - - - - Width - Gjerësi - - - + Driver Përudhës - + Capabilities Aftësi @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Emër - + Vendor Prodhues - + Model Model - + Version Version - + Bus Info Të dhëna Busi - + Capabilities Aftësi - + Driver Përudhës - + Maximum Power Maksimum Fuqie - + Speed Shpejtësi - + Serial Number Numër Serial - + Unavailable Jo i passhëm - + Disable Çaktivizoje @@ -1252,82 +1291,82 @@ DevicePower - + Name Emër - + Model Model - + Vendor Prodhues - + Serial Number Numër Serial - + Type Lloj - + Status Gjendje - + Capacity Kapacitet - + Voltage Voltazh - + Slot Vend - + Design Capacity - + - + Design Voltage - + - + SBDS Version Version SBDS - + SBDS Serial Number Numër Serial SBDS - + SBDS Manufacture Date Datë Prodhimi SBDS - + SBDS Chemistry - + - + Temperature Temperaturë @@ -1335,47 +1374,47 @@ DevicePrint - + Name Emër - + Model Model - + Vendor Prodhues - + Serial Number Numër Serial - + Shared E përbashkët - + URI URI - + Status Gjendje - + Interface Type Lloj Ndërfaqeje - + Disable Çaktivizoje @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Prodhues - - + + Media Type Lloj Media - - + + + Size Madhësi - + + + Name + Emër + + + Version Version - + Capabilities Aftësi - + + + Module Alias + Alias Moduli + + + + + Physical ID + ID Fizike + + + Firmware Version Version Firmware-i - + Speed Shpejtësi - + Description Përshkrim - + Serial Number Numër Serial - + Interface Ndërfaqe - + Rotation Rate Shpejtësi Rrotullimi - + Unavailable Jo i passhëm @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Përzgjidhni një përudhës për përditësim - + No drivers found in this folder S’u gjetën përudhësa në këtë dosje @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Po ngarkohen të Dhëna Pajisjeje Audio… - + Loading BIOS Info... Po ngarkohet të Dhëna BIOS-i… - + Loading CD-ROM Info... Po ngarkohen të Dhëna CD-ROM-i… - + Loading Operating System Info... Po ngarkohen të Dhëna Sistemi Operativ… - + Loading CPU Info... Po ngarkohet të Dhëna CPU-je… - + Loading Other Devices Info... Po ngarkohen të Dhëna Pajisjesh të Tjera… - + Loading Power Info... Po ngarkohen të Dhëna Energjie… - + Loading Printer Info... Po ngarkohen të Dhëna Shtypësi… - + Loading Mouse Info... Po ngarkohen të Dhëna Miu… - + Loading Network Adapter Info... Po ngarkohen të Dhëna Përshtatësi Rrjeti… @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Çaktivizoje - + Unavailable Jo i passhëm @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Çaktivizoje - + Unavailable Jo i passhëm @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Të dhëna Pajisjeje - + Display shortcuts Shfaq shkurtore - + Close Mbylle - + Help Ndihmë - + Copy Kopjoje - + System Sistem - + Export Eksporto - + Refresh Rifreskoje - + Device Manager Përgjegjës Pajisjesh - + Hardware - + - + Drivers Përudhës - + Monitor Monitor - + Overview Përmbledhje - + Display Adapter Përshtatës Ekrani - + CPU CPU - + Network Adapter Përshtatës Rrjeti - + Battery Bateri @@ -1639,191 +1691,377 @@ PageDetail - + More Më tepër + + PageDriverBackupInfo + + + + Name + Emër + + + + + Current Version + Version i Tanishëm + + + + + Driver Platform Version + + + + + Status + Gjendje + + + + Action + Veprim + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Po përditësohet - - - + + + Cancel button Anuloje - + Next Pasuesi - + Warning Kujdes - + The device will be unavailable after the driver uninstallation Pajisja s’do të jetë e përdorshme, pas çinstalimit të përudhësit - + Uninstall button Çinstaloje - + Uninstalling Po çinstalohet - + Update successful Përditësim i suksesshëm - + Uninstallation successful Çinstalim i suksesshëm - + Update failed Përditësimi dështoi - + Uninstallation failed Çinstalimi dështoi - + OK button OK - + Next button Pasuesi - + The selected folder does not exist, please select again Dosja e përzgjedhur s’ekziston, ju lutemi, ripërzgjidhni - + Update button Përditësoje - + Previous button E mëparshmja - + Broken package Paketë e dëmtuar - + Unmatched package architecture Mospërputhje arkitekture pakete - - + + The selected file does not exist, please select again Kartela e përzgjedhur s’ekziston, ju lutemi, ripërzgjidhni - + It is not a driver S’është përudhës - + Unable to install - no digital signature S’arrihet të instalohet - s’ka nënshkrim dixhital - + Unknown error Gabim i panjohur - + The driver module was not found S’u gjet modul përudhësi - + Invalid module format Format i pavlefshëm modulesh - + The driver module has dependencies Moduli i përudhësit ka varësi - PageListView + PageDriverInstallInfo - - Refresh - Rifreskoje + + + + Device Name + Emër Pajisjeje - - Export - Eksporto + + Version Available + Version i Gatshëm + + + + + Size + Madhësi + + + + + Status + Gjendje + + + + + Action + Veprim + + + + New Version + Version i Ri - + + Current Version + Version i Tanishëm + + + + Missing drivers (%1) + Mungojnë përudhës (%1) + + + + Outdated drivers (%1) + Përudhës të vjetruar (%1) + + + + Up-to-date drivers (%1) + Përudhës të përditësuar (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Emër + + + + Current Version + Version i Tanishëm + + + + Backup Version + + + + + Action + Veprim + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Rifreskoje + + + + Export + Eksporto + + + Overview Përmbledhje + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device S’u arrit të aktivizohej pajisja - + Failed to disable the device S’u arrit të çaktivizohej pajisja - + Failed to disable it: unable to get the device SN S’u arrit të çaktivizohet: s’arrihet të merret numër serial i pajisjes - + Update Drivers Përditësoni Përudhës - + Uninstall Drivers Çinstaloni Përudhës @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Rifreskoje - + Export Eksporto - + Copy Kopjoje - + Overview Përmbledhje @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Rifreskoje - + Export Eksporto - + Copy Kopjoje - - + + Enable Aktivizoje - + Update drivers Përditësoni përudhës - + Uninstall drivers Çinstaloni përudhës - + Allow it to wake the computer Lejoje të zgjojë kompjuterin - + Disable Çaktivizoje - - + + Failed to disable it: unable to get the device SN S’u arrit të çaktivizohet: s’arrihet të merret numër serial i pajisjes - + Failed to disable the device S’u arrit të çaktivizohej pajisja - + Failed to enable the device S’u arrit të aktivizohej pajisja - + Update Drivers Përditëso Përudhës - + Uninstall Drivers Çinstaloni Përudhës @@ -1924,867 +2162,847 @@ QObject - + SubVendor NënShitës - + SubDevice NënPajisje - + Driver Përudhës - + Driver Status Gjendje Përudhësi - + Driver Activation Cmd Urdhër Aktivizimi Përudhësi - - + - + + Config Status Gjendje Formësimi - - - - - - - physical id - ID fizike - - - + latency vonesë - + Phys - + - + Sysfs Sysfs - + Handlers - + - - + + PROP PROP - - + + EV EV - - + + KEY KYÇ - - Model - Model - - - - Vendor - Prodhues - - - + Version Version - - + + + Bus Bus - - + + BIOS Information Të dhëna BIOS-i - - + + Base Board Information Të dhëna Skede Bazë - - + + System Information Të dhëna Mbi Sistemin - - + + Chassis Information Të dhëna Shasie - - + + Physical Memory Array - + - + Release Date Datë Hedhjeje Në Qarkullim - + Address Adresë - + Runtime Size - + - + ROM Size Madhësi ROM-i - + Characteristics Karakteristika - + BIOS Revision Rishikim BIOS-i - + Firmware Revision Rishikim Firmware-i - - + + Product Name Emër Produkti - - - + + + Serial Number Numër Serial - - - + + + Asset Tag Etiketë Burimi - - + + Features Veçori - + Location In Chassis Vend Në Shasi - + Chassis Handle Dorezë Shasie - - + + Type Lloj - + Contained Object Handles - + - - + + UUID UUID - + Wake-up Type Lloj Zgjimi - - + + SKU Number Numër SKU - + Family Familje - + Lock - + - + Boot-up State Gjendje Nisjeje - + Power Supply State Gjendje Burimi Energjie - + Thermal State Gjendje Termike - + Security Status Gjendje Sigurie - + OEM Information Të dhëna OEM - + Height Lartësi - + Number Of Power Cords Numër Kabllosh Energjie - + Contained Elements Elementë të Përmbajtur - + Location Vendndodhje - + Error Correction Type Lloj Ndreqjeje Gabimi - + Maximum Capacity Kapacitet Maksikum - - + + Error Information Handle - + - + Number Of Devices Numër Pajisjesh - + BIOS ROMSIZE MADHËSI ROM BIOS-I - + Release date Datë hedhjeje në qarkullim - + Board name Emër skede - + SMBIOS Version Version SMBIOS - + Language Description Format Format Përshkrimi Gjuhësh - + Installable Languages Gjuhë të Instalueshme - + Currently Installed Language Gjuhë Aktualisht e Instaluar - + BD Address Adresë BD - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Lloj paketi - + Link policy Rregull lidhjesh - + Link mode Mënyrë lidhjesh - - + + Class Klasë - + Service Classes Klasa Shërbimesh - + Device Class Klasë Pajisjesh - + HCI Version Version HCI - + LMP Version Version LMP - + Subversion Nënversion - + Device Pajisje - - + + Serial ID ID Seriale - + product produkt - + description përshkrim - + Powered - + - + Discoverable - + - + Pairable - + - + Modalias - + - + Discovering - + - + Driver Modules Module Përudhësi - - - + + + + + Device File Kartelë Pajisje - + Device Files Kartela Pajisjesh - - + + + Device Number Numër Pajisjeje - - Module Alias - Alias Moduli - - - + Application Aplikacion - + status gjendje - - + + + logical name emër logjik - - + + ansiversion - + - + CPU implementer Sendërtues CPU-je - + CPU architecture Arkitekturë CPU-je - + CPU variant Variant CPU-je - + CPU part - + - + CPU revision - + - + One Një - + Two Dy - + Four Katër - + Six Gjashtë - + Eight Tetë - + Ten Dhjetë - + Twelve Dymbëdhjetë - + Fourteen Katërmbëdhjetë - + Sixteen Gjashtëmbëdhjetë - + Eighteen Tetëmbëdhjetë - + Twenty Njëzet - + Twenty-two Njëzet e dy - + Twenty-four Njëzet e katër - + Twenty-six Njëzet e gjashtë - + Twenty-eight Njëzet e tetë - + Thirty Tridhjetë - + Thirty-two Tridhjetë e dy - + Thirty-four Tridhjetë e katër - + Thirty-six Tridhjetë e gjashtë - + Thirty-eight Tridhjetë e tetë - + Forty Dyzet - + Forty-two Dyzetë e dy - + Forty-four Dyzetë e katër - + Forty-six Dyzetë e gjashtë - + Forty-eight Dyzet e tetë - + Fifty Pesëdhjetë - + Fifty-two Pesëdhjetë e dy - + Fifty-four Pesëdhjetë e katër - + Fifty-six Pesëdhjetë e gjashtë - + Fifty-eight Pesëdhjetë e tetë - + Sixty Gjashtëdhjetë - + Sixty-two Gjashtëdhjetë e dy - + Sixty-four Gjashtëdhjetë e katër - + Sixty-six Gjashtëdhjetë e gjashtë - + Sixty-eight Gjashtëdhjetë e tetë - + Seventy Shtatëdhjetë - + Seventy-two Shtatëdhjetë e dy - + Seventy-four Shtatëdhjetë e katër - + Seventy-six Shtatëdhjetë e gjashtë - + Seventy-eight Shtatëdhjetë e tetë - + Eighty Tetëdhjetë - + Eighty-two Tetëdhjetedy - + Eighty-four Tetëdhjetë e katër - + Eighty-six Tetëdhjetë e gjashtë - + Eighty-eight Tetëdhjetë e të - + Ninety Nëntëdhjetë - + Ninety-two Nëntëdhjetë e dy - + Ninety-four Nëntëdhjetë e katër - + Ninety-six Nëntëdhjetë e gjashtë - + Ninety-eight Nëntëdhjetë e tetë - + One hundred Njëqind - + One hundred and Two Njëqind e dy - + One hundred and four Njëqind e katër - + One hundred and Six Njëqind e gjashtë - + One hundred and Eight Njëqind e tetë - + One hundred and Ten Njëqind e dhjetë - + One hundred and Twelve Njëqind e dymbëdhjetë - + One hundred and Fourteen Njëqind e katërmbëdhjetë - + One hundred and Sixteen Njëqind e gjashtëmbëdhjetë - + One hundred and Eighteen Njëqind e tetëmbëdhjetë - + One hundred and Twenty Njëqind e njëzet - + One hundred and Twenty-two Njëqind e njëzet e dy - + One hundred and Twenty-four Njëqind e njëzet e katër - + One hundred and Twenty-six Njëqind e njëzet e gjashtë - + One hundred and Twenty-eight Njëqind e njëzet e tetë - + One hundred and Ninety-two Njëqind e nëntëdhjetë e dy - + Two hundred and fifty-six Dyqindepesëdhjetëegjashtë @@ -2824,988 +3042,1084 @@ Version GLSL-je - - - + + + Unknown E panjohur - + Uniq - + - + MSC MSC - - + + + Hardware Class Klasë Hardware-i - - - - + + + + CPU CPU - - - - + + + + No CPU found S’u gjet CPU - - - - + + + + Motherboard Skeda mëmë - - - - + + + + No motherboard found S’u gjet skedë mëmë - - - - + + + + Memory Kujtesë - - - - + + + + No memory found S’u gjet kujtesë - - - - + + + + Storage Depozitim - - - - + + + + No disk found S’u gjet disk - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Përshtatës Ekrani - - - - + + + + No GPU found S’u gjet GPU - - - - + + + + Monitor Monitor - - - - + + + + No monitor found S’u gjet monitor - - - - - + + + + + Network Adapter Përshtatës Rrjeti - - - - + + + + No network adapter found S’u gjet përshtatës rrjeti - - - - - + + + + + Sound Adapter Përshtatës Zëri - - - - + + + + No audio device found S’u gjet pajisje audio - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found S’u gjet pajisje Bluetooth - - - - + + + + Other PCI Devices Pajisje të tjera PCI - - - - + + + + No other PCI devices found S’u gjetën pajisje të tjera PCI - - - - + + + + Power Energji - - - - + + + + No battery found S'u gjet bateri - - - - - + + + + + Keyboard Tastierë - - - - + + + + No keyboard found S’u gjet tastierë - - - - - + + + + + Mouse Mi - - - - + + + + No mouse found S’u gjet mi - - - - - - + + + + + + Printer Shtypës - - - - + + + + No printer found S’u gjet shtypës - - - - + + + + Camera Kamerë - - - - + + + + No camera found S’u gjet kamera - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found S’u gjet CD-ROM - - - - - + + + + + Other Devices Pajisje të Tjera - - - - + + + + No other devices found S’u gjetën pajisje të tjera - + Array Handle - + - + Form Factor - + - + Set - + - + Bank Locator - + - + Type Detail Hollësi Lloji - + Part Number Numër Pjese - + Rank - + - + Memory Technology Teknologji Kujtese - + Memory Operating Mode Capability Aftësi Mënyrash Funksionimi Kujtese - + Firmware Version Version Firmware-i - + Module Manufacturer ID ID Prodhuesi Moduli - + Module Product ID ID Produkti Moduli - + Memory Subsystem Controller Manufacturer ID ID Prodhuesi Kontrollori Nënsistemi Kujtese - + Memory Subsystem Controller Product ID ID Produkti Kontrollori Nënsistemi Kujtese - + Non-Volatile Size - + - + Volatile Size - + - + Cache Size Madhësi Fshehtine - + Logical Size Madhësi Logjike - - - - - + + + + + inch inç - + Date Datë - + ioport ioport - + network rrjet - - + battery bateri - + native-path - + - + power supply burim energjie - + updated përditësuar më - + has history ka historik - + has statistics ka statistika - + rechargeable e ringarkueshme - + state gjendje - + warning-level shkallë sinjalizimi - + energy energji - + energy-empty pa-energji - + energy-full energjia-plot - + energy-full-design - + - + energy-rate shkallë-energjie - + voltage voltazh - + percentage përqindje - + technology teknologji - + icon-name emër-ikone - + online - + - + daemon-version version-demoni - + on-battery nën-bateri - + lid-is-closed kapaku-është-i-mbyllur - + lid-is-present ka-kapak - + critical-action veprim-kritik - + copies kopje - + job-cancel-after anulim-akti-pas - + job-hold-until mbajtje-akti-deri-më - + job-priority përparësi-akti - + marker-change-time kohë-ndërrimi-boje - + number-up - + - + orientation-requested - + - + print-color-mode mënyrë-ngjyrash-shtypësi - + printer-is-accepting-jobs shtypësi-pranon-akte - + printer-is-shared shtypësi-është-i-përbashkët - + printer-is-temporary shtypësi-është-i-përkohshëm - + printer-make-and-model prodhues-dhe-model-shtypësi - + printer-state-change-time kohë-ndryshimi-gjendjeje-shtypësi - + printer-state-reasons - + - + printer-type lloj-shtypësi - + printer-uri-supported - + - + sides anë - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info të dhëna busi - + logicalsectorsize - + - + sectorsize - + - + guid guid - + Geometry (Logical) Gjeometri (Logjike) - - + + Device Manager Përgjegjës Pajisjesh - + Device Manager is a handy tool for viewing hardware information and managing the devices. Përgjegjësi i Pajisjeve është një mjet i dobishëm për të parë të dhëna hardware dhe për administrim pajisjesh. - + New drivers available! Install or update them now. Ka përudhës të rinj! Instalojini, ose përditësojini tani. - + + View + + + + Include subfolders Përfshi nëndosje - + Search for drivers in this path Kërko për përudhës në këtë shteg - - - - Device Name - Emër Pajisjeje - - - - Version Available - Version i Gatshëm - - - - - Size - Madhësi - - - - - Status - Gjendje - - - - - Action - Veprim - - - - New Version - Version i Ri - - - - Current Version - Version i Tanishëm - - - - Missing drivers (%1) - Mungojnë përudhës (%1) - - - - Outdated drivers (%1) - Përudhës të vjetruar (%1) - - - - Up-to-date drivers (%1) - Përudhës të përditësuar (%1) - - - + %1 driver updates available %1 përditësime përudhësish të gatshme - - + + Time checked: %1 Kohë kontrolli: %1 - + Downloading drivers for %1... Po shkarkohen përudhësa për %1… - + Download speed: %1 Downloaded %2/%3 Shpejtësi shkarkimi: %1 Të shkarkuar %2/%3 - + Installing drivers for %1... Po instalohen përudhës për %1… - + %1 drivers installed, %2 drivers failed U instaluan %1 përudhës, dështoi instalimi për %2 përudhës - + %1 drivers installed U instaluan %1 përudhës - + Failed to install drivers S’u arrit të instalohet përudhës - + Network error. Reconnecting... Gabim rrjeti. Po rilidhet… - + Download speed: %1 Shpejtësi shkarkimi: %1 - + Your drivers are up to date Përudhësit tuaj janë të përditësuar - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot riniseni - + Please %1 for the installed drivers to take effect Ju lutemi, %1 që të hyjnë në fuqi përudhësit e instaluar - - + + View backup path + + + + + Backup All + + + + + submit feedback jepni përshtypjet - + Please try again or %1 to us Ju lutemi, riprovoni, ose na %1 - + Install All Instaloji Krejt - - + + Scan Again Rikontrollo - + Cancel Anuloje - + Scanning hardware device drivers, please wait... Po kontrollohet për përudhës pajisjesh hardware, ju lutemi, pritni… - - + + Scanning %1 Po kontrollohet %1 - + Scan failed Kontrolli dështoi - + Network unavailable S’ka lidhje në rrjet - + Please check your network connection Ju lutemi, kontrolloni lidhjen tuaj në rrjet - + Please scan again or %1 to us Ju lutemi, rikontrolloni, ose na %1 - + You are installing a driver, which will be interrupted if you exit. Po instaloni një përudhës, çka do të ndalet, nëse dilni. - + + + Are you sure you want to exit? Jeni i sigurt se doni të dilet? - + + + Exit button Dil - + + + Cancel button Anuloje - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Përshtatës Bluetooth - - + + Imaging device Pajisje Figurash - + Display adapter Përshtatës ekrani - + Sound card Kartë zëri - + Network adapter Përshtatës rrjeti - + Wireless network adapter Përshtatës rrjeti pa fill - + Installation successful Instalim i suksesshëm - + Installation failed Instalimi dështoi - + Downloading Po shkarkohet - + Installing Po instalohet - + Not installed Jo i instaluar - + Out-of-date I vjetruar - + Waiting Po pritet - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Gabim i panjohur - + Network error Gabim rrjeti - + Canceled Anuluar - + Failed to get driver files S’u arrit të merren kartela përudhësi - + Update Përditësoje - + + Backup + + + + + Restore + + + + Install Instaloje @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Çaktivizoje - + Refresh Rifreskoje - + Export Eksporto - + Update drivers Përditësoni përudhës - + Uninstall drivers Çinstaloni përudhës - + Allow it to wake the computer Lejoje të zgjojë kompjuterin - - + + Enable Aktivizoje @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Rifreskoje - + Export Eksporto - + Copy Kopjoje - + Disable Çaktivizoje - + Unavailable Jo i passhëm @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Ju lutemi, përzgjidhni një dosje @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Po ngarkohet… - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_sr.ts b/deepin-devicemanager/translations/deepin-devicemanager_sr.ts index 476713c82..cd3cb6049 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_sr.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_sr.ts @@ -1,17 +1,29 @@ - + + + BtnLabel - + + OK + + + + + Feedback + + + + OK button - + CmdButtonWidget - + More Више @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More Више - + Collapse Скупи @@ -51,14 +63,14 @@ DetailTreeView - - + + More Више - - + + Collapse Скупи @@ -66,88 +78,95 @@ DetailViewDelegate - - + + Disable Онемогући - + Unavailable - + DeviceAudio - + Device Name Назив уређаја - - + + Name Назив - - + + Vendor Произвођач - - Model - Модел + + Chip + Чип - - Version - Верзија + + Capabilities + Могућности - - Bus Info - Подаци магистрале + + + Module Alias + Псеудоним модула - - Chip - Чип + + + Physical ID + Физички ИД - - Capabilities - Могућности + + SysFS_Path + - - Clock - Радни такт + + Description + Опис + + + + Revision + - - Width - Ширина + + KernelModeDriver + - + Memory Address Меморијска адреса - + IRQ IRQ - + Unavailable - + - + Disable Онемогући @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Назив - + Vendor Произвођач - + Model Модел @@ -173,17 +192,17 @@ DeviceBios - + Vendor Произвођач - + Version Верзија - + Chipset Чипсет @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Назив - + Vendor Произвођач - + Version Верзија - + Model Модел - + + Module Alias + Псеудоним модула + + + + Physical ID + Физички ИД + + + Speed Брзина - + Maximum Power Максимална снага - + Driver Version Верзија управљача - + Driver Управљач - + Capabilities Могућности - + Bus Info Подаци магистрале - + Logical Name Логички назив - + MAC Address МАК адреса - + Unavailable - + - + Disable Онемогући @@ -264,57 +293,67 @@ DeviceCdrom - + Name Назив - + Vendor Произвођач - + Model Модел - + Version Верзија - + Bus Info Подаци магистрале - + Capabilities Могућности - + Driver Управљач - + Maximum Power Максимална снага - + Speed Брзина - + + Module Alias + Псеудоним модула + + + + Physical ID + Физички ИД + + + Unavailable - + - + Disable Онемогући @@ -322,7 +361,7 @@ DeviceComputer - + Name Назив @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Назив - - + + Vendor Произвођач - + CPU ID ЦПЈ ИД - + Core ID ИД језгра - + Threads Нити - - Current Speed - Тренутна брзина - - - + BogoMIPS БогоМИПС - - + + Architecture Архитектура - + CPU Family ЦПЈ породица - + Model Модел - - + + Processor Процесор - + Core(s) Језгра - + Virtualization Виртуелизација - + Flags Показатељи - + Extensions Проширења - + L3 Cache L3 Кеш - + L2 Cache L2 Кеш - + L1i Cache L1i Кеш - + L1d Cache L1d Кеш - + Stepping Степинг - + Speed Брзина - + + + Max Speed Брзина @@ -447,195 +483,200 @@ DeviceGpu - + Name Назив - + Vendor Произвођач - + Model Модел - + Version Верзија - + Graphics Memory Графичка меморија - + + Module Alias + Псеудоним модула + + + Physical ID Физички ИД - + Memory Address Меморијска адреса - + IO Port IO прикључак - + Bus Info Подаци магистрале - + Maximum Resolution Максимална резолуција - + Minimum Resolution Минимална резолуција - + Current Resolution Тренутна резолуција - + Driver Управљач - + Description Опис - - Clock - Радни такт - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput - + - + Display Output Излази екрана - + Capabilities Могућности - + IRQ IRQ - - Width - Ширина - - - + Unavailable - + DeviceImage - + Name Назив - + Vendor Произвођач - + Version Верзија - + Model Модел - + Bus Info Подаци магистрале - + + Module Alias + Псеудоним модула + + + + Physical ID + Физички ИД + + + Speed Брзина - + Maximum Power Максимална снага - + Driver Управљач - + Capabilities Могућности - + Serial Number Серијски број - + Unavailable - + - + Disable Онемогући @@ -643,62 +684,72 @@ DeviceInput - + Name Назив - + Vendor Произвођач - + Model Модел - + Interface Сучеље - + Bus Info Подаци магистрале - + + Module Alias + Псеудоним модула + + + + Physical ID + Физички ИД + + + Speed Брзина - + Maximum Current - + - + Driver Управљач - + Capabilities Могућности - + Version Верзија - + Unavailable - + - + Disable Онемогући @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Уопштено - - - + + + CPU ЦПЈ - - + + CPU quantity Количина процесора - - + + Motherboard Матична плоча - - + + Memory Меморија - - + + Display Adapter Графичка картица - - + + Sound Adapter Звучнa картица - - + + Storage Складиште - - + + Other PCI Devices Остали PCI уређаји - - + + Battery Батерија - - + + Bluetooth Блутут - - + + Network Adapter Мрежна картица - - + + Mouse Миш - - + + Keyboard Тастатура - - + + Monitor Монитор - - + + CD-ROM ЦД-РОМ - - + + Printer Штампач - - + + Camera Камера - - + + Other Devices Other Input Devices Остали уређаји - - - + + + Device Уређај - - - + + + OS ОС @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Назив - - + + Vendor Произвођач - - + + Size Величина - - + + Type Врста - - + + Speed Брзина - + Total Width Укупна ширина - + Locator Локатор - + Serial Number Серијски број - + Configured Voltage Подешени напон - + Maximum Voltage Максимални напон - + Minimum Voltage Минимални напон - + Configured Speed Подешена брзина - + Data Width Ширина података @@ -920,200 +971,198 @@ DeviceMonitor - + Name Назив - + Vendor Произвођач - + Type Врста - + Display Input Улази екрана - + Interface Type Врста сучеља - + Support Resolution Подржане резолуције - + Current Resolution Тренутна резолуција - + Display Ratio Размера екрана - + Primary Monitor Главни монитор - + Size Величина - + Serial Number Серијски број - - - Product Date - Датум производње - DeviceNetwork - + + Name Назив - + + Vendor Произвођач - + + Type Врста - + Version Верзија - + Bus Info Подаци магистрале - + Capabilities Могућности - + Driver Управљач - + Driver Version Верзија управљача - + + Module Alias + Псеудоним модула + + + + Physical ID + Физички ИД + + + Maximum Rate - + - + Negotiation Rate - + - + Port Прикључак - + Multicast Multicast - + Link Веза - + Latency Кашњење - + IP ИП - + Firmware Фирмвер - + Duplex Дуплекс - + Broadcast Емитовање - + Auto Negotiation Самопреговарање - - Clock - Радни такт - - - - Width - Ширина - - - + Memory Address Меморијска адреса - + IRQ IRQ - + MAC Address МАК адреса - + Logical Name Логички назив - + Unavailable - + - + Disable Онемогући @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Назив - + Vendor Произвођач - + Model Модел - + Bus Info Подаци магистрале - + Version Верзија - + Input/Output Улаз/Излаз - + Memory Меморија - + IRQ IRQ - + Latency Кашњење - - Clock - Радни такт - - - - Width - Ширина - - - + Driver Управљач - + Capabilities Могућности @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Назив - + Vendor Произвођач - + Model Модел - + Version Верзија - + Bus Info Подаци магистрале - + Capabilities Могућности - + Driver Управљач - + Maximum Power Максимална снага - + Speed Брзина - + Serial Number Серијски број - + Unavailable - + - + Disable Онемогући @@ -1252,82 +1291,82 @@ DevicePower - + Name Назив - + Model Модел - + Vendor Произвођач - + Serial Number Серијски број - + Type Врста - + Status Стање - + Capacity Капацитет - + Voltage Напон - + Slot Лежиште - + Design Capacity Пројектовани капацитет - + Design Voltage Пројектовани напон - + SBDS Version SBDS верзија - + SBDS Serial Number SBDS серијски број - + SBDS Manufacture Date SBDS датум производње - + SBDS Chemistry SBDS хемија - + Temperature Температура @@ -1335,47 +1374,47 @@ DevicePrint - + Name Назив - + Model Модел - + Vendor Произвођач - + Serial Number Серијски број - + Shared Дељено - + URI URI - + Status Стање - + Interface Type Врста сучеља - + Disable Онемогући @@ -1383,138 +1422,151 @@ DeviceStorage - - - Model - Модел - - - - + + Vendor Произвођач - - + + Media Type Врста медија - - + + + Size Величина - + + + Name + Назив + + + Version Верзија - + Capabilities Могућности - + + + Module Alias + Псеудоним модула + + + + + Physical ID + Физички ИД + + + Firmware Version Верзија фирмвера - + Speed Брзина - + Description Опис - + Serial Number Серијски број - + Interface Сучеље - + Rotation Rate Брзина окретања - + Unavailable - + GetDriverNameWidget - - + + Select a driver for update - + - + No drivers found in this folder - + GetInfoPool - + Loading Audio Device Info... Учитавање података аудио уређаја... - + Loading BIOS Info... Учитавање БИОС података... - + Loading CD-ROM Info... Учитавање ЦД-РОМ података... - + Loading Operating System Info... Учитавање података о оперативном систему... - + Loading CPU Info... Учитавање ЦПЈ података... - + Loading Other Devices Info... Учитавање података осталих уређаја... - + Loading Power Info... Учитавање података о напајању... - + Loading Printer Info... Учитавање података штампача... - + Loading Mouse Info... Учитавање података о мишу - + Loading Network Adapter Info... Учитавање података мрежне картице... @@ -1522,116 +1574,116 @@ LogTreeView - - - + + + Disable Онемогући - + Unavailable - + LogViewItemDelegate - + Disable Онемогући - + Unavailable - + MainWindow - + Device Info - export file's name + export file's name Подаци уређаја - + Display shortcuts Прикажи пречице - + Close Затвори - + Help Помоћ - + Copy Копирај - + System Систем - + Export Извези - + Refresh Освежи - + Device Manager Упраник Уређаја - + Hardware - + - + Drivers - + - + Monitor Монитор - + Overview Уопштено - + Display Adapter Графичка картица - + CPU ЦПЈ - + Network Adapter Мрежна картица - + Battery Батерија @@ -1639,214 +1691,400 @@ PageDetail - + More Више + + PageDriverBackupInfo + + + + Name + Назив + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + Стање + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating - + - - - + + + Cancel button Откажи - + Next - + - + Warning - + - + The device will be unavailable after the driver uninstallation - + - + Uninstall button - + - + Uninstalling - + - + Update successful - + - + Uninstallation successful - + - + Update failed - + - + Uninstallation failed - + - + OK button - + - + Next button - + - + The selected folder does not exist, please select again - + - + Update button - + - + Previous button - + - + Broken package - + - + Unmatched package architecture - + - - + + The selected file does not exist, please select again - + - + It is not a driver - + - + Unable to install - no digital signature - + - + Unknown error - + - + The driver module was not found - + - + Invalid module format - + - + The driver module has dependencies - + - PageListView + PageDriverInstallInfo - - Refresh - Освежи + + + + Device Name + Назив уређаја - + + Version Available + + + + + + Size + Величина + + + + + Status + Стање + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Назив + + + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Освежи + + + Export Извези - + Overview Уопштено + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Неуспешно омогућавање уређаја - + Failed to disable the device Неуспешно онемогућавање уређаја - + Failed to disable it: unable to get the device SN - + - + Update Drivers - + - + Uninstall Drivers - + PageOverview - + Refresh Освежи - + Export Извези - + Copy Копирај - + Overview Уопштено @@ -1854,937 +2092,917 @@ PageSingleInfo - + Refresh Освежи - + Export Извези - + Copy Копирај - - + + Enable Омогући - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - + Disable Онемогући - - + + Failed to disable it: unable to get the device SN - + - + Failed to disable the device Неуспешно онемогућавање уређаја - + Failed to enable the device Неуспешно омогућавање уређаја - + Update Drivers - + - + Uninstall Drivers - + QObject - + SubVendor Под-произвођач - + SubDevice Под-урећај - + Driver Управљач - + Driver Status Стање управљача - + Driver Activation Cmd Комада за активирање управљача - - + - + + Config Status Стање подешавања - - - - - - - physical id - физички ид - - - + latency кашњење - + Phys Phys - + Sysfs Sysfs - + Handlers Обрађивачи - - + + PROP ПРОП - - + + EV ЕВ - - + + KEY KEY - - Model - Модел - - - - Vendor - Произвођач - - - + Version Верзија - - + + + Bus Магистрала - - + + BIOS Information Подаци БИОС-а - - + + Base Board Information Подаци основне плоче - - + + System Information Подаци система - - + + Chassis Information Подаци о шасији - - + + Physical Memory Array Физички меморијски низ - + Release Date Датум објаве - + Address Адреса - + Runtime Size Величина извршавања - + ROM Size Величина РОМ-а - + Characteristics Особине - + BIOS Revision БИОС ревизија - + Firmware Revision Рвизија фирмвера - - + + Product Name Назив производа - - - + + + Serial Number Серијски број - - - + + + Asset Tag Ознака средства - - + + Features Могућности - + Location In Chassis Положај у шасији - + Chassis Handle Идентификатор шасије - - + + Type Врста - + Contained Object Handles Садржани идентификатори објекта - - + + UUID УУИД - + Wake-up Type Врста буђења - - + + SKU Number СКУ број - + Family Породица - + Lock Брава - + Boot-up State Стање покретања - + Power Supply State Стање напајања - + Thermal State Термичко стање - + Security Status Безбедносни статус - + OEM Information ОЕМ подаци - + Height Висина - + Number Of Power Cords Број напојних каблова - + Contained Elements Садржани елементи - + Location Локација - + Error Correction Type Начин исправљања грешака - + Maximum Capacity Максимални капацитет - - + + Error Information Handle Идентификатор података грешака - + Number Of Devices Број уређаја - + BIOS ROMSIZE BIOS ROMSIZE - + Release date Датум објаве - + Board name Назив плоче - + SMBIOS Version СМБИОС верзија - + Language Description Format Формат описа језика - + Installable Languages Уградиви језици - + Currently Installed Language Тренутно инсталирани језик - + BD Address BD адреса - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Тип пакета - + Link policy Политика везе - + Link mode Режим везе - - + + Class Класа - + Service Classes Сервисне класе - + Device Class Класа уређаја - + HCI Version ХЦИ верзија - + LMP Version ЛМП верзија - + Subversion Подверзија - + Device Уређај - - + + Serial ID Серијски ИД - + product производ - + description опис - + Powered Напојено - + Discoverable Може се открити - + Pairable Упариво - + Modalias Modalias - + Discovering Откривање - + Driver Modules Модули управљача - - - + + + + + Device File Датотека уређаја - + Device Files Датотеке уређаја - - + + + Device Number Број уређаја - - Module Alias - Псеудоним модула - - - + Application Примена - + status статус - - + + + logical name логичко име - - + + ansiversion ANSI верзија - + CPU implementer ЦПЈ реализатор - + CPU architecture ЦПЈ архитектура - + CPU variant ЦПЈ варијанта - + CPU part ЦПЈ део - + CPU revision ЦПЈ ревизија - + One Једно - + Two Два - + Four Четири - + Six Шест - + Eight Осам - + Ten Десет - + Twelve Дванест - + Fourteen Четрнест - + Sixteen Шеснест - + Eighteen Осамнест - + Twenty Двадесет - + Twenty-two Двадесет два - + Twenty-four Двадесет четири - + Twenty-six Двадесет шест - + Twenty-eight Двадесет осам - + Thirty Тридесет - + Thirty-two Тридесет два - + Thirty-four Тридесет четири - + Thirty-six Тридесет шест - + Thirty-eight Тридесет осам - + Forty Четрдесет - + Forty-two Четрдесет два - + Forty-four Четрдесет четири - + Forty-six Четрдесет шест - + Forty-eight Четрдесет осам - + Fifty Педесет - + Fifty-two Педесет два - + Fifty-four Педесет четири - + Fifty-six Педесет шест - + Fifty-eight Педесет осам - + Sixty Шездесет - + Sixty-two Шездесет два - + Sixty-four Шездесет четири - + Sixty-six Шездесет-шест - + Sixty-eight Педесет-осам - + Seventy Седамдесет - + Seventy-two Седамдесет-два - + Seventy-four Седамдесет-четири - + Seventy-six Седамдесет-шест - + Seventy-eight Седамдесет-осам - + Eighty Осамдесет - + Eighty-two Осамдесет-два - + Eighty-four Осамдесет-четири - + Eighty-six Осамдесет-шест - + Eighty-eight Осамдесет-осам - + Ninety Деведесет - + Ninety-two Деведесет-два - + Ninety-four Деведесет-четири - + Ninety-six Деведесет-шест - + Ninety-eight Деведесет-осам - + One hundred Сто - + One hundred and Two Сто-два - + One hundred and four Сто-четири - + One hundred and Six Сто-шест - + One hundred and Eight Сто-осам - + One hundred and Ten Сто-десет - + One hundred and Twelve Сто-дванаест - + One hundred and Fourteen Сто-четрнаест - + One hundred and Sixteen Сто-шеснаест - + One hundred and Eighteen Сто-осамнаест - + One hundred and Twenty Сто-двадесет - + One hundred and Twenty-two Сто-двадесет-два - + One hundred and Twenty-four Сто-двадесет-четири - + One hundred and Twenty-six Сто-двадесет-шест - + One hundred and Twenty-eight Сто двадесет осам - + One hundred and Ninety-two - + - + Two hundred and fifty-six Двеста педесет шест @@ -2824,1028 +3042,1124 @@ GLSL верзија - - - + + + Unknown Непознато - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Класа уређаја - - - - + + + + CPU ЦПЈ - - - - + + + + No CPU found Није пронађен ЦПЈ - - - - + + + + Motherboard Матична плоча - - - - + + + + No motherboard found Матична плоча није пронађена - - - - + + + + Memory Меморија - - - - + + + + No memory found Меморија није пронађена - - - - + + + + Storage Складиште - - - - + + + + No disk found Није пронађен диск - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Графичка картица - - - - + + + + No GPU found Није пронађен GPU - - - - + + + + Monitor Монитор - - - - + + + + No monitor found Монитор није пронађен - - - - - + + + + + Network Adapter Мрежна картица - - - - + + + + No network adapter found Мрежна картица није пронађена - - - - - + + + + + Sound Adapter Звучнa картица - - - - + + + + No audio device found Није пронађен аудио уређај - - - - - + + + + + Bluetooth Блутут - - - - + + + + No Bluetooth device found Није пронађен блутут уређај - - - - + + + + Other PCI Devices Остали PCI уређаји - - - - + + + + No other PCI devices found Нису пронађени други PCI уређаји - - - - + + + + Power Напајање - - - - + + + + No battery found Није пронађена батерија - - - - - + + + + + Keyboard Тастатура - - - - + + + + No keyboard found Тастатура није проађена - - - - - + + + + + Mouse Миш - - - - + + + + No mouse found Миш није пронађен - - - - - - + + + + + + Printer Штампач - - - - + + + + No printer found Штампач није пронађен - - - - + + + + Camera Камера - - - - + + + + No camera found Камера није пронађена - - - - + + + + CD-ROM ЦД-РОМ - - - - + + + + No CD-ROM found Није пронађен ЦД-РОМ - - - - - + + + + + Other Devices Остали уређаји - - - - + + + + No other devices found Нису пронађени други уређаји - + Array Handle Идентификатор низа - + Form Factor Формат - + Set Комплет - + Bank Locator Локатор банке - + Type Detail Детаљи врсте - + Part Number Произвођачки број - + Rank Ранг - + Memory Technology Технологија меморије - + Memory Operating Mode Capability Капацитет меморије у радном режиму - + Firmware Version Верзија фирмвера - + Module Manufacturer ID ИД произвођача модула - + Module Product ID ИД производа - + Memory Subsystem Controller Manufacturer ID ИД произвођача контолера меморијског подсистема - + Memory Subsystem Controller Product ID Ид производа контолера меморијског подсистема - + Non-Volatile Size Постојана величина - + Volatile Size Непостојана величина - + Cache Size Величина кеша - + Logical Size Логичка величина - - - - - + + + + + inch инча - + Date Датум - + ioport ioport - + network мрежа - - + battery батерија - + native-path месна-путања - + power supply напајање - + updated ажурирано - + has history има историју - + has statistics има статистику - + rechargeable пуњиво - + state стање - + warning-level ниво-упозорења - + energy енергија - + energy-empty без-енергије - + energy-full пуна-енергија - + energy-full-design пројектована-пуна-енергија - + energy-rate енергетска-оцена - + voltage напон - + percentage проценат - + technology технологија - + icon-name име-иконице - + online на-мрежи - + daemon-version верзија-демона - + on-battery на-батерији - + lid-is-closed поклопац-је-затворен - + lid-is-present поклопац-је-присутан - + critical-action критични-поступак - + copies копије - + job-cancel-after обустава-задатка-након - + job-hold-until задатак-чека-до - + job-priority приоритет-задатка - + marker-change-time време-промене-маркера - + number-up више-страница-на-листу - + orientation-requested тражена-оријентација - + print-color-mode режим-боје-штампања - + printer-is-accepting-jobs штампач-прихвата-задатке - + printer-is-shared штампач-је-дељен - + printer-is-temporary привремени-штампач - + printer-make-and-model штампач-произвођач-и-модел - + printer-state-change-time време-промене-стања-штампача - + printer-state-reasons разлози-стања-штампача - + printer-type врста-штампача - + printer-uri-supported ури-штампача-подржан - + sides стране - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info подаци магистрале - + logicalsectorsize величина логичких сектора - + sectorsize величина сектора - + guid guid - + Geometry (Logical) Геометрија (Логичка) - - + + Device Manager Упраник Уређаја - + Device Manager is a handy tool for viewing hardware information and managing the devices. Управник Уређаја је користан алат за приказ података о рачунару, апаратури и за управљање уређајима. - + New drivers available! Install or update them now. - + - + + View + + + + Include subfolders - + - + Search for drivers in this path - + - - - - Device Name - Назив уређаја + + %1 driver updates available + - - Version Available - + + + Time checked: %1 + - - - Size - Величина + + Downloading drivers for %1... + - - - Status - Стање + + Download speed: %1 Downloaded %2/%3 + - - - Action - + + Installing drivers for %1... + - - New Version - + + %1 drivers installed, %2 drivers failed + - - Current Version - + + %1 drivers installed + - - Missing drivers (%1) - + + Failed to install drivers + - - Outdated drivers (%1) - + + Network error. Reconnecting... + - - Up-to-date drivers (%1) - + + Download speed: %1 + - - %1 driver updates available - + + Your drivers are up to date + - - - Time checked: %1 - + + All drivers have been backed up + - - Downloading drivers for %1... - + + + A total of %1 drivers, of which %2 have been backed up + - - Download speed: %1 Downloaded %2/%3 - + + You have %1 drivers that can be backed up, it is recommended to do so immediately + - - Installing drivers for %1... - + + You have %1 drivers that can be backed up + - - %1 drivers installed, %2 drivers failed - + + Backing up the %1 driver, a total of %2 drivers + - - %1 drivers installed - + + Backing up: %1 + - - Failed to install drivers - + + %1 drivers backed up, %2 drivers failed + - - Network error. Reconnecting... - + + Failed to backup drivers + - - Download speed: %1 - + + %1 drivers backed up + - - Your drivers are up to date - + + You have %1 drivers that can be restored + - + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot - + - + Please %1 for the installed drivers to take effect - + + + + + View backup path + + + + + Backup All + - - + + submit feedback - + - + Please try again or %1 to us - + - + Install All - + - - + + Scan Again - + - + Cancel Откажи - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable - + - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? - + - + + + Exit button - + - + + + Cancel button Откажи - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter - + - - + + Imaging device - + - + Display adapter - + - + Sound card - + - + Network adapter - + - + Wireless network adapter - + - + Installation successful - + - + Installation failed - + - + Downloading - + - + Installing - + - + Not installed - + - + Out-of-date - + - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error - + - + Network error - + - + Canceled - + - + Failed to get driver files - + - + Update - + - + + Backup + + + + + Restore + + + + Install - + TableWidget - - + + Disable Онемогући - + Refresh Освежи - + Export Извези - + Update drivers - + - + Uninstall drivers - + - + Allow it to wake the computer - + - - + + Enable Омогући @@ -3853,45 +4167,45 @@ TextBrowser - + Refresh Освежи - + Export Извези - + Copy Копирај - + Disable Онемогући - + Unavailable - + UrlChooserEdit - + Select a local folder please - + WaitingWidget - + Loading... Учитавање... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_tr.ts b/deepin-devicemanager/translations/deepin-devicemanager_tr.ts index e4a1c93ce..3bdc1cf2d 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_tr.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_tr.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + OK + + + + Feedback + + + + OK button OK @@ -11,7 +23,7 @@ CmdButtonWidget - + More Dahası @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_AĞ_BİLDİRİM - + EC_REINSTALL EC_YENİDEN YÜKLE - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Dahası - + Collapse Daralt @@ -51,14 +63,14 @@ DetailTreeView - - + + More Dahası - - + + Collapse Daralt @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Devre dışı - + Unavailable Yok @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Aygıt Adı - - + + Name İsim - - + + Vendor Satıcı - - Model - Model + + Chip + Yonga - - Version - Sürüm + + Capabilities + Yetenekler - - Bus Info - Bus Bilgisi + + + Module Alias + Modül Takma Adı - - Chip - Yonga + + + Physical ID + Fiziksel Kimlik - - Capabilities - Yetenekler + + SysFS_Path + - - Clock - Saat + + Description + Açıklama + + + + Revision + - - Width - Genişlik + + KernelModeDriver + - + Memory Address Bellek Adresi - + IRQ IRQ - + Unavailable Yok - + Disable Devre dışı @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name İsim - + Vendor Satıcı - + Model Model @@ -173,17 +192,17 @@ DeviceBios - + Vendor Satıcı - + Version Sürüm - + Chipset Yonga Seti @@ -191,72 +210,82 @@ DeviceBluetooth - + Name İsim - + Vendor Satıcı - + Version Sürüm - + Model Model - + + Module Alias + Modül Takma Adı + + + + Physical ID + Fiziksel Kimlik + + + Speed Hız - + Maximum Power Azami Güç - + Driver Version Sürücü Sürümü - + Driver Sürücü - + Capabilities Yetenekler - + Bus Info Bus Bilgisi - + Logical Name Mantıksal Ad - + MAC Address MAC Adresi - + Unavailable Yok - + Disable Devre dışı @@ -264,57 +293,67 @@ DeviceCdrom - + Name İsim - + Vendor Satıcı - + Model Model - + Version Sürüm - + Bus Info Bus Bilgisi - + Capabilities Yetenekler - + Driver Sürücü - + Maximum Power Azami Güç - + Speed Hız - + + Module Alias + Modül Takma Adı + + + + Physical ID + Fiziksel Kimlik + + + Unavailable Yok - + Disable Devre dışı @@ -322,7 +361,7 @@ DeviceComputer - + Name İsim @@ -330,116 +369,113 @@ DeviceCpu - - + + Name İsim - - + + Vendor Satıcı - + CPU ID CPU ID - + Core ID Çekirdek ID - + Threads İş Parçacığı - - Current Speed - Mevcut Hız - - - + BogoMIPS BogoMIPS - - + + Architecture Mimari - + CPU Family Cpu Ailesi - + Model Model - - + + Processor İşlemci - + Core(s) Çekirdekler - + Virtualization Sanallaştırma - + Flags Bayraklar - + Extensions Eklentiler - + L3 Cache L3 Önbellek - + L2 Cache L2 Önbellek - + L1i Cache L1i Önbellek - + L1d Cache L1d Önbellek - + Stepping Adımlar - + Speed Hız - + + + Max Speed Azami Hız @@ -447,132 +483,127 @@ DeviceGpu - + Name İsim - + Vendor Satıcı - + Model Model - + Version Sürüm - + Graphics Memory Grafik Belleği - + + Module Alias + Modül Takma Adı + + + Physical ID Fiziksel Kimlik - + Memory Address Bellek Adresi - + IO Port IO Port - + Bus Info Bus Bilgisi - + Maximum Resolution Azami Çözünürlük - + Minimum Resolution Asgari Çözünürlük - + Current Resolution Mevcut Çözünürlük - + Driver Sürücü - + Description Açıklama - - Clock - Saat - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput Dijital Çıkış - + Display Output Ekran Çıkışı - + Capabilities Yetenekler - + IRQ IRQ - - Width - Genişlik - - - + Unavailable Yok @@ -580,62 +611,72 @@ DeviceImage - + Name İsim - + Vendor Satıcı - + Version Sürüm - + Model Model - + Bus Info Bus Bilgisi - + + Module Alias + Modül Takma Adı + + + + Physical ID + Fiziksel Kimlik + + + Speed Hız - + Maximum Power Azami Güç - + Driver Sürücü - + Capabilities Yetenekler - + Serial Number Seri Numarası - + Unavailable Yok - + Disable Devre dışı @@ -643,62 +684,72 @@ DeviceInput - + Name İsim - + Vendor Satıcı - + Model Model - + Interface Arayüz - + Bus Info Bus Bilgisi - + + Module Alias + Modül Takma Adı + + + + Physical ID + Fiziksel Kimlik + + + Speed Hız - + Maximum Current En yüksek Geçerli - + Driver Sürücü - + Capabilities Yetenekler - + Version Sürüm - + Unavailable Yok - + Disable Devre dışı @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Özet - - - + + + CPU CPU - - + + CPU quantity CPU miktarı - - + + Motherboard Anakart - - + + Memory Bellek - - + + Display Adapter Görüntü Bağdaştırıcısı - - + + Sound Adapter Ses Bağdaştırıcı - - + + Storage Depolama - - + + Other PCI Devices Diğer PCI Aygıtları - - + + Battery Pil - - + + Bluetooth Bluetooth - - + + Network Adapter Ağ Bağdaştırıcı - - + + Mouse Fare - - + + Keyboard Klavye - - + + Monitor Ekran - - + + CD-ROM CD-ROM - - + + Printer Yazıcı - - + + Camera Kamera - - + + Other Devices Other Input Devices Diğer Aygıtlar - - - + + + Device Aygıt - - - + + + OS OS @@ -847,72 +898,72 @@ DeviceMemory - - + + Name İsim - - + + Vendor Satıcı - - + + Size Boyut - - + + Type Tür - - + + Speed Hız - + Total Width Toplam Genişlik - + Locator Konumlandırıcı - + Serial Number Seri Numarası - + Configured Voltage Yapılandırılmış Voltaj - + Maximum Voltage Azami Voltaj - + Minimum Voltage Asgari Voltaj - + Configured Speed Yapılandırılmış Hız - + Data Width Veri Genişliği @@ -920,200 +971,198 @@ DeviceMonitor - + Name İsim - + Vendor Satıcı - + Type Tür - + Display Input Ekran Girişi - + Interface Type Arayüz Türü - + Support Resolution Desteklenen Çözünürlük - + Current Resolution Mevcut Çözünürlük - + Display Ratio Görüntü Oranı - + Primary Monitor Birincil Ekran - + Size Boyut - + Serial Number Seri Numarası - - - Product Date - Ürün Tarihi - DeviceNetwork - + + Name İsim - + + Vendor Satıcı - + + Type Tür - + Version Sürüm - + Bus Info Bus Bilgisi - + Capabilities Yetenekler - + Driver Sürücü - + Driver Version Sürücü Sürümü - + + Module Alias + Modül Takma Adı + + + + Physical ID + Fiziksel Kimlik + + + Maximum Rate En Yüksek Oran - + Negotiation Rate Müzakere Oranı - + Port Port - + Multicast Çok Noktaya - + Link Bağlantı - + Latency Gecikme - + IP IP - + Firmware Üretici Yazılımı - + Duplex İkili - + Broadcast Yayın - + Auto Negotiation Otomatik Müzakere - - Clock - Saat - - - - Width - Genişlik - - - + Memory Address Bellek Adresi - + IRQ IRQ - + MAC Address MAC Adresi - + Logical Name Mantıksal Ad - + Unavailable Yok - + Disable Devre dışı @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name İsim - + Vendor Satıcı - + Model Model - + Bus Info Bus Bilgisi - + Version Sürüm - + Input/Output Giriş/Çıkış - + Memory Bellek - + IRQ IRQ - + Latency Gecikme - - Clock - Saat - - - - Width - Genişlik - - - + Driver Sürücü - + Capabilities Yetenekler @@ -1189,62 +1228,62 @@ DeviceOthers - + Name İsim - + Vendor Satıcı - + Model Model - + Version Sürüm - + Bus Info Bus Bilgisi - + Capabilities Yetenekler - + Driver Sürücü - + Maximum Power Azami Güç - + Speed Hız - + Serial Number Seri Numarası - + Unavailable Yok - + Disable Devre dışı @@ -1252,82 +1291,82 @@ DevicePower - + Name İsim - + Model Model - + Vendor Satıcı - + Serial Number Seri Numarası - + Type Tür - + Status Durum - + Capacity Kapasite - + Voltage Voltaj - + Slot Yuva - + Design Capacity Tasarım Kapasitesi - + Design Voltage Tasarım Voltajı - + SBDS Version SBDS Sürümü - + SBDS Serial Number SBDS Seri Numarası - + SBDS Manufacture Date SBDS Üretici Tarihi - + SBDS Chemistry SBDS Yapı - + Temperature Sıcaklık @@ -1335,47 +1374,47 @@ DevicePrint - + Name İsim - + Model Model - + Vendor Satıcı - + Serial Number Seri Numarası - + Shared Paylaşılan - + URI URI - + Status Durum - + Interface Type Arayüz Türü - + Disable Devre dışı @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Model - - - - + + Vendor Satıcı - - + + Media Type Medya Türü - - + + + Size Boyut - + + + Name + İsim + + + Version Sürüm - + Capabilities Yetenekler - + + + Module Alias + Modül Takma Adı + + + + + Physical ID + Fiziksel Kimlik + + + Firmware Version Yazılım Sürümü - + Speed Hız - + Description Açıklama - + Serial Number Seri Numarası - + Interface Arayüz - + Rotation Rate Dönüş Hızı - + Unavailable Yok @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Güncelleme için bir sürücü seçin - + No drivers found in this folder Bu klasörde sürücü bulunamadı @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Ses Aygıtı Bilgisi Yükleniyor... - + Loading BIOS Info... BIOS Bilgisi Yükleniyor... - + Loading CD-ROM Info... CD-ROM Bilgisi Yükleniyor... - + Loading Operating System Info... İşletim Sistemi Bilgisi Yükleniyor... - + Loading CPU Info... CPU Bilgisi Yükleniyor... - + Loading Other Devices Info... Diğer Aygıt Bilgileri Yükleniyor... - + Loading Power Info... Güç Bilgisi Yükleniyor... - + Loading Printer Info... Yazıcı Bilgisi Yükleniyor... - + Loading Mouse Info... Fare Bilgisi Yükleniyor... - + Loading Network Adapter Info... Ağ Adaptörü Bilgisi Yükleniyor... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Devre dışı - + Unavailable Yok @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Devre dışı - + Unavailable Yok @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Aygıt Bilgisi - + Display shortcuts Kısayolları göster - + Close Kapat - + Help Yardım - + Copy Kopyala - + System Sistem - + Export Dışa aktar - + Refresh Yenile - + Device Manager Aygıt Yöneticisi - + Hardware Donanım - + Drivers Sürücüler - + Monitor Ekran - + Overview Özet - + Display Adapter Görüntü Bağdaştırıcısı - + CPU CPU - + Network Adapter Ağ Bağdaştırıcı - + Battery Pil @@ -1639,191 +1691,377 @@ PageDetail - + More Dahası + + PageDriverBackupInfo + + + + Name + İsim + + + + + Current Version + Geçerli Sürüm + + + + + Driver Platform Version + + + + + Status + Durum + + + + Action + Eylem + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Güncelleniyor - - - + + + Cancel button İptal - + Next Sonraki - + Warning Uyarı - + The device will be unavailable after the driver uninstallation Sürücü kaldırıldıktan sonra cihaz kullanılamayacak - + Uninstall button Kaldır - + Uninstalling Kaldırılıyor - + Update successful Güncelleme başarılı - + Uninstallation successful Kaldırma başarılı - + Update failed Güncelleştirme başarısız - + Uninstallation failed Kaldırma başarısız - + OK button OK - + Next button Sonraki - + The selected folder does not exist, please select again Seçilen klasör mevcut değil, lütfen tekrar seçin - + Update button Güncelle - + Previous button Öncesi - + Broken package Bozuk paket - + Unmatched package architecture Benzersiz paket mimarisi - - + + The selected file does not exist, please select again Seçilen dosya mevcut değil, lütfen tekrar seçin - + It is not a driver Bu bir sürücü değil - + Unable to install - no digital signature Yüklenemiyor - dijital imza yok - + Unknown error Bilinmeyen hata - + The driver module was not found Sürücü modülü bulunamadı - + Invalid module format Geçersiz modül biçimi - + The driver module has dependencies Sürücü modülünün bağımlılıkları var - PageListView + PageDriverInstallInfo - - Refresh - Yenile + + + + Device Name + Aygıt Adı - + + Version Available + Sürüm mevcut + + + + + Size + Boyut + + + + + Status + Durum + + + + + Action + Eylem + + + + New Version + Yeni Sürüm + + + + Current Version + Geçerli Sürüm + + + + Missing drivers (%1) + Kayıp sürücüler (%1) + + + + Outdated drivers (%1) + Tarihi geçmiş sürücüler (%1) + + + + Up-to-date drivers (%1) + Güncel sürücüler (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + OK + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + İsim + + + + Current Version + Geçerli Sürüm + + + + Backup Version + + + + + Action + Eylem + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Yenile + + + Export Dışa aktar - + Overview Özet + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Cihaz devre dışı bırakılamadı - + Failed to disable the device Cihaz devre dışı bırakılamadı - + Failed to disable it: unable to get the device SN Devre dışı bırakılamadı: cihaz SN'si alınamadı - + Update Drivers Sürücüleri güncelle - + Uninstall Drivers Sürücüleri Kaldır @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Yenile - + Export Dışa aktar - + Copy Kopyala - + Overview Özet @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Yenile - + Export Dışa aktar - + Copy Kopyala - - + + Enable Etkin - + Update drivers Sürücüleri güncelle - + Uninstall drivers Sürücüleri kaldır - + Allow it to wake the computer Bilgisayarı uyandırmasına izin ver - + Disable Devre dışı - - + + Failed to disable it: unable to get the device SN Devre dışı bırakılamadı: cihaz SN'si alınamadı - + Failed to disable the device Cihaz devre dışı bırakılamadı - + Failed to enable the device Cihaz devre dışı bırakılamadı - + Update Drivers Sürücüleri güncelle - + Uninstall Drivers Sürücüleri Kaldır @@ -1924,867 +2162,847 @@ QObject - + SubVendor AltÜretici - + SubDevice AltAygıt - + Driver Sürücü - + Driver Status Sürücü Durumu - + Driver Activation Cmd Sürücü Etkinleştirme CMD'si - - + - + + Config Status Yapılandırma Durumu - - - - - - - physical id - fiziksel kimlik - - - + latency gecikme - + Phys Phys - + Sysfs Sysfs - + Handlers İşleyiciler - - + + PROP PROP - - + + EV EV - - + + KEY ANAHTAR - - Model - Model - - - - Vendor - Satıcı - - - + Version Sürüm - - + + + Bus Bus - - + + BIOS Information BIOS Bilgileri - - + + Base Board Information Temel Pano Bilgileri - - + + System Information Sistem Bilgisi - - + + Chassis Information Ana Gövde Bilgisi - - + + Physical Memory Array Fiziksel Bellek Dizisi - + Release Date Yayın Tarihi - + Address Adres - + Runtime Size Çalışma Zamanı Boyutu - + ROM Size ROM Boyutu - + Characteristics Özellikleri - + BIOS Revision BİOS Revizyonu - + Firmware Revision Ürün Yazılımı Revizyonu - - + + Product Name Ürün Adı - - - + + + Serial Number Seri Numarası - - - + + + Asset Tag Varlık Etiketi - - + + Features Yenilikler - + Location In Chassis Ana Gövdedeki Konumu - + Chassis Handle Ana Gövde Tanıtıcı - - + + Type Tür - + Contained Object Handles İçerilen Nesne Tanıtıcıları - - + + UUID UUID - + Wake-up Type Uyandırma Türü - - + + SKU Number SKU Numarası - + Family Ailesi - + Lock Kilit - + Boot-up State Açılış Durumu - + Power Supply State Güç Kaynağı Durumu - + Thermal State Termal Durumu - + Security Status Güvenlik Durumu - + OEM Information OEM Bilgisi - + Height Yükseklik - + Number Of Power Cords Güç Kablosu Sayısı - + Contained Elements İçerdiği Ögeler - + Location Konum - + Error Correction Type Hata Düzeltme Türü - + Maximum Capacity Azami Kapasite - - + + Error Information Handle Hata Bilgisi Tanıtıcısı - + Number Of Devices Aygıt Sayısı - + BIOS ROMSIZE BIOS ROM BOYUTU - + Release date Yayın tarihi - + Board name Pano ismi - + SMBIOS Version SMBİOS Sürümü - + Language Description Format Dil Açıklama Biçimi - + Installable Languages Kurulabilir Diller - + Currently Installed Language Şu Anki Yüklü Dil - + BD Address BD Adresi - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type Paket türü - + Link policy Bağlantı politikası - + Link mode Bağlantı kipi - - + + Class Sınıf - + Service Classes Servis Sınıfları - + Device Class Aygıt Sınıfı - + HCI Version HCI Sürümü - + LMP Version LMP Sürümü - + Subversion Alt sürüm - + Device Aygıt - - + + Serial ID Serial ID - + product ürün - + description açıklama - + Powered Dolu - + Discoverable Bulunabilir - + Pairable Eşleşebilir - + Modalias Modalias - + Discovering Keşfet - + Driver Modules Sürücü Modeli - - - + + + + + Device File Aygıt Dosyası - + Device Files Aygıt Dosyaları - - + + + Device Number Aygıt Numarası - - Module Alias - Modül Takma Adı - - - + Application Uygulama - + status durum - - + + + logical name mantıksal ad - - + + ansiversion ansi sürümü - + CPU implementer CPU uygulayıcısı - + CPU architecture CPU mimarisi - + CPU variant CPU varyantı - + CPU part CPU bölümü - + CPU revision CPU revizyonu - + One Bir - + Two İki - + Four Dört - + Six Altı - + Eight Sekiz - + Ten On - + Twelve On iki - + Fourteen On dört - + Sixteen On altı - + Eighteen On sekiz - + Twenty Yirmi - + Twenty-two Yirmi iki - + Twenty-four Yirmi dört - + Twenty-six Yirmi altı - + Twenty-eight Yirmi sekiz - + Thirty Otuz - + Thirty-two Otuz iki - + Thirty-four Otuz dört - + Thirty-six Otuz altı - + Thirty-eight Otuz sekiz - + Forty Kırk - + Forty-two Kırk iki - + Forty-four Kırk dört - + Forty-six Kırk altı - + Forty-eight Kırk sekiz - + Fifty Elli - + Fifty-two Elli iki - + Fifty-four Elli dört - + Fifty-six Elli altı - + Fifty-eight Elli sekiz - + Sixty Altmış - + Sixty-two Altmış iki - + Sixty-four Altmış dört - + Sixty-six Altmış altı - + Sixty-eight Altmış sekiz - + Seventy Yetmiş - + Seventy-two Yetmiş iki - + Seventy-four Yetmiş dört - + Seventy-six Yetmiş altı - + Seventy-eight Yetmiş sekiz - + Eighty Seksen - + Eighty-two Seksen iki - + Eighty-four Seksen dört - + Eighty-six Seksen altı - + Eighty-eight Seksen sekiz - + Ninety Doksan - + Ninety-two Doksan iki - + Ninety-four Doksan dört - + Ninety-six Doksan altı - + Ninety-eight Doksan sekiz - + One hundred Yüz - + One hundred and Two Yüz iki - + One hundred and four Yüz dört - + One hundred and Six Yüz altı - + One hundred and Eight Yüz sekiz - + One hundred and Ten Yüz on - + One hundred and Twelve Yüz on iki - + One hundred and Fourteen Yüz on dört - + One hundred and Sixteen Yüz on altı - + One hundred and Eighteen Yüz on sekiz - + One hundred and Twenty Yüz yirmi - + One hundred and Twenty-two Yüz yirmi iki - + One hundred and Twenty-four Yüz yirmi dört - + One hundred and Twenty-six Yüz yirmi altı - + One hundred and Twenty-eight Yüz yirmi sekiz - + One hundred and Ninety-two Yüz doksan iki - + Two hundred and fifty-six İki yüz elli altı @@ -2824,988 +3042,1084 @@ GLSL sürümü - - - + + + Unknown Bilinmeyen - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Donanım Sınıfı - - - - + + + + CPU CPU - - - - + + + + No CPU found CPU bulunamadı - - - - + + + + Motherboard Anakart - - - - + + + + No motherboard found Anakart bulunamadı - - - - + + + + Memory Bellek - - - - + + + + No memory found Bellek bulunamadı - - - - + + + + Storage Depolama - - - - + + + + No disk found Disk bulunamadı - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Görüntü Bağdaştırıcısı - - - - + + + + No GPU found GPU bulunamadı - - - - + + + + Monitor Ekran - - - - + + + + No monitor found Monitör bulunamadı - - - - - + + + + + Network Adapter Ağ Bağdaştırıcı - - - - + + + + No network adapter found Ağ bağdaştırıcısı bulunamadı - - - - - + + + + + Sound Adapter Ses Bağdaştırıcı - - - - + + + + No audio device found Ses aygıtı bulunamadı - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Bluetooth aygıtı bulunamadı - - - - + + + + Other PCI Devices Diğer PCI Aygıtları - - - - + + + + No other PCI devices found Diğer PCI aygıtları bulunamadı - - - - + + + + Power Güç - - - - + + + + No battery found Pil bulunamadı - - - - - + + + + + Keyboard Klavye - - - - + + + + No keyboard found Klavye bulunamadı - - - - - + + + + + Mouse Fare - - - - + + + + No mouse found Fare bulunamadı - - - - - - + + + + + + Printer Yazıcı - - - - + + + + No printer found Yazıcı bulunamadı - - - - + + + + Camera Kamera - - - - + + + + No camera found Kamera bulunamadı - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found CD-ROM bulunamadı - - - - - + + + + + Other Devices Diğer Aygıtlar - - - - + + + + No other devices found Başka aygıt bulunamadı - + Array Handle Dizi Kolu - + Form Factor Form Yöntemi - + Set Ayarla - + Bank Locator Yuva Konumlandırıcı - + Type Detail Tür Ayrıntıları - + Part Number Parça Numarası - + Rank Derece - + Memory Technology Bellek Teknolojisi - + Memory Operating Mode Capability Bellek Çalışma Kipi Özelliği - + Firmware Version Yazılım Sürümü - + Module Manufacturer ID Modül Üretici Kimliği - + Module Product ID Modül Ürün Kimliği - + Memory Subsystem Controller Manufacturer ID Bellek Alt Sistem Kontrolcü Üretici Kimliği - + Memory Subsystem Controller Product ID Bellek Alt Sistem Kontrolcü Ürün Kimliği - + Non-Volatile Size Uçucu Olmayan Boyut - + Volatile Size Uçucu Boyut - + Cache Size Önbellek Boyutu - + Logical Size Mantıksal Boyut - - - - - + + + + + inch inç - + Date Tarih - + ioport ioport - + network - - + battery batarya - + native-path doğal-yol - + power supply güç kaynağı - + updated güncel - + has history geçmişi - + has statistics istatistikleri - + rechargeable şarj edilebilir - + state durum - + warning-level tehlike seviyesi - + energy enerji - + energy-empty enerji boş - + energy-full Enerji dolu - + energy-full-design Dolu enerji tasarımı - + energy-rate enerji oranı - + voltage voltaj - + percentage Yüzde - + technology teknoloji - + icon-name simge adı - + online çevrimiçi - + daemon-version Daemon sürümü - + on-battery Bataryada - + lid-is-closed Kapak kapalı - + lid-is-present Kapat mevcut - + critical-action Kritik eylem - + copies kopyalar - + job-cancel-after Sonra iş iptal - + job-hold-until İş beklemesi - + job-priority İş önceliği - + marker-change-time işaretleyici değişim zamanı - + number-up numaralandır - + orientation-requested istenen yönlendirme - + print-color-mode baskı renk kipi - + printer-is-accepting-jobs yazıcı işleri kabul ediyor - + printer-is-shared yazıcı paylaşılıyor - + printer-is-temporary geçici yazıcı - + printer-make-and-model yazıcı markası ve modeli - + printer-state-change-time yazıcı durum değiştirme süresi - + printer-state-reasons yazıcı durumu nedenleri - + printer-type yazıcı-türü - + printer-uri-supported yazıcı uri destekli - + sides kenarlar - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info bus bilgisi - + logicalsectorsize yerel sektör boyutu - + sectorsize sektör boyutu - + guid guid - + Geometry (Logical) Geometri (Mantıksal) - - + + Device Manager Aygıt Yöneticisi - + Device Manager is a handy tool for viewing hardware information and managing the devices. Aygıt Yöneticisi, donanım bilgilerini görüntülemek ve aygıtları yönetmek için kullanışlı bir araçtır. - + New drivers available! Install or update them now. Yeni sürücüler mevcut! Bunları şimdi yükleyin veya güncelleyin. - + + View + + + + Include subfolders Alt klasörler dahil - + Search for drivers in this path Bu yoldaki sürücüleri arayın - - - - Device Name - Aygıt Adı - - - - Version Available - Sürüm mevcut - - - - - Size - Boyut - - - - - Status - Durum - - - - - Action - Eylem - - - - New Version - Yeni Sürüm - - - - Current Version - Geçerli Sürüm - - - - Missing drivers (%1) - Kayıp sürücüler (%1) - - - - Outdated drivers (%1) - Tarihi geçmiş sürücüler (%1) - - - - Up-to-date drivers (%1) - Güncel sürücüler (%1) - - - + %1 driver updates available %1 sürücü güncellemeleri mevcut - - + + Time checked: %1 Kontrol edilen zaman: %1 - + Downloading drivers for %1... %1 için sürücüler indiriliyor... - + Download speed: %1 Downloaded %2/%3 İndirme hızı: %1 İndirildi %2/%3 - + Installing drivers for %1... %1 için sürücüler yükleniyor... - + %1 drivers installed, %2 drivers failed %1 sürücü yüklendi, %2 sürücü başarısız oldu - + %1 drivers installed %1 sürücüler yüklü - + Failed to install drivers Sürücülerin yüklenmesi başarısız oldu - + Network error. Reconnecting... Ağ hatası. Yeniden bağlanılıyor... - + Download speed: %1 İndirme hızı: %1 - + Your drivers are up to date Senin sürücülerin güncel - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot Yeniden başlat - + Please %1 for the installed drivers to take effect Yüklü sürücülerin etkinleşmesi için lütfen %1 - - + + View backup path + + + + + Backup All + + + + + submit feedback geribildirim gönder - + Please try again or %1 to us Lütfen tekrar deneyin veya bize %1 - + Install All Hepsini Yükle - - + + Scan Again Tekrar tara - + Cancel İptal - + Scanning hardware device drivers, please wait... Donanım aygıt sürücüleri taranıyor. Lütfen bekleyin... - - + + Scanning %1 %1 Taranıyor - + Scan failed Tarama başarısız oldu - + Network unavailable Ağ kullanılamıyor - + Please check your network connection İnternet bağlantını kontrol et - + Please scan again or %1 to us Lütfen tekrar tarayın veya bize %1 - + You are installing a driver, which will be interrupted if you exit. Çıktığınızda kesintiye uğrayacak bir sürücü kuruyorsunuz. - + + + Are you sure you want to exit? Çıkış yapmak istediğinden emin misin? - + + + Exit button Çıkış - + + + Cancel button İptal - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Bluetooth bağdaştırıcısı - - + + Imaging device Görüntüleme aygıtı - + Display adapter Görüntü bağdaştırıcısı - + Sound card Ses kartı - + Network adapter Ağ bağdaştırıcısı - + Wireless network adapter Kablosuz ağ bağdaştırıcısı - + Installation successful Yükleme başarılı - + Installation failed Yükleme başarısız - + Downloading İndiriliyor - + Installing Yükleniyor - + Not installed Yüklü değil - + Out-of-date Tarihi geçmiş - + Waiting Bekliyor - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Bilinmeyen hata - + Network error Ağ hatası - + Canceled İptal edildi - + Failed to get driver files Sürücü dosyalarını edinme başarısız oldu - + Update Güncelle - + + Backup + + + + + Restore + + + + Install Yükle @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Devre dışı - + Refresh Yenile - + Export Dışa aktar - + Update drivers Sürücüleri güncelle - + Uninstall drivers Sürücüleri kaldır - + Allow it to wake the computer Bilgisayarı uyandırmasına izin ver - - + + Enable Etkin @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Yenile - + Export Dışa aktar - + Copy Kopyala - + Disable Devre dışı - + Unavailable Yok @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Yerel bir klasör seçin lütfen @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Yükleniyor... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_ug.ts b/deepin-devicemanager/translations/deepin-devicemanager_ug.ts index cc3b18043..b0fae0867 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_ug.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_ug.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + جەزىملەش + + + + Feedback + + + + OK button جەزىملەش @@ -11,7 +23,7 @@ CmdButtonWidget - + More تېخىمۇ كۆپ @@ -19,31 +31,31 @@ CommonTools - + EC_NOTIFY_NETWORK - + - + EC_REINSTALL - + - + EC_6 - + DetailButton - - + + More تېخىمۇ كۆپ - + Collapse يىمىرىلىش @@ -51,14 +63,14 @@ DetailTreeView - - + + More تېخىمۇ كۆپ - - + + Collapse يىمىرىلىش @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable چەكلەش - + Unavailable ئىشلەتكىلى بولمايدۇ @@ -80,74 +92,81 @@ DeviceAudio - + Device Name ئۈسكۈنىنىڭ ئىسمى - - + + Name ئىسمى - - + + Vendor ساتقۇچى - - Model - مودىل + + Chip + ئۆزەك - - Version - نەشرى + + Capabilities + ئىقتىدارى - - Bus Info - باس ئۇچۇرى + + + Module Alias + مودېلنىڭ باشقا نامى - - Chip - ئۆزەك + + + Physical ID + فىزىكىلىق كىملىك - - Capabilities - ئىقتىدارى + + SysFS_Path + - - Clock - سائەت + + Description + چۈشەندۈرۈش + + + + Revision + - - Width - كەڭلىك + + KernelModeDriver + - + Memory Address ئىچكى ساقلىغۇچ ئادرېسى - + IRQ ئۈزۈش - + Unavailable ئىشلەتكىلى بولمايدۇ - + Disable چەكلەش @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name ئىسمى - + Vendor ساتقۇچى - + Model مودىل @@ -173,17 +192,17 @@ DeviceBios - + Vendor ساتقۇچى - + Version نەشرى - + Chipset ئۆزەك گورۇپىسى @@ -191,72 +210,82 @@ DeviceBluetooth - + Name ئىسمى - + Vendor ساتقۇچى - + Version نەشرى - + Model مودىل - + + Module Alias + مودېلنىڭ باشقا نامى + + + + Physical ID + فىزىكىلىق كىملىك + + + Speed سۈرئەت - + Maximum Power ئەڭ چوڭ قۇۋۋەت - + Driver Version قوزغاتقۇچ نەشىرى - + Driver قوزغاتقۇچ - + Capabilities ئىقتىدارى - + Bus Info باس ئۇچۇرى - + Logical Name لوگىكىلىق ئىسىم - + MAC Address MAC ئادرېسى - + Unavailable ئىشلەتكىلى بولمايدۇ - + Disable چەكلەش @@ -264,57 +293,67 @@ DeviceCdrom - + Name ئىسمى - + Vendor ساتقۇچى - + Model مودىل - + Version نەشرى - + Bus Info باس ئۇچۇرى - + Capabilities ئىقتىدارى - + Driver قوزغاتقۇچ - + Maximum Power ئەڭ چوڭ قۇۋۋەت - + Speed سۈرئەت - + + Module Alias + مودېلنىڭ باشقا نامى + + + + Physical ID + فىزىكىلىق كىملىك + + + Unavailable ئىشلەتكىلى بولمايدۇ - + Disable چەكلەش @@ -322,7 +361,7 @@ DeviceComputer - + Name ئىسمى @@ -330,116 +369,113 @@ DeviceCpu - - + + Name ئىسمى - - + + Vendor ساتقۇچى - + CPU ID بىر تەرەپ قىلغۇچ كىملىكى - + Core ID يادرولۇق كىملىك - + Threads تېما - - Current Speed - نۆۋەتتىكى سۈرئەت - - - + BogoMIPS BogoMIPS - - + + Architecture قۇرۇلما - + CPU Family بىر تەرەپ قىلغۇچ ئائىلىسى - + Model مودىل - - + + Processor بىر تەرەپ قىلغۇچ - + Core(s) يادرو - + Virtualization مەۋھۇملاشتۇرۇش - + Flags بايراق - + Extensions كېڭەيتىلمە - + L3 Cache L3 غەملەك - + L2 Cache L2 غەملەك - + L1i Cache L1i غەملەك - + L1d Cache L1d غەملەك - + Stepping قەدەم بېسىش - + Speed سۈرئەت - + + + Max Speed چوققا سۈرئىتى @@ -447,132 +483,127 @@ DeviceGpu - + Name ئىسمى - + Vendor ساتقۇچى - + Model مودىل - + Version نەشرى - + Graphics Memory گرافىك ئەستە ساقلاش - + + Module Alias + مودېلنىڭ باشقا نامى + + + Physical ID فىزىكىلىق كىملىك - + Memory Address ئىچكى ساقلىغۇچ ئادرېسى - + IO Port I/O ئېغىزى - + Bus Info باس ئۇچۇرى - + Maximum Resolution ئەڭ چوڭ ئېنىقلىق دەرىجىسى - + Minimum Resolution ئەڭ تۆۋەن ئېنىقلىق - + Current Resolution نۆۋەتتىكى قارار - + Driver قوزغاتقۇچ - + Description چۈشەندۈرۈش - - Clock - سائەت - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output چىقىرىشنى كۆرسىتىش - + Capabilities ئىقتىدارى - + IRQ ئۈزۈش - - Width - كەڭلىك - - - + Unavailable ئىشلەتكىلى بولمايدۇ @@ -580,62 +611,72 @@ DeviceImage - + Name ئىسمى - + Vendor ساتقۇچى - + Version نەشرى - + Model مودىل - + Bus Info باس ئۇچۇرى - + + Module Alias + مودېلنىڭ باشقا نامى + + + + Physical ID + فىزىكىلىق كىملىك + + + Speed سۈرئەت - + Maximum Power ئەڭ چوڭ قۇۋۋەت - + Driver قوزغاتقۇچ - + Capabilities ئىقتىدارى - + Serial Number تەرتىپ نومۇرى - + Unavailable ئىشلەتكىلى بولمايدۇ - + Disable چەكلەش @@ -643,62 +684,72 @@ DeviceInput - + Name ئىسمى - + Vendor ساتقۇچى - + Model مودىل - + Interface كۆرۈنمە يۈزى - + Bus Info باس ئۇچۇرى - + + Module Alias + مودېلنىڭ باشقا نامى + + + + Physical ID + فىزىكىلىق كىملىك + + + Speed سۈرئەت - + Maximum Current ئەڭ چوڭ توك ئېقىمى - + Driver قوزغاتقۇچ - + Capabilities ئىقتىدارى - + Version نەشرى - + Unavailable ئىشلەتكىلى بولمايدۇ - + Disable چەكلەش @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview ئومۇمىي چۈشەنچە - - - + + + CPU بىر تەرەپ قىلغۇچ - - + + CPU quantity بىر تەرەپ قىلغۇچ مىقدارى - - + + Motherboard ئانا تاختا - - + + Memory ساقلىغۇ - - + + Display Adapter ماسلاشتۇرغۇچنى كۆرسىتىش - - + + Sound Adapter ئاۋاز ماسلاشتۇرغۇچ - - + + Storage ساقلاش - - + + Other PCI Devices باشقا PCI ئۈسكۈنىلىرى - - + + Battery باتارېيە - - + + Bluetooth كۆك چىش - - + + Network Adapter تور ماسلاشتۇرغۇچ - - + + Mouse چاشقىنەك - - + + Keyboard كۇنۇپكا تاختىسى - - + + Monitor نازارەتچى - - + + CD-ROM قوزغاتقۇچ - - + + Printer پىرىنتېر - - + + Camera كامېرا - - + + Other Devices Other Input Devices باشقا ئۈسكۈنىلەر - - - + + + Device ئۈسكۈنە - - - + + + OS مەشغۇلات سىستېمىسى @@ -847,72 +898,72 @@ DeviceMemory - - + + Name ئىسمى - - + + Vendor ساتقۇچى - - + + Size چوڭلۇقى - - + + Type تىپ - - + + Speed سۈرئەت - + Total Width ئومۇمىي كەڭلىكى - + Locator ئورۇن بەلگىلىگۈچ - + Serial Number تەرتىپ نومۇرى - + Configured Voltage تەڭشەلگەن توك بېسىمى - + Maximum Voltage ئەڭ چوڭ توك بېسىمى - + Minimum Voltage ئەڭ تۆۋەن توك بېسىمى - + Configured Speed تەڭشەلگەن سۈرئەت - + Data Width سان-سىپېر چوڭلۇقى @@ -920,200 +971,198 @@ DeviceMonitor - + Name ئىسمى - + Vendor ساتقۇچى - + Type تىپ - + Display Input كىرگۈزۈشنى كۆرسىتىش - + Interface Type كۆرۈنمە يۈزى تىپى - + Support Resolution قوللاش قارارى - + Current Resolution نۆۋەتتىكى قارار - + Display Ratio كۆرسىتىش نىسبىتى - + Primary Monitor دەسلەپكى كۆزەتكۈ - + Size چوڭلۇقى - + Serial Number تەرتىپ نومۇرى - - - Product Date - مەھسۇلات ۋاقتى - DeviceNetwork - + + Name ئىسمى - + + Vendor ساتقۇچى - + + Type تىپ - + Version نەشرى - + Bus Info باس ئۇچۇرى - + Capabilities ئىقتىدارى - + Driver قوزغاتقۇچ - + Driver Version قوزغاتقۇچ نەشىرى - + + Module Alias + مودېلنىڭ باشقا نامى + + + + Physical ID + فىزىكىلىق كىملىك + + + Maximum Rate ئەڭ چوڭ تېزلىنىشى - + Negotiation Rate كېڭىشىش تېزلىك نىسبىتى - + Port پورت - + Multicast قويغۇچ - + Link ئۇلىنىش - + Latency كېچىكتۈرمە - + IP IP - + Firmware قۇيما ماتېرىيال - + Duplex قوش ئىش - + Broadcast رادىيو - + Auto Negotiation ئاپتوماتىك سۆھبەت - - Clock - سائەت - - - - Width - كەڭلىك - - - + Memory Address ئىچكى ساقلىغۇچ ئادرېسى - + IRQ ئۈزۈش - + MAC Address MAC ئادرېسى - + Logical Name لوگىكىلىق ئىسىم - + Unavailable ئىشلەتكىلى بولمايدۇ - + Disable چەكلەش @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name ئىسمى - + Vendor ساتقۇچى - + Model مودىل - + Bus Info باس ئۇچۇرى - + Version نەشرى - + Input/Output كىرگۈزۈش / چىقىرىش - + Memory ساقلىغۇ - + IRQ ئۈزۈش - + Latency كېچىكتۈرمە - - Clock - سائەت - - - - Width - كەڭلىك - - - + Driver قوزغاتقۇچ - + Capabilities ئىقتىدارى @@ -1189,62 +1228,62 @@ DeviceOthers - + Name ئىسمى - + Vendor ساتقۇچى - + Model مودىل - + Version نەشرى - + Bus Info باس ئۇچۇرى - + Capabilities ئىقتىدارى - + Driver قوزغاتقۇچ - + Maximum Power ئەڭ چوڭ قۇۋۋەت - + Speed سۈرئەت - + Serial Number تەرتىپ نومۇرى - + Unavailable ئىشلەتكىلى بولمايدۇ - + Disable چەكلەش @@ -1252,82 +1291,82 @@ DevicePower - + Name ئىسمى - + Model مودېل - + Vendor ياسىغۇچى - + Serial Number تەرتىپ نومۇرى - + Type تىپ - + Status ھالەت - + Capacity سىغىمى - + Voltage توك بېسىمى - + Slot ئوقۇر - + Design Capacity لايىھەلەنگەن ئىقتىدارى - + Design Voltage لايىھەنگەن بېسىم - + SBDS Version SBDS نەشرى - + SBDS Serial Number SBDS تەرتىپ نومۇرى - + SBDS Manufacture Date SBDS ئىشلەپچىقىرىش ۋاقتى - + SBDS Chemistry SBDS ماتېرىيالى - + Temperature تېمپېراتۇرا @@ -1335,47 +1374,47 @@ DevicePrint - + Name ئىسمى - + Model مودېل - + Vendor ساتقۇچى - + Serial Number تەرتىپ نومۇرى - + Shared ئورتاقلاشقان - + URI URI - + Status ھالەت - + Interface Type كۆرۈنمە يۈزى تىپى - + Disable چەكلەش @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - مودىل - - - - + + Vendor ساتقۇچى - - + + Media Type مېدىيا تىپى - - + + + Size چوڭلۇقى - + + + Name + ئىسمى + + + Version نەشرى - + Capabilities ئىقتىدارى - + + + Module Alias + مودېلنىڭ باشقا نامى + + + + + Physical ID + فىزىكىلىق كىملىك + + + Firmware Version يۇمشاق دېتال نەشرى - + Speed سۈرئەت - + Description چۈشەندۈرۈش - + Serial Number تەرتىپ نومۇرى - + Interface كۆرۈنمە يۈزى - + Rotation Rate ئايلىنىش نىسبىتى - + Unavailable ئىشلەتكىلى بولمايدۇ @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update لازىملىق قوزغاتقۇچ پىروگراممىسنى تاللاڭ - + No drivers found in this folder بۇ ھۆججەت قىسقۇچتا ھېچقانداق قوزغاتقۇچ تېپىلمىدى @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... ئاۋاز ئۈسكۈنىسى ئۇچۇرىنى يۈكلەۋاتىدۇ ... - + Loading BIOS Info... BIOS ئۇچۇرىنى يۈكلەۋاتىدۇ ... - + Loading CD-ROM Info... قوزغاتقۇچ ئۇچۇرلىرىنى يۈكلەۋاتىدۇ ... - + Loading Operating System Info... مەشغۇلات سىستېمىسى ئۇچۇرىنى يۈكلەۋاتىدۇ ... - + Loading CPU Info... بىر تەرەپ قىلغۇچ ئۇچۇرىنى يۈكلەۋاتىدۇ ... - + Loading Other Devices Info... باشقا ئۈسكۈنىلەر ئۇچۇرىنى يۈكلەۋاتىدۇ ... - + Loading Power Info... يۈكلەش ئۇچۇرى ... - + Loading Printer Info... پىرىنتېر ئۇچۇرلىرىنى يۈكلەۋاتىدۇ ... - + Loading Mouse Info... مائۇس ئۇچۇرىنى يۈكلەۋاتىدۇ ... - + Loading Network Adapter Info... تور ماسلاشتۇرغۇچ ئۇچۇرىنى يۈكلەۋاتىدۇ ... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable چەكلەش - + Unavailable ئىشلەتكىلى بولمايدۇ @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable چەكلەش - + Unavailable ئىشلەتكىلى بولمايدۇ @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name ئۈسكۈنە ئۇچۇرى - + Display shortcuts تېزلەتمىلەرنى كۆرسەت - + Close تاقاش - + Help ياردەم - + Copy كۆچۈرۈش - + System سىستېما - + Export ئېكسپورت - + Refresh يېڭىلاش - + Device Manager ئۈسكۈنە باشقۇرغۇچى - + Hardware - + - + Drivers - + - + Monitor كۆرسىتىش ئۈسكۈنىسى - + Overview ئومۇمىي چۈشەنچە - + Display Adapter كۆرسەتكۈچ ماسلاشتۇرغۇچ - + CPU بىر تەرەپ قىلغۇچ - + Network Adapter تور ماسلاشتۇرغۇچ - + Battery باتارېيە @@ -1639,191 +1691,377 @@ PageDetail - + More تېخىمۇ كۆپ + + PageDriverBackupInfo + + + + Name + ئىسمى + + + + + Current Version + + + + + + Driver Platform Version + + + + + Status + ھالەت + + + + Action + + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating يېڭىلاۋاتىدۇ - - - + + + Cancel button بىكار قىلىش - + Next كىينكى - + Warning دىققەت - + The device will be unavailable after the driver uninstallation قوزغاتقۇچ ئۆچۈرۈلگەندىن كىيىن،بۇ ئۈسكىنىنى ئىشلەتكىلى بولمايدۇ - + Uninstall button چىقىرۋىتىش - + Uninstalling ئۆچۈرۋاتىدۇ - + Update successful قوزغاتقۇچ يېڭىلاش تامام - + Uninstallation successful قوزغاتقۇچ ئوڭۇشلۇق ئۆچۈرۈلدى - + Update failed قوزغاتقۇچ يېڭىلاش مەغلۇپ بولدى - + Uninstallation failed قوزغاتقۇچنى ئۆچۈرەلمىدى - + OK button جەزىملەش - + Next button كىينكى - + The selected folder does not exist, please select again ھۆججەت قىسقۇچ مەۋجۇت ئەمەس،قايتا تاللاڭ - + Update button يېڭىلاش - + Previous button كىينكى - + Broken package بولاق بۇزۇلغان - + Unmatched package architecture ماس كەلمەيدىغان قۇرۇلما - - + + The selected file does not exist, please select again ھۆججەت مەۋجۇت ئەمەس،قايتا تاللاڭ - + It is not a driver بۇ قوزغىتىش ھۆججىتى ئەمەس - + Unable to install - no digital signature قاچىلانمىدى، قاچىلاش بولىقىدا رەقەملىك ئىمزا يوقكەن - + Unknown error نامەلۇم خاتالىق - + The driver module was not found بۇ قوزغاتقۇچ مودېلى تېپىلمىدى - + Invalid module format مودۇل فورماتى ئۈنۈمسىز - + The driver module has dependencies بۇ قوزغاتقۇچ مودېلى ئىشلىتىلگەن - PageListView + PageDriverInstallInfo - - Refresh - يېڭىلاش + + + + Device Name + ئۈسكۈنىنىڭ ئىسمى - + + Version Available + + + + + + Size + چوڭلۇقى + + + + + Status + ھالەت + + + + + Action + + + + + New Version + + + + + Current Version + + + + + Missing drivers (%1) + + + + + Outdated drivers (%1) + + + + + Up-to-date drivers (%1) + + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + جەزىملەش + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + ئىسمى + + + + Current Version + + + + + Backup Version + + + + + Action + + + + + Restorable Drivers + + + + + PageListView + + + Refresh + يېڭىلاش + + + Export ئېكسپورت - + Overview ئومۇمىي چۈشەنچە + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device ئۈسكۈنىنى قوزغىتىش مەغلۇب بولدى - + Failed to disable the device ئۈسكۈنىنى چەكلىيەلمىدى - + Failed to disable it: unable to get the device SN ئۈسكۈنە تەرتىپ نومۇرىنى ئئالالمىدى، چەكلەش مەغلۇپ بولدى - + Update Drivers قوزغاتقۇچ يېڭىلاش - + Uninstall Drivers قوزغاتقۇچنى چىقىرۋىتىش @@ -1831,22 +2069,22 @@ PageOverview - + Refresh يېڭىلاش - + Export ئېكسپورت - + Copy كۆچۈرۈش - + Overview ئومۇمىي چۈشەنچە @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh يېڭىلاش - + Export ئېكسپورت - + Copy كۆچۈرۈش - - + + Enable قوزغىتىش - + Update drivers قوزغاتقۇچ يېڭىلاش - + Uninstall drivers قوزغاتقۇچنى چىقىرۋىتىش - + Allow it to wake the computer - + - + Disable چەكلەش - - + + Failed to disable it: unable to get the device SN ئۈسكۈنە تەرتىپ نومۇرىنى ئالالمىدى، چەكلەش مەغلۇپ بولدى - + Failed to disable the device ئۈسكۈنىنى چەكلىيەلمىدى - + Failed to enable the device ئۈسكۈنىنى قوزغىتىش مەغلۇب بولدى - + Update Drivers قوزغاتقۇچ يېڭىلاش - + Uninstall Drivers قوزغاتقۇچنى چىقىرۋىتىش @@ -1924,867 +2162,847 @@ QObject - + SubVendor قوشۇمچە ساتقۇچى - + SubDevice قوشۇمچى ئۈسكىنە - + Driver قوزغاتقۇچ - + Driver Status قوزغاتقۇ ھالىتى - + Driver Activation Cmd قوزغاتقۇچ ئاكتىپلاش بۇيرۇقى - - + - + + Config Status ھالەتنى تەڭشەش - - - - - - - physical id - فىزىكىلىق id - - - + latency كېچىكىش - + Phys Phys - + Sysfs Sysfs - + Handlers بېجىرگۈچىلەر - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - مودېل - - - - Vendor - ساتقۇچى - - - + Version نەشرى - - + + + Bus ئومۇمىي لىنىيە - - + + BIOS Information BIOS ئۇچۇرى - - + + Base Board Information ئانا تاختا ئۇچۇرى - - + + System Information سىستېما ئۇچۇرى - - + + Chassis Information تەگلىك ئۇچۇرى - - + + Physical Memory Array فىزىكىلىق ساقلىغۇچ گورۇپىسى - + Release Date ئېلان قىلىنغان ۋاقىت - + Address ئادرېس - + Runtime Size ئىجرا ۋاقتى - + ROM Size ROM سىغىمى - + Characteristics ئالاھىدىلىكى - + BIOS Revision BIOS تۈزىتىلگەن نۇسخىسى - + Firmware Revision زاپچاس يامىقى - - + + Product Name مەھسۇلات ئىسمى - - - + + + Serial Number تەرتىپ نومۇرى - - - + + + Asset Tag مۈلۈك بەلگىسى - - + + Features خاسلىقلار - + Location In Chassis تەگلىك ئورنى - + Chassis Handle ئاساسىي ماشىنا ساندۇقى پىروگراممىسى - - + + Type تىپ - + Contained Object Handles مەزمۇننى ئۆز ئىچىگە ئالغان - - + + UUID UUID - + Wake-up Type ئويغىنىش تىپى - - + + SKU Number SKU نومۇرى - + Family ئائىلە - + Lock قۇلۇپ - + Boot-up State قوزغىتىش ھالىتى - + Power Supply State توك بىلەن تەمىنلەش ھالىتى - + Thermal State قىززىق ھالەت - + Security Status بىخەتەرلىك ھالەتلىرى - + OEM Information OEM ئۇچۇرلىرى - + Height ئېگىزلىكى - + Number Of Power Cords توك سىمىنىڭ سانى - + Contained Elements ئۆز ئىچىگە ئېلىنغان ئېلمىنىتلار - + Location ئورنى - + Error Correction Type خاتالىق تۈزىتىش تىپى - + Maximum Capacity ئەڭ چوڭ سىغىمى - - + + Error Information Handle خاتالىق ئۇچۇرى - + Number Of Devices ئۈسكۈنىلەرنىڭ سانى - + BIOS ROMSIZE BIOS ROM سىغىمى - + Release date ئېلان قىلىنغان ۋاقىت - + Board name مۇدىرىيەت ئىسمى - + SMBIOS Version SMBIOS نەشرى - + Language Description Format تىل چۈشەندۈرۈش فورماتى - + Installable Languages قاچىلىغىلى بولىدىغان تىللار - + Currently Installed Language ھازىر قاچىلانغان تىل - + BD Address BD ئادرېسى - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type بولاق تىپى - + Link policy ئۇلىنىش سىياسىتى - + Link mode ئۇلىنىش ھالىتى - - + + Class تىپى - + Service Classes مۇلازىمەت دەرسلىرى - + Device Class ئۈسكۈنە سىنىپى - + HCI Version HCI نەشرى - + LMP Version LMP نەشرى - + Subversion قوشۇمچە نەشىرى - + Device ئۈسكۈنە - - + + Serial ID تەرتىپ نومۇر - + product مەھسۇلات - + description چۈشەندۈرۈش - + Powered تۆھپىكار - + Discoverable بايقاشقا بولىدۇ - + Pairable مۇۋاپىق - + Modalias بۇيرۇققا باشقا نام بەلگىلەش - + Discovering ئىزدەۋاتىدۇ - + Driver Modules قوزغاتقۇچ مودۇلى - - - + + + + + Device File ئۈسكۈنە ھۆججىتى - + Device Files ئۈسكۈنە ھۆججەتلىرى - - + + + Device Number ئۈسكۈنە نومۇرى - - Module Alias - مودېلنىڭ باشقا نامى - - - + Application ئىلتىماس - + status ھالەت - - + + + logical name لوگىكىلىق ئىسىم - - + + ansiversion ANSI نەشرى - + CPU implementer بىر تەرەپ قىلغۇچ پىروگراممىسى - + CPU architecture بىر تەرەپ قىلغۇچ قۇرۇلمىسى - + CPU variant مەركىزى بىر تەرەپ قىلغۇچ - + CPU part بىر تەرەپ قىلغۇچ قىسمى - + CPU revision بىر تەرەپ قىلغۇچ تۈزىتىلگەن نۇسخىسى - + One بىرى - + Two ئىككى - + Four تۆت - + Six ئالتە - + Eight سەككىز - + Ten ئون - + Twelve ئون ئىككى - + Fourteen ئون تۆت - + Sixteen ئون ئالتە - + Eighteen ئون سەككىز - + Twenty يىگىرمە - + Twenty-two يىگىرمە ئىككى - + Twenty-four يىگىرمە تۆت - + Twenty-six يىگىرمە ئالتە - + Twenty-eight يىگىرمە سەككىز - + Thirty ئوتتۇز - + Thirty-two ئوتتۇز ئىككى - + Thirty-four ئوتتۇز تۆت - + Thirty-six ئوتتۇز ئالتە - + Thirty-eight ئوتتۇز سەككىز - + Forty قىرىق - + Forty-two قىرىق ئىككى - + Forty-four قىرىق تۆت - + Forty-six قىرىق ئالتە - + Forty-eight قىرىق سەككىز - + Fifty ئەللىك - + Fifty-two ئەللىك ئىككى - + Fifty-four ئەللىك تۆت - + Fifty-six ئەللىك ئالتە - + Fifty-eight ئەللىك سەككىز - + Sixty ئاتمىش - + Sixty-two ئاتمىش ئىككى - + Sixty-four ئاتمىش تۆت - + Sixty-six ئاتمىش ئالتە - + Sixty-eight ئاتمىش سەككىز - + Seventy يەتمىش - + Seventy-two يەتمىش ئىككى - + Seventy-four يەتمىش تۆت - + Seventy-six يەتمىش ئالتە - + Seventy-eight يەتمىش سەككىز - + Eighty سەكسەن - + Eighty-two سەكسەن ئىككى - + Eighty-four سەكسەن تۆت - + Eighty-six سەكسەن ئالتە - + Eighty-eight سەكسەن سەككىز - + Ninety توقسان - + Ninety-two توقسان ئىككى - + Ninety-four توقسان تۆت - + Ninety-six توقسان ئالتە - + Ninety-eight توقسان سەككىز - + One hundred يۈز - + One hundred and Two يۈز ئىككى - + One hundred and four يۈز تۆت - + One hundred and Six يۈز ئالتە - + One hundred and Eight يۈز سەككىز - + One hundred and Ten يۈز ئون - + One hundred and Twelve يۈز ئون ئىككى - + One hundred and Fourteen يۈز ئون تۆت - + One hundred and Sixteen يۈز ئون ئالتە - + One hundred and Eighteen يۈز ئون سەككىز - + One hundred and Twenty يۈز يىگىرمە - + One hundred and Twenty-two بىر يۈز يىگىرمە ئىككى - + One hundred and Twenty-four يۈز يىگىرمە تۆت - + One hundred and Twenty-six يۈز يىگىرمە ئالتە - + One hundred and Twenty-eight بىر يۈز يىگىرمە سەككىز - + One hundred and Ninety-two بىر يۈز توقسان ئىككى - + Two hundred and fifty-six 256 @@ -2824,1028 +3042,1124 @@ GLSL نەشرى - - - + + + Unknown نامەلۇم - + Uniq Uniq - + MSC MSC - - + + + Hardware Class قاتتىق دېتال سىنىپى - - - - + + + + CPU بىر تەرەپ قىلغۇچ - - - - + + + + No CPU found بىر تەرەپ قىلغۇچ تېپىلمىدى - - - - + + + + Motherboard ئانا تاختا - - - - + + + + No motherboard found باش تاختا تېپىلمىدى - - - - + + + + Memory ساقلىغۇ - - - - + + + + No memory found ئىچكى ساقلىغۇچ تېپىلمىدى - - - - + + + + Storage ساقلاش - - - - + + + + No disk found دىسكا تېپىلمىدى - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter ماسلاشتۇرغۇچنى كۆرسىتىش - - - - + + + + No GPU found GPU تېپىلمىدى - - - - + + + + Monitor نازارەتچى - - - - + + + + No monitor found نازارەتچى تېپىلمىدى - - - - - + + + + + Network Adapter تور ماسلاشتۇرغۇچ - - - - + + + + No network adapter found تور ماسلاشتۇرغۇچ تېپىلمىدى - - - - - + + + + + Sound Adapter ئاۋاز ماسلاشتۇرغۇچ - - - - + + + + No audio device found ئاۋاز ئۈسكۈنىسى تېپىلمىدى - - - - - + + + + + Bluetooth كۆك چىش - - - - + + + + No Bluetooth device found كۆك چىش ئۈسكۈنىسى تېپىلمىدى - - - - + + + + Other PCI Devices باشقا PCI ئۈسكۈنىلىرى - - - - + + + + No other PCI devices found باشقا PCI ئۈسكۈنىلىرى تېپىلمىدى - - - - + + + + Power توك - - - - + + + + No battery found باتارېيە تېپىلمىدى - - - - - + + + + + Keyboard كۇنۇپكا تاختىسى - - - - + + + + No keyboard found ھېچقانداق كۇنۇپكا تاختىسى تېپىلمىدى - - - - - + + + + + Mouse چاشقىنەك - - - - + + + + No mouse found مائۇس تېپىلمىدى - - - - - - + + + + + + Printer پىرىنتېر - - - - + + + + No printer found پىرىنتېر تېپىلمىدى - - - - + + + + Camera كامېرا - - - - + + + + No camera found كامېرا تېپىلمىدى - - - - + + + + CD-ROM قوزغاتقۇچ - - - - + + + + No CD-ROM found قوزغاتقۇچ تېپىلمىدى - - - - - + + + + + Other Devices باشقا ئۈسكۈنىلەر - - - - + + + + No other devices found باشقا ئۈسكۈنىلەر تېپىلمىدى - + Array Handle گورۇپپا پىروگرامما - + Form Factor سىغىم شەكلى - + Set بېكىتىش - + Bank Locator سىغم بەلگىلىگۈچ - + Type Detail تەپسىلات تىپى - + Part Number بۆلەك نومۇرى - + Rank رەت تەرتىپى - + Memory Technology ئىچكى ساقلىغۇچ تېخنىكىسى - + Memory Operating Mode Capability ئىچكى ساقلىغۇچ مەشغۇلات ئىقتىدارى - + Firmware Version يۇمشاق دېتال نەشرى - + Module Manufacturer ID مودېل ئىشلەپچىقارغۇچى - + Module Product ID IDمودۇل مەھسۇلات - + Memory Subsystem Controller Manufacturer ID ئىچكى ساقلىغۇچ سىستېمىسى كونتروللىغۇچ ئىشلەپچىقارغۇچى كىملىكى - + Memory Subsystem Controller Product ID ئىچكى ساقلىغۇچ سىستېمىسى كونتروللىغۇچ مەھسۇلات IDسى - + Non-Volatile Size تۇراقسىز چوڭلۇق - + Volatile Size ئۆزگىرىشچان چوڭلۇق - + Cache Size ساقلانما سىغىمى - + Logical Size لوگىكىلىق چوڭلۇق - - - - - + + + + + inch ئىنگىلىزچىسى - + Date چېسلا - + ioport I/O ئېغىزى - + network تور - - + battery باتارېيە - + native-path قاچىلاش ئورنى - + power supply توك بىلەن تەمىنلەش - + updated يېڭىلاندى - + has history خاتىرە - + has statistics ئىستاتىستىكا - + rechargeable توك قاچىلىغىلى بولىدۇ - + state ھالەت - + warning-level ئاگاھلاندۇرۇش دەرىجىسى - + energy ئېنېرگىيە - + energy-empty ئېنېرگىيەسىز - + energy-full ئېنېرگىيە تولۇق - + energy-full-design ئېنېرگىيە تولۇق لايىھىلەش - + energy-rate ئېنېرگىيە نىسبىتى - + voltage توك بېسىمى - + percentage پىرسەنت - + technology باتارىيە تېخنىكىسى - + icon-name سىنبەلگە - + online توردا - + daemon-version Daemon نەشىرى - + on-battery باتارېيەدە - + lid-is-closed قاپاق تاقالغان - + lid-is-present لەپتوپنى ئېچىش - + critical-action توك بەك ئاز قالغاندا ئىجرا بولسۇن - + copies نۇسخىلىرى - + job-cancel-after خىزمەتنى ئەمەلدىن قالدۇرۇش - + job-hold-until خىزمەتنى تۇتۇش بۆلىكى - + job-priority خىزمەت تەرتىپى - + marker-change-time ئۆزگەرتىش سانىغا بەلگە سېلىش - + number-up تەريىپ نومۇرى - + orientation-requested يۆنىلىش تەلەپ قىلىنغان - + print-color-mode رەڭلىك بىسىش ھالىتى - + printer-is-accepting-jobs نۆۋەتتە باسقىلى بولىدىغىنى - + printer-is-shared پىرىنتېر ئورتاقلاندى - + printer-is-temporary ۋاقىتلىق پىرىنتېر - + printer-make-and-model پىرىنتېر ياسىغۇچى ۋە تىپى - + printer-state-change-time بېسىش ھالىتىنى ئۆزگەرتكەن ۋاقىت - + printer-state-reasons بېسىش ھالىتى ئۇچۇرى - + printer-type پرىنتېر تىپى - + printer-uri-supported URI نى قوللايدۇ - + sides يان تەرەپ - - - - + + + + + + SSD مۇقىم ھالەتلىك ساقلىغۇچ - - + + HDD مېخانىكىلىق ساقلىغۇچ - + + bus info باس ئۇچۇرى - + logicalsectorsize لوگىكىلىق سېكتور چوڭلۇقى - + sectorsize ساھە - + guid كۆرسەتمە - + Geometry (Logical) گېئومېتىرىيە (لوگىكىلىق) - - + + Device Manager ئۈسكۈنە باشقۇرغۇچى - + Device Manager is a handy tool for viewing hardware information and managing the devices. ئۈسكۈنە باشقۇرغۇچى قاتتىق دېتال ئۇچۇرلىرىنى كۆرۈش ۋە ئۈسكۈنىلەرنى باشقۇرۇشتىكى قۇلايلىق قورال. - + New drivers available! Install or update them now. - + - + + View + + + + Include subfolders ئۆز ئىچىگە ئالغان تارماق ھۆججەت قىسقۇچ - + Search for drivers in this path قۇرغاتقۇچ ئورنىنى تاللاڭ - - - - Device Name - ئۈسكۈنىنىڭ ئىسمى + + %1 driver updates available + - - Version Available - + + + Time checked: %1 + - - - Size - چوڭلۇقى + + Downloading drivers for %1... + - - - Status - ھالەت + + Download speed: %1 Downloaded %2/%3 + - - - Action - + + Installing drivers for %1... + - - New Version - + + %1 drivers installed, %2 drivers failed + - - Current Version - + + %1 drivers installed + - - Missing drivers (%1) - + + Failed to install drivers + - - Outdated drivers (%1) - + + Network error. Reconnecting... + - - Up-to-date drivers (%1) - + + Download speed: %1 + - - %1 driver updates available - + + Your drivers are up to date + - - - Time checked: %1 - + + All drivers have been backed up + - - Downloading drivers for %1... - + + + A total of %1 drivers, of which %2 have been backed up + - - Download speed: %1 Downloaded %2/%3 - + + You have %1 drivers that can be backed up, it is recommended to do so immediately + - - Installing drivers for %1... - + + You have %1 drivers that can be backed up + - - %1 drivers installed, %2 drivers failed - + + Backing up the %1 driver, a total of %2 drivers + - - %1 drivers installed - + + Backing up: %1 + - - Failed to install drivers - + + %1 drivers backed up, %2 drivers failed + - - Network error. Reconnecting... - + + Failed to backup drivers + - - Download speed: %1 - + + %1 drivers backed up + - - Your drivers are up to date - + + You have %1 drivers that can be restored + - + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot - + - + Please %1 for the installed drivers to take effect - + + + + + View backup path + + + + + Backup All + - - + + submit feedback - + - + Please try again or %1 to us - + - + Install All - + - - + + Scan Again - + - + Cancel بىكار قىلىش - + Scanning hardware device drivers, please wait... - + - - + + Scanning %1 - + - + Scan failed - + - + Network unavailable - + - + Please check your network connection - + - + Please scan again or %1 to us - + - + You are installing a driver, which will be interrupted if you exit. - + - + + + Are you sure you want to exit? - + - + + + Exit button - + - + + + Cancel button بىكار قىلىش - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter - + - - + + Imaging device - + - + Display adapter - + - + Sound card - + - + Network adapter - + - + Wireless network adapter - + - + Installation successful - + - + Installation failed - + - + Downloading - + - + Installing - + - + Not installed - + - + Out-of-date - + - + Waiting - + + + + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + - + Unknown error نامەلۇم خاتالىق - + Network error - + - + Canceled - + - + Failed to get driver files - + - + Update يېڭىلاش - + + Backup + + + + + Restore + + + + Install - + TableWidget - - + + Disable چەكلەش - + Refresh يېڭىلاش - + Export ئېكسپورت - + Update drivers قوزغاتقۇچ يېڭىلاش - + Uninstall drivers قوزغاتقۇچنى چىقىرۋىتىش - + Allow it to wake the computer - + - - + + Enable قوزغىتىش @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh يېڭىلاش - + Export ئېكسپورت - + Copy كۆچۈرۈش - + Disable چەكلەش - + Unavailable ئىشلەتكىلى بولمايدۇ @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please يەرلىكتىكى ھۆججەت قىسقۇچنى تاللاڭ @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... يۈكلەۋاتىدۇ... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_uk.ts b/deepin-devicemanager/translations/deepin-devicemanager_uk.ts index c85f0ac7b..1592139ac 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_uk.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_uk.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + Гаразд + + + + Feedback + + + + OK button Гаразд @@ -11,7 +23,7 @@ CmdButtonWidget - + More Більше @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More Більше - + Collapse Згорнути @@ -51,14 +63,14 @@ DetailTreeView - - + + More Більше - - + + Collapse Згорнути @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable Вимкнути - + Unavailable Недоступне @@ -80,74 +92,81 @@ DeviceAudio - + Device Name Назва пристрою - - + + Name Назва - - + + Vendor Постачальник - - Model - Модель + + Chip + Мікросхема - - Version - Версія + + Capabilities + Можливості - - Bus Info - Дані щодо каналу + + + Module Alias + Альт. назва модуля - - Chip - Мікросхема + + + Physical ID + Фізичний ID - - Capabilities - Можливості + + SysFS_Path + - - Clock - Годинник + + Description + Опис + + + + Revision + - - Width - Ширина + + KernelModeDriver + - + Memory Address Адреса у пам'яті - + IRQ IRQ - + Unavailable Недоступне - + Disable Вимкнути @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name Назва - + Vendor Постачальник - + Model Модель @@ -173,17 +192,17 @@ DeviceBios - + Vendor Постачальник - + Version Версія - + Chipset Набір мікросхем @@ -191,72 +210,82 @@ DeviceBluetooth - + Name Назва - + Vendor Постачальник - + Version Версія - + Model Модель - + + Module Alias + Альт. назва модуля + + + + Physical ID + Фізичний ID + + + Speed Швидкість - + Maximum Power Максимальна потужність - + Driver Version Версія драйвера - + Driver Драйвер - + Capabilities Можливості - + Bus Info Дані щодо каналу - + Logical Name Логічна назва - + MAC Address MAC-адреса - + Unavailable Недоступне - + Disable Вимкнути @@ -264,57 +293,67 @@ DeviceCdrom - + Name Назва - + Vendor Постачальник - + Model Модель - + Version Версія - + Bus Info Дані щодо каналу - + Capabilities Можливості - + Driver Драйвер - + Maximum Power Максимальна потужність - + Speed Швидкість - + + Module Alias + Альт. назва модуля + + + + Physical ID + Фізичний ID + + + Unavailable Недоступне - + Disable Вимкнути @@ -322,7 +361,7 @@ DeviceComputer - + Name Назва @@ -330,116 +369,113 @@ DeviceCpu - - + + Name Назва - - + + Vendor Постачальник - + CPU ID Ід. проц. - + Core ID ID ядра - + Threads Потоки - - Current Speed - Поточна швидкість - - - + BogoMIPS BogoMIPS - - + + Architecture Архітектура - + CPU Family Сімейство проц. - + Model Модель - - + + Processor Процесор - + Core(s) Ядра - + Virtualization Віртуалізація - + Flags Прапорці - + Extensions Розширення - + L3 Cache Кеш L3 - + L2 Cache Кеш L2 - + L1i Cache Кеш L1i - + L1d Cache Кеш L1d - + Stepping Модифікація - + Speed Швидкість - + + + Max Speed Макс. швидкість @@ -447,132 +483,127 @@ DeviceGpu - + Name Назва - + Vendor Постачальник - + Model Модель - + Version Версія - + Graphics Memory Графічна пам'ять - + + Module Alias + Альт. назва модуля + + + Physical ID Фізичний ID - + Memory Address Адреса у пам'яті - + IO Port Порт ВВ - + Bus Info Дані щодо каналу - + Maximum Resolution Максимальна роздільність - + Minimum Resolution Мінімальна роздільність - + Current Resolution Поточна роздільність - + Driver Драйвер - + Description Опис - - Clock - Годинник - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output Виведення на дисплей - + Capabilities Можливості - + IRQ IRQ - - Width - Ширина - - - + Unavailable Недоступне @@ -580,62 +611,72 @@ DeviceImage - + Name Назва - + Vendor Постачальник - + Version Версія - + Model Модель - + Bus Info Дані щодо каналу - + + Module Alias + Альт. назва модуля + + + + Physical ID + Фізичний ID + + + Speed Швидкість - + Maximum Power Максимальна потужність - + Driver Драйвер - + Capabilities Можливості - + Serial Number Серійний номер - + Unavailable Недоступне - + Disable Вимкнути @@ -643,62 +684,72 @@ DeviceInput - + Name Назва - + Vendor Постачальник - + Model Модель - + Interface Інтерфейс - + Bus Info Дані щодо каналу - + + Module Alias + Альт. назва модуля + + + + Physical ID + Фізичний ID + + + Speed Швидкість - + Maximum Current Максимальний струм - + Driver Драйвер - + Capabilities Можливості - + Version Версія - + Unavailable Недоступне - + Disable Вимкнути @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview Огляд - - - + + + CPU Процесор - - + + CPU quantity Кількість процесорів - - + + Motherboard Материнська плата - - + + Memory Пам'ять - - + + Display Adapter Адаптер дисплея - - + + Sound Adapter Звуковий адаптер - - + + Storage Сховище даних - - + + Other PCI Devices Інші пристрої PCI - - + + Battery Акумулятор - - + + Bluetooth Bluetooth - - + + Network Adapter Адаптер мережі - - + + Mouse Миша - - + + Keyboard Клавіатура - - + + Monitor Монітор - - + + CD-ROM CD-ROM - - + + Printer Принтер - - + + Camera Камера - - + + Other Devices Other Input Devices Інші пристрої - - - + + + Device Пристрій - - - + + + OS ОС @@ -847,72 +898,72 @@ DeviceMemory - - + + Name Назва - - + + Vendor Постачальник - - + + Size Розмір - - + + Type Тип - - + + Speed Швидкість - + Total Width Загальна ширина - + Locator Локатор - + Serial Number Серійний номер - + Configured Voltage Поточне напруження - + Maximum Voltage Максимальна напруга - + Minimum Voltage Мінімальна напруга - + Configured Speed Налаштована швидкість - + Data Width Ширина даних @@ -920,200 +971,198 @@ DeviceMonitor - + Name Назва - + Vendor Постачальник - + Type Тип - + Display Input Вхід дисплея - + Interface Type Тип інтерфейсу - + Support Resolution Підтримувана роздільність - + Current Resolution Поточна роздільність - + Display Ratio Співвідношення розмірів - + Primary Monitor Основний монітор - + Size Розмір - + Serial Number Серійний номер - - - Product Date - Дата продукту - DeviceNetwork - + + Name Назва - + + Vendor Постачальник - + + Type Тип - + Version Версія - + Bus Info Дані щодо каналу - + Capabilities Можливості - + Driver Драйвер - + Driver Version Версія драйвера - + + Module Alias + Альт. назва модуля + + + + Physical ID + Фізичний ID + + + Maximum Rate Максимальна частота - + Negotiation Rate Частота узгодження - + Port Порт - + Multicast Групова трансляція - + Link Зв'язок - + Latency Латентність - + IP IP - + Firmware Мікропрограма - + Duplex Двобічний - + Broadcast Трансляція - + Auto Negotiation Автоузгодження - - Clock - Годинник - - - - Width - Ширина - - - + Memory Address Адреса у пам'яті - + IRQ IRQ - + MAC Address MAC-адреса - + Logical Name Логічна назва - + Unavailable Недоступне - + Disable Вимкнути @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name Назва - + Vendor Постачальник - + Model Модель - + Bus Info Дані щодо каналу - + Version Версія - + Input/Output Вхід/Вихід - + Memory Пам'ять - + IRQ IRQ - + Latency Латентність - - Clock - Годинник - - - - Width - Ширина - - - + Driver Драйвер - + Capabilities Можливості @@ -1189,62 +1228,62 @@ DeviceOthers - + Name Назва - + Vendor Постачальник - + Model Модель - + Version Версія - + Bus Info Дані щодо каналу - + Capabilities Можливості - + Driver Драйвер - + Maximum Power Максимальна потужність - + Speed Швидкість - + Serial Number Серійний номер - + Unavailable Недоступне - + Disable Вимкнути @@ -1252,82 +1291,82 @@ DevicePower - + Name Назва - + Model Модель - + Vendor Постачальник - + Serial Number Серійний номер - + Type Тип - + Status Стан - + Capacity Місткість - + Voltage Напруга - + Slot Слот - + Design Capacity Проєктна місткість - + Design Voltage Проєктна напруга - + SBDS Version Версія SBDS - + SBDS Serial Number Серійний номер SBDS - + SBDS Manufacture Date Дата вироблення SBDS - + SBDS Chemistry Хімія SBDS - + Temperature Температура @@ -1335,47 +1374,47 @@ DevicePrint - + Name Назва - + Model Модель - + Vendor Постачальник - + Serial Number Серійний номер - + Shared Спільний - + URI Адреса - + Status Стан - + Interface Type Тип інтерфейсу - + Disable Вимкнути @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - Модель - - - - + + Vendor Постачальник - - + + Media Type Тип носія - - + + + Size Розмір - + + + Name + Назва + + + Version Версія - + Capabilities Можливості - + + + Module Alias + Альт. назва модуля + + + + + Physical ID + Фізичний ID + + + Firmware Version Версія мікропрограми - + Speed Швидкість - + Description Опис - + Serial Number Серійний номер - + Interface Інтерфейс - + Rotation Rate Частота обертання - + Unavailable Недоступне @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update Виберіть драйвер для оновлення - + No drivers found in this folder У цій теці драйверів не знайдено @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... Завантажуємо дані щодо звукових пристроїв… - + Loading BIOS Info... Завантажуємо дані BIOS... - + Loading CD-ROM Info... Завантажуємо дані щодо CD-ROM... - + Loading Operating System Info... Завантажуємо дані щодо операційної системи… - + Loading CPU Info... Завантажуємо відомості щодо процесора… - + Loading Other Devices Info... Завантажуємо дані щодо інших пристроїв… - + Loading Power Info... Завантажуємо дані щодо живлення… - + Loading Printer Info... Завантажуємо дані щодо принтерів… - + Loading Mouse Info... Завантажуємо дані щодо миші… - + Loading Network Adapter Info... Завантажуємо дані щодо адаптера мережі… @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable Вимкнути - + Unavailable Недоступне @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable Вимкнути - + Unavailable Недоступне @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name Дані щодо пристрою - + Display shortcuts Скорочення дисплея - + Close Закрити - + Help Довідка - + Copy Копіювати - + System Система - + Export Експортувати - + Refresh Оновити - + Device Manager Керування пристроями - + Hardware Обладнання - + Drivers Драйвери - + Monitor Монітор - + Overview Огляд - + Display Adapter Адаптер дисплея - + CPU Процесор - + Network Adapter Адаптер мережі - + Battery Акумулятор @@ -1639,191 +1691,377 @@ PageDetail - + More Більше + + PageDriverBackupInfo + + + + Name + Назва + + + + + Current Version + Поточна версія + + + + + Driver Platform Version + + + + + Status + Стан + + + + Action + Дія + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating Оновлення - - - + + + Cancel button Скасувати - + Next Далі - + Warning Попередження - + The device will be unavailable after the driver uninstallation Після вилучення драйвер неможливо буде отримати доступ до пристрою - + Uninstall button Вилучити - + Uninstalling Вилучення - + Update successful Успішне оновлення - + Uninstallation successful Успішне вилучення - + Update failed Помилка під час оновлення - + Uninstallation failed Помилка під час вилучення - + OK button Гаразд - + Next button Далі - + The selected folder does not exist, please select again Вибраної теки не існує. Будь ласка, виберіть іншу теку - + Update button Оновити - + Previous button Назад - + Broken package Пошкоджений пакунок - + Unmatched package architecture Невідповідна архітектура пакунка - - + + The selected file does not exist, please select again Вибраного файла не існує. Будь ласка, виберіть інший файл - + It is not a driver Не є драйвером - + Unable to install - no digital signature Неможливо встановити: немає цифрового підпису - + Unknown error Невідома помилка - + The driver module was not found Модуль драйвера не знайдено - + Invalid module format Некоректний формат модуля - + The driver module has dependencies Модуль драйвера має залежності - PageListView + PageDriverInstallInfo - - Refresh - Оновити + + + + Device Name + Назва пристрою - + + Version Available + Доступна версія + + + + + Size + Розмір + + + + + Status + Стан + + + + + Action + Дія + + + + New Version + Нова версія + + + + Current Version + Поточна версія + + + + Missing drivers (%1) + Не вистачає драйверів (%1) + + + + Outdated drivers (%1) + Застарілі драйвери (%1) + + + + Up-to-date drivers (%1) + Актуальні драйвери (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + Гаразд + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + Назва + + + + Current Version + Поточна версія + + + + Backup Version + + + + + Action + Дія + + + + Restorable Drivers + + + + + PageListView + + + Refresh + Оновити + + + Export Експортувати - + Overview Огляд + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device Не вдалося увімкнути пристрій - + Failed to disable the device Не вдалося вимкнути пристрій - + Failed to disable it: unable to get the device SN Не вдалося вимкнути його: не можемо отримати серійний номер пристрою - + Update Drivers Оновити драйвери - + Uninstall Drivers Вилучити драйвери @@ -1831,22 +2069,22 @@ PageOverview - + Refresh Оновити - + Export Експортувати - + Copy Копіювати - + Overview Огляд @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh Оновити - + Export Експортувати - + Copy Копіювати - - + + Enable Увімкнути - + Update drivers Оновити драйвери - + Uninstall drivers Вилучити драйвери - + Allow it to wake the computer Дозволити пробуджувати комп'ютер - + Disable Вимкнути - - + + Failed to disable it: unable to get the device SN Не вдалося вимкнути його: не можемо отримати серійний номер пристрою - + Failed to disable the device Не вдалося вимкнути пристрій - + Failed to enable the device Не вдалося увімкнути пристрій - + Update Drivers Оновити драйвери - + Uninstall Drivers Вилучити драйвери @@ -1924,867 +2162,847 @@ QObject - + SubVendor Підрядчик - + SubDevice Підпристрій - + Driver Драйвер - + Driver Status Стан драйвера - + Driver Activation Cmd Команда активації драйвера - - + - + + Config Status Стан налаштувань - - - - - - - physical id - фізичний ід. - - - + latency латентність - + Phys Фіз. - + Sysfs Sysfs - + Handlers Обробники - - + + PROP PROP - - + + EV EV - - + + KEY КЛЮЧ - - Model - Модель - - - - Vendor - Постачальник - - - + Version Версія - - + + + Bus Канал - - + + BIOS Information Дані BIOS - - + + Base Board Information Базові дані щодо плати - - + + System Information Системна інформація - - + + Chassis Information Дані щодо основи - - + + Physical Memory Array Масив фізичної пам'яті - + Release Date Дата випуску - + Address Адреса - + Runtime Size Динамічний розмір - + ROM Size Розмір ROM - + Characteristics Характеристики - + BIOS Revision Модифікація BIOS - + Firmware Revision Модифікація мікропрограми - - + + Product Name Назва продукту - - - + + + Serial Number Серійний номер - - - + + + Asset Tag Мітка активу - - + + Features Можливості - + Location In Chassis Розташування на основі - + Chassis Handle Обробник основи - - + + Type Тип - + Contained Object Handles Обробники вміщених об'єктів - - + + UUID UUID - + Wake-up Type Тип пробудження - - + + SKU Number Номер SKU - + Family Сімейство - + Lock Заблокувати - + Boot-up State Стан завантаження - + Power Supply State Стан живлення - + Thermal State Термічний стан - + Security Status Стан безпеки - + OEM Information Дані щодо OEM - + Height Висота - + Number Of Power Cords Кількість ліній живлення - + Contained Elements Включені елементи - + Location Розташування - + Error Correction Type Тип виправлення помилок - + Maximum Capacity Максимальна місткість - - + + Error Information Handle Обробник відомостей щодо помилок - + Number Of Devices Кількість пристроїв - + BIOS ROMSIZE Розмір BIOS - + Release date Дата випуску - + Board name Назва плати - + SMBIOS Version Версія SMBIOS - + Language Description Format Формат опису мови - + Installable Languages Придатні до встановлення мови - + Currently Installed Language Поточна встановлена мова - + BD Address Адреса BD - + ACL MTU MTU ACL - + SCO MTU MTU SCO - + Packet type Тип пакета - + Link policy Правила зв'язку - + Link mode Режим зв'язку - - + + Class Клас - + Service Classes Класи служби - + Device Class Клас пристрою - + HCI Version Версія HCI - + LMP Version Версія LMP - + Subversion Підверсія - + Device Пристрій - - + + Serial ID Послідовний ід. - + product продукт - + description опис - + Powered Живлення - + Discoverable Може визначатися - + Pairable Може пов'язуватися - + Modalias Мод-прив'язка - + Discovering Визначення - + Driver Modules Модулі драйвера - - - + + + + + Device File Файл пристрою - + Device Files Файли пристроїв - - + + + Device Number Номер пристрою - - Module Alias - Альт. назва модуля - - - + Application Програма - + status стан - - + + + logical name логічна назва - - + + ansiversion версія ANSI - + CPU implementer Реалізатор процесора - + CPU architecture Архітектура процесора - + CPU variant Варіант процесора - + CPU part Частина процесора - + CPU revision Модифікація процесора - + One Одне - + Two Два - + Four Чотири - + Six Шістка - + Eight Вісім - + Ten Десятка - + Twelve Дванадцять - + Fourteen Чотирнадцять - + Sixteen Шістнадцять - + Eighteen Вісімнадцять - + Twenty Двадцять - + Twenty-two Двадцять два - + Twenty-four Двадцять чотири - + Twenty-six Двадцять шість - + Twenty-eight Двадцять вісім - + Thirty Тридцять - + Thirty-two Тридцять два - + Thirty-four Тридцять чотири - + Thirty-six Тридцять шість - + Thirty-eight Тридцять вісім - + Forty Сорок - + Forty-two Сорок два - + Forty-four Сорок чотири - + Forty-six Сорок шість - + Forty-eight Сорок вісім - + Fifty П’ятдесят - + Fifty-two П'ятдесят два - + Fifty-four П'ятдесят чотири - + Fifty-six П'ятдесят шість - + Fifty-eight П'ятдесят вісім - + Sixty Шістдесят - + Sixty-two Шістдесят два - + Sixty-four Шістдесят чотири - + Sixty-six Шістдесят шість - + Sixty-eight Шістдесят вісім - + Seventy Сімдесят - + Seventy-two Сімдесят два - + Seventy-four Сімдесят чотири - + Seventy-six Сімдесят шість - + Seventy-eight Сімдесят вісім - + Eighty Вісімдесят - + Eighty-two Вісімдесят два - + Eighty-four Вісімдесят чотири - + Eighty-six Вісімдесят шість - + Eighty-eight Вісімдесят вісім - + Ninety Дев'яносто - + Ninety-two Дев'яносто два - + Ninety-four Дев'яносто чотири - + Ninety-six Дев'яносто шість - + Ninety-eight Дев'яносто вісім - + One hundred Сто - + One hundred and Two Сто два - + One hundred and four Сто чотири - + One hundred and Six Сто шість - + One hundred and Eight Сто вісім - + One hundred and Ten Сто десять - + One hundred and Twelve Сто дванадцять - + One hundred and Fourteen Сто чотирнадцять - + One hundred and Sixteen Сто шістнадцять - + One hundred and Eighteen Сто вісімнадцять - + One hundred and Twenty Сто двадцять - + One hundred and Twenty-two Сто двадцять два - + One hundred and Twenty-four Сто двадцять чотири - + One hundred and Twenty-six Сто двадцять шість - + One hundred and Twenty-eight Сто двадцять вісім - + One hundred and Ninety-two Сто дев'яносто два - + Two hundred and fifty-six Двісті п'ятдесят шість @@ -2824,988 +3042,1084 @@ Версія GLSL - - - + + + Unknown Невідомий - + Uniq Uniq - + MSC MSC - - + + + Hardware Class Клас обладнання - - - - + + + + CPU Процесор - - - - + + + + No CPU found Процесорів не знайдено - - - - + + + + Motherboard Материнська плата - - - - + + + + No motherboard found Материнської плати не знайдено - - - - + + + + Memory Пам'ять - - - - + + + + No memory found Пам'яті не знайдено - - - - + + + + Storage Сховище даних - - - - + + + + No disk found Не знайдено дисків - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter Адаптер дисплея - - - - + + + + No GPU found Графічних процесорів не виявлено - - - - + + + + Monitor Монітор - - - - + + + + No monitor found Моніторів не знайдено - - - - - + + + + + Network Adapter Адаптер мережі - - - - + + + + No network adapter found Не знайдено адаптера мережі - - - - - + + + + + Sound Adapter Звуковий адаптер - - - - + + + + No audio device found Звукових пристроїв не знайдено - - - - - + + + + + Bluetooth Bluetooth - - - - + + + + No Bluetooth device found Не знайдено пристроїв Bluetooth - - - - + + + + Other PCI Devices Інші пристрої PCI - - - - + + + + No other PCI devices found Не знайдено інших пристроїв PCI - - - - + + + + Power Живлення - - - - + + + + No battery found Не знайдено акумулятора - - - - - + + + + + Keyboard Клавіатура - - - - + + + + No keyboard found Не знайдено клавіатури - - - - - + + + + + Mouse Миша - - - - + + + + No mouse found Не знайдено миші - - - - - - + + + + + + Printer Принтер - - - - + + + + No printer found Не знайдено принтерів - - - - + + + + Camera Камера - - - - + + + + No camera found Не знайдено камери - - - - + + + + CD-ROM CD-ROM - - - - + + + + No CD-ROM found Не знайдено CD-ROM - - - - - + + + + + Other Devices Інші пристрої - - - - + + + + No other devices found Інших пристроїв не знайдено - + Array Handle Обробник масивів - + Form Factor Формфактор - + Set Набір - + Bank Locator Локатор банків - + Type Detail Подробиці щодо типу - + Part Number Номер частини - + Rank Ранг - + Memory Technology Технологія пам'яті - + Memory Operating Mode Capability Можливості режиму керування пам'яттю - + Firmware Version Версія мікропрограми - + Module Manufacturer ID Ідентифікатор виробника модуля - + Module Product ID Ідентифікатор продукту модуля - + Memory Subsystem Controller Manufacturer ID Ідентифікатор виробника контролера підсистеми пам'яті - + Memory Subsystem Controller Product ID Ідентифікатор продукту контролера підсистеми пам'яті - + Non-Volatile Size Сталий розмір - + Volatile Size Мінливий розмір - + Cache Size Розмір кешу - + Logical Size Логічний розмір - - - - - + + + + + inch дюйм - + Date Дата - + ioport Порт ВВ - + network мережа - - + battery акумулятор - + native-path природний шлях - + power supply живлення - + updated оновлено - + has history має журнал - + has statistics має статистику - + rechargeable перезарядка - + state стан - + warning-level рівень попередження - + energy заряд - + energy-empty порожній - + energy-full повний заряд - + energy-full-design проектний повний заряд - + energy-rate частка заряду - + voltage напруга - + percentage частка - + technology технологія - + icon-name назва піктограми - + online задіяно - + daemon-version версія фонової служби - + on-battery на акумуляторі - + lid-is-closed кришку закрито - + lid-is-present кришка є - + critical-action критична дія - + copies копії - + job-cancel-after завдання скасовано після - + job-hold-until затримання завдання до - + job-priority пріоритетність завдання - + marker-change-time час зміни маркера - + number-up номер згори - + orientation-requested потрібна орієнтація - + print-color-mode режим колірності друку - + printer-is-accepting-jobs принтер приймає завдання - + printer-is-shared принтер є спільним - + printer-is-temporary принтер є тимчасовим - + printer-make-and-model виробник і модель принтера - + printer-state-change-time час зміни стану принтера - + printer-state-reasons причини стану принтера - + printer-type тип принтера - + printer-uri-supported підтримка адреси принтера - + sides боки - - - - + + + + + + SSD SSD - - + + HDD HDD - + + bus info дані щодо каналу - + logicalsectorsize розмір логічного сектора - + sectorsize розмір сектора - + guid guid - + Geometry (Logical) Геометрія (логічна) - - + + Device Manager Керування пристроями - + Device Manager is a handy tool for viewing hardware information and managing the devices. «Керування пристроями» — зручний інструмент для перегляду відомостей щодо обладнання та керування пристроями. - + New drivers available! Install or update them now. Випущено нові драйвери! Встановіть їх або оновіть їх зараз. - + + View + + + + Include subfolders Включити підтеки - + Search for drivers in this path Шукати драйвери у цій теці - - - - Device Name - Назва пристрою - - - - Version Available - Доступна версія - - - - - Size - Розмір - - - - - Status - Стан - - - - - Action - Дія - - - - New Version - Нова версія - - - - Current Version - Поточна версія - - - - Missing drivers (%1) - Не вистачає драйверів (%1) - - - - Outdated drivers (%1) - Застарілі драйвери (%1) - - - - Up-to-date drivers (%1) - Актуальні драйвери (%1) - - - + %1 driver updates available Доступні оновлення драйверів (%1) - - + + Time checked: %1 Минуло часу: %1 - + Downloading drivers for %1... Отримуємо драйвери до %1... - + Download speed: %1 Downloaded %2/%3 Швидкість отримання: %1 Отримано %2 з %3 - + Installing drivers for %1... Встановлюємо драйвери до %1... - + %1 drivers installed, %2 drivers failed Встановлено %1 драйверів, %2 драйверів не вдалося встановити - + %1 drivers installed Встановлено %1 драйверів - + Failed to install drivers Не вдалося встановити драйвери - + Network error. Reconnecting... Помилка мережі. Відновлюємо з'єднання… - + Download speed: %1 Швидкість отримання: %1 - + Your drivers are up to date Ваші драйвери є найновішими - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot виконайте перезавантаження - + Please %1 for the installed drivers to take effect Будь ласка, %1, щоб встановлені драйвери запрацювали - - + + View backup path + + + + + Backup All + + + + + submit feedback надішліть відгук - + Please try again or %1 to us Будь ласка, повторіть спробу або %1 - + Install All Встановити усе - - + + Scan Again Повторити пошук - + Cancel Скасувати - + Scanning hardware device drivers, please wait... Шукаємо драйвери пристроїв, будь ласка, зачекайте… - - + + Scanning %1 Шукаємо у %1 - + Scan failed Помилка під час пошуку - + Network unavailable Немає доступу до мережі - + Please check your network connection Будь ласка, перевірте, чи працює з'єднання з мережею - + Please scan again or %1 to us Будь ласка, повторіть пошук або %1 - + You are installing a driver, which will be interrupted if you exit. Ви встановлюєте драйвер. Процедуру буде перервано, якщо ви вийдете з програми. - + + + Are you sure you want to exit? Ви справді хочете вийти? - + + + Exit button Вийти - + + + Cancel button Скасувати - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter Адаптер Bluetooth - - + + Imaging device Пристрій сканування - + Display adapter Адаптер дисплея - + Sound card Звукова картка - + Network adapter Адаптер мережі - + Wireless network adapter Бездротова мережева карта - + Installation successful Успішне встановлення - + Installation failed Не вдалося встановити - + Downloading Отримання - + Installing Встановлення - + Not installed Не встановлено - + Out-of-date Застарілий - + Waiting Очікування - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error Невідома помилка - + Network error Помилка мережі - + Canceled Скасовано - + Failed to get driver files Не вдалося отримати файли драйверів - + Update Оновити - + + Backup + + + + + Restore + + + + Install Встановити @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable Вимкнути - + Refresh Оновити - + Export Експортувати - + Update drivers Оновити драйвери - + Uninstall drivers Вилучити драйвери - + Allow it to wake the computer Дозволити пробуджувати комп'ютер - - + + Enable Увімкнути @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh Оновити - + Export Експортувати - + Copy Копіювати - + Disable Вимкнути - + Unavailable Недоступне @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please Будь ласка, вкажіть локальну теку @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... Завантаження… - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_zh_CN.ts b/deepin-devicemanager/translations/deepin-devicemanager_zh_CN.ts index b281d49db..712acdba2 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_zh_CN.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_zh_CN.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + 确 定 + + + + Feedback + 反馈 + + + OK button 确 定 @@ -11,7 +23,7 @@ CmdButtonWidget - + More 更多 @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More 更多 - + Collapse 收起 @@ -51,14 +63,14 @@ DetailTreeView - - + + More 更多 - - + + Collapse 收起 @@ -66,3786 +78,3256 @@ DetailViewDelegate - - + + Disable 禁用 - + Unavailable 不可用 - DeviceAudio + DeviceBaseInfo - - Device Name - 设备名称 + One + - - - Name - 名称 + Two + - - - Vendor - 制造商 + Four + - - Model - 型号 + Six + - - Version - 版本 + Eight + - - Bus Info - 总线信息 + Nine + - - Chip - 芯片 + Ten + - - Capabilities - 功能 + Twelve + 十二 - - Clock - 时钟频率 + Fourteen + 十四 - - Width - 位宽 + Sixteen + 十六 - - Memory Address - 内存地址 + Eighteen + 十八 - - IRQ - 中断 + Twenty + 二十 - - Unavailable - 不可用 + Twenty-two + 二十二 - - Disable - 禁用 + Twenty-four + 二十四 - - - DeviceBaseInfo - - Name - 名称 + Twenty-six + 二十六 - - Vendor - 制造商 + Twenty-eight + 二十八 - - Model - 型号 + Thirty + 三十 - - - DeviceBios - - Vendor - 制造商 + Thirty-two + 三十二 - - Version - 版本 + Thirty-four + 三十四 - - Chipset - 芯片组 + Thirty-six + 三十六 - - - DeviceBluetooth - - Name - 名称 + Thirty-eight + 三十八 - - Vendor - 制造商 + Forty + 四十 - - Version - 版本 + Forty-two + 四十二 - - Model - 型号 + Forty-four + 四十四 - - Speed - 速度 + Forty-six + 四十六 - - Maximum Power - 最大功率 + Forty-eight + 四十八 - - Driver Version - 驱动版本 + Fifty + 五十 - - Driver - 驱动 + Fifty-two + 五十二 - - Capabilities - 功能 + Fifty-four + 五十四 - - Bus Info - 总线信息 + Fifty-six + 五十六 - - Logical Name - 逻辑名称 + Fifty-eight + 五十八 - - MAC Address - 物理地址 + Sixty + 六十 - - Unavailable - 不可用 + Sixty-two + 六十二 - - Disable - 禁用 + Sixty-four + 六十四 - - - DeviceCdrom - - Name - 名称 + Sixty-six + 六十六 - - Vendor - 制造商 + Sixty-eight + 六十八 - - Model - 型号 + Seventy + 七十 - - Version - 版本 + Seventy-two + 七十二 - - Bus Info - 总线信息 + Seventy-four + 七十四 - - Capabilities - 功能 + Seventy-six + 七十六 - - Driver - 驱动 + Seventy-eight + 七十八 - - Maximum Power - 最大功率 + Eighty + 八十 - - Speed - 速度 + Eighty-two + 八十二 - - Unavailable - 不可用 + Eighty-four + 八十四 - - Disable - 禁用 + Eighty-six + 八十六 - - - DeviceComputer - - Name - 名称 + Eighty-eight + 八十八 - - - DeviceCpu - - - Name - 名称 + Ninety + 九十 - - - Vendor - 制造商 + Ninety-two + 九十二 - - CPU ID - 处理器ID + Ninety-four + 九十四 - - Core ID - 核心ID + Ninety-six + 九十六 - - Threads - 线程数 + Ninety-eight + 九十八 - - Current Speed - 当前频率 + One hundred + 一百 - - BogoMIPS - BogoMIPS + One hundred and Two + 一百零二 - - - Architecture - 架构 + One hundred and four + 一百零四 - - CPU Family - 家族 + One hundred and Six + 一百零六 - - Model - 型号 + One hundred and Eight + 一百零八 - - - Processor - 逻辑处理器 + One hundred and Ten + 一百一十 - - Core(s) - + One hundred and Twelve + 一百一十二 - - Virtualization - 虚拟化 + One hundred and Fourteen + 一百一十四 - - Flags - 特性 - + One hundred and Sixteen + 一百一十六 + - - Extensions - 扩展指令集 + One hundred and Eighteen + 一百一十八 - - L3 Cache - L3缓存 + One hundred and Twenty + 一百二十 - - L2 Cache - L2缓存 + One hundred and Twenty-two + 一百二十二 - - L1i Cache - L1缓存(指令) + One hundred and Twenty-four + 一百二十四 - - L1d Cache - L1缓存(数据) + One hundred and Twenty-six + 一百二十六 - - Stepping - 步进 + One hundred and Twenty-eight + 一百二十八 - - Speed - 频率 + One hundred and Ninety-two + 一百九十二 - - Max Speed - 最大频率 + Two hundred and fifty-six + 二百五十六 - - - DeviceGpu - - Name - 名称 + + Device Name + 设备名称 - + + Vendor 制造商 - - Model - 型号 - - - - Version - 版本 - - - - Graphics Memory - 显存 + + Chip + 芯片 - + Physical ID 物理ID - - Memory Address - 内存地址 + + SysFS_Path + - - IO Port - I/O端口 + + Revision + - - Bus Info - 总线信息 + + KernelModeDriver + - - Maximum Resolution - 最大分辨率 + + IRQ + 中断 - - Minimum Resolution - 最小分辨率 + + Disable + 禁用 - - Current Resolution - 当前分辨率 + + Version + 版本 - - Driver - 驱动 + + Chipset + 芯片组 - - Description - 描述 + + + Module Alias + 模块别名 - - Clock - 时钟频率 + + Speed + 速度 - - DP - DP + + Maximum Power + 最大功率 - - eDP - eDP + + Driver + 驱动 - - HDMI - HDMI + + Driver Version + 驱动版本 - - VGA - VGA + + Capabilities + 功能 - - DVI - DVI + + logical name + 逻辑名称 - - DigitalOutput - DigitalOutput + + Logical Name + 逻辑名称 - - Display Output - 显示输出 + + MAC Address + 物理地址 - - Capabilities - 功能 + + CPU ID + 处理器ID - - IRQ - 中断 + + Core ID + 核心ID - - Width - 位宽 + + Threads + 线程数 - - Unavailable - 不可用 + + BogoMIPS + 运行速度(Bogomips) - - - DeviceImage - - Name - 名称 + + + Architecture + 架构 - - Vendor - 制造商 + + CPU Family + 家族 - - Version - 版本 + + + Processor + 逻辑处理器 - - Model - 型号 + + Core(s) + - - Bus Info - 总线信息 + + Virtualization + 虚拟化 - - Speed - 速度 + + Flags + 特性 - - Maximum Power - 最大功率 + + Extensions + 扩展指令集 - - Driver - 驱动 + + L3 Cache + L3缓存 - - Capabilities - 功能 + + L4 Cache + L4缓存 - - Serial Number - 序列号 + + L2 Cache + L2缓存 - - Unavailable - 不可用 + + L1i Cache + L1缓存(指令) - - Disable - 禁用 + + L1d Cache + L1缓存(数据) - - - DeviceInput - - Name - 名称 + + Stepping + 步进 - - Vendor - 制造商 + + Frequency + 频率 - - Model - 型号 + + + Max Frequency + 最大频率 - - Interface - 接口 + + Graphics Memory + 显存 - - Bus Info - 总线信息 + + Memory Address + 内存地址 - - Speed - 频率 + + IO Port + I/O端口 - - Maximum Current - 最大电流 + + Maximum Resolution + 最大分辨率 - - Driver - 驱动 + + Minimum Resolution + 最小分辨率 - - Capabilities - 功能 + + Description + 描述 - - Version - 版本 + + DP + DP - - Unavailable - 不可用 + + eDP + eDP - - Disable - 禁用 + + HDMI + HDMI - - - DeviceManager - - - - - - - - - - - Overview - 概况 + + temperature + - - - - CPU - 处理器 + + Type Detail + - - - CPU quantity - CPU数量 + + VGA + VGA - - - Motherboard - 主板 + + DVI + DVI - - - Memory - 内存 + + DigitalOutput + DigitalOutput - - - Display Adapter - 显示适配器 + + Display Output + 显示输出 - - - Sound Adapter - 音频适配器 + + Interface + 接口 - - - Storage - 存储设备 + + Bus Info + 总线信息 - - - Other PCI Devices - 其他PCI设备 + + bus info + 总线信息 - - - Battery - 电池 - - - - - Bluetooth - 蓝牙 - - - - - Network Adapter - 网络适配器 - - - - - Mouse - 鼠标 - - - - - Keyboard - 键盘 - - - - - Monitor - 显示设备 - - - - - CD-ROM - 光驱 - - - - - Printer - 打印机 - - - - - Camera - 图像设备 - - - - - Other Devices - Other Input Devices - 其他设备 - - - - - - Device - 设备 - - - - - - OS - 操作系统 - - - - DeviceMemory - - - - Name - 名称 - - - - - Vendor - 制造商 + + Maximum Current + 最大电流 - - - Size - 大小 + + Unavailable + 不可用 - - + + Type 类型 - - - Speed - 速度 - - - + Total Width 总位宽 - + Locator 插槽 - - Serial Number - 序列号 - - - + Configured Voltage 配置电压 - + Maximum Voltage 最高电压 - + Minimum Voltage 最低电压 - + Configured Speed - 配置频率 + 配置速度 - + Data Width 数据位宽 - - - DeviceMonitor - - - Name - 名称 - - - - Vendor - 制造商 - - - - Type - 类型 - - + Display Input 显示输入 - + Interface Type 接口类型 - + Support Resolution 支持分辨率 - + Current Resolution 当前分辨率 - + + Refresh Rate + 刷新率 + + + Display Ratio 显示比例 - + Primary Monitor 主显示器 - + + Size 大小 - - Serial Number - 序列号 - - - - Product Date - 生产日期 - - - - DeviceNetwork - - - Name - 名称 - - - - Vendor - 制造商 - - - - Type - 类型 - - - - Version - 版本 - - - - Bus Info - 总线信息 - - - - Capabilities - 功能 - - - - Driver - 驱动 - - - - Driver Version - 驱动版本 - - - + Maximum Rate 最大速率 - + Negotiation Rate 协商速率 - + Port 端口 - + Multicast 组播 - + Link 连接 - + Latency 延迟 - + IP IP - + Firmware 固件 - + Duplex 双工 - + Broadcast 广播 - + Auto Negotiation 自动协商 - - Clock - 时钟频率 + + Input/Output + 输入/输出 - - Width - 位宽 + + Memory + 内存 - - Memory Address - 内存地址 + + Model + 型号 - - IRQ - 中断 + + Status + 状态 - - MAC Address - 物理地址 + + Capacity + 最大容量 - - Logical Name - 逻辑名称 + + Voltage + 电压 - - Unavailable - 不可用 + + Slot + 插槽 - - Disable - 禁用 + + Design Capacity + 设计容量 - - - DeviceOtherPCI - - Name - 名称 + + Design Voltage + 设计电压 - - Vendor - 制造商 + + SBDS Version + SBDS版本 - - Model - 型号 + + SBDS Serial Number + SBDS序列号 - - Bus Info - 总线信息 + + SBDS Manufacture Date + SBDS制造日期 - - Version - 版本 + + SBDS Chemistry + SBDS材料 - - Input/Output - 输入/输出 + + Temperature + 温度 - - Memory - 内存 + + + Name + 名称 - - IRQ - 中断 + + Shared + 已共享 - - Latency - 延迟 + + URI + URI - - Clock - 时钟频率 + + + Media Type + 介质类型 - - Width - 位宽 + + Firmware Version + 固件版本 - - Driver - 驱动 + + Serial Number + 序列号 - - Capabilities - 功能 + + Rotation Rate + 转速 - - - DeviceOthers - - Name - 名称 + + SubVendor + 子制造商 - - Vendor - 制造商 + + SubDevice + 子设备 - - Model - 型号 + + Driver Status + 驱动状态 - - Version - 版本 + + Config Status + 配置状态 - - Bus Info - 总线信息 + + Phys + Phys - - Capabilities - 功能 + + Sysfs + Sysfs - - Driver - 驱动 + + Handlers + 处理程序 - - Maximum Power - 最大功率 - - - - Speed - 速度 + + PROP + PROP - - Serial Number - 序列号 + + EV + EV - - Unavailable - 不可用 + + KEY + KEY - - Disable - 禁用 + + Bus + 总线 - - - DevicePower - - Name - 名称 + + BIOS Information + BIOS信息 - - Model - 型号 + + Base Board Information + 主板信息 - - Vendor - 制造商 + + System Information + 系统信息 - - Serial Number - 序列号 + + Chassis Information + 机箱信息 - - Type - 类型 + + Physical Memory Array + 内存插槽信息 - - Status - 状态 + + Release Date + 发布日期 - - Capacity - 容量 + + Address + 地址 - - Voltage - 电压 + + Runtime Size + 运行内存大小 - - Slot - 插槽 + + ROM Size + ROM大小 - - Design Capacity - 设计容量 + + Characteristics + 特性 - - Design Voltage - 设计电压 + + BIOS Revision + BIOS修订版本 - - SBDS Version - SBDS版本 + + Firmware Revision + 固件修订版本 - - SBDS Serial Number - SBDS序列号 + + Product Name + 产品名称 - - SBDS Manufacture Date - SBDS制造日期 + + Asset Tag + 资产编号 - - SBDS Chemistry - SBDS材料 + + Features + 特征 - - Temperature - 温度 + + Location In Chassis + 机箱内位置 - - - DevicePrint - - Name - 名称 + + Chassis Handle + 机箱程序 - - Model - 型号 + + Contained Object Handles + 包含对象程序 - - Vendor - 制造商 + + UUID + UUID - - Serial Number - 序列号 + + Wake-up Type + 唤醒类型 - - Shared - 已共享 + + SKU Number + SKU号 - - URI - URI + + Family + 家族 - - Status - 状态 + + Lock + - - Interface Type - 接口类型 + + Boot-up State + 开机状态 - - Disable - 禁用 + + Power Supply State + 供电状态 - - - DeviceStorage - - - Model - 型号 + + Thermal State + 散热状态 - - - Vendor - 制造商 + + Security Status + 安全状态 - - - Media Type - 介质类型 + + OEM Information + OEM信息 - - - Size - 大小 + + Height + 高度 - - Version - 版本 + + Number Of Power Cords + 电源线数 - - Capabilities - 功能 + + Contained Elements + 包含组件数 - - Firmware Version - 固件版本 + + Location + 位置 - - Speed - 速度 + + Error Correction Type + 纠错类型 - - Description - 描述 + + Maximum Capacity + 最大容量 - - Serial Number - 序列号 + + Error Information Handle + 错误信息程序 - - Interface - 接口 + + Number Of Devices + 卡槽数量 - - Rotation Rate - 转速 + + BIOS ROMSIZE + BIOS ROM大小 - - Unavailable - 不可用 + + Release date + 发布日期 - - - GetDriverNameWidget - - - Select a driver for update - 选择需要更新的驱动程序 + + Board name + 主板名称 - - No drivers found in this folder - 所选文件夹未检测到驱动文件 + + SMBIOS Version + SMBIOS版本 - - - GetInfoPool - - Loading Audio Device Info... - 获取音频设备信息... + + Language Description Format + 语言描述格式 - - Loading BIOS Info... - 获取BIOS信息... + + Installable Languages + 可安装语言数 - - Loading CD-ROM Info... - 获取光驱信息... + + Currently Installed Language + 当前安装语言 - - Loading Operating System Info... - 获取操作系统信息... + + BD Address + 蓝牙设备地址 - - Loading CPU Info... - 获取处理器信息... + + ACL MTU + ACL MTU - - Loading Other Devices Info... - 获取其他设备信息... + + SCO MTU + SCO MTU - - Loading Power Info... - 获取电池信息... + + Packet type + 数据包类型 - - Loading Printer Info... - 获取打印机信息... + + Link policy + 连接策略 - - Loading Mouse Info... - 获取鼠标信息... + + Link mode + 连接模式 - - Loading Network Adapter Info... - 获取网络适配器信息... + + Class + 类别 - - - LogTreeView - - - - Disable - 禁用 + + Service Classes + 服务类别 - - Unavailable - 不可用 + + Device Class + 设备类别 - - - LogViewItemDelegate - - Disable - 禁用 + + HCI Version + HCI版本 - - Unavailable - 不可用 + + LMP Version + LMP版本 - - - MainWindow - - Device Info - export file's name - 设备信息 + + Subversion + 子版本 - - Display shortcuts - 显示快捷键 + + Device + 设备 - - Close - 关闭 + + Serial ID + 序列号 - - Help - 帮助 + + product + 产品 - - Copy - 复制 + + Powered + 供电 - - System - 系统 + + Discoverable + 可发现 - - Export - 导出 + + Pairable + 可配对 - - Refresh - 刷新 + + Modalias + 设置命令别名 - - Device Manager - 设备管理器 + + Discovering + 搜索中 - - Hardware - 硬件信息 + + Device File + 设备文件 - - Drivers - 驱动管理 + + Device Files + 设备文件 - - Monitor - 显示设备 + + Device Number + 设备编号 - - Overview - 概况 + + Application + 应用 - - Display Adapter - 显示适配器 + + ansiversion + ANSI版本 - - CPU - 处理器 + + CPU implementer + CPU程序 - - Network Adapter - 网络适配器 + + CPU architecture + CPU架构 - - Battery - 电池 + + CPU variant + CPU变量 - - - PageDetail - - More - 更多 + + CPU part + CPU部件 - - - PageDriverControl - - - Updating - 正在更新 + + CPU revision + CPU版本 - - - - Cancel - button - 取 消 + + GDDR capacity + GDDR容量 - - Next - 下一步 + + GPU vendor + GPU供应商 - - Warning - 注意 + + GPU type + GPU类型 - - The device will be unavailable after the driver uninstallation - 将从系统中卸载此驱动程序,卸载后该设备不可用 + + EGL version + EGL版本 - - Uninstall - button - 卸 载 + + EGL client APIs + EGL接口 - - Uninstalling - 正在卸载 + + GL version + GL版本 - - Update successful - 驱动更新成功 + + GLSL version + GLSL版本 - - Uninstallation successful - 驱动卸载成功 + Unknown + 未知 - - Update failed - 驱动更新失败 + + Uniq + Uniq - - Uninstallation failed - 驱动卸载失败 + + MSC + MSC - - OK - button - 确 定 + + Hardware Class + 硬件类别 - - Next - button - 下一步 + + Array Handle + 数组程序 - - The selected folder does not exist, please select again - 所选文件夹不存在,请重新选择 + + Form Factor + 尺寸型号 - - Update - button - 更 新 + + Set + 设置 - - Previous - button - 上一步 + + Bank Locator + 内存通道 - - Broken package - 包文件损坏 + + Part Number + 部件号码 - - Unmatched package architecture - 包文件与系统架构不匹配 + + Rank + 位列 - - - The selected file does not exist, please select again - 所选文件不存在,请重新选择 + + Memory Technology + 内存技术 - - It is not a driver - 该文件不是驱动文件 + + Memory Operating Mode Capability + 内存操作模式 - - Unable to install - no digital signature - 无法安装,安装包无数字签名 + + Module Manufacturer ID + 组件制造商 - - Unknown error - 未知错误 + + Module Product ID + 组件产品ID - - The driver module was not found - 未发现该驱动模块 + + Memory Subsystem Controller Manufacturer ID + 内存子系统控制器制造商 - - Invalid module format - 模块格式无效 + + Memory Subsystem Controller Product ID + 内存子系统控制器产品ID - - The driver module has dependencies - 驱动模块被依赖 + + Non-Volatile Size + 不易丢失大小 - - - PageListView - - Refresh - 刷新 + + Volatile Size + 易丢失大小 - - Export - 导出 + + Cache Size + 缓存大小 - - Overview - 概况 + + Logical Size + 逻辑大小 - - - PageMultiInfo - - Failed to enable the device - 启用失败 + + inch + 英寸 - - Failed to disable the device - 禁用失败 + + Date + 日期 - - Failed to disable it: unable to get the device SN - 无法获取设备序列号,禁用失败 + + ioport + I/O端口 - - Update Drivers - 更新驱动 + + network + 网络 - - Uninstall Drivers - 卸载驱动 + + Width + - - - PageOverview - - Refresh - 刷新 + + battery + 电池 - - Export - 导出 + + native-path + 安装路径 - - Copy - 复制 + + power supply + 供电 - - Overview - 概况 + + updated + 更新时间 - - - PageSingleInfo - - Refresh - 刷新 + + has history + 历史记录 - - Export - 导出 + + has statistics + 用电统计 - - Copy - 复制 - - - - - Enable - 启用 + + rechargeable + 可再充电 - - Update drivers - 更新驱动 + + state + 状态 - - Uninstall drivers - 卸载驱动 + + voltage + - - Allow it to wake the computer - 允许唤起电脑 + + warning-level + 警告等级 - - Disable - 禁用 + + energy + 容量 - - - Failed to disable it: unable to get the device SN - 无法获取设备序列号,禁用失败 + + energy-empty + 最低容量 - - Failed to disable the device - 禁用失败 + + energy-full + 完全充满容量 - - Failed to enable the device - 启用失败 + + energy-full-design + 设计容量 - - Update Drivers - 更新驱动 + + energy-rate + 能量密度 - - Uninstall Drivers - 卸载驱动 + + percentage + 电量 - - - QObject - - - SubVendor - 子制造商 + + status + - - - SubDevice - 子设备 + + technology + 电池技术 - - Driver - 驱动 + + icon-name + 图标 - - Driver Status - 驱动状态 + + online + 在线 - - Driver Activation Cmd - 驱动激活命令 + + daemon-version + Daemon版本 - - - - - Config Status - 配置状态 + + on-battery + 使用电池 - - - - - - - physical id - 物理ID + + lid-is-closed + 笔记本合盖 - - - latency - 延迟 + + lid-is-present + 打开笔记本盖子 - - Phys - Phys + + critical-action + 电量极低时执行 - - Sysfs - Sysfs + + Alias + - - Handlers - 处理程序 + + Clock + - - - PROP - PROP + + copies + 复印数量 - - - EV - EV + + description + - - - KEY - KEY + + Driver Activation Cmd + - - Model - 型号 + + Driver Modules + 驱动模块 - - Vendor - 制造商 + + job-cancel-after + 此时取消打印任务 - - Version - 版本 + + job-hold-until + 保留打印任务直至 - - - Bus - 总线 + + job-priority + 任务优先级 - - - BIOS Information - BIOS信息 + + latency + - - - Base Board Information - 主板信息 + + marker-change-time + 标记修改次数 - - - System Information - 系统信息 + + number-up + 编号 - - - Chassis Information - 机箱信息 + + orientation-requested + 打印方向 - - - Physical Memory Array - 内存插槽信息 + + physical id + - - Release Date - 发布日期 + + print-color-mode + 颜色模式 - - Address - 地址 + + printer-is-accepting-jobs + 当前可打印 - - Runtime Size - 运行内存大小 + + printer-is-shared + 打印机已共享 - - ROM Size - ROM大小 + + printer-is-temporary + 临时打印机 - - Characteristics - 特性 + + printer-make-and-model + 制造商和型号 - - BIOS Revision - BIOS修订版本 + + printer-state-change-time + 打印机状态修改时间 - - Firmware Revision - 固件修订版本 + + printer-state-reasons + 打印机状态信息 - - - Product Name - 产品名称 + + printer-type + 打印机类型 - - - - Serial Number - 序列号 + + printer-uri-supported + 支持的URI - - - - Asset Tag - 资产编号 + + Product Date + 产品日子 - - - Features - 特征 + + sides + 打印面数 - - Location In Chassis - 机箱内位置 + SSD + 固态 - - Chassis Handle - 机箱程序 + HDD + 机械 - - - Type - 类型 + + logicalsectorsize + 逻辑分区大小 - - Contained Object Handles - 包含对象程序 + + sectorsize + 扇区大小 - - - UUID - UUID + + guid + 全局唯一标识符 - - Wake-up Type - 唤醒类型 + + Geometry (Logical) + 几何数据(逻辑) + + + DeviceManager - - - SKU Number - SKU号 + + + + + + + + + + + Overview + 概况 - - - Family - 家族 + + + + CPU + 处理器 - - Lock - + + + CPU quantity + CPU数量 - - Boot-up State - 开机状态 + + + Motherboard + 主板 - - Power Supply State - 供电状态 + + + Memory + 内存 - - Thermal State - 散热状态 + + + Display Adapter + 显示适配器 - - Security Status - 安全状态 + + + Sound Adapter + 音频适配器 - - OEM Information - OEM信息 + + + Storage + 存储设备 - - Height - 高度 + + + Other PCI Devices + 其他PCI设备 - - Number Of Power Cords - 电源线数 + + + Battery + 电池 - - Contained Elements - 包含组件数 + + + Bluetooth + 蓝牙 - - Location - 位置 + + + Network Adapter + 网络适配器 - - Error Correction Type - 纠错类型 + + + Mouse + 鼠标与指针设备 - - Maximum Capacity - 最大容量 - - - - - Error Information Handle - 错误信息程序 - - - - Number Of Devices - 卡槽数量 - - - - BIOS ROMSIZE - BIOS ROM大小 - - - - Release date - 发布日期 - - - - Board name - 主板名称 - - - - SMBIOS Version - SMBIOS版本 - - - - Language Description Format - 语言描述格式 - - - - Installable Languages - 可安装语言数 - - - - Currently Installed Language - 当前安装语言 - - - - BD Address - 蓝牙设备地址 - - - - ACL MTU - ACL MTU - - - - SCO MTU - SCO MTU - - - - Packet type - 数据包类型 - - - - Link policy - 连接策略 - - - - Link mode - 连接模式 - - - - - Class - 类别 - - - - Service Classes - 服务类别 - - - - Device Class - 设备类别 - - - - HCI Version - HCI版本 - - - - LMP Version - LMP版本 - - - - Subversion - 子版本 - - - - - Device - 设备 - - - - - Serial ID - 序列号 - - - - product - 产品 - - - - description - 描述 - - - - Powered - 供电 - - - - Discoverable - 可发现 - - - - Pairable - 可配对 - - - - Modalias - 设置命令别名 - - - - Discovering - 搜索中 - - - - - Driver Modules - 驱动模块 - - - - - - Device File - 设备文件 - - - - Device Files - 设备文件 - - - - - Device Number - 设备编号 - - - - Module Alias - 模块别名 - - - - Application - 应用 - - - - status - 状态 - - - - - logical name - 逻辑地址 - - - - - ansiversion - ANSI版本 - - - - CPU implementer - CPU程序 - - - - CPU architecture - CPU架构 - - - - CPU variant - CPU变量 - - - - CPU part - CPU部件 - - - - CPU revision - CPU版本 - - - - One - - - - - Two - - - - - Four - - - - - Six - - - - - Eight - - - - - Ten - - - - - Twelve - 十二 - - - - Fourteen - 十四 - - - - Sixteen - 十六 - - - - Eighteen - 十八 - - - - Twenty - 二十 - - - - Twenty-two - 二十二 - - - - Twenty-four - 二十四 - - - - Twenty-six - 二十六 - - - - Twenty-eight - 二十八 - - - - Thirty - 三十 - - - - Thirty-two - 三十二 - - - - Thirty-four - 三十四 - - - - Thirty-six - 三十六 - - - - Thirty-eight - 三十八 - - - - Forty - 四十 - - - - Forty-two - 四十二 - - - - Forty-four - 四十四 - - - - Forty-six - 四十六 - - - - Forty-eight - 四十八 - - - - Fifty - 五十 - - - - Fifty-two - 五十二 - - - - Fifty-four - 五十四 + + + Keyboard + 键盘 - - Fifty-six - 五十六 + + + Monitor + 显示设备 - - Fifty-eight - 五十八 + + + CD-ROM + 光驱 - - Sixty - 六十 + + + Printer + 打印机 - - Sixty-two - 六十二 + + + Camera + 图像设备 - - Sixty-four - 六十四 + + + Other Devices + Other Input Devices + 其他设备 - - Sixty-six - 六十六 + + + + Device + 设备 - - Sixty-eight - 六十八 + + + + OS + 操作系统 + + + DeviceMonitor - - Seventy - 七十 + + + + + inch + 英寸 + + + GetDriverNameWidget - - Seventy-two - 七十二 + + + Select a driver for update + 选择需要更新的驱动程序 - - Seventy-four - 七十四 + + No drivers found in this folder + 所选文件夹未检测到驱动文件 + + + GetInfoPool - - Seventy-six - 七十六 + + Loading Audio Device Info... + 获取音频设备信息... - - Seventy-eight - 七十八 + + Loading BIOS Info... + 获取BIOS信息... - - Eighty - 八十 + + Loading CD-ROM Info... + 获取光驱信息... - - Eighty-two - 八十二 + + Loading Operating System Info... + 获取操作系统信息... - - Eighty-four - 八十四 + + Loading CPU Info... + 获取处理器信息... - - Eighty-six - 八十六 + + Loading Other Devices Info... + 获取其他设备信息... - - Eighty-eight - 八十八 + + Loading Power Info... + 获取电池信息... - - Ninety - 九十 + + Loading Printer Info... + 获取打印机信息... - - Ninety-two - 九十二 + + Loading Mouse Info... + 获取鼠标信息... - - Ninety-four - 九十四 + + Loading Network Adapter Info... + 获取网络适配器信息... + + + LogTreeView - - Ninety-six - 九十六 + + + + Disable + 禁用 - - Ninety-eight - 九十八 + + Unavailable + 不可用 + + + LogViewItemDelegate - - One hundred - 一百 + + Disable + 禁用 - - One hundred and Two - 一百零二 + + Unavailable + 不可用 + + + MainWindow - - One hundred and four - 一百零四 + + Device Info + export file's name + 设备信息 - - One hundred and Six - 一百零六 + + Display shortcuts + 显示快捷键 - - One hundred and Eight - 一百零八 + + Close + 关闭 - - One hundred and Ten - 一百一十 + + Help + 帮助 - - One hundred and Twelve - 一百一十二 + + Copy + 复制 - - One hundred and Fourteen - 一百一十四 + + System + 系统 - - One hundred and Sixteen - 一百一十六 + + Export + 导出 - - One hundred and Eighteen - 一百一十八 + + Refresh + 刷新 - - One hundred and Twenty - 一百二十 + + Device Manager + 设备管理器 - - One hundred and Twenty-two - 一百二十二 + + Hardware + 硬件信息 - - One hundred and Twenty-four - 一百二十四 + + Drivers + 驱动管理 - - One hundred and Twenty-six - 一百二十六 + + Monitor + 显示设备 - - One hundred and Twenty-eight - 一百二十八 + + Overview + 概况 - - One hundred and Ninety-two - 一百九十二 + + Display Adapter + 显示适配器 - - Two hundred and fifty-six - 二百五十六 + + CPU + 处理器 - - GDDR capacity - GDDR容量 + + Network Adapter + 网络适配器 - - GPU vendor - GPU供应商 + + Battery + 电池 + + + PageDetail - - GPU type - GPU类型 + + More + 更多 + + + PageDriverBackupInfo - - EGL version - EGL版本 + + + Name + 名称 - - EGL client APIs - EGL接口 + + + Current Version + 当前版本 - - GL version - GL版本 + + + Driver Platform Version + 驱动平台版本 - - GLSL version - GLSL版本 + + Status + 状态 - - - - Unknown - 未知 + + Action + 操作 - - Uniq - Uniq + + Backupable Drivers + 可备份驱动 - - MSC - MSC + + Backed up Drivers + 已备份驱动 + + + PageDriverControl - - - Hardware Class - 硬件类别 + + + Updating + 正在更新 - - - - - CPU - 处理器 + + + + Cancel + button + 取 消 - - - - - No CPU found - 未发现处理器 + + Next + 下一步 - - - - - Motherboard - 主板 + + Warning + 注意 - - - - - No motherboard found - 未发现主板 + + The device will be unavailable after the driver uninstallation + 将从系统中卸载此驱动程序,卸载后该设备不可用 - - - - - Memory - 内存 + + Uninstall + button + 卸 载 - - - - - No memory found - 未发现内存 + + Uninstalling + 正在卸载 - - - - - Storage - 存储设备 + + Update successful + 驱动更新成功 - - - - - No disk found - 未发现磁盘 + + Uninstallation successful + 驱动卸载成功 - - - - - - Display Adapter - 显示适配器 + + Update failed + 驱动更新失败 - - - - - No GPU found - 未发现GPU + + Uninstallation failed + 驱动卸载失败 - - - - - Monitor - 显示设备 + + OK + button + 确 定 - - - - - No monitor found - 未发现显示设备 + + Next + button + 下一步 - - - - - - Network Adapter - 网络适配器 + + The selected folder does not exist, please select again + 所选文件夹不存在,请重新选择 - - - - - No network adapter found - 未发现网络适配器 + + Update + button + 更 新 - - - - - - Sound Adapter - 音频适配器 + + Previous + button + 上一步 - - - - - No audio device found - 未发现音频设备 + + Broken package + 包文件损坏 - - - - - - Bluetooth - 蓝牙 + + Unmatched package architecture + 包文件与系统架构不匹配 - - - - - No Bluetooth device found - 未发现蓝牙设备 + + + The selected file does not exist, please select again + 所选文件不存在,请重新选择 - - - - - Other PCI Devices - 其他PCI设备 + + It is not a driver + 该文件不是驱动文件 - - - - - No other PCI devices found - 未发现其他PCI设备 + + Unable to install - no digital signature + 无法安装,安装包无数字签名 - - - - - Power - 电池 + + Unknown error + 未知错误 - - - - - No battery found - 未发现电池 + + The driver module was not found + 未发现该驱动模块 - - - - - - Keyboard - 键盘 + + Invalid module format + 模块格式无效 - - - - - No keyboard found - 未发现键盘 + + The driver module has dependencies + 驱动模块被依赖 + + + PageDriverInstallInfo - - - - - - Mouse - 鼠标 + + + + Device Name + 设备名称 - - - - - No mouse found - 未发现鼠标 + + Version Available + 可安装版本 - - - - - - - Printer - 打印机 + + + Size + 大小 - - - - - No printer found - 未发现打印机 + + + Status + 状态 - - - - - Camera - 图像设备 + + + Action + 操作 - - - - - No camera found - 未发现图像设备 + + New Version + 可更新版本 - - - - - CD-ROM - 光驱 + + Current Version + 当前版本 - - - - - No CD-ROM found - 未发现光驱 + + Missing drivers (%1) + 可安装驱动 (%1) - - - - - - Other Devices - 其他设备 + + Outdated drivers (%1) + 可更新驱动 (%1) - - - - - No other devices found - 未发现其他设备 + + Up-to-date drivers (%1) + 无需更新驱动 (%1) + + + PageDriverManager - - Array Handle - 数组程序 + + + + Driver Install + 驱动安装 - - Form Factor - 尺寸型号 + + + + + Driver Backup + 驱动备份 - - Set - 设置 + + + Driver Restore + 驱动还原 - - Bank Locator - 内存通道 + + OK + 确 定 - - Type Detail - 类型详情 + + Feedback + 反馈 + + + PageDriverRestoreInfo - - Part Number - 部件号码 + + You do not have any drivers to restore, please backup first + 您没有驱动可以还原,请先备份 - - Rank - 位列 + + Go to Backup Driver + 前往备份驱动 - - Memory Technology - 内存技术 + + Name + 名称 - - Memory Operating Mode Capability - 内存操作模式 + + Current Version + 当前版本 - - Firmware Version - 固件版本 + + Backup Version + 备份版本 - - Module Manufacturer ID - 组件制造商 + + Action + 操作 - - Module Product ID - 组件产品ID + + Restorable Drivers + 可还原驱动 + + + PageListView - - Memory Subsystem Controller Manufacturer ID - 内存子系统控制器制造商 + + Refresh + 刷新 - - Memory Subsystem Controller Product ID - 内存子系统控制器产品ID + + Export + 导出 - - Non-Volatile Size - 不易丢失大小 + + Overview + 概况 - - Volatile Size - 易丢失大小 + + Driver Install + 驱动安装 - - Cache Size - 缓存大小 + + Driver Backup + 驱动备份 - - Logical Size - 逻辑大小 + + Driver Restore + 驱动还原 + + + PageMultiInfo - - - - - - inch - 英寸 + + + + Storage + 存储设备 - - Date - 日期 + + + + Memory + 内存 - - ioport - I/O端口 + + Failed to enable the device + 启用失败 - - network - 网络 + + Failed to disable the device + 禁用失败 - - - battery - 电池 + + Failed to disable it: unable to get the device SN + 无法获取设备序列号,禁用失败 - - native-path - 安装路径 + + Update Drivers + 更新驱动 - - power supply - 供电 + + Uninstall Drivers + 卸载驱动 + + + PageOverview - - updated - 更新时间 + + Refresh + 刷新 - - has history - 历史记录 + + Export + 导出 - - has statistics - 用电统计 + + Copy + 复制 - - rechargeable - 可再充电 + + Overview + 概况 + + + PageSingleInfo - - state - 状态 + + Refresh + 刷新 - - warning-level - 警告等级 + + Export + 导出 - - energy - 容量 + + Copy + 复制 - - energy-empty - 最低容量 + + + Enable + 启用 - - energy-full - 完全充满容量 + + Update drivers + 更新驱动 - - energy-full-design - 设计容量 + + Uninstall drivers + 卸载驱动 - - energy-rate - 能量密度 + + Allow it to wake the computer + 允许唤起电脑 - - - voltage - 电压 + + + Disable + 禁用 - - percentage - 电量 + + + Failed to disable it: unable to get the device SN + 无法获取设备序列号,禁用失败 - - technology - 电池技术 + + Failed to disable the device + 禁用失败 - - icon-name - 图标 + + Failed to enable the device + 启用失败 - - online - 在线 + + Update Drivers + 更新驱动 - - daemon-version - Daemon版本 + + Uninstall Drivers + 卸载驱动 + + + QObject - - on-battery - 使用电池 + + + + + CPU + 处理器 - - lid-is-closed - 笔记本合盖 + + + + + No CPU found + 未发现处理器 - - lid-is-present - 打开笔记本盖子 + + + + + Motherboard + 主板 - - critical-action - 电量极低时执行 + + + + + No motherboard found + 未发现主板 - - copies - 复印数量 + + + + + No memory found + 未发现内存 - - job-cancel-after - 此时取消打印任务 + + + + + Memory + 内存 - - job-hold-until - 保留打印任务直至 + + + + + Storage + 存储设备 - - job-priority - 任务优先级 + + + + + No disk found + 未发现磁盘 - - marker-change-time - 标记修改次数 + + Driver restore failed! + 驱动还原失败! - - number-up - 编号 + + + Please try again or give us feedback + 请重试,或反馈给我们 - - orientation-requested - 打印方向 + + Driver backup failed! + 驱动备份失败! - - print-color-mode - 颜色模式 + + + + + + Display Adapter + 显示适配器 - - printer-is-accepting-jobs - 当前可打印 + + + + + No GPU found + 未发现GPU - - printer-is-shared - 打印机已共享 + + + + + Monitor + 显示设备 - - printer-is-temporary - 临时打印机 + + + + + No monitor found + 未发现显示设备 - - printer-make-and-model - 制造商和型号 + + + + + + Network Adapter + 网络适配器 - - printer-state-change-time - 打印机状态修改时间 + + + + + No network adapter found + 未发现网络适配器 - - printer-state-reasons - 打印机状态信息 + + + + + + Sound Adapter + 音频适配器 - - printer-type - 打印机类型 + + + + + No audio device found + 未发现音频设备 - - printer-uri-supported - 支持的URI + + + + + + Bluetooth + 蓝牙 - - sides - 打印面数 + + + + + No Bluetooth device found + 未发现蓝牙设备 - - - - - SSD - 固态 + + + + + Other PCI Devices + 其他PCI设备 - - - HDD - 机械 + + + + + No other PCI devices found + 未发现其他PCI设备 - - bus info - 总线信息 + + + + + Power + 电池 - - logicalsectorsize - 逻辑分区大小 + + + + + No battery found + 未发现电池 - - sectorsize - 扇区大小 + + + + + + Keyboard + 键盘 - - guid - 全局唯一标识符 + + + + + No keyboard found + 未发现键盘 - - Geometry (Logical) - 几何数据(逻辑) + + + + + + Mouse + 鼠标 - - - Device Manager - 设备管理器 + + + + + No mouse found + 未发现鼠标 - - Device Manager is a handy tool for viewing hardware information and managing the devices. - 设备管理器是查看、管理硬件设备的工具软件。 + + + + + + Printer + 打印机 - - New drivers available! Install or update them now. - 您有驱动可进行安装/更新 + + + + + No printer found + 未发现打印机 - - Include subfolders - 包括子文件夹 + + + + + Camera + 图像设备 - - Search for drivers in this path - 选择驱动所在位置 + + + + + No camera found + 未发现图像设备 - - - - Device Name - 设备名称 + + + + + CD-ROM + 光驱 - - Version Available - 可安装版本 + + + + + No CD-ROM found + 未发现光驱 - - - Size - 大小 + + + + + + + Other Devices + 其他设备 - - - Status - 状态 + + + + + No other devices found + 未发现其他设备 - - - Action - 操作 + + + Device Manager + 设备管理器 - - New Version - 可更新版本 + + Device Manager is a handy tool for viewing hardware information and managing the devices. + 设备管理器是查看、管理硬件设备的工具软件。 - - Current Version - 当前版本 + + New drivers available! Install or update them now. + 您有驱动可进行安装/更新 - - Missing drivers (%1) - 可安装驱动 (%1) + + View + 查看 - - Outdated drivers (%1) - 可更新驱动 (%1) + + Include subfolders + 包括子文件夹 - - Up-to-date drivers (%1) - 无需更新驱动 (%1) + + Search for drivers in this path + 选择驱动所在位置 - + %1 driver updates available 发现%1个驱动可安装更新 - - + + Time checked: %1 检测时间: %1 - + Downloading drivers for %1... 正在下载%1驱动… - + Download speed: %1 Downloaded %2/%3 下载速度:%1 已完成 %2/%3 - + Installing drivers for %1... 正在安装%1驱动… - + %1 drivers installed, %2 drivers failed 驱动安装成功%1个,失败%2个 - + %1 drivers installed 共成功安装%1个驱动 - + Failed to install drivers 驱动安装失败 - + Network error. Reconnecting... 网络异常,重试中 - + Download speed: %1 下载速度:%1 - + Your drivers are up to date 驱动已是最新 - + + All drivers have been backed up + 驱动已全部备份 + + + + + A total of %1 drivers, of which %2 have been backed up + 总计%1个驱动,其中%2个已备份 + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + 您有%1个驱动可以备份,建议立即备份 + + + + You have %1 drivers that can be backed up + 您有%1个驱动可以备份 + + + + Backing up the %1 driver, a total of %2 drivers + 正在备份第%1个驱动,共%2个 + + + + Backing up: %1 + 正在备份:%1 + + + + %1 drivers backed up, %2 drivers failed + 驱动备份成功%1个,失败%2个 + + + + Failed to backup drivers + 备份失败 + + + + %1 drivers backed up + %1个驱动已备份 + + + + You have %1 drivers that can be restored + 您有%1个驱动可以还原 + + + + Please select a driver to restore + 请选择驱动还原 + + + + Driver is restoring... + 驱动还原中… + + + + Restoring: %1 + 正在还原:%1 + + + reboot 重启电脑 - + Please %1 for the installed drivers to take effect 驱动已安装完成,请稍后%1生效 - - + + View backup path + 查看备份路径 + + + + Backup All + 一键备份 + + + + submit feedback 反馈 - + Please try again or %1 to us 驱动未安装成功,请重试或%1给我们 - + Install All 一键安装 - - + + Scan Again 重新检测 - + Cancel 取 消 - + Scanning hardware device drivers, please wait... 正在进行硬件驱动扫描,请耐心等待... - - + + Scanning %1 正在扫描%1 - + Scan failed 检测失败 - + Network unavailable 无网络 - + Please check your network connection 请检查网络连接 - + Please scan again or %1 to us 请重新检测或%1给我们 - + You are installing a driver, which will be interrupted if you exit. 当前正在安装驱动,退出应用后任务将会中断 - + + + Are you sure you want to exit? 确认是否退出应用? - + + + Exit button 退 出 - + + + Cancel button 取 消 - + + You are backing up drivers, which will be interrupted if you exit. + 当前正在备份驱动,退出应用后任务将会中断 + + + + You are restoring drivers, which will be interrupted if you exit. + 当前正在还原驱动,退出应用后任务将会中断 + + + Bluetooth adapter 蓝牙适配器 - - + + Imaging device 图像设备 - + Display adapter 显卡 - + Sound card 声卡 - + Network adapter 网卡 - + Wireless network adapter 无线网卡 - + Installation successful 安装成功 - + Installation failed 安装失败 - + Downloading 下载中 - + Installing 安装中 - + Not installed 驱动未安装 - + Out-of-date 驱动可更新 - + Waiting 等待中 - + + Not backed up + 驱动未备份 + + + + Backing up + 正在备份 + + + + Backup failed + 备份失败 + + + + Backup successful + 备份成功 + + + + Restoring + 还原中 + + + Unknown error 未知错误 - + Network error 网络异常 - + Canceled 已取消 - + Failed to get driver files 驱动文件获取异常 - + Update 更新 - + + Backup + 备份 + + + + Restore + 还原 + + + Install 安装 + + + + inch + 英寸 + TableWidget - - + + Disable 禁用 - + Refresh 刷新 - + Export 导出 - + Update drivers 更新驱动 - + Uninstall drivers 卸载驱动 - + Allow it to wake the computer 允许唤起电脑 - - + + Enable 启用 @@ -3853,27 +3335,27 @@ TextBrowser - + Refresh 刷新 - + Export 导出 - + Copy 复制 - + Disable 禁用 - + Unavailable 不可用 @@ -3881,7 +3363,7 @@ UrlChooserEdit - + Select a local folder please 请选择本地文件夹 @@ -3889,9 +3371,9 @@ WaitingWidget - + Loading... 正在载入... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_zh_HK.ts b/deepin-devicemanager/translations/deepin-devicemanager_zh_HK.ts index 4e334c56f..315c0cd3d 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_zh_HK.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_zh_HK.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + 確 定 + + + + Feedback + + + + OK button 確 定 @@ -11,7 +23,7 @@ CmdButtonWidget - + More 更多 @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More 更多 - + Collapse 收起 @@ -51,14 +63,14 @@ DetailTreeView - - + + More 更多 - - + + Collapse 收起 @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable 禁用 - + Unavailable 不可用 @@ -80,74 +92,81 @@ DeviceAudio - + Device Name 設備名稱 - - + + Name 名稱 - - + + Vendor 製造商 - - Model - 型號 + + Chip + 晶片 - - Version - 版本 + + Capabilities + 功能 - - Bus Info - 總線訊息 + + + Module Alias + 模塊別名 - - Chip - 晶片 + + + Physical ID + 物理ID - - Capabilities - 功能 + + SysFS_Path + - - Clock - 時鐘頻率 + + Description + 描述 + + + + Revision + - - Width - 位寬 + + KernelModeDriver + - + Memory Address 內存地址 - + IRQ 中斷 - + Unavailable 不可用 - + Disable 禁用 @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name 名稱 - + Vendor 製造商 - + Model 型號 @@ -173,17 +192,17 @@ DeviceBios - + Vendor 製造商 - + Version 版本 - + Chipset 晶片組 @@ -191,72 +210,82 @@ DeviceBluetooth - + Name 名稱 - + Vendor 製造商 - + Version 版本 - + Model 型號 - + + Module Alias + 模塊別名 + + + + Physical ID + 物理ID + + + Speed 速度 - + Maximum Power 最大功率 - + Driver Version 驅動版本 - + Driver 驅動 - + Capabilities 功能 - + Bus Info 總線訊息 - + Logical Name 邏輯名稱 - + MAC Address 物理地址 - + Unavailable 不可用 - + Disable 禁用 @@ -264,57 +293,67 @@ DeviceCdrom - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Version 版本 - + Bus Info 總線訊息 - + Capabilities 功能 - + Driver 驅動 - + Maximum Power 最大功率 - + Speed 速度 - + + Module Alias + 模塊別名 + + + + Physical ID + 物理ID + + + Unavailable 不可用 - + Disable 禁用 @@ -322,7 +361,7 @@ DeviceComputer - + Name 名稱 @@ -330,116 +369,113 @@ DeviceCpu - - + + Name 名稱 - - + + Vendor 製造商 - + CPU ID 處理器ID - + Core ID 核心ID - + Threads 線程數 - - Current Speed - 當前頻率 - - - + BogoMIPS BogoMIPS - - + + Architecture 架構 - + CPU Family 家族 - + Model 型號 - - + + Processor 邏輯處理器 - + Core(s) - + Virtualization 虛擬化 - + Flags 特性 - + Extensions 擴展指令集 - + L3 Cache L3緩存 - + L2 Cache L2緩存 - + L1i Cache L1緩存(指令) - + L1d Cache L1緩存(數據) - + Stepping 步進 - + Speed 頻率 - + + + Max Speed 最大頻率 @@ -447,132 +483,127 @@ DeviceGpu - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Version 版本 - + Graphics Memory 顯存 - + + Module Alias + 模塊別名 + + + Physical ID 物理ID - + Memory Address 內存地址 - + IO Port I/O端口 - + Bus Info 總線訊息 - + Maximum Resolution 最大解像度 - + Minimum Resolution 最小解像度 - + Current Resolution 當前解像度 - + Driver 驅動 - + Description 描述 - - Clock - 時鐘頻率 - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output 顯示輸出 - + Capabilities 功能 - + IRQ 中斷 - - Width - 位寬 - - - + Unavailable 不可用 @@ -580,62 +611,72 @@ DeviceImage - + Name 名稱 - + Vendor 製造商 - + Version 版本 - + Model 型號 - + Bus Info 總線訊息 - + + Module Alias + 模塊別名 + + + + Physical ID + 物理ID + + + Speed 速度 - + Maximum Power 最大功率 - + Driver 驅動 - + Capabilities 功能 - + Serial Number 序列號 - + Unavailable 不可用 - + Disable 禁用 @@ -643,62 +684,72 @@ DeviceInput - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Interface 接口 - + Bus Info 總線訊息 - + + Module Alias + 模塊別名 + + + + Physical ID + 物理ID + + + Speed 頻率 - + Maximum Current 最大電流 - + Driver 驅動 - + Capabilities 功能 - + Version 版本 - + Unavailable 不可用 - + Disable 禁用 @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview 概況 - - - + + + CPU 處理器 - - + + CPU quantity CPU數量 - - + + Motherboard 主板 - - + + Memory 內存 - - + + Display Adapter 顯示適配器 - - + + Sound Adapter 音頻適配器 - - + + Storage 存儲設備 - - + + Other PCI Devices 其他PCI設備 - - + + Battery 電池 - - + + Bluetooth 藍牙 - - + + Network Adapter 網絡適配器 - - + + Mouse 鼠標 - - + + Keyboard 鍵盤 - - + + Monitor 顯示設備 - - + + CD-ROM 光驅 - - + + Printer 打印機 - - + + Camera 圖像設備 - - + + Other Devices Other Input Devices 其他設備 - - - + + + Device 設備 - - - + + + OS 操作系統 @@ -847,72 +898,72 @@ DeviceMemory - - + + Name 名稱 - - + + Vendor 製造商 - - + + Size 大小 - - + + Type 類型 - - + + Speed 速度 - + Total Width 總位寬 - + Locator 插槽 - + Serial Number 序列號 - + Configured Voltage 配置電壓 - + Maximum Voltage 最高電壓 - + Minimum Voltage 最低電壓 - + Configured Speed 配置頻率 - + Data Width 數據位寬 @@ -920,200 +971,198 @@ DeviceMonitor - + Name 名稱 - + Vendor 製造商 - + Type 類型 - + Display Input 顯示輸入 - + Interface Type 接口類型 - + Support Resolution 支持解像度 - + Current Resolution 當前解像度 - + Display Ratio 顯示比例 - + Primary Monitor 主顯示器 - + Size 大小 - + Serial Number 序列號 - - - Product Date - 生產日期 - DeviceNetwork - + + Name 名稱 - + + Vendor 製造商 - + + Type 類型 - + Version 版本 - + Bus Info 總線訊息 - + Capabilities 功能 - + Driver 驅動 - + Driver Version 驅動版本 - + + Module Alias + 模塊別名 + + + + Physical ID + 物理ID + + + Maximum Rate 最大速率 - + Negotiation Rate 協商速率 - + Port 端口 - + Multicast 組播 - + Link 連接 - + Latency 延遲 - + IP IP - + Firmware 固件 - + Duplex 雙工 - + Broadcast 廣播 - + Auto Negotiation 自動協商 - - Clock - 時鐘頻率 - - - - Width - 位寬 - - - + Memory Address 內存地址 - + IRQ 中斷 - + MAC Address 物理地址 - + Logical Name 邏輯名稱 - + Unavailable 不可用 - + Disable 禁用 @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Bus Info 總線訊息 - + Version 版本 - + Input/Output 輸入/輸出 - + Memory 內存 - + IRQ 中斷 - + Latency 延遲 - - Clock - 時鐘頻率 - - - - Width - 位寬 - - - + Driver 驅動 - + Capabilities 功能 @@ -1189,62 +1228,62 @@ DeviceOthers - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Version 版本 - + Bus Info 總線訊息 - + Capabilities 功能 - + Driver 驅動 - + Maximum Power 最大功率 - + Speed 速度 - + Serial Number 序列號 - + Unavailable 不可用 - + Disable 禁用 @@ -1252,82 +1291,82 @@ DevicePower - + Name 名稱 - + Model 型號 - + Vendor 製造商 - + Serial Number 序列號 - + Type 類型 - + Status 狀態 - + Capacity 容量 - + Voltage 電壓 - + Slot 插槽 - + Design Capacity 設計容量 - + Design Voltage 設計電壓 - + SBDS Version SBDS版本 - + SBDS Serial Number SBDS序列號 - + SBDS Manufacture Date SBDS製造日期 - + SBDS Chemistry SBDS材料 - + Temperature 溫度 @@ -1335,47 +1374,47 @@ DevicePrint - + Name 名稱 - + Model 型號 - + Vendor 製造商 - + Serial Number 序列號 - + Shared 已共享 - + URI URI - + Status 狀態 - + Interface Type 接口類型 - + Disable 禁用 @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - 型號 - - - - + + Vendor 製造商 - - + + Media Type 介質類型 - - + + + Size 大小 - + + + Name + 名稱 + + + Version 版本 - + Capabilities 功能 - + + + Module Alias + 模塊別名 + + + + + Physical ID + 物理ID + + + Firmware Version 固件版本 - + Speed 速度 - + Description 描述 - + Serial Number 序列號 - + Interface 接口 - + Rotation Rate 轉速 - + Unavailable 不可用 @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update 選擇需要更新的驅動程序 - + No drivers found in this folder 所選文件夾未檢測到驅動文件 @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... 獲取音頻設備訊息... - + Loading BIOS Info... 獲取BIOS訊息... - + Loading CD-ROM Info... 獲取光驅訊息... - + Loading Operating System Info... 獲取操作系統訊息... - + Loading CPU Info... 獲取處理器訊息... - + Loading Other Devices Info... 獲取其他設備訊息... - + Loading Power Info... 獲取電池訊息... - + Loading Printer Info... 獲取打印機訊息... - + Loading Mouse Info... 獲取鼠標訊息... - + Loading Network Adapter Info... 獲取網絡適配器訊息... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable 禁用 - + Unavailable 不可用 @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable 禁用 - + Unavailable 不可用 @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name 設備訊息 - + Display shortcuts 顯示快捷鍵 - + Close 關閉 - + Help 幫助 - + Copy 複製 - + System 系統 - + Export 導出 - + Refresh 刷新 - + Device Manager 設備管理器 - + Hardware 硬件訊息 - + Drivers 驅動管理 - + Monitor 顯示設備 - + Overview 概況 - + Display Adapter 顯示適配器 - + CPU 處理器 - + Network Adapter 網絡適配器 - + Battery 電池 @@ -1639,191 +1691,377 @@ PageDetail - + More 更多 + + PageDriverBackupInfo + + + + Name + 名稱 + + + + + Current Version + 當前版本 + + + + + Driver Platform Version + + + + + Status + 狀態 + + + + Action + 操作 + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating 正在更新 - - - + + + Cancel button 取 消 - + Next 下一步 - + Warning 注意 - + The device will be unavailable after the driver uninstallation 將從系統中卸載此驅動程序,卸載後該設備不可用 - + Uninstall button 卸 載 - + Uninstalling 正在卸載 - + Update successful 驅動更新成功 - + Uninstallation successful 驅動卸載成功 - + Update failed 驅動更新失敗 - + Uninstallation failed 驅動卸載失敗 - + OK button 確 定 - + Next button 下一步 - + The selected folder does not exist, please select again 所選文件夾不存在,請重新選擇 - + Update button 更 新 - + Previous button 上一步 - + Broken package 包文件損壞 - + Unmatched package architecture 包文件與系統架構不匹配 - - + + The selected file does not exist, please select again 所選文件不存在,請重新選擇 - + It is not a driver 該文件不是驅動文件 - + Unable to install - no digital signature 無法安裝,安裝包無數字簽名 - + Unknown error 未知錯誤 - + The driver module was not found 未發現該驅動模塊 - + Invalid module format 模塊格式無效 - + The driver module has dependencies 驅動模塊被依賴 - PageListView + PageDriverInstallInfo - - Refresh - 刷新 + + + + Device Name + 設備名稱 - + + Version Available + 可安裝版本 + + + + + Size + 大小 + + + + + Status + 狀態 + + + + + Action + 操作 + + + + New Version + 可更新版本 + + + + Current Version + 當前版本 + + + + Missing drivers (%1) + 可安裝驅動 (%1) + + + + Outdated drivers (%1) + 可更新驅動 (%1) + + + + Up-to-date drivers (%1) + 無需更新驅動 (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + 確 定 + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + 名稱 + + + + Current Version + 當前版本 + + + + Backup Version + + + + + Action + 操作 + + + + Restorable Drivers + + + + + PageListView + + + Refresh + 刷新 + + + Export 導出 - + Overview 概況 + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device 啟用失敗 - + Failed to disable the device 禁用失敗 - + Failed to disable it: unable to get the device SN 無法獲取設備序列號,禁用失敗 - + Update Drivers 更新驅動 - + Uninstall Drivers 卸載驅動 @@ -1831,22 +2069,22 @@ PageOverview - + Refresh 刷新 - + Export 導出 - + Copy 複製 - + Overview 概況 @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh 刷新 - + Export 導出 - + Copy 複製 - - + + Enable 啟用 - + Update drivers 更新驅動 - + Uninstall drivers 卸載驅動 - + Allow it to wake the computer 允許喚起電腦 - + Disable 禁用 - - + + Failed to disable it: unable to get the device SN 無法獲取設備序列號,禁用失敗 - + Failed to disable the device 禁用失敗 - + Failed to enable the device 啟用失敗 - + Update Drivers 更新驅動 - + Uninstall Drivers 卸載驅動 @@ -1924,867 +2162,847 @@ QObject - + SubVendor 子製造商 - + SubDevice 子設備 - + Driver 驅動 - + Driver Status 驅動狀態 - + Driver Activation Cmd 驅動啟動命令 - - + - + + Config Status 配置狀態 - - - - - - - physical id - 物理ID - - - + latency 延遲 - + Phys Phys - + Sysfs Sysfs - + Handlers 進程 - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - 型號 - - - - Vendor - 製造商 - - - + Version 版本 - - + + + Bus 總線 - - + + BIOS Information BIOS訊息 - - + + Base Board Information 主板訊息 - - + + System Information 系統訊息 - - + + Chassis Information 機箱訊息 - - + + Physical Memory Array 物理內存數組 - + Release Date 發佈日期 - + Address 地址 - + Runtime Size 運行內存大小 - + ROM Size ROM大小 - + Characteristics 特性 - + BIOS Revision BIOS修訂版本 - + Firmware Revision 固件修訂版本 - - + + Product Name 產品名稱 - - - + + + Serial Number 序列號 - - - + + + Asset Tag 資產編號 - - + + Features 特徵 - + Location In Chassis 機箱內位置 - + Chassis Handle 機箱程序 - - + + Type 類型 - + Contained Object Handles 包含對象程序 - - + + UUID UUID - + Wake-up Type 喚醒類型 - - + + SKU Number SKU號 - + Family 家族 - + Lock - + Boot-up State 開機狀態 - + Power Supply State 供電狀態 - + Thermal State 散熱狀態 - + Security Status 安全狀態 - + OEM Information OEM訊息 - + Height 高度 - + Number Of Power Cords 電源線數 - + Contained Elements 包含組件數 - + Location 位置 - + Error Correction Type 糾錯類型 - + Maximum Capacity 最大容量 - - + + Error Information Handle 錯誤訊息程序 - + Number Of Devices 卡槽數量 - + BIOS ROMSIZE BIOS ROM大小 - + Release date 發佈日期 - + Board name 主板名稱 - + SMBIOS Version SMBIOS版本 - + Language Description Format 語言描述格式 - + Installable Languages 可安裝語言數 - + Currently Installed Language 當前安裝語言 - + BD Address 藍牙設備地址 - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type 數據包類型 - + Link policy 連接策略 - + Link mode 連接模式 - - + + Class 類別 - + Service Classes 服務類別 - + Device Class 設備類別 - + HCI Version HCI版本 - + LMP Version LMP版本 - + Subversion 子版本 - + Device 設備 - - + + Serial ID 序列號 - + product 產品 - + description 描述 - + Powered 供電 - + Discoverable 可發現 - + Pairable 可配對 - + Modalias 設置命令別名 - + Discovering 搜索中 - + Driver Modules 驅動模塊 - - - + + + + + Device File 設備文件 - + Device Files 設備文件 - - + + + Device Number 設備編號 - - Module Alias - 模塊別名 - - - + Application 應用 - + status 狀態 - - + + + logical name 邏輯地址 - - + + ansiversion ANSI版本 - + CPU implementer CPU程序 - + CPU architecture CPU架構 - + CPU variant CPU變量 - + CPU part CPU部件 - + CPU revision CPU版本 - + One - + Two - + Four - + Six - + Eight - + Ten - + Twelve 十二 - + Fourteen 十四 - + Sixteen 十六 - + Eighteen 十八 - + Twenty 二十 - + Twenty-two 二十二 - + Twenty-four 二十四 - + Twenty-six 二十六 - + Twenty-eight 二十八 - + Thirty 三十 - + Thirty-two 三十二 - + Thirty-four 三十四 - + Thirty-six 三十六 - + Thirty-eight 三十八 - + Forty 四十 - + Forty-two 四十二 - + Forty-four 四十四 - + Forty-six 四十六 - + Forty-eight 四十八 - + Fifty 五十 - + Fifty-two 五十二 - + Fifty-four 五十四 - + Fifty-six 五十六 - + Fifty-eight 五十八 - + Sixty 六十 - + Sixty-two 六十二 - + Sixty-four 六十四 - + Sixty-six 六十六 - + Sixty-eight 六十八 - + Seventy 七十 - + Seventy-two 七十二 - + Seventy-four 七十四 - + Seventy-six 七十六 - + Seventy-eight 七十八 - + Eighty 八十 - + Eighty-two 八十二 - + Eighty-four 八十四 - + Eighty-six 八十六 - + Eighty-eight 八十八 - + Ninety 九十 - + Ninety-two 九十二 - + Ninety-four 九十四 - + Ninety-six 九十六 - + Ninety-eight 九十八 - + One hundred 100 - + One hundred and Two 102 - + One hundred and four 104 - + One hundred and Six 106 - + One hundred and Eight 108 - + One hundred and Ten 110 - + One hundred and Twelve 112 - + One hundred and Fourteen 114 - + One hundred and Sixteen 116 - + One hundred and Eighteen 118 - + One hundred and Twenty 120 - + One hundred and Twenty-two 122 - + One hundred and Twenty-four 124 - + One hundred and Twenty-six 126 - + One hundred and Twenty-eight 128 - + One hundred and Ninety-two 一百九十二 - + Two hundred and fifty-six 256 @@ -2824,988 +3042,1084 @@ GLSL版本 - - - + + + Unknown 未知 - + Uniq Uniq - + MSC MSC - - + + + Hardware Class 硬件類別 - - - - + + + + CPU 處理器 - - - - + + + + No CPU found 未發現處理器 - - - - + + + + Motherboard 主板 - - - - + + + + No motherboard found 未發現主板 - - - - + + + + Memory 內存 - - - - + + + + No memory found 未發現內存 - - - - + + + + Storage 存儲設備 - - - - + + + + No disk found 未發現磁盤 - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter 顯示適配器 - - - - + + + + No GPU found 未發現GPU - - - - + + + + Monitor 顯示設備 - - - - + + + + No monitor found 未發現顯示設備 - - - - - + + + + + Network Adapter 網絡適配器 - - - - + + + + No network adapter found 未發現網絡適配器 - - - - - + + + + + Sound Adapter 音頻適配器 - - - - + + + + No audio device found 未發現音頻設備 - - - - - + + + + + Bluetooth 藍牙 - - - - + + + + No Bluetooth device found 未發現藍牙設備 - - - - + + + + Other PCI Devices 其他PCI設備 - - - - + + + + No other PCI devices found 未發現其他PCI設備 - - - - + + + + Power 電池 - - - - + + + + No battery found 未發現電池 - - - - - + + + + + Keyboard 鍵盤 - - - - + + + + No keyboard found 未發現鍵盤 - - - - - + + + + + Mouse 鼠標 - - - - + + + + No mouse found 未發現鼠標 - - - - - - + + + + + + Printer 打印機 - - - - + + + + No printer found 未發現打印機 - - - - + + + + Camera 圖像設備 - - - - + + + + No camera found 未發現圖像設備 - - - - + + + + CD-ROM 光驅 - - - - + + + + No CD-ROM found 未發現光驅 - - - - - + + + + + Other Devices 其他設備 - - - - + + + + No other devices found 未發現其他設備 - + Array Handle 數組程序 - + Form Factor 尺寸型號 - + Set 設置 - + Bank Locator 內存通道 - + Type Detail 類型詳情 - + Part Number 部件號碼 - + Rank 位列 - + Memory Technology 內存技術 - + Memory Operating Mode Capability 內存操作模式 - + Firmware Version 固件版本 - + Module Manufacturer ID 組件製造商 - + Module Product ID 組件產品ID - + Memory Subsystem Controller Manufacturer ID 內存子系統控制器製造商 - + Memory Subsystem Controller Product ID 內存子系統控制器產品ID - + Non-Volatile Size 不易丢失大小 - + Volatile Size 易丢失大小 - + Cache Size 緩存大小 - + Logical Size 邏輯大小 - - - - - + + + + + inch 英吋 - + Date 日期 - + ioport I/O端口 - + network 網絡 - - + battery 電池 - + native-path 安裝路徑 - + power supply 供電 - + updated 更新時間 - + has history 歷史記錄 - + has statistics 用電統計 - + rechargeable 可再充電 - + state 狀態 - + warning-level 警告等級 - + energy 容量 - + energy-empty 最低容量 - + energy-full 完全充滿容量 - + energy-full-design 設計容量 - + energy-rate 能量密度 - + voltage 電壓 - + percentage 電量 - + technology 電池技術 - + icon-name 圖標 - + online 在線 - + daemon-version Daemon版本 - + on-battery 使用電池 - + lid-is-closed 筆記本合蓋 - + lid-is-present 打開筆記本蓋子 - + critical-action 電量極低時執行 - + copies 複印數量 - + job-cancel-after 此時取消打印任務 - + job-hold-until 保留打印任務直至 - + job-priority 任務優先級 - + marker-change-time 標記修改次數 - + number-up 編號 - + orientation-requested 打印方向 - + print-color-mode 顏色模式 - + printer-is-accepting-jobs 當前可打印 - + printer-is-shared 打印機已共享 - + printer-is-temporary 臨時打印機 - + printer-make-and-model 製造商和型號 - + printer-state-change-time 打印機狀態修改時間 - + printer-state-reasons 打印機狀態訊息 - + printer-type 打印機類型 - + printer-uri-supported 支持的URI - + sides 打印面數 - - - - + + + + + + SSD 固態 - - + + HDD 機械 - + + bus info 總線訊息 - + logicalsectorsize 邏輯分區大小 - + sectorsize 扇區大小 - + guid 全局唯一標識符 - + Geometry (Logical) 幾何數據(邏輯) - - + + Device Manager 設備管理器 - + Device Manager is a handy tool for viewing hardware information and managing the devices. 設備管理器是查看、管理硬件設備的工具軟件。 - + New drivers available! Install or update them now. 您有驅動可進行安裝/更新 - + + View + + + + Include subfolders 包括子文件夾 - + Search for drivers in this path 選擇驅動所在位置 - - - - Device Name - 設備名稱 - - - - Version Available - 可安裝版本 - - - - - Size - 大小 - - - - - Status - 狀態 - - - - - Action - 操作 - - - - New Version - 可更新版本 - - - - Current Version - 當前版本 - - - - Missing drivers (%1) - 可安裝驅動 (%1) - - - - Outdated drivers (%1) - 可更新驅動 (%1) - - - - Up-to-date drivers (%1) - 無需更新驅動 (%1) - - - + %1 driver updates available 發現%1個驅動可安裝更新 - - + + Time checked: %1 檢測時間: %1 - + Downloading drivers for %1... 正在下載%1驅動… - + Download speed: %1 Downloaded %2/%3 下載速度:%1 已完成 %2/%3 - + Installing drivers for %1... 正在安裝%1驅動… - + %1 drivers installed, %2 drivers failed 驅動安裝成功%1個,失敗%2個 - + %1 drivers installed 共成功安裝%1個驅動 - + Failed to install drivers 驅動安裝失敗 - + Network error. Reconnecting... 網絡異常,重試中 - + Download speed: %1 下載速度:%1 - + Your drivers are up to date 驅動已是最新 - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot 重啟電腦 - + Please %1 for the installed drivers to take effect 驅動已安裝完成,請稍後%1生效 - - + + View backup path + + + + + Backup All + + + + + submit feedback 反饋 - + Please try again or %1 to us 驅動未安裝成功,請重試或%1給我們 - + Install All 一鍵安裝 - - + + Scan Again 重新檢測 - + Cancel 取 消 - + Scanning hardware device drivers, please wait... 正在進行硬件驅動掃描,請耐心等待... - - + + Scanning %1 正在掃描%1 - + Scan failed 檢測失敗 - + Network unavailable 無網絡 - + Please check your network connection 請檢查網絡連接 - + Please scan again or %1 to us 請重新檢測或%1給我們 - + You are installing a driver, which will be interrupted if you exit. 當前正在安裝驅動,退出應用後任務將會中斷 - + + + Are you sure you want to exit? 確認是否退出應用? - + + + Exit button 退 出 - + + + Cancel button 取 消 - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter 藍牙適配器 - - + + Imaging device 圖像設備 - + Display adapter 顯卡 - + Sound card 聲卡 - + Network adapter 網卡 - + Wireless network adapter 無線網卡 - + Installation successful 安裝成功 - + Installation failed 安裝失敗 - + Downloading 下載中 - + Installing 安裝中 - + Not installed 驅動未安裝 - + Out-of-date 驅動可更新 - + Waiting 等待中 - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error 未知錯誤 - + Network error 網絡異常 - + Canceled 已取消 - + Failed to get driver files 驅動文件獲取異常 - + Update 更新 - + + Backup + + + + + Restore + + + + Install 安装 @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable 禁用 - + Refresh 刷新 - + Export 導出 - + Update drivers 更新驅動 - + Uninstall drivers 卸載驅動 - + Allow it to wake the computer 允許喚起電腦 - - + + Enable 啟用 @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh 刷新 - + Export 導出 - + Copy 複製 - + Disable 禁用 - + Unavailable 不可用 @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please 請選擇本地文件夾 @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... 正在載入... - \ No newline at end of file + diff --git a/deepin-devicemanager/translations/deepin-devicemanager_zh_TW.ts b/deepin-devicemanager/translations/deepin-devicemanager_zh_TW.ts index c1020ce48..66313c941 100644 --- a/deepin-devicemanager/translations/deepin-devicemanager_zh_TW.ts +++ b/deepin-devicemanager/translations/deepin-devicemanager_zh_TW.ts @@ -1,8 +1,20 @@ - + + + BtnLabel - + + OK + 確 定 + + + + Feedback + + + + OK button 確 定 @@ -11,7 +23,7 @@ CmdButtonWidget - + More 更多 @@ -19,17 +31,17 @@ CommonTools - + EC_NOTIFY_NETWORK EC_NOTIFY_NETWORK - + EC_REINSTALL EC_REINSTALL - + EC_6 EC_6 @@ -37,13 +49,13 @@ DetailButton - - + + More 更多 - + Collapse 收起 @@ -51,14 +63,14 @@ DetailTreeView - - + + More 更多 - - + + Collapse 收起 @@ -66,13 +78,13 @@ DetailViewDelegate - - + + Disable 禁用 - + Unavailable 不可用 @@ -80,74 +92,81 @@ DeviceAudio - + Device Name 裝置名稱 - - + + Name 名稱 - - + + Vendor 製造商 - - Model - 型號 + + Chip + 晶片 - - Version - 版本 + + Capabilities + 功能 - - Bus Info - 匯流排訊息 + + + Module Alias + 模組別名 - - Chip - 晶片 + + + Physical ID + 物理ID - - Capabilities - 功能 + + SysFS_Path + - - Clock - 時鐘頻率 + + Description + 描述 + + + + Revision + - - Width - 位寬 + + KernelModeDriver + - + Memory Address 記憶體地址 - + IRQ 中斷 - + Unavailable 不可用 - + Disable 禁用 @@ -155,17 +174,17 @@ DeviceBaseInfo - + Name 名稱 - + Vendor 製造商 - + Model 型號 @@ -173,17 +192,17 @@ DeviceBios - + Vendor 製造商 - + Version 版本 - + Chipset 晶片組 @@ -191,72 +210,82 @@ DeviceBluetooth - + Name 名稱 - + Vendor 製造商 - + Version 版本 - + Model 型號 - + + Module Alias + 模組別名 + + + + Physical ID + 物理ID + + + Speed 速度 - + Maximum Power 最大功率 - + Driver Version 驅動版本 - + Driver 驅動 - + Capabilities 功能 - + Bus Info 匯流排訊息 - + Logical Name 邏輯名稱 - + MAC Address 物理地址 - + Unavailable 不可用 - + Disable 禁用 @@ -264,57 +293,67 @@ DeviceCdrom - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Version 版本 - + Bus Info 匯流排訊息 - + Capabilities 功能 - + Driver 驅動 - + Maximum Power 最大功率 - + Speed 速度 - + + Module Alias + 模組別名 + + + + Physical ID + 物理ID + + + Unavailable 不可用 - + Disable 禁用 @@ -322,7 +361,7 @@ DeviceComputer - + Name 名稱 @@ -330,116 +369,113 @@ DeviceCpu - - + + Name 名稱 - - + + Vendor 製造商 - + CPU ID 處理器ID - + Core ID 核心ID - + Threads 執行緒數 - - Current Speed - 當前頻率 - - - + BogoMIPS BogoMIPS - - + + Architecture 架構 - + CPU Family 家族 - + Model 型號 - - + + Processor 邏輯處理器 - + Core(s) - + Virtualization 虛擬化 - + Flags 特性 - + Extensions 擴展指令集 - + L3 Cache L3快取 - + L2 Cache L2快取 - + L1i Cache L1快取(指令) - + L1d Cache L1快取(數據) - + Stepping 步進 - + Speed 頻率 - + + + Max Speed 最大頻率 @@ -447,132 +483,127 @@ DeviceGpu - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Version 版本 - + Graphics Memory 視訊記憶體 - + + Module Alias + 模組別名 + + + Physical ID 物理ID - + Memory Address 記憶體地址 - + IO Port I/O埠 - + Bus Info 匯流排訊息 - + Maximum Resolution 最大解析度 - + Minimum Resolution 最小解析度 - + Current Resolution 目前解析度 - + Driver 驅動 - + Description 描述 - - Clock - 時鐘頻率 - - - + DP DP - + eDP eDP - + HDMI HDMI - + VGA VGA - + DVI DVI - + DigitalOutput DigitalOutput - + Display Output 顯示輸出 - + Capabilities 功能 - + IRQ 中斷 - - Width - 位寬 - - - + Unavailable 不可用 @@ -580,62 +611,72 @@ DeviceImage - + Name 名稱 - + Vendor 製造商 - + Version 版本 - + Model 型號 - + Bus Info 匯流排訊息 - + + Module Alias + 模組別名 + + + + Physical ID + 物理ID + + + Speed 速度 - + Maximum Power 最大功率 - + Driver 驅動 - + Capabilities 功能 - + Serial Number 序號 - + Unavailable 不可用 - + Disable 禁用 @@ -643,62 +684,72 @@ DeviceInput - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Interface 介面 - + Bus Info 匯流排訊息 - + + Module Alias + 模組別名 + + + + Physical ID + 物理ID + + + Speed 頻率 - + Maximum Current 最大電流 - + Driver 驅動 - + Capabilities 功能 - + Version 版本 - + Unavailable 不可用 - + Disable 禁用 @@ -706,140 +757,140 @@ DeviceManager - - - - - - - - - - + + + + + + + + + + Overview 概況 - - - + + + CPU 處理器 - - + + CPU quantity CPU數量 - - + + Motherboard 主機板 - - + + Memory 記憶體 - - + + Display Adapter 顯示適配器 - - + + Sound Adapter 音訊適配器 - - + + Storage 儲存裝置 - - + + Other PCI Devices 其他PCI裝置 - - + + Battery 電池 - - + + Bluetooth 藍牙 - - + + Network Adapter 網路適配器 - - + + Mouse 滑鼠 - - + + Keyboard 鍵盤 - - + + Monitor 顯示裝置 - - + + CD-ROM 光碟機 - - + + Printer 印表機 - - + + Camera 圖像裝置 - - + + Other Devices Other Input Devices 其他裝置 - - - + + + Device 裝置 - - - + + + OS 操作系統 @@ -847,72 +898,72 @@ DeviceMemory - - + + Name 名稱 - - + + Vendor 製造商 - - + + Size 容量 - - + + Type 類型 - - + + Speed 速度 - + Total Width 總位寬 - + Locator 插槽 - + Serial Number 序號 - + Configured Voltage 配置電壓 - + Maximum Voltage 最高電壓 - + Minimum Voltage 最低電壓 - + Configured Speed 配置頻率 - + Data Width 數據位寬 @@ -920,200 +971,198 @@ DeviceMonitor - + Name 名稱 - + Vendor 製造商 - + Type 類型 - + Display Input 顯示輸入 - + Interface Type 介面類型 - + Support Resolution 支持解析度 - + Current Resolution 目前解析度 - + Display Ratio 顯示比例 - + Primary Monitor 主顯示器 - + Size 容量 - + Serial Number 序號 - - - Product Date - 生產日期 - DeviceNetwork - + + Name 名稱 - + + Vendor 製造商 - + + Type 類型 - + Version 版本 - + Bus Info 匯流排訊息 - + Capabilities 功能 - + Driver 驅動 - + Driver Version 驅動版本 - + + Module Alias + 模組別名 + + + + Physical ID + 物理ID + + + Maximum Rate 最大速率 - + Negotiation Rate 協商速率 - + Port - + Multicast 組播 - + Link 連結 - + Latency 延遲 - + IP IP - + Firmware 韌體 - + Duplex 雙工 - + Broadcast 廣播 - + Auto Negotiation 自動協商 - - Clock - 時鐘頻率 - - - - Width - 位寬 - - - + Memory Address 記憶體地址 - + IRQ 中斷 - + MAC Address 物理地址 - + Logical Name 邏輯名稱 - + Unavailable 不可用 - + Disable 禁用 @@ -1121,67 +1170,57 @@ DeviceOtherPCI - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Bus Info 匯流排訊息 - + Version 版本 - + Input/Output 輸入/輸出 - + Memory 記憶體 - + IRQ 中斷 - + Latency 延遲 - - Clock - 時鐘頻率 - - - - Width - 位寬 - - - + Driver 驅動 - + Capabilities 功能 @@ -1189,62 +1228,62 @@ DeviceOthers - + Name 名稱 - + Vendor 製造商 - + Model 型號 - + Version 版本 - + Bus Info 匯流排訊息 - + Capabilities 功能 - + Driver 驅動 - + Maximum Power 最大功率 - + Speed 速度 - + Serial Number 序號 - + Unavailable 不可用 - + Disable 禁用 @@ -1252,82 +1291,82 @@ DevicePower - + Name 名稱 - + Model 型號 - + Vendor 製造商 - + Serial Number 序號 - + Type 類型 - + Status 狀態 - + Capacity 容量 - + Voltage 電壓 - + Slot 插槽 - + Design Capacity 設計容量 - + Design Voltage 設計電壓 - + SBDS Version SBDS版本 - + SBDS Serial Number SBDS序號 - + SBDS Manufacture Date SBDS製造日期 - + SBDS Chemistry SBDS材料 - + Temperature 溫度 @@ -1335,47 +1374,47 @@ DevicePrint - + Name 名稱 - + Model 型號 - + Vendor 製造商 - + Serial Number 序號 - + Shared 已共享 - + URI URI - + Status 狀態 - + Interface Type 介面類型 - + Disable 禁用 @@ -1383,71 +1422,84 @@ DeviceStorage - - - Model - 型號 - - - - + + Vendor 製造商 - - + + Media Type 介質類型 - - + + + Size 容量 - + + + Name + 名稱 + + + Version 版本 - + Capabilities 功能 - + + + Module Alias + 模組別名 + + + + + Physical ID + 物理ID + + + Firmware Version 韌體版本 - + Speed 速度 - + Description 描述 - + Serial Number 序號 - + Interface 介面 - + Rotation Rate 轉速 - + Unavailable 不可用 @@ -1455,13 +1507,13 @@ GetDriverNameWidget - - + + Select a driver for update 選擇需要更新的驅動程式 - + No drivers found in this folder 所選資料夾未檢測到驅動文件 @@ -1469,52 +1521,52 @@ GetInfoPool - + Loading Audio Device Info... 獲取音訊裝置訊息... - + Loading BIOS Info... 獲取BIOS訊息... - + Loading CD-ROM Info... 獲取光碟機訊息... - + Loading Operating System Info... 獲取操作系統訊息... - + Loading CPU Info... 獲取處理器訊息... - + Loading Other Devices Info... 獲取其他裝置訊息... - + Loading Power Info... 獲取電池訊息... - + Loading Printer Info... 獲取印表機訊息... - + Loading Mouse Info... 獲取滑鼠訊息... - + Loading Network Adapter Info... 獲取網路適配器訊息... @@ -1522,14 +1574,14 @@ LogTreeView - - - + + + Disable 禁用 - + Unavailable 不可用 @@ -1537,12 +1589,12 @@ LogViewItemDelegate - + Disable 禁用 - + Unavailable 不可用 @@ -1550,88 +1602,88 @@ MainWindow - + Device Info - export file's name + export file's name 裝置訊息 - + Display shortcuts 顯示快捷鍵 - + Close 關閉 - + Help 說明 - + Copy 複製 - + System 系統 - + Export 匯出 - + Refresh 重新整理 - + Device Manager 裝置管理器 - + Hardware 硬體訊息 - + Drivers 驅動管理 - + Monitor 顯示裝置 - + Overview 概況 - + Display Adapter 顯示適配器 - + CPU 處理器 - + Network Adapter 網路適配器 - + Battery 電池 @@ -1639,191 +1691,377 @@ PageDetail - + More 更多 + + PageDriverBackupInfo + + + + Name + 名稱 + + + + + Current Version + 目前版本 + + + + + Driver Platform Version + + + + + Status + 狀態 + + + + Action + 操作 + + + + Backupable Drivers + + + + + Backed up Drivers + + + PageDriverControl - - + + Updating 正在更新 - - - + + + Cancel button 取 消 - + Next 下一步 - + Warning 注意 - + The device will be unavailable after the driver uninstallation 將從系統中移除此驅動程式,移除後該裝置不可用 - + Uninstall button 卸 載 - + Uninstalling 正在移除 - + Update successful 驅動更新成功 - + Uninstallation successful 驅動移除成功 - + Update failed 驅動更新失敗 - + Uninstallation failed 驅動移除失敗 - + OK button 確 定 - + Next button 下一步 - + The selected folder does not exist, please select again 所選資料夾不存在,請重新選擇 - + Update button 更 新 - + Previous button 上一步 - + Broken package 包文件損壞 - + Unmatched package architecture 包文件與系統架構不匹配 - - + + The selected file does not exist, please select again 所選文件不存在,請重新選擇 - + It is not a driver 該文件不是驅動文件 - + Unable to install - no digital signature 無法安裝,安裝包無數位簽章 - + Unknown error 未知錯誤 - + The driver module was not found 未發現該驅動模組 - + Invalid module format 模塊格式無效 - + The driver module has dependencies 驅動模組被依賴 - PageListView + PageDriverInstallInfo - - Refresh - 重新整理 + + + + Device Name + 裝置名稱 - + + Version Available + 可安裝版本 + + + + + Size + 容量 + + + + + Status + 狀態 + + + + + Action + 操作 + + + + New Version + 可更新版本 + + + + Current Version + 目前版本 + + + + Missing drivers (%1) + 可安裝驅動 (%1) + + + + Outdated drivers (%1) + 可更新驅動 (%1) + + + + Up-to-date drivers (%1) + 無需更新驅動 (%1) + + + + PageDriverManager + + + + + Driver Install + + + + + + + + Driver Backup + + + + + + Driver Restore + + + + + OK + 確 定 + + + + Feedback + + + + + PageDriverRestoreInfo + + + You do not have any drivers to restore, please backup first + + + + + Go to Backup Driver + + + + + Name + 名稱 + + + + Current Version + 目前版本 + + + + Backup Version + + + + + Action + 操作 + + + + Restorable Drivers + + + + + PageListView + + + Refresh + 重新整理 + + + Export 匯出 - + Overview 概況 + + + Driver Install + + + + + Driver Backup + + + + + Driver Restore + + PageMultiInfo - + Failed to enable the device 啟用失敗 - + Failed to disable the device 禁用失敗 - + Failed to disable it: unable to get the device SN 無法獲取裝置序號,禁用失敗 - + Update Drivers 更新驅動 - + Uninstall Drivers 移除驅動 @@ -1831,22 +2069,22 @@ PageOverview - + Refresh 重新整理 - + Export 匯出 - + Copy 複製 - + Overview 概況 @@ -1854,69 +2092,69 @@ PageSingleInfo - + Refresh 重新整理 - + Export 匯出 - + Copy 複製 - - + + Enable 啟用 - + Update drivers 更新驅動 - + Uninstall drivers 移除驅動 - + Allow it to wake the computer 允許喚起電腦 - + Disable 禁用 - - + + Failed to disable it: unable to get the device SN 無法獲取裝置序號,禁用失敗 - + Failed to disable the device 禁用失敗 - + Failed to enable the device 啟用失敗 - + Update Drivers 更新驅動 - + Uninstall Drivers 移除驅動 @@ -1924,867 +2162,847 @@ QObject - + SubVendor 子製造商 - + SubDevice 子裝置 - + Driver 驅動 - + Driver Status 驅動狀態 - + Driver Activation Cmd 驅動啟動指令 - - + - + + Config Status 配置狀態 - - - - - - - physical id - 物理ID - - - + latency 延遲 - + Phys Phys - + Sysfs Sysfs - + Handlers 處理程序 - - + + PROP PROP - - + + EV EV - - + + KEY KEY - - Model - 型號 - - - - Vendor - 製造商 - - - + Version 版本 - - + + + Bus 匯流排 - - + + BIOS Information BIOS訊息 - - + + Base Board Information 主機板訊息 - - + + System Information 系統訊息 - - + + Chassis Information 機箱訊息 - - + + Physical Memory Array 物理記憶體陣列 - + Release Date 發布日期 - + Address 地址 - + Runtime Size 運行內存大小 - + ROM Size ROM大小 - + Characteristics 特性 - + BIOS Revision BIOS修訂版本 - + Firmware Revision 韌體修訂版本 - - + + Product Name 產品名稱 - - - + + + Serial Number 序號 - - - + + + Asset Tag 資產編號 - - + + Features 特徵 - + Location In Chassis 機箱內位置 - + Chassis Handle 機箱程序 - - + + Type 類型 - + Contained Object Handles 包含對象程序 - - + + UUID UUID - + Wake-up Type 喚醒類型 - - + + SKU Number SKU號 - + Family 家族 - + Lock - + Boot-up State 開機狀態 - + Power Supply State 供電狀態 - + Thermal State 散熱狀態 - + Security Status 安全狀態 - + OEM Information OEM訊息 - + Height 高度 - + Number Of Power Cords 電源線數 - + Contained Elements 包含組件數 - + Location 位置 - + Error Correction Type 糾錯類型 - + Maximum Capacity 最大容量 - - + + Error Information Handle 錯誤訊息程序 - + Number Of Devices 插槽 - + BIOS ROMSIZE BIOS ROM大小 - + Release date 發布日期 - + Board name 主機板名稱 - + SMBIOS Version SMBIOS版本 - + Language Description Format 語言描述格式 - + Installable Languages 可安裝語言數 - + Currently Installed Language 當前安裝語言 - + BD Address 藍牙裝置地址 - + ACL MTU ACL MTU - + SCO MTU SCO MTU - + Packet type 封包類型 - + Link policy 連接策略 - + Link mode 連接模式 - - + + Class 類別 - + Service Classes 服務類別 - + Device Class 裝置類別 - + HCI Version HCI版本 - + LMP Version LMP版本 - + Subversion 子版本 - + Device 裝置 - - + + Serial ID 序號 - + product 產品 - + description 描述 - + Powered 供電 - + Discoverable 可發現 - + Pairable 可配對 - + Modalias 設置命令別名 - + Discovering 搜索中 - + Driver Modules 驅動模組 - - - + + + + + Device File 裝置文件 - + Device Files 裝置文件 - - + + + Device Number 裝置編號 - - Module Alias - 模組別名 - - - + Application 應用 - + status 狀態 - - + + + logical name 邏輯地址 - - + + ansiversion ANSI版本 - + CPU implementer CPU程式 - + CPU architecture CPU架構 - + CPU variant CPU變數 - + CPU part CPU部件 - + CPU revision CPU版本 - + One - + Two - + Four - + Six - + Eight - + Ten - + Twelve 十二 - + Fourteen 十四 - + Sixteen 十六 - + Eighteen 十八 - + Twenty 二十 - + Twenty-two 二十二 - + Twenty-four 二十四 - + Twenty-six 二十六 - + Twenty-eight 二十八 - + Thirty 三十 - + Thirty-two 三十二 - + Thirty-four 三十四 - + Thirty-six 三十六 - + Thirty-eight 三十八 - + Forty 四十 - + Forty-two 四十二 - + Forty-four 四十四 - + Forty-six 四十六 - + Forty-eight 四十八 - + Fifty 五十 - + Fifty-two 五十二 - + Fifty-four 五十四 - + Fifty-six 五十六 - + Fifty-eight 五十八 - + Sixty 六十 - + Sixty-two 六十二 - + Sixty-four 六十四 - + Sixty-six 六十六 - + Sixty-eight 六十八 - + Seventy 七十 - + Seventy-two 七十二 - + Seventy-four 七十四 - + Seventy-six 七十六 - + Seventy-eight 七十八 - + Eighty 八十 - + Eighty-two 八十二 - + Eighty-four 八十四 - + Eighty-six 八十六 - + Eighty-eight 八十八 - + Ninety 九十 - + Ninety-two 九十二 - + Ninety-four 九十四 - + Ninety-six 九十六 - + Ninety-eight 九十八 - + One hundred 100 - + One hundred and Two 102 - + One hundred and four 104 - + One hundred and Six 106 - + One hundred and Eight 108 - + One hundred and Ten 110 - + One hundred and Twelve 112 - + One hundred and Fourteen 114 - + One hundred and Sixteen 116 - + One hundred and Eighteen 118 - + One hundred and Twenty 120 - + One hundred and Twenty-two 122 - + One hundred and Twenty-four 124 - + One hundred and Twenty-six 126 - + One hundred and Twenty-eight 128 - + One hundred and Ninety-two 一百九十二 - + Two hundred and fifty-six 256 @@ -2824,988 +3042,1084 @@ GLSL版本 - - - + + + Unknown 未知 - + Uniq Uniq - + MSC MSC - - + + + Hardware Class 硬體類別 - - - - + + + + CPU 處理器 - - - - + + + + No CPU found 未發現處理器 - - - - + + + + Motherboard 主機板 - - - - + + + + No motherboard found 未發現主機板 - - - - + + + + Memory 記憶體 - - - - + + + + No memory found 未發現記憶體 - - - - + + + + Storage 儲存裝置 - - - - + + + + No disk found 未發現磁碟 - - - - - + + Driver restore failed! + + + + + + Please try again or give us feedback + + + + + Driver backup failed! + + + + + + + + Display Adapter 顯示適配器 - - - - + + + + No GPU found 未發現GPU - - - - + + + + Monitor 顯示裝置 - - - - + + + + No monitor found 未發現顯示裝置 - - - - - + + + + + Network Adapter 網路適配器 - - - - + + + + No network adapter found 未發現網路適配器 - - - - - + + + + + Sound Adapter 音訊適配器 - - - - + + + + No audio device found 未發現音訊裝置 - - - - - + + + + + Bluetooth 藍牙 - - - - + + + + No Bluetooth device found 未發現藍牙裝置 - - - - + + + + Other PCI Devices 其他PCI裝置 - - - - + + + + No other PCI devices found 未發現其他PCI裝置 - - - - + + + + Power 電池 - - - - + + + + No battery found 未發現電池 - - - - - + + + + + Keyboard 鍵盤 - - - - + + + + No keyboard found 未發現鍵盤 - - - - - + + + + + Mouse 滑鼠 - - - - + + + + No mouse found 未發現滑鼠 - - - - - - + + + + + + Printer 印表機 - - - - + + + + No printer found 未發現印表機 - - - - + + + + Camera 圖像裝置 - - - - + + + + No camera found 未發現圖像裝置 - - - - + + + + CD-ROM 光碟機 - - - - + + + + No CD-ROM found 未發現光碟機 - - - - - + + + + + Other Devices 其他裝置 - - - - + + + + No other devices found 未發現其他裝置 - + Array Handle 數組程序 - + Form Factor 尺寸型號 - + Set 設置 - + Bank Locator 記憶體通道 - + Type Detail 類型詳情 - + Part Number 部件號碼 - + Rank 位列 - + Memory Technology 記憶體技術 - + Memory Operating Mode Capability 記憶體操作模式 - + Firmware Version 韌體版本 - + Module Manufacturer ID 元件製造商 - + Module Product ID 元件產品ID - + Memory Subsystem Controller Manufacturer ID 記憶體子系統控制器製造商 - + Memory Subsystem Controller Product ID 記憶體子系統控制器產品ID - + Non-Volatile Size 不易遺失大小 - + Volatile Size 易遺失大小 - + Cache Size 快取大小 - + Logical Size 邏輯大小 - - - - - + + + + + inch 英寸 - + Date 日期 - + ioport IO埠 - + network 網路 - - + battery 電池 - + native-path 安裝路徑 - + power supply 供電 - + updated 更新時間 - + has history 歷史記錄 - + has statistics 用電統計 - + rechargeable 可再充電 - + state 狀態 - + warning-level 警告等級 - + energy 容量 - + energy-empty 最低容量 - + energy-full 完全充滿容量 - + energy-full-design 設計容量 - + energy-rate 能量密度 - + voltage 電壓 - + percentage 電量 - + technology 電池技術 - + icon-name 圖示 - + online 線上 - + daemon-version Daemon版本 - + on-battery 使用電池 - + lid-is-closed 筆記本合蓋 - + lid-is-present 打開筆記本蓋子 - + critical-action 電量極低時執行 - + copies 影印數量 - + job-cancel-after 此時取消列印任務 - + job-hold-until 保留列印任務直至 - + job-priority 任務優先度 - + marker-change-time 標記修改次數 - + number-up 編號 - + orientation-requested 列印方向 - + print-color-mode 顏色模式 - + printer-is-accepting-jobs 當前可列印 - + printer-is-shared 印表機已共享 - + printer-is-temporary 臨時印表機 - + printer-make-and-model 製造商和型號 - + printer-state-change-time 印表機狀態修改時間 - + printer-state-reasons 印表機狀態訊息 - + printer-type 印表機類型 - + printer-uri-supported 支持的URI - + sides 列印面數 - - - - + + + + + + SSD 固態 - - + + HDD 機械 - + + bus info 匯流排訊息 - + logicalsectorsize 邏輯分區大小 - + sectorsize 扇區大小 - + guid 全局唯一標識符 - + Geometry (Logical) 幾何資料(邏輯) - - + + Device Manager 裝置管理器 - + Device Manager is a handy tool for viewing hardware information and managing the devices. 裝置管理器是查看、管理硬體裝置的工具軟體。 - + New drivers available! Install or update them now. 您有驅動可進行安裝/更新 - + + View + + + + Include subfolders 包括子資料夾 - + Search for drivers in this path 選擇驅動所在位置 - - - - Device Name - 裝置名稱 - - - - Version Available - 可安裝版本 - - - - - Size - 容量 - - - - - Status - 狀態 - - - - - Action - 操作 - - - - New Version - 可更新版本 - - - - Current Version - 目前版本 - - - - Missing drivers (%1) - 可安裝驅動 (%1) - - - - Outdated drivers (%1) - 可更新驅動 (%1) - - - - Up-to-date drivers (%1) - 無需更新驅動 (%1) - - - + %1 driver updates available 發現%1個驅動可安裝更新 - - + + Time checked: %1 檢測時間: %1 - + Downloading drivers for %1... 正在下載%1驅動… - + Download speed: %1 Downloaded %2/%3 下載速度:%1 已完成 %2/%3 - + Installing drivers for %1... 正在安裝%1驅動… - + %1 drivers installed, %2 drivers failed 驅動安裝成功%1個,失敗%2個 - + %1 drivers installed 共成功安裝%1個驅動 - + Failed to install drivers 驅動安裝失敗 - + Network error. Reconnecting... 網路異常,重試中 - + Download speed: %1 下載速度:%1 - + Your drivers are up to date 驅動已是最新 - + + All drivers have been backed up + + + + + + A total of %1 drivers, of which %2 have been backed up + + + + + You have %1 drivers that can be backed up, it is recommended to do so immediately + + + + + You have %1 drivers that can be backed up + + + + + Backing up the %1 driver, a total of %2 drivers + + + + + Backing up: %1 + + + + + %1 drivers backed up, %2 drivers failed + + + + + Failed to backup drivers + + + + + %1 drivers backed up + + + + + You have %1 drivers that can be restored + + + + + Please select a driver to restore + + + + + Driver is restoring... + + + + + Restoring: %1 + + + + reboot 重啟電腦 - + Please %1 for the installed drivers to take effect 驅動已安裝完成,請稍後%1生效 - - + + View backup path + + + + + Backup All + + + + + submit feedback 回饋 - + Please try again or %1 to us 驅動未安裝成功,請重試或%1給我們 - + Install All 一鍵安裝 - - + + Scan Again 重新檢測 - + Cancel 取 消 - + Scanning hardware device drivers, please wait... 正在進行硬體驅動掃描,請耐心等待... - - + + Scanning %1 正在掃描%1 - + Scan failed 檢測失敗 - + Network unavailable 無網路 - + Please check your network connection 請檢查網路連接 - + Please scan again or %1 to us 請重新檢測或%1給我們 - + You are installing a driver, which will be interrupted if you exit. 目前正在安裝驅動,退出應用後任務將會中斷 - + + + Are you sure you want to exit? 確認是否退出應用? - + + + Exit button 退 出 - + + + Cancel button 取 消 - + + You are backing up drivers, which will be interrupted if you exit. + + + + + You are restoring drivers, which will be interrupted if you exit. + + + + Bluetooth adapter 藍牙適配器 - - + + Imaging device 圖像裝置 - + Display adapter 顯示卡 - + Sound card 音效卡 - + Network adapter 網卡 - + Wireless network adapter 無線網卡 - + Installation successful 安裝成功 - + Installation failed 安裝失敗 - + Downloading 下載中 - + Installing 安裝中 - + Not installed 驅動未安裝 - + Out-of-date 驅動可更新 - + Waiting 等待中 - + + Not backed up + + + + + Backing up + + + + + Backup failed + + + + + Backup successful + + + + + Restoring + + + + Unknown error 未知錯誤 - + Network error 網路異常 - + Canceled 已取消 - + Failed to get driver files 驅動文件獲取異常 - + Update 更新 - + + Backup + + + + + Restore + + + + Install 安装 @@ -3813,39 +4127,39 @@ TableWidget - - + + Disable 禁用 - + Refresh 重新整理 - + Export 匯出 - + Update drivers 更新驅動 - + Uninstall drivers 移除驅動 - + Allow it to wake the computer 允許喚起電腦 - - + + Enable 啟用 @@ -3853,27 +4167,27 @@ TextBrowser - + Refresh 重新整理 - + Export 匯出 - + Copy 複製 - + Disable 禁用 - + Unavailable 不可用 @@ -3881,7 +4195,7 @@ UrlChooserEdit - + Select a local folder please 請選擇本機資料夾 @@ -3889,9 +4203,9 @@ WaitingWidget - + Loading... 正在載入... - \ No newline at end of file + diff --git a/rpm/deepin-devicemanager.spec b/rpm/deepin-devicemanager.spec new file mode 100644 index 000000000..dbb8c9eaf --- /dev/null +++ b/rpm/deepin-devicemanager.spec @@ -0,0 +1,93 @@ +%define specrelease 1%{?dist} +%if 0%{?openeuler} +%define specrelease 1 +%endif + +Name: deepin-devicemanager +Version: 5.8.5.40 +Release: %{specrelease} +Summary: Device Manager is a handy tool for viewing hardware information and managing the devices +License: GPLv3+ +URL: https://github.com/linuxdeepin/deepin-devicemanager +Source0: %{name}-%{version}.tar.gz + +BuildRequires: gcc-c++ +BuildRequires: cmake3 +BuildRequires: dtkwidget-devel +BuildRequires: dtkgui-devel +BuildRequires: systemd-devel +BuildRequires: polkit-qt5-1-devel +BuildRequires: libicu-devel +BuildRequires: qt5-rpm-macros +BuildRequires: qt5-qtbase-devel +BuildRequires: qt5-qttools-devel +BuildRequires: cups-devel +BuildRequires: pkgconfig(dframeworkdbus) +BuildRequires: zeromq3-devel +BuildRequires: gtest-devel + +Requires: smartmontools +Requires: dmidecode +Requires: xorg-x11-server-utils +Requires: hwinfo +Requires: cups +Requires: upower +Requires: deepin-shortcut-viewer +Requires: lshw +Requires: util-linux + +%description +%{summary}. + +%prep +%autosetup + +%build +# help find (and prefer) qt5 utilities, e.g. qmake, lrelease +export PATH=%{_qt5_bindir}:$PATH +sed -i "s|^cmake_minimum_required.*|cmake_minimum_required(VERSION 3.0)|" $(find . -name "CMakeLists.txt") + +mkdir build && pushd build +%cmake ../ -DCMAKE_BUILD_TYPE=Release -DAPP_VERSION=%{version} -DDISABLE_DRIVER=true -DVERSION=%{version} +%make_build +popd + +%install +%make_install -C build INSTALL_ROOT="%buildroot" + +%post +systemctl enable deepin-devicemanager-server.service + + +%files +%doc README.md +%license LICENSE +%{_bindir}/%{name} +%{_datadir}/applications/%{name}.desktop +%{_datadir}/%{name}/translations/*.qm +%{_datadir}/icons/hicolor/scalable/apps/%{name}.svg +/usr/share/dbus-1/services/com.deepin.Devicemanager.service +/usr/share/polkit-1/actions/com.deepin.deepin-devicemanager.policy +/lib/systemd/system/deepin-devicemanager-server.service +%{_bindir}/deepin-devicemanager-server +%{_datadir}/deepin-manual/manual-assets/application/deepin-devicemanager/device-manager/* +/etc/dbus-1/system.d/com.deepin.devicemanager.conf + +%changelog +* Thu Apr 15 2021 zhangdingwen - 5.6.0.40-1 +- Initial release for OpenEuler + +* Mon Oct 12 2020 guoqinglan - 5.5.9.36-1 +- bugfix#48018 + +* Sat Oct 10 2020 guoqinglan - 5.5.9.35-1 +- bugfix#48626 + +* Tue Sep 29 2020 guoqinglan - 5.5.9.34-1 +- update to 5.5.9.34 + +* Thu Sep 24 2020 guoqinglan - 5.5.9.33-1 +- update to 5.5.9.33 + +* Wed Sep 23 2020 guoqinglan - 5.5.9.31-1 +- update to 5.5.9.31
" + item + "
" + m_TableHeader[col] + "" + m_TableHeaderTr[col] + "