diff --git a/CMakeLists.txt b/CMakeLists.txt index eb33fde8c5..d7928ea3e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -21,11 +21,6 @@ option(BUILD_TESTING "UNIT test" OFF) set(BUILD_EXAMPLES OFF) set(DCC_ENABLE_MEMORY_MANAGEMENT ON) -# dcc-v23 -set(BUILD_DCC_OLD OFF) -if (BUILD_DCC_OLD) - add_subdirectory(dcc-old) -endif() set(QT_NS Qt6) set(DTK_NS Dtk6) diff --git a/dcc-old/CMakeLists.txt b/dcc-old/CMakeLists.txt deleted file mode 100644 index a49dbe5181..0000000000 --- a/dcc-old/CMakeLists.txt +++ /dev/null @@ -1,1424 +0,0 @@ -cmake_minimum_required(VERSION 3.13) - -set(DVERSION "6.0.44" CACHE STRING "define project version") -set(BUILD_DOCS ON CACHE BOOL "Generate doxygen-based documentation") - -set(PROJECT_NAME dde-control-center-old) -project(${PROJECT_NAME} - VERSION ${DVERSION} - DESCRIPTION "Deepin Control Center" - HOMEPAGE_URL "https://github.com/linuxdeepin/dde-control-center" - LANGUAGES CXX C -) - -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_INCLUDE_CURRENT_DIR ON) -set(CMAKE_AUTOMOC ON) -set(CMAKE_AUTORCC ON) -option(BUILD_TESTING "UNIT test" OFF) - -# INFO: -# plugins can be disabled and their options -# plugin-authentication : DISABLE_AUTHENTICATION -# plugin-update : DISABLE_UPDATE -# plugin-keyboard: DISABLE_LANGUAGE to disable language panel - -option(DISABLE_AUTHENTICATION "disable build authentication plugins" OFF) -option(DISABLE_UPDATE "disable build update plugins" OFF) -option(DISABLE_LANGUAGE "disable lanugage settings in control center" OFF) -option(USE_DEEPIN_ZONE "enable special timezone file on deepin" OFF) -option(DISABLE_SOUND_ADVANCED "disable sound advanced settings" OFF) -set(DEEPIN_TIME_ZONE_PATH "/usr/share/dde/zoneinfo/zone1970.tab" CACHE STRING "deepin timezone path") -set(LOCALE_I18N_PATH "/usr/share/i18n/SUPPORTED" CACHE STRING "Supported locale path") - -# asan 自己有内存泄露,暂不使用 -if (CMAKE_BUILD_TYPE STREQUAL "Debug") - # set(UNITTEST ON) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -g -Wall -Werror=return-type -fno-omit-frame-pointer -Wextra") - if(ENABLE_ASAN) - if (CMAKE_CXX_COMPILER_ID MATCHES "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -g") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -g") - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=address") - set(CMAKE_LINKER_FLAGS "${CMAKE_LINKER_FLAGS} -fsanitize=address") - set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -fsanitize=address") - add_definitions(-DUSE_ASAN) - endif() - endif() -else() - # generate qm - execute_process(COMMAND bash "misc/translate_generation.sh" - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) - # generate desktop translate - execute_process(COMMAND bash "misc/translate_ts2desktop.sh" - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) -endif() - -if (BUILD_TESTING) - set(UNITTEST ON) -endif() - -set(BUILD_PLUGIN ON) - -if (NOT BUILD_PLUGIN) - set(UNITTEST OFF) -endif() -# GNU 默认 - -if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - set(UT_COMPILER -fprofile-arcs -ftest-coverage) -elseif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(UT_COMPILER -fprofile-instr-generate -ftest-coverage) -endif() - -if (USE_DEEPIN_ZONE) - add_definitions(-DUSE_DEEPIN_ZONE) - add_definitions(-DDEEPIN_TIME_ZONE_PATH="${DEEPIN_TIME_ZONE_PATH}") -endif () - -add_definitions(-DLOCALE_I18N_PATH="${LOCALE_I18N_PATH}") - -# Install settings -if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) - set(CMAKE_INSTALL_PREFIX /usr) -endif () -include(GNUInstallDirs) -include(CMakePackageConfigHelpers) -include(GoogleTest) - -if(BUILD_DOCS) - add_subdirectory(docs) -endif() - -set(TRANSLATE_INSTALL_DIR "${CMAKE_INSTALL_DATAROOTDIR}/dde-control-center/translations" CACHE STRING "Install dir for dde-control-center translate files") - -add_definitions(-DTRANSLATE_READ_DIR="${CMAKE_INSTALL_PREFIX}/${TRANSLATE_INSTALL_DIR}") -set(MODULE_INSTALL_DIR "${CMAKE_INSTALL_FULL_LIBDIR}/dde-control-center/modules" CACHE STRING "Install dir for dde-control-center modules") - -set(DCC_MODULE_READ_DIR "${MODULE_INSTALL_DIR}" CACHE STRING "Dir to find dde-control-center modules") -add_definitions(-DDCC_DefaultModuleDirectory="${DCC_MODULE_READ_DIR}") - -set(LOCALSTATE_READ_DIR "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}" CACHE STRING "Dir to find modifiable single-machine data") -add_definitions(-DVARDIRECTORY="${LOCALSTATE_READ_DIR}") -# Find the library -find_package(PkgConfig REQUIRED) -find_package(Dtk COMPONENTS Core Widget DConfig REQUIRED) -find_package(Qt5 COMPONENTS Widgets Network DBus Concurrent Multimedia Svg Test REQUIRED) -find_package(GTest REQUIRED) -find_package(Threads REQUIRED) -# pkg_check_modules(DFrameworkDBus REQUIRED dframeworkdbus) - -if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "sw_64") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mieee") -endif() - -# dconfig -# file(GLOB DCONFIG_FILES "misc/configs/*.json") -# dtk_add_config_meta_files(APPID org.deepin.dde.control-center BASE misc/configs FILES ${DCONFIG_FILES}) -# file(GLOB DCONFIG_FILE_REGION_FORMAT "misc/configs/common/org.deepin.region-format.json") -# dtk_add_config_meta_files(COMMONID true FILES ${DCONFIG_FILE_REGION_FORMAT}) - -include_directories( - include -) - -set(Test_Libraries - -lgcov - Threads::Threads - GTest::gtest - Qt::Test -) - -#--------------------------interface-------------------------- -set(Interface_Name dcc-interface) -file(GLOB_RECURSE Interface_SRCS - "include/interface/*.h" - "src/interface/*.cpp" -) -add_library(${Interface_Name} SHARED - ${Interface_SRCS} -) - -set(Interface_Libraries - Qt::Widgets - Dtk::Widget -) - -target_include_directories(${Interface_Name} PUBLIC - $ -) - -target_include_directories(${Interface_Name} INTERFACE - $ -) - -target_link_libraries(${Interface_Name} PUBLIC - ${Interface_Libraries} -) - -set_target_properties(${Interface_Name} PROPERTIES - VERSION 6 - SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} - EXPORT_NAME DCCInterface -) - -# so -install(TARGETS ${Interface_Name} - EXPORT DdeControlCenterInterfaceTargets - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) - -install(EXPORT DdeControlCenterInterfaceTargets - FILE DdeControlCenterInterfaceTargets.cmake - NAMESPACE Dde:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter -) - - -#--------------------------dccwidgets library---------------------------- -set(Dcc_Widgets_Name dcc-widgets) -file(GLOB_RECURSE Dcc_Widgets_SRCS - "include/widgets/*.h" - "src/widgets/*.cpp" -) -add_library(${Dcc_Widgets_Name} SHARED - ${Dcc_Widgets_SRCS} -) -set(Dcc_Widgets_Includes - include/widgets -) - -set(Dcc_Widgets_Libraries_public - Dtk::Widget - Qt::Widgets - ${Interface_Name} -) - -set(Dcc_Widgets_Libraries_private - Qt::Svg - Qt::DBus -) - -set(Dcc_Widgets_Libraries - ${Dcc_Widgets_Libraries_public} - ${Dcc_Widgets_Libraries_private} -) - -target_include_directories(${Dcc_Widgets_Name} PUBLIC - $ -) - -target_include_directories(${Dcc_Widgets_Name} INTERFACE - $ -) - -target_link_libraries(${Dcc_Widgets_Name} PUBLIC - ${Dcc_Widgets_Libraries_public} -) - -target_link_libraries(${Dcc_Widgets_Name} PRIVATE - ${Dcc_Widgets_Libraries_private} -) - -set_target_properties(${Dcc_Widgets_Name} PROPERTIES - VERSION 6 - SOVERSION ${CMAKE_PROJECT_VERSION_MAJOR} - EXPORT_NAME DCCWidget -) - -# so -install(TARGETS ${Dcc_Widgets_Name} - EXPORT DdeControlCenterWidgetTargets - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) - -install(EXPORT DdeControlCenterWidgetTargets - FILE DdeControlCenterWidgetTargets.cmake - NAMESPACE Dde:: - DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter -) - - -#------------------------dccwidgets library test-------------------------- -if (UNITTEST) - set(UT_Dcc_Widgets_Name ut-dcc-widgets) - file(GLOB_RECURSE UT_Dcc_Widgets_SRCS - "tests/widgets/*.cpp" - ) - add_executable(${UT_Dcc_Widgets_Name} - ${Dcc_Widgets_SRCS} - ${UT_Dcc_Widgets_SRCS} - ) - # 用于测试覆盖率的编译条件 - target_compile_options(${UT_Dcc_Widgets_Name} PRIVATE ${UT_COMPILER}) - target_include_directories(${UT_Dcc_Widgets_Name} PUBLIC - ${Dcc_Widgets_Includes} - ) - target_link_libraries(${UT_Dcc_Widgets_Name} PRIVATE - ${Dcc_Widgets_Libraries} - ${Test_Libraries} - ) - gtest_discover_tests(${UT_Dcc_Widgets_Name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -endif() - -#--------------------------dde-control-center-Agent-------------------------- -set(DCC_AGENT_PREFIX "") -if (CMAKE_BUILD_TYPE STREQUAL "Debug") - set(OLD_DCC_SO_PATH ${PROJECT_BINARY_DIR}/../dcc-old/libdcc-widgets.so) - set(NEW_DCC_SO_PATH ${PROJECT_BINARY_DIR}/../lib/libdde-control-center.so) - set(OLD_DCC_PATH ${PROJECT_BINARY_DIR}/../dcc-old/libdde-control-center-old.so) - set(NEW_DCC_PATH ${PROJECT_BINARY_DIR}/../lib/libdde-control-center-lib.so) -else() - set(DCC_AGENT_PREFIX "/usr/") - set(OLD_DCC_SO_PATH ${CMAKE_INSTALL_LIBDIR}/libdcc-widgets.so) - set(NEW_DCC_SO_PATH ${CMAKE_INSTALL_LIBDIR}/libdde-control-center.so) - set(OLD_DCC_PATH ${CMAKE_INSTALL_LIBDIR}/dde-control-center/libdde-control-center-old.so) - set(NEW_DCC_PATH ${CMAKE_INSTALL_LIBDIR}/dde-control-center/libdde-control-center-lib.so) - set(DCC_TRANSLATE_READ_DIR ${CMAKE_INSTALL_PREFIX}/${DCC_TRANSLATION_INSTALL_DIR}) -endif() -add_definitions(-DOLD_DCC_SO_PATH="${DCC_AGENT_PREFIX}${OLD_DCC_SO_PATH}") -add_definitions(-DNEW_DCC_SO_PATH="${DCC_AGENT_PREFIX}${NEW_DCC_SO_PATH}") -add_definitions(-DOLD_DCC_PATH="${DCC_AGENT_PREFIX}${OLD_DCC_PATH}") -add_definitions(-DNEW_DCC_PATH="${DCC_AGENT_PREFIX}${NEW_DCC_PATH}") - - -set(DCC_Agent dde-control-center-agent) -set(DCCAgent_Name ${DCC_Agent}) -file(GLOB DCCAgent_SRCS - "src/dcc-agent/*.c" -) - -add_executable(${DCCAgent_Name} - ${DCCAgent_SRCS} -) - -set_target_properties(${DCCAgent_Name} PROPERTIES - OUTPUT_NAME dde-control-center -) - -install(TARGETS ${DCCAgent_Name} DESTINATION ${CMAKE_INSTALL_BINDIR}) - -#--------------------------dde-control-center-------------------------- -set(Control_Center_Name dde-control-center-old) -file(GLOB_RECURSE Control_Center_SRCS - "src/frame/*.h" - "src/frame/*.cpp" -) -list(REMOVE_ITEM Control_Center_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/src/frame/main.cpp") - -add_library(${Control_Center_Name} SHARED - ${Control_Center_SRCS} - src/frame/main.cpp -) - -target_compile_definitions(${Control_Center_Name} PRIVATE CVERSION="${CVERSION}") - -set(Control_Center_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent -) - -target_link_libraries(${Control_Center_Name} PRIVATE - ${Control_Center_Libraries} -) - -# bin -install(TARGETS ${Control_Center_Name} DESTINATION ${CMAKE_INSTALL_LIBDIR}/dde-control-center/) - -#----------------------------install config------------------------------ -# qm files -file(GLOB QM_FILES "translations/*.qm") -install(FILES ${QM_FILES} DESTINATION ${TRANSLATE_INSTALL_DIR}) - -#desktop -# install(FILES misc/org.deepin.dde.control-center.desktop DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/applications) - -#service -# configure_file( -# ${CMAKE_CURRENT_SOURCE_DIR}/misc/org.deepin.dde.ControlCenter1.service.in -# ${CMAKE_CURRENT_BINARY_DIR}/org.deepin.dde.ControlCenter1.service -# @ONLY) -# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.deepin.dde.ControlCenter1.service -# DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/dbus-1/services) - -# systemd service -if (NOT DEFINED SYSTEMD_USER_UNIT_DIR) - find_package(PkgConfig REQUIRED) - pkg_check_modules(Systemd REQUIRED systemd) - pkg_get_variable(SYSTEMD_USER_UNIT_DIR systemd systemduserunitdir) -endif() - -# configure_file( -# ${CMAKE_SOURCE_DIR}/misc/systemd/dde-control-center.service.in -# ${CMAKE_CURRENT_BINARY_DIR}/org.deepin.dde.control-center.service -# @ONLY) - -# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.deepin.dde.control-center.service -# DESTINATION ${SYSTEMD_USER_UNIT_DIR}) - -# dev files -file(GLOB HEADERS "include/*") -set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}/dde-control-center) -install(DIRECTORY ${HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}) - -# configure_package_config_file(misc/DdeControlCenterConfig.cmake.in -# ${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfig.cmake -# INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter -# PATH_VARS INCLUDE_INSTALL_DIR -# INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) - -# write_basic_package_version_file( -# "${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfigVersion.cmake" -# VERSION ${PROJECT_VERSION} -# COMPATIBILITY SameMajorVersion -# ) - -# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfig.cmake -# ${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfigVersion.cmake -# DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter) - -# install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/org.deepin.dde.controlcenter.metainfo.xml -# DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) - -#dde-grand-search-daemon conf -# install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/misc/org.deepin.dde-grand-search.dde-control-center-setting.conf -# DESTINATION ${CMAKE_INSTALL_LIBDIR}/dde-grand-search-daemon/plugins/searcher) -#-------------------------ut-dcc-interface------------------------- -if (UNITTEST) - set(UT_Interface_Name ut-dcc-interface) - file(GLOB_RECURSE UT_Interface_SRCS - "tests/interface/*.cpp" - ) - - set(Interface_Includes - include/interface - ) - - add_executable(${UT_Interface_Name} - ${Interface_SRCS} - ${UT_Interface_SRCS} - ) - - # 用于测试覆盖率的编译条件 - target_compile_options(${UT_Interface_Name} PRIVATE ${UT_COMPILER}) - - target_include_directories(${UT_Interface_Name} PUBLIC - ${Interface_Includes} - ) - - target_link_libraries(${UT_Interface_Name} PRIVATE - ${Interface_Libraries} - ${Test_Libraries} - ) -endif() -#-------------------------ut-dcc-frame------------------------- -if (UNITTEST) - set(UT_Frame_Name ut-dcc-frame) - file(GLOB_RECURSE UT_Frame_SRCS - "tests/frame/*.cpp" - ) - - add_executable(${UT_Frame_Name} - ${Control_Center_SRCS} - ${UT_Frame_SRCS} - ) - - # 用于测试覆盖率的编译条件 - target_compile_options(${UT_Frame_Name} PRIVATE ${UT_COMPILER}) - - target_link_libraries(${UT_Frame_Name} PRIVATE - ${Control_Center_Libraries} - ${Test_Libraries} - ) -endif() -#--------------------------plugin-test1-------------------------- -if (UNITTEST) - set(Plugin_Test1_Name plugin-test1) - file(GLOB_RECURSE Plugin_Test1_SRCS - "tests/plugin-test1/*.h" - "tests/plugin-test1/*.cpp" - ) - - add_library(${Plugin_Test1_Name} MODULE - ${Plugin_Test1_SRCS} - ) - - set(Plugin_Test1_Libraries - ${Interface_Name} - Qt::Widgets - Qt::DBus - Dtk::Widget - ) - - target_link_libraries(${Plugin_Test1_Name} PRIVATE - ${Plugin_Test1_Libraries} - ) -endif() - -#--------------------------plugin-test2-------------------------- -if (UNITTEST) - set(Plugin_Test2_Name plugin-test2) - file(GLOB_RECURSE Plugin_Test2_SRCS - "tests/plugin-test2/*.h" - "tests/plugin-test2/*.cpp" - ) - - add_library(${Plugin_Test2_Name} MODULE - ${Plugin_Test2_SRCS} - ) - - set(Plugin_Test2_Includes - Qt5::Widgets - Qt5::DBus - ) - set(Plugin_Test2_Libraries - ${Interface_Name} - Qt5::Widgets - Qt5::DBus - ) - target_include_directories(${Plugin_Test2_Name} PUBLIC - ${Plugin_Test2_Includes} - ) - - target_link_libraries(${Plugin_Test2_Name} PRIVATE - ${Plugin_Test2_Libraries} - ) -endif() - -#--------------------------plugin-systeminfo-------------------------- -if (BUILD_PLUGIN) - set(SystemInfo_Name dcc-systeminfo-plugin) - file(GLOB_RECURSE SYSTEMINFO_SRCS - "src/plugin-systeminfo/window/*.cpp" - "src/plugin-systeminfo/operation/*.cpp" - "src/plugin-systeminfo/operation/qrc/systeminfo.qrc" - ) - - add_library(${SystemInfo_Name} MODULE - ${SYSTEMINFO_SRCS} - ) - - set(SystemInfo_Includes - src/plugin-systeminfo - - ) - set(SystemInfo_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - ) - - - target_include_directories(${SystemInfo_Name} PUBLIC - ${SystemInfo_Includes} - ) - - target_link_libraries(${SystemInfo_Name} PRIVATE - ${SystemInfo_Libraries} - ) - - install(TARGETS ${SystemInfo_Name} DESTINATION ${CMAKE_INSTALL_LIBDIR}/dde-control-center/modules) -endif() -#-------------------------ut-dcc-systeminfo-plugin------------------------- -if (UNITTEST) - set(UT_SystemInfo_Name ut-dcc-systeminfo-plugin) - file(GLOB_RECURSE UT_SYSTEMINFO_SRCS - "tests/plugin-systeminfo/*.cpp" - ) - - add_executable(${UT_SystemInfo_Name} - ${SYSTEMINFO_SRCS} - ${UT_SYSTEMINFO_SRCS} - ) - - # 用于测试覆盖率的编译条件 - target_compile_options(${UT_SystemInfo_Name} PRIVATE ${UT_COMPILER}) - - target_include_directories(${UT_SystemInfo_Name} PUBLIC - ${SystemInfo_Includes} - ) - - target_link_libraries(${UT_SystemInfo_Name} PRIVATE - ${SystemInfo_Libraries} - ${Test_Libraries} - ) - gtest_discover_tests(${UT_SystemInfo_Name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -endif() -#--------------------------dcc-power-plugin-------------------------- -if (BUILD_PLUGIN) - set(Power_Name dcc-power-plugin) - file(GLOB_RECURSE Power_SRCS - "src/plugin-power/window/*.cpp" - "src/plugin-power/operation/*.cpp" - "src/plugin-power/operation/qrc/power.qrc" - ) - - add_library(${Power_Name} MODULE - ${Power_SRCS} - ) - - set(Power_Includes - src/plugin-power/window - src/plugin-power/operation - ) - set(Power_Libraries - ${Interface_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - ${Dcc_Widgets_Name} - ) - target_include_directories(${Power_Name} PRIVATE - ${Power_Includes} - ) - - target_link_libraries(${Power_Name} PRIVATE - ${Power_Libraries} - ) - - install(TARGETS ${Power_Name} DESTINATION ${CMAKE_INSTALL_LIBDIR}/dde-control-center/modules) -endif() -#--------------------------plugin-mouse-------------------------- -if (BUILD_PLUGIN) - set(Mouse_Name dcc-mouse-plugin) - file(GLOB_RECURSE MOUSE_SRCS - "src/plugin-mouse/window/*.cpp" - "src/plugin-mouse/operation/*.cpp" - "src/plugin-mouse/operation/qrc/mouse.qrc" - ) - - add_library(${Mouse_Name} MODULE - ${MOUSE_SRCS} - ) - - set(Mouse_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - ) - - target_include_directories(${Mouse_Name} PUBLIC - ${Mouse_Includes} - ) - - target_link_libraries(${Mouse_Name} PRIVATE - ${Mouse_Libraries} - ) - - install(TARGETS ${Mouse_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#-------------------------ut-dcc-mouse-plugin------------------------- -if (UNITTEST) - set(UT_Mouse_Name ut-dcc-mouse-plugin) - file(GLOB_RECURSE UT_MOUSE_SRCS - "tests/plugin-mouse/*.cpp" - ) - - add_executable(${UT_Mouse_Name} - ${MOUSE_SRCS} - ${UT_MOUSE_SRCS} - ) - - # 用于测试覆盖率的编译条件 - target_compile_options(${UT_Mouse_Name} PRIVATE ${UT_COMPILER}) - - - target_link_libraries(${UT_Mouse_Name} PRIVATE - ${Mouse_Libraries} - ${Test_Libraries} - ) - gtest_discover_tests(${UT_Mouse_Name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -endif() -#--------------------------plugin-commoninfo-------------------------- -if (BUILD_PLUGIN) - set(CommonInfo_Name dcc-commoninfo-plugin) - pkg_check_modules(DEEPIN_PW_CHECK REQUIRED libdeepin_pw_check) - file(GLOB_RECURSE COMMONINFO_SRCS - "src/plugin-commoninfo/window/*.cpp" - "src/plugin-commoninfo/operation/*.cpp" - "src/plugin-commoninfo/operation/qrc/commoninfo.qrc" - ) - - add_library(${CommonInfo_Name} MODULE - ${COMMONINFO_SRCS} - ) - set(CommonInfo_Includes - ${DEEPIN_PW_CHECK_INCLUDE_DIRS} - ) - set(CommonInfo_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - ${DEEPIN_PW_CHECK_LIBRARIES} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - ) - - - target_include_directories(${CommonInfo_Name} PUBLIC - ${CommonInfo_Includes} - ) - - target_link_libraries(${CommonInfo_Name} PRIVATE - ${CommonInfo_Libraries} - ) - - install(TARGETS ${CommonInfo_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#-------------------------ut-dcc-commoninfo-plugin------------------------- -if (UNITTEST) - set(UT_CommonInfo_Name ut-dcc-commoninfo-plugin) - file(GLOB_RECURSE UT_COMMONINFO_SRCS - "tests/plugin-commoninfo/*.cpp" - ) - - add_executable(${UT_CommonInfo_Name} - ${COMMONINFO_SRCS} - ${UT_COMMONINFO_SRCS} - ) - - # 用于测试覆盖率的编译条件 - target_compile_options(${UT_CommonInfo_Name} PRIVATE ${UT_COMPILER}) - - target_include_directories(${UT_CommonInfo_Name} PUBLIC - ${CommonInfo_Includes} - ) - - target_link_libraries(${UT_CommonInfo_Name} PRIVATE - ${CommonInfo_Libraries} - ${Test_Libraries} - ) - gtest_discover_tests(${UT_Dcc_Widgets_Name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -endif() - -#--------------------------dcc-bluetooth-plugin-------------------------- -if (BUILD_PLUGIN) - set(Bluetooth_Name dcc-bluetooth-plugin) - file(GLOB_RECURSE Bluetooth_SRCS - "src/plugin-bluetooth/window/*.cpp" - "src/plugin-bluetooth/operation/*.cpp" - "src/plugin-bluetooth/operation/qrc/bluetooth.qrc" - ) - - add_library(${Bluetooth_Name} MODULE - ${Bluetooth_SRCS} - ) - - set(Bluetooth_Includes - src/plugin-bluetooth/window - src/plugin-bluetooth/operation - ) - set(Bluetooth_Libraries - ${Interface_Name} - Qt::Widgets - Qt::DBus - Qt::Concurrent - Dtk::Widget - ${Dcc_Widgets_Name} - ) - target_include_directories(${Bluetooth_Name} PRIVATE - ${Bluetooth_Includes} - ) - - target_link_libraries(${Bluetooth_Name} PRIVATE - ${Bluetooth_Libraries} - ) - - install(TARGETS ${Bluetooth_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------dcc-defaultapp-plugin-------------------------- -if (BUILD_PLUGIN) - set(DefaultApp_Name dcc-defaultapp-plugin) - file(GLOB_RECURSE DefaultApp_SRCS - "src/plugin-defaultapp/window/*.cpp" - "src/plugin-defaultapp/window/widgets/*.cpp" - "src/plugin-defaultapp/operation/*.cpp" - "src/plugin-defaultapp/operation/qrc/defapp.qrc" - ) - pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt) - - add_library(${DefaultApp_Name} MODULE - ${DefaultApp_SRCS} - ) - - set(DefaultApp_Includes - src/plugin-defaultapp/window/widgets - src/plugin-defaultapp/operation - ) - set(DefaultApp_Libraries - ${Dcc_Widgets_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - PkgConfig::QGSettings - ${Dcc_Widgets_Name} - ) - target_include_directories(${DefaultApp_Name} PUBLIC - ${DefaultApp_Includes} - ) - - target_link_libraries(${DefaultApp_Name} PRIVATE - ${DefaultApp_Libraries} - ) - - install(TARGETS ${DefaultApp_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------dcc-datetime-plugin-------------------------- -if (BUILD_PLUGIN) - set(Datetime_Name dcc-datetime-plugin) - file(GLOB_RECURSE Datetime_SRCS - "src/plugin-datetime/window/*.cpp" - "src/plugin-datetime/operation/*.cpp" - "src/plugin-datetime/operation/qrc/datetime.qrc" - ) - - find_package(ICU COMPONENTS i18n uc) - - add_library(${Datetime_Name} MODULE - ${Datetime_SRCS} - ) - - set(Datetime_Includes - src/plugin-datetime/window - src/plugin-datetime/window/widgets - src/plugin-datetime/operation - ) - - set(Datetime_Libraries - ${Interface_Name} - Qt::Widgets - Qt::DBus - Qt::Concurrent - Dtk::Widget - ${Dcc_Widgets_Name} - ICU::i18n - ICU::uc - ) - - target_include_directories(${Datetime_Name} PRIVATE - ${Datetime_Includes} - ) - - target_link_libraries(${Datetime_Name} PRIVATE - ${Datetime_Libraries} - ) - - install(TARGETS ${Datetime_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------plugin-keyboard-------------------------- -if (BUILD_PLUGIN) - set(KeyBoard_Name dcc-keyboard-plugin) - file(GLOB_RECURSE KEYBOARD_SRCS - "src/plugin-keyboard/window/*.cpp" - "src/plugin-keyboard/operation/*.cpp" - "src/plugin-keyboard/operation/qrc/keyboard.qrc" - ) - if (DISABLE_LANGUAGE) - add_definitions(-DDCC_DISABLE_LANUGAGE) - endif() - add_library(${KeyBoard_Name} MODULE - ${KEYBOARD_SRCS} - ) - set(KeyBoard_Includes - src/plugin-keyboard - ) - set(KeyBoard_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Qt::Widgets - Qt::DBus - Qt::Concurrent - Dtk::Widget - ) - - target_include_directories(${KeyBoard_Name} PUBLIC - ${KeyBoard_Includes} - ) - - target_link_libraries(${KeyBoard_Name} PRIVATE - ${KeyBoard_Libraries} - ) - - install(TARGETS ${KeyBoard_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#-------------------------ut-dcc-keyboard-plugin------------------------- -if (UNITTEST) - set(UT_KeyBoard_Name ut-dcc-keyboard-plugin) - file(GLOB_RECURSE UT_KEYBOARD_SRCS - "tests/plugin-keyboard/*.cpp" - ) - - add_executable(${UT_KeyBoard_Name} - ${KEYBOARD_SRCS} - ${UT_KEYBOARD_SRCS} - ) - - # 用于测试覆盖率的编译条件 - target_compile_options(${UT_KeyBoard_Name} PRIVATE ${UT_COMPILER}) - - target_include_directories(${UT_KeyBoard_Name} PUBLIC - ${KeyBoard_Includes} - ) - - target_link_libraries(${UT_KeyBoard_Name} PRIVATE - ${KeyBoard_Libraries} - ${Test_Libraries} - ) - - gtest_discover_tests(${UT_KeyBoard_Name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -endif() -#--------------------------plugin-sound-------------------------- -if (BUILD_PLUGIN) - set(Sound_Name dcc-sound-plugin) - file(GLOB_RECURSE Sound_SRCS - "src/plugin-sound/window/*.cpp" - "src/plugin-sound/operation/*.cpp" - "src/plugin-sound/operation/qrc/sound.qrc" - ) - - add_library(${Sound_Name} MODULE - ${Sound_SRCS} - ) - - if (DISABLE_SOUND_ADVANCED) - target_compile_definitions(${Sound_Name} PUBLIC -DDCC_DISABLE_SOUND_ADVANCED) - endif() - - set(Sound_Includes - src/plugin-sound/operation - src/plugin-sound/window - ) - set(Sound_Libraries - ${Dcc_Widgets_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - Qt::Multimedia - ${Dcc_Widgets_Name} - ) - target_include_directories(${Sound_Name} PUBLIC - ${Sound_Includes} - ) - - target_link_libraries(${Sound_Name} PRIVATE - ${Sound_Libraries} - ) - - install(TARGETS ${Sound_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------plugin-authentication-------------------------- -if (BUILD_PLUGIN AND NOT DISABLE_AUTHENTICATION) - message(STATUS "===================================") - message(STATUS "") - message(STATUS "WILL BUILD dcc-authentication-plugin") - message(STATUS "") - message(STATUS "WILL BUILD dcc-authentication-plugin") - set(Authentication_Name dcc-authentication-plugin) - pkg_check_modules(DaReader REQUIRED dareader) - - file(GLOB_RECURSE Authentication_SRCS - "src/plugin-authentication/window/*.cpp" - "src/plugin-authentication/operation/*.cpp" - "src/plugin-authentication/operation/qrc/authentication.qrc" - ) - - add_library(${Authentication_Name} MODULE - ${Authentication_SRCS} - ) - - set(Authentication_Includes - ${DaReader_INCLUDE_DIRS} - src/plugin-authentication/operation - src/plugin-authentication/window - ) - set(Authentication_Libraries - ${Dcc_Widgets_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - ${Dcc_Widgets_Name} - ${DaReader_LIBRARIES} - ) - target_include_directories(${Authentication_Name} PUBLIC - ${Authentication_Includes} - ) - - target_link_libraries(${Authentication_Name} PRIVATE - ${Authentication_Libraries} - ) - - install(TARGETS ${Authentication_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------plugin-accounts-------------------------- -if (BUILD_PLUGIN) - find_package(PolkitQt5-1) - set(Accounts_Name dcc-accounts-plugin) - pkg_check_modules(DEEPIN_PW_CHECK libdeepin_pw_check) - file(GLOB_RECURSE ACCOUNTS_SRCS - "src/plugin-accounts/window/*.cpp" - "src/plugin-accounts/operation/*.cpp" - "src/plugin-accounts/operation/qrc/accounts.qrc" - ) - - add_library(${Accounts_Name} MODULE - ${ACCOUNTS_SRCS} - ) - set(Accounts_Includes - ${DEEPIN_PW_CHECK_INCLUDE_DIRS} - - src/plugin-accounts/ - ) - set(Accounts_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - ${DEEPIN_PW_CHECK_LIBRARIES} - Dtk::Widget - Qt::Svg - Qt::Widgets - Qt::DBus - Qt::Concurrent - PolkitQt5-1::Agent - ) - - target_include_directories(${Accounts_Name} PUBLIC - ${Accounts_Includes} - ) - - target_link_libraries(${Accounts_Name} PRIVATE - ${Accounts_Libraries} - ) - - install(TARGETS ${Accounts_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------plugin-display-------------------------- -if (BUILD_PLUGIN) - - function(ws_generate_local type input_file output_name) - pkg_get_variable(WAYLAND_SCANNER wayland-scanner wayland_scanner) - execute_process(COMMAND ${WAYLAND_SCANNER} - ${type}-header - ${input_file} - ${CMAKE_CURRENT_BINARY_DIR}/${output_name}.h - ) - - execute_process(COMMAND ${WAYLAND_SCANNER} - public-code - ${input_file} - ${CMAKE_CURRENT_BINARY_DIR}/${output_name}.c - ) - endfunction() - - find_package(PkgConfig REQUIRED) - pkg_check_modules(WaylandClient REQUIRED IMPORTED_TARGET wayland-client) - - ws_generate_local(client - ${CMAKE_CURRENT_SOURCE_DIR}/src/plugin-display/wayland/libwayqt/protocols/wlr-output-management-unstable-v1.xml - wlr-output-management-unstable-v1-client-protocol) - - ws_generate_local(client - ${CMAKE_CURRENT_SOURCE_DIR}/src/plugin-display/wayland/libwayqt/protocols/treeland-output-management.xml - treeland-output-management-client-protocol) - - file(GLOB_RECURSE LIBWAYQT_SRCS - "src/plugin-display/wayland/libwayqt/*.cpp" - "src/plugin-display/wayland/libwayqt/*.hpp" - ) - - add_library(libwayqt - OBJECT - ${LIBWAYQT_SRCS} - wlr-output-management-unstable-v1-client-protocol.c - treeland-output-management-client-protocol.c - ) - - target_include_directories(libwayqt - PUBLIC - "${CMAKE_CURRENT_SOURCE_DIR}/src/plugin-display/wayland/libwayqt" - PRIVATE - ${Qt5Gui_PRIVATE_INCLUDE_DIRS} - ) - - target_link_libraries(libwayqt - PUBLIC - Qt${QT_VERSION_MAJOR}::Core - Qt${QT_VERSION_MAJOR}::Gui - PkgConfig::WaylandClient - ) - - set(Display_Name dcc-display-plugin) - file(GLOB_RECURSE DISPLAY_SRCS - "src/plugin-display/window/*.cpp" - "src/plugin-display/operation/*.cpp" - "src/plugin-display/operation/qrc/display.qrc" - ) - - add_library(${Display_Name} MODULE - ${DISPLAY_SRCS} - ) - - set(Display_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Dtk::Widget - Qt::Svg - Qt::Widgets - Qt::DBus - Qt::Concurrent - $ - PkgConfig::WaylandClient - ) - - target_include_directories(${Display_Name} PUBLIC - src/plugin-display - ${Display_Includes} - $ - ) - - target_link_libraries(${Display_Name} PRIVATE - ${Display_Libraries} - ) - - install(TARGETS ${Display_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------dcc-personalization-plugin-------------------------- -if (BUILD_PLUGIN) - set(Personalization_Name dcc-personalization-plugin) - file(GLOB_RECURSE Personalization_SRCS - "src/plugin-personalization/window/*.cpp" - "src/plugin-personalization/operation/*.cpp" - "src/plugin-personalization/operation/qrc/personalization.qrc" - ) - - add_library(${Personalization_Name} MODULE - ${Personalization_SRCS} - ) - set(Personalization_Includes - src/plugin-personalization/window - src/plugin-personalization/operation - ) - set(Personalization_Libraries - ${Interface_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - ${Dcc_Widgets_Name} - ) - target_include_directories(${Personalization_Name} PRIVATE - ${Personalization_Includes} - ) - - target_link_libraries(${Personalization_Name} PRIVATE - ${Personalization_Libraries} - ) - - install(TARGETS ${Personalization_Name} DESTINATION ${MODULE_INSTALL_DIR}) - # install(FILES misc/developdocument.html DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/dde-control-center) -endif() -#--------------------------dcc-personalization-dock-plugin-------------------------- -if (BUILD_PLUGIN) - set(Plugin_Personalization_Dock_Name dcc-personalization-dock-plugin) - file(GLOB_RECURSE Plugin_Personalization_Dock_SRCS - "src/plugin-personalization-dock/window/*.cpp" - "src/plugin-personalization-dock/operation/*.cpp" - "src/plugin-personalization-dock/operation/qrc/resources.qrc" - ) - - add_library(${Plugin_Personalization_Dock_Name} MODULE - ${Plugin_Personalization_Dock_SRCS} - ) - - set(Plugin_Personalization_Dock_Includes - - src/plugin-personalization-dock/operation - ) - set(Plugin_Personalization_Dock_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - ) - target_include_directories(${Plugin_Personalization_Dock_Name} PUBLIC - ${Plugin_Personalization_Dock_Includes} - ) - - target_link_libraries(${Plugin_Personalization_Dock_Name} PRIVATE - ${Plugin_Personalization_Dock_Libraries} - ) - - install(TARGETS ${Plugin_Personalization_Dock_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------plugin-Update-------------------------- -if (BUILD_PLUGIN AND NOT DISABLE_UPDATE) - set(Update_Name dcc-update-plugin) - file(GLOB_RECURSE Update_SRCS - "src/plugin-update/window/*.cpp" - "src/plugin-update/operation/*.cpp" - "src/plugin-update/operation/qrc/update.qrc" - ) - - add_library(${Update_Name} MODULE - ${Update_SRCS} - ) - - set(Update_Includes - src/plugin-update/operation - src/plugin-update/window - ) - - set(Update_Libraries - ${Dcc_Widgets_Name} - Qt::Network - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - Qt::Multimedia - ${Dcc_Widgets_Name} - ) - - target_include_directories(${Update_Name} PUBLIC - ${Update_Includes} - ) - - target_link_libraries(${Update_Name} PRIVATE - ${Update_Libraries} - ) - - install(TARGETS ${Update_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() - -if (UNITTEST AND NOT DISABLE_UPDATE) - set(UT_Update_Name ut-dcc-update-plugin) - file(GLOB_RECURSE UT_UPDATE_SRC - "tests/plugin-update/*.cpp" - ) - - add_executable(${UT_Update_Name} - ${Update_SRCS} - ${UT_UPDATE_SRC} - ) - - target_compile_options(${UT_Update_Name} PRIVATE ${UT_COMPILER}) - - target_include_directories(${UT_Update_Name} PUBLIC - ${Update_Includes} - ) - - target_link_libraries(${UT_Update_Name} PRIVATE - ${Update_Libraries} - ${Test_Libraries} - ) - - gtest_discover_tests(${UT_Update_Name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) - -endif() -#--------------------------plugin-notification-------------------------- -if (BUILD_PLUGIN) - set(Notification_Name dcc-notification-plugin) - file(GLOB_RECURSE NOTIFICATION_SRCS - "src/plugin-notification/window/*.cpp" - "src/plugin-notification/operation/*.cpp" - "src/plugin-notification/operation/qrc/notification.qrc" - ) - - add_library(${Notification_Name} MODULE - ${NOTIFICATION_SRCS} - ) - - set(Notification_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Dtk::Widget - Qt::Svg - Qt::Widgets - Qt::DBus - Qt::Concurrent - ) - - - target_link_libraries(${Notification_Name} PRIVATE - ${Notification_Libraries} - ) - - install(TARGETS ${Notification_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#-------------------------ut-dcc-notification-plugin------------------------- - -# FIXME: this ut is wrong!! -# if (UNITTEST) -# set(UT_Notification_Name ut-dcc-notification-plugin) -# file(GLOB_RECURSE UT_NOTIFICATION_SRCS -# "tests/plugin-notification/*.cpp" -# ) -# -# add_executable(${UT_Notification_Name} -# ${NOTIFICATION_SRCS} -# ${UT_NOTIFICATION_SRCS} -# ) -# -# # 用于测试覆盖率的编译条件 -# target_compile_options(${UT_Notification_Name} PRIVATE ${UT_COMPILER}) -# -# target_include_directories(${UT_Notification_Name} PUBLIC -# ${Notification_Includes} -# ) -# -# target_link_libraries(${UT_Notification_Name} PRIVATE -# ${Notification_Libraries} -# ${Test_Libraries} -# ) -# -# gtest_discover_tests(${UT_Notification_Name} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}) -# endif() - -#--------------------------plugin-privacy-------------------------- -#if (BUILD_PLUGIN) -# set(Privacy_Name dcc-privacy-plugin) -# file(GLOB_RECURSE Privacy_SRCS -# "src/plugin-privacy/window/*.cpp" -# "src/plugin-privacy/operation/*.cpp" -# "src/plugin-privacy/operation/qrc/privacy.qrc" -# ) - -# add_library(${Privacy_Name} MODULE -# ${Privacy_SRCS} -# ) - -# set(Pricacy_Includes -# ${DtkWidget_INCLUDE_DIRS} -# Qt5::Widgets -# Qt5::DBus -# Qt5::Concurrent -# src/plugin-privacy/operation -# src/plugin-privacy/window -# ) -# set(Privacy_Libraries -# ${Dcc_Widgets_Name} -# ${DtkWidget_LIBRARIES} -# Qt5::Widgets -# Qt5::DBus -# Qt5::Concurrent -# ${Dcc_Widgets_Name} -# ) -# target_include_directories(${Privacy_Name} PUBLIC -# ${Pricacy_Includes} -# ) - -# target_link_libraries(${Privacy_Name} PRIVATE -# ${Privacy_Libraries} -# ) - -# install(TARGETS ${Privacy_Name} DESTINATION ${MODULE_INSTALL_DIR}) -#endif() -#--------------------------plugin-touchscreen-------------------------- -if (BUILD_PLUGIN) - set(Touchscreen_Name dcc-touchscreen-plugin) - file(GLOB_RECURSE TOUCHSCREEN_SRCS - "src/plugin-touchscreen/*.cpp" - "src/plugin-touchscreen/operation/qrc/touchscreen.qrc" - ) - - add_library(${Touchscreen_Name} MODULE - ${TOUCHSCREEN_SRCS} - ) - - set(Touchscreen_Includes - src/plugin-touchscreen/window - src/plugin-touchscreen/operation - ) - - set(Touchscreen_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Qt::Widgets - Qt::DBus - Qt::Concurrent - Dtk::Widget - ) - - target_include_directories(${Touchscreen_Name} PUBLIC - ${Touchscreen_Includes} - ) - - target_link_libraries(${Touchscreen_Name} PRIVATE - ${Touchscreen_Libraries} - ) - - install(TARGETS ${Touchscreen_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------plugin-wacom-------------------------- -if (BUILD_PLUGIN) - set(Wacom_Name dcc-wacom-plugin) - file(GLOB_RECURSE Wacom_SRCS - "src/plugin-wacom/window/*.cpp" - "src/plugin-wacom/operation/*.cpp" - "src/plugin-wacom/operation/qrc/wacom.qrc" - ) - - add_library(${Wacom_Name} MODULE - ${Wacom_SRCS} - ) - - set(Pricacy_Includes - src/plugin-wacom/operation - src/plugin-wacom/window - ) - set(Wacom_Libraries - ${Dcc_Widgets_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - Qt::Concurrent - ${Dcc_Widgets_Name} - ) - target_include_directories(${Wacom_Name} PUBLIC - ${Pricacy_Includes} - ) - - target_link_libraries(${Wacom_Name} PRIVATE - ${Wacom_Libraries} - ) - - install(TARGETS ${Wacom_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() -#--------------------------plugin-adapterv20tov23-------------------------- -if (BUILD_PLUGIN) - set(AdapterV20toV23_Name dcc-adapterv20tov23-plugin) - file(GLOB_RECURSE ADAPTERV20TOV23_SRCS - "src/plugin-adapterv20tov23/*.cpp" - ) - - add_library(${AdapterV20toV23_Name} MODULE - ${ADAPTERV20TOV23_SRCS} - ) - - set(AdapterV20toV23_Libraries - ${Dcc_Widgets_Name} - ${Interface_Name} - Dtk::Widget - Qt::Widgets - Qt::DBus - ) - - - target_link_libraries(${AdapterV20toV23_Name} PRIVATE - ${AdapterV20toV23_Libraries} - ) - - install(TARGETS ${AdapterV20toV23_Name} DESTINATION ${MODULE_INSTALL_DIR}) -endif() diff --git a/dcc-old/include/interface/hlistmodule.h b/dcc-old/include/interface/hlistmodule.h deleted file mode 100644 index 96297e043b..0000000000 --- a/dcc-old/include/interface/hlistmodule.h +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef HLISTMODULE_H -#define HLISTMODULE_H -#include "interface/moduleobject.h" - -namespace DCC_NAMESPACE { -class HListModulePrivate; - -class HListModule : public ModuleObject -{ - Q_OBJECT -public: - explicit HListModule(QObject *parent = nullptr); - explicit HListModule(const QString &name, - const QString &displayName = {}, - QObject *parent = nullptr); - explicit HListModule(const QString &name, - const QStringList &contentText, - QObject *parent = nullptr); - explicit HListModule(const QString &name, - const QString &displayName, - const QStringList &contentText, - QObject *parent = nullptr); - explicit HListModule(const QString &name, - const QString &displayName, - const QVariant &icon, - QObject *parent = nullptr); - explicit HListModule(const QString &name, - const QString &displayName, - const QString &description, - QObject *parent = nullptr); - explicit HListModule(const QString &name, - const QString &displayName, - const QString &description, - const QVariant &icon, - QObject *parent = nullptr); - explicit HListModule(const QString &name, - const QString &displayName, - const QString &description, - const QIcon &icon, - QObject *parent = nullptr); - explicit HListModule(const QString &name, - const QString &displayName, - const QString &description, - const QStringList &contentText, - const QVariant &icon, - QObject *parent = nullptr); - explicit HListModule(const ModuleInitContext &message, QObject *parent = nullptr); - ~HListModule() override; - - QWidget *page() override; - - inline DCC_MODULE_TYPE getClassID() const override { return HLISTLAYOUT; } - - DCC_DECLARE_PRIVATE(HListModule) -}; -} // namespace DCC_NAMESPACE -#endif // HLISTMODULE_H diff --git a/dcc-old/include/interface/moduleobject.h b/dcc-old/include/interface/moduleobject.h deleted file mode 100644 index 4c8539f86e..0000000000 --- a/dcc-old/include/interface/moduleobject.h +++ /dev/null @@ -1,330 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_MODULEOBJECT_H -#define DCC_MODULEOBJECT_H - -#include "namespace.h" - -#include -#include -#include - -using DCC_MODULE_TYPE = uint32_t; - -#define DCC_MODULE_HIERARCHY_BIT 0x80000000 -#define DCC_MODULE_GROUP_BIT 0x40000000 -#define DCC_MODULE_LEAF_BIT 0x20000000 -#define DCC_MODULE_LAYOUT_BIT 0x10000000 - -#define DCC_MODULE_LISTVIEW_BIT 0x08000000 -#define DCC_MODULE_ITEM_BIT 0x04000000 -#define DCC_MODULE_SETTINGSGROUP_BIT 0x02000000 -#define DCC_MODULE_HORIZONTAL_BIT 0x01000000 -#define DCC_MODULE_VERTICAL_BIT 0x00800000 - -#define DCC_MODULE_MAIN_BIT 0x00040000 -#define DCC_MODULE_CUSTOM_BIT 0x00020000 - -namespace DCC_NAMESPACE { -enum : DCC_MODULE_TYPE { - HIERARCHY_OBJECT = DCC_MODULE_HIERARCHY_BIT, - LEAF_OBJECT = DCC_MODULE_LEAF_BIT, - LISTVIEW = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_LISTVIEW_BIT, - ITEM = DCC_MODULE_LEAF_BIT | DCC_MODULE_ITEM_BIT, - SETTINGSGROUP = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_SETTINGSGROUP_BIT, - HORIZONTAL = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_HORIZONTAL_BIT, - MAINLAYOUT = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_MAIN_BIT, - HLISTLAYOUT = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_HORIZONTAL_BIT - | DCC_MODULE_LISTVIEW_BIT, - VLISTLAYOUT = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_VERTICAL_BIT - | DCC_MODULE_LISTVIEW_BIT, - PAGELAYOUT = DCC_MODULE_GROUP_BIT | DCC_MODULE_LAYOUT_BIT | DCC_MODULE_VERTICAL_BIT, - CUSTOM_OBJECT = DCC_MODULE_CUSTOM_BIT, -}; - -class ModuleObjectPrivate; - -/** - * @brief ModuleInitContext 作为初始化传入的结构体,其中name和displayName 必须有数值 - * 这个结构体保存了所有初始化的信息 - */ - -struct ModuleInitContext -{ - QString name; - QString displayName; - QStringList contentText; - QVariant icon; - QString description; -}; - -/** - * @brief ModuleObject作为规范每个Module的接口,每个Module必须提供其基本的信息 - */ -class ModuleObject : public QObject -{ - Q_OBJECT - Q_PROPERTY(QString name READ name WRITE setName NOTIFY moduleDataChanged) - Q_PROPERTY(QString displayName READ displayName WRITE setDisplayName NOTIFY displayNameChanged) - Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY moduleDataChanged) - Q_PROPERTY( - QStringList contentText READ contentText WRITE setContentText NOTIFY moduleDataChanged) - Q_PROPERTY(QVariant icon READ icon WRITE setIcon NOTIFY moduleDataChanged) - Q_PROPERTY(int badge READ badge WRITE setBadge NOTIFY moduleDataChanged) - - Q_PROPERTY(bool hidden READ isHidden WRITE setHidden NOTIFY stateChanged) - Q_PROPERTY(bool disabled READ isDisabled WRITE setDisabled NOTIFY stateChanged) - -public: - explicit ModuleObject(QObject *parent = nullptr); - explicit ModuleObject(const QString &name, - const QString &displayName = {}, - QObject *parent = nullptr); - explicit ModuleObject(const QString &name, - const QStringList &contentText, - QObject *parent = nullptr); - explicit ModuleObject(const QString &name, - const QString &displayName, - const QStringList &contentText, - QObject *parent = nullptr); - explicit ModuleObject(const QString &name, - const QString &displayName, - const QVariant &icon, - QObject *parent = nullptr); - explicit ModuleObject(const QString &name, - const QString &displayName, - const QString &description, - QObject *parent = nullptr); - explicit ModuleObject(const QString &name, - const QString &displayName, - const QString &description, - const QVariant &icon, - QObject *parent = nullptr); - explicit ModuleObject(const QString &name, - const QString &displayName, - const QString &description, - const QIcon &icon, - QObject *parent = nullptr); - explicit ModuleObject(const QString &name, - const QString &displayName, - const QString &description, - const QStringList &contentText, - const QVariant &icon, - QObject *parent = nullptr); - explicit ModuleObject(const ModuleInitContext &message, QObject *parent = nullptr); - virtual ~ModuleObject(); - /** - * @brief activePage 激活并返回page - * @param autoActive 是否自动调用active - * @return ModuleObject隐藏时返回nullptr,否则返回page返回的QWidget * - */ - virtual QWidget *activePage(bool autoActive = true); - -public Q_SLOTS: - /** - * @brief 当进入模块时,active会被调用,如无需通知则可不实现 - */ - virtual void active(); - /** - * @brief 每次被调均需new新的QWidget - * @return 返回自定义页面 - * @warning - * page返回的widget生命周期只是对应窗口显示的时候,即模块切换时就会被析构。ModuleObject的生命周期是从控制中心启动到关闭 - */ - virtual QWidget *page(); - /** - * @brief 当离开模块时,deactive会被调用,如无需通知则可不实现 - */ - virtual void deactive(); - -public: - QString name() const; - QString displayName() const; - QString description() const; - QStringList contentText() const; - QVariant icon() const; - int badge() const; - - bool isHidden() const; - bool isVisible() const; - bool isDisabled() const; - bool isEnabled() const; - /** - * @brief 获取状态标志 - * @return 对应状态位是否 - */ - bool getFlagState(uint32_t flag) const; - uint32_t getFlag() const; - - // 扩展标志,在VList和Page布局中放在最下面,横向排列 - bool extra() const; - void setExtra(bool value = true); - - // 是否参与搜索,默认参与搜索 - bool noSearch() const; - void setNoSearch(bool noSearch = true); - - /** - * @brief currentModule 当前active的子项 - * 当前active的子项变化时会触发currentModuleChanged信号, - * page与子项相关时需要处理currentModuleChanged信号 - * @return 当前active的子项 - */ - ModuleObject *currentModule() const; - /** - * @brief defultModule 默认active的子项 - * 当某个页面被active时,会通过defultModule去active子项 - * 当返回为nullptr时,不再递归active子项 - * ModuleObject类默认处理为返回第一个未隐藏的子项 - * @return 默认active的子项 - */ - virtual ModuleObject *defultModule(); - -public Q_SLOTS: - void setHidden(bool hidden); - void setVisible(bool visible); - void setDisabled(bool disabled); - void setEnabled(bool enabled); - void trigger(); - - // 名称,作为每个模块的唯一标识,不可为空 - virtual void setName(const QString &name); - // 显示名称,如菜单的名称,页面的标题等,为空则不显示 - virtual void setDisplayName(const QString &displayName); - // 描述,如主菜单的描述信息 - virtual void setDescription(const QString &description); - // 上下文数据,参与搜索,只可用于终结点:DisplayName -> ContentText(one of it) - virtual void setContentText(const QStringList &contentText); - virtual void addContentText(const QString &contentText); - virtual void addContentText(const QStringList &contentText); - // 图标,如主菜单的图标 - // 字符串类型,支持DDciIcon\QVariant,优先作为DDciIcon处理 - virtual void setIcon(const QVariant &icon); - virtual void setIcon(const QIcon &icon); - // 主菜单中的角标, 默认为0不显示,大于0显示 - virtual void setBadge(int badge); - /** - * @brief setFlagState 设置状态标志,状态标志共32位,高16位为预留,低16位可根据需要设置 - * @param flag 需要设置的状态位 - * @param state true 置位 false 复位 - */ - virtual void setFlagState(uint32_t flag, bool state); - /** - * @brief setCurrentModule 设置当前active的子项 - * @param child 当前active的子项 - */ - void setCurrentModule(ModuleObject *child); - -Q_SIGNALS: - /** - * @brief 基本信息改变后发送此信号 - */ - void moduleDataChanged(); - /** - * @brief displayName改变后发送此信号 - */ - void displayNameChanged(const QString &displayName); - /** - * @brief stateChanged 状态标志变化 (可见、禁用等) - * @param flag - * @param state - */ - void stateChanged(uint32_t flag, bool state); - /** - * @brief childStateChanged 子项状态标志变化 (可见、禁用等) - * @param child 子项 - * @param flag 标志 - * @param state 变化后值 - */ - void childStateChanged(ModuleObject *const child, uint32_t flag, bool state); - /** - * @brief 删除child前触发 - */ - void removedChild(ModuleObject *const module); - /** - * @brief 插入child后触发 - */ - void insertedChild(ModuleObject *const module); - /** - * @brief childrens() 改变后必须发送此信号 - */ - void childrenSizeChanged(const int size); - /** - * @brief trigger触发该信号,框架收到信号会切换到该ModuleObject页 - */ - void triggered(); - /** - * @brief currentModuleChanged 当前激活的子项改变时会触发此信号 - * @param currentModule 当前激活的子项 - */ - void currentModuleChanged(ModuleObject *currentModule); - - void visibleChanged(); - -public: - ModuleObject *getParent(); - /** - * @brief 搜索子项,使用广度搜索 - * @param child 子项 - * @return 子项所在的层数,返回0表示module自己,-1表示未搜索到 - */ - int findChild(ModuleObject *const child); - - static int findChild(ModuleObject *const module, ModuleObject *const child); - - inline bool hasChildrens() { return !childrens().isEmpty(); } - - /** - * @brief 子项,不可直接使用QList进行增删改操作,应使用appendChild、removeChild、insertChild - * @return 子项列表 - */ - const QList &childrens(); - ModuleObject *children(const int index) const; - int getChildrenSize() const; - - virtual void appendChild(ModuleObject *const module); - virtual void removeChild(ModuleObject *const module); - virtual void removeChild(const int index); - virtual void insertChild(QList::iterator before, ModuleObject *const module); - virtual void insertChild(const int index, ModuleObject *const module); - - //! Returns current ModuleObject version - static unsigned GetCurrentVersion(); - /** - * @brief IsVisible 返回module是否显示,判断了配置项和程序设置项 - * @param module - * @return - */ - static bool IsVisible(DCC_NAMESPACE::ModuleObject *const module); - static bool IsHidden(DCC_NAMESPACE::ModuleObject *const module); - /** - * @brief IsHiddenFlag 判断标志是否为隐藏标志 - * @param flag 标志 - * @return true 有隐藏标志位 false 没有隐藏标志位 - */ - static bool IsHiddenFlag(uint32_t flag); - /** - * @brief IsEnabled 返回module是否可用,判断了配置项和程序设置项 - * @param module - * @return - */ - static bool IsEnabled(DCC_NAMESPACE::ModuleObject *const module); - static bool IsDisabled(DCC_NAMESPACE::ModuleObject *const module); - /** - * @brief IsDisabledFlag 判断标志是否为禁用标志 - * @param flag 标志 - * @return true 有禁用标志位 false 没有禁用标志位 - */ - static bool IsDisabledFlag(uint32_t flag); - - inline virtual DCC_MODULE_TYPE getClassID() const { return HIERARCHY_OBJECT; } - -private: - static int findChild(ModuleObject *const module, ModuleObject *const child, const int num); - DCC_DECLARE_PRIVATE(ModuleObject) -}; - -} // namespace DCC_NAMESPACE - -#endif // DCC_MODULEOBJECT_H diff --git a/dcc-old/include/interface/namespace.h b/dcc-old/include/interface/namespace.h deleted file mode 100644 index 119eb4a040..0000000000 --- a/dcc-old/include/interface/namespace.h +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -// clang-format off -#ifndef DCC_NAMESPACE_H -#define DCC_NAMESPACE_H - -#define DCC_NAMESPACE dccV23 - -//#define } using namespace DCC_NAMESPACE; - -//#define namespace DCC_NAMESPACE { namespace DCC_NAMESPACE { -//#define } } -//////////////////////////////// -#define DCC_DECLARE_PRIVATE(Class) \ -private: \ - QScopedPointer d_ptr##Class; \ - Q_DECLARE_PRIVATE_D(d_ptr##Class, Class)\ - Q_DISABLE_COPY(Class) - -#define DCC_INIT_PRIVATE(Class) d_ptr##Class(new Class##Private(this)) - -#endif // DCC_NAMESPACE_H -// clang-format on diff --git a/dcc-old/include/interface/pagemodule.h b/dcc-old/include/interface/pagemodule.h deleted file mode 100644 index b359a28ba0..0000000000 --- a/dcc-old/include/interface/pagemodule.h +++ /dev/null @@ -1,93 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PAGEMODULE_H -#define PAGEMODULE_H -#include "interface/moduleobject.h" - -#define DCC_PAGEMODULE_MAX_WIDTH 1120 - -namespace DCC_NAMESPACE { -class PageModulePrivate; - -class PageModule : public ModuleObject -{ - Q_OBJECT -public: - explicit PageModule(QObject *parent = nullptr); - explicit PageModule(const QString &name, - const QString &displayName = {}, - QObject *parent = nullptr); - explicit PageModule(const QString &name, - const QStringList &contentText, - QObject *parent = nullptr); - explicit PageModule(const QString &name, - const QString &displayName, - const QStringList &contentText, - QObject *parent = nullptr); - explicit PageModule(const QString &name, - const QString &displayName, - const QVariant &icon, - QObject *parent = nullptr); - explicit PageModule(const QString &name, - const QString &displayName, - const QString &description, - QObject *parent = nullptr); - explicit PageModule(const QString &name, - const QString &displayName, - const QString &description, - const QVariant &icon, - QObject *parent = nullptr); - explicit PageModule(const QString &name, - const QString &displayName, - const QString &description, - const QIcon &icon, - QObject *parent = nullptr); - explicit PageModule(const QString &name, - const QString &displayName, - const QString &description, - const QStringList &contentText, - const QVariant &icon, - QObject *parent = nullptr); - explicit PageModule(const ModuleInitContext &message, QObject *parent = nullptr); - ~PageModule() override; - - int spacing() const; - void setSpacing(const int spacing); - void getContentsMargins(int *left, int *top, int *right, int *bottom) const; - void setContentsMargins(int left, int top, int right, int bottom); - int maximumWidth() const; - void setMaximumWidth(int maxw); - int minimumWidth() const; - void setMinimumWidth(int minw); - // 无滚动条 - bool noScroll(); - void setNoScroll(bool value = true); - // 无下方弹簧 - bool noStretch(); - void setNoStretch(bool value = true); - - void appendChild(ModuleObject *const module) override; - void insertChild(QList::iterator before, ModuleObject *const module) override; - void insertChild(const int index, ModuleObject *const module) override; - void removeChild(ModuleObject *const module) override; - void removeChild(const int index) override; - - void appendChild(ModuleObject *const module, - int stretch, - Qt::Alignment alignment = Qt::Alignment()); - void insertChild(QList::iterator before, - ModuleObject *const module, - int stretch, - Qt::Alignment alignment = Qt::Alignment()); - void insertChild(const int index, - ModuleObject *const module, - int stretch, - Qt::Alignment alignment = Qt::Alignment()); - - QWidget *page() override; - - DCC_DECLARE_PRIVATE(PageModule) -}; -} // namespace DCC_NAMESPACE -#endif // PAGEMODULE_H diff --git a/dcc-old/include/interface/plugininterface.h b/dcc-old/include/interface/plugininterface.h deleted file mode 100644 index 06531edb62..0000000000 --- a/dcc-old/include/interface/plugininterface.h +++ /dev/null @@ -1,54 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_PLUGININTERFACE_H -#define DCC_PLUGININTERFACE_H - -#include "namespace.h" - -#include - -namespace DCC_NAMESPACE { -class ModuleObject; - -class PluginInterface : public QObject -{ - Q_OBJECT -public: - PluginInterface(QObject *parent = nullptr) - : QObject(parent) - { - } - - virtual ~PluginInterface() { } - - /** - * @brief 插件最基本的元素由 ModuleObject 组成,所以最少有一个 ModuleObject - * @brief 插件子项列表 - */ - virtual ModuleObject *module() = 0; - - /** - * @brief 标识插件信息 - * @return 插件名称 - */ - virtual QString name() const { return QString(); } - - /** - * @brief 插件必须知道其需要跟随的父ModuleObject的url ,默认为空则为一级插件 - * @return 跟随的父ModuleObject的url - */ - virtual QString follow() const { return QString(); } - - /** - * @brief 插件位置索引,相同索引则按加载顺序进行排序,先加载的往后顺延,默认追加到最后 - * @return 位置索引或前一个name - */ - virtual QString location() const { return QString(); } -}; - -} // namespace DCC_NAMESPACE - -Q_DECLARE_INTERFACE(DCC_NAMESPACE::PluginInterface, "org.deepin.dde.ControlCenter.Plugin/1.4") - -#endif // DCC_PLUGININTERFACE_H diff --git a/dcc-old/include/interface/vlistmodule.h b/dcc-old/include/interface/vlistmodule.h deleted file mode 100644 index 5f7d0b6937..0000000000 --- a/dcc-old/include/interface/vlistmodule.h +++ /dev/null @@ -1,61 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef VLISTMODULE_H -#define VLISTMODULE_H -#include "interface/moduleobject.h" - -namespace DCC_NAMESPACE { -class VListModulePrivate; - -class VListModule : public ModuleObject -{ - Q_OBJECT -public: - explicit VListModule(QObject *parent = nullptr); - explicit VListModule(const QString &name, - const QString &displayName = {}, - QObject *parent = nullptr); - explicit VListModule(const QString &name, - const QStringList &contentText, - QObject *parent = nullptr); - explicit VListModule(const QString &name, - const QString &displayName, - const QStringList &contentText, - QObject *parent = nullptr); - explicit VListModule(const QString &name, - const QString &displayName, - const QVariant &icon, - QObject *parent = nullptr); - explicit VListModule(const QString &name, - const QString &displayName, - const QString &description, - QObject *parent = nullptr); - explicit VListModule(const QString &name, - const QString &displayName, - const QString &description, - const QVariant &icon, - QObject *parent = nullptr); - explicit VListModule(const QString &name, - const QString &displayName, - const QString &description, - const QIcon &icon, - QObject *parent = nullptr); - explicit VListModule(const QString &name, - const QString &displayName, - const QString &description, - const QStringList &contentText, - const QVariant &icon, - QObject *parent = nullptr); - explicit VListModule(const ModuleInitContext &message, QObject *parent = nullptr); - - ~VListModule() override; - - QWidget *page() override; - - inline DCC_MODULE_TYPE getClassID() const override { return VLISTLAYOUT; } - - DCC_DECLARE_PRIVATE(VListModule) -}; -} // namespace DCC_NAMESPACE -#endif // VLISTMODULE_H diff --git a/dcc-old/include/widgets/accessibleinterface.h b/dcc-old/include/widgets/accessibleinterface.h deleted file mode 100644 index 6b3cdd60b7..0000000000 --- a/dcc-old/include/widgets/accessibleinterface.h +++ /dev/null @@ -1,531 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ACCESSIBLEINTERFACE_H -#define ACCESSIBLEINTERFACE_H - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define SEPARATOR "_" - -inline QString getAccessibleName(QWidget *w, QAccessible::Role r, const QString &fallback) -{ - const QString lowerFallback = fallback.toLower(); - // 避免重复生成 - static QMap< QObject *, QString > objnameMap; - if (!objnameMap[w].isEmpty()) - return objnameMap[w]; - - static QMap< QAccessible::Role, QList< QString > > accessibleMap; - QString oldAccessName = w->accessibleName().toLower(); - oldAccessName.replace(SEPARATOR, ""); - - // 按照类型添加固定前缀 - QMetaEnum metaEnum = QMetaEnum::fromType(); - QByteArray prefix = metaEnum.valueToKeys(r); - switch (r) { - case QAccessible::Form: prefix = "Form"; break; - case QAccessible::Button: prefix = "Btn"; break; - case QAccessible::StaticText: prefix = "Label"; break; - case QAccessible::EditableText: prefix = "Editable"; break; - case QAccessible::Slider: prefix = "Slider"; break; - default: break; - } - - // 再加上标识 - QString accessibleName = QString::fromLatin1(prefix) + SEPARATOR; - accessibleName += oldAccessName.isEmpty() ? lowerFallback : oldAccessName; - // 检查名称是否唯一 - if (accessibleMap[r].contains(accessibleName)) { - // 获取编号,然后+1 - int pos = accessibleName.indexOf(SEPARATOR); - int id = accessibleName.mid(pos + 1).toInt(); - - QString newAccessibleName; - do { - // 一直找到一个不重复的名字 - newAccessibleName = accessibleName + SEPARATOR + QString::number(++id); - } while (accessibleMap[r].contains(newAccessibleName)); - - accessibleMap[r].append(newAccessibleName); - objnameMap.insert(w, newAccessibleName); - - QObject::connect(w, &QWidget::destroyed, [ = ] (QObject *obj) { // 对象销毁后移除占用名称 - objnameMap.remove(obj); - accessibleMap[r].removeOne(newAccessibleName); - }); - return newAccessibleName; - } else { - accessibleMap[r].append(accessibleName); - objnameMap.insert(w, accessibleName); - - QObject::connect(w, &QWidget::destroyed, [ = ] (QObject *obj) { // 对象销毁后移除占用名称 - objnameMap.remove(obj); - accessibleMap[r].removeOne(accessibleName); - }); - return accessibleName; - } -} - -// 公共的功能 -#define FUNC_CREATE(classname,accessibletype,accessdescription) Accessible##classname(classname *w) \ - : QAccessibleWidget(w,accessibletype,#classname)\ - , m_w(w)\ - , m_description(accessdescription)\ - {}\ - -#define FUNC_TEXT(classname,accessiblename) inline QString Accessible##classname::text(QAccessible::Text t) const{\ - switch (t) {\ - case QAccessible::Name:\ - return getAccessibleName(m_w, this->role(), accessiblename);\ - case QAccessible::Description:\ - return m_description;\ - default:\ - return QString();\ - }\ - }\ - -// button控件特有功能 -#define FUNC_ACTIONNAMES(classname) inline QStringList Accessible##classname::actionNames() const{\ - if(!m_w->isEnabled())\ - return QStringList();\ - return QStringList() << pressAction()<< showMenuAction();\ - }\ - -#define FUNC_DOACTION(classname) inline void Accessible##classname::doAction(const QString &actionName){\ - if(actionName == pressAction())\ - {\ - QPointF localPos = m_w->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - qApp->sendEvent(m_w,&event);\ - QMouseEvent eventr(QEvent::MouseButtonRelease,localPos,Qt::LeftButton,Qt::LeftButton,Qt::NoModifier);\ - qApp->sendEvent(m_w,&eventr);\ - }\ - else if(actionName == showMenuAction())\ - {\ - QPointF localPos = m_w->geometry().center();\ - QMouseEvent event(QEvent::MouseButtonPress,localPos,Qt::RightButton,Qt::RightButton,Qt::NoModifier);\ - qApp->sendEvent(m_w,&event);\ - }\ - }\ - -// QLABEL控件特有功能 -#define FUNC_TEXT_(classname) inline QString Accessible##classname::text(int startOffset, int endOffset) const{\ - Q_UNUSED(startOffset)\ - Q_UNUSED(endOffset)\ - return m_w->text();\ - }\ - -#define FUNC_CHILD_LABLE(classname) inline QAccessibleInterface *Accessible##classname::child(int index) const{\ - return QAccessibleWidget::child(index);\ - }\ - -// EDITABLE控件特有功能 -#define FUNC_DELETETEXT(classname) inline void Accessible##classname::deleteText(int startOffset, int endOffset) {\ - m_w->setText(m_w->text().remove(startOffset, endOffset - startOffset));\ - }\ - -#define FUNC_INSERTTEXT(classname) inline void Accessible##classname::insertText(int startOffset, const QString &text) {\ - m_w->setText(m_w->text().insert(startOffset, text));\ - }\ - -#define FUNC_REPLACETEXT(classname) inline void Accessible##classname::replaceText(int startOffset, int endOffset, const QString &text) {\ - m_w->setText(m_w->text().replace(startOffset, endOffset - startOffset, text));\ - }\ - -#define FUNC_CHILD_EDITABLE(classname) QAccessibleInterface *Accessible##classname::child(int index) const{\ - return nullptr;\ - }\ - -#define FUNC_SELECTION(classname) inline void Accessible##classname::selection(int selectionIndex, int *startOffset, int *endOffset) const {\ - m_w->setSelection(*startOffset, *endOffset);\ - *startOffset = *endOffset = 0;\ - if (selectionIndex != 0)\ - return;\ - *startOffset = m_w->selectionStart();\ - *endOffset = *startOffset + m_w->selectedText().count();\ - }\ - -#define FUNC_SELECTIONCOUNT(classname) inline int Accessible##classname::selectionCount() const {\ - return m_w->hasSelectedText() ? 1 : 0;\ - }\ - -#define FUNC_ADDSELECTION(classname) inline void Accessible##classname::addSelection(int startOffset, int endOffset) {\ - setSelection(0, startOffset, endOffset);\ - }\ - -#define FUNC_REMOVESELECTION(classname) inline void Accessible##classname::removeSelection(int selectionIndex) {\ - if (selectionIndex != 0)\ - return;\ - m_w->deselect();\ - }\ - -#define FUNC_SETSELECTION(classname) inline void Accessible##classname::setSelection(int selectionIndex, int startOffset, int endOffset) {\ - if (selectionIndex != 0)\ - return;\ - m_w->setSelection(startOffset, endOffset - startOffset);\ - }\ - -#define FUNC_CURORPOSITION(classname) inline int Accessible##classname::cursorPosition() const {\ - return m_w->cursorPosition();\ - }\ - -#define FUNC_SETCURORPOSITION(classname) inline void Accessible##classname::setCursorPosition(int position) {\ - m_w->setCursorPosition(position);\ - }\ - -#define FUNC_TEXT_LineEdit(classname) inline QString Accessible##classname::text(int startOffset, int endOffset) const{\ - if (startOffset > endOffset)\ - return QString();\ - if (m_w->echoMode() != QLineEdit::Normal)\ - return QString();\ - return m_w->text().mid(startOffset, endOffset - startOffset);\ - }\ - -#define FUNC_TEXTBEFOREOFFSET(classname) QString Accessible##classname::textBeforeOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const {\ - if (m_w->echoMode() != QLineEdit::Normal) {\ - *startOffset = *endOffset = -1;\ - return QString();\ - }\ - if (offset == -2)\ - offset = cursorPosition();\ - return QAccessibleTextInterface::textBeforeOffset(offset, boundaryType, startOffset, endOffset);\ - }\ - -#define FUNC_TEXTAFTEROFFSET(classname) QString Accessible##classname::textAfterOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const {\ - if (lineEdit()->echoMode() != QLineEdit::Normal) {\ - *startOffset = *endOffset = -1;\ - return QString();\ - }\ - if (offset == -2)\ - offset = cursorPosition();\ - return QAccessibleTextInterface::textAfterOffset(offset, boundaryType, startOffset, endOffset);\ - }\ - -#define FUNC_TEXTATOFFSET(classname) QString Accessible##classname::textAtOffset(int offset, QAccessible::TextBoundaryType boundaryType, int *startOffset, int *endOffset) const {\ - if (m_w->echoMode() != QLineEdit::Normal) {\ - *startOffset = *endOffset = -1;\ - return QString();\ - }\ - if (offset == -2)\ - offset = cursorPosition();\ - return QAccessibleTextInterface::textAtOffset(offset, boundaryType, startOffset, endOffset);\ - }\ - -#define FUNC_CHARACTERCOUNT(classname) inline int Accessible##classname::characterCount() const {\ - return m_w->text().count();\ - }\ - -#define FUNC_CHARACTERRECT(classname) inline QRect Accessible##classname::characterRect(int offset) const {\ - Q_UNUSED(offset)\ - return QRect();\ - }\ - -#define FUNC_OFFSETATPOINT(classname) inline int Accessible##classname::offsetAtPoint(const QPoint &point) const {\ - QPoint p = m_w->mapFromGlobal(point);\ - return m_w->cursorPositionAt(p);\ - }\ - -#define FUNC_SCROLLTOSUBSTRING(classname) inline void Accessible##classname::scrollToSubstring(int startIndex, int endIndex) {\ - m_w->setCursorPosition(endIndex);\ - m_w->setCursorPosition(startIndex);\ - }\ - -#define FUNC_ATTRIBUTES(classname) inline QString Accessible##classname::attributes(int offset, int *startOffset, int *endOffset) const {\ - *startOffset = *endOffset = offset;\ - return QString();\ - }\ - -// Slider控件特有功能 -#define FUNC_CURRENTVALUE(classname) inline QVariant Accessible##classname::currentValue() const{\ - return m_w->value();\ - }\ - -#define FUNC_SETCURRENTVALUE(classname) inline void Accessible##classname::setCurrentValue(const QVariant &value){\ - return m_w->setValue(value.toInt());\ - }\ - -#define FUNC_MAXMUMVALUE(classname) inline QVariant Accessible##classname::maximumValue() const{\ - return QVariant(m_w->maximum());\ - }\ - -#define FUNC_FUNC_MINIMUMVALUE(classname) inline QVariant Accessible##classname::minimumValue() const{\ - return QVariant(m_w->minimum());\ - }\ - -#define FUNC_FUNC_MINIMUMSTEPSIZE(classname) inline QVariant Accessible##classname::minimumStepSize() const{\ - return QVariant(m_w->singleStep());\ - }\ - -#define SET_FORM_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ - {\ - public:\ - FUNC_CREATE(classname,QAccessible::Form,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - void *interface_cast(QAccessible::InterfaceType t) override{\ - switch (t) {\ - case QAccessible::ActionInterface:\ - return static_cast(this);\ - default:\ - return nullptr;\ - }\ - }\ - private:\ - classname *m_w;\ - QString m_description;\ - };\ - FUNC_TEXT(classname,accessiblename)\ - -#define SET_BUTTON_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget\ - {\ - public:\ - FUNC_CREATE(classname,QAccessible::Button,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - void *interface_cast(QAccessible::InterfaceType t) override{\ - switch (t) {\ - case QAccessible::ActionInterface:\ - return static_cast(this);\ - default:\ - return nullptr;\ - }\ - }\ - QStringList actionNames() const override;\ - void doAction(const QString &actionName) override;\ - private:\ - classname *m_w;\ - QString m_description;\ - };\ - FUNC_TEXT(classname,accessiblename)\ - FUNC_ACTIONNAMES(classname)\ - FUNC_DOACTION(classname)\ - -#define SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,type,accessdescription) class Accessible##classname : public QAccessibleWidget, public QAccessibleTextInterface\ - {\ - public:\ - FUNC_CREATE(classname,type,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - void *interface_cast(QAccessible::InterfaceType t) override{\ - switch (t) {\ - case QAccessible::ActionInterface:\ - return static_cast(this);\ - case QAccessible::TextInterface:\ - return static_cast(this);\ - default:\ - return nullptr;\ - }\ - }\ - QAccessibleInterface *child(int index) const override;\ - QString text(int startOffset, int endOffset) const override;\ - void selection(int selectionIndex, int *startOffset, int *endOffset) const override {\ - Q_UNUSED(selectionIndex)\ - Q_UNUSED(startOffset)\ - Q_UNUSED(endOffset)\ - }\ - int selectionCount() const override { return 0; }\ - void addSelection(int startOffset, int endOffset) override {\ - Q_UNUSED(startOffset)\ - Q_UNUSED(endOffset)\ - }\ - void removeSelection(int selectionIndex) override {\ - Q_UNUSED(selectionIndex)\ - }\ - void setSelection(int selectionIndex, int startOffset, int endOffset) override {\ - Q_UNUSED(selectionIndex)\ - Q_UNUSED(startOffset)\ - Q_UNUSED(endOffset)\ - }\ - int cursorPosition() const override { return 0; }\ - void setCursorPosition(int position) override {\ - Q_UNUSED(position)\ - }\ - int characterCount() const override { return 0; }\ - QRect characterRect(int offset) const override { \ - Q_UNUSED(offset)\ - return QRect();\ - }\ - int offsetAtPoint(const QPoint &point) const override { \ - Q_UNUSED(point)\ - return 0; \ - }\ - void scrollToSubstring(int startIndex, int endIndex) override {\ - Q_UNUSED(startIndex)\ - Q_UNUSED(endIndex)\ - }\ - QString attributes(int offset, int *startOffset, int *endOffset) const override {\ - Q_UNUSED(startOffset)\ - Q_UNUSED(offset)\ - Q_UNUSED(endOffset)\ - return QString(); \ - }\ - private:\ - classname *m_w;\ - QString m_description;\ - };\ - FUNC_TEXT(classname,accessiblename)\ - FUNC_TEXT_(classname)\ - -#define SET_SLIDER_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget, public QAccessibleValueInterface\ - {\ - public:\ - FUNC_CREATE(classname,QAccessible::Slider,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - void *interface_cast(QAccessible::InterfaceType t) override{\ - switch (t) {\ - case QAccessible::ActionInterface:\ - return static_cast(this);\ - case QAccessible::ValueInterface:\ - return static_cast(this);\ - default:\ - return nullptr;\ - }\ - }\ - QVariant currentValue() const override;\ - void setCurrentValue(const QVariant &value) override;\ - QVariant maximumValue() const override;\ - QVariant minimumValue() const override;\ - QVariant minimumStepSize() const override { return QVariant(); }\ - private:\ - classname *m_w;\ - QString m_description;\ - };\ - FUNC_TEXT(classname,accessiblename)\ - FUNC_CURRENTVALUE(classname)\ - FUNC_SETCURRENTVALUE(classname)\ - FUNC_MAXMUMVALUE(classname)\ - FUNC_FUNC_MINIMUMVALUE(classname)\ - -#define SET_EDITABLE_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,accessdescription) class Accessible##classname : public QAccessibleWidget, public QAccessibleEditableTextInterface, public QAccessibleTextInterface\ - {\ - public:\ - FUNC_CREATE(classname,QAccessible::EditableText,accessdescription)\ - QString text(QAccessible::Text t) const override;\ - QAccessibleInterface *child(int index) const override { \ - Q_UNUSED(index) \ - return nullptr; \ - }\ - void *interface_cast(QAccessible::InterfaceType t) override{\ - switch (t) {\ - case QAccessible::ActionInterface:\ - return static_cast(this);\ - case QAccessible::TextInterface:\ - return static_cast(this);\ - case QAccessible::EditableTextInterface:\ - return static_cast(this);\ - default:\ - return nullptr;\ - }\ - }\ - QAccessible::State state() const override {\ - QAccessible::State state;\ - state.editable = 1;\ - return state;\ - }\ - QString text(int startOffset, int endOffset) const override;\ - void selection(int selectionIndex, int *startOffset, int *endOffset) const override;\ - int selectionCount() const override;\ - void addSelection(int startOffset, int endOffset) override;\ - void removeSelection(int selectionIndex) override;\ - void setSelection(int selectionIndex, int startOffset, int endOffset) override;\ - int cursorPosition() const override;\ - void setCursorPosition(int position) override;\ - int characterCount() const override;\ - QRect characterRect(int offset) const override;\ - int offsetAtPoint(const QPoint &point) const override;\ - void scrollToSubstring(int startIndex, int endIndex) override;\ - QString attributes(int offset, int *startOffset, int *endOffset) const override;\ - void insertText(int offset, const QString &text) override;\ - void deleteText(int startOffset, int endOffset) override;\ - void replaceText(int startOffset, int endOffset, const QString &text) override;\ - private:\ - classname *m_w;\ - QString m_description;\ - };\ - FUNC_TEXT(classname,accessiblename)\ - FUNC_TEXT_LineEdit(classname)\ - FUNC_DELETETEXT(classname)\ - FUNC_INSERTTEXT(classname)\ - FUNC_REPLACETEXT(classname)\ - FUNC_SELECTION(classname)\ - FUNC_SELECTIONCOUNT(classname)\ - FUNC_ADDSELECTION(classname)\ - FUNC_REMOVESELECTION(classname)\ - FUNC_SETSELECTION(classname)\ - FUNC_CURORPOSITION(classname)\ - FUNC_SETCURORPOSITION(classname)\ - FUNC_CHARACTERCOUNT(classname)\ - FUNC_CHARACTERRECT(classname)\ - FUNC_OFFSETATPOINT(classname)\ - FUNC_SCROLLTOSUBSTRING(classname)\ - FUNC_ATTRIBUTES(classname)\ - -#define USE_ACCESSIBLE(classnamestring,classname) if (classnamestring == QLatin1String(#classname) && object && object->isWidgetType())\ - {\ - interface = new Accessible##classname(static_cast(object));\ - }\ - -// [指定objectname]---适用同一个类,但objectname不同的情况 -#define USE_ACCESSIBLE_BY_OBJECTNAME(classnamestring,classname,objectname) if (classnamestring == QLatin1String(#classname) && object && (object->objectName() == objectname) && object->isWidgetType())\ - {\ - interface = new Accessible##classname(static_cast(object));\ - }\ - -/*******************************************简化使用*******************************************/ - -class AccessibleFactoryBase -{ -public: - explicit AccessibleFactoryBase() {} - virtual ~AccessibleFactoryBase() {} - virtual QAccessibleInterface* createObject(QObject *object) = 0; -}; - -class AccessibleFactoryManager -{ -public: - static AccessibleFactoryBase * RegisterAccessibleFactory(const char *factoryName,AccessibleFactoryBase *factory); -}; - -#define FactoryMacro(Key,ClassName)\ -class FactoryAccessible##ClassName :public AccessibleFactoryBase\ -{\ - private:\ - static AccessibleFactoryBase* s_Accessible##ClassName##instance;\ - public:\ - virtual QAccessibleInterface* createObject(QObject *object) override\ - { return new Accessible##ClassName(static_cast(object));}\ -};\ -inline AccessibleFactoryBase* FactoryAccessible##ClassName::s_Accessible##ClassName##instance = AccessibleFactoryManager::RegisterAccessibleFactory(Key, new FactoryAccessible##ClassName()); - -///////////////////////////////////////////////// -#define SET_FORM_ACCESSIBLE(classname,accessiblename) SET_FORM_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")\ -FactoryMacro(#classname, classname) - -#define SET_BUTTON_ACCESSIBLE(classname,accessiblename) SET_BUTTON_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")\ -FactoryMacro(#classname, classname) - -#define SET_LABEL_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,QAccessible::StaticText,"") \ -FUNC_CHILD_LABLE(classname)\ -FactoryMacro(#classname, classname) - -#define SET_DTK_EDITABLE_ACCESSIBLE(classname,accessiblename) SET_LABEL_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,QAccessible::EditableText,"") \ -FUNC_CHILD_EDITABLE(classname)\ -FactoryMacro(#classname, classname) - -#define SET_SLIDER_ACCESSIBLE(classname,accessiblename) SET_SLIDER_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")\ -FactoryMacro(#classname, classname) - -#define SET_EDITABLE_ACCESSIBLE(classname,accessiblename) SET_EDITABLE_ACCESSIBLE_WITH_DESCRIPTION(classname,accessiblename,"")\ -FactoryMacro(#classname, classname) -///////////////////////////////////////////////// - -#endif // ACCESSIBLEINTERFACE_H diff --git a/dcc-old/include/widgets/buttontuple.h b/dcc-old/include/widgets/buttontuple.h deleted file mode 100644 index c2a27054e1..0000000000 --- a/dcc-old/include/widgets/buttontuple.h +++ /dev/null @@ -1,48 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include -#include - -class QPushButton; - -namespace DCC_NAMESPACE -{ -/** - * @brief ButtonTuple 提供一个按钮组合,可以通过leftButton和rightButton来访问按钮对象 - */ -class ButtonTuple : public QWidget -{ - Q_OBJECT -public: - enum ButtonType { - Normal = 0, // 默认按钮,无任何特殊处理 - Save = 1, // 使用DSuggestButton实现 - Delete = 2, // 使用DWarningButton实现 - }; - explicit ButtonTuple(ButtonType type = Normal, QWidget *parent = nullptr); - - void setButtonType(const ButtonType type); - QPushButton *leftButton(); - QPushButton *rightButton(); - - /** - * @brief 删除两个按钮间的空隙 - */ - void removeSpacing(); - -private: - void initUI(); - -Q_SIGNALS: - void leftButtonClicked(); - void rightButtonClicked(); - -private: - QPushButton *m_leftButton; - QPushButton *m_rightButton; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/include/widgets/comboxwidget.h b/dcc-old/include/widgets/comboxwidget.h deleted file mode 100644 index c72b631c46..0000000000 --- a/dcc-old/include/widgets/comboxwidget.h +++ /dev/null @@ -1,78 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" -#include - -QT_BEGIN_NAMESPACE -class QStringList; -class QLabel; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class AlertComboBox; - -class ComboxWidget : public SettingsItem -{ - Q_OBJECT - -public: - explicit ComboxWidget(QFrame *parent = nullptr); - explicit ComboxWidget(const QString &title, QFrame *parent = nullptr); - explicit ComboxWidget(QWidget *widget, QFrame *parent = nullptr); - - void setComboxOption(const QStringList &options); - void setCurrentText(const QString &curText); - void setCurrentIndex(const int index); - void setTitle(const QString &title); - - AlertComboBox *comboBox(); - -Q_SIGNALS: - void onIndexChanged(int index); - void onSelectChanged(const QString &selected); - void dataChanged(const QVariant &data); - void clicked(); - -protected: - void mouseReleaseEvent(QMouseEvent *event) override; - void resizeEvent(QResizeEvent *event) override; - -private: - QWidget *m_leftWidget; - AlertComboBox *m_switchComboBox; - QLabel *m_titleLabel; - QString m_str; -}; - -class AlertComboBox : public QComboBox -{ - Q_OBJECT - - Q_PROPERTY(bool isWarning READ isWarning WRITE setIsWarning) - -public: - explicit AlertComboBox(QWidget *parent = Q_NULLPTR); - ~AlertComboBox() override; - void setIsWarning(bool isWarning); - bool isWarning(); - bool eventFilter(QObject *o, QEvent *e) override; - -Q_SIGNALS: - void clicked(); - -protected Q_SLOTS: - void onValueChange(const QString &text); - -protected: - void paintEvent(QPaintEvent *e) override; - -private: - bool m_isWarning; -}; - -} diff --git a/dcc-old/include/widgets/dccdbusinterface.h b/dcc-old/include/widgets/dccdbusinterface.h deleted file mode 100644 index 13707a50f7..0000000000 --- a/dcc-old/include/widgets/dccdbusinterface.h +++ /dev/null @@ -1,44 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCCDBUSINTERFACE_H -#define DCCDBUSINTERFACE_H - -#include "interface/namespace.h" - -#include - -#include - -namespace DCC_NAMESPACE { - -class DCCDBusInterfacePrivate; - -class D_DECL_DEPRECATED_X("Use DDBusInteface") DCCDBusInterface : public QDBusAbstractInterface -{ - Q_OBJECT - -public: - explicit DCCDBusInterface(const QString &service, - const QString &path, - const QString &interface = QString(), - const QDBusConnection &connection = QDBusConnection::sessionBus(), - QObject *parent = nullptr); - virtual ~DCCDBusInterface() override; - - bool serviceValid() const; - QString suffix() const; - void setSuffix(const QString &suffix); - - QVariant property(const char *propname); - void setProperty(const char *propname, const QVariant &value); - -Q_SIGNALS: - void serviceValidChanged(const bool valid) const; - - DCC_DECLARE_PRIVATE(DCCDBusInterface) -}; - -} // namespace DCC_NAMESPACE - -#endif // DCCDBUSINTERFACE_H diff --git a/dcc-old/include/widgets/dcclistview.h b/dcc-old/include/widgets/dcclistview.h deleted file mode 100644 index 8b9143f474..0000000000 --- a/dcc-old/include/widgets/dcclistview.h +++ /dev/null @@ -1,21 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCCLISTVIEW_H -#define DCCLISTVIEW_H -#include "interface/namespace.h" - -#include - -namespace DCC_NAMESPACE { -class DCCListView : public DTK_WIDGET_NAMESPACE::DListView -{ - Q_OBJECT -public: - explicit DCCListView(QWidget *parent = nullptr); - -protected slots: - void updateGeometries() override; -}; -} -#endif // DCCLISTVIEW_H diff --git a/dcc-old/include/widgets/dccslider.h b/dcc-old/include/widgets/dccslider.h deleted file mode 100644 index b39a9ab535..0000000000 --- a/dcc-old/include/widgets/dccslider.h +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include -namespace DCC_NAMESPACE { - -class DCCSlider : public DTK_WIDGET_NAMESPACE::DSlider -{ - Q_OBJECT -public: - enum SliderType { - Normal, - Vernier, - Progress - }; - -public: - explicit DCCSlider(SliderType type = Normal, QWidget *parent = nullptr); - explicit DCCSlider(Qt::Orientation orientation, QWidget *parent = nullptr); - - inline DCCSlider *slider() const { return const_cast(this); } - QSlider *qtSlider(); - - void setType(SliderType type); - void setRange(int min, int max); - void setTickPosition(QSlider::TickPosition tick); - void setTickInterval(int ti); - void setSliderPosition(int Position); - void setAnnotations(const QStringList &annotations); - void setOrientation(Qt::Orientation orientation); - //当value大于0时,在slider中插入一条分隔线 - void setSeparateValue(int value = 0); - -protected: - void wheelEvent(QWheelEvent *e); - void paintEvent(QPaintEvent *e); -private: - QSlider::TickPosition tickPosition = QSlider::TicksBelow; - int m_separateValue; -}; - -} diff --git a/dcc-old/include/widgets/detailinfoitem.h b/dcc-old/include/widgets/detailinfoitem.h deleted file mode 100644 index 01fa2279db..0000000000 --- a/dcc-old/include/widgets/detailinfoitem.h +++ /dev/null @@ -1,51 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" -#include - -DWIDGET_BEGIN_NAMESPACE -class DLabel; -DWIDGET_END_NAMESPACE - -namespace DCC_NAMESPACE { - -inline const QString titleColor = QStringLiteral("#0082fa"); -inline const QString grayColor = QStringLiteral("#526a7f"); - -inline constexpr int titleFontSize = 14; -inline constexpr int dateFontSize = 12; -inline constexpr int detailFontSize = 8; -inline constexpr int linkFontSize = 10; - -class DetailInfoItem: public SettingsItem -{ - Q_OBJECT -public: - explicit DetailInfoItem(QWidget *parent = 0); - - void initUi(); - - void setDate(QString date); - void setTitle(QString title); - void setExplaintTitle(QString title); - void setLinkData(QString data); - void setDetailData(QString data); - -private Q_SLOTS: - void onThemeChanged(); - -private: - Dtk::Widget::DLabel *m_dateLabel; - Dtk::Widget::DLabel *m_explainTitle; - Dtk::Widget::DLabel *m_linkDataLabel; - Dtk::Widget::DLabel *m_dataLable; - Dtk::Widget::DLabel *m_linkLable; - Dtk::Widget::DLabel *m_title; -}; - -} - diff --git a/dcc-old/include/widgets/horizontalmodule.h b/dcc-old/include/widgets/horizontalmodule.h deleted file mode 100644 index bbb2b3b742..0000000000 --- a/dcc-old/include/widgets/horizontalmodule.h +++ /dev/null @@ -1,42 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef HORIZONTALMODULE_H -#define HORIZONTALMODULE_H - -#include "interface/moduleobject.h" -namespace DCC_NAMESPACE { -class HorizontalModulePrivate; -class HorizontalModule : public ModuleObject -{ - Q_OBJECT -public: - enum StretchType { - NoStretch = 0, - LeftStretch = 1, - RightStretch = 2, - AllStretch = LeftStretch | RightStretch, - }; - explicit HorizontalModule(const QString &name, const QString &displayName, QObject *parent = nullptr); - ~HorizontalModule() override; - - void setStretchType(StretchType stretchType); - void setSpacing(const int spacing); - - void appendChild(ModuleObject *const module) override; - void insertChild(QList::iterator before, ModuleObject *const module) override; - void insertChild(const int index, ModuleObject *const module) override; - void removeChild(ModuleObject *const module) override; - void removeChild(const int index) override; - - void appendChild(ModuleObject *const module, int stretch, Qt::Alignment alignment = Qt::Alignment()); - void insertChild(QList::iterator before, ModuleObject *const module, int stretch, Qt::Alignment alignment = Qt::Alignment()); - void insertChild(const int index, ModuleObject *const module, int stretch, Qt::Alignment alignment = Qt::Alignment()); - - QWidget *page() override; - inline DCC_MODULE_TYPE getClassID() const override { return HORIZONTAL; } - - DCC_DECLARE_PRIVATE(HorizontalModule) -}; -} -#endif // HORIZONTALMODULE_H diff --git a/dcc-old/include/widgets/itemmodule.h b/dcc-old/include/widgets/itemmodule.h deleted file mode 100644 index 9e2867bef3..0000000000 --- a/dcc-old/include/widgets/itemmodule.h +++ /dev/null @@ -1,90 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ITEMMODULE_H -#define ITEMMODULE_H -#include "interface/moduleobject.h" - -namespace DCC_NAMESPACE { -class ItemModulePrivate; -class ItemModule : public ModuleObject -{ - Q_OBJECT -public: - explicit ItemModule(QObject *parent = nullptr); - ItemModule(const QString &name, const QString &displayName, bool isTitle = true); - - template - ItemModule(const QString &name, const QString &displayName, FunT callback, bool leftVisible = true) - : ItemModule(name, displayName, false) - { - setLeftVisible(leftVisible); - setRightWidget(callback); - } - - template - ItemModule(const QString &name, const QString &displayName, classT *receiver, WidgetT *(classT::*callback)(ModuleObject *), bool leftVisible = true) - : ItemModule(name, displayName, false) - { - setLeftVisible(leftVisible); - setRightWidget(receiver, callback); - } - - template - ItemModule(const QString &name, const QString &displayName, classT *receiver, WidgetT *(classT::*callback)(), bool leftVisible = true) - : ItemModule(name, displayName, false) - { - setLeftVisible(leftVisible); - setRightWidget(receiver, callback); - } - - ~ItemModule() override; - - void setTitleItem(bool isTitle); - void setBackground(bool has); - void setWordWrap(bool on); - bool wordWrap() const; - void setLeftVisible(bool visible); - bool clickable() const; - void setClickable(const bool clickable); - - template - void setRightWidget(FunT callback) - { - auto fun = [](FunT callback, ModuleObject *module) { - return (callback)(module); - }; - setCallback(std::bind(fun, callback, this)); - } - - template - void setRightWidget(classT *receiver, WidgetT *(classT::*callback)(ModuleObject *)) - { - auto fun = [](classT *receiver, WidgetT *(classT::*callback)(ModuleObject *), ModuleObject *module) { - return (receiver->*callback)(module); - }; - setCallback(std::bind(fun, receiver, callback, this)); - } - - template - void setRightWidget(classT *receiver, WidgetT *(classT::*callback)()) - { - auto fun = [](classT *receiver, WidgetT *(classT::*callback)()) { - return (receiver->*callback)(); - }; - setCallback(std::bind(fun, receiver, callback)); - } - - QWidget *page() override; - inline DCC_MODULE_TYPE getClassID() const override { return ITEM; } - -Q_SIGNALS: - void clicked(QWidget *widget); - -private: - void setCallback(std::function callback); - - DCC_DECLARE_PRIVATE(ItemModule) -}; -} -#endif // ITEMMODULE_H diff --git a/dcc-old/include/widgets/lineeditwidget.h b/dcc-old/include/widgets/lineeditwidget.h deleted file mode 100644 index 58dd0522fe..0000000000 --- a/dcc-old/include/widgets/lineeditwidget.h +++ /dev/null @@ -1,76 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -#include - -DWIDGET_BEGIN_NAMESPACE -class DLineEdit; -DWIDGET_END_NAMESPACE - -class QLabel; -class QLineEdit; -class QHBoxLayout; - -namespace DCC_NAMESPACE { - -class ErrorTip : public Dtk::Widget::DArrowRectangle { - Q_OBJECT -public: - explicit ErrorTip(QWidget *parent = nullptr); - - void setText(QString text); - void clear(); - bool isEmpty() const; - -public Q_SLOTS: - void appearIfNotEmpty(); - -private: - QLabel *m_label; -}; - -class LineEditWidget : public SettingsItem -{ - Q_OBJECT - -public: - explicit LineEditWidget(QFrame *parent = nullptr); - explicit LineEditWidget(bool isPasswordMode, QWidget *parent = nullptr); - - QLineEdit *textEdit() const; - inline Dtk::Widget::DLineEdit *dTextEdit() const { return m_edit; } - QString text() const; - void setTitleVisible(const bool visible); - void addRightWidget(QWidget *widget); - void setReadOnly(const bool state); - void setIsErr(const bool err = true); - - bool isShowAlert() { return m_errTip->isVisible(); } - void showAlertMessage(const QString &message); - void hideAlertMessage(); - - inline QLabel *label() { return m_title; } - -public Q_SLOTS: - void setTitle(const QString &title); - void setText(const QString &text); - void setPlaceholderText(const QString &text); - -protected: - void mousePressEvent(QMouseEvent *e); - -protected: - QHBoxLayout *m_mainLayout; - -private: - QLabel *m_title; - Dtk::Widget::DLineEdit *m_edit; - ErrorTip *m_errTip; -}; - -} diff --git a/dcc-old/include/widgets/listviewmodule.h b/dcc-old/include/widgets/listviewmodule.h deleted file mode 100644 index baa308d81f..0000000000 --- a/dcc-old/include/widgets/listviewmodule.h +++ /dev/null @@ -1,26 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef LISTVIEWMODULE_H -#define LISTVIEWMODULE_H - -#include "interface/moduleobject.h" -namespace DCC_NAMESPACE { -class ListViewModulePrivate; -class ListViewModule : public ModuleObject -{ - Q_OBJECT -public: - explicit ListViewModule(const QString &name, const QString &displayName, QObject *parent = nullptr); - ~ListViewModule() override; - - QWidget *page() override; - inline DCC_MODULE_TYPE getClassID() const override { return LISTVIEW; } - -Q_SIGNALS: - void clicked(ModuleObject *module); - - DCC_DECLARE_PRIVATE(ListViewModule) -}; -} -#endif // LISTVIEWMODULE_H diff --git a/dcc-old/include/widgets/modulelistmodel.h b/dcc-old/include/widgets/modulelistmodel.h deleted file mode 100644 index 6a2d44c9be..0000000000 --- a/dcc-old/include/widgets/modulelistmodel.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MODULELISTMODEL_H -#define MODULELISTMODEL_H - -#include "interface/moduleobject.h" - -#include - -namespace DCC_NAMESPACE { -class ModuleListModelPrivate; -class ModuleListModel : public QAbstractItemModel -{ - Q_OBJECT -public: - explicit ModuleListModel(ModuleObject *parent = nullptr); - ~ModuleListModel() override; - - // Basic functionality: - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - QModelIndex parent(const QModelIndex &index) const override; - - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - Qt::ItemFlags flags(const QModelIndex &index) const override; - - DCC_DECLARE_PRIVATE(ModuleListModel) -}; -} -#endif // ModuleListModel_H diff --git a/dcc-old/include/widgets/moduleobjectitem.h b/dcc-old/include/widgets/moduleobjectitem.h deleted file mode 100644 index 5944e75a18..0000000000 --- a/dcc-old/include/widgets/moduleobjectitem.h +++ /dev/null @@ -1,38 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MODULEOBJECTITEM_H -#define MODULEOBJECTITEM_H - -#include "interface/moduleobject.h" - -#include -#include - -namespace DCC_NAMESPACE { -class ModuleObjectItemPrivate; -class ModuleObjectItem : public ModuleObject -{ - Q_OBJECT -public: - explicit ModuleObjectItem(const QString &name, const QString &displayName, QObject *parent = nullptr); - ~ModuleObjectItem() override; - - void setRightIcon(DTK_WIDGET_NAMESPACE::DStyle::StandardPixmap st, int index = -1); - void setRightIcon(const QString &icon, int index = -1); - void setRightIcon(const QIcon &icon, int index = -1); - void setRightText(const QString &text, int index = -1); - DTK_WIDGET_NAMESPACE::DViewItemAction *getRightItem(int index = -1); - void update(); - - virtual void setData(int role, const QVariant &value); - virtual QVariant data(int role) const; - inline DCC_MODULE_TYPE getClassID() const override { return ITEM; } - -Q_SIGNALS: - void clicked(); - - DCC_DECLARE_PRIVATE(ModuleObjectItem) -}; -} -#endif // MODULEOBJECTITEM_H diff --git a/dcc-old/include/widgets/settingsgroup.h b/dcc-old/include/widgets/settingsgroup.h deleted file mode 100644 index fa3e6bcf36..0000000000 --- a/dcc-old/include/widgets/settingsgroup.h +++ /dev/null @@ -1,65 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include - -#include - -DWIDGET_BEGIN_NAMESPACE -class DBackgroundGroup; -DWIDGET_END_NAMESPACE - -class QVBoxLayout; - -namespace DCC_NAMESPACE { - -class SettingsItem; -class SettingsHeaderItem; - -class SettingsGroup : public QFrame -{ - Q_OBJECT - -public: - enum BackgroundStyle { - ItemBackground = 0, - GroupBackground, - NoneBackground - }; - - explicit SettingsGroup(QFrame *parent = nullptr, BackgroundStyle bgStyle = ItemBackground); - explicit SettingsGroup(const QString &title, QFrame *parent = nullptr); - ~SettingsGroup(); - - SettingsHeaderItem *headerItem() const { return m_headerItem; } - void setHeaderVisible(const bool visible); - - SettingsItem *getItem(int index); - void insertWidget(QWidget *widget); - void insertItem(const int index, SettingsItem *item); - void appendItem(SettingsItem *item); - void appendItem(SettingsItem *item, BackgroundStyle bgStyle); - void removeItem(SettingsItem *item); - void moveItem(SettingsItem *item, const int index); - void setSpacing(const int spacing); - - int itemCount() const; - void clear(); - QVBoxLayout *getLayout() const { return m_layout; } - - void setBackgroundStyle(BackgroundStyle bgStyle); - BackgroundStyle backgroundStyle() const { return m_bgStyle; } - -protected: - void resizeEvent(QResizeEvent *event) override; -private: - BackgroundStyle m_bgStyle{ItemBackground}; - QVBoxLayout *m_layout; - SettingsHeaderItem *m_headerItem; - DTK_WIDGET_NAMESPACE::DBackgroundGroup *m_bggroup{nullptr}; -}; - -} diff --git a/dcc-old/include/widgets/settingsgroupmodule.h b/dcc-old/include/widgets/settingsgroupmodule.h deleted file mode 100644 index 709110f5fa..0000000000 --- a/dcc-old/include/widgets/settingsgroupmodule.h +++ /dev/null @@ -1,30 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SETTINGSGROUPMODULE_H -#define SETTINGSGROUPMODULE_H - -#include "interface/moduleobject.h" -#include "settingsgroup.h" -namespace DCC_NAMESPACE { -class SettingsGroupModulePrivate; -class SettingsGroupModule : public ModuleObject -{ - Q_OBJECT -public: - explicit SettingsGroupModule(const QString &name, const QString &displayName, QObject *parent = nullptr); - ~SettingsGroupModule() override; - - void setHeaderVisible(const bool visible); - void setSpacing(const int spacing); - void setBackgroundStyle(SettingsGroup::BackgroundStyle bgStyle); - SettingsGroup::BackgroundStyle backgroundStyle() const; - void setSizePolicy(QSizePolicy::Policy hor, QSizePolicy::Policy ver); - - QWidget *page() override; - inline DCC_MODULE_TYPE getClassID() const override { return SETTINGSGROUP; } - - DCC_DECLARE_PRIVATE(SettingsGroupModule) -}; -} -#endif // SETTINGSGROUPMODULE_H diff --git a/dcc-old/include/widgets/settingshead.h b/dcc-old/include/widgets/settingshead.h deleted file mode 100644 index 3958c7bebb..0000000000 --- a/dcc-old/include/widgets/settingshead.h +++ /dev/null @@ -1,52 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -#include - -DWIDGET_BEGIN_NAMESPACE -class DCommandLinkButton; -DWIDGET_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class TitleLabel; -class SettingsHead : public SettingsItem -{ - Q_OBJECT - -public: - enum State { - Edit, - Cancel - }; - -public: - explicit SettingsHead(QFrame *parent = nullptr); - - void setTitle(const QString &title); - void setEditEnable(bool state = true); - -public Q_SLOTS: - void toEdit(); - void toCancel(); - -Q_SIGNALS: - void editChanged(bool edit); - -private Q_SLOTS: - void refershButton(); - void onClicked(); - -private: - TitleLabel *m_title; - DTK_WIDGET_NAMESPACE::DCommandLinkButton *m_edit; - - State m_state; -}; - -} diff --git a/dcc-old/include/widgets/settingsheaderitem.h b/dcc-old/include/widgets/settingsheaderitem.h deleted file mode 100644 index 62a500b5dc..0000000000 --- a/dcc-old/include/widgets/settingsheaderitem.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -class QHBoxLayout; - -namespace DCC_NAMESPACE { - -class TitleLabel; -class SettingsHeaderItem : public SettingsItem -{ - Q_OBJECT - -public: - explicit SettingsHeaderItem(QWidget *parent = 0); - - TitleLabel *textLabel() const { return m_headerText; } - QHBoxLayout *layout() const { return m_mainLayout; } - - void setTitle(const QString &title); - void setRightWidget(QWidget *widget); - -private: - QHBoxLayout *m_mainLayout; - TitleLabel *m_headerText; -}; - -} diff --git a/dcc-old/include/widgets/settingsitem.h b/dcc-old/include/widgets/settingsitem.h deleted file mode 100644 index 00126f6646..0000000000 --- a/dcc-old/include/widgets/settingsitem.h +++ /dev/null @@ -1,44 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include -namespace DCC_NAMESPACE { - -class SettingsItem : public QFrame -{ - Q_OBJECT - Q_PROPERTY(bool isErr READ isErr DESIGNABLE true SCRIPTABLE true) - -public: - explicit SettingsItem(QWidget *parent = nullptr); - - bool isErr() const; - virtual void setIsErr(const bool err = true); - - void addBackground(); - void removeBackground(); - - bool clickable() const; - void setClickable(const bool clickable); - -Q_SIGNALS: - void clicked(QWidget *widget); - -protected: - void resizeEvent(QResizeEvent *event) override; - void paintEvent(QPaintEvent *event) override; - void enterEvent(QEvent *event) override; - void leaveEvent(QEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; - -private: - bool m_isErr; - bool m_hasBack; - bool m_hover; - bool m_clickable; -}; - -} diff --git a/dcc-old/include/widgets/switchwidget.h b/dcc-old/include/widgets/switchwidget.h deleted file mode 100644 index 22de01bba3..0000000000 --- a/dcc-old/include/widgets/switchwidget.h +++ /dev/null @@ -1,73 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" -#include -#include - -DWIDGET_BEGIN_NAMESPACE -class DSwitchButton; -DWIDGET_END_NAMESPACE - -QT_BEGIN_NAMESPACE -class QHBoxLayout; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class SwitchLabel : public QLabel -{ - Q_OBJECT - -public: - explicit SwitchLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); - inline QSize actualSize() { return m_actualSize; } - -protected: - void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; - -private: - QSize m_actualSize; - QString m_sourceText; -}; - -class SwitchWidget : public SettingsItem -{ - Q_OBJECT - -public: - // explicit SwitchWidget(QWidget *parent = nullptr); - explicit SwitchWidget(const QString &title, QWidget *parent = nullptr); - explicit SwitchWidget(QWidget *parent = nullptr, QWidget *widget = nullptr); - - void setChecked(const bool checked = true); - QString title() const; - void setTitle(const QString &title); - bool checked() const; - - void setLeftWidget(QWidget *widget); - QWidget *leftWidget() const { return m_leftWidget; } - QHBoxLayout* getMainLayout() { return m_mainLayout; } - -public: - inline DTK_WIDGET_NAMESPACE::DSwitchButton *switchButton() const { return m_switchBtn; } - -Q_SIGNALS: - void checkedChanged(const bool checked) const; - void clicked(); - -protected: - void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; - -private: - void init(); - - QWidget *m_leftWidget; - Dtk::Widget::DSwitchButton *m_switchBtn; - QHBoxLayout *m_mainLayout; -}; - -} diff --git a/dcc-old/include/widgets/titledslideritem.h b/dcc-old/include/widgets/titledslideritem.h deleted file mode 100644 index 0d9ea3e8f7..0000000000 --- a/dcc-old/include/widgets/titledslideritem.h +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -class QLabel; -class QSlider; -class QHBoxLayout; - -namespace DCC_NAMESPACE { - -class DCCSlider; - -class TitledSliderItem : public SettingsItem -{ - Q_OBJECT -public: - TitledSliderItem(QString title = QString(), QWidget *parent = nullptr); - - DCCSlider *slider() const; - void setAnnotations(const QStringList &annotations); - - QString valueLiteral() const; - void setValueLiteral(const QString &valueLiteral); - - QString title() const; - void setTitle(const QString &title); - - void setLeftIcon(const QIcon &leftIcon); - void setRightIcon(const QIcon &rightIcon); - void setIconSize(const QSize &size); - QHBoxLayout *getbottomlayout() { return m_bottomLayout; } - -private: - QLabel *m_titleLabel; - QLabel *m_valueLabel; - DCCSlider *m_slider; - QString m_valueLiteral; - QHBoxLayout *m_bottomLayout; -}; - -} diff --git a/dcc-old/include/widgets/titlelabel.h b/dcc-old/include/widgets/titlelabel.h deleted file mode 100644 index 8e8e211f16..0000000000 --- a/dcc-old/include/widgets/titlelabel.h +++ /dev/null @@ -1,23 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include - -namespace DCC_NAMESPACE -{ - -class TitleLabel : public Dtk::Widget::DLabel -{ - Q_OBJECT -public: - TitleLabel(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); - TitleLabel(const QString &text, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); - -protected: - bool event(QEvent *e) override; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/include/widgets/titlevalueitem.h b/dcc-old/include/widgets/titlevalueitem.h deleted file mode 100644 index ae8e660db2..0000000000 --- a/dcc-old/include/widgets/titlevalueitem.h +++ /dev/null @@ -1,93 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -#include - -QT_BEGIN_NAMESPACE -class QPushButton; -class QLabel; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE -{ - -class ItemTitleTipsLabel; - -class ResizeEventFilter : public QObject -{ - Q_OBJECT -public: - explicit ResizeEventFilter(QObject* parent = nullptr); -protected: - bool eventFilter(QObject *watched, QEvent *event); -}; - -class TitleValueItem : public SettingsItem -{ - Q_OBJECT - -public: - explicit TitleValueItem(QFrame *parent = nullptr); - ~TitleValueItem() override; - void setTitle(const QString& title); - void setValue(const QString& value); - void setWordWrap(const bool enable); - QString value() const; - void setValueAligment(const Qt::Alignment aligment); - void setValueBackground(bool showBackground); - -protected: - void resizeEvent(QResizeEvent *event) override; - -private: - QLabel* m_title; - ItemTitleTipsLabel *m_value; -}; - -class TitleAuthorizedItem: public SettingsItem -{ - Q_OBJECT - -public: - TitleAuthorizedItem(QFrame *parent = nullptr); - void setTitle(const QString& title); - void setValue(const QString& value); - void setWordWrap(bool enable); - void setButtonText(const QString &str); - void setValueForegroundRole(const QColor &color); - void setVisable(bool value); - -Q_SIGNALS: - //传递button的点击信号 - void clicked(); - -private: - QLabel* m_title; - DTK_WIDGET_NAMESPACE::DTipLabel *m_value; - QPushButton *m_pActivatorBtn; -}; - -class ItemTitleTipsLabel : public DTK_WIDGET_NAMESPACE::DTipLabel -{ - Q_OBJECT - -public: - explicit ItemTitleTipsLabel(const QString &text = QString(), QWidget *parent = nullptr); - ~ItemTitleTipsLabel() override; - void addBackground(); - void removeBackground(); - bool hasBackground() const; - -protected: - void paintEvent(QPaintEvent *event) override; - -private: - bool m_hasBackground; -}; - -} diff --git a/dcc-old/include/widgets/utils.h b/dcc-old/include/widgets/utils.h deleted file mode 100644 index 4e37a52761..0000000000 --- a/dcc-old/include/widgets/utils.h +++ /dev/null @@ -1,80 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UTILS_H -#define UTILS_H -#include "interface/namespace.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DCORE_USE_NAMESPACE - -inline const QMargins ZeroMargins(0, 0, 0, 0); - -inline constexpr int ComboxWidgetHeight = 48; -inline constexpr int SwitchWidgetHeight = 36; -inline constexpr int ComboxTitleWidth = 110; - -inline constexpr qint32 ActionIconSize=30;//大图标角标大小 -inline constexpr qint32 ActionListSize=26;//list图标角标大小 - -template -T valueByQSettings(const QStringList& configFiles, - const QString& group, - const QString& key, - const QVariant& failback) -{ - for (const QString& path : configFiles) { - QSettings settings(path, QSettings::IniFormat); - if (!group.isEmpty()) { - settings.beginGroup(group); - } - - const QVariant& v = settings.value(key); - if (v.isValid()) { - T t = v.value(); - return t; - } - } - - return failback.value(); -} - -inline QPixmap loadPixmap(const QString &path) -{ - qreal ratio = 1.0; - QPixmap pixmap; - - const qreal devicePixelRatio = qApp->devicePixelRatio(); - - if (!qFuzzyCompare(ratio, devicePixelRatio)) { - QImageReader reader; - reader.setFileName(qt_findAtNxFile(path, devicePixelRatio, &ratio)); - if (reader.canRead()) { - reader.setScaledSize(reader.size() * (devicePixelRatio / ratio)); - pixmap = QPixmap::fromImage(reader.read()); - pixmap.setDevicePixelRatio(devicePixelRatio); - } - } else { - pixmap.load(path); - } - - return pixmap; -} - - -#endif // UTILS_H diff --git a/dcc-old/include/widgets/widgetmodule.h b/dcc-old/include/widgets/widgetmodule.h deleted file mode 100644 index 6da44220eb..0000000000 --- a/dcc-old/include/widgets/widgetmodule.h +++ /dev/null @@ -1,57 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef WIDGETMODULE_H -#define WIDGETMODULE_H -#include "interface/moduleobject.h" - -class QWidget; - -template -class WidgetModule : public DCC_NAMESPACE::ModuleObject -{ -public: - template - WidgetModule(const QString &name, const QString &displayName, classT *receiver, void (classT::*callback)(T *), QObject *parent = nullptr) - : DCC_NAMESPACE::ModuleObject(name, displayName, parent) - { - connect(receiver, callback); - } - template - WidgetModule(const QString &name, const QString &displayName, FunT callback, QObject *parent = nullptr) - : DCC_NAMESPACE::ModuleObject(name, displayName, parent) - { - auto fun = [](QWidget *w, FunT callback) { - T *tWidget = static_cast(w); - (callback)(tWidget); - }; - m_callback = std::bind(fun, std::placeholders::_1, callback); - } - WidgetModule(const QString &name = QString(), const QString &displayName = QString(), QObject *parent = nullptr) - : DCC_NAMESPACE::ModuleObject(name, displayName, parent) - , m_callback(nullptr) - { - } - template - void connect(classT *receiver, void (classT::*callback)(T *)) - { - auto fun = [](QWidget *w, classT *receiver, void (classT::*callback)(T *)) { - T *tWidget = static_cast(w); - (receiver->*callback)(tWidget); - }; - m_callback = std::bind(fun, std::placeholders::_1, receiver, callback); - } - - virtual QWidget *page() override - { - QWidget *widget = new T(); - if (m_callback) - m_callback(widget); - return widget; - } - -private: - std::function m_callback; -}; - -#endif // WIDGETMODULE_H diff --git a/dcc-old/misc/translate_desktop2ts.sh b/dcc-old/misc/translate_desktop2ts.sh deleted file mode 100755 index 51479c3529..0000000000 --- a/dcc-old/misc/translate_desktop2ts.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/bin/bash - -DESKTOP_SOURCE_FILE=org.deepin.dde.control-center.desktop -DESKTOP_TS_DIR=../translations/desktop/ - -/usr/bin/deepin-desktop-ts-convert desktop2ts $DESKTOP_SOURCE_FILE $DESKTOP_TS_DIR diff --git a/dcc-old/misc/translate_generation.sh b/dcc-old/misc/translate_generation.sh deleted file mode 100755 index 8e5588adf1..0000000000 --- a/dcc-old/misc/translate_generation.sh +++ /dev/null @@ -1,11 +0,0 @@ -#!/bin/bash -# this file is used to auto-generate .qm file from .ts file. -# author: shibowen at linuxdeepin.com -export PATH=/usr/lib/qt5/bin:$PATH -ts_list=(`ls translations/*.ts`) - -for ts in "${ts_list[@]}" -do - printf "\nprocess ${ts}\n" - lrelease "${ts}" -done diff --git a/dcc-old/src/dcc-agent/main.c b/dcc-old/src/dcc-agent/main.c deleted file mode 100644 index fd7f7df7db..0000000000 --- a/dcc-old/src/dcc-agent/main.c +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-FileCopyrightText: 2024 - 2027 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include -#include -#include -#include -#include -#include - -int main(int argc, char *argv[]) -{ - int (*main_func)(int, char **); - char *error; - bool isOldDcc = false; - if (argc >= 1 && strcmp(argv[argc - 1], "n") == 0) { - isOldDcc = false; - argc = argc - 1; - } else if (argc >= 1 && strcmp(argv[argc - 1], "o") == 0) { - isOldDcc = true; - argc = argc - 1; - } - - // 加载共享库 - char *dccSoPath = isOldDcc ? OLD_DCC_SO_PATH : NEW_DCC_SO_PATH; - char *dccPath = isOldDcc ? OLD_DCC_PATH : NEW_DCC_PATH; - if (!dlopen(dccSoPath, RTLD_LAZY | RTLD_GLOBAL)) { - fprintf(stderr, "%s\n", dlerror()); - } - dlerror(); - void *handle = dlopen(dccPath, RTLD_LAZY); - if (!handle) { - fprintf(stderr, "%s\n", dlerror()); - return 1; - } - - // 清除之前可能存在的错误 - dlerror(); - - // 查找函数 - *(void **)(&main_func) = dlsym(handle, "main"); - - // 检查错误 - if ((error = dlerror()) != NULL) { - fprintf(stderr, "%s\n", error); - dlclose(handle); - return 1; - } - - // 使用函数 - int ret = (*main_func)(argc, argv); - - // 关闭共享库 - dlclose(handle); - return ret; -} diff --git a/dcc-old/src/frame/accessible.h b/dcc-old/src/frame/accessible.h deleted file mode 100644 index fc6c0d927b..0000000000 --- a/dcc-old/src/frame/accessible.h +++ /dev/null @@ -1,75 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "widgets/accessibleinterface.h" -#include "src/widgets/accessiblefactoryinterface.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/**************************************************************************************/ -// Qt控件 -SET_FORM_ACCESSIBLE(QWidget, m_w->objectName().isEmpty() ? "widget" : m_w->objectName()) -SET_BUTTON_ACCESSIBLE(QPushButton, m_w->text().isEmpty() ? "qpushbutton" : m_w->text()) -SET_EDITABLE_ACCESSIBLE(QLineEdit, m_w->text().isEmpty() ? "qlineedit" : m_w->text()) -SET_BUTTON_ACCESSIBLE(QToolButton, m_w->text().isEmpty() ? "qtoolbutton" : m_w->text()) -SET_SLIDER_ACCESSIBLE(QSlider, "qslider") -SET_FORM_ACCESSIBLE(QMenu, "qmenu") -SET_FORM_ACCESSIBLE(QFrame, "qframe") -SET_FORM_ACCESSIBLE(QListView, "qlistview") -SET_FORM_ACCESSIBLE(QListWidget, "qlistwidget") -SET_FORM_ACCESSIBLE(QScrollArea, "qscrollarea") -SET_FORM_ACCESSIBLE(QScrollBar, "QScrollBar") -SET_FORM_ACCESSIBLE(QComboBox, "QComboBox") -SET_FORM_ACCESSIBLE(QMainWindow, "QMainWindow") -SET_LABEL_ACCESSIBLE(QLabel, m_w->text().isEmpty() ? "qlabel" : m_w->text()) - -class AccessibleFactory : public AccessibleFactoryInterface -{ -public: - explicit AccessibleFactory() - : AccessibleFactoryInterface() - { - AccessibleFactoryInterface::RegisterInstance(this); - } - virtual ~AccessibleFactory() { } - virtual AccessibleFactoryBase *registerAccessibleFactory(const char *factoryName, AccessibleFactoryBase *factory) override - { - if (!m_factoryMap.contains(factoryName)) - m_factoryMap.insert(factoryName, factory); - return factory; - } - QAccessibleInterface *createObject(const QString &classname, QObject *object) - { - return m_factoryMap.contains(classname) ? m_factoryMap.value(classname)->createObject(object) : nullptr; - } - -private: - QMap m_factoryMap; -}; - -inline QAccessibleInterface *accessibleFactory(const QString &classname, QObject *object) -{ - QAccessibleInterface *interface = nullptr; - static AccessibleFactory * s_accessibleFactory = nullptr; - if (!s_accessibleFactory) - s_accessibleFactory = new AccessibleFactory(); - - if (object && object->isWidgetType()) - interface = s_accessibleFactory->createObject(classname.split("::").last(),object); - - return interface; -} diff --git a/dcc-old/src/frame/completerview.cpp b/dcc-old/src/frame/completerview.cpp deleted file mode 100644 index 6ce6c0ba24..0000000000 --- a/dcc-old/src/frame/completerview.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-FileCopyrightText: 2024 - 2027 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "completerview.h" - -DGUI_USE_NAMESPACE - -namespace DCC_NAMESPACE { -const int MARGIN = 8; -const int COMPACT_MARGIN = 4; - -CompleterView::CompleterView(QWidget *parent) - : DListView(parent) - , m_sizeMode(DGuiApplicationHelper::instance()->sizeMode()) -{ - connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::sizeModeChanged, this, [this](DGuiApplicationHelper::SizeMode sizeMode) { - if (sizeMode == m_sizeMode) - return; - - m_sizeMode = sizeMode; - updateViewportMargins(); - }); - - setHorizontalScrollBarPolicy(Qt::ScrollBarPolicy::ScrollBarAlwaysOff); - updateViewportMargins(); -} - -void CompleterView::updateViewportMargins() -{ - (m_sizeMode == DGuiApplicationHelper::CompactMode) ? setViewportMargins(0, COMPACT_MARGIN, 0, COMPACT_MARGIN) : setViewportMargins(0, MARGIN, 0, MARGIN); -} - -int CompleterView::margin() const -{ - const static int compactOffset = -1; - const static int normalOffset = 2; - return m_sizeMode == DGuiApplicationHelper::CompactMode ? COMPACT_MARGIN + compactOffset : MARGIN + normalOffset; -} -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/frame/completerview.h b/dcc-old/src/frame/completerview.h deleted file mode 100644 index 6d19d0ad7d..0000000000 --- a/dcc-old/src/frame/completerview.h +++ /dev/null @@ -1,24 +0,0 @@ -// SPDX-FileCopyrightText: 2024 - 2027 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef COMPLETERVIEW_H -#define COMPLETERVIEW_H -#include "interface/namespace.h" - -#include -#include - -namespace DCC_NAMESPACE { -class CompleterView : public Dtk::Widget::DListView -{ -public: - CompleterView(QWidget *parent = nullptr); - void updateViewportMargins(); - int margin() const; - -private: - Dtk::Gui::DGuiApplicationHelper::SizeMode m_sizeMode; -}; -} // namespace DCC_NAMESPACE - -#endif // COMPLETERVIEW_H diff --git a/dcc-old/src/frame/controlcenterdbusadaptor.cpp b/dcc-old/src/frame/controlcenterdbusadaptor.cpp deleted file mode 100644 index 180132712c..0000000000 --- a/dcc-old/src/frame/controlcenterdbusadaptor.cpp +++ /dev/null @@ -1,134 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "controlcenterdbusadaptor.h" -#include "mainwindow.h" -#include "interface/moduleobject.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -using namespace DCC_NAMESPACE; - -/* - * Implementation of adaptor class DBusControlCenter - */ - -ControlCenterDBusAdaptor::ControlCenterDBusAdaptor(MainWindow *parent) - : QDBusAbstractAdaptor(parent) -{ -} - -ControlCenterDBusAdaptor::~ControlCenterDBusAdaptor() -{ -} - -MainWindow *ControlCenterDBusAdaptor::parent() const -{ - return static_cast(QObject::parent()); -} - -const QRect ControlCenterDBusAdaptor::rect() const -{ - return parent()->geometry(); -} - -void ControlCenterDBusAdaptor::Exit() -{ - pid_t pid = getpid(); - qDebug() << "exit pid:" << pid; - QCoreApplication::quit(); -} - -void ControlCenterDBusAdaptor::Hide() -{ - parent()->hide(); -} - -void ControlCenterDBusAdaptor::Show() -{ - if (parent()->isMinimized() || !parent()->isVisible()) - parent()->showNormal(); - - parent()->activateWindow(); -} - -void ControlCenterDBusAdaptor::ShowHome() -{ - parent()->showPage("", MainWindow::UrlType::Name); - Show(); -} - -void ControlCenterDBusAdaptor::ShowPage(const QString &url) -{ - parent()->showPage(url); - Show(); -} - -void ControlCenterDBusAdaptor::Toggle() -{ - parent()->setVisible(!parent()->isVisible()); - if (parent()->isVisible()) - parent()->activateWindow(); -} - -QString ControlCenterDBusAdaptor::GetAllModule() -{ - return parent()->getAllModule(); -} - -DBusControlCenterGrandSearchService::DBusControlCenterGrandSearchService(MainWindow *parent) - : QDBusAbstractAdaptor(parent) - , m_autoExitTimer(new QTimer(this)) -{ - m_autoExitTimer->setInterval(10000); - m_autoExitTimer->setSingleShot(true); - connect(m_autoExitTimer, &QTimer::timeout, this, [this]() { - //当主界面show出来之后不再执行自动退出 - if (!this->parent()->isVisible()) - QCoreApplication::quit(); - }); - m_autoExitTimer->start(); -} - -DBusControlCenterGrandSearchService::~DBusControlCenterGrandSearchService() -{ -} - -MainWindow *DBusControlCenterGrandSearchService::parent() const -{ - return static_cast(QObject::parent()); -} -//匹配搜索结果 -QString DBusControlCenterGrandSearchService::Search(const QString json) -{ - QString val = parent()->GrandSearchSearch(json); - m_autoExitTimer->start(); - return val; -} -//停止搜索 -bool DBusControlCenterGrandSearchService::Stop(const QString json) -{ - bool val = parent()->GrandSearchStop(json); - m_autoExitTimer->start(); - return val; -} -//执行搜索 -bool DBusControlCenterGrandSearchService::Action(const QString json) -{ - bool val = parent()->GrandSearchAction(json); - m_autoExitTimer->start(); - return val; -} diff --git a/dcc-old/src/frame/controlcenterdbusadaptor.h b/dcc-old/src/frame/controlcenterdbusadaptor.h deleted file mode 100644 index 7b23865241..0000000000 --- a/dcc-old/src/frame/controlcenterdbusadaptor.h +++ /dev/null @@ -1,74 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include - -QT_BEGIN_NAMESPACE -class QByteArray; -template class QList; -template class QMap; -class QString; -class QStringList; -class QVariant; -QT_END_NAMESPACE - -/* - * Adaptor class for interface com.deepin.dde.ControlCenter - */ - -namespace DCC_NAMESPACE -{ - -class MainWindow; - -class ControlCenterDBusAdaptor: public QDBusAbstractAdaptor -{ - Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "org.deepin.dde.ControlCenter1") - -public: - explicit ControlCenterDBusAdaptor(MainWindow *parent); - virtual ~ControlCenterDBusAdaptor(); - - inline MainWindow *parent() const; - -public: - const QRect rect() const; - -public Q_SLOTS: // METHODS - void Exit(); - void Hide(); - void Show(); - void ShowHome(); - void ShowPage(const QString &url); - void Toggle(); - QString GetAllModule(); - -}; - -class DBusControlCenterGrandSearchService: public QDBusAbstractAdaptor -{ - Q_OBJECT - Q_CLASSINFO("D-Bus Interface", "org.deepin.dde.ControlCenter1.GrandSearch") - -public: - explicit DBusControlCenterGrandSearchService(MainWindow *parent); - virtual ~DBusControlCenterGrandSearchService(); - - inline MainWindow *parent() const; - -public Q_SLOTS: // METHODS - QString Search(const QString json); - bool Stop(const QString json); - bool Action(const QString json); - -private: - QTimer *m_autoExitTimer; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/frame/listitemdelegate.cpp b/dcc-old/src/frame/listitemdelegate.cpp deleted file mode 100644 index e724832c39..0000000000 --- a/dcc-old/src/frame/listitemdelegate.cpp +++ /dev/null @@ -1,266 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "listitemdelegate.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#if DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 0, 0) -# define USE_DCIICON -#endif - -#ifdef USE_DCIICON -# include -#endif -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -ListItemDelegate::ListItemDelegate(QAbstractItemView *parent) - : DStyledItemDelegate(parent) -{ -} - -void ListItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - painter->save(); - - QStyleOptionViewItem opt(option); - initStyleOption(&opt, index); - - bool isIconMode = option.decorationAlignment == Qt::AlignCenter; - bool isBeginning = (opt.viewItemPosition == QStyleOptionViewItem::ViewItemPosition::Beginning) || (opt.viewItemPosition == QStyleOptionViewItem::ViewItemPosition::OnlyOne); - bool isSelected = opt.state & QStyle::State_Selected; - bool isHover = opt.state & QStyle::State_MouseOver; - - // 选择高亮背景 - if (isSelected) { - QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) - ? QPalette::Normal - : QPalette::Disabled; - opt.backgroundBrush = option.palette.color(cg, QPalette::Highlight); - } - - QVariant value; - - QRect decorationRect; - int fontHeight = opt.widget->fontMetrics().height(); - const int firstItemHeight = (opt.rect.height() - (fontHeight * 2 + opt.decorationSize.height())) / 2; - if (index.data(Qt::DecorationRole).isValid()) { - if (isBeginning && isIconMode) { - decorationRect = QRect(opt.rect.topLeft() + QPoint((opt.rect.width() - opt.decorationSize.width()) / 2, firstItemHeight), opt.decorationSize); - opt.displayAlignment = Qt::AlignCenter; - } else if (isBeginning) { - opt.decorationSize += QSize(4, 4); - decorationRect = QRect(opt.rect.topLeft() + QPoint(8, (opt.rect.height() - opt.decorationSize.height()) / 2), opt.decorationSize); - opt.displayAlignment = Qt::AlignLeft; - } else { - decorationRect = QRect(opt.rect.topLeft() + QPoint(8, (opt.rect.height() - opt.decorationSize.height()) / 2), opt.decorationSize); - opt.displayAlignment = Qt::AlignLeft; - } - } else { - decorationRect = QRect(); - } - QString text; - QRect displayRect; - value = index.data(Qt::DisplayRole); - if (value.isValid() && !value.isNull()) { - if (isBeginning && isIconMode) { - displayRect = QRect(opt.rect.topLeft() + QPoint(0, opt.decorationSize.height() + firstItemHeight + 10), QSize(opt.rect.width(), -1)); - } else if (isBeginning || isIconMode) { - displayRect = QRect(opt.rect.topLeft() + QPoint(decorationRect.width() + 18, (opt.rect.height() / 2 - fontHeight + 5)), QSize(opt.rect.width() - opt.decorationSize.width() - 30, -1)); - } else { - displayRect = QRect(opt.rect.topLeft() + QPoint(decorationRect.width() + 18, (opt.rect.height() - fontHeight) / 2), QSize(opt.rect.width() - opt.decorationSize.width() - 30, -1)); - } - } - - QRect tipRect = displayRect.translated(0, opt.widget->fontMetrics().lineSpacing() + 3); - - QStyle *style = option.widget ? option.widget->style() : QApplication::style(); - // draw the item - if (isIconMode || isSelected || isHover) { - drawBackground(style, painter, opt); - } - // 图标的绘制用也可能会使用这些颜色 - QPalette::ColorGroup cg = (opt.state & QStyle::State_Enabled) ? QPalette::Normal : QPalette::Disabled; - auto role = (opt.state & QStyle::State_Selected) ? QPalette::HighlightedText : QPalette::Text; - painter->setPen(opt.palette.color(cg, role)); - - drawDecoration(painter, opt, decorationRect); - - drawDisplay(style, painter, opt, displayRect); - - if (isIconMode || isBeginning) { - painter->save(); - painter->setPen(opt.palette.color(cg, role)); - painter->setOpacity(0.7); - opt.text = index.data(Qt::StatusTipRole).toString(); - int fontSize = opt.font.pointSize(); - opt.font.setPointSize(fontSize - 3); - drawDisplay(style, painter, opt, tipRect); - painter->restore(); - } - - drawEllipse(painter, opt, index.data(Dtk::RightActionListRole).toInt()); - drawFocus(style, painter, opt, opt.rect); - // done - painter->restore(); -} - -void ListItemDelegate::drawBackground(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option) const -{ - DStyleOptionBackgroundGroup boption; - boption.init(option.widget); - boption.QStyleOption::operator=(option); - boption.position = DStyleOptionBackgroundGroup::ItemBackgroundPosition(option.viewItemPosition); - bool isIconMode = option.decorationAlignment == Qt::AlignCenter; - if (isIconMode) - boption.dpalette.setBrush(DPalette::ItemBackground, option.palette.color(QPalette::Base)); - - if (option.backgroundBrush.style() != Qt::NoBrush) { - boption.dpalette.setBrush(DPalette::ItemBackground, option.backgroundBrush); - } - - boption.rect = option.rect; - - if (backgroundType() != RoundedBackground) { - boption.directions = Qt::Vertical; - } - - style->drawPrimitive(static_cast(DStyle::PE_ItemBackground), &boption, painter, option.widget); -} - -bool drawDciIcon(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) -{ -#ifdef USE_DCIICON - QVariant iconVar = option.index.data(Qt::DecorationRole); - DDciIcon icon; - if (iconVar.canConvert()) { - icon = iconVar.value(); - } else if (iconVar.type() == QVariant::String) { - QString iconstr = iconVar.toString(); - if (!iconstr.isEmpty()) { - icon = DDciIcon::fromTheme(iconstr); - if (icon.isNull()) - icon = DDciIcon(iconstr); - } - } - if (!icon.isNull()) { - DDciIcon::Mode dciMode = DDciIcon::Normal; - if (option.state & QStyle::State_Enabled) { - if (option.state & (QStyle::State_Sunken | QStyle::State_Selected)) { - dciMode = DDciIcon::Pressed; - } else if (option.state & QStyle::State_MouseOver) { - dciMode = DDciIcon::Hover; - } - } else { - dciMode = DDciIcon::Disabled; - } - - DDciIcon::Theme theme = DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType ? DDciIcon::Dark : DDciIcon::Light; - - painter->save(); - painter->setBrush(Qt::NoBrush); - icon.paint(painter, rect, painter->device() ? painter->device()->devicePixelRatioF() : qApp->devicePixelRatio(), theme, dciMode, option.decorationAlignment); - painter->restore(); - return true; - } -#endif - return false; -} - -void ListItemDelegate::drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - if (option.features & QStyleOptionViewItem::HasDecoration - && !drawDciIcon(painter, option, rect)) { - QVariant iconVar = option.index.data(Qt::DecorationRole); - QIcon icon; - if (iconVar.type() == QVariant::Icon) { - icon = iconVar.value(); - } else if (iconVar.type() == QVariant::String) { - const QString &iconstr = iconVar.toString(); - icon = DIconTheme::findQIcon(iconstr); - if (icon.isNull()) - icon = QIcon(iconstr); - } - if (!icon.isNull()) { - QIcon::Mode mode = QIcon::Normal; - if (!(option.state & QStyle::State_Enabled)) - mode = QIcon::Disabled; - else if (option.state & QStyle::State_Selected) - mode = QIcon::Selected; - - QIcon::State state = (option.state & QStyle::State_Open) ? QIcon::On : QIcon::Off; - icon.paint(painter, rect, option.decorationAlignment, mode, state); - return; - } - } -} - -void ListItemDelegate::drawDisplay(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - DStyle::viewItemDrawText(style, painter, &option, rect); -} - -void ListItemDelegate::drawEllipse(QPainter *painter, const QStyleOptionViewItem &option, const int message) const -{ - if (message <= 0) - return; - - QRadialGradient Conical(0, 0, 7, 0, 0); - Conical.setColorAt(1, QColor(255, 106, 106, 255)); - Conical.setColorAt(0.2, QColor(255, 106, 106, 255)); - Conical.setColorAt(0, QColor(255, 106, 106, 25)); - - painter->setBrush(Conical); - painter->setPen(Qt::NoPen); - painter->drawEllipse(option.rect.center() + QPoint(option.rect.width() / 2 - 30, 0), 7, 7); -} - -void ListItemDelegate::drawFocus(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - if ((option.state & QStyle::State_HasFocus) == 0 || !rect.isValid()) - return; - QStyleOptionFocusRect o; - o.QStyleOption::operator=(option); - o.rect = rect; - o.state |= QStyle::State_KeyboardFocusChange; - o.state |= QStyle::State_Item; - QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) - ? QPalette::Normal - : QPalette::Disabled; - o.backgroundColor = option.palette.color(cg, (option.state & QStyle::State_Selected) ? QPalette::Highlight : QPalette::Window); - style->drawPrimitive(QStyle::PE_FrameFocusRect, &o, painter, option.widget); -} - -bool ListItemDelegate::helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index) -{ - QStyleOptionViewItem opt(option); - bool isBeginning = (opt.viewItemPosition == QStyleOptionViewItem::ViewItemPosition::Beginning) || (opt.viewItemPosition == QStyleOptionViewItem::ViewItemPosition::OnlyOne); - int displayWidth = isBeginning ? opt.rect.width() : opt.rect.width() - opt.decorationSize.width() -30 ; - - QString displayName = index.data(Qt::DisplayRole).toString(); - - int fontWidth = opt.widget->fontMetrics().horizontalAdvance(displayName); - if (fontWidth > displayWidth) { - if (event->type() == QEvent::ToolTip) { - QToolTip::showText(QCursor::pos(), displayName, reinterpret_cast(view), option.rect, 1000); - } - } - return true; -} diff --git a/dcc-old/src/frame/listitemdelegate.h b/dcc-old/src/frame/listitemdelegate.h deleted file mode 100644 index 084b0b2e9e..0000000000 --- a/dcc-old/src/frame/listitemdelegate.h +++ /dev/null @@ -1,31 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef LISTITEMDELEGATE_H -#define LISTITEMDELEGATE_H - -#include "interface/namespace.h" - -#include - -namespace DCC_NAMESPACE { - -class ListItemDelegate : public Dtk::Widget::DStyledItemDelegate -{ -public: - ListItemDelegate(QAbstractItemView *parent = nullptr); - -protected: - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - bool helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index) override; - - virtual void drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - void drawBackground(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option) const; - void drawDisplay(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - void drawEllipse(QPainter *painter, const QStyleOptionViewItem &option, const int message) const; - void drawFocus(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; -}; - -} - -#endif // LISTITEMDELEGATE_H diff --git a/dcc-old/src/frame/listview.cpp b/dcc-old/src/frame/listview.cpp deleted file mode 100644 index 82a016aaa0..0000000000 --- a/dcc-old/src/frame/listview.cpp +++ /dev/null @@ -1,635 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "listview.h" -#include -#include -#include -#include -#include - -#include -#include - -DGUI_USE_NAMESPACE -DCORE_USE_NAMESPACE -using namespace DCC_NAMESPACE; -///////////////////////////////////////// -namespace DCC_NAMESPACE { - -class ListViewPrivate -{ -public: - explicit ListViewPrivate(ListView *parent) - : q_ptr(parent) - , m_spacing(20) - , m_gridSize(280, 84) - , m_viewMode(ListView::ListMode) - , m_itemSize(m_gridSize) - , m_maxColumnCount(1) - , m_maxRowCount(1) - , m_xOffset(0) - , m_yOffset(0) - , m_alignment(Qt::AlignLeft | Qt::AlignTop) - , m_firstHeightDiff(0) - { - setGridSize(m_gridSize); - } - - void setSpacing(int space) - { - m_spacing = space; - } - int spacing() const - { - return m_spacing; - } - - void setGridSize(const QSize &size) - { - m_gridSize = size; - m_firstHeightDiff = m_viewMode == ListView::IconMode ? 0 : 18; - } - QSize gridSize() const - { - return m_gridSize; - } - - void setViewMode(ListView::ViewMode mode) - { - m_viewMode = mode; - } - ListView::ViewMode viewMode() const - { - return m_viewMode; - } - void setAlignment(Qt::Alignment alignment) - { - m_alignment = alignment; - } - Qt::Alignment alignment() const - { - return m_alignment; - } - - void updateGeometries() - { - Q_Q(ListView); - m_maxColumnCount = 1; - if (m_viewMode == ListView::IconMode && (m_gridSize.width() + m_spacing) > 0) - m_maxColumnCount = (q->viewport()->width() - m_spacing) / (m_gridSize.width() + m_spacing); - - int count = q->model() ? q->model()->rowCount() : 0; - if (count < m_maxColumnCount) - m_maxColumnCount = count; - - if (m_maxColumnCount <= 0) - m_maxColumnCount = 1; - - if (m_viewMode == ListView::IconMode) { - if (count == 0) - m_maxRowCount = 0; - else if (count <= m_maxColumnCount) - m_maxRowCount = 2; - else - m_maxRowCount = 1 + (count / m_maxColumnCount); - } else { - m_maxRowCount = (count <= m_maxColumnCount) ? 1 : count / m_maxColumnCount; - } - - m_itemSize = (m_viewMode == ListView::IconMode) ? m_gridSize : QSize(q->viewport()->width() - marginsWidth(), m_gridSize.height()); - int itemWidth = m_maxColumnCount * (m_itemSize.width() + m_spacing) - m_spacing; - int itemHeight = m_maxRowCount * (m_itemSize.height() + m_spacing) - m_spacing; - - if (m_alignment & Qt::AlignRight) { - m_xOffset = q->viewport()->width() - itemWidth; - } else if (m_alignment & Qt::AlignHCenter) { - m_xOffset = (q->viewport()->width() - itemWidth) / 2; - } else { - m_xOffset = 0; - } - if (itemHeight > q->viewport()->height()) { - m_yOffset = 0; - } else if (m_alignment & Qt::AlignBottom) { - m_yOffset = q->viewport()->height() - itemHeight; - } else if (m_alignment & Qt::AlignVCenter) { - m_yOffset = (q->viewport()->height() - itemHeight) / 2; - } else { - m_yOffset = 0; - } - } - // item在窗口中位置(无滚动) - QRect rectForIndex(const QModelIndex &index) const - { - QRect rect(0, 0, m_itemSize.width(), m_itemSize.height()); - if (index.row() == 0 && m_viewMode == ListView::IconMode) { - rect.setHeight(m_itemSize.height() * 2 + m_spacing); - } else if (index.row() == 0 && m_viewMode == ListView::ListMode) { - rect.setHeight(m_itemSize.height() + m_firstHeightDiff); - } else { - int indexRow = index.row(); - if (m_viewMode == ListView::IconMode && indexRow >= m_maxColumnCount) - indexRow++; - int row = indexRow / m_maxColumnCount; - int col = indexRow % m_maxColumnCount; - rect.translate((m_itemSize.width() + m_spacing) * col, (m_itemSize.height() + m_spacing) * row); - if (m_viewMode == ListView::ListMode && indexRow >= 1) - rect.translate(0, m_firstHeightDiff); - } - return rect.translated(contentsMargins().left() + m_xOffset, contentsMargins().top() + m_yOffset); - } - // item在窗口中位置(无滚动) - QModelIndex indexAt(const QPoint &p) const - { - if ((m_itemSize.height() + m_spacing) <= 0 || (m_itemSize.width() + m_spacing) <= 0) - return QModelIndex(); - Q_Q(const ListView); - QRect rect(p.x() - m_xOffset, p.y() - m_yOffset, 1, 1); - int row = (rect.y() - m_firstHeightDiff) / (m_itemSize.height() + m_spacing); - int col = (rect.x()) / (m_itemSize.width() + m_spacing); - if (row < 0) - row = 0; - int indexRow = 0; - if (m_viewMode == ListView::IconMode) { - if (row != 1 || col != 0) { - indexRow = row > 0 ? row * m_maxColumnCount + col - 1 : col; - } - } else { - indexRow = row * m_maxColumnCount + col; - } - QModelIndex index = q->model()->index(indexRow, 0); - if (index.isValid() && rectForIndex(index).contains(p)) - return index; - return QModelIndex(); - } - QVector intersectingSet(const QRect &area) const - { - Q_Q(const ListView); - QVector indexs; - int rows = q->model()->rowCount(); - for (int row = 0; row < rows; row++) { - QModelIndex index = q->model()->index(row, 0); - QRect rectIndex = rectForIndex(index); - if (!rectIndex.intersected(area).isEmpty()) { - indexs.append(index); - } - } - return indexs; - } - inline int marginsWidth() const - { - return contentsMargins().left() + contentsMargins().right(); - } - inline int marginsHidget() const - { - return contentsMargins().top() + contentsMargins().bottom(); - } - void setContentsMargins(int left, int top, int right, int bottom) - { - m_contentsMargins.setLeft(left); - m_contentsMargins.setTop(top); - m_contentsMargins.setRight(right); - m_contentsMargins.setBottom(bottom); - } - QMargins contentsMargins() const - { - return m_contentsMargins; - } - -private: - ListView *const q_ptr; - Q_DECLARE_PUBLIC(ListView) - int m_spacing; - QSize m_gridSize; - ListView::ViewMode m_viewMode; - - QSize m_itemSize; - int m_maxColumnCount; // 一行可容纳的最大列数 - int m_maxRowCount; // 换算显示所有item所需行数 - int m_xOffset; // x轴偏移 - int m_yOffset; // y轴偏移 - QModelIndex m_hover; // hover项 - Qt::Alignment m_alignment; // 对齐方式 - int m_firstHeightDiff; // 第一行与其他行高差值 - QMargins m_contentsMargins; -}; -} // namespace DCC_NAMESPACE - -///////////////////////////////////////// - -ListView::ListView(QWidget *parent) - : QAbstractItemView(parent) - , DCC_INIT_PRIVATE(ListView) -{ - setSelectionMode(SingleSelection); - setAttribute(Qt::WA_MacShowFocusRect); - scheduleDelayedItemsLayout(); - setMouseTracking(true); - - viewport()->setAutoFillBackground(false); - setAutoFillBackground(false); -} - -ListView::~ListView() -{ -} - -void ListView::setSpacing(int space) -{ - Q_D(ListView); - if (d->spacing() != space) { - d->setSpacing(space); - scheduleDelayedItemsLayout(); - } -} -int ListView::spacing() const -{ - Q_D(const ListView); - return d->spacing(); -} - -void ListView::setGridSize(const QSize &size) -{ - Q_D(ListView); - if (d->gridSize() != size) { - d->setGridSize(size); - scheduleDelayedItemsLayout(); - } -} -QSize ListView::gridSize() const -{ - Q_D(const ListView); - return d->gridSize(); -} - -void ListView::setViewMode(ViewMode mode) -{ - Q_D(ListView); - if (d->viewMode() != mode) { - d->setViewMode(mode); - scheduleDelayedItemsLayout(); - } -} -ListView::ViewMode ListView::viewMode() const -{ - Q_D(const ListView); - return d->viewMode(); -} - -void ListView::setAlignment(Qt::Alignment alignment) -{ - Q_D(ListView); - if (d->alignment() != alignment) { - d->setAlignment(alignment); - scheduleDelayedItemsLayout(); - } -} -Qt::Alignment ListView::alignment() const -{ - Q_D(const ListView); - return d->alignment(); -} - -void ListView::setContentsMargins(int left, int top, int right, int bottom) -{ - Q_D(ListView); - const QMargins &margins = d->contentsMargins(); - if (margins.left() != left || margins.top() != top - || margins.right() != right || margins.bottom() != bottom) { - d->setContentsMargins(left, top, right, bottom); - scheduleDelayedItemsLayout(); - } -} - -void ListView::setContentsMargins(const QMargins &margins) -{ - setContentsMargins(margins.left(), margins.top(), margins.right(), margins.bottom()); -} - -QMargins ListView::contentsMargins() const -{ - Q_D(const ListView); - return d->contentsMargins(); -} -///////////////////////////////////////////////////////////////////////////// -// item在窗口中位置(加滚动偏移) -QRect ListView::visualRect(const QModelIndex &index) const -{ - Q_D(const ListView); - return d->rectForIndex(index).translated(-horizontalOffset(), -verticalOffset()); -} - -void ListView::scrollTo(const QModelIndex &index, ScrollHint hint) -{ - if (!index.isValid()) - return; - - const QRect rect = visualRect(index); - if (hint == EnsureVisible && viewport()->rect().contains(rect)) { - viewport()->update(rect); - return; - } - - const QRect area = viewport()->rect(); - const bool above = (hint == EnsureVisible && rect.top() < area.top()); - const bool below = (hint == EnsureVisible && rect.bottom() > area.bottom()); - - int verticalValue = verticalScrollBar()->value(); - QRect adjusted = rect.adjusted(-spacing(), -spacing(), spacing(), spacing()); - if (hint == PositionAtTop || above) - verticalValue += adjusted.top(); - else if (hint == PositionAtBottom || below) - verticalValue += qMin(adjusted.top(), adjusted.bottom() - area.height() + 1); - else if (hint == PositionAtCenter) - verticalValue += adjusted.top() - ((area.height() - adjusted.height()) / 2); - verticalScrollBar()->setValue(verticalValue); -} - -QModelIndex ListView::indexAt(const QPoint &p) const -{ - Q_D(const ListView); - return d->indexAt(p + QPoint(horizontalOffset(), verticalOffset())); -} - -QModelIndex ListView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers /*modifiers*/) -{ - Q_D(const ListView); - QModelIndex current = currentIndex(); - int currentRow = current.row(); - int maxRow = model()->rowCount(); - - auto moveup = [](int currentRow, int maxColumnCount) -> int { - if (currentRow == maxColumnCount * 2 - 1) { - currentRow = 0; - } else if (currentRow < maxColumnCount) { - // 第一行不处理 - } else if (currentRow < maxColumnCount * 2) { - currentRow -= (maxColumnCount - 1); - } else { - currentRow -= maxColumnCount; - } - return currentRow; - }; - auto movedown = [](int currentRow, int maxColumnCount) -> int { - if (currentRow == 0) { - currentRow += (maxColumnCount * 2 - 1); - } else if (currentRow < maxColumnCount) - currentRow += (maxColumnCount - 1); - else - currentRow += maxColumnCount; - return currentRow; - }; - switch (cursorAction) { - case MoveLeft: - currentRow--; - break; - case MoveRight: - currentRow++; - break; - case MovePageUp: { - int pageItem = (viewport()->height() - d->marginsHidget() + d->m_spacing) / (d->m_itemSize.height() + d->m_spacing); - for (int i = 0; i < pageItem; i++) { - currentRow = moveup(currentRow, d->m_maxColumnCount); - } - } break; - case MoveUp: - currentRow = moveup(currentRow, d->m_maxColumnCount); - break; - case MovePageDown: { - int pageItem = (viewport()->height() - d->marginsHidget() + d->m_spacing) / (d->m_itemSize.height() + d->m_spacing); - for (int i = 0; i < pageItem; i++) { - int row = movedown(currentRow, d->m_maxColumnCount); - if (row >= maxRow) - break; - currentRow = row; - } - } break; - case MoveDown: - currentRow = movedown(currentRow, d->m_maxColumnCount); - break; - case MoveHome: - currentRow = 0; - break; - case MoveEnd: - currentRow = maxRow - 1; - break; - default: - return QModelIndex(); - } - QModelIndex selectIndex = model()->index(currentRow, 0); - activated(selectIndex); - return selectIndex; -} - -int ListView::horizontalOffset() const -{ - return 0; -} - -int ListView::verticalOffset() const -{ - return verticalScrollBar()->value(); -} - -void ListView::updateGeometries() -{ - Q_D(ListView); - QAbstractItemView::updateGeometries(); - d->updateGeometries(); - - // 更新滚动条范围 - if (geometry().isEmpty() || !model() || model()->rowCount() <= 0 || model()->columnCount() <= 0) { - horizontalScrollBar()->setRange(0, 0); - verticalScrollBar()->setRange(0, 0); - } else { - QSize step = d->m_itemSize; - verticalScrollBar()->setSingleStep(step.height() + spacing()); - verticalScrollBar()->setPageStep(viewport()->height()); - - int height = d->m_maxRowCount * (d->m_itemSize.height() + d->m_spacing) + (d->m_viewMode == ListMode ? d->m_firstHeightDiff : 0); - if (height < viewport()->height()) { - verticalScrollBar()->setRange(0, 0); - } else { - verticalScrollBar()->setRange(0, height - viewport()->height()); - } - } -} - -void ListView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles) -{ - QAbstractItemView::dataChanged(topLeft, bottomRight, roles); - scheduleDelayedItemsLayout(); -} - -void ListView::rowsInserted(const QModelIndex &parent, int start, int end) -{ - scheduleDelayedItemsLayout(); - QAbstractItemView::rowsInserted(parent, start, end); -} - -void ListView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) -{ - QAbstractItemView::rowsAboutToBeRemoved(parent, start, end); - scheduleDelayedItemsLayout(); -} - -void ListView::mouseMoveEvent(QMouseEvent *event) -{ - setHoverIndexAt(event->pos()); - QAbstractItemView::mouseMoveEvent(event); -} - -void ListView::verticalScrollbarValueChanged(int value) -{ - setHoverIndexAt(viewport()->mapFromGlobal(QCursor::pos())); - QAbstractItemView::verticalScrollbarValueChanged(value); -} - -void ListView::horizontalScrollbarAction(int value) -{ - setHoverIndexAt(viewport()->mapFromGlobal(QCursor::pos())); - QAbstractItemView::horizontalScrollbarAction(value); -} - -void ListView::setHoverIndexAt(const QPoint &p) -{ - if (!viewport()->rect().contains(p)) - return; - - QModelIndex index = indexAt(p); - - Q_D(ListView); - if (d->m_hover == index) - return; - - if (selectionBehavior() != QAbstractItemView::SelectRows) { - update(d->m_hover); //update the old one - update(index); //update the new one - } else { - QRect oldHoverRect = visualRect(d->m_hover); - QRect newHoverRect = visualRect(index); - viewport()->update(QRect(0, newHoverRect.y(), viewport()->width(), newHoverRect.height())); - viewport()->update(QRect(0, oldHoverRect.y(), viewport()->width(), oldHoverRect.height())); - } - - d->m_hover = index; -} - -bool ListView::isIndexHidden(const QModelIndex & /*index*/) const -{ - return false; -} - -QRegion ListView::visualRegionForSelection(const QItemSelection &selection) const -{ - if (selection.isEmpty()) - return QRegion(); - Q_D(const ListView); - QRect rect = d->rectForIndex(selection.indexes().first()); - return QRegion(rect); -} - -void ListView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) -{ - int rows = model()->rowCount(); - QModelIndex selectedIndex; - for (int row = 0; row < rows; row++) { - QModelIndex index = model()->index(row, 0); - QRect rectIndex = visualRect(index); - if (!rectIndex.intersected(rect).isEmpty()) { - selectedIndex = index; - break; - } - } - selectionModel()->select(selectedIndex, command); -} - -void ListView::paintEvent(QPaintEvent *e) -{ - Q_D(const ListView); - QStyleOptionViewItem option = viewOptions(); - QPainter painter(viewport()); - - const QVector toBeRendered = d->intersectingSet(e->rect().translated(horizontalOffset(), verticalOffset())); - - const QModelIndex current = currentIndex(); - const QModelIndex hover = d->m_hover; - const QAbstractItemModel *itemModel = model(); - const QItemSelectionModel *selections = selectionModel(); - const bool focus = (hasFocus() || viewport()->hasFocus()) && current.isValid(); - const bool alternate = alternatingRowColors(); - const QStyle::State state = option.state; - const QAbstractItemView::State viewState = this->state(); - const bool enabled = (state & QStyle::State_Enabled) != 0; - option.decorationAlignment = d->m_viewMode == IconMode ? Qt::AlignCenter : Qt::AlignLeft; - - bool alternateBase = false; - int previousRow = -2; - - painter.setRenderHint(QPainter::Antialiasing); - - QVector::const_iterator end = toBeRendered.constEnd(); - for (QVector::const_iterator it = toBeRendered.constBegin(); it != end; ++it) { - Q_ASSERT((*it).isValid()); - option.rect = visualRect(*it); - - option.state = state; - if (selections && selections->isSelected(*it)) - option.state |= QStyle::State_Selected; - if (enabled) { - QPalette::ColorGroup cg; - if ((itemModel->flags(*it) & Qt::ItemIsEnabled) == 0) { - option.state &= ~QStyle::State_Enabled; - cg = QPalette::Disabled; - } else { - cg = QPalette::Normal; - } - option.palette.setCurrentColorGroup(cg); - } - if (focus && current == *it) { - option.state |= QStyle::State_HasFocus; - if (viewState == EditingState) - option.state |= QStyle::State_Editing; - } - option.state.setFlag(QStyle::State_MouseOver, *it == hover); - - if (alternate) { // 交替色处理,未实现 - int row = (*it).row(); - if (row != previousRow + 1) { - // adjust alternateBase according to rows in the "gap" - alternateBase = (row & 1) != 0; - } - option.features.setFlag(QStyleOptionViewItem::Alternate, alternateBase); - - // draw background of the item (only alternate row). rest of the background - // is provided by the delegate - QStyle::State oldState = option.state; - option.state &= ~QStyle::State_Selected; - style()->drawPrimitive(QStyle::PE_PanelItemViewRow, &option, &painter, this); - option.state = oldState; - - alternateBase = !alternateBase; - previousRow = row; - } - - itemDelegate(*it)->paint(&painter, option, *it); - } -} - -bool ListView::viewportEvent(QEvent *event) -{ - Q_D(ListView); - switch (event->type()) { - case QEvent::HoverMove: - case QEvent::HoverEnter: - d->m_hover = indexAt(static_cast(event)->pos()); - break; - case QEvent::HoverLeave: - case QEvent::Leave: - d->m_hover = QModelIndex(); - break; - default: - break; - } - return QAbstractItemView::viewportEvent(event); -} diff --git a/dcc-old/src/frame/listview.h b/dcc-old/src/frame/listview.h deleted file mode 100644 index 25b491f13b..0000000000 --- a/dcc-old/src/frame/listview.h +++ /dev/null @@ -1,78 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef LISTVIEW_H -#define LISTVIEW_H -#include "interface/namespace.h" -#include -#include - -namespace DCC_NAMESPACE { - -class ListViewPrivate; -class ListView : public QAbstractItemView -{ - Q_OBJECT - Q_PROPERTY(int spacing READ spacing WRITE setSpacing) - Q_PROPERTY(QSize gridSize READ gridSize WRITE setGridSize) - Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) - -public: - enum ViewMode { ListMode, - IconMode }; - Q_ENUM(ViewMode) - - explicit ListView(QWidget *parent = nullptr); - virtual ~ListView() override; - - void setSpacing(int space); - int spacing() const; - - void setGridSize(const QSize &size); - QSize gridSize() const; - - void setViewMode(ViewMode mode); - ViewMode viewMode() const; - - void setAlignment(Qt::Alignment alignment); - Qt::Alignment alignment() const; - - void setContentsMargins(int left, int top, int right, int bottom); - void setContentsMargins(const QMargins &margins); - QMargins contentsMargins() const; - - QRect visualRect(const QModelIndex &index) const override; - void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) override; - QModelIndex indexAt(const QPoint &p) const override; - -protected: - QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override; - int horizontalOffset() const override; - int verticalOffset() const override; - - bool isIndexHidden(const QModelIndex &index) const override; - QRegion visualRegionForSelection(const QItemSelection &selection) const override; - void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) override; - - void updateGeometries() override; - - void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()) override; - void rowsInserted(const QModelIndex &parent, int start, int end) override; - void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override; - - void mouseMoveEvent(QMouseEvent *event) override; - void verticalScrollbarValueChanged(int value) override; - void horizontalScrollbarAction(int value) override; - void setHoverIndexAt(const QPoint &p); - -protected: - void paintEvent(QPaintEvent *e) override; - bool viewportEvent(QEvent *event) override; - - DCC_DECLARE_PRIVATE(ListView) -}; - -} // namespace DCC_NAMESPACE - -#endif // LISTVIEW_H diff --git a/dcc-old/src/frame/main.cpp b/dcc-old/src/frame/main.cpp deleted file mode 100644 index 5e65177fc8..0000000000 --- a/dcc-old/src/frame/main.cpp +++ /dev/null @@ -1,179 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "accessible.h" -#include "controlcenterdbusadaptor.h" -#include "mainwindow.h" -#include "utils.h" - -#include -#include -#include -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE -DCORE_USE_NAMESPACE - -QStringList defaultpath() -{ - QStringList path; -#ifdef QT_DEBUG - path.append(qApp->applicationDirPath()); -#else - path.append(DCC_NAMESPACE::PLUGIN_DIRECTORY); - path.append(DCC_NAMESPACE::OLD_PLUGIN_DIRECTORY); -#endif - return path; -} - -int main(int argc, char *argv[]) -{ - DApplication *app = DApplication::globalApplication(argc, argv); - app->setOrganizationName("deepin"); - app->setApplicationName("dde-control-center"); - - // take care of command line options - QCommandLineOption showOption(QStringList() << "s" - << "show", - "show control center(hide for default)."); - QCommandLineOption toggleOption(QStringList() << "t" - << "toggle", - "toggle control center visible."); - QCommandLineOption dbusOption(QStringList() << "d" - << "dbus", - "startup on dbus"); - QCommandLineOption pageOption("p", "specified module page", "page"); - QCommandLineOption pluginDir("spec", "load plugins from specialdir", "plugindir"); - - QCommandLineParser parser; - parser.setApplicationDescription("DDE Control Center"); - parser.addHelpOption(); - parser.addVersionOption(); - parser.addOption(showOption); - parser.addOption(toggleOption); - parser.addOption(dbusOption); - parser.addOption(pageOption); - parser.addOption(pluginDir); - parser.process(*app); - - const QString &reqPage = parser.value(pageOption); - const QString &refPluginDir = parser.value(pluginDir); - - if (!app->setSingleInstance(app->applicationName())) { - if (parser.isSet(toggleOption)) { - DDBusSender() - .service("org.deepin.dde.ControlCenter1") - .interface("org.deepin.dde.ControlCenter1") - .path("/org/deepin/dde/ControlCenter1") - .method("Toggle") - .call(); - } - - if (!reqPage.isEmpty()) { - DDBusSender() - .service("org.deepin.dde.ControlCenter1") - .interface("org.deepin.dde.ControlCenter1") - .path("/org/deepin/dde/ControlCenter1") - .method("ShowPage") - .arg(reqPage) - .call(); - } else if (parser.isSet(showOption) && !parser.isSet(dbusOption)) { - DDBusSender() - .service("org.deepin.dde.ControlCenter1") - .interface("org.deepin.dde.ControlCenter1") - .path("/org/deepin/dde/ControlCenter1") - .method("Show") - .call(); - } - - return -1; - } - Dtk::Gui::DGuiApplicationHelper::loadTranslator(app->applicationName(), { TRANSLATE_READ_DIR }, { QLocale() }); - DLogManager::setLogFormat( - "%{time}{yy-MM-ddTHH:mm:ss.zzz} [%{type}] [%{category}] <%{function}> %{message}"); - - DLogManager::registerJournalAppender(); - DLogManager::registerConsoleAppender(); - DLogManager::registerFileAppender(); - -#ifdef CVERSION - QString verstr(CVERSION); - if (verstr.isEmpty()) - verstr = "6.0"; - app->setApplicationVersion(verstr); -#else - app->setApplicationVersion("6.0"); -#endif - app->setAttribute(Qt::AA_UseHighDpiPixmaps); - app->loadTranslator(); - app->setStyle("chameleon"); - app->setProductIcon(DIconTheme::findQIcon("preferences-system")); - app->setWindowIcon(DIconTheme::findQIcon("preferences-system")); - - app->setApplicationDisplayName(QObject::tr("Control Center")); - app->setApplicationDescription( - QApplication::translate("main", - "Control Center provides the options for system settings.")); - - QAccessible::installFactory(accessibleFactory); - - DCC_NAMESPACE::MainWindow mw; - - DCC_NAMESPACE::ControlCenterDBusAdaptor adaptor(&mw); - DCC_NAMESPACE::DBusControlCenterGrandSearchService grandSearchadAptor(&mw); - - if (!refPluginDir.isEmpty()) { - mw.loadModules(true, { refPluginDir }); - QDBusConnection conn = QDBusConnection::sessionBus(); - if (!conn.registerService("org.deepin.dde.ControlCenter1") - || !conn.registerObject("/org/deepin/dde/ControlCenter1", &mw)) { - qDebug() << "dbus service already registered!" - << "pid is:" << qApp->applicationPid(); - if (!parser.isSet(showOption)) - return -1; - } - mw.show(); - return app->exec(); - } - - mw.loadModules(!parser.isSet(dbusOption), defaultpath()); - - QDBusConnection conn = QDBusConnection::sessionBus(); - if (!conn.registerService("org.deepin.dde.ControlCenter1") - || !conn.registerObject("/org/deepin/dde/ControlCenter1", &mw)) { - qDebug() << "dbus service already registered!" - << "pid is:" << qApp->applicationPid(); - if (!parser.isSet(showOption)) - return -1; - } - - if (!reqPage.isEmpty()) { - adaptor.ShowPage(reqPage); - } - - if (parser.isSet(showOption) && !parser.isSet(dbusOption)) { - adaptor.Show(); - } - -#ifdef QT_DEBUG - // debug时会直接show - // 发布版本,不会直接显示,为了满足在被dbus调用时, - // 如果dbus参数错误,不会有任何UI上的变化 - if (1 == argc) { - DDBusSender() - .service("org.deepin.dde.ControlCenter1") - .interface("org.deepin.dde.ControlCenter1") - .path("/org/deepin/dde/ControlCenter1") - .method("Show") - .call(); - } -#endif - - return app->exec(); -} diff --git a/dcc-old/src/frame/mainmodule.cpp b/dcc-old/src/frame/mainmodule.cpp deleted file mode 100644 index 896fb7ac75..0000000000 --- a/dcc-old/src/frame/mainmodule.cpp +++ /dev/null @@ -1,234 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "mainmodule.h" - -#include "listitemdelegate.h" -#include "listview.h" -#include "pagemodule.h" -#include "src/interface/moduledatamodel.h" - -#include - -#include -#include - -#include -#include -#include - -#if DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 3, 0) -# define USE_SIDEBAR -#endif - -using namespace DCC_NAMESPACE; - -constexpr int NavViewMaximumWidth = QWIDGETSIZE_MAX; -constexpr int NavViewMinimumWidth = 160; - -constexpr QSize ListViewItemIconSize_IconMode(64, 64); -constexpr QSize ListViewItemGridSize_IconMode(280, 84); -constexpr QSize ListViewItemIconSize_ListMode(32, 32); -constexpr QSize ListViewItemGridSize_ListMode(168, 36); -constexpr int ListView_ListMode_MaxWidth = 400; -constexpr int ListView_IconMode_MaxWidth = 500; -// mainly about icon and margin -constexpr int ExtraWidth = 80; - -namespace DCC_NAMESPACE { -class MainModulePrivate -{ -public: - explicit MainModulePrivate(MainModule *parent = nullptr) - : q_ptr(parent) - , m_view(nullptr) - , m_sidebarWidget(nullptr) - , m_layout(nullptr) - { - QObject::connect(Dtk::Gui::DGuiApplicationHelper::instance(), - &Dtk::Gui::DGuiApplicationHelper::sizeModeChanged, [this](){ - updateSpacing(); - }); - } - - ListView *createListView(QWidget *parentWidget, bool isSizebar = false) - { - Q_Q(MainModule); - const QSize viewGridSize = - isSizebar ? ListViewItemGridSize_ListMode : ListViewItemGridSize_IconMode; - const QSize viewIconSize = - isSizebar ? ListViewItemIconSize_ListMode : ListViewItemIconSize_IconMode; - const int viewMaxWidth = - isSizebar ? ListView_ListMode_MaxWidth : ListView_IconMode_MaxWidth; - ListView *view = new ListView(parentWidget); - view->setGridSize(viewGridSize); - view->setIconSize(viewIconSize); - ListItemDelegate *delegate = new ListItemDelegate(view); - view->setItemDelegate(delegate); - ModuleDataModel *model = new ModuleDataModel(view); - model->setModuleObject(q); - - view->setModel(model); - view->setFrameShape(QFrame::Shape::NoFrame); - view->setAutoScroll(true); - view->setDragEnabled(false); - view->setMaximumWidth(NavViewMaximumWidth); - view->setMinimumWidth(NavViewMinimumWidth); - view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - view->setSelectionMode(QAbstractItemView::SingleSelection); - view->setAcceptDrops(false); - - auto onClicked = [](const QModelIndex &index) { - ModuleObject *obj = static_cast(index.internalPointer()); - if (obj) - obj->trigger(); - }; - QObject::connect(model, - &ModuleDataModel::newModuleMaxDislayName, - view, - [view, viewGridSize, viewIconSize, viewMaxWidth](const QString &name) { - QSize gradSize = view->gridSize(); - const int elementWidth = view->fontMetrics().horizontalAdvance(name) - + viewIconSize.width() + ExtraWidth; - if (gradSize.width() < elementWidth && elementWidth < viewMaxWidth) { - view->setGridSize(QSize(elementWidth, viewGridSize.height())); - } - }); - QObject::connect(view, &ListView::activated, view, &ListView::clicked); - QObject::connect(view, &ListView::clicked, view, onClicked); - return view; - } - - void onCurrentModuleChanged(ModuleObject *child) - { - if (!m_layout) - return; - if (child && ModuleObject::IsVisible(child)) { - m_sidebarWidget->setViewMode(ListView::ListMode); - m_sidebarWidget->setContentsMargins(10, 0, 10, 0); - m_sidebarWidget->setAlignment(Qt::AlignLeft | Qt::AlignTop); - - ModuleDataModel *model = static_cast(m_sidebarWidget->model()); - m_sidebarWidget->setCurrentIndex(model->index(child)); - PageModule *module = qobject_cast(child); - if (module) { - module->setContentsMargins(60, 0, 60, 0); - module->setMaximumWidth(DCC_PAGEMODULE_MAX_WIDTH + 60 * 2); - } - while (m_layout->count() != 0) { - QLayoutItem *item = m_layout->takeAt(0); - if (item->widget() && item->widget() != m_view && item->widget() != m_sidebarWidget) - delete item->widget(); - delete item; - } - m_sidebarWidget->setVisible(true); - int sizebar = m_sidebarWidget->gridSize().width(); -#ifdef USE_SIDEBAR - m_mainWindow->setSidebarWidth(sizebar); - m_mainWindow->setSidebarVisible(true); -#else - m_layout->addWidget(m_sidebarWidget); - m_sidebarWidget->setFixedWidth(sizebar); -#endif - m_layout->addWidget(child->activePage()); - m_view->setVisible(false); - m_sidebarWidget->setFocus(); - } else { - m_view->setViewMode(ListView::IconMode); - m_view->setContentsMargins(0, 0, 0, 0); - m_view->setAlignment(Qt::AlignHCenter); - - while (!m_layout->isEmpty()) { - QLayoutItem *item = m_layout->takeAt(0); - if (item->widget() && item->widget() != m_view && item->widget() != m_sidebarWidget) - delete item->widget(); - delete item; - } - QVBoxLayout *vlayout = new QVBoxLayout; - vlayout->addSpacing(20); - vlayout->addWidget(m_view); - m_layout->addLayout(vlayout); - - m_view->setMinimumWidth(0); - m_view->setMaximumWidth(QWIDGETSIZE_MAX); - m_view->setVisible(true); - m_view->clearSelection(); - m_sidebarWidget->setVisible(false); -#ifdef USE_SIDEBAR - m_mainWindow->setSidebarWidth(100); - m_mainWindow->setSidebarVisible(false); -#endif - } - } - -public slots: - void updateSpacing() - { - if (m_view && m_sidebarWidget) { - m_view->setSpacing(Dtk::Widget::DSizeModeHelper::element(10, 20)); - m_sidebarWidget->setSpacing(Dtk::Widget::DSizeModeHelper::element(0, 10)); - } - } - - QWidget *page() - { - Q_Q(MainModule); - QWidget *parentWidget = new QWidget(); - m_layout = new QHBoxLayout; - m_layout->setContentsMargins(0, 10, 0, 10); - m_layout->setSpacing(0); - parentWidget->setLayout(m_layout); - QObject::connect(q, - &MainModule::currentModuleChanged, - parentWidget, - [this](ModuleObject *child) { - onCurrentModuleChanged(child); - }); - m_view = createListView(parentWidget); - m_sidebarWidget = createListView(parentWidget, true); - updateSpacing(); - QObject::connect(q, &MainModule::moduleDataChanged, q, [this, q](){ - if (auto model = dynamic_cast(m_sidebarWidget->model())) { - auto index = model->index(q->currentModule()); - model->dataChanged(index, index); - } - }); -#ifdef USE_SIDEBAR - m_mainWindow->setSidebarWidget(m_sidebarWidget); -#endif - onCurrentModuleChanged(q->currentModule()); - return parentWidget; - } - -private: - MainModule *q_ptr; - Q_DECLARE_PUBLIC(MainModule) - - ListView *m_view; - ListView *m_sidebarWidget; - QHBoxLayout *m_layout; - DTK_WIDGET_NAMESPACE::DMainWindow *m_mainWindow; -}; -} // namespace DCC_NAMESPACE - -MainModule::MainModule(DTK_WIDGET_NAMESPACE::DMainWindow *parent) - : ModuleObject(parent) - , DCC_INIT_PRIVATE(MainModule) -{ - Q_D(MainModule); - d->m_mainWindow = parent; -} - -MainModule::~MainModule() { } - -QWidget *MainModule::page() -{ - Q_D(MainModule); - return d->page(); -} - -ModuleObject *MainModule::defultModule() -{ - return nullptr; -} diff --git a/dcc-old/src/frame/mainmodule.h b/dcc-old/src/frame/mainmodule.h deleted file mode 100644 index 47d8aedd48..0000000000 --- a/dcc-old/src/frame/mainmodule.h +++ /dev/null @@ -1,25 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MAINMODULE_H -#define MAINMODULE_H -#include "interface/moduleobject.h" -#include - -namespace DCC_NAMESPACE { -class MainModulePrivate; -class MainModule : public ModuleObject -{ - Q_OBJECT -public: - explicit MainModule(DTK_WIDGET_NAMESPACE::DMainWindow *parent = nullptr); - ~MainModule() override; - - QWidget *page() override; - ModuleObject *defultModule() override; - inline DCC_MODULE_TYPE getClassID() const override { return MAINLAYOUT; } - - DCC_DECLARE_PRIVATE(MainModule) -}; -} -#endif // MAINMODULE_H diff --git a/dcc-old/src/frame/mainwindow.cpp b/dcc-old/src/frame/mainwindow.cpp deleted file mode 100644 index 9782e58374..0000000000 --- a/dcc-old/src/frame/mainwindow.cpp +++ /dev/null @@ -1,586 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "mainwindow.h" - -#include "interface/moduleobject.h" -#include "mainmodule.h" -#include "pluginmanager.h" -#include "searchwidget.h" -#include "utils.h" -#include "widgets/utils.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DCORE_USE_NAMESPACE -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -#define DCC_CONFIG_HIDDEN 0x20000000 -#define DCC_CONFIG_DISABLED 0x10000000 -#define setConfigHidden(hide) setFlagState(DCC_CONFIG_HIDDEN, hide) -#define setConfigDisabled(disabled) setFlagState(DCC_CONFIG_DISABLED, disabled) - -constexpr QSize MainWindowMininumSize(QSize(800, 600)); - -const QString ControlCenterConfig = QStringLiteral("org.deepin.dde.control-center"); -const QString WidthConfig = QStringLiteral("width"); -const QString HeightConfig = QStringLiteral("height"); -const QString HideConfig = QStringLiteral("hideModule"); -const QString DisableConfig = QStringLiteral("disableModule"); -const QString ControlCenterIcon = QStringLiteral("preferences-system"); -// 这个只有 com.xx 全局搜索才翻译设置 -const QString ControlCenterGroupName = - "com.deepin.dde-grand-search.group.dde-control-center-setting"; - -MainWindow::MainWindow(QWidget *parent) - : DMainWindow(parent) - , m_backwardBtn(new DIconButton(QStyle::SP_ArrowBack, this)) - , m_dconfig(DConfig::create( - "org.deepin.dde.control-center", ControlCenterConfig, QString(), this)) - , m_searchWidget(new SearchWidget(this)) - , m_rootModule(new MainModule(this)) - , m_pluginManager(new PluginManager(this)) -{ - qRegisterMetaType("ModuleObject *"); - - initUI(); - initConfig(); - - connect(m_searchWidget, &SearchWidget::notifySearchUrl, this, [this](const QString &url) { - showPage(url, UrlType::Name); - }); - qApp->installEventFilter(this); -} - -MainWindow::~MainWindow() -{ - int width_remember = width() > 1000 ? width() : 1000; - int height_remember = height() > 600 ? height() : 600; - - if (m_dconfig->isValid()) { - m_dconfig->setValue(WidthConfig, width_remember); - m_dconfig->setValue(HeightConfig, height_remember); - } - resizeCurrentModule(0); -} - -void MainWindow::showPage(const QString &url, const UrlType &uType) -{ - if (qApp->activeModalWidget()) { - qInfo() << "controlcenter has modal dialog, cannot switch page"; - return; - } - qInfo() << "show page url:" << url; - if (url.isEmpty() || url == "/") { - toHome(); - } - if (!m_rootModule) { - QTimer::singleShot(10, this, [=] { - showPage(url, uType); - }); - return; - } - showPage(m_rootModule, url, uType); -} - -void MainWindow::showPage(const QString &url) -{ - if (findModule(m_rootModule, url, UrlType::Name, false)) { - showPage(url, UrlType::Name); - return; - } - QTimer::singleShot(10, this, [url, this] { - showPage(url); - }); -} - -void MainWindow::showPage(ModuleObject *const module, const QString &url, const UrlType &uType) -{ - showModule(findModule(module, url, uType)); -} - -ModuleObject *MainWindow::findModule(ModuleObject *const module, - const QString &url, - const UrlType &uType, - bool fuzzy) -{ - ModuleObject *obj = module; - QStringList names = url.split('/'); - while (!names.isEmpty() && obj) { - const QString &name = names.takeFirst(); - QString childName; - ModuleObject *objChild = nullptr; - for (auto child : obj->childrens()) { - switch (uType) { - case UrlType::DisplayName: - childName = child->displayName(); - break; - default: - childName = child->name(); - break; - } - if (childName == name || child->contentText().contains(name)) { - objChild = child; - break; - } - } - if (objChild) { - obj = objChild; - } else if (fuzzy) { - break; - } else { - return nullptr; - } - } - return obj; -} - -void MainWindow::changeEvent(QEvent *event) -{ - if (event->type() == QEvent::PaletteChange) { - updateMainView(); - } - return DMainWindow::changeEvent(event); -} - -void MainWindow::closeEvent(QCloseEvent *event) -{ - Q_UNUSED(event) - m_pluginManager->cancelLoad(); -} - -bool MainWindow::eventFilter(QObject *watched, QEvent *event) -{ - if (event->type() == QEvent::Shortcut) { - auto ke = static_cast(event); - if (ke->key() == Qt::Key_F1) { - openManual(); - return true; - } - } - return DMainWindow::eventFilter(watched, event); -} - -void MainWindow::initUI() -{ - setMinimumSize(MainWindowMininumSize); - auto root = m_rootModule->activePage(); - root->setAutoFillBackground(true); - setCentralWidget(root); - - layout()->setMargin(0); - layout()->setSpacing(0); - layout()->setContentsMargins(ZeroMargins); - - auto menu = titlebar()->menu(); - if (!menu) { - qDebug() << "menu is nullptr, create menu!"; - menu = new QMenu; - } - menu->setAccessibleName("titlebarmenu"); - titlebar()->setMenu(menu); - - auto action = new QAction(tr("Help"), menu); - menu->addAction(action); - connect(action, &QAction::triggered, this, [this] { - openManual(); - }); - - m_backwardBtn->setAccessibleName("backwardbtn"); - m_backwardBtn->setFlat(true); - // flat iconButton size too small - m_backwardBtn->setMinimumSize({32, 32}); - - titlebar()->addWidget(m_backwardBtn, Qt::AlignLeft | Qt::AlignVCenter); - titlebar()->setIcon(DIconTheme::findQIcon("preferences-system")); - - connect(m_backwardBtn, &DIconButton::clicked, this, &MainWindow::toHome); - - m_searchWidget->setMinimumSize(300, 36); - m_searchWidget->setAccessibleName("SearchModule"); - m_searchWidget->lineEdit()->setAccessibleName("SearchModuleLineEdit"); - titlebar()->addWidget(m_searchWidget, Qt::AlignCenter); -} - -void MainWindow::initConfig() -{ - if (!m_dconfig->isValid()) { - qWarning() << QString("DConfig is invalide, name:[%1], subpath[%2].") - .arg(m_dconfig->name(), m_dconfig->subpath()); - return; - } - - auto w = m_dconfig->value(WidthConfig).toInt(); - auto h = m_dconfig->value(HeightConfig).toInt(); - - resize(w, h); - Dtk::Widget::moveToCenter(this); - - updateModuleConfig(HideConfig); - updateModuleConfig(DisableConfig); - connect(m_dconfig, &DConfig::valueChanged, this, &MainWindow::updateModuleConfig); -} - -void MainWindow::configModule(QString url, ModuleObject *module) -{ - module->setFlagState(DCC_CONFIG_HIDDEN, m_hideModule.contains(url)); - module->setFlagState(DCC_CONFIG_DISABLED, m_disableModule.contains(url)); -} - -QSet findAddItems(QSet *oldSet, QSet *newSet) -{ - QSet addSet; - for (auto &&key : *newSet) { - if (!oldSet->contains(key)) { - addSet.insert(key); - } - } - return addSet; -} - -void MainWindow::updateModuleConfig(const QString &key) -{ - QSet oldModuleConfig; - QSet *newModuleConfig = nullptr; - uint32_t type = DCC_CONFIG_HIDDEN; - if (key == HideConfig) { - type = DCC_CONFIG_HIDDEN; - oldModuleConfig = m_hideModule; - newModuleConfig = &m_hideModule; - } else if (key == DisableConfig) { - type = DCC_CONFIG_DISABLED; - oldModuleConfig = m_disableModule; - newModuleConfig = &m_disableModule; - } - if (!newModuleConfig) - return; - - const auto &list = m_dconfig->value(key).toStringList(); -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - *newModuleConfig = QSet(list.begin(), list.end()); -#else - *newModuleConfig = QSet::fromList(list); -#endif - QSet addModuleConfig = findAddItems(&oldModuleConfig, newModuleConfig); - QSet removeModuleConfig = findAddItems(newModuleConfig, &oldModuleConfig); - for (auto &&url : addModuleConfig) { - ModuleObject *obj = DCC_NAMESPACE::GetModuleByUrl(m_rootModule, url); - if (obj) - obj->setFlagState(type, true); - } - for (auto &&url : removeModuleConfig) { - ModuleObject *obj = DCC_NAMESPACE::GetModuleByUrl(m_rootModule, url); - if (obj) - obj->setFlagState(type, false); - } -} - -void MainWindow::loadModules(bool async, const QStringList &dirs) -{ - onAddModule(m_rootModule); - m_pluginManager->loadModules(m_rootModule, async, dirs); - showModule(m_rootModule); -} - -QString MainWindow::GrandSearchSearch(const QString json) -{ - QJsonDocument jsonDocument = QJsonDocument::fromJson(json.toLocal8Bit().data()); - if (!jsonDocument.isNull()) { - QJsonObject jsonObject = jsonDocument.object(); - - // 处理搜索任务, 返回搜索结果 - QList> lstMsg = - m_searchWidget->searchResults(jsonObject.value("cont").toString()); - - for (auto msg : lstMsg) { - qDebug() << "name:" << msg; - } - - QJsonObject jsonResults; - QJsonArray items; - for (int i = 0; i < lstMsg.size(); i++) { - QJsonObject jsonObj; - jsonObj.insert("item", lstMsg[i].first); - jsonObj.insert("name", lstMsg[i].second); - jsonObj.insert("icon", ControlCenterIcon); - jsonObj.insert("type", "application/x-dde-control-center-xx"); - - items.insert(i, jsonObj); - } - - QJsonObject objCont; - objCont.insert("group", ControlCenterGroupName); - objCont.insert("items", items); - - QJsonArray arrConts; - arrConts.insert(0, objCont); - - jsonResults.insert("ver", jsonObject.value("ver")); - jsonResults.insert("mID", jsonObject.value("mID")); - jsonResults.insert("cont", arrConts); - - QJsonDocument document; - document.setObject(jsonResults); - - return document.toJson(QJsonDocument::Compact); - } - - return QString(); -} - -bool MainWindow::GrandSearchStop(const QString &json) -{ - Q_UNUSED(json) - return true; -} - -bool MainWindow::GrandSearchAction(const QString &json) -{ - QString searchName; - QJsonDocument jsonDocument = QJsonDocument::fromJson(json.toLocal8Bit().data()); - if (!jsonDocument.isNull()) { - QJsonObject jsonObject = jsonDocument.object(); - if (jsonObject.value("action") == "openitem") { - // 打开item的操作 - searchName = jsonObject.value("item").toString(); - } - } - - show(); - activateWindow(); - showPage(searchName, UrlType::Name); - return true; -} - -void MainWindow::toHome() -{ - showModule(m_rootModule); -} - -void MainWindow::updateMainView() -{ - // 在布局中,待实现 - // if (!m_mainView) - // return; - // // set background - // DPalette pa = DPaletteHelper::instance()->palette(m_mainView); - // QColor baseColor = palette().base().color(); - // DGuiApplicationHelper::ColorType ct = DGuiApplicationHelper::toColorType(baseColor); - // if (ct == DGuiApplicationHelper::LightType) { - // pa.setBrush(DPalette::ItemBackground, palette().base()); - // } else { - // baseColor = DGuiApplicationHelper::adjustColor(baseColor, 0, 0, +5, 0, 0, 0, 0); - // pa.setColor(DPalette::ItemBackground, baseColor); - // } - // DPaletteHelper::instance()->setPalette(m_mainView, pa); -} - -void MainWindow::clearPage(QWidget *const widget) -{ - QLayout *widgetLayout = widget->layout(); - if (!widgetLayout) - return; - - QList layouts; - layouts.append(widgetLayout); - while (!layouts.isEmpty()) { - QLayout *layout = layouts.takeFirst(); - while (!layout->isEmpty()) { - QLayoutItem *item = layout->takeAt(0); - QWidget *w = item->widget(); - if (w) - delete w; - QLayout *l = item->layout(); - if (l) - layouts.append(l); - } - delete layout; - } -} - -void MainWindow::configLayout(QBoxLayout *const layout) -{ - layout->setMargin(0); - layout->setSpacing(0); -} - -void MainWindow::showModule(ModuleObject *const module) -{ - if (m_currentModule.contains(module) && module->defultModule()) - return; - - m_backwardBtn->setVisible(module != m_rootModule); - QList modules; - - ModuleObject *child = module; - while (child) { - child->setCurrentModule(child->defultModule()); - modules.append(child); - child = child->currentModule(); - } - child = module; - ModuleObject *p = module->getParent(); - while (p) { - p->setCurrentModule(child); - modules.prepend(p); - child = p; - p = p->getParent(); - } - m_currentModule = modules; -} - -void MainWindow::resizeCurrentModule(int size) -{ - m_currentModule = m_currentModule.mid(0, size); -} - -void MainWindow::onAddModule(ModuleObject *const module) -{ - QString url = DCC_NAMESPACE::GetUrlByModule(module); - - QList> modules; - modules.append({ url, module }); - while (!modules.isEmpty()) { - auto it = modules.takeFirst(); - ModuleObject *obj = it.second; - configModule(it.first, obj); - connect(obj, &ModuleObject::insertedChild, this, &MainWindow::onAddModule); - connect(obj, &ModuleObject::removedChild, this, &MainWindow::onRemoveModule); - connect(obj, &ModuleObject::childStateChanged, this, &MainWindow::onChildStateChanged); - connect(obj, &ModuleObject::moduleDataChanged, this, &MainWindow::onModuleDataChanged); - connect(obj, - &ModuleObject::triggered, - this, - &MainWindow::onTriggered, - Qt::QueuedConnection); - m_searchWidget->addModule(obj); - for (auto &&tmpObj : obj->childrens()) { - modules.append({ it.first + "/" + tmpObj->name(), tmpObj }); - } - } -} - -void MainWindow::onRemoveModule(ModuleObject *const module) -{ - QList modules; - modules.append(module); - while (!modules.isEmpty()) { - ModuleObject *obj = modules.takeFirst(); - disconnect(obj, nullptr, this, nullptr); - m_searchWidget->removeModule(obj); - modules.append(obj->childrens()); - } - // 最后一个是滚动到,不参与比较 - if (!m_currentModule.isEmpty() - && std::any_of(m_currentModule.cbegin(), m_currentModule.cend() - 1, [module](auto &&data) { - return data == module; - })) - toHome(); -} - -void MainWindow::onTriggered() -{ - QObject *qobj = sender(); - ModuleObject *module = qobject_cast(sender()); - ModuleObject *obj = dynamic_cast(sender()); - if (obj && qobj && module) { - showModule(obj); - } -} - -void MainWindow::onChildStateChanged(ModuleObject *const child, uint32_t flag, bool state) -{ - if (ModuleObject::IsHiddenFlag(flag)) { - if (state) - onRemoveModule(child); - else - onAddModule(child); - } -} - -void MainWindow::onModuleDataChanged() -{ - ModuleObject *module = qobject_cast(sender()); - if (module) { - m_searchWidget->removeModule(module); - m_searchWidget->addModule(module); - } -} - -void MainWindow::openManual() -{ - QString helpTitle; - if (1 < m_currentModule.count()) - helpTitle = m_currentModule[1]->name(); - if (helpTitle.isEmpty()) - helpTitle = "controlcenter"; - - const QString &dmanInterface = "com.deepin.Manual.Open"; - QDBusInterface interface(dmanInterface, - "/com/deepin/Manual/Open", - dmanInterface, - QDBusConnection::sessionBus()); - - QDBusMessage reply = interface.call("OpenTitle", "dde", helpTitle); - if (reply.type() == QDBusMessage::ErrorMessage) { - qWarning() << "Open manual failed, error message:" << reply.errorMessage(); - } -} - -QString MainWindow::getAllModule() const -{ - ModuleObject *root = m_rootModule; - QList> modules; - for (auto &&child : root->childrens()) { - modules.append({ child, { child->name(), child->displayName() } }); - } - - QJsonArray arr; - while (!modules.isEmpty()) { - const auto &urlInfo = modules.takeFirst(); - QJsonObject obj; - obj.insert("url", urlInfo.second.at(0)); - obj.insert("displayName", urlInfo.second.at(1)); - arr.append(obj); - const QList &children = urlInfo.first->childrens(); - for (auto it = children.crbegin(); it != children.crend(); ++it) - modules.prepend({ *it, - { urlInfo.second.at(0) + "/" + (*it)->name(), - urlInfo.second.at(1) + "/" + (*it)->displayName() } }); - } - - QJsonDocument doc; - doc.setArray(arr); - return doc.toJson(QJsonDocument::Compact); -} diff --git a/dcc-old/src/frame/mainwindow.h b/dcc-old/src/frame/mainwindow.h deleted file mode 100644 index 48392a283f..0000000000 --- a/dcc-old/src/frame/mainwindow.h +++ /dev/null @@ -1,106 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include - -#include - -#include - -/*************forward declaring start****************/ - -DCORE_BEGIN_NAMESPACE -class DConfig; -DCORE_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DBackgroundGroup; -class DIconButton; -class DListView; -DWIDGET_END_NAMESPACE - -class QStandardItemModel; -class QBoxLayout; -class QScrollArea; -class QAbstractItemView; - -namespace DCC_NAMESPACE { - -class ModuleObject; -class PluginManager; -class SearchWidget; - -/**************forward declaring end*****************/ - -class MainWindow : public Dtk::Widget::DMainWindow, protected QDBusContext -{ - Q_OBJECT -public: - enum class UrlType { Name, DisplayName }; - explicit MainWindow(QWidget *parent = nullptr); - virtual ~MainWindow() override; - - /** - * @brief 显示路径请求的页面,用于搜索接口 - * @param url 路径地址,从左至右搜索,如路径错误,只显示已搜索出的模块 - */ - void showPage(const QString &url, const UrlType &uType); - /** - * @brief 显示路径请求的页面,用于DBus接口,会延时到所有插件加载完成再调用 - * @param url 路径地址 - */ - void showPage(const QString &url); - QString getAllModule() const; - void loadModules(bool async, const QStringList &dirs); - - QString GrandSearchSearch(const QString json); - bool GrandSearchStop(const QString &json); - bool GrandSearchAction(const QString &json); - -protected: - void changeEvent(QEvent *event) override; - void closeEvent(QCloseEvent *event) override; - virtual bool eventFilter(QObject *watched, QEvent *event) override; - -private: - void openManual(); - void initUI(); - void initConfig(); - void configModule(QString url, ModuleObject *module); - void toHome(); - void updateMainView(); - void clearPage(QWidget *const widget); - void configLayout(QBoxLayout *const layout); - void showPage(ModuleObject *const module, const QString &url, const UrlType &uType); - ModuleObject *findModule(ModuleObject *const module, - const QString &url, - const UrlType &uType, - bool fuzzy = true); - void showModule(ModuleObject *const module); - void resizeCurrentModule(int size); - -private Q_SLOTS: - void onAddModule(ModuleObject *const module); - void onRemoveModule(ModuleObject *const module); - void onTriggered(); - void onChildStateChanged(ModuleObject *const child, uint32_t flag, bool state); - void onModuleDataChanged(); - void updateModuleConfig(const QString &key); - -private: - Dtk::Widget::DIconButton *m_backwardBtn; // 回退按钮 - Dtk::Core::DConfig *m_dconfig; // 配置 - SearchWidget *m_searchWidget; // 搜索框 - ModuleObject *m_rootModule; - QList m_currentModule; - PluginManager *m_pluginManager; - - QSet m_hideModule; - QSet m_disableModule; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/frame/pluginmanager.cpp b/dcc-old/src/frame/pluginmanager.cpp deleted file mode 100644 index f08ba363df..0000000000 --- a/dcc-old/src/frame/pluginmanager.cpp +++ /dev/null @@ -1,331 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "pluginmanager.h" - -#include "interface/moduleobject.h" -#include "interface/plugininterface.h" -#include "utils.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcFramePluginManager, "dcc-frame-pluginManager") - -#include -#include - -std::mutex PLUGIN_LOAD_GUARD; - -using namespace DCC_NAMESPACE; - -const static QString TranslateReadDir = QStringLiteral(TRANSLATE_READ_DIR); - -bool comparePluginLocation(PluginInterface const *target1, PluginInterface const *target2) -{ - return target1->location() < target2->location(); -} - -PluginData getModule(const QPair &pair) -{ - PluginData data = pair.second; - if (data.Plugin) { - QElapsedTimer et; - et.start(); - data.Module = data.Plugin->module(); - data.Module->setParent(nullptr); - data.Module->moveToThread(qApp->thread()); - qCInfo(DdcFramePluginManager) << QString("get module: %1 end, using time: %2 ms") - .arg(data.Module->name()) - .arg(et.elapsed()); - emit pair.first->loadedModule(data); - } - return data; -} - -PluginData loadPlugin(const QPair &pair) -{ - PluginData data; - data.Plugin = nullptr; - data.Module = nullptr; - data.Location = "-1"; - auto &&fileName = pair.second; - QFileInfo fileInfo(fileName); - QSettings settings(DCC_NAMESPACE::CollapseConfgPath, QSettings::IniFormat); - settings.beginGroup("collapse"); - const QByteArray &md5 = settings.value(fileInfo.fileName()).toByteArray(); - settings.endGroup(); - if (DCC_NAMESPACE::getFileMd5(fileName).toHex() == md5) { - qCWarning(DdcFramePluginManager) - << QString("The Plugin: %1 crashed, will not load!").arg(fileName); - return data; - } - qCInfo(DdcFramePluginManager) << "loading plugin: " << fileName; - - QElapsedTimer et; - et.start(); - QScopedPointer loader(new QPluginLoader(fileName)); - if (!loader->load()) { - qCWarning(DdcFramePluginManager) << QString("The plugin: %1 load failed! error message: %2") - .arg(fileName, loader->errorString()); - return data; - } - const QJsonObject &meta = loader->metaData().value("MetaData").toObject(); - - PluginInterface *plugin = qobject_cast(loader->instance()); - if (!plugin) { - qCWarning(DdcFramePluginManager) << QString("Can't read plugin: %1").arg(fileName); - loader->unload(); - return data; - } - - // FIXME: load all plugin under treeland - static QByteArray compositor = qgetenv("DDE_CURRENT_COMPOSITOR"); - static QStringList allowedUnderTreeland{ "accounts", - "display", - "systeminfo", - "Default Applications" }; - - if (compositor.compare("treeland", Qt::CaseInsensitive) == 0 - and !allowedUnderTreeland.contains(plugin->name())) { - qCWarning(DdcFramePluginManager) - << QString("plugin %1 has been banned under treeland.").arg(plugin->name()); - loader->unload(); - return data; - } - - data.Plugin = plugin; - data.Follow = plugin->follow(); - data.Location = plugin->location(); - data.Plugin->setParent(nullptr); - data.Plugin->moveToThread(qApp->thread()); - qCInfo(DdcFramePluginManager) - << QString("load plugin: %1 end, using time: %2 ms").arg(fileName).arg(et.elapsed()); - return data; -} - -PluginManager::PluginManager(QObject *parent) - : QObject(parent) - , m_rootModule(nullptr) -{ - qRegisterMetaType("PluginData"); -} - -void PluginManager::loadModules(ModuleObject *root, bool async, const QStringList &dirs) -{ - if (!root) - return; - m_rootModule = root; - - connect(this, &PluginManager::loadedModule, root, [this](const PluginData &data) { - initModules(data); - }); - - QFileInfoList pluginList; - for (const auto &dir : dirs) { - QDir plugindir(dir); - if (plugindir.exists()) { - pluginList += plugindir.entryInfoList(); - } - } - - QSet filenames; - QList> libraryNames; - for (auto &lib : pluginList) { - const QString &filepath = lib.absoluteFilePath(); - if (!QLibrary::isLibrary(filepath)) { - continue; - } - auto filename = lib.fileName(); - // 不加载文件名重复的模块 - if (filenames.contains(filename)) { - continue; - } - filenames.insert(filename); - libraryNames.append({ this, filepath }); - m_pluginsStatus.push_back(filepath); - } - - QFutureWatcher *watcher = new QFutureWatcher(this); - std::function(const QPair &pair)> - loadPluginAndRecord = [](const QPair &pair) { - auto plugin = loadPlugin(pair); - return QPair{ plugin, pair.second }; - }; - auto results = QtConcurrent::mapped(libraryNames, loadPluginAndRecord).results(); - using Dtk::Gui::DGuiApplicationHelper; - for (const auto &re : results) { - if (re.first.Plugin) { - QString qmFile = QString("%1/%2_%3.qm") - .arg(TranslateReadDir) - .arg(re.first.Plugin->name()) - .arg(QLocale::system().name()); - if (!QFile::exists(qmFile)) { - continue; - } - DGuiApplicationHelper::loadTranslator(re.first.Plugin->name(), - { TranslateReadDir }, - QList() << QLocale::system()); - } - } - std::function)> loadModuleAndRecord = - [this](const QPair &data) { - if (data.first.Plugin) { - getModule({ this, data.first }); - } - std::lock_guard guard(PLUGIN_LOAD_GUARD); - m_pluginsStatus.remove(m_pluginsStatus.indexOf(data.second)); - return data.first; - }; - m_future = QtConcurrent::mapped(results, loadModuleAndRecord); - connect(watcher, &QFutureWatcher::finished, this, [this] { - // 加载非一级插件 - insertChild(true); - emit loadAllFinished(); - }); - watcher->setFuture(m_future); - - QtConcurrent::run([this] { - // NOTE: wait for all plugin for 10 seconds, if timeout and run with sync - // then watcher will be finished - QThread::sleep(10); - std::lock_guard guard(PLUGIN_LOAD_GUARD); - if (!m_pluginsStatus.isEmpty()) { - QString logMessage = "Some plugins not loaded in time: "; - for (const QString &value : m_pluginsStatus) { - logMessage.push_back(value.split('/').last()); - logMessage.push_back(";"); - } - qCWarning(DdcFramePluginManager) << logMessage; - } - }); - if (!async) { - for (int i = 0; i < 50; i++) { - QThread::msleep(100); - if (m_pluginsStatus.isEmpty()) { - break; - } - } - } -} - -void PluginManager::cancelLoad() -{ - if (!loadFinished()) { - m_future.cancel(); - } -} - -bool PluginManager::loadFinished() const -{ - return m_pluginsStatus.isEmpty(); -} - -ModuleObject *PluginManager::findModule(ModuleObject *module, const QString &name) -{ - if (!module) - return nullptr; - - std::queue qbfs; - qbfs.push(module); - while (!qbfs.empty()) { - if (qbfs.front()->name() == name) - return qbfs.front(); - for (auto &&child : qbfs.front()->childrens()) { - qbfs.push(child); - } - qbfs.pop(); - } - - return nullptr; -} - -void PluginManager::initModules(const PluginData &data) -{ - if (data.Follow.isEmpty()) { // root plugin - data.Module->setProperty("location", data.Location); - if (!m_rootModule->hasChildrens()) { - m_rootModule->appendChild(data.Module); - insertChild(false); - return; - } - if (data.Location.isEmpty()) { - m_rootModule->appendChild(data.Module); - insertChild(false); - return; - } - bool isInt; - int curLocation = data.Location.toInt(&isInt); - - int i = m_rootModule->childrens().count() - 1; - for (; i >= 0; i--) { - if (isInt) { - bool ok = false; - const QString &location = - m_rootModule->childrens().at(i)->property("location").toString(); - int tmpLocation = location.toInt(&ok); - if (ok && tmpLocation >= 0 && curLocation > tmpLocation) { - break; - } - } else { - if (m_rootModule->children(i)->name() == data.Location) - break; - } - } - m_rootModule->insertChild(i + 1, data.Module); - insertChild(false); - } else { // other plugin - m_datas.append(data); - } -} - -void PluginManager::insertChild(bool force) -{ - bool loop = true; - while (loop) { - loop = false; - for (auto it = m_datas.begin(); it != m_datas.end();) { - auto &&module = DCC_NAMESPACE::GetModuleByUrl(m_rootModule, it->Follow); - if (module) { - bool isInt; - int locationIndex = it->Location.toInt(&isInt); - if (!isInt) { - for (locationIndex = 0; locationIndex < module->getChildrenSize(); - ++locationIndex) { - if (module->children(locationIndex)->name() == it->Location) { - ++locationIndex; - break; - } - } - } - module->insertChild(locationIndex, it->Module); - loop = true; - it = m_datas.erase(it); - } else - ++it; - } - } - if (force) { - // 释放加不进去的module - for (auto &&data : m_datas) { - qCWarning(DdcFramePluginManager) - << "Unknown Module! name:" << data.Module->name() << "follow:" << data.Follow - << "location:" << data.Location; - delete data.Module; - } - m_datas.clear(); - } -} diff --git a/dcc-old/src/frame/pluginmanager.h b/dcc-old/src/frame/pluginmanager.h deleted file mode 100644 index b06bc87f21..0000000000 --- a/dcc-old/src/frame/pluginmanager.h +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "utils.h" - -#include -#include -#include - -class QPluginLoader; - -namespace DCC_NAMESPACE { -class ModuleObject; -class PluginInterface; -class LayoutManager; -} // namespace DCC_NAMESPACE - -struct PluginData -{ - QString Follow; - QString Location; - DCC_NAMESPACE::ModuleObject *Module; - DCC_NAMESPACE::PluginInterface *Plugin; -}; - -Q_DECLARE_METATYPE(PluginData) - -namespace DCC_NAMESPACE { -class PluginManager : public QObject -{ - Q_OBJECT -public: - explicit PluginManager(QObject *parent = nullptr); - void loadModules(ModuleObject *root, - bool async = true, - const QStringList &dirs = { PLUGIN_DIRECTORY }); - bool loadFinished() const; - -public Q_SLOTS: - void cancelLoad(); - -Q_SIGNALS: - void loadedModule(const PluginData &data); - void loadAllFinished(); - -private: - ModuleObject *findModule(ModuleObject *module, const QString &name); - void initModules(const PluginData &data); - void insertChild(bool force); - - QList m_datas; // cache for other plugin - ModuleObject *m_rootModule; // root module from MainWindow - QFuture m_future; - QVector m_pluginsStatus; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/frame/searchwidget.cpp b/dcc-old/src/frame/searchwidget.cpp deleted file mode 100644 index 633808ba28..0000000000 --- a/dcc-old/src/frame/searchwidget.cpp +++ /dev/null @@ -1,397 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "searchwidget.h" -#include "completerview.h" -#include "interface/moduleobject.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#if DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 0, 0) -# define USE_DCIICON -#endif - -#ifdef USE_DCIICON -# include -# include -# include -DGUI_USE_NAMESPACE -#endif - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -const QStringList &FilterText{ "-", "--", "-->", "->", ">", "/" }; -enum CompleterRole { - UrlRole = Qt::UserRole + 1, - SearchRole, - DisplayNameRole, - ModuleRole, -}; - -DccCompleter::DccCompleter(QObject *parent) - : QCompleter(parent) -{ -} - -DccCompleter::DccCompleter(QAbstractItemModel *model, QObject *parent) - : QCompleter(model, parent) -{ -} - -bool DccCompleter::eventFilter(QObject *o, QEvent *e) -{ - // 匹配列表隐藏时,将滑动条恢复到顶部 - if (e->type() == QEvent::Hide) { - popup()->scrollToTop(); - } - - if (e->type() == QEvent::FocusOut) { - return QCompleter::eventFilter(o, e); - } - - if (e->type() == QEvent::KeyPress) { - QKeyEvent *ke = static_cast(e); - QModelIndex keyIndex; - switch (ke->key()) { - case Qt::Key_Up: { - if (popup()->currentIndex().row() == 0) { - keyIndex = popup()->model()->index(popup()->model()->rowCount() - 1, 0); - popup()->setCurrentIndex(keyIndex); - } else { - keyIndex = popup()->model()->index(popup()->currentIndex().row() - 1, 0); - popup()->setCurrentIndex(keyIndex); - } - return true; - } - case Qt::Key_Down: { - if (popup()->currentIndex().row() == popup()->model()->rowCount() - 1) { - keyIndex = popup()->model()->index(0, 0); - popup()->setCurrentIndex(keyIndex); - } else { - keyIndex = popup()->model()->index(popup()->currentIndex().row() + 1, 0); - popup()->setCurrentIndex(keyIndex); - } - return true; - } - case Qt::Key_Return: - case Qt::Key_Enter: - if (popup()->isVisible() && !popup()->currentIndex().isValid()) { - keyIndex = popup()->model()->index(0, 0); - popup()->setCurrentIndex(keyIndex); - } - popup()->hide(); - //原因:在QCompleter上执行回车操作会触发它的activated()信号,回车也会触发DLineEdit的returnPressed()信号 - //导致一个操作触发两次执行,模块load()会被执行两次,导致程序崩溃 - //方法:在QCompleter的eventFilter()函数中对回车操作做过滤,直接触发DLineEdit的returnPressed()信号, - //不继续将事件传给QCompleter,保证回车只触发一次操作 - Q_EMIT static_cast(this->parent())->returnPressed(); - return true; - } - } - return QCompleter::eventFilter(o, e); -} - -DccCompleterStyledItemDelegate::DccCompleterStyledItemDelegate(QObject *parent) - : QStyledItemDelegate(parent) -{ -} - -void DccCompleterStyledItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) - ? QPalette::Normal - : QPalette::Disabled; - if (cg == QPalette::Normal && !(option.state & QStyle::State_Active)) { - cg = QPalette::Inactive; - } - - if (option.showDecorationSelected && (option.state & (QStyle::State_Selected | QStyle::State_MouseOver))) { - painter->fillRect(option.rect, option.palette.brush(cg, QPalette::Highlight)); - } - - ModuleObject *p = index.data(CompleterRole::ModuleRole).value(); - if (p->getParent()) { - while (p->getParent()->getParent()) { - p = p->getParent(); - } - } - QVariant iconVar = p->icon(); - QRect iconRect = calculateIconRect(option.rect); -#ifdef USE_DCIICON - DDciIcon dciIcon; - if (iconVar.canConvert()) { - dciIcon = iconVar.value(); - } else if (iconVar.type() == QVariant::String) { - QString iconstr = iconVar.toString(); - if (!iconstr.isEmpty()) { - dciIcon = DDciIcon::fromTheme(iconstr); - if (dciIcon.isNull()) - dciIcon = DDciIcon(iconstr); - } - } - if (!dciIcon.isNull()) { - DDciIcon::Mode dciMode = DDciIcon::Normal; - if (option.state & QStyle::State_Enabled) { - if (option.state & (QStyle::State_Sunken | QStyle::State_Selected)) { - dciMode = DDciIcon::Pressed; - } else if (option.state & QStyle::State_MouseOver) { - dciMode = DDciIcon::Hover; - } - } else { - dciMode = DDciIcon::Disabled; - } - - DDciIcon::Theme theme = DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType ? DDciIcon::Dark : DDciIcon::Light; - - painter->save(); - painter->setBrush(Qt::NoBrush); - dciIcon.paint(painter, iconRect, painter->device() ? painter->device()->devicePixelRatioF() : qApp->devicePixelRatio(), theme, dciMode, option.decorationAlignment); - painter->restore(); - iconVar.clear(); - } -#endif - if (iconVar.isValid()) { - QIcon icon; - if (iconVar.type() == QVariant::Icon) { - icon = iconVar.value(); - } else if (iconVar.type() == QVariant::String) { - const QString &iconstr = iconVar.toString(); - icon = DIconTheme::findQIcon(iconstr); - if (icon.isNull()) - icon = QIcon(iconstr); - } - if (!icon.isNull()) { - QIcon::Mode mode = QIcon::Normal; - if (!(option.state & QStyle::State_Enabled)) - mode = QIcon::Disabled; - else if (option.state & QStyle::State_Selected) - mode = QIcon::Selected; - - QIcon::State state = (option.state & QStyle::State_Open) ? QIcon::On : QIcon::Off; - icon.paint(painter, iconRect, option.decorationAlignment, mode, state); - } - } - // draw text - QRect textRect = calculateTextRect(option.rect); - auto font = option.font; - font.setPixelSize(DFontSizeManager::instance()->fontPixelSize(DFontSizeManager::T6)); - const QFontMetrics fontMetrics(font); - QString newText = fontMetrics.elidedText(index.data(Qt::DisplayRole).toString(), Qt::ElideRight, textRect.width()); - - if (option.state & (QStyle::State_Selected | QStyle::State_MouseOver)) { - painter->setPen(option.palette.color(cg, QPalette::HighlightedText)); - } else { - painter->setPen(option.palette.color(cg, QPalette::Text)); - } - painter->setFont(font); - painter->drawText(textRect, Qt::AlignVCenter, newText); -} - -QSize DccCompleterStyledItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - QSize s = QStyledItemDelegate::sizeHint(option, index); - s.setHeight(DSizeModeHelper::element(24, 36)); - return s; -} - -bool DccCompleterStyledItemDelegate::helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index) -{ - switch (event->type()) { - case QEvent::WhatsThis: - case QEvent::ToolTip: { - QString text = index.data(Qt::DisplayRole).toString(); - auto font = option.font; - font.setPixelSize(DFontSizeManager::instance()->fontPixelSize(DFontSizeManager::T6)); - const QFontMetrics fontMetrics(font); - if (fontMetrics.size(0, text).width() <= calculateTextRect(option.rect).width()) { - QToolTip::showText(event->globalPos(), QString()); - event->setAccepted(true); - return true; - } - } break; - default: - break; - } - return QStyledItemDelegate::helpEvent(event, view, option, index); -} - -QRect DccCompleterStyledItemDelegate::calculateIconRect(const QRect &rect) const -{ - return QRect(8, rect.y() + (rect.height() - 24) / 2, 24, 24); -} - -QRect DccCompleterStyledItemDelegate::calculateTextRect(const QRect &rect) const -{ - return rect.adjusted(calculateIconRect(rect).right() + 8, 0, -8, 0); -} - -SearchWidget::SearchWidget(QWidget *parent) - : DSearchEdit(parent) - , m_model(new QStandardItemModel(this)) - , m_completer(new DccCompleter(m_model, this)) - , m_completerView(new CompleterView(this)) - , m_bIsChinese(false) -{ - const QString &language = QLocale::system().name(); - m_bIsChinese = language == "zh_CN" || language == "zh_HK" || language == "zh_TW"; - - DccCompleterStyledItemDelegate *delegate = new DccCompleterStyledItemDelegate(m_completer); - m_completer->setPopup(m_completerView); - m_completer->popup()->setItemDelegate(delegate); - m_completer->popup()->setAttribute(Qt::WA_InputMethodEnabled); - - m_completer->setFilterMode(Qt::MatchContains); //设置QCompleter支持匹配字符搜索 - m_completer->setCaseSensitivity(Qt::CaseInsensitive); //这个属性可设置进行匹配时的大小写敏感性 - m_completer->setWrapAround(false); - m_completer->installEventFilter(this); - m_completer->setWidget(lineEdit()); //设置自动补全时弹出时相应位置的widget - - m_completer->setCompletionRole(CompleterRole::SearchRole); - - connect(this, &DSearchEdit::textChanged, this, &SearchWidget::onSearchTextChange); - - connect(this, &DSearchEdit::returnPressed, this, &SearchWidget::onReturnPressed); - - //鼠标点击后直接页面跳转(存在同名信号) - connect(m_completer, qOverload(&QCompleter::activated), this, &SearchWidget::onReturnPressed); -} - -void SearchWidget::setModuleObject(ModuleObject *const module) -{ - m_rootModule = module; -} - -QList> SearchWidget::searchResults(const QString text) -{ - QList> result; - m_completer->setCompletionPrefix(text); - QAbstractItemModel *model = m_completer->completionModel(); - for (int i = 0; i < model->rowCount(); i++) { - const QModelIndex &index = model->index(i, 0); - result.append({ index.data(CompleterRole::UrlRole).toString(), index.data().toString() }); - } - return result; -} - -void SearchWidget::addModule(ModuleObject *const module) -{ - if (ModuleObject::IsHidden(module) || module->noSearch() || (module->displayName().isEmpty() && module->contentText().isEmpty())) - return; - - QList moduleurl; - QStringList urls; - QStringList displayNames; - ModuleObject *p = module; - while (p->getParent()) { - if (ModuleObject::IsHidden(p)) - return; - moduleurl.prepend(p); - urls.prepend(p->name()); - const QString &&displayName = p->displayName(); - if (!displayName.isEmpty()) { - displayNames.prepend(displayName); - } - p = p->getParent(); - } - - QString text = convertUrl(displayNames); - if (m_allText.contains(text)) { - return; - } - m_allText.insert(text); - QStandardItem *item = new QStandardItem; - item->setText(text); - item->setToolTip(text); - item->setData(urls.join("/"), CompleterRole::UrlRole); - item->setData(QVariant::fromValue((ModuleObject *)(module)), CompleterRole::ModuleRole); - QString searchStr = module->displayName(); - item->setData(searchStr, CompleterRole::DisplayNameRole); - - searchStr.remove(' '); - QStringList searchList(searchStr); - if (m_bIsChinese) { - searchStr.remove(QRegularExpression(R"([a-zA-Z\d]+)")); - QStringList displaynameList = Dtk::Core::Chinese2Pinyin(searchStr).split(QRegularExpression(R"(\d+)")); - if (!displaynameList.isEmpty()) { - searchList << displaynameList.join(QString()); - QString initial; - for (auto &&str : displaynameList) { - if (!str.isEmpty()) - initial.append(str.at(0)); - } - searchList << initial; - } - } - item->setData(searchList.join("\n"), CompleterRole::SearchRole); - m_model->appendRow(item); -} - -void SearchWidget::removeModule(ModuleObject *const module) -{ - for (int i = 0; i < m_model->rowCount(); i++) { - if (m_model->index(i, 0).data(CompleterRole::ModuleRole).value() == module) { - m_allText.remove(m_model->index(i, 0).data().toString()); - m_model->removeRow(i); - break; - } - } -} - -QString SearchWidget::convertUrl(const QStringList &displayNames) -{ - return displayNames.join(" / "); -} - -void SearchWidget::onReturnPressed() -{ - if (!text().isEmpty()) { - // enter defalt set first - const QString &url = m_completer->popup()->currentIndex().data(CompleterRole::UrlRole).toString(); - if (!url.isEmpty()) { - blockSignals(true); - setText(m_completer->popup()->currentIndex().data(CompleterRole::DisplayNameRole).toString()); - blockSignals(false); - Q_EMIT notifySearchUrl(url); - } - } -} - -void SearchWidget::onSearchTextChange(const QString &text) -{ - const QString &t = text.simplified(); - if (FilterText.contains(t)) - return; - //发送该信号,用于解决外部直接setText的时候,搜索的图标不消失的问题 - Q_EMIT focusChanged(true); - //实现自动补全 - onAutoComplete(t); - - m_completerView->resize(m_completerView->width(), m_completerView->height() + m_completerView->margin()); - // 当搜索popup弹窗在搜索框上方时,因为resize导致popup的高度增加了margin(),所以需要上移margin(),否则会遮盖搜索框,再增加6x与搜索框间隔 - if (this->mapToGlobal(this->geometry().topLeft()).y() > m_completerView->geometry().y()) { - m_completerView->move(m_completerView->x(), m_completerView->y() - m_completerView->margin() - 6); - } -} - -void SearchWidget::onAutoComplete(const QString &text) -{ - auto *widget = m_completer->popup(); - if (widget && text.isEmpty()) { - widget->hide(); - } else { - QString str = text; - str.remove(' '); - m_completer->setCompletionPrefix(str); - m_completer->complete(rect().adjusted(0, 0, 0, 8)); - } -} diff --git a/dcc-old/src/frame/searchwidget.h b/dcc-old/src/frame/searchwidget.h deleted file mode 100644 index ec9d92b43d..0000000000 --- a/dcc-old/src/frame/searchwidget.h +++ /dev/null @@ -1,76 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include -#include -#include - -class QStandardItemModel; - -namespace DCC_NAMESPACE { - -class ModuleObject; -class CompleterView; - -class DccCompleter : public QCompleter -{ -public: - DccCompleter(QObject *parent = nullptr); - DccCompleter(QAbstractItemModel *model, QObject *parent = nullptr); - -public: - bool eventFilter(QObject *o, QEvent *e) override; -}; - -class DccCompleterStyledItemDelegate : public QStyledItemDelegate -{ - Q_OBJECT -public: - explicit DccCompleterStyledItemDelegate(QObject *parent = nullptr); - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; - -protected: - bool helpEvent(QHelpEvent *event, QAbstractItemView *view, const QStyleOptionViewItem &option, const QModelIndex &index) override; - QRect calculateIconRect(const QRect &rect) const; - QRect calculateTextRect(const QRect &rect) const; -}; - -class SearchWidget : public Dtk::Widget::DSearchEdit -{ - Q_OBJECT -public: - explicit SearchWidget(QWidget *parent = nullptr); - - void setModuleObject(ModuleObject *const module); - QList> searchResults(const QString text); - - void addModule(ModuleObject *const module); - void removeModule(ModuleObject *const module); - -signals: - void notifySearchUrl(const QString &url); - -private: - QString convertUrl(const QStringList &displayNames); - -private slots: - void onReturnPressed(); - void onSearchTextChange(const QString &text); - void onAutoComplete(const QString &text); - -private: - QStandardItemModel *m_model; - DccCompleter *m_completer; - CompleterView *m_completerView; - ModuleObject *m_rootModule; - bool m_bIsChinese; - QSet m_allText; // 去重 -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/frame/utils.cpp b/dcc-old/src/frame/utils.cpp deleted file mode 100644 index 00d53593cb..0000000000 --- a/dcc-old/src/frame/utils.cpp +++ /dev/null @@ -1,81 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "utils.h" -#include "interface/moduleobject.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; - -QByteArray DCC_NAMESPACE::getFileMd5(const QString &filePath) -{ - QFile localFile(filePath); - - if (!localFile.open(QFile::ReadOnly)) { - qDebug() << "file open error."; - return 0; - } - - QCryptographicHash ch(QCryptographicHash::Md5); - - quint64 totalBytes = 0; - quint64 bytesWritten = 0; - quint64 bytesToWrite = 0; - quint64 loadSize = 1024 * 4; - QByteArray buf; - - totalBytes = localFile.size(); - bytesToWrite = totalBytes; - - while (true) { - if (bytesToWrite > 0) { - buf = localFile.read(qMin(bytesToWrite, loadSize)); - ch.addData(buf); - bytesWritten += buf.length(); - bytesToWrite -= buf.length(); - buf.resize(0); - } else { - break; - } - - if (bytesWritten == totalBytes) { - break; - } - } - - localFile.close(); - return ch.result(); -} - -ModuleObject *DCC_NAMESPACE::GetModuleByUrl(ModuleObject *const root, const QString &url) -{ - ModuleObject *obj = root; - ModuleObject *parent = nullptr; - QStringList names = url.split('/'); - while (!names.isEmpty() && obj) { - const QString &name = names.takeFirst(); - parent = obj; - obj = nullptr; - for (auto &&child : parent->childrens()) { - if (child->name() == name) { - obj = child; - break; - } - } - } - return names.isEmpty() ? obj : nullptr; -} - -QString DCC_NAMESPACE::GetUrlByModule(ModuleObject *const module) -{ - QStringList url; - ModuleObject *obj = module; - while (obj && obj->getParent()) { - url.prepend(obj->name()); - obj = obj->getParent(); - } - return url.join('/'); -} diff --git a/dcc-old/src/frame/utils.h b/dcc-old/src/frame/utils.h deleted file mode 100644 index 55eb5a5300..0000000000 --- a/dcc-old/src/frame/utils.h +++ /dev/null @@ -1,27 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" - -#include -#include - -#define IS_SERVER_SYSTEM (DSysInfo::UosServer == DSysInfo::uosType()) // 是否是服务器版 -#define IS_COMMUNITY_SYSTEM (DSysInfo::UosCommunity == DSysInfo::uosEditionType()) // 是否是社区版 -#define IS_PROFESSIONAL_SYSTEM (DSysInfo::UosProfessional == DSysInfo::uosEditionType()) // 是否是专业版 -#define IS_HOME_SYSTEM (DSysInfo::UosHome == DSysInfo::uosEditionType()) // 是否是个人版 -#define IS_EDUCATION_SYSTEM (DSysInfo::UosEducation == DSysInfo::uosEditionType()) // 是否是教育版 -#define IS_DEEPIN_DESKTOP (DSysInfo::DeepinDesktop == DSysInfo::deepinType()) // 是否是Deepin桌面 - -namespace DCC_NAMESPACE { -class ModuleObject; - -static const QString &CollapseConfgPath = QDir::tempPath() + "/dde-control-center-collapse.conf"; -QByteArray getFileMd5(const QString &filePath); -ModuleObject *GetModuleByUrl(ModuleObject *const root, const QString &url); -QString GetUrlByModule(ModuleObject *const module); - -inline const QString PLUGIN_DIRECTORY = QStringLiteral(DCC_DefaultModuleDirectory); -inline const QString OLD_PLUGIN_DIRECTORY = QStringLiteral("/usr/lib/dde-control-center/modules/"); -} diff --git a/dcc-old/src/interface/hlistmodule.cpp b/dcc-old/src/interface/hlistmodule.cpp deleted file mode 100644 index 257a68de0c..0000000000 --- a/dcc-old/src/interface/hlistmodule.cpp +++ /dev/null @@ -1,160 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "hlistmodule.h" -#include "moduledatamodel.h" -#include "tabitemdelegate.h" -#include "tabview.h" -#include "pagemodule.h" - -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { -class HListModulePrivate -{ -public: - explicit HListModulePrivate(HListModule *parent) - : q_ptr(parent) - , m_view(nullptr) - , m_layout(nullptr) - { - } - - void onCurrentModuleChanged(ModuleObject *child) - { - if (!m_layout) - return; - if (m_layout->count() > 1) { - QLayoutItem *item = m_layout->takeAt(1); - delete item->widget(); - delete item; - } - if (child) { - PageModule *module = qobject_cast(child); - if(module) { - module->setContentsMargins(60, 0, 60, 0); - module->setMaximumWidth(DCC_PAGEMODULE_MAX_WIDTH + 60 * 2); - } - m_layout->addWidget(child->activePage(), 60); - ModuleDataModel *model = static_cast(m_view->model()); - m_view->setCurrentIndex(model->index(child)); - } - } - - QWidget *page() - { - Q_Q(HListModule); - QWidget *parentWidget = new QWidget(); - m_layout = new QVBoxLayout(parentWidget); - m_layout->setContentsMargins(0, 10, 0, 10); - parentWidget->setLayout(m_layout); - QObject::connect(parentWidget, &QObject::destroyed, m_layout, [this]() { m_layout = nullptr; }); - - m_view = new TabView; - - TabItemDelegate *delegate = new TabItemDelegate(m_view); - ModuleDataModel *model = new ModuleDataModel(m_view); - model->setModuleObject(q); - QObject::connect(q, &HListModule::currentModuleChanged, m_layout, [this](ModuleObject *child) { - onCurrentModuleChanged(child); - }); - m_view->setModel(model); - m_view->setItemDelegate(delegate); - - m_layout->addWidget(m_view); - - auto onClicked = [](const QModelIndex &index) { - ModuleObject *obj = static_cast(index.internalPointer()); - if (obj) - obj->trigger(); - }; - - QObject::connect(m_view, &TabView::activated, m_view, &TabView::clicked); - QObject::connect(m_view, &TabView::clicked, m_view, onClicked); - - onCurrentModuleChanged(q->currentModule()); - return parentWidget; - } - -private: - HListModule *q_ptr; - Q_DECLARE_PUBLIC(HListModule) - - TabView *m_view; - QVBoxLayout *m_layout; -}; -} - -HListModule::HListModule(QObject *parent) - : ModuleObject(parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const QString &name, const QString &displayName, QObject *parent) - : ModuleObject(name, displayName, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const QString &name, const QStringList &contentText, QObject *parent) - : ModuleObject(name, contentText, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const QString &name, const QString &displayName, const QStringList &contentText, QObject *parent) - : ModuleObject(name, displayName, contentText, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const QString &name, const QString &displayName, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, icon, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const QString &name, const QString &displayName, const QString &description, QObject *parent) - : ModuleObject(name, displayName, description, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const QString &name, const QString &displayName, const QString &description, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, description, icon, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const QString &name, const QString &displayName, const QString &description, const QIcon &icon, QObject *parent) - : ModuleObject(name, displayName, description, icon, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const QString &name, const QString &displayName, const QString &description, const QStringList &contentText, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, description, contentText, icon, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::HListModule(const ModuleInitContext &message, QObject *parent) - : ModuleObject(message, parent) - , DCC_INIT_PRIVATE(HListModule) -{ -} - -HListModule::~HListModule() -{ -} - -QWidget *HListModule::page() -{ - Q_D(HListModule); - return d->page(); -} diff --git a/dcc-old/src/interface/moduledatamodel.cpp b/dcc-old/src/interface/moduledatamodel.cpp deleted file mode 100644 index ac981285ce..0000000000 --- a/dcc-old/src/interface/moduledatamodel.cpp +++ /dev/null @@ -1,171 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "moduledatamodel.h" - -#include "interface/moduleobject.h" - -#include -#include - -#include - -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE - -ModuleDataModel::ModuleDataModel(QObject *parent) - : QAbstractItemModel(parent) - , m_parentObject(nullptr) -{ -} - -QModelIndex ModuleDataModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent); - if (row < 0 || row >= m_data.size()) - return QModelIndex(); - return createIndex(row, column, m_data.at(row)); -} - -QModelIndex ModuleDataModel::parent(const QModelIndex &index) const -{ - Q_UNUSED(index); - return QModelIndex(); -} - -int ModuleDataModel::rowCount(const QModelIndex &parent) const -{ - if (!parent.isValid()) - return m_data.size(); - - return 0; -} - -int ModuleDataModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return 1; -} - -QVariant ModuleDataModel::data(const QModelIndex &index, int role) const -{ - if (m_data.isEmpty() || !index.isValid()) - return QVariant(); - - int row = index.row(); - ModuleObject *data = m_data.at(row); - switch (role) { - case Qt::DisplayRole: - return data->displayName(); - case Qt::DecorationRole: { - auto icon = data->icon(); - if (icon.type() == QVariant::String) { - return DIconTheme::findQIcon(icon.toString()); - } - return data->icon(); - } - case Qt::StatusTipRole: - return data->description(); - case Dtk::RightActionListRole: - return data->badge(); - default: - break; - } - return QVariant(); -} - -Qt::ItemFlags ModuleDataModel::flags(const QModelIndex &index) const -{ - Qt::ItemFlags flag = QAbstractItemModel::flags(index); - ModuleObject *module = static_cast(index.internalPointer()); - flag.setFlag(Qt::ItemIsEnabled, !ModuleObject::IsDisabled(module)); - return flag; -} - -void ModuleDataModel::onDataChanged(QObject *obj) -{ - ModuleObject *const module = static_cast(obj); - if (module->extra() || ModuleObject::IsHidden(module)) - onRemovedChild(module); - else { - int row = m_data.indexOf(module); - if (row >= 0 && row < m_data.size()) { - QModelIndex i = index(row, 0); - emit dataChanged(i, i); - } else { - onInsertChild(module); - } - } -} - -void ModuleDataModel::onInsertChild(ModuleObject *const module) -{ - if (module->extra() || ModuleObject::IsHidden(module) || m_data.contains(module)) - return; - - int row = 0; - for (auto &&tmpModule : m_parentObject->childrens()) { - if (tmpModule == module) - break; - if (!tmpModule->extra() && !tmpModule->isHidden()) - row++; - } - Q_ASSERT(row <= rowCount(QModelIndex())); - beginInsertRows(QModelIndex(), row, row); - m_data.insert(row, module); - endInsertRows(); - - ModuleObject *maxOne = - *std::max_element(m_data.begin(), m_data.end(), [](ModuleObject *a, ModuleObject *b) { - return a->displayName().length() < b->displayName().length(); - }); - emit newModuleMaxDislayName(maxOne->displayName()); -} - -void ModuleDataModel::onRemovedChild(ModuleObject *const module) -{ - int row = m_data.indexOf(module); - if (row >= 0 && row < m_data.size()) { - beginRemoveRows(QModelIndex(), row, row); - m_data.removeAt(row); - endRemoveRows(); - } -} - -void ModuleDataModel::setModuleObject(ModuleObject *const module) -{ - m_parentObject = module; - QList datas = m_parentObject->childrens(); - - beginResetModel(); - m_data.clear(); - for (ModuleObject *tmpModule : datas) { - if (!tmpModule->extra() && !ModuleObject::IsHidden(tmpModule)) - m_data.append(tmpModule); - } - endResetModel(); - - connect(m_parentObject, &ModuleObject::insertedChild, this, &ModuleDataModel::onInsertChild); - connect(m_parentObject, &ModuleObject::removedChild, this, &ModuleDataModel::onRemovedChild); - connect(m_parentObject, - &ModuleObject::childStateChanged, - this, - [this](ModuleObject *const tmpChild, uint32_t flag, bool state) { - Q_UNUSED(flag) - Q_UNUSED(state) - onDataChanged(tmpChild); - }); - // emit moduleDataChanged if module data changed(e.g. setBadge) - connect(m_parentObject, &ModuleObject::moduleDataChanged, this, [this]() { - if (auto mainModule = dynamic_cast(m_parentObject->parent())) { - mainModule->moduleDataChanged(); - } - }); -} - -QModelIndex ModuleDataModel::index(ModuleObject *module) const -{ - return index(m_data.indexOf(module), 0); -} diff --git a/dcc-old/src/interface/moduledatamodel.h b/dcc-old/src/interface/moduledatamodel.h deleted file mode 100644 index b83dcae413..0000000000 --- a/dcc-old/src/interface/moduledatamodel.h +++ /dev/null @@ -1,50 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MODULEDATAMODEL_H -#define MODULEDATAMODEL_H - -#include "interface/namespace.h" - -#include - -class QSignalMapper; - -namespace DCC_NAMESPACE { -class ModuleObject; - -class ModuleDataModel : public QAbstractItemModel -{ - Q_OBJECT -public: - explicit ModuleDataModel(QObject *parent = nullptr); - - void setModuleObject(ModuleObject *const module); - QModelIndex index(DCC_NAMESPACE::ModuleObject *module) const; - // Basic functionality: - QModelIndex index(int row, - int column, - const QModelIndex &parent = QModelIndex()) const override; - QModelIndex parent(const QModelIndex &index) const override; - - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; - - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - virtual Qt::ItemFlags flags(const QModelIndex &index) const override; -signals: - Q_DECL_DEPRECATED void newModuleDislayNameLen(int); - void newModuleMaxDislayName(const QString&); - -public slots: - void onDataChanged(QObject *obj); - void onInsertChild(ModuleObject *const module); - void onRemovedChild(ModuleObject *const module); - -private: - QList m_data; - ModuleObject *m_parentObject; -}; -} // namespace DCC_NAMESPACE - -#endif // MODULEDATAMODEL_H diff --git a/dcc-old/src/interface/moduleobject.cpp b/dcc-old/src/interface/moduleobject.cpp deleted file mode 100644 index 04d15a06d2..0000000000 --- a/dcc-old/src/interface/moduleobject.cpp +++ /dev/null @@ -1,564 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "interface/moduleobject.h" - -#include - -#define DCC_HIDDEN 0x80000000 -#define DCC_DISABLED 0x40000000 - -// 0xA0000000 = 0x80000000|0x20000000 0x80000000为用户设置位 0x20000000为配置设置位 -// 0x50000000 = 0x40000000|0x10000000 0x4000000为用户设置位 0x10000000为配置设置位 -#define DCC_ALL_HIDDEN 0xA0000000 -#define DCC_ALL_DISABLED 0x50000000 - -#define DCC_EXTRA 0x00800000 // 扩展按钮(子项) -#define DCC_NOSEARCH 0x08000000 // 不参与搜索 - -/** Versions: - V1.0 - 2023/05/24 - create -**/ -const unsigned c_currentVersion = 10; // 1.0 - -// DCORE_USE_NAMESPACE - -using namespace DCC_NAMESPACE; -namespace DCC_NAMESPACE { - -class ModuleObjectPrivate -{ -public: - explicit ModuleObjectPrivate(ModuleObject *object) - : q_ptr(object) - , m_currentModule(nullptr) - , m_badge(0) - , m_flags(0) - { - } - QString modelDescription() { - Q_Q(ModuleObject); - // The punctuation symbol used to separate items in a list. e.g. A, B, C, D" - const QString SPLIT_CHAR = QObject::tr(", "); - QString description; - for (const auto child : q->childrens()) { - if (child->isHidden()) - continue; - const auto &name = child->displayName(); - if (!name.isEmpty()) - description.append(QString("%1%2").arg(name).arg(SPLIT_CHAR)); - } - description.chop(SPLIT_CHAR.size()); - if (!description.isEmpty()) - return description; - return q->displayName(); - } -public: - ModuleObject *q_ptr; - Q_DECLARE_PUBLIC(ModuleObject) - - QList m_childrens; - ModuleObject *m_currentModule; - - QString m_name; // 名称,作为每个模块的唯一标识,不可为空 - QString m_displayName; // 显示名称,如菜单的名称,页面的标题等,为空则不显示 - QString m_fallbackDescription; // 描述,如主菜单的描述信息,如果m_description为空,该值会跟随插件变换 - QString m_description; // 主动设置的的描述信息,当非空,为显示的描述信息 - QStringList m_contentText; // 上下文数据,参与搜索,只可用于终结点:DisplayName -> ContentText(one of it) - QVariant m_icon; // 图标,如主菜单的图标 - int m_badge; // 主菜单中的角标, 默认为0不显示,大于0显示 - - uint32_t m_flags; -}; -} -ModuleObject::ModuleObject(QObject *parent) - : ModuleObject(QString(), QString(), parent) -{ -} - -ModuleObject::ModuleObject(const QString &name, const QString &displayName, QObject *parent) - : ModuleObject(name, displayName, QStringList(), parent) -{ -} - -ModuleObject::ModuleObject(const QString &name, const QStringList &contentText, QObject *parent) - : ModuleObject(name, {}, contentText, parent) -{ -} - -ModuleObject::ModuleObject(const QString &name, const QString &displayName, const QStringList &contentText, QObject *parent) - : ModuleObject(name, displayName, {}, contentText, QVariant(), parent) -{ -} - -ModuleObject::ModuleObject(const QString &name, const QString &displayName, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, {}, icon, parent) -{ -} - -ModuleObject::ModuleObject(const QString &name, const QString &displayName, const QString &description, QObject *parent) - : ModuleObject(name, displayName, description, {}, QVariant(), parent) -{ -} - -ModuleObject::ModuleObject(const QString &name, const QString &displayName, const QString &description, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, description, {}, icon, parent) -{ -} - -ModuleObject::ModuleObject(const QString &name, const QString &displayName, const QString &description, const QIcon &icon, QObject *parent) - : ModuleObject(name, displayName, description, {}, QVariant::fromValue(icon), parent) -{ -} - -ModuleObject::ModuleObject(const ModuleInitContext &message, QObject *parent) - : ModuleObject(message.name, message.displayName, message.description, message.contentText, message.icon, parent) -{ - -} - -ModuleObject::ModuleObject(const QString &name, const QString &displayName, const QString &description, const QStringList &contentText, const QVariant &icon, QObject *parent) - : QObject(parent) - , DCC_INIT_PRIVATE(ModuleObject) -{ - Q_D(ModuleObject); - d->m_name = name; - d->m_displayName = displayName; - d->m_description = description; - d->m_contentText = contentText; - d->m_icon = icon; - d->m_fallbackDescription = d->modelDescription(); - if (description.isEmpty()) { - connect(this, &ModuleObject::insertedChild, this, [this](ModuleObject *) { - Q_D(ModuleObject); - d->m_fallbackDescription = d->modelDescription(); - Q_EMIT moduleDataChanged(); - }); - connect(this, &ModuleObject::removedChild, this, [this](ModuleObject *) { - Q_D(ModuleObject); - d->m_fallbackDescription = d->modelDescription(); - Q_EMIT moduleDataChanged(); - }); - } -} - -ModuleObject::~ModuleObject() -{ - deactive(); -} - -QWidget *ModuleObject::activePage(bool autoActive) -{ - if (autoActive) - active(); - QWidget *w = ModuleObject::IsHidden(this) ? nullptr : page(); - // 处理page中修改隐藏状态 - if (w && ModuleObject::IsHidden(this)) { - delete w; - w = nullptr; - } - - if (w) { - connect(w, &QObject::destroyed, this, &ModuleObject::deactive); - connect(this, &ModuleObject::stateChanged, w, [w](uint32_t flag, bool state) { - if (ModuleObject::IsDisabledFlag(flag)) - w->setDisabled(state); - }); - w->setDisabled(ModuleObject::IsDisabled(this)); - } else { - deactive(); - } - return w; -} - -void ModuleObject::active() -{ -} - -QWidget *ModuleObject::page() -{ - return nullptr; -} - -void ModuleObject::deactive() -{ -} - -QString ModuleObject::name() const -{ - Q_D(const ModuleObject); - return d->m_name; -} -QString ModuleObject::displayName() const -{ - Q_D(const ModuleObject); - return d->m_displayName; -} -QString ModuleObject::description() const -{ - Q_D(const ModuleObject); - if (d->m_description.isEmpty()) { - return d->m_fallbackDescription; - } else { - return d->m_description; - } - -} -QStringList ModuleObject::contentText() const -{ - Q_D(const ModuleObject); - return d->m_contentText; -} -QVariant ModuleObject::icon() const -{ - Q_D(const ModuleObject); - return d->m_icon; -} -int ModuleObject::badge() const -{ - Q_D(const ModuleObject); - return d->m_badge; -} - -bool ModuleObject::isHidden() const -{ - return getFlagState(DCC_HIDDEN); -} - -bool ModuleObject::isVisible() const -{ - return !isHidden(); -} - -bool ModuleObject::isDisabled() const -{ - return getFlagState(DCC_DISABLED); -} - -bool ModuleObject::isEnabled() const -{ - return !isDisabled(); -} - -unsigned ModuleObject::GetCurrentVersion() -{ - return c_currentVersion; -} - -void ModuleObject::setHidden(bool hidden) -{ - setFlagState(DCC_HIDDEN, hidden); - Q_EMIT visibleChanged(); -} - -void ModuleObject::setVisible(bool visible) -{ - setHidden(!visible); -} - -void ModuleObject::setDisabled(bool disabled) -{ - setFlagState(DCC_DISABLED, disabled); -} - -void ModuleObject::setEnabled(bool enabled) -{ - setDisabled(!enabled); -} - -void ModuleObject::trigger() -{ - Q_EMIT triggered(); -} - -void ModuleObject::setName(const QString &name) -{ - Q_D(ModuleObject); - if (d->m_name != name) { - d->m_name = name; - Q_EMIT moduleDataChanged(); - } -} -void ModuleObject::setDisplayName(const QString &displayName) -{ - Q_D(ModuleObject); - if (d->m_displayName != displayName) { - d->m_displayName = displayName; - Q_EMIT displayNameChanged(d->m_displayName); - Q_EMIT moduleDataChanged(); - } -} -void ModuleObject::setDescription(const QString &description) -{ - Q_D(ModuleObject); - if (d->m_description != description) { - d->m_description = description; - d->m_fallbackDescription = description; - Q_EMIT moduleDataChanged(); - } -} -void ModuleObject::setContentText(const QStringList &contentText) -{ - Q_D(ModuleObject); - if (d->m_contentText != contentText) { - d->m_contentText = contentText; - Q_EMIT moduleDataChanged(); - } -} - -void ModuleObject::addContentText(const QString &contentText) -{ - Q_D(ModuleObject); - d->m_contentText << contentText; - Q_EMIT moduleDataChanged(); -} - -void ModuleObject::addContentText(const QStringList &contentText) -{ - Q_D(ModuleObject); - d->m_contentText << contentText; - Q_EMIT moduleDataChanged(); -} - -void ModuleObject::setIcon(const QVariant &icon) -{ - Q_D(ModuleObject); - d->m_icon = icon; - Q_EMIT moduleDataChanged(); -} - -void ModuleObject::setIcon(const QIcon &icon) -{ - setIcon(QVariant::fromValue(icon)); -} -void ModuleObject::setBadge(int badge) -{ - Q_D(ModuleObject); - if (d->m_badge != badge) { - d->m_badge = badge; - Q_EMIT moduleDataChanged(); - } -} - -void ModuleObject::appendChild(ModuleObject *const module) -{ - Q_D(ModuleObject); - if (d->m_childrens.contains(module)) - return; - d->m_childrens.append(module); - module->setParent(this); - connect(module, &ModuleObject::visibleChanged, this, [this]() { - Q_D(ModuleObject); - d->m_fallbackDescription = d->modelDescription(); - Q_EMIT moduleDataChanged(); - }); - Q_EMIT insertedChild(module); - Q_EMIT childrenSizeChanged(d->m_childrens.size()); -} - -void ModuleObject::removeChild(ModuleObject *const module) -{ - Q_D(ModuleObject); - if (!d->m_childrens.contains(module)) - return; - Q_EMIT removedChild(module); - d->m_childrens.removeOne(module); - Q_EMIT childrenSizeChanged(d->m_childrens.size()); -} - -void ModuleObject::removeChild(const int index) -{ - Q_D(ModuleObject); - if (d->m_childrens.size() <= index) - return; - Q_EMIT removedChild(d->m_childrens[index]); - d->m_childrens.removeAt(index); - Q_EMIT childrenSizeChanged(d->m_childrens.size()); -} - -void ModuleObject::insertChild(QList::iterator before, ModuleObject *const module) -{ - Q_D(ModuleObject); - if (d->m_childrens.contains(module)) - return; - d->m_childrens.insert(before, module); - connect(module, &ModuleObject::visibleChanged, this, [this]() { - Q_D(ModuleObject); - d->m_fallbackDescription = d->modelDescription(); - Q_EMIT moduleDataChanged(); - }); - module->setParent(this); - Q_EMIT insertedChild(module); - Q_EMIT childrenSizeChanged(d->m_childrens.size()); -} - -void ModuleObject::insertChild(const int index, ModuleObject *const module) -{ - Q_D(ModuleObject); - if (d->m_childrens.contains(module)) - return; - d->m_childrens.insert(index, module); - module->setParent(this); - Q_EMIT insertedChild(module); - Q_EMIT childrenSizeChanged(d->m_childrens.size()); -} - -bool ModuleObject::getFlagState(uint32_t flag) const -{ - Q_D(const ModuleObject); - return (d->m_flags & flag); -} - -uint32_t ModuleObject::getFlag() const -{ - Q_D(const ModuleObject); - return d->m_flags; -} - -bool ModuleObject::extra() const -{ - return getFlagState(DCC_EXTRA); -} - -void ModuleObject::setExtra(bool value) -{ - setFlagState(DCC_EXTRA, value); -} - -bool ModuleObject::noSearch() const -{ - return getFlagState(DCC_NOSEARCH); -} - -void ModuleObject::setNoSearch(bool noSearch) -{ - setFlagState(DCC_NOSEARCH, noSearch); -} - -ModuleObject *ModuleObject::currentModule() const -{ - Q_D(const ModuleObject); - return d->m_currentModule; -} - -ModuleObject *ModuleObject::defultModule() -{ - Q_D(const ModuleObject); - // 第一个可见项 - for (auto &&module : d->m_childrens) { - if (!ModuleObject::IsHidden(module) && !module->extra()) - return module; - } - return nullptr; -} - -void ModuleObject::setFlagState(uint32_t flag, bool state) -{ - Q_D(ModuleObject); - if (getFlagState(flag) != state) { - if (state) - d->m_flags |= flag; - else - d->m_flags &= (~flag); - Q_EMIT stateChanged(flag, state); - ModuleObject *parent = getParent(); - if (parent) - Q_EMIT parent->childStateChanged(this, flag, state); - } -} - -void ModuleObject::setCurrentModule(ModuleObject *child) -{ - Q_D(ModuleObject); - if (d->m_currentModule != child) { - d->m_currentModule = child; - Q_EMIT currentModuleChanged(d->m_currentModule); - } -} - -ModuleObject *ModuleObject::getParent() -{ - return dynamic_cast(parent()); -} - -int ModuleObject::findChild(ModuleObject *const child) -{ - if (!child) - return -1; - if (this == child) - return 0; - return findChild(this, child, 0); -} - -int ModuleObject::findChild(ModuleObject *const module, ModuleObject *const child) -{ - if (!module || !child) - return -1; - if (module == child) - return 0; - return findChild(module, child, 0); -} - -const QList &ModuleObject::childrens() -{ - Q_D(const ModuleObject); - return d->m_childrens; -} - -ModuleObject *ModuleObject::children(const int index) const -{ - Q_D(const ModuleObject); - if (index < 0 || index >= d->m_childrens.size()) - return nullptr; - return d->m_childrens.at(index); -} - -int ModuleObject::getChildrenSize() const -{ - Q_D(const ModuleObject); - return d->m_childrens.size(); -} - -int ModuleObject::findChild(ModuleObject *const module, ModuleObject *const child, const int num) -{ - for (auto ch : module->childrens()) { - if (ch == child) - return num + 1; - } - for (auto ch : module->childrens()) { - const int temp = ModuleObject::findChild(ch, child, num + 1); - if (temp > num) - return temp; - } - return -1; -} - -bool ModuleObject::IsVisible(ModuleObject *const module) -{ - return !ModuleObject::IsHidden(module); -} - -bool ModuleObject::IsHidden(ModuleObject *const module) -{ - return module ? module->getFlagState(DCC_ALL_HIDDEN) : true; -} - -bool ModuleObject::IsHiddenFlag(uint32_t flag) -{ - return DCC_ALL_HIDDEN & flag; -} - -bool ModuleObject::IsEnabled(ModuleObject *const module) -{ - return !ModuleObject::IsDisabled(module); -} - -bool ModuleObject::IsDisabled(ModuleObject *const module) -{ - return module ? module->getFlagState(DCC_ALL_DISABLED) : true; -} - -bool ModuleObject::IsDisabledFlag(uint32_t flag) -{ - return DCC_ALL_DISABLED & flag; -} diff --git a/dcc-old/src/interface/pagemodule.cpp b/dcc-old/src/interface/pagemodule.cpp deleted file mode 100644 index 358e13dfc1..0000000000 --- a/dcc-old/src/interface/pagemodule.cpp +++ /dev/null @@ -1,439 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "pagemodule.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -using namespace DCC_NAMESPACE; - -#define DCC_NO_Scroll 0x00080000 // 无滚动条(父项) -#define DCC_NO_STRETCH 0x00040000 // 无下方弹簧(父项) - -namespace DCC_NAMESPACE { -class PageModulePrivate : public QObject -{ -public: - explicit PageModulePrivate(PageModule *parent) - : QObject(parent) - , q_ptr(parent) - , m_spacing(Dtk::Widget::DSizeModeHelper::element(6, 10)) - , m_minimumWidth(0) - , m_maximumWidth(QWIDGETSIZE_MAX) - { - clearData(); - QObject::connect(q_ptr, &PageModule::currentModuleChanged, q_ptr, [this](ModuleObject *currentModule) { - onCurrentModuleChanged(currentModule); - }); - } - void insertModule(ModuleObject *const module, int stretch, Qt::Alignment alignment) - { - m_mapModules.insert(module, { stretch, alignment }); - } - void removeModule(ModuleObject *const module) - { - m_mapModules.remove(module); - } - QPair layoutParam(ModuleObject *const module) - { - if (m_mapModules.contains(module)) - return m_mapModules.value(module); - return { 0, Qt::Alignment() }; - } - void clearData() - { - m_vlayout = nullptr; - m_hlayout = nullptr; - m_area = nullptr; - m_mapWidget.clear(); - } - - QWidget *page() - { - Q_Q(PageModule); - QWidget *parentWidget = new QWidget(); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->setContentsMargins(0, 0, 0, 0); - parentWidget->setLayout(mainLayout); - m_hlayout = new QHBoxLayout(); - QObject::connect(parentWidget, &QObject::destroyed, q, [this]() { clearData(); }); - - QWidget *areaWidget = new QWidget(); - if (q->noScroll()) { - m_area = nullptr; - areaWidget->setParent(parentWidget); - mainLayout->addWidget(areaWidget, 0, m_contentsMargins.isNull() ? Qt::Alignment() : Qt::AlignHCenter); - } else { - m_area = new QScrollArea(parentWidget); - m_area->installEventFilter(this); - m_area->setFrameShape(QFrame::NoFrame); - m_area->setWidgetResizable(true); - areaWidget->setParent(m_area); - m_area->setWidget(areaWidget); - if (!m_contentsMargins.isNull()) - m_area->setAlignment(Qt::AlignHCenter); - mainLayout->addWidget(m_area); - } - - QWidget *controlRestrictorWidget = new QWidget; - controlRestrictorWidget->setMinimumWidth(m_minimumWidth); - controlRestrictorWidget->setMaximumWidth(500); - controlRestrictorWidget->setLayout(m_hlayout); - QHBoxLayout *controlRestrictorLayout = new QHBoxLayout; - controlRestrictorLayout->setContentsMargins(m_contentsMargins.left(), - 0, - m_contentsMargins.right(), - 0); - controlRestrictorLayout->addWidget(controlRestrictorWidget); - mainLayout->addLayout(controlRestrictorLayout); - - m_vlayout = new QVBoxLayout(areaWidget); - m_vlayout->setContentsMargins(m_contentsMargins); - m_vlayout->setSpacing(m_spacing); - areaWidget->setLayout(m_vlayout); - areaWidget->setMinimumWidth(m_minimumWidth); - areaWidget->setMaximumWidth(m_maximumWidth); - - for (auto &&tmpChild : q->childrens()) { - auto page = tmpChild->activePage(); - if (page) { - if (tmpChild->extra()) - m_hlayout->addWidget(page); - else { - QPair param = layoutParam(tmpChild); - m_vlayout->addWidget(page, param.first, param.second); - } - m_mapWidget.insert(tmpChild, page); - page->setDisabled(ModuleObject::IsDisabled(tmpChild)); - } - } - if (!q->noStretch()) - m_vlayout->addStretch(1); - - if (m_hlayout->count() == 0) { - controlRestrictorWidget->hide(); - } - - // 监听子项的添加、删除、状态变更,动态的更新界面 - QObject::connect(q, &ModuleObject::insertedChild, areaWidget, [this](ModuleObject *const childModule) { onAddChild(childModule); }); - QObject::connect(q, &ModuleObject::removedChild, areaWidget, [this](ModuleObject *const childModule) { onRemoveChild(childModule); }); - QObject::connect(q, &ModuleObject::childStateChanged, areaWidget, [this](ModuleObject *const tmpChild, uint32_t flag, bool state) { - if (ModuleObject::IsHiddenFlag(flag)) { - if (state) - onRemoveChild(tmpChild); - else - onAddChild(tmpChild); - } - }); - QObject::connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::sizeModeChanged, m_vlayout, [this](){ - m_spacing = Dtk::Widget::DSizeModeHelper::element(6, 10); - m_vlayout->setSpacing(m_spacing); - }); - Q_EMIT q->currentModuleChanged(q->currentModule()); - return parentWidget; - } - -private: - void onCurrentModuleChanged(ModuleObject *child) - { - if (m_area && m_mapWidget.contains(child)) { - QWidget *w = m_mapWidget.value(child); - if (-1 != m_vlayout->indexOf(w)) { - QPoint p = w->mapTo(w->parentWidget(), QPoint()); - m_area->verticalScrollBar()->setSliderPosition(p.y()); - } - } - } - void onRemoveChild(DCC_NAMESPACE::ModuleObject *const childModule) - { - if (m_mapWidget.contains(childModule)) { - QWidget *w = m_mapWidget.value(childModule); - int index = m_vlayout->indexOf(w); - if (-1 != index) { - w->deleteLater(); - delete m_vlayout->takeAt(index); - m_mapWidget.remove(childModule); - return; - } - index = m_hlayout->indexOf(w); - if (-1 != index) { - w->deleteLater(); - delete m_hlayout->takeAt(index); - m_mapWidget.remove(childModule); - } - } - } - void onAddChild(DCC_NAMESPACE::ModuleObject *const childModule) - { - if (ModuleObject::IsHidden(childModule) || m_mapWidget.contains(childModule)) - return; - - Q_Q(PageModule); - bool isExtra = childModule->extra(); - int index = 0; - for (auto &&child : q->childrens()) { - if (child == childModule) - break; - if (!ModuleObject::IsHidden(child) && child->extra() == isExtra) - index++; - } - auto newPage = childModule->activePage(); - if (newPage) { - if (isExtra) { - m_hlayout->insertWidget(index, newPage); - } else { - QPair param = layoutParam(childModule); - m_vlayout->insertWidget(index, newPage, param.first, param.second); - } - - newPage->setDisabled(ModuleObject::IsDisabled(childModule)); - m_mapWidget.insert(childModule, newPage); - } - } - - bool eventFilter(QObject *watched, QEvent *event) override - { - if (QEvent::Resize == event->type() && m_area) { - QResizeEvent *e = static_cast(event); - int left, right, top, bottom; - m_vlayout->getContentsMargins(&left, &top, &right, &bottom); - int width = qMin(e->size().width() - left - right, m_maximumWidth); - if (m_maximumWidth >= width && width > 0) { - for (int i = 0; i < m_vlayout->count(); ++i) { - QAbstractScrollArea *w = qobject_cast(m_vlayout->itemAt(i)->widget()); - if (w) { - w->setMaximumWidth(width); - } - } - } - } - return QObject::eventFilter(watched, event); - } - -private: - PageModule *q_ptr; - Q_DECLARE_PUBLIC(PageModule) - - QVBoxLayout *m_vlayout; // 上方纵向布局 - QHBoxLayout *m_hlayout; // 底下横向布局 - QMap> m_mapModules; - QMap m_mapWidget; - QScrollArea *m_area; - QMargins m_contentsMargins; - int m_spacing; - int m_minimumWidth; - int m_maximumWidth; -}; - -} - -PageModule::PageModule(QObject *parent) - : ModuleObject(parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const QString &name, const QString &displayName, QObject *parent) - : ModuleObject(name, displayName, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const QString &name, const QStringList &contentText, QObject *parent) - : ModuleObject(name, contentText, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const QString &name, const QString &displayName, const QStringList &contentText, QObject *parent) - : ModuleObject(name, displayName, contentText, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const QString &name, const QString &displayName, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, icon, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const QString &name, const QString &displayName, const QString &description, QObject *parent) - : ModuleObject(name, displayName, description, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const QString &name, const QString &displayName, const QString &description, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, description, icon, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const QString &name, const QString &displayName, const QString &description, const QIcon &icon, QObject *parent) - : ModuleObject(name, displayName, description, icon, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const QString &name, const QString &displayName, const QString &description, const QStringList &contentText, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, description, contentText, icon, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::PageModule(const ModuleInitContext &message, QObject *parent) - : ModuleObject(message, parent) - , DCC_INIT_PRIVATE(PageModule) -{ -} - -PageModule::~PageModule() -{ -} - -int PageModule::spacing() const -{ - Q_D(const PageModule); - return d->m_spacing; -} - -void PageModule::setSpacing(const int spacing) -{ - Q_D(PageModule); - d->m_spacing = spacing; -} - -void PageModule::getContentsMargins(int *left, int *top, int *right, int *bottom) const -{ - Q_D(const PageModule); - *left = d->m_contentsMargins.left(); - *top = d->m_contentsMargins.top(); - *right = d->m_contentsMargins.right(); - *bottom = d->m_contentsMargins.bottom(); -} - -void PageModule::setContentsMargins(int left, int top, int right, int bottom) -{ - Q_D(PageModule); - d->m_contentsMargins.setLeft(left); - d->m_contentsMargins.setTop(top); - d->m_contentsMargins.setRight(right); - d->m_contentsMargins.setBottom(bottom); -} - -int PageModule::maximumWidth() const -{ - Q_D(const PageModule); - return d->m_maximumWidth; -} - -void PageModule::setMaximumWidth(int maxw) -{ - Q_D(PageModule); - d->m_maximumWidth = maxw; -} - -int PageModule::minimumWidth() const -{ - Q_D(const PageModule); - return d->m_minimumWidth; -} - -void PageModule::setMinimumWidth(int minw) -{ - Q_D(PageModule); - d->m_minimumWidth = minw; -} - -bool PageModule::noScroll() -{ - return getFlagState(DCC_NO_Scroll); -} - -void PageModule::setNoScroll(bool value) -{ - setFlagState(DCC_NO_Scroll, value); -} - -bool PageModule::noStretch() -{ - return getFlagState(DCC_NO_STRETCH); -} - -void PageModule::setNoStretch(bool value) -{ - setFlagState(DCC_NO_STRETCH, value); -} - -void PageModule::appendChild(ModuleObject *const module) -{ - appendChild(module, 0, Qt::Alignment()); -} - -void PageModule::insertChild(QList::iterator before, ModuleObject *const module) -{ - insertChild(before, module, 0, Qt::Alignment()); -} - -void PageModule::insertChild(const int index, ModuleObject *const module) -{ - insertChild(index, module, 0, Qt::Alignment()); -} - -void PageModule::removeChild(ModuleObject *const module) -{ - Q_D(PageModule); - d->removeModule(module); - ModuleObject::removeChild(module); -} - -void PageModule::removeChild(const int index) -{ - Q_D(PageModule); - d->removeModule(children(index)); - ModuleObject::removeChild(index); -} - -void PageModule::appendChild(ModuleObject *const module, int stretch, Qt::Alignment alignment) -{ - if (childrens().contains(module)) - return; - - Q_D(PageModule); - d->insertModule(module, stretch, alignment); - ModuleObject::appendChild(module); -} - -void PageModule::insertChild(QList::iterator before, ModuleObject *const module, int stretch, Qt::Alignment alignment) -{ - if (childrens().contains(module)) - return; - - Q_D(PageModule); - d->insertModule(module, stretch, alignment); - ModuleObject::insertChild(before, module); -} - -void PageModule::insertChild(const int index, ModuleObject *const module, int stretch, Qt::Alignment alignment) -{ - if (childrens().contains(module)) - return; - - Q_D(PageModule); - d->insertModule(module, stretch, alignment); - ModuleObject::insertChild(index, module); -} - -QWidget *PageModule::page() -{ - Q_D(PageModule); - return d->page(); -} diff --git a/dcc-old/src/interface/tabitemdelegate.cpp b/dcc-old/src/interface/tabitemdelegate.cpp deleted file mode 100644 index b2a7fae29b..0000000000 --- a/dcc-old/src/interface/tabitemdelegate.cpp +++ /dev/null @@ -1,161 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "tabitemdelegate.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -TabItemDelegate::TabItemDelegate(QAbstractItemView *parent) - : DStyledItemDelegate(parent) -{ -} - -void TabItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - painter->save(); - - QStyleOptionViewItem opt(option); - initStyleOption(&opt, index); - - bool isIconMode = option.decorationAlignment == Qt::AlignCenter; - bool isBeginning = (opt.viewItemPosition == QStyleOptionViewItem::ViewItemPosition::Beginning) || (opt.viewItemPosition == QStyleOptionViewItem::ViewItemPosition::OnlyOne); - // 选择高亮背景 - if (opt.state & QStyle::State_Selected) { - QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) - ? QPalette::Normal - : QPalette::Disabled; - opt.backgroundBrush = option.palette.color(cg, QPalette::Highlight); - } - - QVariant value; - - QRect decorationRect; - value = index.data(Qt::DecorationRole); - if (value.isValid()) { - if (isBeginning && isIconMode) { - decorationRect = QRect(opt.rect.topLeft() + QPoint((opt.rect.width() - opt.decorationSize.width()) / 2, 15), opt.decorationSize); - opt.displayAlignment = Qt::AlignCenter; - } else if (isBeginning) { - opt.decorationSize += QSize(4, 4); - decorationRect = QRect(opt.rect.topLeft() + QPoint(8, (opt.rect.height() - opt.decorationSize.height()) / 2), opt.decorationSize); - opt.displayAlignment = Qt::AlignLeft; - } else { - decorationRect = QRect(opt.rect.topLeft() + QPoint(8, (opt.rect.height() - opt.decorationSize.height()) / 2), opt.decorationSize); - opt.displayAlignment = Qt::AlignLeft; - } - } else { - decorationRect = QRect(); - } - int fontHeight = opt.widget->fontMetrics().height(); - QString text; - QRect displayRect; - value = index.data(Qt::DisplayRole); - if (value.isValid() && !value.isNull()) { - if (isBeginning && isIconMode) { - displayRect = QRect(opt.rect.topLeft() + QPoint(0, opt.decorationSize.height() + 40), QSize(opt.rect.width(), -1)); - } else if (isBeginning || isIconMode) { - displayRect = QRect(opt.rect.topLeft() + QPoint(decorationRect.width() + 18, (opt.rect.height() / 2 - fontHeight + 5)), QSize(opt.rect.width() - opt.decorationSize.width() - 30, -1)); - } else { - displayRect = QRect(opt.rect.topLeft() + QPoint(decorationRect.width() + 18, (opt.rect.height() - fontHeight) / 2), QSize(opt.rect.width() - opt.decorationSize.width() - 30, -1)); - } - } - - QStyle *style = option.widget ? option.widget->style() : QApplication::style(); - // draw the item - if (opt.state & QStyle::State_Selected - //|| opt.state & QStyle::State_Active - || opt.state & QStyle::State_MouseOver) - drawBackground(style, painter, opt); - // 图标的绘制用也可能会使用这些颜色 - QPalette::ColorGroup cg = (opt.state & QStyle::State_Enabled) ? QPalette::Normal : QPalette::Disabled; - painter->setPen(opt.palette.color(cg, (opt.state & QStyle::State_Selected) ? QPalette::HighlightedText : QPalette::Text)); - - opt.displayAlignment = Qt::AlignCenter; - drawDisplay(style, painter, opt, opt.rect); - - painter->restore(); -} - -void TabItemDelegate::drawBackground(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option) const -{ - DStyleOptionBackgroundGroup boption; - boption.init(option.widget); - boption.QStyleOption::operator=(option); - boption.position = DStyleOptionBackgroundGroup::ItemBackgroundPosition(option.viewItemPosition); - - if (option.backgroundBrush.style() != Qt::NoBrush) { - boption.dpalette.setBrush(DPalette::ItemBackground, option.backgroundBrush); - } - - boption.rect = option.rect; - - if (backgroundType() != RoundedBackground) { - boption.directions = Qt::Vertical; - } - - style->drawPrimitive(static_cast(DStyle::PE_ItemBackground), &boption, painter, option.widget); -} - -void TabItemDelegate::drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - if (option.features & QStyleOptionViewItem::HasDecoration) { - QIcon::Mode mode = QIcon::Normal; - if (!(option.state & QStyle::State_Enabled)) - mode = QIcon::Disabled; - else if (option.state & QStyle::State_Selected) - mode = QIcon::Selected; - QIcon::State state = (option.state & QStyle::State_Open) ? QIcon::On : QIcon::Off; - option.icon.paint(painter, rect, option.decorationAlignment, mode, state); - } -} - -void TabItemDelegate::drawDisplay(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - DStyle::viewItemDrawText(style, painter, &option, rect); -} - -void TabItemDelegate::drawEllipse(QPainter *painter, const QStyleOptionViewItem &option, const int message) const -{ - if (message <= 0) - return; - - QRadialGradient Conical(0, 0, 7, 0, 0); - Conical.setColorAt(1, QColor(255, 106, 106, 255)); - Conical.setColorAt(0.2, QColor(255, 106, 106, 255)); - Conical.setColorAt(0, QColor(255, 106, 106, 25)); - - painter->setBrush(Conical); - painter->setPen(Qt::NoPen); - painter->drawEllipse(option.rect.center() + QPoint(option.rect.width() / 2 - 30, 0), 7, 7); -} - -void TabItemDelegate::drawFocus(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - if ((option.state & QStyle::State_HasFocus) == 0 || !rect.isValid()) - return; - QStyleOptionFocusRect o; - o.QStyleOption::operator=(option); - o.rect = rect; - o.state |= QStyle::State_KeyboardFocusChange; - o.state |= QStyle::State_Item; - QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) - ? QPalette::Normal - : QPalette::Disabled; - o.backgroundColor = option.palette.color(cg, (option.state & QStyle::State_Selected) ? QPalette::Highlight : QPalette::Window); - style->drawPrimitive(QStyle::PE_FrameFocusRect, &o, painter, option.widget); -} diff --git a/dcc-old/src/interface/tabitemdelegate.h b/dcc-old/src/interface/tabitemdelegate.h deleted file mode 100644 index 5c5aa00079..0000000000 --- a/dcc-old/src/interface/tabitemdelegate.h +++ /dev/null @@ -1,30 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TABITEMDELEGATE_H -#define TABITEMDELEGATE_H - -#include "interface/namespace.h" - -#include - -namespace DCC_NAMESPACE { - -class TabItemDelegate : public Dtk::Widget::DStyledItemDelegate -{ -public: - TabItemDelegate(QAbstractItemView *parent = nullptr); - -protected: - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - - virtual void drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - void drawBackground(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option) const; - void drawDisplay(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - void drawEllipse(QPainter *painter, const QStyleOptionViewItem &option, const int message) const; - void drawFocus(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; -}; - -} - -#endif // TABITEMDELEGATE_H diff --git a/dcc-old/src/interface/tabview.cpp b/dcc-old/src/interface/tabview.cpp deleted file mode 100644 index acc27340f9..0000000000 --- a/dcc-old/src/interface/tabview.cpp +++ /dev/null @@ -1,526 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "tabview.h" -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DCORE_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -///////////////////////////////////////// -namespace DCC_NAMESPACE { - -class TabViewPrivate -{ -public: - explicit TabViewPrivate(TabView *parent) - : q_ptr(parent) - , m_spacing(20) - , m_gridSize(280, 84) - , m_maxColumnCount(1) - , m_maxRowCount(1) - , m_xOffset(0) - , m_yOffset(0) - , m_alignment(Qt::AlignHCenter) - { - setGridSize(m_gridSize); - } - - void setSpacing(int space) - { - m_spacing = space; - } - int spacing() const - { - return m_spacing; - } - - void setGridSize(const QSize &size) - { - m_gridSize = size; - } - QSize gridSize() const - { - return m_gridSize; - } - - void setAlignment(Qt::Alignment alignment) - { - m_alignment = alignment; - } - Qt::Alignment alignment() const - { - return m_alignment; - } - - void updateGeometries() - { - Q_Q(TabView); - m_itemX.clear(); - int totalWidth = 0; - int height = 0; - QFontMetrics fm = q->fontMetrics(); - QAbstractItemModel *model = q->model(); - DStyleHelper dstyle(q->style()); - DStyleOptionButtonBoxButton opt; - - QSize emptySZ = fm.size(Qt::TextShowMnemonic, QStringLiteral("XXXX")); - emptySZ = (dstyle.sizeFromContents(DStyle::CT_ButtonBoxButton, &opt, emptySZ, q).expandedTo(QApplication::globalStrut())); - for (int i = 0; i < model->rowCount(); i++) { - QString s(model->data(model->index(i, 0)).toString()); - QSize sz; - if (s.isEmpty()) { - sz = emptySZ; - } else { - sz = fm.size(Qt::TextShowMnemonic, s); - sz = (dstyle.sizeFromContents(DStyle::CT_ButtonBoxButton, &opt, sz, q).expandedTo(QApplication::globalStrut())); - } - totalWidth += sz.width() + 14; - m_itemX.append(totalWidth); - } - height = emptySZ.height() - 9; - m_size = QSize(totalWidth, height); - q->setFixedHeight(m_size.height() + 4); - - if (totalWidth > q->viewport()->width()) { - m_xOffset = 0; - } else if (m_alignment & Qt::AlignRight) { - m_xOffset = q->viewport()->width() - totalWidth; - } else if (m_alignment & Qt::AlignHCenter) { - m_xOffset = (q->viewport()->width() - totalWidth) / 2; - } else { - m_xOffset = 0; - } - if (height > q->viewport()->height()) { - m_yOffset = 0; - } else if (m_alignment & Qt::AlignBottom) { - m_yOffset = q->viewport()->height() - height; - } else if (m_alignment & Qt::AlignVCenter) { - m_yOffset = (q->viewport()->height() - height) / 2; - } else { - m_yOffset = 0; - } - } - // item在窗口中位置(无滚动) - QRect rectForIndex(const QModelIndex &index) const - { - Q_Q(const TabView); - QRect rect(0, 2, 0, m_size.height()); - int indexRow = index.row(); - if (indexRow < 0 || indexRow >= m_itemX.size()) { - rect = QRect(); - } else if (indexRow == 0) { - rect.setWidth(m_itemX.at(0)); - } else { - rect.setLeft(m_itemX.at(indexRow - 1)); - rect.setRight(m_itemX.at(indexRow) - 1); - } - - return rect.translated(q->contentsMargins().left() + m_xOffset, q->contentsMargins().top() + m_yOffset); - } - // item在窗口中位置(无滚动) - QModelIndex indexAt(const QPoint &p) const - { - Q_Q(const TabView); - QRect rect(p.x() - m_xOffset, p.y() - m_yOffset, 1, 1); - if (!QRect(QPoint(), m_size).contains(rect)) { - return QModelIndex(); - } - int row = -1; - for (int i = 0; i < m_itemX.size(); i++) { - if (rect.x() <= m_itemX.at(i)) { - row = i; - break; - } - } - QModelIndex index = q->model() ? q->model()->index(row, 0) : QModelIndex(); - if (index.isValid() && rectForIndex(index).contains(p)) - return index; - return QModelIndex(); - } - QVector intersectingSet(const QRect &area) const - { - Q_Q(const TabView); - QVector indexs; - int rows = q->model() ? q->model()->rowCount() : 0; - for (int row = 0; row < rows; row++) { - QModelIndex index = q->model()->index(row, 0); - QRect rectIndex = rectForIndex(index); - if (!rectIndex.intersected(area).isEmpty()) { - indexs.append(index); - } - } - return indexs; - } - inline int marginsWidth() const - { - Q_Q(const TabView); - return q->contentsMargins().left() + q->contentsMargins().right(); - } - inline int marginsHidget() const - { - Q_Q(const TabView); - return q->contentsMargins().top() + q->contentsMargins().bottom(); - } - -private: - TabView *const q_ptr; - Q_DECLARE_PUBLIC(TabView) - int m_spacing; - QSize m_gridSize; - - int m_maxColumnCount; // 一行可容纳的最大列数 - int m_maxRowCount; // 换算显示所有item所需行数 - int m_xOffset; // x轴偏移 - int m_yOffset; // y轴偏移 - QModelIndex m_hover; // hover项 - Qt::Alignment m_alignment; // 对齐方式 - - QList m_itemX; - QSize m_size; -}; -} // namespace DCC_NAMESPACE - -///////////////////////////////////////// - -TabView::TabView(QWidget *parent) - : QAbstractItemView(parent) - , d_ptr(new TabViewPrivate(this)) -{ - setSelectionMode(SingleSelection); - setAttribute(Qt::WA_MacShowFocusRect); - scheduleDelayedItemsLayout(); - setMouseTracking(true); - setContentsMargins(0, 0, 0, 0); - setFrameStyle(QFrame::NoFrame); - - // setFixedHeight at the beginning - DStyleHelper dstyle(style()); - QFontMetrics fm = fontMetrics(); - QSize emptySZ = fm.size(Qt::TextShowMnemonic, QStringLiteral("XXXX")); - DStyleOptionButtonBoxButton opt; - emptySZ = (dstyle.sizeFromContents(DStyle::CT_ButtonBoxButton, &opt, emptySZ, this).expandedTo(QApplication::globalStrut())); - setFixedHeight(emptySZ.height() - 5); - - viewport()->setAutoFillBackground(false); -} - -TabView::~TabView() -{ - delete d_ptr; -} - -void TabView::setSpacing(int space) -{ - Q_D(TabView); - if (d->spacing() != space) { - d->setSpacing(space); - scheduleDelayedItemsLayout(); - } -} -int TabView::spacing() const -{ - Q_D(const TabView); - return d->spacing(); -} - -void TabView::setGridSize(const QSize &size) -{ - Q_D(TabView); - if (d->gridSize() != size) { - d->setGridSize(size); - scheduleDelayedItemsLayout(); - } -} -QSize TabView::gridSize() const -{ - Q_D(const TabView); - return d->gridSize(); -} - -void TabView::setAlignment(Qt::Alignment alignment) -{ - Q_D(TabView); - if (d->alignment() != alignment) { - d->setAlignment(alignment); - scheduleDelayedItemsLayout(); - } -} -Qt::Alignment TabView::alignment() const -{ - Q_D(const TabView); - return d->alignment(); -} -///////////////////////////////////////////////////////////////////////////// -// item在窗口中位置(加滚动偏移) -QRect TabView::visualRect(const QModelIndex &index) const -{ - Q_D(const TabView); - return d->rectForIndex(index).translated(-horizontalOffset(), -verticalOffset()); -} - -void TabView::scrollTo(const QModelIndex &index, ScrollHint hint) -{ - if (!index.isValid()) - return; - - const QRect rect = visualRect(index); - if (hint == EnsureVisible && viewport()->rect().contains(rect)) { - viewport()->update(rect); - return; - } - - const QRect area = viewport()->rect(); - const bool above = (hint == EnsureVisible && rect.left() < area.left()); - const bool below = (hint == EnsureVisible && rect.right() > area.right()); - - int horizontalValue = horizontalScrollBar()->value(); - QRect adjusted = rect.adjusted(-spacing(), -spacing(), spacing(), spacing()); - if (hint == PositionAtTop || above) - horizontalValue += adjusted.top(); - else if (hint == PositionAtBottom || below) - horizontalValue += qMin(adjusted.left(), adjusted.right() - area.width() + 1); - else if (hint == PositionAtCenter) - horizontalValue += adjusted.left() - ((area.width() - adjusted.width()) / 2); - horizontalScrollBar()->setValue(horizontalValue); -} - -QModelIndex TabView::indexAt(const QPoint &p) const -{ - Q_D(const TabView); - return d->indexAt(p + QPoint(horizontalOffset(), verticalOffset())); -} - -QModelIndex TabView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers /*modifiers*/) -{ - Q_D(const TabView); - QModelIndex current = currentIndex(); - int currentRow = current.row(); - int maxRow = model()->rowCount(); - - auto moveup = [](int currentRow, int maxColumnCount) -> int { - if (currentRow == maxColumnCount * 2 - 1) { - currentRow = 0; - } else if (currentRow < maxColumnCount) { - // 第一行不处理 - } else if (currentRow < maxColumnCount * 2) { - currentRow -= (maxColumnCount - 1); - } else { - currentRow -= maxColumnCount; - } - return currentRow; - }; - auto movedown = [](int currentRow, int maxColumnCount) -> int { - if (currentRow == 0) { - currentRow += (maxColumnCount * 2 - 1); - } else if (currentRow < maxColumnCount) - currentRow += (maxColumnCount - 1); - else - currentRow += maxColumnCount; - return currentRow; - }; - switch (cursorAction) { - case MoveLeft: - currentRow--; - break; - case MoveRight: - currentRow++; - break; - case MovePageUp: { - } break; - case MoveUp: - currentRow = moveup(currentRow, d->m_maxColumnCount); - break; - case MovePageDown: { - } break; - case MoveDown: - currentRow = movedown(currentRow, d->m_maxColumnCount); - break; - case MoveHome: - currentRow = 0; - break; - case MoveEnd: - currentRow = maxRow - 1; - break; - default: - return QModelIndex(); - } - QModelIndex selectIndex = model()->index(currentRow, 0); - Q_EMIT activated(selectIndex); - return selectIndex; -} - -int TabView::horizontalOffset() const -{ - return horizontalScrollBar()->value(); -} - -int TabView::verticalOffset() const -{ - return verticalScrollBar()->value(); -} - -void TabView::updateGeometries() -{ - Q_D(TabView); - QAbstractItemView::updateGeometries(); - d->updateGeometries(); - - // 更新滚动条范围 - if (geometry().isEmpty() || !model() || model()->rowCount() <= 0 || model()->columnCount() <= 0) { - horizontalScrollBar()->setRange(0, 0); - verticalScrollBar()->setRange(0, 0); - } else { - QSize step = QSize(d->m_itemX.isEmpty() ? 0 : d->m_itemX.first(), d->m_size.height()); - horizontalScrollBar()->setSingleStep(step.width() + spacing()); - horizontalScrollBar()->setPageStep(viewport()->width()); - - int width = d->m_size.width(); - if (width < viewport()->width()) { - horizontalScrollBar()->setRange(0, 0); - } else { - horizontalScrollBar()->setRange(0, width - viewport()->width()); - } - } -} - -void TabView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles) -{ - QAbstractItemView::dataChanged(topLeft, bottomRight, roles); - scheduleDelayedItemsLayout(); -} - -void TabView::rowsInserted(const QModelIndex &parent, int start, int end) -{ - scheduleDelayedItemsLayout(); - QAbstractItemView::rowsInserted(parent, start, end); -} - -void TabView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) -{ - QAbstractItemView::rowsAboutToBeRemoved(parent, start, end); - scheduleDelayedItemsLayout(); -} - -bool TabView::isIndexHidden(const QModelIndex & /*index*/) const -{ - return false; -} - -QRegion TabView::visualRegionForSelection(const QItemSelection &selection) const -{ - if (selection.isEmpty()) - return QRegion(); - Q_D(const TabView); - QRect rect = d->rectForIndex(selection.indexes().first()); - return QRegion(rect); -} - -void TabView::setSelection([[maybe_unused]] const QRect &rect, [[maybe_unused]] QItemSelectionModel::SelectionFlags command) -{ - -} - -void TabView::paintEvent(QPaintEvent *e) -{ - Q_D(const TabView); - QStyleOptionViewItem option = viewOptions(); - QPainter painter(viewport()); - - const QVector toBeRendered = d->intersectingSet(e->rect().translated(horizontalOffset(), verticalOffset())); - - const QModelIndex current = currentIndex(); - const QModelIndex hover = d->m_hover; - const QAbstractItemModel *itemModel = model(); - const QItemSelectionModel *selections = selectionModel(); - const bool focus = (hasFocus() || viewport()->hasFocus()) && current.isValid(); - const QStyle::State state = option.state; - const QAbstractItemView::State viewState = this->state(); - const bool enabled = (state & QStyle::State_Enabled) != 0; - option.decorationAlignment = Qt::AlignLeft; - - QVector::const_iterator end = toBeRendered.constEnd(); - for (QVector::const_iterator it = toBeRendered.constBegin(); it != end; ++it) { - Q_ASSERT((*it).isValid()); - option.rect = visualRect(*it); - - option.state = state; - if (selections && selections->isSelected(*it)) - option.state |= QStyle::State_Selected; - if (enabled) { - QPalette::ColorGroup cg; - if ((itemModel->flags(*it) & Qt::ItemIsEnabled) == 0) { - option.state &= ~QStyle::State_Enabled; - cg = QPalette::Disabled; - } else { - cg = QPalette::Normal; - } - option.palette.setCurrentColorGroup(cg); - } - if (focus && current == *it) { - option.state |= QStyle::State_HasFocus; - if (viewState == EditingState) - option.state |= QStyle::State_Editing; - } - option.state.setFlag(QStyle::State_MouseOver, *it == hover); - - painter.save(); - painter.setRenderHint(QPainter::Antialiasing); - painter.setPen(Qt::NoPen); - painter.setBrush(QBrush(palette().color(QPalette::Base))); - QRect maskRect = option.rect.adjusted(0, -2, 0, 2); - if (it->row() == 0) { - painter.drawRoundedRect(option.rect.adjusted(-2, -2, 0, 2), 8, 8); - maskRect.adjust(6, 0, 0, 0); - } - if (it->row() == itemModel->rowCount() - 1) { - painter.drawRoundedRect(option.rect.adjusted(0, -2, 2, 2), 8, 8); - maskRect.adjust(0, 0, -6, 0); - } - painter.drawRect(maskRect); - painter.restore(); - - itemDelegate(*it)->paint(&painter, option, *it); - } -} - -bool TabView::viewportEvent(QEvent *event) -{ - Q_D(TabView); - switch (event->type()) { - case QEvent::HoverMove: - case QEvent::HoverEnter: - d->m_hover = indexAt(static_cast(event)->pos()); - break; - case QEvent::HoverLeave: - case QEvent::Leave: - d->m_hover = QModelIndex(); - break; - default: - break; - } - return QAbstractItemView::viewportEvent(event); -} - -void TabView::wheelEvent(QWheelEvent *e) -{ - QApplication::sendEvent(horizontalScrollBar(), e); - e->setAccepted(true); -} - -void TabView::mouseMoveEvent(QMouseEvent *event) -{ - QWidget::mouseMoveEvent(event); -} diff --git a/dcc-old/src/interface/tabview.h b/dcc-old/src/interface/tabview.h deleted file mode 100644 index b94e294167..0000000000 --- a/dcc-old/src/interface/tabview.h +++ /dev/null @@ -1,66 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TABVIEW_H -#define TABVIEW_H -#include "interface/namespace.h" -#include -#include - -namespace DCC_NAMESPACE { - -class TabViewPrivate; -class TabView : public QAbstractItemView -{ - Q_OBJECT - Q_PROPERTY(int spacing READ spacing WRITE setSpacing) - Q_PROPERTY(QSize gridSize READ gridSize WRITE setGridSize) - Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment) - -public: - explicit TabView(QWidget *parent = nullptr); - virtual ~TabView() override; - - void setSpacing(int space); - int spacing() const; - - void setGridSize(const QSize &size); - QSize gridSize() const; - - void setAlignment(Qt::Alignment alignment); - Qt::Alignment alignment() const; - - QRect visualRect(const QModelIndex &index) const override; - void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) override; - QModelIndex indexAt(const QPoint &p) const override; - -protected: - QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override; - int horizontalOffset() const override; - int verticalOffset() const override; - - bool isIndexHidden(const QModelIndex &index) const override; - QRegion visualRegionForSelection(const QItemSelection &selection) const override; - void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) override; - - void updateGeometries() override; - - void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()) override; - void rowsInserted(const QModelIndex &parent, int start, int end) override; - void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override; - -protected: - void paintEvent(QPaintEvent *e) override; - bool viewportEvent(QEvent *event) override; - void wheelEvent(QWheelEvent *e) override; - void mouseMoveEvent(QMouseEvent *event) override; - -private: - TabViewPrivate *const d_ptr; - Q_DECLARE_PRIVATE(TabView) - Q_DISABLE_COPY(TabView) -}; - -} - -#endif // TABVIEW_H diff --git a/dcc-old/src/interface/vlistmodule.cpp b/dcc-old/src/interface/vlistmodule.cpp deleted file mode 100644 index 90a71feb35..0000000000 --- a/dcc-old/src/interface/vlistmodule.cpp +++ /dev/null @@ -1,253 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "moduledatamodel.h" -#include "vlistmodule.h" -#include "pagemodule.h" -#include "hlistmodule.h" - -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { -class VListModulePrivate -{ -public: - explicit VListModulePrivate(VListModule *parent) - : q_ptr(parent) - , m_view(nullptr) - , m_splitter(nullptr) - , m_childMargin(20) - , m_splitterSize({}) - { - } - - void onCurrentModuleChanged(ModuleObject *child) - { - if (!m_splitter) - return; - if (child) { - QWidget *widget = nullptr; - ModuleObject *activeModule = nullptr; - if (child->extra() && child->hasChildrens()) { - activeModule = child->children(0); - } else { - activeModule = child; - } - - PageModule *module = qobject_cast(activeModule); - if (module) { - module->setContentsMargins(m_childMargin, 0, m_childMargin, 0); - module->setMaximumWidth(DCC_PAGEMODULE_MAX_WIDTH + m_childMargin * 2); - } - widget = child->activePage(); - if (widget) { - QWidget *oldWidget = m_splitter->replaceWidget(1, widget); - widget->setVisible(true); - if (oldWidget) - delete oldWidget; - ModuleDataModel *model = static_cast(m_view->model()); - m_view->setCurrentIndex(model->index(child)); - } - } - } - - void onRemoveChild(DCC_NAMESPACE::ModuleObject *const childModule) - { - int index = m_extraModules.indexOf(childModule); - if (index != -1) { - QLayoutItem *item = m_hlayout->takeAt(index); - item->widget()->deleteLater(); - delete item; - m_extraModules.removeAt(index); - } - } - - void onAddChild(DCC_NAMESPACE::ModuleObject *const childModule) - { - if (ModuleObject::IsHidden(childModule) || !childModule->extra() || m_extraModules.contains(childModule)) - return; - - Q_Q(VListModule); - int index = 0; - for (auto &&child : q->childrens()) { - if (child == childModule) - break; - if (!ModuleObject::IsHidden(child) && child->extra()) - index++; - } - auto newPage = childModule->activePage(); - if (newPage) { - m_hlayout->insertWidget(index, newPage); - m_extraModules.insert(index, childModule); - } - } - - QWidget *page() - { - Q_Q(VListModule); - m_splitter = new QSplitter(Qt::Horizontal); - QObject::connect(m_splitter, &QObject::destroyed, q, [this]() { m_splitter = nullptr; }); - - DListView *view = new DListView(m_splitter); - QWidget *widget = new QWidget(m_splitter); - QVBoxLayout *vlayout = new QVBoxLayout; - m_hlayout = new QHBoxLayout; - widget->setLayout(vlayout); - vlayout->addWidget(view); - vlayout->addLayout(m_hlayout); - widget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); - widget->setMinimumWidth(158); - widget->setMaximumWidth(300); - m_splitter->addWidget(widget); - m_emptyWidget = new QWidget(m_splitter); - m_splitter->addWidget(m_emptyWidget); - m_splitter->setChildrenCollapsible(false); - - ModuleDataModel *model = new ModuleDataModel(view); - model->setModuleObject(q); - QObject::connect(q, &VListModule::currentModuleChanged, m_splitter, [this](ModuleObject *child) { - onCurrentModuleChanged(child); - }); - - view->setModel(model); - view->setFrameShape(QFrame::NoFrame); - view->setAutoScroll(true); - view->setDragEnabled(false); - view->setSpacing(5); - view->setItemSpacing(0); - view->setSelectionMode(QAbstractItemView::SingleSelection); - m_view = view; - - for (auto tmpChild : q->childrens()) { - if (tmpChild->extra()) { - auto page = tmpChild->activePage(); - if (page) { - m_hlayout->addWidget(page); - m_extraModules.append(tmpChild); - } - } - } - - auto onClicked = [](const QModelIndex &index) { - ModuleObject *obj = static_cast(index.internalPointer()); - if (obj && !ModuleObject::IsDisabled(obj)) - obj->trigger(); - }; - - QObject::connect(m_view, &DListView::activated, m_view, &DListView::clicked); - QObject::connect(m_view, &DListView::clicked, m_view, onClicked); - QObject::connect(q, &ModuleObject::insertedChild, m_view, [this](ModuleObject *const childModule) { onAddChild(childModule); }); - QObject::connect(q, &ModuleObject::removedChild, m_view, [this](ModuleObject *const childModule) { onRemoveChild(childModule); }); - QObject::connect(q, &ModuleObject::childStateChanged, m_view, [this](ModuleObject *const tmpChild, uint32_t flag, bool state) { - if (ModuleObject::IsHiddenFlag(flag)) { - if (state) - onRemoveChild(tmpChild); - else - onAddChild(tmpChild); - } - }); - QObject::connect(m_splitter, &QSplitter::splitterMoved, m_splitter, [this]([[maybe_unused]] int pos, [[maybe_unused]] int index) { - m_splitterSize = m_splitter->sizes(); - }); - m_childMargin = 0;//20; - if (qobject_cast(q->getParent())) { - m_childMargin = 0;//10; - m_view->setContentsMargins(10, 0, 10, 10); - } - onCurrentModuleChanged(q->currentModule()); - if (m_splitterSize.isEmpty()) { - m_splitterSize = {200, 600}; - } - m_splitter->setSizes(m_splitterSize); - return m_splitter; - } - -private: - VListModule *q_ptr; - Q_DECLARE_PUBLIC(VListModule) - - QAbstractItemView *m_view; - QSplitter *m_splitter; - QWidget *m_emptyWidget; - QHBoxLayout *m_hlayout; - QList m_extraModules; - int m_childMargin; - QList m_splitterSize; -}; -} - -VListModule::VListModule(QObject *parent) - : ModuleObject(parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const QString &name, const QString &displayName, QObject *parent) - : ModuleObject(name, displayName, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const QString &name, const QStringList &contentText, QObject *parent) - : ModuleObject(name, contentText, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const QString &name, const QString &displayName, const QStringList &contentText, QObject *parent) - : ModuleObject(name, displayName, contentText, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const QString &name, const QString &displayName, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, icon, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const QString &name, const QString &displayName, const QString &description, QObject *parent) - : ModuleObject(name, displayName, description, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const QString &name, const QString &displayName, const QString &description, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, description, icon, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const QString &name, const QString &displayName, const QString &description, const QIcon &icon, QObject *parent) - : ModuleObject(name, displayName, description, icon, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const QString &name, const QString &displayName, const QString &description, const QStringList &contentText, const QVariant &icon, QObject *parent) - : ModuleObject(name, displayName, description, contentText, icon, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::VListModule(const ModuleInitContext &message, QObject *parent) - : ModuleObject(message, parent) - , DCC_INIT_PRIVATE(VListModule) -{ -} - -VListModule::~VListModule() -{ -} - -QWidget *VListModule::page() -{ - Q_D(VListModule); - return d->page(); -} diff --git a/dcc-old/src/plugin-accounts/operation/accountsdbusproxy.cpp b/dcc-old/src/plugin-accounts/operation/accountsdbusproxy.cpp deleted file mode 100644 index 0ebd0efdcd..0000000000 --- a/dcc-old/src/plugin-accounts/operation/accountsdbusproxy.cpp +++ /dev/null @@ -1,103 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "accountsdbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include -#include -#include - -AccountsDBusProxy::AccountsDBusProxy(QObject *parent) - : QObject(parent) -{ - init(); -} - -void AccountsDBusProxy::init() -{ - const QString accountsService = "org.deepin.dde.Accounts1"; - const QString accountsPath = "/org/deepin/dde/Accounts1"; - const QString accountsInterface = "org.deepin.dde.Accounts1"; - - const QString displayManagerService = "org.freedesktop.DisplayManager"; - const QString displayManagerPath = "/org/freedesktop/DisplayManager"; - const QString displayManagerInterface = "org.freedesktop.DisplayManager"; - - m_dBusAccountsInter = new DDBusInterface(accountsService, accountsPath, accountsInterface, QDBusConnection::systemBus(), this); - m_dBusDisplayManagerInter = new DDBusInterface(displayManagerService, displayManagerPath, displayManagerInterface, QDBusConnection::systemBus(), this); -} - -// Accounts -QStringList AccountsDBusProxy::userList() -{ - return qvariant_cast(m_dBusAccountsInter->property("UserList")); -} - -QList AccountsDBusProxy::sessions() -{ - return qvariant_cast>(m_dBusDisplayManagerInter->property("Sessions")); -} - -QDBusPendingReply AccountsDBusProxy::CreateUser(const QString &in0, const QString &in1, int in2) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2); - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("CreateUser"), argumentList); -} - -QDBusPendingReply<> AccountsDBusProxy::DeleteUser(const QString &in0, bool in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("DeleteUser"), argumentList); -} - -QDBusPendingReply AccountsDBusProxy::FindUserById(const qint64 &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("FindUserById"), argumentList); -} - -QDBusPendingReply AccountsDBusProxy::FindUserByName(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("FindUserByName"), argumentList); -} - -QDBusPendingReply AccountsDBusProxy::GetGroups() -{ - QList argumentList; - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("GetGroups"), argumentList); -} - -QDBusPendingReply AccountsDBusProxy::GetPresetGroups(int in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("GetPresetGroups"), argumentList); -} - -QDBusPendingReply AccountsDBusProxy::IsPasswordValid(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("IsPasswordValid"), argumentList); -} - -QDBusPendingReply AccountsDBusProxy::IsUsernameValid(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("IsUsernameValid"), argumentList); -} - -QDBusPendingReply AccountsDBusProxy::RandUserIcon() -{ - QList argumentList; - return m_dBusAccountsInter->asyncCallWithArgumentList(QStringLiteral("RandUserIcon"), argumentList); -} diff --git a/dcc-old/src/plugin-accounts/operation/accountsdbusproxy.h b/dcc-old/src/plugin-accounts/operation/accountsdbusproxy.h deleted file mode 100644 index 8d1f35c4e9..0000000000 --- a/dcc-old/src/plugin-accounts/operation/accountsdbusproxy.h +++ /dev/null @@ -1,58 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ACCOUNTSDBUSPROXY_H -#define ACCOUNTSDBUSPROXY_H - -#include -#include -#include -#include "interface/namespace.h" - -using Dtk::Core::DDBusInterface; - -class QDBusMessage; - -class AccountsDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit AccountsDBusProxy(QObject *parent = nullptr); - - // accounts - Q_PROPERTY(QStringList UserList READ userList NOTIFY UserListChanged) - QStringList userList(); - - // displaymanager - Q_PROPERTY(QList Sessions READ sessions NOTIFY SessionsChanged) - QList sessions(); - -signals: - void UserAdded(const QString &in0); - void UserDeleted(const QString &in0); - // begin property changed signals - void UserListChanged(const QStringList &value) const; - - // displaymanager - void SessionsChanged(const QList &value) const; - -public slots: - QDBusPendingReply CreateUser(const QString &in0, const QString &in1, int in2); - QDBusPendingReply<> DeleteUser(const QString &in0, bool in1); - QDBusPendingReply FindUserById(const qint64 &in0); - QDBusPendingReply FindUserByName(const QString &in0); - QDBusPendingReply GetGroups(); - QDBusPendingReply GetPresetGroups(int in0); - QDBusPendingReply IsPasswordValid(const QString &in0); - QDBusPendingReply IsUsernameValid(const QString &in0); - QDBusPendingReply RandUserIcon(); - -private: - void init(); - -private: - DDBusInterface *m_dBusAccountsInter; - DDBusInterface *m_dBusDisplayManagerInter; -}; - -#endif // ACCOUNTSDBUSPROXY_H diff --git a/dcc-old/src/plugin-accounts/operation/accountsworker.cpp b/dcc-old/src/plugin-accounts/operation/accountsworker.cpp deleted file mode 100644 index 1e844c3b0b..0000000000 --- a/dcc-old/src/plugin-accounts/operation/accountsworker.cpp +++ /dev/null @@ -1,821 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "accountsworker.h" -#include "user.h" -#include "widgets/utils.h" -#include "syncdbusproxy.h" -#include "accountsdbusproxy.h" -#include "userdbusproxy.h" -#include "securitydbusproxy.h" - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -using namespace PolkitQt1; - -using namespace DCC_NAMESPACE; - -AccountsWorker::AccountsWorker(UserModel *userList, QObject *parent) - : QObject(parent) - , m_accountsInter(new AccountsDBusProxy(this)) - , m_userQInter(new UserDBusProxy(QString("/org/deepin/dde/Accounts1/User%1").arg(getuid()), this)) - , m_syncInter(new SyncDBusProxy(this)) - , m_securityInter(new SecurityDBusProxy(this)) - , m_userModel(userList) -{ - struct passwd *pws; - pws = getpwuid(getuid()); - m_currentUserName = QString(pws->pw_name); - m_userModel->setCurrentUserName(m_currentUserName); - m_userModel->setIsSecurityHighLever(hasOpenSecurity()); - - connect(m_accountsInter, &AccountsDBusProxy::UserListChanged, this, &AccountsWorker::onUserListChanged, Qt::QueuedConnection); - connect(m_accountsInter, &AccountsDBusProxy::UserAdded, this, &AccountsWorker::addUser, Qt::QueuedConnection); - connect(m_accountsInter, &AccountsDBusProxy::UserDeleted, this, &AccountsWorker::removeUser, Qt::QueuedConnection); - connect(m_accountsInter, &AccountsDBusProxy::SessionsChanged, this, &AccountsWorker::updateUserOnlineStatus); - - QDBusPendingReply reply = m_accountsInter->FindUserById(pws->pw_uid); - QString currentUserPath = reply.value(); - if (!currentUserPath.isEmpty()) { - onUserListChanged({currentUserPath}); - } - onUserListChanged(m_accountsInter->userList()); - updateUserOnlineStatus(m_accountsInter->sessions()); - getAllGroups(); - getPresetGroups(); - - if(DSysInfo::UosServer != DSysInfo::uosType()) { - m_userModel->setAutoLoginVisable(true); - m_userModel->setNoPassWordLoginVisable(true); - } else { - m_userModel->setAutoLoginVisable(true); - m_userModel->setNoPassWordLoginVisable(false); - } -} - -void AccountsWorker::getAllGroups() -{ - QDBusPendingReply reply = m_accountsInter->GetGroups(); - QDBusPendingCallWatcher *groupResult = new QDBusPendingCallWatcher(reply, this); - connect(groupResult, &QDBusPendingCallWatcher::finished, this, &AccountsWorker::getAllGroupsResult); -} - -void AccountsWorker::getAllGroupsResult(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - if (!watch->isError()) { - m_userModel->setAllGroups(reply.value()); - } else { - qDebug() << "getAllGroupsResult error." << watch->error(); - } - watch->deleteLater(); -} - -void AccountsWorker::getPresetGroups() -{ - int userType = DSysInfo::UosServer == DSysInfo::uosType() ? 0 : 1; - QDBusPendingReply reply = m_accountsInter->GetPresetGroups(userType); - QDBusPendingCallWatcher *presetGroupsResult = new QDBusPendingCallWatcher(reply, this); - connect(presetGroupsResult, &QDBusPendingCallWatcher::finished, this, &AccountsWorker::getPresetGroupsResult); -} - -void AccountsWorker::getPresetGroupsResult(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - if (!watch->isError()) { - m_userModel->setPresetGroups(reply.value()); - } else { - qDebug() << "getPresetGroupsResult error." << watch->error(); - } - watch->deleteLater(); -} - -void AccountsWorker::getUOSID(QString &uosid) -{ - const auto &result = m_syncInter->UOSID(); - if (!result.isEmpty()) { - uosid = result; - } -} - -void AccountsWorker::getUUID(QString &uuid) -{ - QVariant retUUID = m_userQInter->uuid(); - uuid = retUUID.toString(); -} - -void AccountsWorker::localBindCheck(User *user, const QString &uosid, const QString &uuid) -{ - Q_UNUSED(user) - QFutureWatcher *watcher = new QFutureWatcher(this); - connect(watcher, &QFutureWatcher::finished, [this, watcher] { - BindCheckResult result = watcher->result(); - if (result.error.isEmpty()) - Q_EMIT localBindUbid(result.ubid); - else - Q_EMIT localBindError(result.error); - watcher->deleteLater(); - }); - QFuture future = QtConcurrent::run(this, &AccountsWorker::checkLocalBind, uosid, uuid); - watcher->setFuture(future); -} - -void AccountsWorker::startResetPasswordExec(User *user) -{ - qInfo() << "Begin Resetpassword"; - UserDBusProxy *userInter = m_userInters.value(user); - auto reply = userInter->SetPassword(""); - reply.waitForFinished(); - Q_EMIT user->startResetPasswordReplied(reply.error().message()); -} - -void AccountsWorker::asyncSecurityQuestionsCheck(User *user) -{ - QFutureWatcher> *watcher = new QFutureWatcher>(this); - connect(watcher, &QFutureWatcher>::finished, [user, watcher] { - QList result = watcher->result(); - if (result.size() != SECURITY_QUESTIONS_ERROR_COUNT) - Q_EMIT user->startSecurityQuestionsCheckReplied(result); - - watcher->deleteLater(); - }); - QFuture> future = QtConcurrent::run(this, &AccountsWorker::securityQuestionsCheck); - watcher->setFuture(future); -} - -QList AccountsWorker::securityQuestionsCheck() -{ - QDBusPendingReply> reply = m_userQInter->GetSecretQuestions(); - if (!reply.error().message().isEmpty()) { - qWarning() << reply.error().message(); - } - if (reply.isValid()) { - return reply.value(); - } - return {-1}; -} - -void AccountsWorker::setPasswordHint(User *user, const QString &passwordHint) -{ - UserDBusProxy *userInter = m_userInters.value(user); - Q_ASSERT(userInter); - - userInter->SetPasswordHint(passwordHint); -} - -void AccountsWorker::setSecurityQuestions(User *user, const QMap &securityQuestions) -{ - QDBusPendingReply reply = m_userQInter->SetSecretQuestions(securityQuestions); - if (reply.isValid()) { - Q_EMIT user->setSecurityQuestionsReplied(reply.error().message()); - } - if (!reply.error().message().isEmpty()) { - Q_EMIT user->setSecurityQuestionsReplied(reply.error().message() + "error"); - } -} - -bool AccountsWorker::hasOpenSecurity() -{ - const auto &value = m_securityInter->Status(); - if (value.isEmpty()) { - qWarning() << m_securityInter->lastError(); - return false; - } - if (value == "open") - return true; - return false; -} - -SecurityLever AccountsWorker::getSecUserLeverbyname(QString userName) -{ - std::tuple result = m_securityInter->GetSEUserByName(userName); - const auto &value = std::get<0>(result); - if (value.isEmpty()) { - qWarning() << m_securityInter->lastError(); - return SecurityLever::Standard; - } - - if (value == QStringLiteral("sysadm_u")) { - return SecurityLever::Sysadm; - } - if (value == QStringLiteral("secadm_u")) { - return SecurityLever::Secadm; - } - if (value == QStringLiteral("audadm_u")) { - return SecurityLever::Audadm; - } - if (value == QStringLiteral("auditadm_u")) { - return SecurityLever::Auditadm; - } - - return SecurityLever::Standard; -} - -void AccountsWorker::checkPwdLimitLevel() -{ - // 密码校验失败并且安全中心密码安全等级不为低,弹出跳转到安全中心的对话框,低、中、高等级分别对应的值为1、2、3 - QDBusInterface interface(QStringLiteral("com.deepin.defender.daemonservice"), - QStringLiteral("/com/deepin/defender/daemonservice"), - QStringLiteral("com.deepin.defender.daemonservice")); - if (!interface.isValid()) { - return; - } - QDBusReply level = interface.call("GetPwdLimitLevel"); - if (level.error().type() == QDBusError::NoError && level != 1) { - QDBusReply errorTips = interface.call("GetPwdError"); - Q_EMIT showSafeyPage(errorTips); - } -} - -void AccountsWorker::setGroups(User *user, const QStringList &usrGroups) -{ - UserDBusProxy *userInter = m_userInters[user]; - Q_ASSERT(userInter); - - userInter->SetGroups(usrGroups); -} - -void AccountsWorker::active() -{ - for (auto it(m_userInters.cbegin()); it != m_userInters.cend(); ++it) { - it.key()->setName(it.value()->property("UserName").toString()); - it.key()->setAutoLogin(it.value()->automaticLogin()); - it.key()->setNopasswdLogin(it.value()->noPasswdLogin()); - it.key()->setUserType(it.value()->accountType()); - it.key()->setAvatars(it.value()->iconList()); - it.key()->setGroups(it.value()->groups()); - it.key()->setCurrentAvatar(it.value()->iconFile()); - it.key()->setCreatedTime(it.value()->createdTime()); - it.key()->setGid(it.value()->gid()); - it.key()->setFullname(it.value()->fullName()); - it.key()->setIsCurrentUser(it.value()->property("UserName").toString() == m_currentUserName); - } -} - -QString AccountsWorker::getCurrentUserName() -{ - return m_currentUserName; -} - -QDBusPendingReply AccountsWorker::isUsernameValid(const QString &name) -{ - QDBusPendingReply reply = m_accountsInter->IsUsernameValid(name); - reply.waitForFinished(); - return reply; -} - -void AccountsWorker::randomUserIcon(User *user) -{ - QDBusPendingCall call = m_accountsInter->RandUserIcon(); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, [=] { - if (!call.isError()) { - QDBusPendingReply reply = call.reply(); - user->setCurrentAvatar(reply.value()); - } - watcher->deleteLater(); - }); -} - -void AccountsWorker::createAccount(const User *user) -{ - qDebug() << "create account"; - - QFutureWatcher *watcher = new QFutureWatcher(this); - connect(watcher, &QFutureWatcher::finished, [this, watcher] { - CreationResult *result = watcher->result(); - m_userModel->setAllGroups(m_accountsInter->GetGroups()); - Q_EMIT accountCreationFinished(result); - Q_EMIT requestMainWindowEnabled(true); - watcher->deleteLater(); - }); - - QFuture future = QtConcurrent::run(this, &AccountsWorker::createAccountInternal, user); - Q_EMIT requestMainWindowEnabled(false); - watcher->setFuture(future); -} - -void AccountsWorker::updateGroupinfo() -{ - m_userModel->setAllGroups(m_accountsInter->GetGroups()); -} - -void AccountsWorker::setAvatar(User *user, const QString &iconPath) -{ - qDebug() << "set account avatar"; - UserDBusProxy *ui = m_userInters[user]; - Q_ASSERT(ui); - - ui->SetIconFile(iconPath); -} - -void AccountsWorker::setFullname(User *user, const QString &fullname) -{ - qInfo() << "fullname" << fullname; - - UserDBusProxy *ui = m_userInters[user]; - Q_ASSERT(ui); - - QDBusPendingCall call = ui->SetFullName(fullname); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (!call.isError()) { - Q_EMIT accountFullNameChangeFinished(); - } - watcher->deleteLater(); - }); -} - -void AccountsWorker::deleteAccount(User *user, const bool deleteHome) -{ - QDBusPendingCall call = m_accountsInter->DeleteUser(user->name(), deleteHome); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, user] (QDBusPendingCallWatcher* call) { - Q_EMIT requestMainWindowEnabled(true); - if (call->isError()) { - qDebug() << Q_FUNC_INFO << call->error().message(); - Q_EMIT m_userModel->isCancelChanged(); - } else { - if (!m_userInters.contains(user)) { - call->deleteLater(); - return; - } - Q_EMIT m_userModel->deleteUserSuccess(); - removeUser(m_userInters.value(user)->path()); - getAllGroups(); - } - call->deleteLater(); - }); - Q_EMIT requestMainWindowEnabled(false); -} - -void AccountsWorker::setAutoLogin(User *user, const bool autoLogin) -{ - UserDBusProxy *ui = m_userInters[user]; - Q_ASSERT(ui); - - QDBusPendingCall call = ui->SetAutomaticLogin(autoLogin); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - Q_EMIT user->autoLoginChanged(user->autoLogin()); - } - watcher->deleteLater(); - }); -} - -//切换账户权限 -void AccountsWorker::setAdministrator(User *user, const bool asAdministrator) -{ - UserDBusProxy *ui = m_userInters[user]; - Q_ASSERT(ui); - - // because this operate need root permission, we must wait for finished and refersh result - Q_EMIT requestMainWindowEnabled(false); - - QStringList lstGroups = ui->groups(); - if(!asAdministrator) - lstGroups.removeOne("sudo"); - else - lstGroups.append("sudo"); - - QDBusPendingCall call = ui->SetGroups(lstGroups); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - Q_EMIT user->userTypeChanged(user->userType()); - } - Q_EMIT requestMainWindowEnabled(true); - watcher->deleteLater(); - }); -} - -void AccountsWorker::loadUserList() -{ - onUserListChanged(m_accountsInter->userList()); -} - -void AccountsWorker::onUserListChanged(const QStringList &userList) -{ - for (const QString &path : userList) { - if (!m_userModel->contains(path)) { - addUser(path); - } - } -} - -void AccountsWorker::setPassword(User *user, const QString &oldpwd, const QString &passwd, const QString &repeatPasswd, const bool needResult) -{ - QProcess process; - QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); - env.insert("LC_ALL", "C"); - process.setProcessEnvironment(env); - process.setProcessChannelMode(QProcess::MergedChannels); - - process.start("/bin/bash", QStringList() << "-c" << QString("passwd")); - if (user->passwordStatus() == NO_PASSWORD) { - process.write(QString("%1\n%2\n").arg(passwd).arg(repeatPasswd).toLatin1()); - } else { - process.write(QString("%1\n%2\n%3").arg(oldpwd).arg(passwd).arg(repeatPasswd).toLatin1()); - } - - process.closeWriteChannel(); - process.waitForFinished(); - - if (needResult) { - // process.exitCode() = 0 表示密码修改成功 - int exitCode = process.exitCode(); - const QString& outputTxt = process.readAll(); - Q_EMIT user->passwordModifyFinished(exitCode, outputTxt); - } -} - -void AccountsWorker::resetPassword(User *user, const QString &password) -{ - auto reply = m_userInters.value(user)->SetPassword(cryptUserPassword(password)); - reply.waitForFinished(); - - Q_EMIT user->passwordResetFinished(reply.error().message()); -} - -void AccountsWorker::deleteUserIcon(User *user, const QString &iconPath) -{ - UserDBusProxy *userInter = m_userInters[user]; - Q_ASSERT(userInter); - - userInter->DeleteIconFile(iconPath); -} - -void AccountsWorker::addUser(const QString &userPath) -{ - if (userPath.contains("User0", Qt::CaseInsensitive) || m_userModel->contains(userPath)) - return; - - if(!userPath.contains("/org/deepin/dde/Accounts1")) - return; - - UserDBusProxy *userInter = new UserDBusProxy(userPath, this); - User *user = new User(this); - - connect(userInter, &UserDBusProxy::UserNameChanged, user, [=](const QString &name) { - user->setName(name); - user->setSecurityLever(getSecUserLeverbyname(name)); - user->setOnline(m_onlineUsers.contains(name)); - user->setIsCurrentUser(name == m_currentUserName); - checkADUser(); - }); - - connect(userInter, &UserDBusProxy::AutomaticLoginChanged, user, &User::setAutoLogin); - connect(userInter, &UserDBusProxy::IconListChanged, user, &User::setAvatars); - connect(userInter, &UserDBusProxy::IconFileChanged, user, &User::setCurrentAvatar); - connect(userInter, &UserDBusProxy::FullNameChanged, user, &User::setFullname); - connect(userInter, &UserDBusProxy::NoPasswdLoginChanged, user, &User::setNopasswdLogin); - connect(userInter, &UserDBusProxy::PasswordStatusChanged, user, &User::setPasswordStatus); - connect(userInter, &UserDBusProxy::CreatedTimeChanged, user, &User::setCreatedTime); - connect(userInter, &UserDBusProxy::GroupsChanged, user, &User::setGroups); - connect(userInter, &UserDBusProxy::AccountTypeChanged, user, &User::setUserType); - connect(userInter, &UserDBusProxy::MaxPasswordAgeChanged, user, &User::setPasswordAge); - connect(userInter, &UserDBusProxy::GidChanged, user, &User::setGid); - - // 这里直接赋值的话, 由于请求是异步的, 所以一开始会被初始化成乱码, - // 然后数据正常了以后会额外产生一次变化信号 - // 对于计算当前有多少个管理员有干扰. - userInter->iconList(); - userInter->groups(); - userInter->iconFile(); - userInter->noPasswdLogin(); - userInter->passwordStatus(); - userInter->createdTime(); - userInter->accountType(); - userInter->maxPasswordAge(); - userInter->IsPasswordExpired(); - userInter->gid(); - - user->setName(userInter->userName()); - user->setFullname(userInter->fullName()); - user->setAutoLogin(userInter->automaticLogin()); - user->setAvatars(userInter->iconList()); - user->setCurrentAvatar(userInter->iconFile()); - user->setNopasswdLogin(userInter->noPasswdLogin()); - user->setPasswordStatus(userInter->passwordStatus()); - user->setCreatedTime(userInter->createdTime()); - user->setGroups(userInter->groups()); - user->setUserType(userInter->accountType()); - user->setPasswordAge(userInter->maxPasswordAge()); - user->setGid(userInter->gid()); - - m_userInters[user] = userInter; - m_userModel->addUser(userPath, user); -} - -void AccountsWorker::removeUser(const QString &userPath) -{ - for (UserDBusProxy *userInter : m_userInters.values()) { - if (userInter->path() == userPath) { - User *user = m_userInters.key(userInter); - user->deleteLater(); - - m_userInters.remove(user); - m_userModel->removeUser(userPath); - - return; - } - } -} - -void AccountsWorker::setNopasswdLogin(User *user, const bool nopasswdLogin) -{ - UserDBusProxy *userInter = m_userInters[user]; - Q_ASSERT(userInter); - - QDBusPendingCall call = userInter->EnableNoPasswdLogin(nopasswdLogin); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - Q_EMIT user->nopasswdLoginChanged(user->nopasswdLogin()); - } - QProcess restartLock; - QStringList restartLockCommand = QStringList { "--user", "restart", "dde-lock.service" }; - restartLock.start("systemctl", restartLockCommand); - restartLock.waitForFinished(-1); - watcher->deleteLater(); - }); -} - -void AccountsWorker::setMaxPasswordAge(User *user, const int maxAge) -{ - UserDBusProxy *userInter = m_userInters[user]; - Q_ASSERT(userInter); - - QDBusPendingCall call = userInter->SetMaxPasswordAge(maxAge); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - Q_EMIT user->passwordAgeChanged(user->passwordAge()); - } - watcher->deleteLater(); - }); -} - -void AccountsWorker::refreshADDomain() -{ - QProcess *process = new QProcess(this); - process->start("/opt/pbis/bin/enum-users", QStringList()); - - connect(process, &QProcess::readyReadStandardOutput, this, [=] { - QRegularExpression re("Name:\\s+(\\w+)"); - QRegularExpressionMatch match = re.match(process->readAll()); - m_userModel->setIsJoinADDomain(match.hasMatch()); - }); - - connect(process, static_cast(&QProcess::finished), process, &QProcess::deleteLater); -} - -void AccountsWorker::ADDomainHandle(const QString &server, const QString &admin, const QString &password) -{ - const bool isJoin = m_userModel->isJoinADDomain(); - int exitCode = 0; - if (isJoin) { - exitCode = QProcess::execute("pkexec", QStringList() << "/opt/pbis/bin/domainjoin-cli" - << "leave" - << "--disable" - << "ssh"); - } else { - // for safety, restart lwsmd service before join AD Domain - QProcess::execute("pkexec", QStringList() << "/bin/systemctl" - << "restart" - << "lwsmd"); - exitCode = QProcess::execute("pkexec", QStringList() << "/opt/pbis/bin/domainjoin-cli" - << "join" - << "--disable" - << "ssh" << server << admin << password); - } - - QString message; - - if (!exitCode) { - message = isJoin ? tr("Your host was removed from the domain server successfully") - : tr("Your host joins the domain server successfully"); - - // Additional operation, need to initialize the user's settings - if (!isJoin) { - QProcess::execute("pkexec", QStringList() << "/opt/pbis/bin/config" - << "UserDomainPrefix" - << "ADS"); - QProcess::execute("pkexec", QStringList() << "/opt/pbis/bin/config" - << "LoginShellTemplate" - << "/bin/bash"); - } - // save config - QFile file("/etc/deepin/dde-session-ui.conf"); - QFile tmpFile("/tmp/.dde-session-ui.conf"); - - if (file.exists() && file.open(QIODevice::Text | QIODevice::ReadOnly)) { - qDebug() << file.copy("/tmp/.dde-session-ui.conf"); - } - if (tmpFile.open(QIODevice::Text | QIODevice::ReadWrite)) { - QSettings setting("/tmp/.dde-session-ui.conf", QSettings::IniFormat); - setting.setValue("loginPromptInput", !isJoin); - setting.sync(); - QProcess::execute("pkexec", QStringList() << "cp" - << "/tmp/.dde-session-ui.conf" - << "/etc/deepin/dde-session-ui.conf"); - tmpFile.remove(); - } - } else { - message = isJoin ? tr("Your host failed to leave the domain server") - : tr("Your host failed to join the domain server"); - } - - DDBusSender() - .service("org.freedesktop.Notifications") - .path("/org/freedesktop/Notifications") - .interface("org.freedesktop.Notifications") - .method("Notify") - .arg(QString()) - .arg((uint)QDateTime::currentMSecsSinceEpoch()) - .arg(exitCode ? QStringLiteral("dialog-warning") : QStringLiteral("dialog-ok")) - .arg(tr("AD domain settings")) - .arg(message) - .arg(QStringList()) - .arg(QVariantMap()) - .arg((int)0) - .call(); - - refreshADDomain(); -} - -void AccountsWorker::updateUserOnlineStatus(const QList &paths) -{ - m_onlineUsers.clear(); - m_userModel->SetOnlineUsers(QStringList()); - - for (const QDBusObjectPath &path : paths) { - QDBusInterface sessionInter("org.freedesktop.DisplayManager", - path.path(), - "org.freedesktop.DisplayManager.Session", - QDBusConnection::systemBus()); - - m_onlineUsers << qvariant_cast(sessionInter.property("UserName")); - } - - for (User *user : m_userModel->userList()) { - user->setOnline(m_onlineUsers.contains(user->name())); - } - - m_userModel->SetOnlineUsers(m_onlineUsers); - - checkADUser(); -} - -void AccountsWorker::checkADUser() -{ - // AD User is not in native user list, but session list have it. - bool isADUser = false; - - QStringList userList; - - for (User *user : m_userModel->userList()) { - userList << user->name(); - } - - for (const QString &u : m_onlineUsers) { - if (!userList.contains(u)) { - isADUser = true; - break; - } - } - - m_userModel->setADUserLogind(isADUser); -} - -CreationResult *AccountsWorker::createAccountInternal(const User *user) -{ - CreationResult *result = new CreationResult; - - // validate username - QDBusPendingReply reply = m_accountsInter->IsUsernameValid(user->name()); - reply.waitForFinished(); - if (reply.isError()) { - result->setType(CreationResult::UserNameError); - result->setMessage(reply.error().message()); - - return result; - } - bool validation = reply.argumentAt(0).toBool(); - if (!validation) { - result->setType(CreationResult::UserNameError); - result->setMessage(dgettext("dde-daemon", reply.argumentAt(1).toString().toUtf8().data())); - return result; - } - - // validate password - if (user->password() != user->repeatPassword()) { - result->setType(CreationResult::PasswordMatchError); - result->setMessage(tr("Password not match")); - return result; - } - - Authority::Result authenticationResult; - authenticationResult = Authority::instance()->checkAuthorizationSync("org.deepin.dde.accounts.user-administration", UnixProcessSubject(getpid()), - Authority::AllowUserInteraction); - - if (Authority::Result::Yes != authenticationResult) { - result->setType(CreationResult::Canceled); - return result; - } - - // default FullName is empty string - QDBusObjectPath path; - QDBusPendingReply createReply = m_accountsInter->CreateUser(user->name(), user->fullname(), user->userType()); - createReply.waitForFinished(); - if (createReply.isError()) { - /* 这里由后端保证出错时一定有错误信息返回,如果没有错误信息,就默认用户在认证时点了取消 */ - result->setType(createReply.error().message().isEmpty() ? CreationResult::Canceled : CreationResult::UnknownError); - result->setMessage(createReply.error().message()); - return result; - } else { - path = createReply.argumentAt<0>(); - } - const QString userPath = path.path(); - - UserDBusProxy *userDBus = new UserDBusProxy(userPath, this); - if (!userDBus->interface()->isValid()) { - result->setType(CreationResult::UnknownError); - result->setMessage("user dbus is still not valid."); - - return result; - } - - //TODO(hualet): better to check all the call results. - bool sifResult = !userDBus->SetIconFile(user->currentAvatar()).isError(); - bool spResult = !userDBus->SetPassword(cryptUserPassword(user->password())).isError(); - bool groupResult = true; - bool passwordHintResult = true; - if (DSysInfo::UosServer == DSysInfo::uosType() && !user->groups().isEmpty()) { - groupResult = !userDBus->SetGroups(user->groups()).isError(); - } - passwordHintResult = !userDBus->SetPasswordHint(user->passwordHint()).isError(); - - if (!sifResult || !spResult || !groupResult || !passwordHintResult) { - result->setType(CreationResult::UnknownError); - if (!sifResult) - result->setMessage("set icon file for new created user failed."); - if (!spResult) - result->setMessage("set password for new created user failed"); - if (!groupResult) - result->setMessage("set group for new created user failed"); - return result; - } - - return result; -} - -QString AccountsWorker::cryptUserPassword(const QString &password) -{ - /* - NOTE(kirigaya): Password is a combination of salt and crypt function. - slat is begin with $6$, 16 byte of random values, at the end of $. - crypt function will return encrypted values. - */ - - const QString seedchars("./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); - char salt[] = "$6$................$"; - - std::random_device r; - std::default_random_engine e1(r()); - std::uniform_int_distribution uniform_dist(0, seedchars.size() - 1); //seedchars.size()是64,生成随机数的范围应该写成[0, 63]。 - - // Random access to a character in a restricted list - for (int i = 0; i != 16; i++) { - salt[3 + i] = seedchars.at(uniform_dist(e1)).toLatin1(); - } - - return crypt(password.toUtf8().data(), salt); -} - -BindCheckResult AccountsWorker::checkLocalBind(const QString &uosid, const QString &uuid) -{ - BindCheckResult result; - const auto &ret = m_syncInter->LocalBindCheck(uosid, uuid); - if (!ret.isEmpty()) - result.ubid = ret; - else - result.error = m_syncInter->lastError(); - return result; -} diff --git a/dcc-old/src/plugin-accounts/operation/accountsworker.h b/dcc-old/src/plugin-accounts/operation/accountsworker.h deleted file mode 100644 index e6cc6e60f3..0000000000 --- a/dcc-old/src/plugin-accounts/operation/accountsworker.h +++ /dev/null @@ -1,111 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ACCOUNTSWORKER_H -#define ACCOUNTSWORKER_H - -#include "interface/namespace.h" -#include "usermodel.h" -#include "creationresult.h" - -#include -#include - -#define SECURITY_QUESTIONS_ERROR_COUNT 1 - -class AccountsDBusProxy; -class UserDBusProxy; -class SyncDBusProxy; -class SecurityDBusProxy; - -namespace DCC_NAMESPACE { - -class User; - -struct BindCheckResult { - QString ubid = ""; - QString error = ""; -}; - -class AccountsWorker : public QObject -{ - Q_OBJECT - -public: - explicit AccountsWorker(UserModel * userList, QObject *parent = nullptr); - - void active(); - QString getCurrentUserName(); - void updateGroupinfo(); - QDBusPendingReply isUsernameValid(const QString &name); - -Q_SIGNALS: - void accountCreationFinished(CreationResult *result) const; - void accountFullNameChangeFinished() const; - void requestMainWindowEnabled(const bool isEnabled) const; - void localBindUbid(const QString &ubid); - void localBindError(const QString &error); - void showSafeyPage(const QString &errorTips); - -public Q_SLOTS: - void randomUserIcon(User *user); - void createAccount(const User *user); - - void setAvatar(User *user, const QString &iconPath); - void setFullname(User *user, const QString &fullname); - void deleteAccount(User *user, const bool deleteHome); - void setAutoLogin(User *user, const bool autoLogin); - void setAdministrator(User *user, const bool asAdministrator); - void onUserListChanged(const QStringList &userList); - void setPassword(User *user, const QString &oldpwd, const QString &passwd, const QString &repeatPasswd, const bool needResule = true); - void resetPassword(User *user, const QString &password); - void deleteUserIcon(User *user, const QString &iconPath); - void setNopasswdLogin(User *user, const bool nopasswdLogin); - void setMaxPasswordAge(User *user, const int maxAge); - void loadUserList(); - void getUOSID(QString &uosid); - void getUUID(QString &uuid); - void localBindCheck(User *user, const QString &uosid, const QString &uuid); - void startResetPasswordExec(User *user); - void asyncSecurityQuestionsCheck(User *user); - void refreshADDomain(); - void ADDomainHandle(const QString &server, const QString &admin, const QString &password); - void addUser(const QString &userPath); - void removeUser(const QString &userPath); - void setGroups(User *user, const QStringList &usrGroups); - void setPasswordHint(User *user, const QString &passwordHint); - void setSecurityQuestions(User *user, const QMap &securityQuestions); - - bool hasOpenSecurity(); - SecurityLever getSecUserLeverbyname(QString userName); - void checkPwdLimitLevel(); - -private Q_SLOTS: - void updateUserOnlineStatus(const QList &paths); - void getAllGroups(); - void getAllGroupsResult(QDBusPendingCallWatcher *watch); - void getPresetGroups(); - void getPresetGroupsResult(QDBusPendingCallWatcher *watch); - void checkADUser(); - -private: - UserDBusProxy *userInter(const QString &userName) const; - CreationResult *createAccountInternal(const User *user); - QString cryptUserPassword(const QString &password); - BindCheckResult checkLocalBind(const QString &uosid, const QString &uuid); - QList securityQuestionsCheck(); - -private: - AccountsDBusProxy *m_accountsInter; - UserDBusProxy *m_userQInter; - SyncDBusProxy *m_syncInter; - SecurityDBusProxy *m_securityInter; - QMap m_userInters; - QString m_currentUserName; - QStringList m_onlineUsers; - UserModel *m_userModel; -}; - -} // namespace DCC_NAMESPACE - -#endif // ACCOUNTSWORKER_H diff --git a/dcc-old/src/plugin-accounts/operation/creationresult.cpp b/dcc-old/src/plugin-accounts/operation/creationresult.cpp deleted file mode 100644 index bb0f731cba..0000000000 --- a/dcc-old/src/plugin-accounts/operation/creationresult.cpp +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "creationresult.h" - - -using namespace DCC_NAMESPACE; - -CreationResult::CreationResult(QObject *parent) - : CreationResult(NoError, QString(""), parent) -{ - -} - -CreationResult::CreationResult(CreationResult::ResultType type, const QString &message, QObject *parent) - : QObject(parent) - , m_type(type) - , m_message(message) -{ - -} - -void CreationResult::setType(const ResultType &type) -{ - m_type = type; -} - -void CreationResult::setMessage(const QString &message) -{ - m_message = message; -} - diff --git a/dcc-old/src/plugin-accounts/operation/creationresult.h b/dcc-old/src/plugin-accounts/operation/creationresult.h deleted file mode 100644 index 1fe9419b7a..0000000000 --- a/dcc-old/src/plugin-accounts/operation/creationresult.h +++ /dev/null @@ -1,41 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_ACCOUNTSS_CREATIONRESULT_H -#define DCC_ACCOUNTSS_CREATIONRESULT_H - -#include "interface/namespace.h" - -#include - -namespace DCC_NAMESPACE { - -class CreationResult : public QObject -{ - Q_OBJECT -public: - enum ResultType { - UserNameError, // 用户名错误 - PasswordError, // 密码错误 - PasswordMatchError, // 两次输入的密码不匹配 - UnknownError, // 未知错误 - Canceled, // 用户取消认证或关闭认证窗口 - NoError - }; - - explicit CreationResult(QObject *parent = 0); - explicit CreationResult(ResultType type, const QString &message, QObject *parent = 0); - - inline ResultType type() const { return m_type; } - void setType(const ResultType &type); - - inline QString message() const { return m_message; } - void setMessage(const QString &message); - -private: - ResultType m_type; - QString m_message; -}; -} // namespace DCC_NAMESPACE - -#endif // DCC_ACCOUNTSS_CREATIONRESULT_H diff --git a/dcc-old/src/plugin-accounts/operation/qrc/accounts.qrc b/dcc-old/src/plugin-accounts/operation/qrc/accounts.qrc deleted file mode 100644 index fdf759fdc0..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/accounts.qrc +++ /dev/null @@ -1,23 +0,0 @@ - - - icons/dcc_nav_accounts_42px.svg - icons/dcc_nav_accounts_84px.svg - icons/dcc_avatar_12px.svg - - - icons/dcc_user_animal.dci - icons/dcc_user_custom.dci - icons/dcc_user_emoji.dci - icons/dcc_user_funny.dci - icons/dcc_user_human.dci - icons/dcc_user_add_icon.dci - icons/dcc_user_scenery.dci - - - icons/dcc_deepin_password_strength_high.svg - icons/dcc_deepin_password_strength_low.svg - icons/dcc_deepin_password_strength_middle.svg - icons/dcc_deepin_password_strength_unactive_deep_mode.svg - icons/dcc_deepin_password_strength_unactive_light_mode.svg - - diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_avatar_12px.svg b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_avatar_12px.svg deleted file mode 100644 index 0c1039f946..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_avatar_12px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_high.svg b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_high.svg deleted file mode 100644 index 13b3c805ca..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_high.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - 矩形 - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_low.svg b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_low.svg deleted file mode 100644 index 982b7b312f..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_low.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - 矩形 - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_middle.svg b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_middle.svg deleted file mode 100644 index 1f5b4090db..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_middle.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - 矩形 - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_unactive_deep_mode.svg b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_unactive_deep_mode.svg deleted file mode 100644 index dc4f731316..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_unactive_deep_mode.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - 密码-未激活-浅色备份 - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_unactive_light_mode.svg b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_unactive_light_mode.svg deleted file mode 100644 index 0eae280451..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_deepin_password_strength_unactive_light_mode.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - 密码-未激活-浅色 - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_nav_accounts_42px.svg b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_nav_accounts_42px.svg deleted file mode 100644 index 9c86bb720d..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_nav_accounts_42px.svg +++ /dev/null @@ -1,150 +0,0 @@ - - - dcc_nav_accounts_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_nav_accounts_84px.svg b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_nav_accounts_84px.svg deleted file mode 100644 index b02881a3dd..0000000000 --- a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_nav_accounts_84px.svg +++ /dev/null @@ -1,178 +0,0 @@ - - - dcc_nav_accounts_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_add_icon.dci b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_add_icon.dci deleted file mode 100644 index e0c866a9c6..0000000000 Binary files a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_add_icon.dci and /dev/null differ diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_animal.dci b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_animal.dci deleted file mode 100644 index b7d5e3d942..0000000000 Binary files a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_animal.dci and /dev/null differ diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_custom.dci b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_custom.dci deleted file mode 100644 index 060c2919cc..0000000000 Binary files a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_custom.dci and /dev/null differ diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_emoji.dci b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_emoji.dci deleted file mode 100644 index 1e6a1463ef..0000000000 Binary files a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_emoji.dci and /dev/null differ diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_funny.dci b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_funny.dci deleted file mode 100644 index 5f122085da..0000000000 Binary files a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_funny.dci and /dev/null differ diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_human.dci b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_human.dci deleted file mode 100644 index b6055cbbb6..0000000000 Binary files a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_human.dci and /dev/null differ diff --git a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_scenery.dci b/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_scenery.dci deleted file mode 100644 index c52f7838ee..0000000000 Binary files a/dcc-old/src/plugin-accounts/operation/qrc/icons/dcc_user_scenery.dci and /dev/null differ diff --git a/dcc-old/src/plugin-accounts/operation/securitydbusproxy.cpp b/dcc-old/src/plugin-accounts/operation/securitydbusproxy.cpp deleted file mode 100644 index 358528b727..0000000000 --- a/dcc-old/src/plugin-accounts/operation/securitydbusproxy.cpp +++ /dev/null @@ -1,57 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "securitydbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include - -SecurityDBusProxy::SecurityDBusProxy(QObject *parent) - : QObject(parent) -{ - init(); -} - -QString SecurityDBusProxy::Status() -{ - QDBusPendingReply reply = m_dBusInter->asyncCall("Status"); - reply.waitForFinished(); - if (reply.isError()) { - m_lastError = reply.error().message(); - } else { - return reply.argumentAt<0>(); - } - return QString(); -} - -std::tuple SecurityDBusProxy::GetSEUserByName(const QString &user) -{ - Q_UNUSED(user) - std::tuple result; - QDBusPendingReply reply = m_dBusInter->asyncCall("GetSEUserByName"); - reply.waitForFinished(); - if (reply.isError()) { - m_lastError = reply.error().message(); - } else { - result = std::make_tuple(reply.argumentAt<0>(), reply.argumentAt<1>()); - } - return result; -} - -void SecurityDBusProxy::init() -{ - const QString &service = QStringLiteral("com.deepin.daemon.SecurityEnhance"); - const QString &path = QStringLiteral("/com/deepin/daemon/SecurityEnhance"); - const QString &interface = QStringLiteral("com.deepin.daemon.SecurityEnhance"); - - m_dBusInter = new DDBusInterface(service, path, interface, QDBusConnection::systemBus(), this); - - if (!m_dBusInter->isValid()) { - qWarning() << "Security interface invalid: " << m_dBusInter->lastError().message(); - return; - } -} - diff --git a/dcc-old/src/plugin-accounts/operation/securitydbusproxy.h b/dcc-old/src/plugin-accounts/operation/securitydbusproxy.h deleted file mode 100644 index 79ebb8d73b..0000000000 --- a/dcc-old/src/plugin-accounts/operation/securitydbusproxy.h +++ /dev/null @@ -1,33 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include -#include -#include "interface/namespace.h" -#include - -using Dtk::Core::DDBusInterface; - -class QDBusMessage; - -class SecurityDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit SecurityDBusProxy(QObject *parent = nullptr); - - QString Status(); - std::tuple GetSEUserByName(const QString &user); - - inline QString lastError() { return m_lastError; } - -private: - void init(); - -private: - DDBusInterface *m_dBusInter; - QString m_lastError; -}; diff --git a/dcc-old/src/plugin-accounts/operation/syncdbusproxy.cpp b/dcc-old/src/plugin-accounts/operation/syncdbusproxy.cpp deleted file mode 100644 index ca6915d941..0000000000 --- a/dcc-old/src/plugin-accounts/operation/syncdbusproxy.cpp +++ /dev/null @@ -1,59 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "syncdbusproxy.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -SyncDBusProxy::SyncDBusProxy(QObject *parent) - : QObject(parent) -{ - init(); -} - -QString SyncDBusProxy::UOSID() -{ - QDBusReply retUOSID = m_dBusInter->call("UOSID"); - m_lastError = retUOSID.error().message(); - if (m_lastError.isEmpty()) { - return retUOSID.value(); - } else { - qWarning() << "UOSID failed:" << m_lastError; - return QString(); - } -} - -QString SyncDBusProxy::LocalBindCheck(const QString &uosid, const QString &uuid) -{ - QDBusReply retLocalBindCheck = m_dBusInter->call(QDBus::BlockWithGui, "LocalBindCheck", uosid, uuid); - m_lastError = retLocalBindCheck.error().message(); - if (m_lastError.isEmpty()) { - return retLocalBindCheck.value(); - } else { - qWarning() << "localBindCheck failed:" << m_lastError; - return QString(); - } -} - -void SyncDBusProxy::init() -{ - const QString &service = QStringLiteral("com.deepin.sync.Helper"); - const QString &path = QStringLiteral("/com/deepin/sync/Helper"); - const QString &interface = QStringLiteral("com.deepin.sync.Helper"); - - m_dBusInter = new QDBusInterface(service, path, interface, QDBusConnection::systemBus(), this); - - if (!m_dBusInter->isValid()) { - qWarning() << "syncHelper interface invalid: " << m_dBusInter->lastError().message(); - return; - } -} - diff --git a/dcc-old/src/plugin-accounts/operation/syncdbusproxy.h b/dcc-old/src/plugin-accounts/operation/syncdbusproxy.h deleted file mode 100644 index 7582356088..0000000000 --- a/dcc-old/src/plugin-accounts/operation/syncdbusproxy.h +++ /dev/null @@ -1,30 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include -#include - -class QDBusInterface; -class QDBusMessage; - -class SyncDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit SyncDBusProxy(QObject *parent = nullptr); - - QString UOSID(); - QString LocalBindCheck(const QString &uosid, const QString &uuid); - - inline QString lastError() { return m_lastError; } - -private: - void init(); - -private: - QDBusInterface *m_dBusInter; - QString m_lastError; -}; diff --git a/dcc-old/src/plugin-accounts/operation/user.cpp b/dcc-old/src/plugin-accounts/operation/user.cpp deleted file mode 100644 index 1678c49e1d..0000000000 --- a/dcc-old/src/plugin-accounts/operation/user.cpp +++ /dev/null @@ -1,222 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "user.h" - -using namespace DCC_NAMESPACE; -User::User(QObject *parent) - : QObject(parent) - , m_isCurrentUser(false) - , m_autoLogin(false) - , m_online(false) - , m_nopasswdLogin(false) - , m_userType(UserType::StandardUser) - , m_createdTime(0) - , m_securityLever(SecurityLever::Standard) -{ -} - -const QString User::name() const -{ - return m_name; -} - -void User::setName(const QString &name) -{ - if (name != m_name) { - m_name = name; - - Q_EMIT nameChanged(m_name); - } -} - -void User::setFullname(const QString &fullname) -{ - if (fullname != m_fullname) { - m_fullname = fullname; - - Q_EMIT fullnameChanged(m_fullname); - } -} - -void User::setAutoLogin(const bool autoLogin) -{ - if (m_autoLogin == autoLogin) - return; - - m_autoLogin = autoLogin; - - Q_EMIT autoLoginChanged(m_autoLogin); -} - -void User::setAvatars(const QList &avatars) -{ - m_avatars = avatars; - - Q_EMIT avatarListChanged(m_avatars); -} - -void User::setGroups(const QStringList &groups) -{ - if (m_groups != groups) { - m_groups = groups; - Q_EMIT groupsChanged(m_groups); - } -} - -void User::setCurrentAvatar(const QString &avatar) -{ - if (m_currentAvatar != avatar) { - m_currentAvatar = avatar; - - Q_EMIT currentAvatarChanged(m_currentAvatar); - } -} - -void User::setPassword(const QString &password) -{ - m_password = password; -} - -void User::setRepeatPassword(const QString &repeatPassword) -{ - m_repeatPassword = repeatPassword; -} - -void User::setPasswordHint(const QString &passwordHint) -{ - m_passwordHint = passwordHint; -} - -void User::setOnline(bool online) -{ - if (m_online != online) { - m_online = online; - Q_EMIT onlineChanged(online); - } -} - -bool User::nopasswdLogin() const -{ - return m_nopasswdLogin; -} - -void User::setNopasswdLogin(bool nopasswdLogin) -{ - if (m_nopasswdLogin == nopasswdLogin) - return; - - m_nopasswdLogin = nopasswdLogin; - - Q_EMIT nopasswdLoginChanged(nopasswdLogin); -} - -const QString User::displayName() const -{ - return m_fullname.isEmpty() ? m_name : m_fullname; -} - -void User::setIsCurrentUser(bool isCurrentUser) -{ - if (isCurrentUser == m_isCurrentUser) - return; - - m_isCurrentUser = isCurrentUser; - - Q_EMIT isCurrentUserChanged(isCurrentUser); -} - -void User::setPasswordStatus(const QString& status) -{ - if (m_passwordStatus == status) { - return; - } - - m_passwordStatus = status; - - Q_EMIT passwordStatusChanged(status); -} - -void User::setCreatedTime(const quint64 & createdtime) -{ - if (m_createdTime == createdtime) { - return; - } - - m_createdTime = createdtime; - - Q_EMIT createdTimeChanged(createdtime); -} - -void User::setUserType(const int userType) -{ - if (m_userType == userType) { - return; - } - m_userType = userType; - Q_EMIT userTypeChanged(userType); -} - -void User::setIsPasswordExpired(bool isExpired) -{ - if (isExpired == m_isPasswordExpired) - return; - - m_isPasswordExpired = isExpired; - Q_EMIT isPasswordExpiredChanged(isExpired); -} - -void User::setPasswordAge(const int age) -{ - if (age == m_pwAge) - return; - - m_pwAge = age; - Q_EMIT passwordAgeChanged(age); -} - -int User::charactertypes(QString password) -{ - int Number_flag = 0; - int Capital_flag = 0; - int Small_flag = 0; - int Symbol_flag = 0; - QByteArray ba = password.toLatin1(); - const char *s = ba.data(); - - while (*s) { - if ('0' <= *s && '9' >= *s) { - Number_flag = 1 ; - } else if ('A' <= *s && 'Z' >= *s) { - Capital_flag = 1; - } else if ('a' <= *s && 'z' >= *s) { - Small_flag = 1; - } else { - Symbol_flag = 1; - } - s++; - } - return Number_flag + Capital_flag + Small_flag + Symbol_flag; -} - -void User::setGid(const QString &gid) -{ - if (m_gid == gid) - return; - - m_gid = gid; - Q_EMIT gidChanged(gid); -} - -SecurityLever User::securityLever() const -{ - return m_securityLever; -} - -void User::setSecurityLever(const SecurityLever &securityLever) -{ - m_securityLever = securityLever; -} - diff --git a/dcc-old/src/plugin-accounts/operation/user.h b/dcc-old/src/plugin-accounts/operation/user.h deleted file mode 100644 index e08187a70f..0000000000 --- a/dcc-old/src/plugin-accounts/operation/user.h +++ /dev/null @@ -1,149 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef USER_H -#define USER_H - -#include "interface/namespace.h" - -#include -#include -#include - -static const QString NO_PASSWORD { "NP" }; - -namespace DCC_NAMESPACE { - -enum SecurityLever { - Standard, - Sysadm, - Secadm, - Audadm, - Auditadm -}; - -class User : public QObject -{ - Q_OBJECT - -public: - enum UserType { - StandardUser = 0, - Administrator, - Customized - }; - - explicit User(QObject *parent = nullptr); - - Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged) - Q_PROPERTY(QString fullname READ fullname WRITE setFullname NOTIFY fullnameChanged) - - const QString name() const; - void setName(const QString &name); - - const QString fullname() const { return m_fullname; } - void setFullname(const QString &fullname); - - inline bool autoLogin() const { return m_autoLogin; } - void setAutoLogin(const bool autoLogin); - - inline const QList &avatars() const { return m_avatars; } - void setAvatars(const QList &avatars); - - inline const QStringList &groups() const { return m_groups; } - void setGroups(const QStringList &groups); - - inline const QString currentAvatar() const { return m_currentAvatar; } - void setCurrentAvatar(const QString &avatar); - - inline QString password() const { return m_password; } - void setPassword(const QString &password); - - inline QString repeatPassword() const { return m_repeatPassword; } - void setRepeatPassword(const QString &repeatPassword); - - inline QString passwordHint() const { return m_passwordHint; } - void setPasswordHint(const QString &passwordHint); - - inline bool online() const { return m_online; } - void setOnline(bool online); - - bool nopasswdLogin() const; - void setNopasswdLogin(bool nopasswdLogin); - - const QString displayName() const; - - inline bool isCurrentUser() const { return m_isCurrentUser; } - void setIsCurrentUser(bool isCurrentUser); - - inline QString passwordStatus() const { return m_passwordStatus; } - void setPasswordStatus(const QString& status); - - inline quint64 createdTime() const { return m_createdTime; } - void setCreatedTime(const quint64 & createdtime); - - inline int userType() const { return m_userType; } - void setUserType(const int userType); - inline bool isPasswordExpired() const { return m_isPasswordExpired; } - void setIsPasswordExpired(bool isExpired); - - inline int passwordAge() const { return m_pwAge; } - void setPasswordAge(const int age); - - int charactertypes(QString password); - - inline QString gid() const { return m_gid; } - void setGid(const QString &gid); - - SecurityLever securityLever() const; - void setSecurityLever(const SecurityLever &securityLever); - -Q_SIGNALS: - void passwordModifyFinished(const int exitCode, const QString &errorTxt) const; - void nameChanged(const QString &name) const; - void fullnameChanged(const QString &name) const; - void currentAvatarChanged(const QString &avatar) const; - void autoLoginChanged(const bool autoLogin) const; - void avatarListChanged(const QList &avatars) const; - void groupsChanged(const QStringList &groups) const; - void onlineChanged(const bool &online) const; - void nopasswdLoginChanged(const bool nopasswdLogin) const; - void isCurrentUserChanged(bool isCurrentUser); - void passwordStatusChanged(const QString& password) const; - void createdTimeChanged(const quint64 & createtime); - void userTypeChanged(const int userType); - void isPasswordExpiredChanged(const bool isExpired) const; - void passwordAgeChanged(const int age) const; - void gidChanged(const QString &gid); - void passwordResetFinished(const QString &errorText) const; - void startResetPasswordReplied(const QString &errorText); - void setSecurityQuestionsReplied(const QString &errorText); - void startSecurityQuestionsCheckReplied(const QList &questios); - -private: - bool m_isCurrentUser; - bool m_autoLogin; - bool m_online; - bool m_nopasswdLogin; - int m_userType; - bool m_isPasswordExpired{false}; - int m_pwAge{-1}; - QString m_name; - QString m_fullname; - QString m_password; - QString m_repeatPassword; - QString m_currentAvatar; - QString m_passwordStatus; // NP: no password, P have a password, L user is locked - QList m_avatars; - QStringList m_groups; - quint64 m_createdTime; - QString m_gid; - QString m_passwordHint; - SecurityLever m_securityLever; - - - Q_ENUM(SecurityLever); -}; -} // namespace DCC_NAMESPACE - -#endif // USER_H diff --git a/dcc-old/src/plugin-accounts/operation/userdbusproxy.cpp b/dcc-old/src/plugin-accounts/operation/userdbusproxy.cpp deleted file mode 100644 index 62c263d5fc..0000000000 --- a/dcc-old/src/plugin-accounts/operation/userdbusproxy.cpp +++ /dev/null @@ -1,314 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "userdbusproxy.h" - -#include -#include -#include -#include -#include -#include - -UserDBusProxy::UserDBusProxy(QString accountsUserPath, QObject *parent) - : QObject(parent) - , m_accountsUserPath(accountsUserPath) -{ - init(); -} - -void UserDBusProxy::init() -{ - const QString AccountsUserService = "org.deepin.dde.Accounts1"; - const QString AccountsUserInterface = "org.deepin.dde.Accounts1.User"; - const QString PropertiesInterface = "org.freedesktop.DBus.Properties"; - const QString PropertiesChanged = "PropertiesChanged"; - - m_dBusAccountsUserInter = new QDBusInterface(AccountsUserService, m_accountsUserPath, AccountsUserInterface, QDBusConnection::systemBus(), this); - QDBusConnection dbusConnection = m_dBusAccountsUserInter->connection(); - dbusConnection.connect(AccountsUserService, m_accountsUserPath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); -} - -//users -QDBusPendingReply<> UserDBusProxy::AddGroup(const QString &group) -{ - QList argumentList; - argumentList << QVariant::fromValue(group); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("AddGroup"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::DeleteGroup(const QString &group) -{ - QList argumentList; - argumentList << QVariant::fromValue(group); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("DeleteGroup"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::DeleteIconFile(const QString &iconFile) -{ - QList argumentList; - argumentList << QVariant::fromValue(iconFile); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("DeleteIconFile"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::EnableNoPasswdLogin(bool enabled) -{ - QList argumentList; - argumentList << QVariant::fromValue(enabled); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("EnableNoPasswdLogin"), argumentList); -} -QDBusPendingReply UserDBusProxy::IsPasswordExpired() -{ - QList argumentList; - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("IsPasswordExpired"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetAutomaticLogin(bool enabled) -{ - QList argumentList; - argumentList << QVariant::fromValue(enabled); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetAutomaticLogin"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetDesktopBackgrounds(const QStringList &backgrounds) -{ - QList argumentList; - argumentList << QVariant::fromValue(backgrounds); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetDesktopBackgrounds"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetFullName(const QString &name) -{ - qInfo() << "m_accountsUserPath" << m_accountsUserPath; - QList argumentList; - argumentList << QVariant::fromValue(name); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetFullName"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetGreeterBackground(const QString &background) -{ - QList argumentList; - argumentList << QVariant::fromValue(background); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetGreeterBackground"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetGroups(const QStringList &groups) -{ - QList argumentList; - argumentList << QVariant::fromValue(groups); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetGroups"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetHistoryLayout(const QStringList &layouts) -{ - QList argumentList; - argumentList << QVariant::fromValue(layouts); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetHistoryLayout"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetHomeDir(const QString &home) -{ - QList argumentList; - argumentList << QVariant::fromValue(home); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetHomeDir"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetIconFile(const QString &iconFile) -{ - QList argumentList; - argumentList << QVariant::fromValue(iconFile); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetIconFile"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetLayout(const QString &layout) -{ - QList argumentList; - argumentList << QVariant::fromValue(layout); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetLayout"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetLocale(const QString &locale) -{ - QList argumentList; - argumentList << QVariant::fromValue(locale); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetLocale"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetLocked(bool locked) -{ - QList argumentList; - argumentList << QVariant::fromValue(locked); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetLocked"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetMaxPasswordAge(int nDays) -{ - QList argumentList; - argumentList << QVariant::fromValue(nDays); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetMaxPasswordAge"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetPassword(const QString &password) -{ - QList argumentList; - argumentList << QVariant::fromValue(password); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetPassword"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetPasswordHint(const QString &hint) -{ - QList argumentList; - argumentList << QVariant::fromValue(hint); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetPasswordHint"), argumentList); -} -QDBusPendingReply<> UserDBusProxy::SetShell(const QString &shell) -{ - QList argumentList; - argumentList << QVariant::fromValue(shell); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetShell"), argumentList); -} - -QDBusPendingReply> UserDBusProxy::GetSecretQuestions() -{ - //获取安全问题需要使用同步调用 - return m_dBusAccountsUserInter->call(QStringLiteral("GetSecretQuestions")); -} - -QDBusPendingReply<> UserDBusProxy::SetSecretQuestions(const QMap &securityQuestions) -{ - QList argumentList; - argumentList << QVariant::fromValue(securityQuestions); - return m_dBusAccountsUserInter->asyncCallWithArgumentList(QStringLiteral("SetSecretQuestions"), argumentList); -} - -//获取属性值 -int UserDBusProxy::accountType() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("AccountType")); -} -bool UserDBusProxy::automaticLogin() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("AutomaticLogin")); -} -qulonglong UserDBusProxy::createdTime() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("CreatedTime")); -} -QStringList UserDBusProxy::desktopBackgrounds() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("DesktopBackgrounds")); -} -QString UserDBusProxy::fullName() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("FullName")); -} -QString UserDBusProxy::gid() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("Gid")); -} -QString UserDBusProxy::greeterBackground() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("GreeterBackground")); -} -QStringList UserDBusProxy::groups() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("Groups")); -} -QStringList UserDBusProxy::historyLayout() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("HistoryLayout")); -} -QString UserDBusProxy::homeDir() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("HomeDir")); -} -QString UserDBusProxy::iconFile() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("IconFile")); -} -QStringList UserDBusProxy::iconList() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("IconList")); -} -QString UserDBusProxy::layout() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("Layout")); -} -QString UserDBusProxy::locale() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("Locale")); -} -bool UserDBusProxy::locked() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("Locked")); -} -qulonglong UserDBusProxy::loginTime() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("LoginTime")); -} -int UserDBusProxy::longDateFormat() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("LongDateFormat")); -} -int UserDBusProxy::longTimeFormat() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("LongTimeFormat")); -} -int UserDBusProxy::maxPasswordAge() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("MaxPasswordAge")); -} -bool UserDBusProxy::noPasswdLogin() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("NoPasswdLogin")); -} -QString UserDBusProxy::passwordHint() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("PasswordHint")); -} -int UserDBusProxy::passwordLastChange() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("PasswordLastChange")); -} -QString UserDBusProxy::passwordStatus() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("PasswordStatus")); -} -QString UserDBusProxy::shell() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("Shell")); -} -int UserDBusProxy::shortDateFormat() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("ShortDateFormat")); -} -int UserDBusProxy::shortTimeFormat() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("ShortTimeFormat")); -} -bool UserDBusProxy::systemAccount() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("SystemAccount")); -} -QString UserDBusProxy::uid() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("Uid")); -} - -QString UserDBusProxy::uuid() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("UUID")); -} - -bool UserDBusProxy::use24HourFormat() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("Use24HourFormat")); -} -QString UserDBusProxy::userName() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("UserName")); -} -int UserDBusProxy::weekBegins() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("WeekBegins")); -} -int UserDBusProxy::weekdayFormat() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("WeekdayFormat")); -} -QString UserDBusProxy::xSession() -{ - return qvariant_cast(m_dBusAccountsUserInter->property("XSession")); -} - -void UserDBusProxy::onPropertiesChanged(const QDBusMessage &message) -{ - QVariantMap changedProps = qdbus_cast(message.arguments().at(1).value()); - for (QVariantMap::const_iterator it = changedProps.begin(); it != changedProps.end(); ++it) { - QMetaObject::invokeMethod(this, it.key().toLatin1() + "Changed", Qt::DirectConnection, QGenericArgument(it.value().typeName(), it.value().data())); - } -} diff --git a/dcc-old/src/plugin-accounts/operation/userdbusproxy.h b/dcc-old/src/plugin-accounts/operation/userdbusproxy.h deleted file mode 100644 index 129fcb44cd..0000000000 --- a/dcc-old/src/plugin-accounts/operation/userdbusproxy.h +++ /dev/null @@ -1,198 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef USERDBUSPROXY_H -#define USERDBUSPROXY_H - -#include -#include - -class QDBusInterface; -class QDBusMessage; - -class UserDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit UserDBusProxy(QString accountsUserPath, QObject *parent = nullptr); - - Q_PROPERTY(int AccountType READ accountType NOTIFY AccountTypeChanged) - int accountType(); - - Q_PROPERTY(bool AutomaticLogin READ automaticLogin NOTIFY AutomaticLoginChanged) - bool automaticLogin(); - - Q_PROPERTY(qulonglong CreatedTime READ createdTime NOTIFY CreatedTimeChanged) - qulonglong createdTime(); - - Q_PROPERTY(QStringList DesktopBackgrounds READ desktopBackgrounds NOTIFY DesktopBackgroundsChanged) - QStringList desktopBackgrounds(); - - Q_PROPERTY(QString FullName READ fullName NOTIFY FullNameChanged) - QString fullName(); - - Q_PROPERTY(QString Gid READ gid NOTIFY GidChanged) - QString gid(); - - Q_PROPERTY(QString GreeterBackground READ greeterBackground NOTIFY GreeterBackgroundChanged) - QString greeterBackground(); - - Q_PROPERTY(QStringList Groups READ groups NOTIFY GroupsChanged) - QStringList groups(); - - Q_PROPERTY(QStringList HistoryLayout READ historyLayout NOTIFY HistoryLayoutChanged) - QStringList historyLayout(); - - Q_PROPERTY(QString HomeDir READ homeDir NOTIFY HomeDirChanged) - QString homeDir(); - - Q_PROPERTY(QString IconFile READ iconFile NOTIFY IconFileChanged) - QString iconFile(); - - Q_PROPERTY(QStringList IconList READ iconList NOTIFY IconListChanged) - QStringList iconList(); - - Q_PROPERTY(QString Layout READ layout NOTIFY LayoutChanged) - QString layout(); - - Q_PROPERTY(QString Locale READ locale NOTIFY LocaleChanged) - QString locale(); - - Q_PROPERTY(bool Locked READ locked NOTIFY LockedChanged) - bool locked(); - - Q_PROPERTY(qulonglong LoginTime READ loginTime NOTIFY LoginTimeChanged) - qulonglong loginTime(); - - Q_PROPERTY(int LongDateFormat READ longDateFormat NOTIFY LongDateFormatChanged) - int longDateFormat(); - - Q_PROPERTY(int LongTimeFormat READ longTimeFormat NOTIFY LongTimeFormatChanged) - int longTimeFormat(); - - Q_PROPERTY(int MaxPasswordAge READ maxPasswordAge NOTIFY MaxPasswordAgeChanged) - int maxPasswordAge(); - - Q_PROPERTY(bool NoPasswdLogin READ noPasswdLogin NOTIFY NoPasswdLoginChanged) - bool noPasswdLogin(); - - Q_PROPERTY(QString PasswordHint READ passwordHint NOTIFY PasswordHintChanged) - QString passwordHint(); - - Q_PROPERTY(int PasswordLastChange READ passwordLastChange NOTIFY PasswordLastChangeChanged) - int passwordLastChange(); - - Q_PROPERTY(QString PasswordStatus READ passwordStatus NOTIFY PasswordStatusChanged) - QString passwordStatus(); - - Q_PROPERTY(QString Shell READ shell NOTIFY ShellChanged) - QString shell(); - - Q_PROPERTY(int ShortDateFormat READ shortDateFormat NOTIFY ShortDateFormatChanged) - int shortDateFormat(); - - Q_PROPERTY(int ShortTimeFormat READ shortTimeFormat NOTIFY ShortTimeFormatChanged) - int shortTimeFormat(); - - Q_PROPERTY(bool SystemAccount READ systemAccount NOTIFY SystemAccountChanged) - bool systemAccount(); - - Q_PROPERTY(QString Uid READ uid NOTIFY UidChanged) - QString uid(); - - Q_PROPERTY(QString UUID READ uuid NOTIFY UUIDChanged) - QString uuid(); - - Q_PROPERTY(bool Use24HourFormat READ use24HourFormat NOTIFY Use24HourFormatChanged) - bool use24HourFormat(); - - Q_PROPERTY(QString UserName READ userName NOTIFY UserNameChanged) - QString userName(); - - Q_PROPERTY(int WeekBegins READ weekBegins NOTIFY WeekBeginsChanged) - int weekBegins(); - - Q_PROPERTY(int WeekdayFormat READ weekdayFormat NOTIFY WeekdayFormatChanged) - int weekdayFormat(); - - Q_PROPERTY(QString XSession READ xSession NOTIFY XSessionChanged) - QString xSession(); - - inline QString path() { return m_accountsUserPath; } - inline const QDBusInterface* interface() { return m_dBusAccountsUserInter; } - - - -signals: - // begin property changed signals - void AccountTypeChanged(int value) const; - void AutomaticLoginChanged(bool value) const; - void CreatedTimeChanged(qulonglong value) const; - void DesktopBackgroundsChanged(const QStringList & value) const; - void FullNameChanged(const QString & value) const; - void GidChanged(const QString & value) const; - void GreeterBackgroundChanged(const QString & value) const; - void GroupsChanged(const QStringList & value) const; - void HistoryLayoutChanged(const QStringList & value) const; - void HomeDirChanged(const QString & value) const; - void IconFileChanged(const QString & value) const; - void IconListChanged(const QStringList & value) const; - void LayoutChanged(const QString & value) const; - void LocaleChanged(const QString & value) const; - void LockedChanged(bool value) const; - void LoginTimeChanged(qulonglong value) const; - void LongDateFormatChanged(int value) const; - void LongTimeFormatChanged(int value) const; - void MaxPasswordAgeChanged(int value) const; - void NoPasswdLoginChanged(bool value) const; - void PasswordHintChanged(const QString & value) const; - void PasswordLastChangeChanged(int value) const; - void PasswordStatusChanged(const QString & value) const; - void ShellChanged(const QString & value) const; - void ShortDateFormatChanged(int value) const; - void ShortTimeFormatChanged(int value) const; - void SystemAccountChanged(bool value) const; - void UidChanged(const QString & value) const; - void UUIDChanged(const QString & value) const; - void Use24HourFormatChanged(bool value) const; - void UserNameChanged(const QString & value) const; - void WeekBeginsChanged(int value) const; - void WeekdayFormatChanged(int value) const; - void XSessionChanged(const QString & value) const; - -public slots: - QDBusPendingReply<> AddGroup(const QString &group); - QDBusPendingReply<> DeleteGroup(const QString &group); - QDBusPendingReply<> DeleteIconFile(const QString &iconFile); - QDBusPendingReply<> EnableNoPasswdLogin(bool enabled); - QDBusPendingReply IsPasswordExpired(); - QDBusPendingReply<> SetAutomaticLogin(bool enabled); - QDBusPendingReply<> SetDesktopBackgrounds(const QStringList &backgrounds); - QDBusPendingReply<> SetFullName(const QString &name); - QDBusPendingReply<> SetGreeterBackground(const QString &background); - QDBusPendingReply<> SetGroups(const QStringList &groups); - QDBusPendingReply<> SetHistoryLayout(const QStringList &layouts); - QDBusPendingReply<> SetHomeDir(const QString &home); - QDBusPendingReply<> SetIconFile(const QString &iconFile); - QDBusPendingReply<> SetLayout(const QString &layout); - QDBusPendingReply<> SetLocale(const QString &locale); - QDBusPendingReply<> SetLocked(bool locked); - QDBusPendingReply<> SetMaxPasswordAge(int nDays); - QDBusPendingReply<> SetPassword(const QString &password); - QDBusPendingReply<> SetPasswordHint(const QString &hint); - QDBusPendingReply<> SetShell(const QString &shell); - QDBusPendingReply> GetSecretQuestions(); - QDBusPendingReply<> SetSecretQuestions(const QMap &securityQuestions); - -private slots: - void onPropertiesChanged(const QDBusMessage &message); -private: - void init(); - -private: - QDBusInterface *m_dBusAccountsUserInter; - QString m_accountsUserPath; -}; - -#endif // USERDBUSPROXY_H diff --git a/dcc-old/src/plugin-accounts/operation/usermodel.cpp b/dcc-old/src/plugin-accounts/operation/usermodel.cpp deleted file mode 100644 index eb12c645b3..0000000000 --- a/dcc-old/src/plugin-accounts/operation/usermodel.cpp +++ /dev/null @@ -1,162 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "usermodel.h" - -#include - -using namespace DCC_NAMESPACE; - -UserModel::UserModel(QObject *parent) - : QObject(parent) - , m_autoLoginVisable(true) - , m_noPassWordLoginVisable(true) - , m_bCreateUserValid(false) - , m_isJoinADDomain(false) - , m_isADUserLogind(false) - , m_isSecurityHighLever(false) -{ - -} - -UserModel::~UserModel() -{ - qDeleteAll(m_userList.values()); -} - -User * UserModel::getUser(const QString &id) -{ - return m_userList.value(id, nullptr); -} - -QList UserModel::userList() const -{ - for(auto user : m_userList) { - if (m_onlineUsers.contains(user->name())) - user->setOnline(true); - else - user->setOnline(false); - } - return m_userList.values(); -} - -void UserModel::addUser(const QString &id, User *user) -{ - Q_ASSERT(!m_userList.contains(id)); - - m_userList[id] = user; - - Q_EMIT userAdded(user); -} - -void UserModel::removeUser(const QString &id) -{ - Q_ASSERT(m_userList.contains(id)); - - User *user = m_userList[id]; - m_userList.remove(id); - - Q_EMIT userRemoved(user); -} - -bool UserModel::contains(const QString &id) -{ - return m_userList.contains(id); -} - -void UserModel::setAutoLoginVisable(const bool visable) -{ - if (m_autoLoginVisable == visable) - return; - - m_autoLoginVisable = visable; - Q_EMIT autoLoginVisableChanged(m_autoLoginVisable); -} - -void UserModel::setCreateUserValid(bool bValid) -{ - if (m_bCreateUserValid == bValid) - return; - - m_bCreateUserValid = bValid; -} - -void UserModel::setNoPassWordLoginVisable(const bool visable) -{ - if (m_noPassWordLoginVisable == visable) - return; - - m_noPassWordLoginVisable = visable; - Q_EMIT noPassWordLoginVisableChanged(m_noPassWordLoginVisable); -} - -QStringList UserModel::getAllGroups() -{ - return m_allGroups; -} - -void UserModel::setPresetGroups(const QStringList &presetGroups) -{ - m_presetGroups = presetGroups; -} - -void UserModel::setAllGroups(const QStringList &groups) -{ - if (m_allGroups == groups) { - return; - } - m_allGroups = groups; - Q_EMIT allGroupsChange(groups); -} - -QStringList UserModel::getPresetGroups() -{ - return m_presetGroups; -} - -QString UserModel::getCurrentUserName() const -{ - return m_currentUserName; -} - -void UserModel::setCurrentUserName(const QString ¤tUserName) -{ - m_currentUserName = currentUserName; -} - -bool UserModel::getIsSecurityHighLever() const -{ - return m_isSecurityHighLever; -} - -void UserModel::setIsSecurityHighLever(bool isSecurityHighLever) -{ - m_isSecurityHighLever = isSecurityHighLever; -} - -void UserModel::SetOnlineUsers(QStringList onlineUsers) -{ - m_onlineUsers = onlineUsers; -} - -void UserModel::setIsJoinADDomain(bool isJoinADDomain) -{ - if (m_isJoinADDomain == isJoinADDomain) - return; - - m_isJoinADDomain = isJoinADDomain; - - Q_EMIT isJoinADDomainChanged(isJoinADDomain); -} - -void UserModel::setADUserLogind(bool isADUserLogind) -{ - if (m_isADUserLogind == isADUserLogind) { - return; - } - - m_isADUserLogind = isADUserLogind; - - Q_EMIT isADUserLoginChanged(isADUserLogind); -} diff --git a/dcc-old/src/plugin-accounts/operation/usermodel.h b/dcc-old/src/plugin-accounts/operation/usermodel.h deleted file mode 100644 index 17bfe813b2..0000000000 --- a/dcc-old/src/plugin-accounts/operation/usermodel.h +++ /dev/null @@ -1,87 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef USERMODEL_H -#define USERMODEL_H - -#include "interface/namespace.h" - -#include -#include - -#include "user.h" - -namespace DCC_NAMESPACE { - -class UserModel : public QObject -{ - Q_OBJECT -public: - explicit UserModel(QObject *parent = nullptr); - ~UserModel(); - - User *getUser(const QString &id); - QList userList() const; - void addUser(const QString &id, User *user); - void removeUser(const QString &id); - bool contains(const QString &id); - - inline bool isAutoLoginVisable() const { return m_autoLoginVisable; } - void setAutoLoginVisable(const bool visable); - - inline bool isCreateUserValid() const { return m_bCreateUserValid; } - void setCreateUserValid(bool bValid); - - inline bool isNoPassWordLoginVisable() const { return m_noPassWordLoginVisable; } - void setNoPassWordLoginVisable(const bool visable); - bool isJoinADDomain() const { return m_isJoinADDomain; } - void setIsJoinADDomain(bool isJoinADDomain); - - bool isADUserLogind() const { return m_isADUserLogind; } - void setADUserLogind(bool isADUserLogind); - void setAllGroups(const QStringList &groups); - QStringList getAllGroups(); - void setPresetGroups(const QStringList &presetGroups); - QStringList getPresetGroups(); - QString getCurrentUserName() const; - void setCurrentUserName(const QString ¤tUserName); - - bool getIsSecurityHighLever() const; - void setIsSecurityHighLever(bool isSecurityHighLever); - - inline QStringList getOnlineUsers() { return m_onlineUsers; } - void SetOnlineUsers(QStringList onlineUsers); - - enum ActionOption { - ClickCancel = 0, - CreateUserSuccess, - ModifyPwdSuccess - }; - -Q_SIGNALS: - void userAdded(User *user); - void userRemoved(User *user); - void isJoinADDomainChanged(bool isjoin); - void isADUserLoginChanged(bool isLogind); - void allGroupsChange(const QStringList &groups); - void deleteUserSuccess(); - void autoLoginVisableChanged(bool autoLogin); - void noPassWordLoginVisableChanged(bool noPassword); - void isCancelChanged(); - void adminCntChange(const int adminCnt); -private: - bool m_autoLoginVisable; - bool m_noPassWordLoginVisable; - bool m_bCreateUserValid; - QMap m_userList; - QStringList m_allGroups; - QStringList m_presetGroups; - QString m_currentUserName; - bool m_isJoinADDomain; - bool m_isADUserLogind; - bool m_isSecurityHighLever; - QStringList m_onlineUsers; -}; -} // namespace DCC_NAMESPACE - -#endif // USERMODEL_H diff --git a/dcc-old/src/plugin-accounts/window/AccountsPlugin.json b/dcc-old/src/plugin-accounts/window/AccountsPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-accounts/window/AccountsPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-accounts/window/accountslistview.cpp b/dcc-old/src/plugin-accounts/window/accountslistview.cpp deleted file mode 100644 index f008ce9efb..0000000000 --- a/dcc-old/src/plugin-accounts/window/accountslistview.cpp +++ /dev/null @@ -1,502 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "accountslistview.h" - -#include -#include -#include -#include -#include - -#include - -class AccountsListViewPrivate -{ -public: - explicit AccountsListViewPrivate(AccountsListView *parent) - : q_ptr(parent) - , m_spacing(20) - , m_gridSize(64, 64) - , m_itemSize(m_gridSize) - , m_maxColumnCount(1) - , m_maxRowCount(1) - , m_xOffset(0) - , m_yOffset(0) - , m_alignment(Qt::AlignHCenter) - , m_firstHeightDiff(0) - { - setGridSize(m_gridSize); - } - - void setSpacing(int space) - { - m_spacing = space; - } - int spacing() const - { - return m_spacing; - } - - void setGridSize(const QSize &size) - { - m_gridSize = size; - m_firstHeightDiff = 0; - } - QSize gridSize() const - { - return m_gridSize; - } - - void setAlignment(Qt::Alignment alignment) - { - m_alignment = alignment; - } - Qt::Alignment alignment() const - { - return m_alignment; - } - - void updateGeometries() - { - Q_Q(AccountsListView); - m_maxColumnCount = 1; - - int count = q->model() ? q->model()->rowCount() : 0; - m_maxRowCount = (count <= m_maxColumnCount) ? 1 : count; - - m_itemSize = m_gridSize; - int itemWidth = m_maxRowCount * (m_itemSize.width() + m_spacing) - m_spacing; - int itemHeight = m_maxColumnCount * (m_itemSize.height() + m_spacing) - m_spacing; - - if (itemWidth > q->viewport()->width()) { - m_xOffset = 0; - } else if (m_alignment & Qt::AlignRight) { - m_xOffset = q->viewport()->width() - itemWidth; - } else if (m_alignment & Qt::AlignHCenter) { - m_xOffset = (q->viewport()->width() - itemWidth) / 2; - } else { - m_xOffset = 0; - } - if (itemHeight > q->viewport()->height()) { - m_yOffset = 0; - } else if (m_alignment & Qt::AlignBottom) { - m_yOffset = q->viewport()->height() - itemHeight; - } else if (m_alignment & Qt::AlignVCenter) { - m_yOffset = (q->viewport()->height() - itemHeight) / 2; - } else { - m_yOffset = 0; - } - } - // item在窗口中位置(无滚动) - QRect rectForIndex(const QModelIndex &index) const - { - Q_Q(const AccountsListView); - QRect rect(0, 0, m_itemSize.width(), m_itemSize.height()); - // if (index.row() == 0 && m_viewMode == AccountsListView::IconMode) { - // rect.setHeight(m_itemSize.height() * 2 + m_spacing); - // } else if (index.row() == 0 && m_viewMode == AccountsListView::ListMode) { - // rect.setHeight(m_itemSize.height() + m_firstHeightDiff); - // } else { - int indexRow = index.row(); - // if (m_viewMode == AccountsListView::IconMode && indexRow >= m_maxColumnCount) - // indexRow++; - // int row = indexRow / m_maxColumnCount; - // int col = indexRow % m_maxColumnCount; - rect.translate((m_itemSize.width() + m_spacing) * indexRow, (m_spacing)); - // if (m_viewMode == AccountsListView::ListMode && indexRow >= 1) - // rect.translate(0, m_firstHeightDiff); - // } - return rect.translated(q->contentsMargins().left() + m_xOffset, q->contentsMargins().top() + m_yOffset); - } - // item在窗口中位置(无滚动) - QModelIndex indexAt(const QPoint &p) const - { - if ((m_itemSize.height() + m_spacing) <= 0 || (m_itemSize.width() + m_spacing) <= 0) - return QModelIndex(); - Q_Q(const AccountsListView); - QRect rect(p.x() - m_xOffset, p.y() - m_yOffset, 1, 1); - // int row = (rect.y() - m_firstHeightDiff) / (m_itemSize.height() + m_spacing); - int col = (rect.x()) / (m_itemSize.width() + m_spacing); - - QModelIndex index = q->model()->index(col, 0); - if (index.isValid() && rectForIndex(index).contains(p)) - return index; - return QModelIndex(); - } - QVector intersectingSet(const QRect &area) const - { - Q_Q(const AccountsListView); - QVector indexs; - int rows = q->model()->rowCount(); - for (int row = 0; row < rows; row++) { - QModelIndex index = q->model()->index(row, 0); - QRect rectIndex = rectForIndex(index); - if (!rectIndex.intersected(area).isEmpty()) { - indexs.append(index); - } - } - return indexs; - } - inline int marginsWidth() const - { - Q_Q(const AccountsListView); - return q->contentsMargins().left() + q->contentsMargins().right(); - } - inline int marginsHidget() const - { - Q_Q(const AccountsListView); - return q->contentsMargins().top() + q->contentsMargins().bottom(); - } - -private: - AccountsListView *const q_ptr; - Q_DECLARE_PUBLIC(AccountsListView) - int m_spacing; - QSize m_gridSize; - - QSize m_itemSize; - int m_maxColumnCount; // 一行可容纳的最大列数 - int m_maxRowCount; // 换算显示所有item所需行数 - int m_xOffset; // x轴偏移 - int m_yOffset; // y轴偏移 - QModelIndex m_hover; // hover项 - Qt::Alignment m_alignment; // 对齐方式 - int m_firstHeightDiff; // 第一行与其他行高差值 -}; - -///////////////////////////////////////// - -AccountsListView::AccountsListView(QWidget *parent) - : QAbstractItemView(parent) - , DCC_INIT_PRIVATE(AccountsListView) -{ - setSelectionMode(SingleSelection); - setAttribute(Qt::WA_MacShowFocusRect); - scheduleDelayedItemsLayout(); - setMouseTracking(true); -} - -AccountsListView::~AccountsListView() -{ -} - -void AccountsListView::setModel(QAbstractItemModel *model) -{ - setVisible(model->rowCount() >= 2); - QAbstractItemView::setModel(model); -} - -///////////////////////////////////////////////////////////////////////////// -// item在窗口中位置(加滚动偏移) -QRect AccountsListView::visualRect(const QModelIndex &index) const -{ - Q_D(const AccountsListView); - return d->rectForIndex(index).translated(-horizontalOffset(), -verticalOffset()); -} - -void AccountsListView::scrollTo(const QModelIndex &index, ScrollHint hint) -{ - if (!index.isValid()) - return; - - const QRect rect = visualRect(index); - if (hint == EnsureVisible && viewport()->rect().contains(rect)) { - viewport()->update(rect); - return; - } - - const QRect area = viewport()->rect(); - const bool above = (hint == EnsureVisible && rect.left() < area.left()); - const bool below = (hint == EnsureVisible && rect.right() > area.right()); - - Q_D(const AccountsListView); - int horizontalValue = horizontalScrollBar()->value(); - QRect adjusted = rect.adjusted(-d->spacing(), -d->spacing(), d->spacing(), d->spacing()); - if (hint == PositionAtTop || above) - horizontalValue += adjusted.left(); - else if (hint == PositionAtBottom || below) - horizontalValue += qMin(adjusted.left(), adjusted.right() - area.width() + 1); - else if (hint == PositionAtCenter) - horizontalValue += adjusted.left() - ((area.width() - adjusted.width()) / 2); - horizontalScrollBar()->setValue(horizontalValue); -} - -QModelIndex AccountsListView::indexAt(const QPoint &p) const -{ - Q_D(const AccountsListView); - return d->indexAt(p + QPoint(horizontalOffset(), verticalOffset())); -} - -QModelIndex AccountsListView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers /*modifiers*/) -{ - Q_D(const AccountsListView); - QModelIndex current = currentIndex(); - int currentRow = current.row(); - int maxRow = model()->rowCount(); - - auto moveup = [](int currentRow, int maxColumnCount) -> int { - if (currentRow == maxColumnCount * 2 - 1) { - currentRow = 0; - } else if (currentRow < maxColumnCount) { - // 第一行不处理 - } else if (currentRow < maxColumnCount * 2) { - currentRow -= (maxColumnCount - 1); - } else { - currentRow -= maxColumnCount; - } - return currentRow; - }; - auto movedown = [](int currentRow, int maxColumnCount) -> int { - if (currentRow == 0) { - currentRow += (maxColumnCount * 2 - 1); - } else if (currentRow < maxColumnCount) - currentRow += (maxColumnCount - 1); - else - currentRow += maxColumnCount; - return currentRow; - }; - switch (cursorAction) { - case MoveLeft: - currentRow--; - break; - case MoveRight: - currentRow++; - break; - case MovePageUp: { - int pageItem = (viewport()->height() - d->marginsHidget() + d->m_spacing) / (d->m_itemSize.height() + d->m_spacing); - for (int i = 0; i < pageItem; i++) { - currentRow = moveup(currentRow, d->m_maxColumnCount); - } - } break; - case MoveUp: - currentRow = moveup(currentRow, d->m_maxColumnCount); - break; - case MovePageDown: { - int pageItem = (viewport()->height() - d->marginsHidget() + d->m_spacing) / (d->m_itemSize.height() + d->m_spacing); - for (int i = 0; i < pageItem; i++) { - int row = movedown(currentRow, d->m_maxColumnCount); - if (row >= maxRow) - break; - currentRow = row; - } - } break; - case MoveDown: - currentRow = movedown(currentRow, d->m_maxColumnCount); - break; - case MoveHome: - currentRow = 0; - break; - case MoveEnd: - currentRow = maxRow - 1; - break; - default: - return QModelIndex(); - } - QModelIndex selectIndex = model()->index(currentRow, 0); - activated(selectIndex); - return selectIndex; -} - -int AccountsListView::horizontalOffset() const -{ - return horizontalScrollBar()->value(); -} - -int AccountsListView::verticalOffset() const -{ - return verticalScrollBar()->value(); -} - -void AccountsListView::updateGeometries() -{ - Q_D(AccountsListView); - QAbstractItemView::updateGeometries(); - d->updateGeometries(); - - // 更新滚动条范围 - if (geometry().isEmpty() || !model() || model()->rowCount() <= 0 || model()->columnCount() <= 0) { - horizontalScrollBar()->setRange(0, 0); - verticalScrollBar()->setRange(0, 0); - } else { - QSize step = d->m_itemSize; - - horizontalScrollBar()->setSingleStep(step.width() + d->spacing()); - horizontalScrollBar()->setPageStep(viewport()->width()); - - int width = d->m_maxRowCount * (d->m_itemSize.width() + d->m_spacing) - d->m_spacing; - if (width < viewport()->width()) { - horizontalScrollBar()->setRange(0, 0); - } else { - horizontalScrollBar()->setRange(0, width - viewport()->width()); - } - } -} - -void AccountsListView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles) -{ - QAbstractItemView::dataChanged(topLeft, bottomRight, roles); - scheduleDelayedItemsLayout(); -} - -void AccountsListView::rowsInserted(const QModelIndex &parent, int start, int end) -{ - scheduleDelayedItemsLayout(); - QAbstractItemView::rowsInserted(parent, start, end); - if (model()->rowCount() >= 2) - setVisible(true); -} - -void AccountsListView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) -{ - QAbstractItemView::rowsAboutToBeRemoved(parent, start, end); - scheduleDelayedItemsLayout(); - if (model()->rowCount() <= 2) - setVisible(false); -} - -bool AccountsListView::isIndexHidden(const QModelIndex & /*index*/) const -{ - return false; -} - -QRegion AccountsListView::visualRegionForSelection(const QItemSelection &selection) const -{ - if (selection.isEmpty()) - return QRegion(); - Q_D(const AccountsListView); - QRect rect = d->rectForIndex(selection.indexes().first()); - return QRegion(rect); -} - -void AccountsListView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) -{ - int rows = model()->rowCount(); - QModelIndex selectedIndex; - for (int row = 0; row < rows; row++) { - QModelIndex index = model()->index(row, 0); - QRect rectIndex = visualRect(index); - if (!rectIndex.intersected(rect).isEmpty()) { - selectedIndex = index; - break; - } - } - selectionModel()->select(selectedIndex, command); -} - -void AccountsListView::paintEvent(QPaintEvent *e) -{ - Q_D(const AccountsListView); - QStyleOptionViewItem option = viewOptions(); - QPainter painter(viewport()); - - const QVector toBeRendered = d->intersectingSet(e->rect().translated(horizontalOffset(), verticalOffset())); - - const QModelIndex current = currentIndex(); - const QModelIndex hover = d->m_hover; - const QAbstractItemModel *itemModel = model(); - const QItemSelectionModel *selections = selectionModel(); - const bool focus = (hasFocus() || viewport()->hasFocus()) && current.isValid(); - const bool alternate = alternatingRowColors(); - const QStyle::State state = option.state; - const QAbstractItemView::State viewState = this->state(); - const bool enabled = (state & QStyle::State_Enabled) != 0; - option.decorationAlignment = Qt::AlignCenter; - - bool alternateBase = false; - int previousRow = -2; - - painter.setRenderHint(QPainter::Antialiasing); - painter.fillRect(e->rect(), palette().color(QPalette::Window)); - - QVector::const_iterator end = toBeRendered.constEnd(); - for (QVector::const_iterator it = toBeRendered.constBegin(); it != end; ++it) { - Q_ASSERT((*it).isValid()); - option.rect = visualRect(*it); - - option.state = state; - if (selections && selections->isSelected(*it)) - option.state |= QStyle::State_Selected; - if (enabled) { - QPalette::ColorGroup cg; - if ((itemModel->flags(*it) & Qt::ItemIsEnabled) == 0) { - option.state &= ~QStyle::State_Enabled; - cg = QPalette::Disabled; - } else { - cg = QPalette::Normal; - } - option.palette.setCurrentColorGroup(cg); - } - if (focus && current == *it) { - option.state |= QStyle::State_HasFocus; - if (viewState == EditingState) - option.state |= QStyle::State_Editing; - } - option.state.setFlag(QStyle::State_MouseOver, *it == hover); - - if (alternate) { // 交替色处理,未实现 - int row = (*it).row(); - if (row != previousRow + 1) { - // adjust alternateBase according to rows in the "gap" - alternateBase = (row & 1) != 0; - } - option.features.setFlag(QStyleOptionViewItem::Alternate, alternateBase); - - // draw background of the item (only alternate row). rest of the background - // is provided by the delegate - QStyle::State oldState = option.state; - option.state &= ~QStyle::State_Selected; - style()->drawPrimitive(QStyle::PE_PanelItemViewRow, &option, &painter, this); - option.state = oldState; - - alternateBase = !alternateBase; - previousRow = row; - } - - itemDelegate(*it)->paint(&painter, option, *it); - } - QScrollBar *hbar = horizontalScrollBar(); - int gradualW = d->m_itemSize.width() * 2; - QRect lRect(0, 0, gradualW, height()); - QRect rRect(width() - gradualW, 0, gradualW + 1, height()); - if (!e->rect().intersected(lRect).isEmpty() && hbar->minimum() != hbar->value()) { //左边 - QLinearGradient linearGradient(lRect.left(), 0, lRect.right(), 0); - linearGradient.setColorAt(0, option.palette.window().color()); - linearGradient.setColorAt(1, QColor(255, 255, 255, 0)); - painter.setBrush(QBrush(linearGradient)); - painter.setPen(Qt::NoPen); - painter.drawRect(lRect); - } - if (!e->rect().intersected(rRect).isEmpty() && hbar->maximum() != hbar->value()) { // 右边 - QLinearGradient linearGradient(rRect.left(), 0, rRect.right(), 0); - linearGradient.setColorAt(0, QColor(255, 255, 255, 0)); - linearGradient.setColorAt(1, option.palette.window().color()); - painter.setBrush(QBrush(linearGradient)); - painter.setPen(Qt::NoPen); - painter.drawRect(rRect); - } -} - -bool AccountsListView::viewportEvent(QEvent *event) -{ - Q_D(AccountsListView); - switch (event->type()) { - case QEvent::HoverMove: - case QEvent::HoverEnter: - d->m_hover = indexAt(static_cast(event)->pos()); - break; - case QEvent::HoverLeave: - case QEvent::Leave: - d->m_hover = QModelIndex(); - break; - default: - break; - } - return QAbstractItemView::viewportEvent(event); -} - -void AccountsListView::wheelEvent(QWheelEvent *e) -{ - QApplication::sendEvent(horizontalScrollBar(), e); - e->setAccepted(true); -} diff --git a/dcc-old/src/plugin-accounts/window/accountslistview.h b/dcc-old/src/plugin-accounts/window/accountslistview.h deleted file mode 100644 index 42a6e382d7..0000000000 --- a/dcc-old/src/plugin-accounts/window/accountslistview.h +++ /dev/null @@ -1,46 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ACCOUNTSLISTVIEW_H -#define ACCOUNTSLISTVIEW_H -#include "interface/namespace.h" - -#include -class AccountsListViewPrivate; -class AccountsListView : public QAbstractItemView -{ - Q_OBJECT -public: - explicit AccountsListView(QWidget *parent = nullptr); - virtual ~AccountsListView() override; - - - void setModel(QAbstractItemModel *model) override; - QRect visualRect(const QModelIndex &index) const override; - void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) override; - QModelIndex indexAt(const QPoint &p) const override; - -protected: - QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override; - int horizontalOffset() const override; - int verticalOffset() const override; - - bool isIndexHidden(const QModelIndex &index) const override; - QRegion visualRegionForSelection(const QItemSelection &selection) const override; - void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) override; - - void updateGeometries() override; - - void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()) override; - void rowsInserted(const QModelIndex &parent, int start, int end) override; - void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override; - -protected: - void paintEvent(QPaintEvent *e) override; - bool viewportEvent(QEvent *event) override; - void wheelEvent(QWheelEvent *e) override; - - DCC_DECLARE_PRIVATE(AccountsListView) -}; - -#endif // ACCOUNTSLISTVIEW_H diff --git a/dcc-old/src/plugin-accounts/window/accountsmodel.cpp b/dcc-old/src/plugin-accounts/window/accountsmodel.cpp deleted file mode 100644 index eaa16fe900..0000000000 --- a/dcc-old/src/plugin-accounts/window/accountsmodel.cpp +++ /dev/null @@ -1,244 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "accountsmodel.h" -#include "operation/user.h" -#include "operation/usermodel.h" - -#include -#include - -#include -#include -#include -#include -#include - -static constexpr int OnlineLeftReserve = 10; -static constexpr int OnineDisplayWidthReserve = OnlineLeftReserve * 2; -static constexpr int DisplayHeight = 15; -static constexpr QSize OnlineSize = QSize(OnlineLeftReserve, OnlineLeftReserve); - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -AccountsModel::AccountsModel(QObject *parent) - : QAbstractItemModel(parent) -{ - -} - -void AccountsModel::setUserModel(UserModel *userModel) -{ - m_userModel = userModel; - connect(userModel,&UserModel::userAdded,this,&AccountsModel::onUserAdded); - connect(userModel,&UserModel::userRemoved,this,&AccountsModel::onUserRemoved); - for (auto &&user:userModel->userList()) - onUserAdded(user); -} - -User *AccountsModel::getUser(const QModelIndex &index) const -{ - int row = index.row(); - if (row < 0 || row >= m_data.size()) - return nullptr; - return m_data.at(row); -} - -QModelIndex AccountsModel::index(User *user) const -{ - return index(m_data.indexOf(user), 0); -} - -QModelIndex AccountsModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent); - if (row < 0 || row >= m_data.size()) - return QModelIndex(); - return createIndex(row, column, m_data.at(row)); -} - -QModelIndex AccountsModel::parent(const QModelIndex &index) const -{ - Q_UNUSED(index); - return QModelIndex(); -} - -int AccountsModel::rowCount(const QModelIndex &parent) const -{ - if (!parent.isValid()) - return m_data.size(); - - return 0; -} - -int AccountsModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return 1; -} - -QVariant AccountsModel::data(const QModelIndex &index, int role) const -{ - if (m_data.isEmpty() || !index.isValid()) - return QVariant(); - - int row = index.row(); - User *user = m_data.at(row); - switch (role) { - case Qt::DisplayRole: - return user->fullname().isEmpty()?user->name():user->fullname(); - case Qt::DecorationRole: - return QIcon(user->currentAvatar().mid(7)); - case Qt::CheckStateRole: - return user->online()?Qt::Checked:Qt::Unchecked; - default: - break; - } - return QVariant(); -} - -void AccountsModel::onUserAdded(User *user) -{ - int row = user->isCurrentUser() ? 0 : m_data.size(); - connect(user,&User::nameChanged,this,&AccountsModel::onDataChanged); - connect(user,&User::fullnameChanged,this,&AccountsModel::onDataChanged); - connect(user,&User::currentAvatarChanged,this,&AccountsModel::onDataChanged); - connect(user,&User::onlineChanged,this,&AccountsModel::onDataChanged); - - beginInsertRows(QModelIndex(), row, row); - m_data.insert(row, user); - endInsertRows(); -} - -void AccountsModel::onUserRemoved(User *user) -{ - int row = m_data.indexOf(user); - if (row >= 0 && row < m_data.size()) { - beginRemoveRows(QModelIndex(), row, row); - m_data.removeAt(row); - endRemoveRows(); - } -} - -void AccountsModel::onDataChanged() -{ - User *user = qobject_cast(sender()); - if (user) { - QModelIndex i = index(m_data.indexOf(user),0); - emit dataChanged(i,i); - } -} - -UserDelegate::UserDelegate(QAbstractItemView *parent) - : DStyledItemDelegate(parent) -{ -} - -void UserDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - painter->save(); - - QStyleOptionViewItem opt(option); - initStyleOption(&opt, index); - // 选择高亮背景 - if (opt.state & QStyle::State_Selected) { - QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) - ? QPalette::Normal - : QPalette::Disabled; - opt.backgroundBrush = option.palette.color(cg, QPalette::Highlight); - } - QStyle *style = option.widget ? option.widget->style() : QApplication::style(); - QRect decorationRect; - decorationRect = QRect(opt.rect.topLeft() + QPoint((opt.rect.width() - opt.decorationSize.width()) / 2, 3), opt.decorationSize); - - opt.displayAlignment = Qt::AlignLeft|Qt::AlignVCenter; - - // draw the item - drawBackground(style, painter, opt, decorationRect); - // 图标的绘制用也可能会使用这些颜色 - QPalette::ColorGroup cg = (opt.state & QStyle::State_Enabled) ? QPalette::Normal : QPalette::Disabled; - painter->setPen(opt.palette.color(cg, QPalette::Text));//(opt.state & QStyle::State_Selected) ? QPalette::HighlightedText : QPalette::Text)); - drawDecoration(painter, opt, decorationRect); - - opt.displayAlignment = Qt::AlignCenter; - - bool hasChecked = index.data(Qt::CheckStateRole) == Qt::Checked; - - QRect displayRect = QRect(opt.rect.topLeft() + QPoint(0, opt.decorationSize.height() + 4), QSize(opt.rect.width(), DisplayHeight)); - - if (hasChecked) { - displayRect = QRect(opt.rect.topLeft() + QPoint(OnlineLeftReserve, opt.decorationSize.height() + 4), QSize(opt.rect.width() - OnineDisplayWidthReserve, DisplayHeight)); - QRect onlineRect = QRect(opt.rect.topLeft() + QPoint(0, opt.decorationSize.height() + 8), OnlineSize); - drawOnlineIcon(painter, opt, onlineRect); - } - - drawDisplay(style, painter, opt, displayRect); - painter->restore(); -} - -QSize UserDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(option) - Q_UNUSED(index) - - return QSize(60,60); -} - -void UserDelegate::drawBackground(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - Q_UNUSED(style) - QRect r = rect; - r.adjust(-2,-2,2,2); - painter->save(); - painter->setRenderHint(QPainter::Antialiasing); - painter->setPen(option.palette.color(QPalette::Normal,(option.state & QStyle::State_Selected)? QPalette::Highlight:QPalette::Window)); - painter->drawRoundedRect(r,8,8); - painter->restore(); -} - -void UserDelegate::drawDisplay(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - DStyle::viewItemDrawText(style, painter, &option, rect); -} - - -void UserDelegate::drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - if (option.features & QStyleOptionViewItem::HasDecoration) { - QIcon::Mode mode = QIcon::Normal; - if (!(option.state & QStyle::State_Enabled)) - mode = QIcon::Disabled; - else if (option.state & QStyle::State_Selected) - mode = QIcon::Selected; - QIcon::State state = (option.state & QStyle::State_Open) ? QIcon::On : QIcon::Off; - painter->save(); - QPainterPath painterPath; - painterPath.addRoundedRect(rect,8,8); - painter->setRenderHint(QPainter::Antialiasing); - painter->setClipPath(painterPath); - option.icon.paint(painter, rect, option.decorationAlignment, mode, state); - - painter->restore(); - } -} - - -void UserDelegate::drawOnlineIcon(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - Q_UNUSED(option) - painter->save(); - painter->setRenderHints(QPainter::Antialiasing); - - painter->setBrush(QBrush(QColor(103, 239, 74))); - painter->setPen(Qt::NoPen); - painter->drawEllipse(rect.adjusted(1, 1, -1, -1)); - - QPen pen; - pen.setColor(Qt::white); - pen.setWidth(1); - painter->setPen(pen); - painter->setBrush(Qt::NoBrush); - painter->drawEllipse(rect.adjusted(1, 1, -1, -1)); - painter->restore(); -} diff --git a/dcc-old/src/plugin-accounts/window/accountsmodel.h b/dcc-old/src/plugin-accounts/window/accountsmodel.h deleted file mode 100644 index 5578e59a70..0000000000 --- a/dcc-old/src/plugin-accounts/window/accountsmodel.h +++ /dev/null @@ -1,70 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ACCOUNTSMODEL_H -#define ACCOUNTSMODEL_H -#include "interface/namespace.h" - -#include - -#include -#include - -namespace DCC_NAMESPACE { -class User; -class UserModel; -} - - -class AccountsModel : public QAbstractItemModel -{ - Q_OBJECT -public: - explicit AccountsModel(QObject *parent = nullptr); - ~AccountsModel() {} - - void setUserModel(DCC_NAMESPACE::UserModel *userModel); - DCC_NAMESPACE::User *getUser(const QModelIndex &index) const; - QModelIndex index(DCC_NAMESPACE::User *user) const; - // Basic functionality: - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - QModelIndex parent(const QModelIndex &index) const override; - - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; - - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - -private Q_SLOTS: - void onUserAdded(DCC_NAMESPACE::User *user); - void onUserRemoved(DCC_NAMESPACE::User *user); - void onDataChanged(); - -private: - QList m_data; - DCC_NAMESPACE::UserModel *m_userModel; -}; - - -class UserDelegate : public Dtk::Widget::DStyledItemDelegate -{ -public: - explicit UserDelegate(QAbstractItemView *parent = nullptr); - -protected: - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override; - - virtual void drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - void drawBackground(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - void drawDisplay(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; -// void drawEllipse(QPainter *painter, const QStyleOptionViewItem &option, const int message) const; -// void drawFocus(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - - void drawOnlineIcon(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - -private: -// QGraphicsDropShadowEffect *m_shadowEffect; -}; - -#endif // ACCOUNTSMODEL_H diff --git a/dcc-old/src/plugin-accounts/window/accountsmodule.cpp b/dcc-old/src/plugin-accounts/window/accountsmodule.cpp deleted file mode 100644 index f5a8020257..0000000000 --- a/dcc-old/src/plugin-accounts/window/accountsmodule.cpp +++ /dev/null @@ -1,884 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "accountslistview.h" -#include "accountsmodule.h" -#include "avatarwidget.h" -#include "createaccountpage.h" -#include "dwidgetutil.h" -#include "groupitem.h" -#include "modifypasswdpage.h" -#include "removeuserdialog.h" - -#include "operation/accountsworker.h" -#include "operation/user.h" -#include "operation/usermodel.h" -#include "securityquestionspage.h" - -#include "window/accountsmodel.h" - -#include "widgets/listviewmodule.h" -#include "widgets/moduleobjectitem.h" -#include "widgets/horizontalmodule.h" -#include "widgets/itemmodule.h" -#include "widgets/dcclistview.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -using namespace DCC_NAMESPACE; -DCORE_USE_NAMESPACE -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -QString AccountsPlugin::name() const -{ - return QStringLiteral("accounts"); -} - -ModuleObject *AccountsPlugin::module() -{ - return new AccountsModule(this); -} - -QString AccountsPlugin::location() const -{ - return "1"; -} -/////////////////////////////////////// -#define MAXVALUE 99999 -#define GSETTINGS_EFFECTIVE_DAY_VISIBLE "effectiveDayVisible" - -AccountSpinBox::AccountSpinBox(QWidget *parent) - : DSpinBox(parent) -{ -} - -QString AccountSpinBox::textFromValue(int val) const -{ - if (val >= MAXVALUE && !lineEdit()->hasFocus()) { - return tr("Always"); - } - return QString::number(val); -} - -void AccountSpinBox::focusInEvent(QFocusEvent *event) -{ - if (lineEdit()->text() == tr("Always")) { - lineEdit()->setText(QString::number(MAXVALUE)); - } - return DSpinBox::focusInEvent(event); -}; - -void AccountSpinBox::focusOutEvent(QFocusEvent *event) -{ - if (lineEdit()->text().isEmpty()) { - editingFinished(); - } - return DSpinBox::focusOutEvent(event); -} -/////////////////////////////////////// -AccountsModule::AccountsModule(QObject *parent) - : PageModule("accounts", tr("Users"), tr("User management") , DIconTheme::findQIcon("dcc_nav_accounts"), parent) - , m_model(nullptr) - , m_worker(nullptr) - , m_curLoginUser(nullptr) - , m_curUser(nullptr) - , m_accountsmodel(nullptr) - , m_groupItemModel(new QStandardItemModel(this)) - , m_checkAuthorizationing(false) -{ - m_model = new UserModel(this); - m_worker = new AccountsWorker(m_model, this); - - setGroupInfo(m_model->getAllGroups()); - connect(m_model, &UserModel::allGroupsChange, this, &AccountsModule::setGroupInfo); - connect(m_worker, &AccountsWorker::showSafeyPage, this, &AccountsModule::onShowSafetyPage); - - HorizontalModule *horModule = new HorizontalModule("accountsList", QString()); - horModule->appendChild(new ItemModule("accountsList", QString(), this, &AccountsModule::initAccountsList, false)); - horModule->appendChild(new ItemModule("createAccount", tr("Create User"), this, &AccountsModule::initCreateAccount, false), 0, Qt::AlignRight); - appendChild(horModule); - appendChild(new ItemModule("avatar", QString(), this, &AccountsModule::initAvatar, false), 0, Qt::AlignHCenter); - horModule = new HorizontalModule("fullName", QString()); - horModule->setStretchType(HorizontalModule::AllStretch); - m_fullNameModule = new ItemModule("fullName", QString(), this, &AccountsModule::initFullName, false); - m_fullNameModule->setNoSearch(true); - horModule->appendChild(m_fullNameModule); - m_fullNameEditModule = new ItemModule("fullNameEdit", QString(), this, &AccountsModule::initFullNameEdit, false); - horModule->appendChild(m_fullNameEditModule); - m_fullNameEditModule->setHidden(true); - m_fullNameIconModule = new ItemModule("fullNameIcon", QString(), this, &AccountsModule::initFullNameIcon, false); - connect(m_fullNameIconModule, &ModuleObject::stateChanged, this, &AccountsModule::updateFullnameVisible); - horModule->appendChild(m_fullNameIconModule); - appendChild(horModule); - - appendChild(new ItemModule("name", tr("Username"), this, &AccountsModule::initName, false)); - horModule = new HorizontalModule("button", QString()); - m_changePasswordModule = new ItemModule("changePassword", tr("Change Password"), this, &AccountsModule::initChangePassword, false); - horModule->appendChild(m_changePasswordModule); - m_deleteAccountModule =new ItemModule("deleteUser", tr("Delete User"), this, &AccountsModule::initDeleteAccount, false); - horModule->appendChild(m_deleteAccountModule); - appendChild(horModule); - - ItemModule *accountTypeModule = new ItemModule("accountType", tr("User Type"), this, &AccountsModule::initAccountType); - accountTypeModule->setBackground(true); - m_accountTypeModule = accountTypeModule; - appendChild(m_accountTypeModule); - - ListViewModule *listViewModule = new ListViewModule("autoLogin", tr("Auto Login")); - connect(listViewModule, &ListViewModule::clicked, this, &AccountsModule::onLoginModule); - appendChild(listViewModule); - m_autoLoginModule = new ModuleObjectItem("autoLogin", tr("Auto Login")); - listViewModule->appendChild(m_autoLoginModule); - m_loginWithoutPasswordModule = new ModuleObjectItem("loginWithoutPassword", tr("Login Without Password")); - listViewModule->appendChild(m_loginWithoutPasswordModule); - - ItemModule *validityDaysModule = new ItemModule("validityDays", tr("Validity Days"), this, &AccountsModule::initValidityDays); - validityDaysModule->setBackground(true); - m_validityDaysModule = validityDaysModule; - appendChild(m_validityDaysModule); - - if (DSysInfo::UosServer == DSysInfo::uosType()) { - appendChild(new ItemModule("group", tr("Group"))); - appendChild(new ItemModule( - "groupListView", tr("Group"), [this](ModuleObject *module) { - Q_UNUSED(module) - DCCListView *groupListView = new DCCListView(); - groupListView->setModel(m_groupItemModel); - groupListView->setEditTriggers(QAbstractItemView::NoEditTriggers); - groupListView->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - groupListView->setSelectionMode(QAbstractItemView::NoSelection); - groupListView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - groupListView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - groupListView->setSpacing(1); - connect(groupListView, &DListView::clicked, this, &AccountsModule::userGroupClicked); - return groupListView; - }, - false)); - } -} - -AccountsModule::~AccountsModule() -{ - m_model->deleteLater(); - m_worker->deleteLater(); -} - -void AccountsModule::active() -{ - m_worker->active(); - for (auto user : m_model->userList()) { - if (user->name() == m_model->getCurrentUserName()) { - m_curLoginUser = user; - // 结束后续没必要的循环 - break; - } - } - m_checkAuthorizationing = false; - if (!m_accountsmodel) { - m_accountsmodel = new AccountsModel(this); - m_accountsmodel->setUserModel(m_model); - } - setCurrentUser(m_accountsmodel->getUser(m_accountsmodel->index(0, 0))); -} - -void AccountsModule::deactive() -{ - Q_EMIT deactivated(); -} - -bool AccountsModule::isSystemAdmin(User *user) -{ - // 本地管理员账户不一定是等保三级的管理员账户,要区分判断 - if (m_model->getIsSecurityHighLever()) - return user->securityLever() == SecurityLever::Sysadm; - - return user->userType() == User::UserType::Administrator; -} - -static QWidget *findAncestorWidget(const QObject *obj) -{ - while (obj) { - if (QWidget *w = qobject_cast(obj->parent())) - return w; - obj = obj->parent(); - } - - return nullptr; -} - -QWidget *AccountsModule::initAccountsList(ModuleObject *module) -{ - Q_UNUSED(module) - - QWidget *pw = findAncestorWidget(this); - AccountsListView *userlistView = new AccountsListView(pw); - userlistView->parentWidget(); - - userlistView->setMaximumHeight(90); - userlistView->setFrameShape(QFrame::NoFrame); - QPalette pa = userlistView->palette(); - pa.setColor(QPalette::Base, pa.color(QPalette::Window)); - userlistView->setAutoFillBackground(true); - userlistView->setPalette(pa); - - userlistView->setIconSize(QSize(40, 40)); - userlistView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - userlistView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - QScroller::grabGesture(userlistView, QScroller::LeftMouseButtonGesture); - UserDelegate *delegate = new UserDelegate(userlistView); - userlistView->setItemDelegate(delegate); - userlistView->setModel(m_accountsmodel); - - QScroller::grabGesture(userlistView->viewport(), QScroller::LeftMouseButtonGesture); - QScroller *scroller = QScroller::scroller(userlistView); - QScrollerProperties sp; - sp.setScrollMetric(QScrollerProperties::HorizontalOvershootPolicy, QScrollerProperties::OvershootAlwaysOff); - scroller->setScrollerProperties(sp); - //自动刷新当前链接状态 - connect(userlistView->selectionModel(), &QItemSelectionModel::currentChanged, this, [this](const QModelIndex ¤t, const QModelIndex &previous) { - Q_UNUSED(previous) - setCurrentUser(m_accountsmodel->getUser(current)); - }); - connect(this, &AccountsModule::currentUserChanged, userlistView, [this, userlistView](User *user, User *oldUser) { - Q_UNUSED(oldUser) - QModelIndex i = m_accountsmodel->index(user); - if (userlistView->selectionModel()->currentIndex() != i) { - userlistView->selectionModel()->setCurrentIndex(i, QItemSelectionModel::ClearAndSelect); - } - }); - userlistView->selectionModel()->select(m_accountsmodel->index(0, 0), QItemSelectionModel::SelectCurrent); - return userlistView; -} - -QWidget *AccountsModule::initCreateAccount(ModuleObject *module) -{ - Q_UNUSED(module) - DFloatingButton *createBtn = new DFloatingButton(nullptr); - createBtn->setIcon(DStyle::SP_IncreaseElement); - createBtn->setFixedSize(50, 50); - createBtn->setToolTip(tr("Create User")); - createBtn->setAccessibleName(tr("Create User")); - connect(createBtn, &QPushButton::clicked, this, &AccountsModule::onCreateAccount); - return createBtn; -} - -QWidget *AccountsModule::initAvatar(ModuleObject *module) -{ - Q_UNUSED(module) - AvatarWidget *avatar = new AvatarWidget(); - avatar->setFixedSize(120, 120); - avatar->setArrowed(false); - auto updateUser = [avatar](User *user, User *oldUser) { - if (!user) { - return; - } - if (oldUser) - disconnect(oldUser, 0, avatar, 0); - - avatar->setAvatarPath(user->currentAvatar()); - connect(user, &User::currentAvatarChanged, avatar, &AvatarWidget::setAvatarPath); - }; - updateUser(m_curUser, nullptr); - connect(this, &AccountsModule::currentUserChanged, avatar, updateUser); - connect(avatar, &AvatarWidget::clicked, this, &AccountsModule::onModifyIcon); - return avatar; -} - -QWidget *AccountsModule::initFullName(ModuleObject *module) -{ - DLabel *fullName = new DLabel(); - fullName->setContentsMargins(0, 6, 0, 6); - fullName->setElideMode(Qt::ElideRight); - if (!m_curUser) { - return fullName; - } - DFontSizeManager::instance()->bind(fullName, DFontSizeManager::T5); - setFullname(m_curUser->fullname(), fullName); - connect(module, &ModuleObject::displayNameChanged, fullName, [this, fullName](const QString &name) { - setFullname(name, fullName); - }); - - return fullName; -} - -QWidget *AccountsModule::initFullNameEdit(ModuleObject *module) -{ - Q_UNUSED(module) - DLineEdit *inputLineEdit = new DLineEdit(); - inputLineEdit->setAccessibleName("fullName_edit"); - inputLineEdit->setMinimumWidth(220); - inputLineEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - inputLineEdit->lineEdit()->setFrame(false); - inputLineEdit->lineEdit()->setAlignment(Qt::AlignCenter); - inputLineEdit->lineEdit()->installEventFilter(this); - DFontSizeManager::instance()->bind(inputLineEdit, DFontSizeManager::T5); - - if (!m_curUser) { - return inputLineEdit; - } - - connect(inputLineEdit, &DLineEdit::textEdited, inputLineEdit, [inputLineEdit](const QString &userFullName) { - /* 90401:在键盘输入下禁止冒号的输入,粘贴情况下自动识别冒号自动删除 */ - QString fullName = userFullName; - fullName.remove(":"); - if (fullName != userFullName) { - inputLineEdit->setText(fullName); - } - if (fullName.size() > 32) { - inputLineEdit->lineEdit()->backspace(); - inputLineEdit->setAlert(true); - inputLineEdit->showAlertMessage(tr("The full name is too long"), inputLineEdit); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } else if (inputLineEdit->isAlert()) { - inputLineEdit->setAlert(false); - inputLineEdit->hideAlertMessage(); - } - }); - - connect(inputLineEdit, &DLineEdit::editingFinished, inputLineEdit, [inputLineEdit, this] { - QString userFullName = inputLineEdit->lineEdit()->text(); - QDBusPendingReply reply = m_worker->isUsernameValid(userFullName); - //欧拉版会自己创建shutdown等root组账户且不会添加到userList中,导致无法重复性算法无效,先通过isUsernameValid校验这些账户再通过重复性算法校验 - // vaild == false && code ==6 是用户名已存在 - if (!reply.argumentAt(0).toBool() && PassErrorCode::ErrCodeSystemUsed == reply.argumentAt(2).toInt()) { - onEditingFinished(true, inputLineEdit); - } else { - onEditingFinished(false, inputLineEdit); - } - }); - - - inputLineEdit->setAlert(false); - inputLineEdit->setText(m_curUser->fullname()); - inputLineEdit->hideAlertMessage(); - QTimer::singleShot(10, inputLineEdit->lineEdit(), SLOT(setFocus())); - return inputLineEdit; -} - -QWidget *AccountsModule::initFullNameIcon(ModuleObject *module) -{ - DToolButton *fullNameBtn = new DToolButton(); - fullNameBtn->setAccessibleName("fullName_btn"); - fullNameBtn->setIcon(DIconTheme::findQIcon("dcc_edit")); - fullNameBtn->setIconSize(QSize(12, 12)); - //点击用户全名编辑按钮 - connect(fullNameBtn, &DIconButton::clicked, module, [this]() { - m_fullNameIconModule->setHidden(true); - }); - return fullNameBtn; -} - -QWidget *AccountsModule::initChangePassword(ModuleObject *module) -{ - QPushButton *modifyPassword = new QPushButton(); - modifyPassword->setText(module->displayName()); - connect(module, &ModuleObject::displayNameChanged, modifyPassword, &QPushButton::setText); - connect(modifyPassword, &QPushButton::clicked, this, &AccountsModule::onModifyPassword); - - return modifyPassword; -} - -QWidget *AccountsModule::initDeleteAccount(ModuleObject *module) -{ - Q_UNUSED(module) - DWarningButton *deleteAccount = new DWarningButton(); - deleteAccount->setText(tr("Delete User")); - connect(deleteAccount, &DWarningButton::clicked, this, &AccountsModule::onDeleteUser); - return deleteAccount; -} - -QWidget *AccountsModule::initAccountType(ModuleObject *module) -{ - Q_UNUSED(module) - QComboBox *asAdministrator = new QComboBox(); - asAdministrator->addItems({ tr("Standard User"), tr("Administrator") }); - if (!m_curUser) { - return asAdministrator; - } - auto updateType = [asAdministrator, this]() { - asAdministrator->blockSignals(true); - asAdministrator->setCurrentIndex(isSystemAdmin(m_curUser)); - asAdministrator->blockSignals(false); - }; - updateType(); - connect(m_model, &UserModel::adminCntChange, asAdministrator, updateType); - connect(this, &AccountsModule::currentUserChanged, asAdministrator, updateType); - connect(asAdministrator, qOverload(&QComboBox::currentIndexChanged), this, [this](const int userType) { - m_worker->setAdministrator(m_curUser, User::UserType::Administrator == userType); - }); - return asAdministrator; -} - -QWidget *AccountsModule::initValidityDays(ModuleObject *module) -{ - Q_UNUSED(module) - AccountSpinBox *validityDaysBox = new AccountSpinBox(); - validityDaysBox->lineEdit()->setValidator(new QRegularExpressionValidator(QRegularExpression("[1-9]\\d{0,4}/^[1-9]\\d*$/"), validityDaysBox->lineEdit())); - validityDaysBox->lineEdit()->setPlaceholderText("99999"); - validityDaysBox->setRange(1, 99999); - - connect(validityDaysBox, qOverload(&DSpinBox::valueChanged), this, [=](const int value) { - validityDaysBox->setValue(value); - validityDaysBox->setAlert(false); - }); - - if (!m_curUser) { - return validityDaysBox; - } - connect(validityDaysBox, &QSpinBox::editingFinished, this, [this, validityDaysBox]() { - if (validityDaysBox->lineEdit()->text().isEmpty()) { - validityDaysBox->setValue(m_curUser->passwordAge()); - return; - } - int age = validityDaysBox->value(); - if (age == m_curUser->passwordAge()) - return; - - m_worker->setMaxPasswordAge(m_curUser, validityDaysBox->value()); - }); - validityDaysBox->setValue(m_curUser->passwordAge()); - validityDaysBox->valueChanged(m_curUser->passwordAge()); - - auto setvalidityDaysFun = [](AccountsModule *module, AccountSpinBox *validityDaysBox) { - validityDaysBox->setValue(module->m_curUser->passwordAge()); - validityDaysBox->valueChanged(module->m_curUser->passwordAge()); - module->m_validityDaysModule->setEnabled(!(module->m_model->getIsSecurityHighLever() && module->m_curLoginUser->securityLever() != SecurityLever::Sysadm && !module->m_curUser->isCurrentUser())); - }; - std::function setvalidityDays = std::bind(setvalidityDaysFun, this, validityDaysBox); - - auto updateValidityDays = [validityDaysBox, setvalidityDays](User *user, User *oldUser) { - if (oldUser) - disconnect(oldUser, 0, validityDaysBox, 0); - setvalidityDays(); - - connect(user, &User::passwordAgeChanged, validityDaysBox, setvalidityDays); - }; - updateValidityDays(m_curUser, nullptr); - - connect(this, &AccountsModule::currentUserChanged, validityDaysBox, updateValidityDays); - return validityDaysBox; -} - -QWidget *AccountsModule::initName(ModuleObject *module) -{ - Q_UNUSED(module) - QWidget *w = new QWidget(); - QLabel *shortnameBtn = new QLabel(); - shortnameBtn->setPixmap(DIconTheme::findQIcon("dcc_avatar").pixmap(12, 12)); - QLabel *shortName = new QLabel(); - shortName->setEnabled(false); - auto updateName = [shortName](User *user, User *oldUser) { - if (!user) { - return; - } - if (oldUser) - disconnect(oldUser, 0, shortName, 0); - - shortName->setText(user->name()); - connect(user, &User::nameChanged, shortName, &QLabel::setText); - }; - updateName(m_curUser, nullptr); - connect(this, &AccountsModule::currentUserChanged, shortName, updateName); - - QHBoxLayout *layout = new QHBoxLayout; - layout->setMargin(0); - layout->addStretch(); - layout->addWidget(shortnameBtn); - layout->addWidget(shortName); - layout->addStretch(); - w->setLayout(layout); - return w; -} - -void AccountsModule::onCreateAccount() -{ - if (m_checkAuthorizationing) - return; - m_checkAuthorizationing = true; - QWidget *w = qobject_cast(sender()); - PolkitQt1::Authority::instance()->checkAuthorization("org.deepin.dde.accounts.user-administration", PolkitQt1::UnixProcessSubject(getpid()), - PolkitQt1::Authority::AllowUserInteraction); - - connect(PolkitQt1::Authority::instance(), &PolkitQt1::Authority::checkAuthorizationFinished, w, [this, w](PolkitQt1::Authority::Result authenticationResult) { - disconnect(PolkitQt1::Authority::instance(), nullptr, w, nullptr); - m_checkAuthorizationing = false; - if (PolkitQt1::Authority::Result::Yes != authenticationResult) { - return; - } - CreateAccountPage *createAccountPage = new CreateAccountPage(m_worker, w); - User *newUser = new User(this); - createAccountPage->setAttribute(Qt::WA_DeleteOnClose); - newUser->setUserType(m_curLoginUser->userType()); - createAccountPage->setModel(m_model, newUser); - connect(createAccountPage, &CreateAccountPage::requestCreateUser, m_worker, &AccountsWorker::createAccount); - connect(m_worker, &AccountsWorker::accountCreationFinished, createAccountPage, &CreateAccountPage::setCreationResult); - connect(createAccountPage, &CreateAccountPage::requestCheckPwdLimitLevel, m_worker, &AccountsWorker::checkPwdLimitLevel); - if (createAccountPage->exec() == QDialog::Accepted) { - for (auto &&user : m_model->userList()) { - if (user->name() == newUser->name()) { - setCurrentUser(user); - break; - } - } - } - }); -} - -void AccountsModule::onModifyPassword() -{ - if (m_checkAuthorizationing) - return; - m_checkAuthorizationing = true; - QWidget *w = qobject_cast(sender()); - PolkitQt1::Authority::instance()->checkAuthorization("org.deepin.dde.accounts.user-administration", PolkitQt1::UnixProcessSubject(getpid()), - PolkitQt1::Authority::AllowUserInteraction); - - connect(PolkitQt1::Authority::instance(), &PolkitQt1::Authority::checkAuthorizationFinished, w, [this, w](PolkitQt1::Authority::Result authenticationResult) { - disconnect(PolkitQt1::Authority::instance(), nullptr, w, nullptr); - m_checkAuthorizationing = false; - if (PolkitQt1::Authority::Result::Yes != authenticationResult) { - return; - } - ModifyPasswdPage *modifyPasswdPage = new ModifyPasswdPage(m_curUser, m_curUser->isCurrentUser(), w); - modifyPasswdPage->setAttribute(Qt::WA_DeleteOnClose); - connect(modifyPasswdPage, &ModifyPasswdPage::requestChangePassword, m_worker, &AccountsWorker::setPassword); - connect(modifyPasswdPage, &ModifyPasswdPage::requestResetPassword, m_worker, &AccountsWorker::resetPassword); - - connect(modifyPasswdPage, &ModifyPasswdPage::requestSetPasswordHint, m_worker, &AccountsWorker::setPasswordHint); - connect(modifyPasswdPage, &ModifyPasswdPage::requestUOSID, m_worker, &AccountsWorker::getUOSID); - connect(modifyPasswdPage, &ModifyPasswdPage::requestUUID, m_worker, &AccountsWorker::getUUID); - connect(modifyPasswdPage, &ModifyPasswdPage::requestLocalBindCheck, m_worker, &AccountsWorker::localBindCheck); - connect(modifyPasswdPage, &ModifyPasswdPage::requestStartResetPasswordExec, m_worker, &AccountsWorker::startResetPasswordExec); - connect(modifyPasswdPage, &ModifyPasswdPage::requestSecurityQuestionsCheck, m_worker, &AccountsWorker::asyncSecurityQuestionsCheck); - connect(modifyPasswdPage, &ModifyPasswdPage::requestCheckPwdLimitLevel, m_worker, &AccountsWorker::checkPwdLimitLevel); - connect(m_worker, &AccountsWorker::localBindUbid, modifyPasswdPage, &ModifyPasswdPage::onLocalBindCheckUbid); - connect(m_worker, &AccountsWorker::localBindError, modifyPasswdPage, &ModifyPasswdPage::onLocalBindCheckError); - modifyPasswdPage->exec(); - }); -} - -void AccountsModule::onDeleteUser() -{ - QWidget *w = qobject_cast(sender()); - if (!w) - return; - RemoveUserDialog *d = new RemoveUserDialog(m_curUser, w); - d->deleteLater(); - if (d->exec() == QDialog::Accepted) { - m_worker->deleteAccount(m_curUser, d->deleteHome()); - } -} - -void AccountsModule::onModifyIcon() -{ - QWidget *w = qobject_cast(sender()); - if (!w) - return; - - AvatarListDialog avatarListDialog = AvatarListDialog(m_curUser, m_worker); - - if (avatarListDialog.exec() == QDialog::Rejected) { - return; - } - - auto path = avatarListDialog.get_path(); - if (path.has_value()) { - m_worker->setAvatar(m_curUser, path.value()); - } -} - -void AccountsModule::setCurrentUser(User *user) -{ - if (user && m_curUser != user) { - User *oldUser = m_curUser; - m_curUser = user; - if (oldUser) { - disconnect(oldUser, 0, this, 0); - } - connect(m_curUser, &User::gidChanged, this, &AccountsModule::onGidChanged); - connect(m_curUser, &User::groupsChanged, this, &AccountsModule::changeUserGroup); - onGidChanged(m_curUser->gid()); - changeUserGroup(m_curUser->groups()); - - connect(m_curUser, &User::autoLoginChanged, this, &AccountsModule::updateLoginModule); - connect(m_curUser, &User::nopasswdLoginChanged, this, &AccountsModule::updateLoginModule); - updateLoginModule(); - m_fullNameIconModule->setHidden(false); - m_fullNameModule->setDisplayName(m_curUser->fullname()); - connect(m_curUser, &User::fullnameChanged, this, [this](const QString &fullname) { - m_fullNameModule->setDisplayName(fullname); - }); - m_autoLoginModule->setEnabled(m_curUser->isCurrentUser()); - m_loginWithoutPasswordModule->setEnabled(m_curUser->isCurrentUser()); - m_changePasswordModule->setEnabled(!(m_model->getIsSecurityHighLever() && m_curLoginUser->securityLever() != SecurityLever::Sysadm && m_curUser != m_curLoginUser)); - m_changePasswordModule->setDisplayName(m_curUser->isCurrentUser() ? tr("Change Password") : tr("Reset Password")); - bool deleteEnable = deleteUserBtnEnable(); - m_deleteAccountModule->setEnabled(deleteEnable); - m_accountTypeModule->setEnabled(deleteEnable); - connect(m_curUser, &User::onlineChanged, this, [this]() { - bool deleteEnable = deleteUserBtnEnable(); - m_deleteAccountModule->setEnabled(deleteEnable); - m_accountTypeModule->setEnabled(deleteEnable); - }); - emit currentUserChanged(m_curUser, oldUser); - } -} - -void AccountsModule::setGroupInfo(const QStringList &group) -{ - m_groupItemModel->clear(); - for (const QString &item : group) { - GroupItem *it = new GroupItem(item); - it->setCheckable(false); - m_groupItemModel->appendRow(it); - } - if (m_curUser) - changeUserGroup(m_curUser->groups()); -} - -void AccountsModule::userGroupClicked(const QModelIndex &index) -{ - QStandardItem *item = m_groupItemModel->item(index.row(), index.column()); - //不可移除主组 - if (!item || item->text() == m_groupName) - return; - - QStringList curUserGroup; - int row_count = m_groupItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - QStandardItem *itemGroup = m_groupItemModel->item(i, 0); - if (itemGroup && itemGroup->checkState()) { - curUserGroup << itemGroup->text(); - } - } - - Qt::CheckState state = item->checkState(); - state == Qt::Checked ? (void)curUserGroup.removeOne(item->text()) : curUserGroup.append(item->text()); - - m_worker->setGroups(m_curUser, curUserGroup); -} - -void AccountsModule::changeUserGroup(const QStringList &groups) -{ - int row_count = m_groupItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - QStandardItem *item = m_groupItemModel->item(i, 0); - if (item) { - item->setCheckState(groups.contains(item->text()) ? Qt::Checked - : Qt::Unchecked); - item->setEnabled(item->text() != m_groupName); - } - } - m_groupItemModel->sort(0); -} - -void AccountsModule::onGidChanged(const QString &gid) -{ - bool ok; - int iGid = gid.toInt(&ok, 10); - if (!ok) - return; - - const group *group = getgrgid(static_cast<__gid_t>(iGid)); - if (nullptr == group || nullptr == group->gr_name) - return; - - m_groupName = QString(group->gr_name); - for (int i = 0; i < m_groupItemModel->rowCount(); ++i) { - QStandardItem *item = m_groupItemModel->item(i, 0); - if (nullptr == item) - continue; - item->setEnabled(item->text() != m_groupName); - } -} - -bool AccountsModule::onEditingFinished(bool isValid, DLineEdit *fullNameEdit) -{ - const QString &userFullName = fullNameEdit->text(); - if (userFullName == m_curUser->fullname() || (!userFullName.isEmpty() && userFullName.simplified().isEmpty())) { - fullNameEdit->lineEdit()->clearFocus(); - m_fullNameIconModule->setVisible(true); - if (fullNameEdit->isAlert()) { - fullNameEdit->setAlert(false); - fullNameEdit->hideAlertMessage(); - } - return true; - } - if (!userFullName.isEmpty()) { - if (isValid) { - fullNameEdit->setAlert(true); - fullNameEdit->showAlertMessage(tr("The full name has been used by other user accounts"), fullNameEdit, 2000); - fullNameEdit->lineEdit()->selectAll(); - return false; - } - QList userList = m_model->userList(); - for (User *user : userList) { - if (userFullName == user->fullname() || userFullName == user->name()) { - fullNameEdit->setAlert(true); - fullNameEdit->showAlertMessage(tr("The full name has been used by other user accounts"), fullNameEdit, 2000); - fullNameEdit->lineEdit()->selectAll(); - return false; - } - } - QList groupList = m_model->getAllGroups(); - for (QString &group : groupList) { - if (userFullName == group && userFullName != m_curUser->name()) { - fullNameEdit->setAlert(true); - fullNameEdit->showAlertMessage(tr("The full name has been used by other user accounts"), fullNameEdit, 2000); - fullNameEdit->lineEdit()->selectAll(); - return false; - } - } - } - fullNameEdit->lineEdit()->clearFocus(); - m_fullNameIconModule->setVisible(true); - if (fullNameEdit->isAlert()) { - fullNameEdit->setAlert(false); - fullNameEdit->hideAlertMessage(); - } - - m_worker->setFullname(m_curUser, fullNameEdit->text()); - return true; -} - -void AccountsModule::setFullname(const QString &fullName, DLabel *fullNameLabel) -{ - QString fullname = fullName; - m_fullNameModule->setEnabled(true); - if (fullname.simplified().isEmpty()) { - fullname = tr("Full Name"); - m_fullNameModule->setEnabled(false); - } else if (fullname.toLocal8Bit().size() > 32) { - for (auto i = 1; i <= fullname.size(); ++i) { - if (fullname.left(i).toLocal8Bit().size() > 29) { - fullname = fullname.left(i - 1) + QString("..."); - break; - } - } - } - fullNameLabel->setText(fullname.toHtmlEscaped()); -} - -void AccountsModule::updateFullnameVisible(uint32_t flag, bool state) -{ - Q_UNUSED(state) - if (ModuleObject::IsHiddenFlag(flag)) { - m_fullNameModule->setHidden(m_fullNameIconModule->isHidden()); - m_fullNameEditModule->setHidden(!m_fullNameIconModule->isHidden()); - } -} - -void AccountsModule::onShowSafetyPage(const QString &errorTips) -{ - DDialog dlg("", errorTips, nullptr); - dlg.setIcon(DIconTheme::findQIcon("preferences-system")); - dlg.addButton(tr("Go to Settings")); - dlg.addButton(tr("Cancel"), true, DDialog::ButtonWarning); - connect(this, &AccountsModule::deactivated, &dlg, &DDialog::close); - connect(&dlg, &DDialog::buttonClicked, this, [=](int idx) { - if (idx == 0) { - DDBusSender() - .service("com.deepin.defender.hmiscreen") - .interface("com.deepin.defender.hmiscreen") - .path("/com/deepin/defender/hmiscreen") - .method(QString("ShowPage")) - .arg(QString("securitytools")) - .arg(QString("login-safety")) - .call(); - } - }); - dlg.exec(); -} - -void AccountsModule::onLoginModule(ModuleObject *module) -{ - if (module == m_autoLoginModule) { - bool autoLogin = !m_curUser->autoLogin(); - if (autoLogin) { - const QString &existedAutoLoginUserName = getOtherUserAutoLogin(); - if (existedAutoLoginUserName.isEmpty()) { - m_worker->setAutoLogin(m_curUser, autoLogin); - } else { - DDialog *tipDialog = new DDialog(qobject_cast(sender())); - tipDialog->setIcon(DIconTheme::findQIcon("dialog-warning")); - tipDialog->setModal(true); - tipDialog->setAttribute(Qt::WA_DeleteOnClose); - tipDialog->addButton(tr("OK")); - tipDialog->setMessage(tr("\"Auto Login\" can be enabled for only one account, please disable it for the account \"%1\" first").arg(existedAutoLoginUserName)); - tipDialog->setFixedWidth(422); - tipDialog->show(); - } - } else { - m_worker->setAutoLogin(m_curUser, autoLogin); - } - } else if (module == m_loginWithoutPasswordModule) { - m_worker->setNopasswdLogin(m_curUser, !m_curUser->nopasswdLogin()); - } -} - -void AccountsModule::updateLoginModule() -{ - m_autoLoginModule->setRightIcon(m_curUser->autoLogin() ? DStyle::SP_IndicatorChecked : DStyle::SP_IndicatorUnchecked); - m_loginWithoutPasswordModule->setRightIcon(m_curUser->nopasswdLogin() ? DStyle::SP_IndicatorChecked : DStyle::SP_IndicatorUnchecked); -} - -QString AccountsModule::getOtherUserAutoLogin() -{ - for (auto user : m_model->userList()) { - if (user->name() != m_curUser->name() && user->autoLogin()) { - return user->name(); - } - } - return ""; -} - -bool AccountsModule::deleteUserBtnEnable() -{ - auto adminCnt = [this]() { - int cnt = 0; - if (m_model->getIsSecurityHighLever()) { - return 1; - } - for (auto user : m_model->userList()) { - if (user->userType() == User::UserType::Administrator) - cnt++; - } - return cnt; - }; - - auto isOnlyAdmin = [this, adminCnt] { // 是最后一个管理员 - return isSystemAdmin(m_curUser) // 是管理员 - && adminCnt() == 1; // 管理员只有一个 - }; - - if (m_model->getIsSecurityHighLever()) { - return m_curLoginUser->securityLever() == SecurityLever::Sysadm && !m_curUser->isCurrentUser(); - } - return !m_curUser->isCurrentUser() // 不是当前用户 - && !m_curUser->online() // 未登录 - && !isOnlyAdmin(); // 不是最后一个管理员 -} diff --git a/dcc-old/src/plugin-accounts/window/accountsmodule.h b/dcc-old/src/plugin-accounts/window/accountsmodule.h deleted file mode 100644 index 41625329e0..0000000000 --- a/dcc-old/src/plugin-accounts/window/accountsmodule.h +++ /dev/null @@ -1,144 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "interface/pagemodule.h" -#include "interface/plugininterface.h" - -#include -#include - -class QVBoxLayout; -class QStackedWidget; -class QStandardItemModel; -class AccountsModel; - -DWIDGET_BEGIN_NAMESPACE -class DLabel; -class DStandardItem; -DWIDGET_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class SettingsItem; -class User; -class AccountsWorker; -class UserModel; -class AccountsDetailWidget; -class AccountsListWidget; -class ModifyPasswdPage; -class SettingsGroup; -class DCCListView; -class ModuleObjectItem; - -class AccountsPlugin : public PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Accounts" FILE "AccountsPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - virtual QString name() const override; - virtual ModuleObject *module() override; - virtual QString location() const override; -}; -/////////////////////////////////////// -class AccountSpinBox : public DTK_WIDGET_NAMESPACE::DSpinBox -{ - Q_OBJECT - -public: - explicit AccountSpinBox(QWidget *parent = nullptr); -protected: - virtual QString textFromValue(int val) const override; - void focusInEvent(QFocusEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; -}; -/////////////////////////////////////// -class AccountsModule : public PageModule -{ - Q_OBJECT - -public: - enum PassErrorCode { - ErrCodeEmpty = 1, - ErrCodeInvalidChar, - ErrCodeFirstCharInvalid, - ErrCodeExist, - ErrCodeNameExist, - ErrCodeSystemUsed, - ErrCodeLen - }; - - explicit AccountsModule(QObject *parent = nullptr); - ~AccountsModule(); - AccountsWorker *work() { return m_worker; } - UserModel *model() { return m_model; } - -protected: - void active() override; - void deactive() override; - bool isSystemAdmin(User *user); - -Q_SIGNALS: - void currentUserChanged(User *user, User *oldUser); - void deactivated(); - -protected Q_SLOTS: - QWidget *initAccountsList(ModuleObject *module); - QWidget *initCreateAccount(ModuleObject *module); - QWidget *initAvatar(ModuleObject *module); - QWidget *initFullName(ModuleObject *module); - QWidget *initFullNameEdit(ModuleObject *module); - QWidget *initFullNameIcon(ModuleObject *module); - QWidget *initName(ModuleObject *module); - QWidget *initChangePassword(ModuleObject *module); - QWidget *initDeleteAccount(ModuleObject *module); - QWidget *initAccountType(ModuleObject *module); - QWidget *initValidityDays(ModuleObject *module); - - void onCreateAccount(); - void onModifyPassword(); - void onDeleteUser(); - void onModifyIcon(); - void setCurrentUser(User *user); - void setGroupInfo(const QStringList &group); - void userGroupClicked(const QModelIndex &index); - void changeUserGroup(const QStringList &groups); - void onGidChanged(const QString &gid); - bool onEditingFinished(bool isValid, DTK_WIDGET_NAMESPACE::DLineEdit *fullNameEdit); - void setFullname(const QString &fullName, DTK_WIDGET_NAMESPACE::DLabel *fullNameLabel); - void updateFullnameVisible(uint32_t flag, bool state); - void onShowSafetyPage(const QString &errorTips); - void onLoginModule(ModuleObject *module); - void updateLoginModule(); - -protected: - QString getOtherUserAutoLogin(); //获取其它用户是否开启自动登录开关 - bool deleteUserBtnEnable(); // 可以删除用户 - -private: - UserModel *m_model; - AccountsWorker *m_worker; - User *m_curLoginUser; // 当前登录用户 - User *m_curUser; // 当前选中用户 - AccountsModel *m_accountsmodel; - - QStandardItemModel *m_groupItemModel; - QString m_groupName; - bool m_checkAuthorizationing; - - DCC_NAMESPACE::ModuleObjectItem *m_autoLoginModule; - DCC_NAMESPACE::ModuleObjectItem *m_loginWithoutPasswordModule; - - DCC_NAMESPACE::ModuleObject *m_fullNameModule; - DCC_NAMESPACE::ModuleObject *m_fullNameEditModule; - DCC_NAMESPACE::ModuleObject *m_fullNameIconModule; - DCC_NAMESPACE::ModuleObject *m_changePasswordModule; - DCC_NAMESPACE::ModuleObject *m_deleteAccountModule; - DCC_NAMESPACE::ModuleObject *m_accountTypeModule; - DCC_NAMESPACE::ModuleObject *m_validityDaysModule; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-accounts/window/avatarcropbox.cpp b/dcc-old/src/plugin-accounts/window/avatarcropbox.cpp deleted file mode 100644 index fb12db1629..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarcropbox.cpp +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "avatarcropbox.h" - -#include - -#define CropBoxSize 120 - -using namespace DCC_NAMESPACE; - -AvatarCropBox::AvatarCropBox(QWidget *parent) - : QWidget(parent) - , m_backgroundColor(parent->palette().color(QPalette::Window)) -{ - setFixedSize(190, 190); -} - -AvatarCropBox::~AvatarCropBox() { } - -void AvatarCropBox::setBackgroundColor(QColor color) -{ - m_backgroundColor = color; - - repaint(); -} - -void AvatarCropBox::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event); - - QPainter p(this); - p.setRenderHint(QPainter::Antialiasing); - - auto rect = parentWidget()->rect(); - - QPainterPath border, cropBox; - - border.setFillRule(Qt::WindingFill); - border.addRect(rect); - - cropBox.setFillRule(Qt::WindingFill); - auto adjustSize = (rect.width() - CropBoxSize) / 2; - cropBox.addRoundedRect(rect.adjusted(adjustSize, adjustSize, -adjustSize, -adjustSize), 10, 10); - - QPainterPath endPath = border.subtracted(cropBox); - p.fillPath(endPath, m_backgroundColor); -} diff --git a/dcc-old/src/plugin-accounts/window/avatarcropbox.h b/dcc-old/src/plugin-accounts/window/avatarcropbox.h deleted file mode 100644 index 423574cad6..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarcropbox.h +++ /dev/null @@ -1,30 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include -#include - -namespace DCC_NAMESPACE { - -class AvatarCropBox : public QWidget -{ - Q_OBJECT -public: - AvatarCropBox(QWidget *parent = nullptr); - ~AvatarCropBox(); - - void setBackgroundColor(QColor color); - -protected: - void paintEvent(QPaintEvent *event) override; - -private: - QColor m_backgroundColor; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-accounts/window/avataritemdelegate.cpp b/dcc-old/src/plugin-accounts/window/avataritemdelegate.cpp deleted file mode 100644 index 07393e3b31..0000000000 --- a/dcc-old/src/plugin-accounts/window/avataritemdelegate.cpp +++ /dev/null @@ -1,135 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "avataritemdelegate.h" - -#include "avatarlistwidget.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -#define CustomAvatarRole 4 - -AvatarItemDelegate::AvatarItemDelegate(bool isCustom, QObject *parent) - : QStyledItemDelegate(parent) - , m_isCustom(isCustom) -{ -} - -void AvatarItemDelegate::paint(QPainter *painter, - const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - painter->setRenderHints(painter->renderHints() | QPainter::Antialiasing - | QPainter::SmoothPixmapTransform); - - if (!index.isValid()) - return; - - QStyleOptionViewItem opt(option); - initStyleOption(&opt, index); - QStyle *style = option.widget ? option.widget->style() : QApplication::style(); - - opt.rect = opt.rect.adjusted(4, 4, -4, -4); - - auto pm = static_cast(DStyle::PM_FocusBorderWidth); - int borderWidth = style->pixelMetric(pm, &opt, nullptr); - pm = static_cast(DStyle::PM_FocusBorderSpacing); - int borderSpacing = style->pixelMetric(pm, &opt, nullptr); - const QMargins margins(borderWidth + borderSpacing, - borderWidth + borderSpacing, - borderWidth + borderSpacing, - borderWidth + borderSpacing); - QPixmap pixmap = index.data(Qt::DecorationRole).value(); - QPainterPath path; - path.addRoundedRect(opt.rect.marginsRemoved(margins), 8, 8); - painter->setClipPath(path); - - if (!pixmap.isNull()) { - painter->drawPixmap(opt.rect.marginsRemoved(margins), pixmap); - painter->setClipping(false); - } else { - qreal tw = opt.rect.width() / 3.0; - qreal th = opt.rect.height() / 3.0; - - // 绘制背景 - DStyleHelper dh(style); - QRectF rect(tw + opt.rect.x(), th + opt.rect.y(), tw, th); - rect.moveCenter(QRect(opt.rect).center()); - painter->setPen(Qt::NoPen); - painter->setBrush(dh.getColor(&opt, QPalette::Button)); - - painter->drawRoundedRect(opt.rect.marginsRemoved(margins), 8, 8); - - // 画+号 - qreal x1 = opt.rect.x() + tw; - qreal y1 = opt.rect.y() + opt.rect.height() / 2.0 - 0.5; - qreal x2 = opt.rect.x() + opt.rect.width() / 2.0 - 0.5; - qreal y2 = opt.rect.y() + th; - painter->setBrush(dh.getColor(&opt, QPalette::Text)); - painter->drawRect(QRectF(x1, y1, tw, 1.0)); - painter->drawRect(QRectF(x2, y2, 1.0, th)); - return; - } - - if (m_isCustom) { - painter->setPen(QPen(opt.palette.highlight(), borderWidth)); - painter->setBrush(Qt::NoBrush); - painter->drawRoundedRect(opt.rect.adjusted(1, 1, -1, -1), 8, 8); - - // 在中间绘制选中小图标 - int radius = 8; - int cx = opt.rect.marginsRemoved(margins).right(); - int cy = opt.rect.marginsRemoved(margins).top(); - QRect crect(QPoint(cx - radius, cy - radius), QPoint(cx + radius, cy + radius)); - opt.rect = crect; - opt.state |= QStyle::State_On; - opt.state &= ~QStyle::State_Selected; - if (index.data(Qt::CheckStateRole) == Qt::Checked) { - style->drawPrimitive(DStyle::PE_IndicatorItemViewItemCheck, &opt, painter, nullptr); - } else { - style->drawPrimitive(DStyle::PE_IndicatorTabClose, &opt, painter, nullptr); - } // draw + in the end - return; - } - - if (index.data(Qt::CheckStateRole) == Qt::Checked) { - painter->setPen(QPen(opt.palette.highlight(), borderWidth)); - painter->setBrush(Qt::NoBrush); - painter->drawRoundedRect(opt.rect.adjusted(1, 1, -1, -1), 8, 8); - - // 在中间绘制选中小图标 - int radius = 8; - int cx = opt.rect.marginsRemoved(margins).right(); - int cy = opt.rect.marginsRemoved(margins).top(); - QRect crect(QPoint(cx - radius, cy - radius), QPoint(cx + radius, cy + radius)); - opt.rect = crect; - opt.state |= QStyle::State_On; - opt.state &= ~QStyle::State_Selected; - style->drawPrimitive(DStyle::PE_IndicatorItemViewItemCheck, &opt, painter, nullptr); - return; - } // draw + in the end -} - -QSize AvatarItemDelegate::sizeHint(const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - Q_UNUSED(option) - Q_UNUSED(index) - - return index.data(Qt::SizeHintRole).toSize(); -} diff --git a/dcc-old/src/plugin-accounts/window/avataritemdelegate.h b/dcc-old/src/plugin-accounts/window/avataritemdelegate.h deleted file mode 100644 index 17572961b2..0000000000 --- a/dcc-old/src/plugin-accounts/window/avataritemdelegate.h +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include - -struct LastItemData -{ - bool isDrawLast; - QString iconPath; -}; -Q_DECLARE_METATYPE(LastItemData) - -QT_BEGIN_NAMESPACE -class QObject; -class QStyleOptionViewItem; -class QModelIndex; -class QPainter; -class QSize; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class AvatarItemDelegate : public QStyledItemDelegate -{ - Q_OBJECT - -public: - explicit AvatarItemDelegate(bool isCustom, QObject *parent = nullptr); - - // painting - void paint(QPainter *painter, - const QStyleOptionViewItem &option, - const QModelIndex &index) const; - - // set item size - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; - -private: - bool m_isCustom; -}; -} - // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-accounts/window/avatarlistframe.cpp b/dcc-old/src/plugin-accounts/window/avatarlistframe.cpp deleted file mode 100644 index 4cffcaf2d1..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarlistframe.cpp +++ /dev/null @@ -1,673 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "avatarlistframe.h" - -#include "avatarcropbox.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE - -const QString VarDirectory = QStringLiteral(VARDIRECTORY); - -// 系统用户头像存放路径 -const QString PersonDimensionalPath = QStringLiteral("lib/AccountsService/icons/human/dimensional"); -const QString PersonDimensional2Path = QStringLiteral("lib/AccountsService/icons/human/dimensional_v2"); -const QString PersonFlatPath = QStringLiteral("lib/AccountsService/icons/human/flat"); -const QString AnimalDimensionalPath = QStringLiteral("lib/AccountsService/icons/animal"); -const QString SceneryPath = QStringLiteral("lib/AccountsService/icons/scenery"); -const QString IllustrationDimensionalPath = QStringLiteral("lib/AccountsService/icons/illustration"); -const QString EmojiDimensionalPath = QStringLiteral("lib/AccountsService/icons/emoji"); - -// 用户自定义图像存放路径 -const QString AvatarCustomPath = QStringLiteral("lib/AccountsService/icons/local"); - -#define BORDER_BOX_SIZE 190 -#define AVATAR_ICON_SIZE 140 -#define WINDOW_WIDTH 640 -#define WINDOW_HEIGHT 472 -#define FIRST_PAGE_WIDTH 180 // 160 + 10 + 10 -#define SECOND_PAGE_WIDTH 460 -#define WINDOW_ROUND_SIZE 10 -#define CROP_BOX_SIZE 120 -#define SLIDER_MINIMUM_SIZE 1 -#define SLIDER_MAX_SIZE 20 -#define SLIDER_STEP 1 - -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -// 头像选择项 -struct AvatarItem -{ - QString name; - QString icon; - int role; - - AvatarItem(const QString &_name, const QString &_icon, const int &_role) - : name(_name) - , icon(_icon) - , role(_role) - { - } -}; - -AvatarListFrame::AvatarListFrame(User * user, const int &role, QWidget *parent) - : QFrame(parent) - , m_role(role) - , m_currentAvatarLsv(nullptr) -{ - const QString personDimensionPath = QString("%1/%2").arg(VarDirectory).arg(PersonDimensionalPath); - const QString personDimension2Path = QString("%1/%2").arg(VarDirectory).arg(PersonDimensional2Path); - const QString personFlatPath = QString("%1/%2").arg(VarDirectory).arg(PersonFlatPath); - const QString animalDimensionPath = QString("%1/%2").arg(VarDirectory).arg(AnimalDimensionalPath); - const QString sceneryPath = QString("%1/%2").arg(VarDirectory).arg(SceneryPath); - const QString illustrationDimensionPath = QString("%1/%2").arg(VarDirectory).arg(IllustrationDimensionalPath); - const QString emojiDimensionPath = QString("%1/%2").arg(VarDirectory).arg(EmojiDimensionalPath); - const QString customAvatarPath = QString("%1/%2").arg(VarDirectory).arg(AvatarCustomPath); - - setFrameStyle(QFrame::NoFrame); - setContentsMargins(0, 0, 0, 0); - if (role == Role::Custom) { - m_path = customAvatarPath; - m_currentAvatarLsv = new AvatarListView(user, role, Type::Dimensional, customAvatarPath, this); - m_currentAvatarLsv->setCurrentAvatarChecked(user->currentAvatar()); - return; - } - - const QString &name = user->name(); - - QList items = { - AvatarRoleItem{ Role::Person, - Type::Cartoon, - personDimensionPath, - isExistCustomAvatar(personDimensionPath, name) }, - AvatarRoleItem{ Role::Person, - Type::Dimensional, - personDimension2Path, - isExistCustomAvatar(personDimension2Path, name) }, - AvatarRoleItem{ Role::Person, - Type::Flat, - personFlatPath, - isExistCustomAvatar(personFlatPath, name) }, - AvatarRoleItem{ Role::Animal, - Type::Dimensional, - animalDimensionPath, - isExistCustomAvatar(animalDimensionPath, name) }, - AvatarRoleItem{ Role::Scenery, - Type::Dimensional, - sceneryPath, - isExistCustomAvatar(sceneryPath, name) }, - AvatarRoleItem{ Role::Illustration, - Type::Dimensional, - illustrationDimensionPath, - isExistCustomAvatar(illustrationDimensionPath, name) }, - AvatarRoleItem{ Role::Expression, - Type::Dimensional, - emojiDimensionPath, - isExistCustomAvatar(emojiDimensionPath, name) }, - }; - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->setContentsMargins(0, 0, 0, 0); - - auto addAvatar = [this, mainLayout, user](const AvatarRoleItem &item) { - m_currentAvatarLsv = new AvatarListView(user, item.role, item.type, item.path, this); - m_avatarViewMap[item.type] = m_currentAvatarLsv; - m_currentAvatarLsv->setCurrentAvatarChecked(user->currentAvatar()); - - QHBoxLayout *hBoxLayout = new QHBoxLayout; - hBoxLayout->addWidget(m_currentAvatarLsv, Qt::AlignCenter); - - // 人物头像有两种, 需要添加类型标签 - if (item.role == Role::Person) { - QLabel *dimStyleNameLabel = new QLabel(this); - const QStringList styles { tr("Cartoon Style"), tr("Dimensional Style"), tr("Flat Style")}; - dimStyleNameLabel->setText(styles.value(item.type)); - - QHBoxLayout *nameLabelLayout = new QHBoxLayout; - nameLabelLayout->addSpacing(10); - nameLabelLayout->addWidget(dimStyleNameLabel); - mainLayout->addLayout(nameLabelLayout); - mainLayout->addSpacing(2); - } - - mainLayout->addLayout(hBoxLayout); - - connect(m_currentAvatarLsv, - &AvatarListView::requestUpdateListView, - this, - &AvatarListFrame::updateListView); - }; - - for (const auto &item : items) { - if (item.role == m_role && item.isLoader) { - m_path = item.path; - addAvatar(item); - } - } - - QHBoxLayout *layout = new QHBoxLayout(); - layout->addLayout(mainLayout, Qt::AlignCenter); - - setLayout(layout); - - m_currentAvatarLsv = m_avatarViewMap.value(Type::Dimensional); -} - -QString AvatarListFrame::getAvatarPath() const -{ - return m_currentAvatarLsv->getAvatarPath(); -} - -bool AvatarListFrame::isExistCustomAvatar(const QString &path, const QString &userName) -{ - QDir dir(path); - QStringList filters{ "*.png", "*.jpg", ".jpeg", ".bmp" }; // 设置过滤类型 - dir.setNameFilters(filters); - - QFileInfoList list = dir.entryInfoList(); - - if (m_role != Custom) { - return !list.isEmpty(); - } - - // 自定义账户页面检查是否存在当前用户自定义头像 - auto res = std::find_if(list.cbegin(), list.cend(), [ userName ](const QFileInfo &info)->bool{ - return info.filePath().contains(userName + "-"); - }); - - if (res != list.cend()) { - return true; - } - - return false; -} - -void AvatarListFrame::updateListView(bool isSave, const int &role, const int &type) -{ - Q_UNUSED(isSave); - // 人物头像有两种类型,当有一种类型的item被选中时,取消另外一种类型item的选中状态 - if (role == Role::Person) { - for (auto it = m_avatarViewMap.begin(); it != m_avatarViewMap.end(); ++it) { - if (it.key() == type) { - m_currentAvatarLsv = it.value(); - } else { - it.value()->setCurrentAvatarUnChecked(); - } - } - } -} - -CustomAddAvatarWidget::CustomAddAvatarWidget(User *user, const int &role, QWidget *parent) - : AvatarListFrame(user, role, parent) - , m_addAvatarFrame(new DFrame(this)) - , m_hintLabel(new QLabel(this)) - , m_addAvatarIconSpacer(new QSpacerItem(60, 60)) - , m_isDragIn(false) - , m_isHover(false) - , m_isPress(false) -{ - setAcceptDrops(true); - m_addAvatarFrame->setFixedSize(400, 240); - m_addAvatarFrame->setFrameStyle(QFrame::NoFrame); - m_addAvatarFrame->setAcceptDrops(true); - m_addAvatarFrame->installEventFilter(this); - - m_addAvatarDciIcon = DDciIcon::fromTheme("dcc_user_add_icon"); - - m_hintLabel->setText(tr("You have not uploaded a picture, you can click or drag to upload a picture")); - m_hintLabel->setAlignment(Qt::AlignCenter); - m_hintLabel->setWordWrap(true); - - QVBoxLayout *mainLayout = new QVBoxLayout(this); - mainLayout->setAlignment(Qt::AlignHCenter); - mainLayout->addStretch(); - mainLayout->addWidget(m_addAvatarFrame); - mainLayout->addStretch(); - - QHBoxLayout *iconHLayout = new QHBoxLayout(); - iconHLayout->addStretch(); - iconHLayout->addItem(m_addAvatarIconSpacer); - iconHLayout->addStretch(); - - QVBoxLayout *avatarFrameLayout = new QVBoxLayout(m_addAvatarFrame); - avatarFrameLayout->addStretch(); - avatarFrameLayout->addLayout(iconHLayout); - avatarFrameLayout->addSpacing(20); - avatarFrameLayout->addWidget(m_hintLabel); - avatarFrameLayout->addStretch(); - - installEventFilter(this); -}; - -CustomAddAvatarWidget::~CustomAddAvatarWidget() -{ -} - -void CustomAddAvatarWidget::saveCustomAvatar(const QString &avatar_path) -{ - auto saveFunc = [this](const QString &path) { - QFile file(path); - if (file.open(QIODevice::ReadOnly)) { - QPixmap pix; - pix.loadFromData(file.readAll()); - - if (pix.isNull()) { - // 用户上传的不是图片类型,提醒用户上传的文件类型错误 - m_hintLabel->clear(); - qWarning() << "failed to save file, maybe the file is not picture type"; - QPalette pe; - pe.setColor(QPalette::Base, Qt::white); - m_hintLabel->setPalette(pe); - m_hintLabel->setText(tr("Uploaded file type is incorrect, please upload again")); - - file.close(); - return; - } - - file.close(); - } - - if (!path.isEmpty()) { - Q_EMIT requestUpdateCustomWidget(path); - } - }; - - if (avatar_path.isEmpty()) { - // open file manager to add pic - QStringList directory = QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); - QFileDialog dialog; - dialog.setNameFilter(tr("Images") + "(*.png *.bmp *.jpg *.jpeg)"); - if (!directory.isEmpty()) { - dialog.setDirectory(directory.first()); - } - if (dialog.exec() == QFileDialog::Accepted) { - const QString path = dialog.selectedFiles().first(); - saveFunc(path); - } - } else { - // save file - saveFunc(avatar_path); - } -} - -void CustomAddAvatarWidget::dragEnterEvent(QDragEnterEvent *event) -{ - event->accept(m_addAvatarFrame->geometry()); - m_isDragIn = true; - update(); - - - QWidget::dragEnterEvent(event); -} - -void CustomAddAvatarWidget::dragLeaveEvent(QDragLeaveEvent *event) -{ - m_isDragIn = false; - update(); - - QWidget::dragLeaveEvent(event); -} - -void CustomAddAvatarWidget::dropEvent(QDropEvent *event) -{ - auto file = event->mimeData()->urls().first().toLocalFile(); - - saveCustomAvatar(file); - repaint(); -} - -void CustomAddAvatarWidget::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event) - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing); - QPen pen; - QColor backColor = Qt::transparent; - if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - if (m_isPress || m_isDragIn) { - backColor = QColor(0, 129, 255, 0.1 * 255); - } else if (m_isHover) { - backColor = QColor(0, 129, 255, 0.05 * 255); - } else { - backColor = Qt::transparent; - } - pen.setColor(QColor(0, 0, 0, 0.2 * 255)); - } else { - if (m_isPress || m_isDragIn) { - backColor = QColor(255, 255, 255, 0.1 * 255); - } else if (m_isHover) { - backColor = QColor(255, 255, 255, 0.05 * 255); - } else { - backColor = Qt::transparent; - } - pen.setColor(QColor(255, 255, 255, 255 * 0.2)); - } - - pen.setWidth(2); - pen.setStyle(Qt::DashLine); - painter.setPen(pen); - QPainterPath path; - path.addRoundedRect(m_addAvatarFrame->geometry(), WINDOW_ROUND_SIZE, WINDOW_ROUND_SIZE); - painter.fillPath(path, backColor); - painter.drawPath(path); - QRect iconRect = - {m_addAvatarFrame->mapToParent(m_addAvatarIconSpacer->geometry().topLeft()), m_addAvatarIconSpacer->geometry().size()}; - m_addAvatarDciIcon.paint(&painter, iconRect, qApp->devicePixelRatio(), DDciIcon::Light, DDciIcon::Normal, - Qt::AlignCenter, DDciIconPalette::fromQPalette(palette())); -} - -bool CustomAddAvatarWidget::eventFilter(QObject *object, QEvent *event) -{ - if (object == m_addAvatarFrame) { - if (event->type() == QEvent::Enter) { - m_isHover = true; - } else if (event->type() == QEvent::Leave) { - m_isHover = false; - m_isPress = false; - } else if (event->type() == QEvent::MouseButtonPress) { - m_isPress = true; - } else if (event->type() == QEvent::MouseButtonRelease) { - m_isPress = false; - saveCustomAvatar(QString()); - } else { - return false; - } - - update(); - return true; - } - - return false; -} - -CustomAvatarView::CustomAvatarView(QWidget *parent) - : QWidget(parent) - , m_autoExitTimer(new QTimer(this)) - , m_cropBox(new AvatarCropBox(this)) -{ - setFixedSize(BORDER_BOX_SIZE, BORDER_BOX_SIZE); - - m_autoExitTimer->setInterval(1000); - m_autoExitTimer->setSingleShot(true); - connect(m_autoExitTimer, &QTimer::timeout, this, [this]() { - // 当用户退出图片修改后,1s内不再编辑,恢复背景 - m_cropBox->setBackgroundColor(palette().color(QPalette::Window)); - auto path = getCroppedImage(); - m_autoExitTimer->stop(); - - if (!path.isEmpty()) { - Q_EMIT requestSaveCustomAvatar(path); - } - }); - - QVBoxLayout *layout = new QVBoxLayout; - layout->setContentsMargins(0, 0, 0, 0); - layout->addWidget(m_cropBox); - setLayout(layout); -} - -QString CustomAvatarView::getCroppedImage() -{ - auto screen = qApp->primaryScreen(); - auto offset = (BORDER_BOX_SIZE - CROP_BOX_SIZE) / 2; - QPoint pos = mapToGlobal(QPoint(offset, offset)); - QRect rect(pos.x(), pos.y(), CROP_BOX_SIZE, CROP_BOX_SIZE); - - QFileInfo customAvatarPath(m_path); - const QString tempPath = QString("%1/%2").arg(QDir::tempPath()).arg(customAvatarPath.fileName()); - - // 修改后的头像直接覆盖之前的头像 - bool ret = - screen->grabWindow(0, rect.x(), rect.y(), rect.width(), rect.height()).save(tempPath); - if (!ret) { - qWarning() << "failed to save crop image"; - return QString(); - } - - return tempPath; -} - -void CustomAvatarView::setAvatarPath(const QString &avatarPath) -{ - m_path = avatarPath; - auto isValid = !avatarPath.isEmpty(); - m_image = isValid ? m_image : QImage(); - - if (isValid) { - m_image.load(m_path); - } - - onPresetImage(); - Q_EMIT enableAvatarScaledItem(isValid); - update(); -} - -CustomAvatarView::~CustomAvatarView() -{ - if (m_autoExitTimer) { - m_autoExitTimer->stop(); - m_autoExitTimer->deleteLater(); - m_autoExitTimer = nullptr; - } -} - -void CustomAvatarView::paintEvent(QPaintEvent *event) -{ - // 绘制样式 - QStyleOption opt; - opt.init(this); - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing, true); - painter.setRenderHint(QPainter::SmoothPixmapTransform, true); - style()->drawPrimitive(QStyle::PE_Widget, &opt, &painter, this); - - if (m_image.isNull()) { - painter.setBrush(QBrush(QColor("#e4e4e4"))); - painter.setPen(QColor("#e4e4e4")); - painter.drawRoundedRect(QRect(35, 35, CROP_BOX_SIZE, CROP_BOX_SIZE), - WINDOW_ROUND_SIZE, - WINDOW_ROUND_SIZE); - return QWidget::paintEvent(event); - } - - // 平移 - painter.translate(this->width() / 2.0 + m_xPtInterval, this->height() / 2.0 + m_yPtInterval); - - // 缩放 - painter.scale(m_zoomValue, m_zoomValue); - - // 绘制图像 - QRect picRect(-AVATAR_ICON_SIZE / 2, -AVATAR_ICON_SIZE / 2, AVATAR_ICON_SIZE, AVATAR_ICON_SIZE); - painter.drawImage(picRect, m_image); -} - -void CustomAvatarView::mousePressEvent(QMouseEvent *event) -{ - if (m_image.isNull()) { - return event->ignore(); - } - - m_OldPos = event->pos(); - startAvatarModify(); -} - -void CustomAvatarView::mouseMoveEvent(QMouseEvent *event) -{ - if (!m_Pressed) - return QWidget::mouseMoveEvent(event); - - this->setCursor(Qt::SizeAllCursor); - QPoint pos = event->pos(); - - int xPtInterval = pos.x() - m_OldPos.x(); - int yPtInterval = pos.y() - m_OldPos.y(); - - m_OldPos = pos; - - // 限制图片移动区域,超出移动范围不移动 - m_offset = (AVATAR_ICON_SIZE * m_zoomValue - CROP_BOX_SIZE) / 2; - if ((m_xPtInterval >= m_offset && xPtInterval > 0) - || (m_xPtInterval <= -m_offset && xPtInterval < 0) - || (m_yPtInterval >= m_offset && yPtInterval > 0) - || (m_yPtInterval <= -m_offset && yPtInterval < 0)) { - return this->update(); - } - - m_xPtInterval += xPtInterval; - m_yPtInterval += yPtInterval; - - this->update(); -} - -void CustomAvatarView::mouseReleaseEvent(QMouseEvent *event) -{ - Q_UNUSED(event) - endAvatarModify(); - this->setCursor(Qt::ArrowCursor); -} - -void CustomAvatarView::startAvatarModify() -{ - m_Pressed = true; - m_cropBox->setBackgroundColor(QColor(0, 0, 0, 100)); - - if (m_autoExitTimer->isActive()) { - m_autoExitTimer->stop(); - } -} - -void CustomAvatarView::endAvatarModify() -{ - m_Pressed = false; - if (!m_autoExitTimer->isActive()) { - m_autoExitTimer->start(); - } -} - -void CustomAvatarView::stopAutoExitTimer() -{ - m_autoExitTimer->stop(); -} - -void CustomAvatarView::onZoomInImage(void) -{ - m_zoomValue += 0.2; - this->update(); -} - -void CustomAvatarView::setZoomValue(const int value) -{ - if (m_image.isNull()) { - return; - } - - if (value > m_currentScaledValue) - onZoomInImage(); - else - onZoomOutImage(); - - m_currentScaledValue = value; - - this->update(); -} - -void CustomAvatarView::onZoomOutImage(void) -{ - // 限制图片缩放区域,超出缩放范围不缩放 - m_offset = (AVATAR_ICON_SIZE * m_zoomValue - CROP_BOX_SIZE) / 2; - if (m_zoomValue <= 1.0 || m_offset == CROP_BOX_SIZE / 2) { - return; - } - - m_zoomValue -= 0.2; - - this->update(); -} - -// 还原图片大小 -void CustomAvatarView::onPresetImage(void) -{ - m_cropBox->setBackgroundColor(palette().color(QPalette::Window)); - m_zoomValue = 1.0; - m_xPtInterval = 0; - m_yPtInterval = 0; - this->update(); -} - -CustomAvatarWidget::CustomAvatarWidget(User *user, const int &role, QWidget *parent) - : AvatarListFrame(user, role, parent) - , m_avatarScaledItem(new DSlider(Qt::Horizontal, this)) - , m_avatarView(new CustomAvatarView(this)) -{ - QVBoxLayout *mainLayout = new QVBoxLayout(); - mainLayout->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter); - mainLayout->setContentsMargins(10, 2, 10, 2); - - m_avatarScaledItem->setEnabled(false); - m_avatarScaledItem->setMinimum(SLIDER_MINIMUM_SIZE); - m_avatarScaledItem->setMaximum(SLIDER_MAX_SIZE); - m_avatarScaledItem->setPageStep(SLIDER_STEP); - - QHBoxLayout *iconLabelLayout = new QHBoxLayout(); - iconLabelLayout->addWidget(m_avatarView); - QHBoxLayout *scaledItemLayout = new QHBoxLayout(); - m_avatarScaledItem->setFixedWidth(150); - scaledItemLayout->addWidget(m_avatarScaledItem); - mainLayout->addLayout(iconLabelLayout); - mainLayout->addLayout(scaledItemLayout); - - QHBoxLayout *avatarLayout = new QHBoxLayout(); - avatarLayout->addWidget(getCurrentListView(), Qt::AlignCenter); - mainLayout->addLayout(avatarLayout); - - connect(m_avatarScaledItem, &DSlider::valueChanged, m_avatarView, [this](int value) { - m_avatarView->setZoomValue(value); - }); - connect(m_avatarScaledItem, &DSlider::sliderPressed, m_avatarView, [this] { - m_avatarView->startAvatarModify(); - }); - connect(m_avatarScaledItem, &DSlider::sliderReleased, m_avatarView, [this] { - m_avatarView->endAvatarModify(); - }); - connect(m_avatarView, - &CustomAvatarView::enableAvatarScaledItem, - this, - &CustomAvatarWidget::enableAvatarScaledItem); - - setLayout(mainLayout); -} - -void CustomAvatarWidget::enableAvatarScaledItem(bool enabled) -{ - m_avatarScaledItem->setEnabled(enabled); - m_avatarScaledItem->setValue(SLIDER_MINIMUM_SIZE); -} - -void CustomAvatarWidget::stopAvatarModify() -{ - m_avatarView->stopAutoExitTimer(); -} diff --git a/dcc-old/src/plugin-accounts/window/avatarlistframe.h b/dcc-old/src/plugin-accounts/window/avatarlistframe.h deleted file mode 100644 index 5183325260..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarlistframe.h +++ /dev/null @@ -1,172 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "avatarlistview.h" -#include "interface/namespace.h" -#include "widgets/accessibleinterface.h" - -#include - -#include -#include - -DWIDGET_BEGIN_NAMESPACE -class DSlider; -DWIDGET_END_NAMESPACE - -QT_BEGIN_NAMESPACE -class QLabel; -class QPoint; -class QColor; -class QTimer; -class QFileDialog; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class AvatarCropBox; -class AvatarListView; - -class AvatarListFrame : public QFrame -{ - Q_OBJECT -public: - struct AvatarRoleItem - { - int role; - int type; - QString path; - bool isLoader; - - AvatarRoleItem(const int &_role, - const int &_type, - const QString &_path, - const bool &_isLoader) - : role(_role) - , type(_type) - , path(_path) - , isLoader(_isLoader) - { - } - }; - - explicit AvatarListFrame(User * user, const int &role, QWidget *parent = nullptr); - virtual ~AvatarListFrame() = default; - - inline int getCurrentRole() { return m_role; } - inline QString getCurrentPath() { return m_path; } - inline AvatarListView *getCurrentListView() { return m_currentAvatarLsv; } - - QString getAvatarPath() const; - - bool isExistCustomAvatar(const QString &path, const QString &userName); - -public Q_SLOTS: - void updateListView(bool isSave, const int &role, const int &type); - -private: - QString getCurrentAvatarPath(const int role, const int type); - -private: - int m_role; - QString m_path; - QMap m_avatarViewMap; - AvatarListView *m_currentAvatarLsv; -}; - -class CustomAddAvatarWidget : public AvatarListFrame -{ - Q_OBJECT -public: - explicit CustomAddAvatarWidget(User *user, const int &role, QWidget *parent = nullptr); - virtual ~CustomAddAvatarWidget(); - -protected: - void dragEnterEvent(QDragEnterEvent *event) override; - void dragLeaveEvent(QDragLeaveEvent *event) override; - void dropEvent(QDropEvent *event) override; - bool eventFilter(QObject *object, QEvent *event) override; - void paintEvent(QPaintEvent *event) override; - -Q_SIGNALS: - void requestUpdateCustomWidget(const QString &path); - -private: - void saveCustomAvatar(const QString &path); - -private: - Dtk::Widget::DFrame *m_addAvatarFrame; - QLabel *m_hintLabel; - QSpacerItem *m_addAvatarIconSpacer; - Dtk::Gui::DDciIcon m_addAvatarDciIcon; - bool m_isDragIn; - bool m_isHover; - bool m_isPress; -}; - -class CustomAvatarView : public QWidget -{ - Q_OBJECT - -public: - explicit CustomAvatarView(QWidget *parent = nullptr); - ~CustomAvatarView(); - - void setAvatarPath(const QString &avatarPath); - -protected: - void paintEvent(QPaintEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - -Q_SIGNALS: - void enableAvatarScaledItem(const bool enabled); - void requestSaveCustomAvatar(const QString &path); - -public Q_SLOTS: - void startAvatarModify(); - void endAvatarModify(); - void stopAutoExitTimer(); - void setZoomValue(const int value); - QString getCroppedImage(); - -private: - int m_xPtInterval = 0; - int m_yPtInterval = 0; - int m_offset = 0; - int m_currentScaledValue = 0; - bool m_Pressed = false; - QTimer *m_autoExitTimer; - QImage m_image; - AvatarCropBox *m_cropBox; - qreal m_zoomValue = 1.0; - QPoint m_OldPos; - QString m_path; - -private slots: - void onZoomInImage(void); - void onZoomOutImage(void); - void onPresetImage(void); -}; - -class CustomAvatarWidget : public AvatarListFrame -{ - Q_OBJECT -public: - explicit CustomAvatarWidget(User *user, const int &role, QWidget *parent = nullptr); - ~CustomAvatarWidget() override = default; - - void enableAvatarScaledItem(bool enabled); - void stopAvatarModify(); - - inline CustomAvatarView *getCustomAvatarView() { return m_avatarView; } - -private: - Dtk::Widget::DSlider *m_avatarScaledItem; - CustomAvatarView *m_avatarView; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-accounts/window/avatarlistview.cpp b/dcc-old/src/plugin-accounts/window/avatarlistview.cpp deleted file mode 100644 index 012c3bbeef..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarlistview.cpp +++ /dev/null @@ -1,428 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "avatarlistview.h" - -#include "avataritemdelegate.h" -#include "widgets/accessibleinterface.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -const QString VarDirectory = QStringLiteral(VARDIRECTORY); -const QString DefaultAvatar = - QStringLiteral("lib/AccountsService/icons/animal/dimensional/raccoon.png"); - -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -AvatarListView::AvatarListView( - User *user, const int &role, const int &type, const QString &path, QWidget *parent) - : DListView(parent) - , m_currentAvatarRole(role) - , m_currentAvatarType(type) - , m_path(path) - , m_avatarItemModel(new QStandardItemModel(this)) - , m_avatarItemDelegate(new AvatarItemDelegate(m_currentAvatarRole == Custom, this)) - , m_avatarSize(QSize(80, 80)) - , m_curUser(user) - , m_dconfig(DConfig::create("org.deepin.dde.control-center", - QStringLiteral("org.deepin.dde.control-center.accounts"), - QString(), - this)) -{ - initWidgets(); - installEventFilter(this); - connect(this, &DListView::clicked, this, [this](const QModelIndex &index) { - m_save = false; - onItemClicked(index); - }); -} - -AvatarListView::~AvatarListView() -{ - - if (m_avatarItemModel) { - m_avatarItemModel->clear(); - m_avatarItemModel->deleteLater(); - m_avatarItemModel = nullptr; - } - if (m_avatarItemDelegate) { - m_avatarItemDelegate->deleteLater(); - m_avatarItemDelegate = nullptr; - } -} - -void AvatarListView::updateGeometries() -{ - DListView::updateGeometries(); - if (model()->rowCount() == 0) { - return; - } - QRect r = rectForIndex(model()->index(model()->rowCount() - 1, 0)); - QMargins margins = viewportMargins(); - setFixedHeight(r.y() + r.height() + margins.top() + margins.bottom() + 1); -} - -bool AvatarListView::eventFilter(QObject *object, QEvent *event) -{ - if (event->type() != QEvent::KeyPress) { - return QObject::eventFilter(object, event); - } - QKeyEvent *keyevent = static_cast(event); - if (keyevent->key() != Qt::Key_Tab) { - return QObject::eventFilter(object, event); - } - bool is_back_select = keyevent->modifiers() == Qt::Modifier::CTRL; - int count = m_avatarItemModel->rowCount(); - int current_index = m_currentSelectIndex.row(); - int next_index = 0; - if (is_back_select) { - if (current_index == 0) { - next_index = count - 1; - } else { - next_index = current_index - 1; - } - } else { - if (current_index == count - 1) { - next_index = 0; - } else { - next_index = current_index + 1; - } - } - - if (m_currentSelectIndex.isValid()) { - m_avatarItemModel->item(m_currentSelectIndex.row())->setCheckState(Qt::Unchecked); - } - m_currentSelectIndex = m_avatarItemModel->index(next_index, 0); - const QString filePath = m_currentSelectIndex.data(SaveAvatarRole).toString(); - m_avatarItemModel->item(m_currentSelectIndex.row())->setCheckState(Qt::Checked); - m_avatarItemModel->item(m_currentSelectIndex.row()) - ->setData(QVariant::fromValue(filePath), AvatarListView::SaveAvatarRole); - Q_EMIT requestUpdateListView(m_save, m_currentAvatarRole, m_currentAvatarType); - - return true; -} - -void AvatarListView::initWidgets() -{ - setViewMode(ViewMode::IconMode); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - setContentsMargins(0, 0, 0, 0); - setSpacing(2); - setItemAlignment(Qt::AlignTop); - setEditTriggers(QAbstractItemView::NoEditTriggers); - setDragDropMode(QAbstractItemView::NoDragDrop); - setDragEnabled(false); - setResizeMode(DListView::Adjust); - setFrameShape(QFrame::NoFrame); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - setItemDelegate(m_avatarItemDelegate); - setModel(m_avatarItemModel); - - addItemFromDefaultDir(m_path); -} - -void AvatarListView::addLastItem() -{ - DStandardItem *item = new DStandardItem(); - item->setAccessibleText("LastItem"); - item->setData(m_avatarSize, Qt::SizeHintRole); - item->setData("", AvatarListView::SaveAvatarRole); - item->setData(true, AvatarListView::AddAvatarRole); - m_avatarItemModel->appendRow(item); -} - -QStandardItem *AvatarListView::getCustomAvatar() -{ - // 用户编辑修改的头像直接替换原来的头像 - if (m_updateItem) { - return m_avatarItemModel->item(m_currentSelectIndex.row()); - } - - QStandardItem *item = new QStandardItem; - // 默认项MaxAvatarSize个,添加项一个 - if (m_currentSelectIndex.isValid()) - m_avatarItemModel->item(m_currentSelectIndex.row())->setCheckState(Qt::Unchecked); - m_avatarItemModel->insertRow(1, item); - return item; -} - -void AvatarListView::addItemFromDefaultDir(const QString &path) -{ - auto avatarPath = path; - - QDir dir(avatarPath); - QStringList hideList; - hideList << "default.png" - << "guest.png"; - QStringList filters; - filters << "*.png" - << "*.jpg" - << "*.jpeg"; // 设置过滤类型 - dir.setNameFilters(filters); // 设置文件名的过滤 - QFileInfoList list = dir.entryInfoList(); - - // 根据文件名进行排序 - std::sort(list.begin(), list.end(), [](const QFileInfo &fileinfo1, const QFileInfo &fileinfo2) { - return fileinfo1.baseName() < fileinfo2.baseName(); - }); - - const auto &name = m_curUser->name(); - // 当前用户有自定义用户头像时, 需要添加用户添加按钮, 否则不需要添加 - if (m_currentAvatarRole == Custom) { - auto res = std::find_if(list.cbegin(), list.cend(), [name](const QFileInfo &info) -> bool { - return info.filePath().contains(name + "-"); - }); - - if (res != list.cend()) { - addLastItem(); - } - } - - for (int i = 0; i < list.size(); ++i) { - if (hideList.contains(list.at(i).fileName())) { - continue; - } - - QString iconPath = list.at(i).filePath(); - - if (m_currentAvatarRole == Custom) { - // 过滤掉非当前用户自定义头像 - if (!iconPath.contains(name + "-")) { - continue; - } - } - - DStandardItem *item = new DStandardItem(); - item->setBackgroundRole(QPalette::ColorRole::Highlight); - item->setAccessibleText(iconPath); - auto ratio = devicePixelRatioF(); - - auto pxPath = iconPath; - auto px = QPixmap(pxPath).scaled(QSize(74, 74) * ratio, - Qt::KeepAspectRatio, - Qt::FastTransformation); - px.setDevicePixelRatio(ratio); - - item->setData(QVariant::fromValue(px), Qt::DecorationRole); - item->setData(QVariant::fromValue(iconPath), AvatarListView::SaveAvatarRole); - item->setData(m_avatarSize, Qt::SizeHintRole); - m_avatarItemModel->appendRow(item); - } -} - -void AvatarListView::setCurrentAvatarUnChecked() -{ - if (m_currentSelectIndex.isValid()) { - m_avatarItemModel->setData(m_currentSelectIndex, Qt::Unchecked, Qt::CheckStateRole); - } -} - -void AvatarListView::requestAddCustomAvatar(const QString &path) -{ - addLastItem(); - addCustomAvatar(path); -} - -void AvatarListView::requestUpdateCustomAvatar(const QString &path) -{ - if (m_currentAvatarRole != Custom) { - return; - } - - m_avatarItemModel->item(m_currentSelectIndex.row()) - ->setData(QVariant::fromValue(QUrl(path).toLocalFile()), - AvatarListView::SaveAvatarRole); -} - -void AvatarListView::addCustomAvatar(const QString &path) -{ - m_save = true; - - QStandardItem *item = getCustomAvatar(); - item->setAccessibleText(path); - auto ratio = devicePixelRatioF(); - auto px = QPixmap(path).scaled(QSize(74, 74) * ratio, - Qt::KeepAspectRatio, - Qt::FastTransformation); - px.setDevicePixelRatio(ratio); - - item->setData(QVariant::fromValue(px), Qt::DecorationRole); - item->setData(QVariant::fromValue(path), AvatarListView::SaveAvatarRole); - item->setData(m_avatarSize, Qt::SizeHintRole); - - if (m_updateItem) { - onItemClicked(m_avatarItemModel->index(m_currentSelectIndex.row(), 0)); - m_updateItem = false; - } else { - onItemClicked(m_avatarItemModel->index(1, 0)); - } -} - -bool AvatarListView::checkIsToDeleteAvatar(const QModelIndex &index) -{ - if (m_currentAvatarRole != Custom) { - return false; - } - if (index.row() == 0) { - return false; - } - auto pos = mapFromGlobal(QCursor::pos()); - auto rect = visualRect(index); - auto rectTopRight = rect.topRight(); - QRect closeBtnRegion = - QRect{ rectTopRight.x() - 16, rectTopRight.y(), 16, 16 }; - if (closeBtnRegion.contains(pos)) { - return true; - } - return false; -} - -void AvatarListView::onItemClicked(const QModelIndex &index) -{ - // NOTE: as design, the last one should not bbe deleted - if (checkIsToDeleteAvatar(index) && m_avatarItemModel->rowCount() > 2) { - QString iconPath = index.data(AvatarListView::SaveAvatarRole).toString(); - Q_EMIT requestDeleteUserIcon(iconPath); - m_avatarItemModel->removeRow(index.row()); - if (m_avatarItemModel->rowCount() >= 1) { - m_currentSelectIndex = m_avatarItemModel->index(1, 0); - } else { - m_currentSelectIndex = m_avatarItemModel->index(-1, 0); - } - - for (int i = 1; i < m_avatarItemModel->rowCount(); ++i) { - auto currentItem = m_avatarItemModel->item(i); - if (currentItem->index() == m_currentSelectIndex) { - currentItem->setCheckState(Qt::Checked); - } else { - currentItem->setCheckState(Qt::Unchecked); - } - } - - return; - } - // check if is x button, if is x button, then delete the model, and request to remove the icon - if (index.data(Qt::CheckStateRole) == Qt::Checked) - return; - const QString filePath = index.data(SaveAvatarRole).toString(); - if (filePath.isEmpty()) { - QFileDialog dialog; - dialog.setNameFilter(tr("Images") + "(*.png *.bmp *.jpg *.jpeg)"); - QString dir = m_dconfig->value("avatarPath").toString(); - if (dir.isEmpty() || !QDir(dir).exists()) { - QStringList directory = - QStandardPaths::standardLocations(QStandardPaths::PicturesLocation); - if (!directory.isEmpty()) { - dialog.setDirectory(directory.first()); - } - } else { - dialog.setDirectory(dir); - } - if (dialog.exec() == QFileDialog::Accepted) { - const QString path = dialog.selectedFiles().first(); - QFileInfo info(path); - - m_dconfig->setValue("avatarPath", info.absolutePath()); - - int row = -1; - for (int i = 1; i < m_avatarItemModel->rowCount(); ++i) { - if (path == m_avatarItemModel->index(i, 0).data(AvatarListView::SaveAvatarRole)) { - row = i; - break; - } - } - - if (row == -1) { - return addCustomAvatar(path); - } - - onItemClicked(m_avatarItemModel->index(row, 0)); - } - } else { - if (m_currentSelectIndex.isValid()) - m_avatarItemModel->item(m_currentSelectIndex.row())->setCheckState(Qt::Unchecked); - - m_currentSelectIndex = index; - m_avatarItemModel->item(m_currentSelectIndex.row())->setCheckState(Qt::Checked); - m_avatarItemModel->item(m_currentSelectIndex.row()) - ->setData(QVariant::fromValue(filePath), AvatarListView::SaveAvatarRole); - Q_EMIT requestUpdateListView(m_save, m_currentAvatarRole, m_currentAvatarType); - m_save = false; - } -} - -void AvatarListView::saveAvatar(const QString &path) -{ - m_updateItem = true; - - addCustomAvatar(path); -} - -QString AvatarListView::getAvatarPath() const -{ - if (!m_currentSelectIndex.isValid()) - return QString(); - - auto index = m_currentSelectIndex.row(); - auto idx = m_avatarItemModel->index(index, 0); - return m_avatarItemModel->data(idx, SaveAvatarRole).toString(); -} - -void AvatarListView::setCurrentAvatarChecked(const QString &avatar) -{ - if (avatar.isEmpty()) - return; - - QString currentAvatar = avatar; - const QString urlPre = "file://"; - // 如果是默认的头像, 需要将路径换成实际的路径 - if (currentAvatar.contains("default")) { - const auto defaultAvatar = - QString("%1%2/%3").arg(urlPre).arg(VarDirectory).arg(DefaultAvatar); - currentAvatar = defaultAvatar; - } - - if (currentAvatar.startsWith(urlPre)) - currentAvatar = QUrl(currentAvatar).toLocalFile(); - - if (!QFile(currentAvatar).exists()) - return; - - if (currentAvatar.isEmpty()) - return; - - for (int i = 0; i < m_avatarItemModel->rowCount(); ++i) { - QString itemAvatar = m_avatarItemModel->index(i, 0) - .data(AvatarListView::SaveAvatarRole) - .value(); - if (currentAvatar != itemAvatar) - continue; - - if (m_currentSelectIndex.isValid()) { - m_avatarItemModel->setData(m_currentSelectIndex, Qt::Unchecked, Qt::CheckStateRole); - } - m_avatarItemModel->item(i)->setCheckState(Qt::Checked); - m_currentSelectIndex = m_avatarItemModel->index(i, 0); - break; - } -} diff --git a/dcc-old/src/plugin-accounts/window/avatarlistview.h b/dcc-old/src/plugin-accounts/window/avatarlistview.h deleted file mode 100644 index 59e7aba132..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarlistview.h +++ /dev/null @@ -1,102 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef AVATARLISVIEW_H -#define AVATARLISVIEW_H - -#include "interface/namespace.h" -#include "src/plugin-accounts/operation/user.h" - -#include - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QLabel; -class QListView; -class QStandardItemModel; -class QModelIndex; -class QFileDialog; -QT_END_NAMESPACE - -DCORE_BEGIN_NAMESPACE -class DConfig; -DCORE_END_NAMESPACE - -namespace DCC_NAMESPACE { -class AvatarItemDelegate; - -enum Role { Person, Animal, Scenery, Illustration, Expression, Custom, AvatarAdd }; - -enum Type { - Cartoon, // 卡通风格 - Dimensional, // 立体风格 - Flat // 平面风格 -}; - -class AvatarListView : public DTK_WIDGET_NAMESPACE::DListView -{ - Q_OBJECT -public: - enum ItemRole { - AddAvatarRole = Dtk::UserRole + 1, - SaveAvatarRole, - }; - -public: - AvatarListView(User *user, const int &role, - const int &type, - const QString &path, - QWidget *parent = nullptr); - virtual ~AvatarListView(); - - inline int getCurrentListViewRole() const { return m_currentAvatarRole; } - inline int getCurrentListViewType() const { return m_currentAvatarType; } - inline QSize avatarSize() const { return m_avatarSize; } - - void addCustomAvatar(const QString &path); - void addLastItem(); - void saveAvatar(const QString &path); - void addItemFromDefaultDir(const QString &path); - - QString getAvatarPath() const; - -Q_SIGNALS: - void requestUpdateListView(bool isSave, const int &role, const int &type); - void requestDeleteUserIcon(const QString &iconPath); - -public Q_SLOTS: - void setCurrentAvatarChecked(const QString &avatar); - void setCurrentAvatarUnChecked(); - void requestAddCustomAvatar(const QString &path); - void requestUpdateCustomAvatar(const QString &path); - -protected: - void updateGeometries() override; - bool eventFilter(QObject *obj, QEvent *event) override; - -private: - void initWidgets(); - QStandardItem *getCustomAvatar(); - bool checkIsToDeleteAvatar(const QModelIndex &index); - -private Q_SLOTS: - void onItemClicked(const QModelIndex &index); - -private: - bool m_updateItem = false; - bool m_save = false; - int m_currentAvatarRole; - int m_currentAvatarType; - QString m_path; - QStandardItemModel *m_avatarItemModel; - AvatarItemDelegate *m_avatarItemDelegate; - QSize m_avatarSize; - QModelIndex m_currentSelectIndex; - User *m_curUser; - DTK_CORE_NAMESPACE::DConfig *m_dconfig; -}; -} // namespace DCC_NAMESPACE - -#endif // AVATARLISVIEW_H diff --git a/dcc-old/src/plugin-accounts/window/avatarlistwidget.cpp b/dcc-old/src/plugin-accounts/window/avatarlistwidget.cpp deleted file mode 100644 index f2e0446174..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarlistwidget.cpp +++ /dev/null @@ -1,298 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "avatarlistwidget.h" - -#include "src/plugin-accounts/operation/user.h" -#include "widgets/buttontuple.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -static QScrollArea *get_new_scrollarea(QWidget *parent) -{ - QScrollArea *avatarArea = new QScrollArea(parent); - avatarArea->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - avatarArea->setWidgetResizable(true); - avatarArea->setFrameShape(QFrame::NoFrame); - return avatarArea; -} - -AvatarListDialog::AvatarListDialog(User *usr, AccountsWorker *worker, QWidget *parent) - : Dtk::Widget::DAbstractDialog(parent) - , m_worker(worker) - , m_curUser(usr) - , m_mainContentLayout(new QHBoxLayout) - , m_leftContentLayout(new QVBoxLayout) - , m_rightContentLayout(new QVBoxLayout) - , m_avatarSelectItem(new DListView(this)) - , m_avatarSelectItemModel(new QStandardItemModel(this)) - , m_path(std::nullopt) -{ - m_mainContentLayout->setContentsMargins(0, 0, 0, 0); - m_rightContentLayout->setContentsMargins(0, 0, 0, 0); - - // 窗口Icon - QLabel *iconLabel = new QLabel(this); - iconLabel->setPixmap(qApp->windowIcon().pixmap(QSize(40, 40))); - - // 窗口关闭按钮 - auto closeBtn = new DDialogCloseButton(this); - closeBtn->setIcon(DStyle().standardIcon(DStyle::SP_DialogCloseButton)); - closeBtn->setIconSize(QSize(30, 30)); - QHBoxLayout *closeBtnLayout = new QHBoxLayout; - closeBtnLayout->setContentsMargins(0, 0, 0, 10); - closeBtnLayout->addStretch(); - closeBtnLayout->addWidget(closeBtn); - - connect(closeBtn, &QPushButton::clicked, this, &QDialog::reject); - - m_rightContentLayout->addLayout(closeBtnLayout); - - QList items = { - AvatarItem(tr("Person"), "dcc_user_human", Role::Person, true), - AvatarItem(tr("Animal"), "dcc_user_animal", Role::Animal, true), - AvatarItem(tr("Scenery"), "dcc_user_scenery", Role::Scenery, true), - AvatarItem(tr("Illustration"), "dcc_user_funny", Role::Illustration, true), - AvatarItem(tr("Expression"), "dcc_user_emoji", Role::Expression, true), - AvatarItem(tr("Custom Picture"), "dcc_user_custom", Role::Custom, true), - }; - - for (const auto &item : items) { - if (item.isLoader) { - DStandardItem *avatarItem = new DStandardItem(item.name); - avatarItem->setFontSize(DFontSizeManager::SizeType::T5); - avatarItem->setIcon(DIconTheme::findQIcon(item.icon)); - avatarItem->setData(item.role, AvatarItemNameRole); - m_avatarSelectItemModel->appendRow(avatarItem); - - if (item.role == Role::Custom) { - m_avatarFrames[AvatarAdd] = - new CustomAddAvatarWidget(m_curUser, Role::Custom, this); - m_avatarFrames[Role::Custom] = - new CustomAvatarWidget(m_curUser, Role::Custom, this); - } else { - m_avatarFrames[item.role] = new AvatarListFrame(m_curUser, item.role, this); - } - } - } - - // 添加选择Item - m_avatarSelectItem->setModel(m_avatarSelectItemModel); - m_avatarSelectItem->setIconSize(QSize{ 16, 16 }); - m_avatarSelectItem->setAccessibleName("List_AvatarSelect"); - m_avatarSelectItem->setFrameShape(QFrame::NoFrame); - m_avatarSelectItem->setItemSpacing(2); - m_avatarSelectItem->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_avatarSelectItem->setEditTriggers(QAbstractItemView::NoEditTriggers); - m_avatarSelectItem->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - m_leftContentLayout->setContentsMargins(10, 0, 0, 0); - m_leftContentLayout->addWidget(iconLabel); - m_leftContentLayout->addSpacing(12); - m_leftContentLayout->addWidget(m_avatarSelectItem); - - QHBoxLayout *hLayout = new QHBoxLayout(); - hLayout->setContentsMargins(0, 10, 0, 10); - hLayout->addLayout(m_leftContentLayout); - - QFrame *avarSelectWidget = new QFrame(this); - avarSelectWidget->setFixedSize(180, 472); - avarSelectWidget->setLayout(hLayout); - - m_mainContentLayout->addWidget(avarSelectWidget); - - QStackedWidget *avatarSelectWidget = new QStackedWidget(this); - avatarSelectWidget->setFixedWidth(450); - - for (const auto &frame : m_avatarFrames) { - auto scrolllarea = get_new_scrollarea(this); - scrolllarea->setWidget(frame); - avatarSelectWidget->addWidget(scrolllarea); - - auto listView = frame->getCurrentListView(); - if (!listView || listView->getCurrentListViewRole() == Role::AvatarAdd) { - continue; - } - connect(listView, - &AvatarListView::requestUpdateListView, - this, - &AvatarListDialog::handleListViewRequestUpdate); - if (listView->getCurrentListViewRole() == Role::Custom) { - connect(listView, - &AvatarListView::requestDeleteUserIcon, - this, - &AvatarListDialog::handleRequestDeleteIcon); - } - } - - m_currentSelectAvatarWidget = m_avatarFrames[Person]; - - connect(m_avatarSelectItem, &DListView::clicked, this, [this, avatarSelectWidget](auto &index) { - // 如果没有添加自定义头像, 显示自定义添加图像页面 - if (!m_avatarFrames[Custom]->isExistCustomAvatar(m_avatarFrames[Custom]->getCurrentPath(), - m_curUser->name())) { - if (index.row() == Custom) { - avatarSelectWidget->setCurrentIndex(index.row() + 1); - m_currentSelectAvatarWidget = m_avatarFrames[Custom]; - - return; - } - } - - // 切换到自定义头像界面, 更新用户头像编辑页面 - if (index.row() == Custom) { - getCustomAvatarWidget()->getCustomAvatarView()->setAvatarPath( - m_avatarFrames[Custom]->getCurrentListView()->getAvatarPath()); - } - - if (auto customFrame = qobject_cast(m_avatarFrames[Custom])) { - customFrame->stopAvatarModify(); - } - - avatarSelectWidget->setCurrentIndex(index.row()); - QScrollArea *area = static_cast(avatarSelectWidget->currentWidget()); - m_currentSelectAvatarWidget = static_cast(area->widget()); - }); - - QHBoxLayout *avatarLayout = new QHBoxLayout(); - avatarLayout->addWidget(avatarSelectWidget, Qt::AlignCenter); - m_rightContentLayout->addLayout(avatarLayout); - - // 添加(关闭,保存)按钮 - auto buttonTuple = new ButtonTuple(ButtonTuple::Save, this); - auto cancelButton = buttonTuple->leftButton(); - cancelButton->setText(tr("Cancel")); - auto saveButton = buttonTuple->rightButton(); - saveButton->setText(tr("Save")); - QHBoxLayout *btnLayout = new QHBoxLayout(); - btnLayout->setContentsMargins(10, 10, 10, 10); - btnLayout->addWidget(cancelButton); - btnLayout->addSpacing(10); - btnLayout->addWidget(saveButton); - - connect(getCustomAvatarWidget()->getCustomAvatarView(), - &CustomAvatarView::requestSaveCustomAvatar, - m_avatarFrames[Custom]->getCurrentListView(), - &AvatarListView::saveAvatar); - - connect(static_cast(m_avatarFrames[AvatarAdd]), - &CustomAddAvatarWidget::requestUpdateCustomWidget, - this, - [avatarSelectWidget, this](const QString &path) { - m_currentSelectAvatarWidget = m_avatarFrames[Custom]; - avatarSelectWidget->setCurrentIndex(Custom); - m_currentSelectAvatarWidget->getCurrentListView()->requestAddCustomAvatar(path); - }); - - connect(saveButton, &QPushButton::clicked, this, [this]() { - const QString path = getAvatarPath(); - if (!path.isEmpty() && path != m_curUser->currentAvatar()) { - m_path = path; - } - // 成功设置头像后关闭窗口 - accept(); - }); - connect(cancelButton, &QPushButton::clicked, this, &QDialog::reject); - - m_rightContentLayout->addLayout(btnLayout); - - QFrame *frame = new QFrame(this); - frame->setLayout(m_rightContentLayout); - QPalette pa(DDialog().palette()); - pa.setColor(QPalette::Base, pa.color(QPalette::Window)); - frame->setAutoFillBackground(true); - frame->setPalette(pa); - - m_avatarSelectItem->setCurrentIndex(m_avatarSelectItem->model()->index(0, 0)); - m_mainContentLayout->addWidget(frame); - - setLayout(m_mainContentLayout); - - setFixedSize(640, 472); - installEventFilter(this); -} - -AvatarListDialog::~AvatarListDialog() -{ - if (m_avatarSelectItemModel) { - m_avatarSelectItemModel->clear(); - m_avatarSelectItemModel->deleteLater(); - m_avatarSelectItemModel = nullptr; - } - - m_avatarFrames.clear(); -} - -CustomAvatarWidget *AvatarListDialog::getCustomAvatarWidget() -{ - return static_cast(m_avatarFrames[Custom]); -} - -QString AvatarListDialog::getAvatarPath() const -{ - return m_currentSelectAvatarWidget->getAvatarPath(); -} - -void AvatarListDialog::handleRequestDeleteIcon(const QString &iconPath) -{ - m_worker->deleteUserIcon(m_curUser, iconPath); -} - -void AvatarListDialog::handleListViewRequestUpdate(bool isSave, const int &role, const int &type) -{ - - Q_UNUSED(type); - - for (auto frame : m_avatarFrames) { - if (frame->getCurrentRole() != role) { - if (frame->getCurrentListView()) { - frame->getCurrentListView()->setCurrentAvatarUnChecked(); - } - } - } - - if (role != Custom) { - return; - } - // 如果是新添加进来的用户头像, 先保存, 然后再更新用户头像编辑界面 - if (isSave) { - m_worker->setAvatar(m_curUser, m_avatarFrames[role]->getCurrentListView()->getAvatarPath()); - - connect(m_curUser, &User::currentAvatarChanged, this, [this](const QString &path) { - if (path.contains(m_avatarFrames[Custom]->getCurrentPath())) { - getCustomAvatarWidget()->getCurrentListView()->requestUpdateCustomAvatar(path); - getCustomAvatarWidget()->getCustomAvatarView()->setAvatarPath( - m_avatarFrames[Custom]->getCurrentListView()->getAvatarPath()); - } - }); - - return; - } - - getCustomAvatarWidget()->getCustomAvatarView()->setAvatarPath( - m_avatarFrames[role]->getCurrentListView()->getAvatarPath()); -} diff --git a/dcc-old/src/plugin-accounts/window/avatarlistwidget.h b/dcc-old/src/plugin-accounts/window/avatarlistwidget.h deleted file mode 100644 index 5ce9f23a89..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarlistwidget.h +++ /dev/null @@ -1,80 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "avatarlistframe.h" -#include "avatarlistview.h" -#include "interface/namespace.h" -#include "operation/accountsworker.h" - -#include -#include -#include - -#include -#include -#include -#include - -#include - -DWIDGET_BEGIN_NAMESPACE -class DFrame; -DWIDGET_END_NAMESPACE - -namespace DCC_NAMESPACE { -class CustomAddAvatarWidget; -class CustomAvatarWidget; - -class AvatarListDialog : public Dtk::Widget::DAbstractDialog -{ - Q_OBJECT -public: - // 头像选择项 - struct AvatarItem - { - QString name; - QString icon; - int role; - bool isLoader; - - AvatarItem(const QString &_name, - const QString &_icon, - const int &_role, - const bool &_isLoader) - : name(_name) - , icon(_icon) - , role(_role) - , isLoader(_isLoader) - { - } - }; - - enum AvatarItemRole { AvatarItemNameRole = DTK_NAMESPACE::UserRole + 1, AvatarItemIconRole }; - - explicit AvatarListDialog(User *user, AccountsWorker *m_worker, QWidget *parent = nullptr); - virtual ~AvatarListDialog(); - - QString getAvatarPath() const; - - inline std::optional get_path() const { return m_path; } - -private: - CustomAvatarWidget *getCustomAvatarWidget(); - void handleListViewRequestUpdate(bool isSave, const int &role, const int &type); - void handleRequestDeleteIcon(const QString &iconPath); - -private: - AccountsWorker *m_worker; - User *m_curUser{ nullptr }; - QHBoxLayout *m_mainContentLayout; - QVBoxLayout *m_leftContentLayout; - QVBoxLayout *m_rightContentLayout; - DTK_WIDGET_NAMESPACE::DListView *m_avatarSelectItem; - QStandardItemModel *m_avatarSelectItemModel; - AvatarListFrame *m_currentSelectAvatarWidget; - QMap m_avatarFrames; - std::optional m_path; -}; -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-accounts/window/avatarwidget.cpp b/dcc-old/src/plugin-accounts/window/avatarwidget.cpp deleted file mode 100644 index 5b957455e9..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarwidget.cpp +++ /dev/null @@ -1,222 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "avatarwidget.h" - -#include "widgets/accessibleinterface.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; - -// SET_LABEL_ACCESSIBLE(AvatarWidget, "avatarwidget") -AvatarWidget::AvatarWidget(QWidget *parent) - : QLabel(parent) - , m_hover(false) - , m_deleable(false) - , m_selected(false) - , m_arrowed(false) -{ - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->setMargin(0); - mainLayout->setSpacing(0); - - setLayout(mainLayout); - setFixedSize(PIX_SIZE, PIX_SIZE); - setObjectName("AvatarWidget"); -} - -AvatarWidget::AvatarWidget(const QString &avatar, QWidget *parent) - : AvatarWidget(parent) -{ - setAvatarPath(avatar); -} - -void AvatarWidget::setSelected(const bool selected) -{ - m_selected = selected; - update(); -} - -void AvatarWidget::setDeletable(const bool deletable) -{ - m_deleable = deletable; - update(); -} - -void AvatarWidget::setArrowed(const bool arrowed) -{ - m_arrowed = arrowed; - update(); -} - -const QString AvatarWidget::avatarPath() const -{ - const auto ratio = devicePixelRatioF(); - - if (ratio > 1.0) - return QString(m_avatarPath).replace("icons/bigger/", "icons/"); - - return m_avatarPath; -} - -void AvatarWidget::setAvatarPath(const QString &avatar) -{ - const auto ratio = devicePixelRatioF(); - - QString avatarPath = avatar; - if (ratio > 1.0) - avatarPath.replace("icons/", "icons/bigger/"); - - QUrl url(avatarPath); - if (!QFile(url.toLocalFile()).exists()) - url = QUrl(avatar); - - m_avatarPath = url.toString(); - - if (!QPixmap(url.toLocalFile()).isNull()) { - m_avatar = QPixmap(url.toLocalFile()) - .scaled(size() * ratio, Qt::KeepAspectRatio, Qt::SmoothTransformation); - m_avatar.setDevicePixelRatio(ratio); - } - - setAccessibleName(m_avatarPath); - - update(); -} - -void AvatarWidget::mouseReleaseEvent(QMouseEvent *e) -{ - if (rect().contains(e->pos())) - Q_EMIT clicked(avatarPath()); - - QWidget::mouseReleaseEvent(e); -} - -void AvatarWidget::paintEvent(QPaintEvent *e) -{ - QPainterPath painterPath; - painterPath.addRect(QRect(0, 0, width(), height())); - - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing); - painter.setClipPath(painterPath); - - painter.drawPixmap(rect(), m_avatar); - - QRect picRect = rect(); - // second draw picture rounded rect bound - QPen pen; - pen.setColor(palette().base().color()); - painter.setPen(pen); - painter.drawRoundedRect(picRect, 8, 8); - - // third fill space with base brush - QPainterPath picPath; - picPath.addRect(picRect); - QPainterPath roundPath; - roundPath.addRoundedRect(picRect, 8, 8); - QPainterPath anglePath = picPath - roundPath; - painter.fillPath(anglePath, palette().base().color()); - painter.strokePath(picPath, palette().base().color()); - - if (m_selected) { - setAccessibleDescription("selectedIcon"); - QPen penSelected(Qt::transparent); - penSelected.setWidth(4); - penSelected.setColor(Qt::white); - painter.setPen(penSelected); - painter.setBrush(Qt::transparent); - painter.drawEllipse(rect()); - }; - - // 当鼠标移动到图像上面 - if (m_hover) { - painter.setPen(Qt::NoPen); - // 宽高 - int w = this->rect().width(); - int h = this->rect().height(); - // 矩形 - QRect rect(4, h - h / 4, w - 8, h - h / 4); - // 反走样 - painter.setRenderHint(QPainter::Antialiasing, true); - // 设置渐变色 - QLinearGradient linear(QPoint(0, h - h / 4), QPoint(0, h)); - linear.setColorAt(0, QColor(0, 0, 0, 0.00 * 255)); - linear.setColorAt(1, QColor(0, 0, 0, 0.50 * 255)); - - // 设置显示模式 - linear.setSpread(QGradient::PadSpread); - painter.setBrush(linear); - painter.drawEllipse(rect); - } - - if (!m_arrowed) { - QPen penNoArrowed(Qt::transparent); - penNoArrowed.setWidth(2); - penNoArrowed.setColor(Qt::white); - painter.setPen(penNoArrowed); - // 把直径平均分成10份 - int portion = this->rect().width() / 10; - // 圆中心点坐标 - QPoint cpt = this->rect().center(); - // 绘制左边直线 - painter.drawLine(QPoint(cpt.x() - portion / 2, cpt.y() + portion * 4 - portion / 2), - QPoint(cpt.x(), cpt.y() + portion * 4)); - // 绘制右边直线 - painter.drawLine(QPoint(cpt.x() + portion / 2, cpt.y() + portion * 4 - portion / 2), - QPoint(cpt.x(), cpt.y() + portion * 4)); - } else { - QPen penArrowed(Qt::transparent); - penArrowed.setWidth(2); - penArrowed.setColor(Qt::white); - painter.setPen(penArrowed); - // 把直径平均分成10份 - int portion = this->rect().width() / 10; - // 圆中心点坐标 - QPoint cpt = this->rect().center(); - // 绘制左边直线 - painter.drawLine(QPoint(cpt.x() - portion / 2, cpt.y() + portion * 4), - QPoint(cpt.x(), cpt.y() + portion * 4 - portion / 2)); - // 绘制右边直线 - painter.drawLine(QPoint(cpt.x() + portion / 2, cpt.y() + portion * 4), - QPoint(cpt.x(), cpt.y() + portion * 4 - portion / 2)); - } - - QWidget::paintEvent(e); -} - -void AvatarWidget::enterEvent(QEvent *) -{ - m_hover = true; - update(); -} - -void AvatarWidget::leaveEvent(QEvent *) -{ - m_hover = false; - update(); -} - -void AvatarWidget::resizeEvent(QResizeEvent *event) -{ - QWidget::resizeEvent(event); - - const auto ratio = devicePixelRatioF(); - - QUrl url(m_avatarPath); - m_avatar = QPixmap(url.toLocalFile()) - .scaled(size() * ratio, Qt::KeepAspectRatio, Qt::SmoothTransformation); - m_avatar.setDevicePixelRatio(ratio); - - update(); -} diff --git a/dcc-old/src/plugin-accounts/window/avatarwidget.h b/dcc-old/src/plugin-accounts/window/avatarwidget.h deleted file mode 100644 index 35759066ec..0000000000 --- a/dcc-old/src/plugin-accounts/window/avatarwidget.h +++ /dev/null @@ -1,57 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef AVATARWIDGET_H -#define AVATARWIDGET_H - -#include "interface/namespace.h" - -#include -#include - -#define PIX_SIZE 60 - -namespace DCC_NAMESPACE { - -class AvatarWidget : public QLabel -{ - Q_OBJECT - -public: - explicit AvatarWidget(QWidget *parent = 0); - explicit AvatarWidget(const QString &avatar, QWidget *parent = 0); - - void setSelected(const bool selected = true); - void setDeletable(const bool deletable = true); - - const QString avatarPath() const; - void setAvatarPath(const QString &avatar); - - void setArrowed(const bool arrowed = true); - - inline bool arrowed() const { return m_arrowed; } - -Q_SIGNALS: - void clicked(const QString &iconPath) const; - void requestDelete(const QString &iconPath) const; - -protected: - void mouseReleaseEvent(QMouseEvent *e); - void paintEvent(QPaintEvent *e); - void enterEvent(QEvent *); - void leaveEvent(QEvent *); - void resizeEvent(QResizeEvent *event); - -private: - bool m_hover; - bool m_deleable; - bool m_selected; - bool m_arrowed; - - QPixmap m_avatar; - QString m_avatarPath; -}; - -} // namespace DCC_NAMESPACE - -#endif // AVATARWIDGET_H diff --git a/dcc-old/src/plugin-accounts/window/createaccountpage.cpp b/dcc-old/src/plugin-accounts/window/createaccountpage.cpp deleted file mode 100644 index b4c18d1a4f..0000000000 --- a/dcc-old/src/plugin-accounts/window/createaccountpage.cpp +++ /dev/null @@ -1,650 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "createaccountpage.h" - -#include "groupitem.h" -#include "pwqualitymanager.h" -#include "securitylevelitem.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -CreateAccountPage::CreateAccountPage(AccountsWorker *accountsWorker, QWidget *parent) - : DAbstractDialog(false, parent) - , m_newUser{ nullptr } - , m_accountWorker(accountsWorker) - , m_nameEdit(new LineEditWidget) - , m_fullnameEdit(new LineEditWidget) - , m_passwdEdit(new DPasswordEdit) - , m_repeatpasswdEdit(new DPasswordEdit) - , m_passwdTipsEdit(new DLineEdit) - , m_accountChooser(new ComboxWidget()) - , m_groupListView(nullptr) - , m_groupItemModel(nullptr) - , m_groupTip(new QLabel(tr("Group"))) - , m_securityLevelItem(new SecurityLevelItem(this)) -{ - m_passwdEdit->setCopyEnabled(false); - m_passwdEdit->setCutEnabled(false); - - m_repeatpasswdEdit->setCopyEnabled(false); - m_repeatpasswdEdit->setCutEnabled(false); - - m_groupListView = new DCCListView(this); - m_isServerSystem = DSysInfo::UosServer == DSysInfo::uosType(); - QVBoxLayout *mainContentLayout = new QVBoxLayout; - mainContentLayout->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame); // 无边框 - titleIcon->setBackgroundTransparent(true); // 透明 - titleIcon->setMenuVisible(false); - titleIcon->setIcon(qApp->windowIcon()); - mainContentLayout->addWidget(titleIcon); - setLayout(mainContentLayout); - - m_tw = new QWidget(this); - QVBoxLayout *contentLayout = new QVBoxLayout(m_tw); - contentLayout->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - contentLayout->setSpacing(0); - contentLayout->setContentsMargins(0, 0, 0, 0); - mainContentLayout->addWidget(m_tw); - - initWidgets(contentLayout); - initUsrGroup(contentLayout); - - QHBoxLayout *btnLayout = new QHBoxLayout; - btnLayout->setMargin(0); - - QPushButton *cancleBtn = new QPushButton(tr("Cancel")); - DSuggestButton *addBtn = new DSuggestButton(tr("Create")); - cancleBtn->setDefault(true); - addBtn->setDefault(true); - btnLayout->addWidget(cancleBtn); - btnLayout->addWidget(addBtn); - mainContentLayout->addSpacing(0); - mainContentLayout->addLayout(btnLayout); - - connect(cancleBtn, &QPushButton::clicked, this, &CreateAccountPage::reject); - connect(addBtn, &DSuggestButton::clicked, this, &CreateAccountPage::createUser); - resize(460, -1); -} - -CreateAccountPage::~CreateAccountPage() -{ - m_repeatpasswdEdit->hideAlertMessage(); -} - -void CreateAccountPage::resizeEvent(QResizeEvent *e) -{ - Q_UNUSED(e); -} - -void CreateAccountPage::initUsrGroup(QVBoxLayout *layout) -{ - m_groupItemModel = new QStandardItemModel(this); - m_groupListView->setModel(m_groupItemModel); - m_groupListView->setEditTriggers(QAbstractItemView::NoEditTriggers); - m_groupListView->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - m_groupListView->setSelectionMode(QAbstractItemView::NoSelection); - m_groupListView->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents); - m_groupListView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_groupListView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_groupListView->setSpacing(1); - connect(m_groupListView, &DListView::clicked, this, [=](const QModelIndex &index) { - QStandardItem *item = m_groupItemModel->item(index.row(), index.column()); - Qt::CheckState state = item->checkState(); - if (state == Qt::Checked) { - item->setCheckState(Qt::Unchecked); - } else { - item->setCheckState(Qt::Checked); - } - m_groupItemModel->sort(0); - }); - layout->addWidget(m_groupTip); - layout->addSpacing(10); - layout->addWidget(m_groupListView); - - if (m_accountChooser->comboBox()->currentIndex() != 2) { - m_groupTip->setVisible(false); - m_groupListView->setVisible(false); - } -} - -void CreateAccountPage::initWidgets(QVBoxLayout *layout) -{ - TitleLabel *titleLabel = new TitleLabel(tr("New User")); - titleLabel->setAlignment(Qt::AlignCenter); - layout->addWidget(titleLabel); - layout->addSpacing(30); - - /* 用户类型 */ - m_accountChooser->setTitle(tr("User Type")); - m_accountChooser->addBackground(); - - layout->addWidget(m_accountChooser); - layout->addSpacing(7); - - SettingsGroup *nameGroup = new SettingsGroup(nullptr, SettingsGroup::GroupBackground); - m_nameEdit->setTitle(tr("Username") + ':'); - m_nameEdit->setAccessibleName("username_edit"); - nameGroup->insertWidget(m_nameEdit); - - m_fullnameEdit->setTitle(tr("Full Name") + ':'); - m_fullnameEdit->setAccessibleName("fullname_edit"); - nameGroup->insertWidget(m_fullnameEdit); - layout->addWidget(nameGroup); - layout->addSpacing(7); - - layout->addWidget(m_securityLevelItem, 0, Qt::AlignRight | Qt::AlignVCenter); - - SettingsGroup *passwdGroup = new SettingsGroup(nullptr, SettingsGroup::GroupBackground); - QLabel *passwdLabel = new QLabel(tr("Password") + ':'); - passwdLabel->setFixedWidth(110); - m_passwdEdit->setAccessibleName("passwd_edit"); - - QHBoxLayout *passwdLayout = new QHBoxLayout; - passwdLayout->setContentsMargins(10, 0, 10, 0); - passwdLayout->addWidget(passwdLabel, 0, Qt::AlignVCenter); - passwdLayout->addWidget(m_passwdEdit, 0, Qt::AlignVCenter); - SettingsItem *passwdItem = new SettingsItem(); - passwdItem->setLayout(passwdLayout); - passwdGroup->appendItem(passwdItem); - - QLabel *repeatpasswdLabel = new QLabel(tr("Repeat Password") + ':'); - repeatpasswdLabel->setFixedWidth(110); - m_repeatpasswdEdit->setAccessibleName("repeatpasswd_edit"); - - QHBoxLayout *repeatpasswdLayout = new QHBoxLayout; - repeatpasswdLayout->setContentsMargins(10, 0, 10, 0); - repeatpasswdLayout->addWidget(repeatpasswdLabel, 0, Qt::AlignVCenter); - repeatpasswdLayout->addWidget(m_repeatpasswdEdit, 0, Qt::AlignVCenter); - SettingsItem *repeatpasswdItem = new SettingsItem(); - repeatpasswdItem->setLayout(repeatpasswdLayout); - passwdGroup->appendItem(repeatpasswdItem); - - QLabel *passwdTipsLabel = new QLabel(tr("Password Hint") + ':'); - passwdTipsLabel->setFixedWidth(110); - m_passwdTipsEdit->setAccessibleName("password_hint"); - - QHBoxLayout *passwdTipsLayout = new QHBoxLayout; - passwdTipsLayout->setContentsMargins(10, 0, 10, 0); - passwdTipsLayout->addWidget(passwdTipsLabel, 0, Qt::AlignVCenter); - passwdTipsLayout->addWidget(m_passwdTipsEdit, 0, Qt::AlignVCenter); - SettingsItem *passwdTipsItem = new SettingsItem(); - passwdTipsItem->setLayout(passwdTipsLayout); - passwdGroup->appendItem(passwdTipsItem); - - layout->addWidget(passwdGroup); - layout->addSpacing(27); - - connect(m_nameEdit->dTextEdit(), &DLineEdit::textEdited, this, [=](const QString &strText) { - Q_UNUSED(strText); - if (m_nameEdit->dTextEdit()->isAlert()) { - m_nameEdit->hideAlertMessage(); - m_nameEdit->dTextEdit()->setAlert(false); - } - - if (strText.isEmpty()) - return; - - QString strTemp; - int idx; - for (idx = 0; idx < strText.size(); ++idx) { - if ((strText[idx] >= '0' && strText[idx] <= '9') - || (strText[idx] >= 'a' && strText[idx] <= 'z') - || (strText[idx] >= 'A' && strText[idx] <= 'Z') - || (strText[idx] == '-' || strText[idx] == '_')) { - strTemp.append(strText[idx]); - } else { - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } - } - - m_nameEdit->dTextEdit()->lineEdit()->blockSignals(true); - int cursorIndex = m_nameEdit->dTextEdit()->lineEdit()->cursorPosition(); - m_nameEdit->dTextEdit()->lineEdit()->setText(strTemp); - m_nameEdit->dTextEdit()->lineEdit()->setCursorPosition(cursorIndex); - m_nameEdit->dTextEdit()->lineEdit()->blockSignals(false); - }); - - connect(m_nameEdit->dTextEdit(), - &DLineEdit::editingFinished, - this, - &CreateAccountPage::checkName); - connect(m_nameEdit->dTextEdit(), &DLineEdit::editingFinished, this, [this]() { - m_securityLevelItem->setUser(m_nameEdit->text()); - }); - - connect(m_fullnameEdit->dTextEdit(), - &DLineEdit::textEdited, - this, - [=](const QString &userFullName) { - /* 90401:在键盘输入下禁止冒号的输入,粘贴情况下自动识别冒号自动删除 */ - QString fullName = userFullName; - fullName.remove(":"); - if (fullName != userFullName) { - m_fullnameEdit->setText(fullName); - } - /* 在输入的过程中仅检查全名的长度,输入完成后检查其它规则 */ - if (fullName.size() > 32) { - m_fullnameEdit->dTextEdit()->lineEdit()->backspace(); - m_fullnameEdit->dTextEdit()->setAlert(true); - m_fullnameEdit->dTextEdit()->showAlertMessage(tr("The full name is too long"), - m_fullnameEdit, - 2000); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } else if (m_fullnameEdit->dTextEdit()->isAlert()) { - m_fullnameEdit->dTextEdit()->setAlert(false); - m_fullnameEdit->hideAlertMessage(); - } - }); - - connect(m_fullnameEdit->dTextEdit(), - &DLineEdit::editingFinished, - this, - &CreateAccountPage::checkFullname); - - // 失焦后就提示 - connect(m_passwdEdit, &DLineEdit::editingFinished, this, [=] { - PwqualityManager::ERROR_TYPE error = PwqualityManager::instance()->verifyPassword( - m_nameEdit->dTextEdit()->lineEdit()->text(), - m_passwdEdit->lineEdit()->text()); - if (error != PwqualityManager::ERROR_TYPE::PW_NO_ERR) { - m_passwdEdit->setAlert(true); - m_passwdEdit->showAlertMessage(PwqualityManager::instance()->getErrorTips(error), - m_passwdEdit, - 2000); - } - }); - - // 失焦后就提示,只检查密码一致性 - connect(m_repeatpasswdEdit, &DLineEdit::editingFinished, this, [=] { - if (m_passwdEdit->lineEdit()->text() != m_repeatpasswdEdit->lineEdit()->text()) { - m_repeatpasswdEdit->setAlert(true); - m_repeatpasswdEdit->showAlertMessage(tr("Passwords do not match"), - m_repeatpasswdEdit, - 2000); - } - }); - - connect(m_passwdEdit, &DPasswordEdit::textEdited, this, [=] { - if (m_passwdEdit->isAlert()) { - m_passwdEdit->hideAlertMessage(); - m_passwdEdit->setAlert(false); - } - }); - m_securityLevelItem->setUser(m_nameEdit->text()); - m_securityLevelItem->bind(m_passwdEdit); - - connect(m_repeatpasswdEdit, &DPasswordEdit::textEdited, this, [=] { - if (m_repeatpasswdEdit->isAlert()) { - m_repeatpasswdEdit->hideAlertMessage(); - m_repeatpasswdEdit->setAlert(false); - } - }); - - connect(m_passwdTipsEdit, &DLineEdit::textEdited, this, [=](const QString &passwdTips) { - if (passwdTips.size() > 14) { - m_passwdTipsEdit->lineEdit()->backspace(); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } else if (m_passwdTipsEdit->isAlert()) { - m_passwdTipsEdit->setAlert(false); - } - }); - - connect(m_accountChooser->comboBox(), - &DComboBox::currentTextChanged, - this, - &CreateAccountPage::showGroupList); - - m_accountChooser->comboBox()->addItem(tr("Standard User")); - m_accountChooser->comboBox()->addItem(tr("Administrator")); - /* 仅在服务器模式下创建用户才能自定义用户组 */ - if (m_isServerSystem) { - m_accountChooser->comboBox()->addItem(tr("Customized")); - } - - m_nameEdit->dTextEdit()->lineEdit()->setPlaceholderText(tr("Required")); // 必填 - m_fullnameEdit->dTextEdit()->lineEdit()->setPlaceholderText(tr("optional")); // 选填 - m_passwdEdit->lineEdit()->setPlaceholderText(tr("Required")); // 必填 - m_repeatpasswdEdit->lineEdit()->setPlaceholderText(tr("Required")); // 必填 - m_passwdTipsEdit->lineEdit()->setPlaceholderText(tr("optional")); // 选填 -} - -void CreateAccountPage::showGroupList(const QString &index) -{ - Q_UNUSED(index) - - if (m_accountChooser->comboBox()->currentIndex() == 2) { - m_groupTip->setVisible(true); - m_groupListView->setVisible(true); - } else { - m_groupTip->setVisible(false); - m_groupListView->setVisible(false); - } -} - -void CreateAccountPage::setModel(UserModel *userModel, User *user) -{ - m_newUser = user; - Q_ASSERT(m_newUser); - m_userModel = userModel; - Q_ASSERT(m_userModel); - - if (!m_groupItemModel) { - return; - } - m_groupItemModel->clear(); - for (QString item : m_userModel->getAllGroups()) { - GroupItem *it = new GroupItem(item); - it->setCheckable(false); - m_groupItemModel->appendRow(it); - } - - QStringList presetGroup = m_userModel->getPresetGroups(); - int row_count = m_groupItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - QStandardItem *item = m_groupItemModel->item(i, 0); - if (item) { - item->setCheckState(presetGroup.contains(item->text()) ? Qt::Checked : Qt::Unchecked); - } - } - m_groupItemModel->sort(0); - m_accountChooser->setCurrentIndex(user->userType()); -} - -// 在修改密码页面设置默认焦点 -void CreateAccountPage::showEvent(QShowEvent *event) -{ - if (m_accountChooser && m_accountChooser->isVisible() && m_accountChooser->isEnabled()) - m_accountChooser->setFocus(); - else if (m_nameEdit && !m_nameEdit->hasFocus()) { - m_nameEdit->dTextEdit()->lineEdit()->setFocus(); - } - QWidget::showEvent(event); -} - -void CreateAccountPage::createUser() -{ - bool check = false; - // 校验输入的用户名和密码 - if (!checkName()) { - check = true; - } - - if (!checkFullname()) { - check = true; - } - - bool needShowSafetyPage = false; - if (!checkPassword(m_repeatpasswdEdit, needShowSafetyPage)) { - check = true; - } - - if (!checkPassword(m_passwdEdit, needShowSafetyPage)) { - check = true; - } - - if (check) { - if (needShowSafetyPage) { - Q_EMIT requestCheckPwdLimitLevel(); - } - return; - } - - for (auto c : m_passwdEdit->text()) { - if (m_passwdTipsEdit->text().contains(c)) { - m_passwdTipsEdit->setAlert(true); - m_passwdTipsEdit->showAlertMessage( - tr("The hint is visible to all users. Do not include the password here."), - m_passwdTipsEdit, - 2000); - return; - } - } - - // 如果用户没有选图像, 则从系统头像中随机选择一张图像 - m_accountWorker->randomUserIcon(m_newUser); - m_newUser->setName(m_nameEdit->dTextEdit()->lineEdit()->text().simplified()); - m_newUser->setFullname(m_fullnameEdit->dTextEdit()->lineEdit()->text()); - m_newUser->setPassword(m_passwdEdit->lineEdit()->text()); - m_newUser->setRepeatPassword(m_repeatpasswdEdit->lineEdit()->text()); - m_newUser->setPasswordHint(m_passwdTipsEdit->lineEdit()->text()); - - /* 设置用户组 */ - if (m_accountChooser->comboBox()->currentIndex() == 1) { - m_newUser->setUserType(User::UserType::Administrator); - } else if (m_accountChooser->comboBox()->currentIndex() == 0) { - m_newUser->setUserType(User::UserType::StandardUser); - } else { - QStringList usrGroups; - int row_count = m_groupItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - QStandardItem *item = m_groupItemModel->item(i, 0); - if (item->checkState() == Qt::Checked) { - usrGroups << item->text(); - } - } - m_newUser->setGroups(usrGroups); - m_newUser->setUserType(User::UserType::StandardUser); - } - setEnabled(false); - Q_EMIT requestCreateUser(m_newUser); // 请求创建用户 -} - -void CreateAccountPage::setCreationResult(CreationResult *result) -{ - setEnabled(true); - switch (result->type()) { - case CreationResult::NoError: - accept(); - break; - case CreationResult::UserNameError: - m_nameEdit->dTextEdit()->setAlert(true); - m_nameEdit->dTextEdit()->showAlertMessage(result->message(), m_nameEdit, 2000); - break; - case CreationResult::PasswordError: - m_passwdEdit->setAlert(true); - m_passwdEdit->showAlertMessage(result->message(), m_passwdEdit, 2000); - break; - case CreationResult::PasswordMatchError: - m_repeatpasswdEdit->setAlert(true); - m_repeatpasswdEdit->showAlertMessage(result->message(), m_repeatpasswdEdit, 2000); - break; // reserved for future server edition feature. - case CreationResult::UnknownError: - // 当用户名与用户组信息重名时,会返回UnknownError,并且提示信息是从系统中获取过来的,控制中心无法区分他的中英文 - qDebug() << "error encountered creating user: " << result->message(); - m_nameEdit->dTextEdit()->setAlert(true); - if (result->message() == "Policykit authentication failed") { - m_nameEdit->dTextEdit()->showAlertMessage(tr("Policykit authentication failed"), - m_nameEdit, - 2000); - } else { - m_nameEdit->dTextEdit()->showAlertMessage(result->message(), m_nameEdit, 2000); - } - break; - case CreationResult::Canceled: - // canceled - break; - } - - result->deleteLater(); -} - -bool CreateAccountPage::checkName() -{ - const QString &userName = m_nameEdit->dTextEdit()->lineEdit()->text(); - - QString alertMsg; - do { - if (userName.size() < 3 || userName.size() > 32) { - alertMsg = tr("Username must be between 3 and 32 characters"); - break; - } - - QRegularExpression letterOrNum("^[A-Za-z0-9]+"); - if (!letterOrNum.match(userName).hasMatch()) { - alertMsg = tr("The first character must be a letter or number"); - break; - } - - QRegularExpression onlyNums("^\\d+$"); - if (onlyNums.match(userName).hasMatch()) { - alertMsg = tr("Your username should not only have numbers"); - break; - } - - // username existed check, not check fullname! - // reply ==> (false, "the username existed", 4) - QDBusPendingReply reply = m_accountWorker->isUsernameValid(userName); - if (!reply.argumentAt(0).toBool() && ErrCodeExist == reply.argumentAt(2).toInt()) { - alertMsg = tr("The username has been used by other user accounts"); - break; - } - - // check fullname - QList userList = m_userModel->userList(); - auto ret = std::any_of(userList.begin(), userList.end(), [userName](const User * user) { - return userName == user->fullname(); - }); - - if (ret) { - alertMsg = tr("The username has been used by other user accounts"); - break; - } - - } while (false); - - - bool ok = alertMsg.isEmpty(); - m_nameEdit->dTextEdit()->setAlert(!ok); - - if (!ok) { - m_nameEdit->dTextEdit()->showAlertMessage(alertMsg, 2000); - } else { - m_nameEdit->hideAlertMessage(); // ?? - } - - return ok; -} - -bool CreateAccountPage::checkFullname() -{ - QString userFullName = m_fullnameEdit->dTextEdit()->lineEdit()->text(); - - QString alertMsg; - do { - if (userFullName.size() > 32) { - alertMsg = tr("The full name is too long"); - break; - } - - // 欧拉版会自己创建 shutdown 等 root 组账户且不会添加到 userList 中,导致无法重复性算法无效, - // 先通过 isUsernameValid 校验这些账户再通过重复性算法校验 - // vaild == false && code == 6 是用户名已存在 - QDBusPendingReply reply = m_accountWorker->isUsernameValid(userFullName); - if (!reply.argumentAt(0).toBool() && - ErrCodeSystemUsed == reply.argumentAt(2).toInt()) { - alertMsg = tr("The full name has been used by other user accounts"); - break; - } - - if (userFullName.simplified().isEmpty()) { - m_fullnameEdit->dTextEdit()->lineEdit()->clear(); // 输入全空格不保存 - break; - } - - QList userList = m_userModel->userList(); - auto ret = std::any_of(userList.begin(), userList.end(), [userFullName](User *user) { - return userFullName == user->fullname() || userFullName == user->name(); - }); - /* 与已有的用户全名和用户名进行重复性校验 */ - if (ret) { - alertMsg = tr("The full name has been used by other user accounts"); - break; - } - - QList groupList = m_userModel->getAllGroups(); - ret = std::any_of(groupList.begin(), groupList.end(), [userFullName](const QString &group) { - return userFullName == group; - }); - if (ret) { - alertMsg = tr("The full name has been used by other user accounts"); - break; - } - } while (false); - - bool ok = alertMsg.isEmpty(); - m_fullnameEdit->dTextEdit()->setAlert(!ok); - if (!ok) { - m_fullnameEdit->dTextEdit()->showAlertMessage(alertMsg, 2000); - m_fullnameEdit->dTextEdit()->lineEdit()->selectAll(); - } else { - m_fullnameEdit->hideAlertMessage(); // ?_? - } - - return ok; -} - -bool CreateAccountPage::checkPassword(DPasswordEdit *edit, bool &needShowSafetyPage) -{ - if (edit == m_repeatpasswdEdit) { - if (m_passwdEdit->lineEdit()->text() != m_repeatpasswdEdit->lineEdit()->text()) { - m_repeatpasswdEdit->setAlert(true); - m_repeatpasswdEdit->showAlertMessage(tr("Passwords do not match"), 2000); - return false; - } - } - - PwqualityManager::ERROR_TYPE error = PwqualityManager::instance()->verifyPassword( - m_nameEdit->dTextEdit()->lineEdit()->text(), - edit->lineEdit()->text()); - - if (error != PwqualityManager::ERROR_TYPE::PW_NO_ERR) { - m_passwdEdit->setAlert(true); - const QString &msg = PwqualityManager::instance()->getErrorTips(error); - m_passwdEdit->showAlertMessage(msg, 2000); - - // 企业版控制中心用户创建屏蔽安全中心登录安全的接口需求 - if ((DSysInfo::uosEditionType() == DSysInfo::UosEnterprise) - || (DSysInfo::uosEditionType() == DSysInfo::UosEnterpriseC)) - return false; - - needShowSafetyPage = true; - - return false; - } else { - edit->setAlert(false); - edit->hideAlertMessage(); - } - - return true; -} diff --git a/dcc-old/src/plugin-accounts/window/createaccountpage.h b/dcc-old/src/plugin-accounts/window/createaccountpage.h deleted file mode 100644 index 0a5c319e5b..0000000000 --- a/dcc-old/src/plugin-accounts/window/createaccountpage.h +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "avatarlistwidget.h" -#include "interface/namespace.h" -#include "src/plugin-accounts/operation/accountsworker.h" -#include "src/plugin-accounts/operation/creationresult.h" -#include "src/plugin-accounts/operation/user.h" -#include "src/plugin-accounts/operation/usermodel.h" -#include "widgets/lineeditwidget.h" - -#include -#include -#include -#include -#include - -#include - -#define NAME_ALREADY 4 - -DWIDGET_USE_NAMESPACE - -class QScrollArea; -class QVBoxLayout; -class QHBoxLayout; -class QPushButton; -class QLabel; - -namespace DCC_NAMESPACE { -class ComboxWidget; -class SecurityLevelItem; - -const int PwdLimitLowestLevel = 1; - -// 创建账户页面 -class CreateAccountPage : public DAbstractDialog -{ - Q_OBJECT - -public: - enum PassWordType { NormalPassWord, IncludeBlankSymbol }; - - enum PassErrorCode { - ErrCodeEmpty = 1, - ErrCodeInvalidChar, - ErrCodeFirstCharInvalid, - ErrCodeExist, - ErrCodeNameExist, - ErrCodeSystemUsed, - ErrCodeLen - }; - -public: - explicit CreateAccountPage(AccountsWorker *accountsWorker, QWidget *parent = nullptr); - ~CreateAccountPage(); - void setModel(UserModel *userModel, User *user); - -private: - void initWidgets(QVBoxLayout *layout); - void initUsrGroup(QVBoxLayout *layout); - void createUser(); - void showGroupList(const QString &index); - -protected: - void showEvent(QShowEvent *event) override; - -Q_SIGNALS: - void requestCreateUser(const User *user); - void requestSetPasswordHint(User *, const QString &); - void requestCheckPwdLimitLevel(); - -public Q_SLOTS: - void setCreationResult(CreationResult *result); - -protected: - void resizeEvent(QResizeEvent *e) override; - -private Q_SLOTS: - bool checkName(); - bool checkFullname(); - bool checkPassword(DPasswordEdit *edit, bool &needShowSafetyPage); - -private: - User *m_newUser; - UserModel *m_userModel; - AccountsWorker *m_accountWorker; - LineEditWidget *m_nameEdit; - LineEditWidget *m_fullnameEdit; - DPasswordEdit *m_passwdEdit; - DPasswordEdit *m_repeatpasswdEdit; - Dtk::Widget::DLineEdit *m_passwdTipsEdit; - ComboxWidget *m_accountChooser; - DListView *m_groupListView; - QStandardItemModel *m_groupItemModel; - bool m_isServerSystem; - QWidget *m_tw; - QScrollArea *m_scrollArea; - QLabel *m_groupTip; - SecurityLevelItem *m_securityLevelItem; -}; -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-accounts/window/groupitem.h b/dcc-old/src/plugin-accounts/window/groupitem.h deleted file mode 100644 index d9ec4615d9..0000000000 --- a/dcc-old/src/plugin-accounts/window/groupitem.h +++ /dev/null @@ -1,26 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef GROUPITEM_H -#define GROUPITEM_H - -#include "interface/namespace.h" - -#include -#include -#include - -namespace DCC_NAMESPACE { -class GroupItem : public DTK_WIDGET_NAMESPACE::DStandardItem -{ -public: - using DStandardItem::DStandardItem; - bool operator<(const QStandardItem &other) const override { - if ( checkState() != other.checkState()) { - return checkState() > other.checkState(); - } - return text().toLower() < other.text().toLower(); - } -}; -} -#endif // GROUPITEM_H diff --git a/dcc-old/src/plugin-accounts/window/modifypasswdpage.cpp b/dcc-old/src/plugin-accounts/window/modifypasswdpage.cpp deleted file mode 100644 index b22299d82a..0000000000 --- a/dcc-old/src/plugin-accounts/window/modifypasswdpage.cpp +++ /dev/null @@ -1,409 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "modifypasswdpage.h" -#include "widgets/titlelabel.h" -#include "pwqualitymanager.h" -#include "createaccountpage.h" -#include "securitylevelitem.h" -#include "widgets/accessibleinterface.h" - -#include "deepin_pw_check.h" -#include "unionidbindreminderdialog.h" -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(ModifyPasswdPage,"ModifyPasswdPage") -ModifyPasswdPage::ModifyPasswdPage(User *user, bool isCurrent, QWidget *parent) - : DAbstractDialog(false, parent) - , m_curUser(user) - , m_oldPasswordEdit(new DPasswordEdit) - , m_newPasswordEdit(new DPasswordEdit) - , m_repeatPasswordEdit(new DPasswordEdit) - , m_passwordTipsEdit(new DLineEdit) - , m_isCurrent(isCurrent) - , m_isBindCheckError(false) - , m_securityLevelItem(new SecurityLevelItem(this)) -{ - initWidget(); - resize(460, -1); -} - -ModifyPasswdPage::~ModifyPasswdPage() -{ - -} - -void ModifyPasswdPage::initWidget() -{ - QVBoxLayout *mainContentLayout = new QVBoxLayout; - - mainContentLayout->setSpacing(4); - - auto titleBar = new DTitlebar(this); - - titleBar->setBackgroundTransparent(true); - - mainContentLayout->addWidget(titleBar); - - TitleLabel *titleLabel = new TitleLabel(tr("Change Password")); - mainContentLayout->addWidget(titleLabel, 0, Qt::AlignHCenter); - if (!m_isCurrent) { - titleLabel->setText(tr("Reset Password")); - QLabel *label = new QLabel(tr("Resetting the password will clear the data stored in the keyring.")); - label->setWordWrap(true); - mainContentLayout->addWidget(label, 0, Qt::AlignHCenter); - } - mainContentLayout->addSpacing(40); - - if (m_isCurrent) { - QLabel *oldPasswdLabel = new QLabel(tr("Current Password") + ":"); - m_forgetPasswordBtn = new DCommandLinkButton(tr("Forgot password?")); - DFontSizeManager::instance()->bind(m_forgetPasswordBtn, DFontSizeManager::T8); - m_forgetPasswordBtn->setVisible(!(DSysInfo::UosCommunity == DSysInfo::uosEditionType()) && getuid() < 9999); // 如果当前账户是域账号,则屏蔽重置密码入口 - connect(m_forgetPasswordBtn, &QPushButton::clicked, this, &ModifyPasswdPage::onForgetPasswordBtnClicked); - QHBoxLayout *hLayout = new QHBoxLayout; - hLayout->addWidget(oldPasswdLabel); - hLayout->addStretch(); - hLayout->addWidget(m_forgetPasswordBtn); - hLayout->addSpacing(45); - mainContentLayout->addLayout(hLayout); - mainContentLayout->addWidget(m_oldPasswordEdit); - } - - QHBoxLayout *newPasswdLayout = new QHBoxLayout; - QLabel *newPasswdLabel = new QLabel(tr("New Password") + ":"); - newPasswdLayout->addWidget(newPasswdLabel); - newPasswdLayout->addSpacing(80); - - newPasswdLayout->addWidget(m_securityLevelItem); - mainContentLayout->addSpacing(6); - mainContentLayout->addLayout(newPasswdLayout); - mainContentLayout->addWidget(m_newPasswordEdit); - - QLabel *repeatPasswdLabel = new QLabel(tr("Repeat Password") + ":"); - mainContentLayout->addSpacing(6); - mainContentLayout->addWidget(repeatPasswdLabel); - mainContentLayout->addWidget(m_repeatPasswordEdit); - - QLabel *passwdTipsLabel = new QLabel(tr("Password Hint") + ":"); - mainContentLayout->addSpacing(6); - mainContentLayout->addWidget(passwdTipsLabel); - mainContentLayout->addWidget(m_passwordTipsEdit); - mainContentLayout->addStretch(); - - QPushButton *cancleBtn = new QPushButton(tr("Cancel")); - DSuggestButton *saveBtn = new DSuggestButton(tr("Save")); - QHBoxLayout *cansaveLayout = new QHBoxLayout; - cansaveLayout->addWidget(cancleBtn); - cansaveLayout->addWidget(saveBtn); - mainContentLayout->addLayout(cansaveLayout); - setLayout(mainContentLayout); - cancleBtn->setDefault(true); - saveBtn->setDefault(true); - cancleBtn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - saveBtn->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - setPasswordEditAttribute(m_oldPasswordEdit); - setPasswordEditAttribute(m_newPasswordEdit); - setPasswordEditAttribute(m_repeatPasswordEdit); - - connect(cancleBtn, &QPushButton::clicked, this, &ModifyPasswdPage::reject); - - connect(saveBtn, &DSuggestButton::clicked, this, &ModifyPasswdPage::clickSaveBtn); - - connect(m_curUser, &User::passwordModifyFinished, this, &ModifyPasswdPage::onPasswordChangeFinished); - - connect(m_curUser, &User::passwordStatusChanged, this, [ = ](const QString & status) { - m_oldPasswordEdit->setVisible(status != NO_PASSWORD); - }); - connect(m_curUser, &User::passwordResetFinished, this, &ModifyPasswdPage::resetPasswordFinished); - connect(m_curUser, &User::startResetPasswordReplied, this, &ModifyPasswdPage::onStartResetPasswordReplied); - connect(m_curUser, &User::startSecurityQuestionsCheckReplied, this, &ModifyPasswdPage::onSecurityQuestionsCheckReplied); - connect(m_oldPasswordEdit, &DPasswordEdit::textEdited, this, [ & ] { - if (m_oldPasswordEdit->isAlert()) - { - m_oldPasswordEdit->hideAlertMessage(); - m_oldPasswordEdit->setAlert(false); - } - }); - connect(m_repeatPasswordEdit, &DPasswordEdit::textEdited, this, [ & ] { - if (m_repeatPasswordEdit->isAlert()) - { - m_repeatPasswordEdit->hideAlertMessage(); - m_repeatPasswordEdit->setAlert(false); - } - }); - connect(m_passwordTipsEdit, &DLineEdit::textEdited, this, [ = ](const QString & passwdTips) { - if (passwdTips.size() > 14) { - m_passwordTipsEdit->lineEdit()->backspace(); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } else if (m_passwordTipsEdit->isAlert()) { - m_passwordTipsEdit->setAlert(false); - } - }); - - m_securityLevelItem->setUser(m_curUser->name()); - m_securityLevelItem->bind(m_newPasswordEdit); - - connect(m_repeatPasswordEdit, &DPasswordEdit::editingFinished, this, [ = ]() { - if (m_newPasswordEdit->lineEdit()->text() != m_repeatPasswordEdit->lineEdit()->text()) { - m_repeatPasswordEdit->setAlert(true); - m_repeatPasswordEdit->showAlertMessage(tr("Passwords do not match"), m_repeatPasswordEdit, 2000); - } - }); - - m_oldPasswordEdit->lineEdit()->setPlaceholderText(tr("Required")); - m_oldPasswordEdit->setAccessibleName("oldpasswordedit"); - m_newPasswordEdit->lineEdit()->setPlaceholderText(tr("Required")); - m_newPasswordEdit->setAccessibleName("newpasswordedit"); - m_repeatPasswordEdit->lineEdit()->setPlaceholderText(tr("Required")); - m_repeatPasswordEdit->setAccessibleName("repeatpasswordedit"); - m_passwordTipsEdit->lineEdit()->setPlaceholderText(tr("Optional")); - m_passwordTipsEdit->setAccessibleName("passwordtipsedit"); - - cancleBtn->setMinimumSize(165, 36); - saveBtn->setMinimumSize(165, 36); - DFontSizeManager::instance()->bind(titleLabel, DFontSizeManager::T5); - - setFocusPolicy(Qt::StrongFocus); -} - -bool ModifyPasswdPage::judgeTextEmpty(DPasswordEdit *edit) -{ - if (edit->text().isEmpty()) { - edit->setAlert(true); - edit->showAlertMessage(tr("Password cannot be empty"), edit, 2000); - } - - return edit->text().isEmpty(); -} - -void ModifyPasswdPage::clickSaveBtn() -{ - //校验输入密码 - if ((judgeTextEmpty(m_oldPasswordEdit) && m_isCurrent) || judgeTextEmpty(m_newPasswordEdit) || judgeTextEmpty(m_repeatPasswordEdit)) - return; - - if (m_isCurrent) { - for (auto c : m_newPasswordEdit->text()) { - if (m_passwordTipsEdit->text().contains(c)) { - m_passwordTipsEdit->setAlert(true); - m_passwordTipsEdit->showAlertMessage(tr("The hint is visible to all users. Do not include the password here."), m_passwordTipsEdit, 2000); - return; - } - } - - Q_EMIT requestChangePassword(m_curUser, m_oldPasswordEdit->lineEdit()->text(), m_newPasswordEdit->lineEdit()->text(), m_repeatPasswordEdit->lineEdit()->text()); - } else { - resetPassword(m_newPasswordEdit->text(), m_repeatPasswordEdit->text()); - } -} - -void ModifyPasswdPage::onPasswordChangeFinished(const int exitCode, const QString &errorTxt) -{ - Q_UNUSED(exitCode) - PwqualityManager::ERROR_TYPE error = PwqualityManager::instance()->verifyPassword(m_curUser->name(), - m_newPasswordEdit->lineEdit()->text()); - qDebug() << "exit code:" << exitCode << "error text:" << errorTxt << "error type:" << error - << "error tips:" << PwqualityManager::instance()->getErrorTips(error); - if (exitCode != 0) { - if (errorTxt.startsWith("Current Password: passwd:", Qt::CaseInsensitive)) { - m_oldPasswordEdit->setAlert(true); - m_oldPasswordEdit->showAlertMessage(tr("Wrong password")); - return; - } - - if (m_newPasswordEdit->lineEdit()->text() == m_oldPasswordEdit->lineEdit()->text()) { - m_newPasswordEdit->setAlert(true); - m_newPasswordEdit->showAlertMessage(tr("New password should differ from the current one"), m_oldPasswordEdit, 2000); - return; - } - - if (error == PW_NO_ERR) { - if (m_newPasswordEdit->lineEdit()->text() != m_repeatPasswordEdit->lineEdit()->text()) { - m_repeatPasswordEdit->setAlert(true); - m_repeatPasswordEdit->showAlertMessage(tr("Passwords do not match"), m_repeatPasswordEdit, 2000); - return; - } - } - - m_newPasswordEdit->setAlert(true); - m_newPasswordEdit->showAlertMessage(PwqualityManager::instance()->getErrorTips(error)); - // 企业版控制中心修改密码屏蔽安全中心登录安全的接口需求 - if ((DSysInfo::uosEditionType() == DSysInfo::UosEnterprise) || (DSysInfo::uosEditionType() == DSysInfo::UosEnterpriseC)) - return; - - Q_EMIT requestCheckPwdLimitLevel(); - } else if (error != PW_NO_ERR) { - m_newPasswordEdit->setAlert(true); - m_newPasswordEdit->showAlertMessage(PwqualityManager::instance()->getErrorTips(error)); - Q_EMIT requestChangePassword(m_curUser, m_newPasswordEdit->lineEdit()->text(), m_oldPasswordEdit->lineEdit()->text(), m_oldPasswordEdit->lineEdit()->text(), false); - } else { - if (!m_passwordTipsEdit->text().simplified().isEmpty()) - requestSetPasswordHint(m_curUser, m_passwordTipsEdit->text()); - close(); - } -} - -void ModifyPasswdPage::setPasswordEditAttribute(DPasswordEdit *edit) -{ - edit->setAttribute(Qt::WA_InputMethodEnabled, false); - edit->lineEdit()->setValidator(new QRegExpValidator(QRegExp("[^\\x4e00-\\x9fa5]+"), edit)); - edit->setCopyEnabled(false); - edit->setCutEnabled(false); -} - -void ModifyPasswdPage::resetPassword(const QString &password, const QString &repeatPassword) -{ - bool check = false; - PwqualityManager::ERROR_TYPE error = PwqualityManager::instance()->verifyPassword(m_curUser->name(), password); - - if (error != PW_NO_ERR) { - m_newPasswordEdit->setAlert(true); - m_newPasswordEdit->showAlertMessage(PwqualityManager::instance()->getErrorTips(error)); - check = true; - } - - if (password != repeatPassword) { - m_repeatPasswordEdit->setAlert(true); - m_repeatPasswordEdit->showAlertMessage(tr("Passwords do not match"), m_repeatPasswordEdit, 2000); - check = true; - } - - for (auto c : password) { - if (m_passwordTipsEdit->text().contains(c)) { - m_passwordTipsEdit->setAlert(true); - m_passwordTipsEdit->showAlertMessage(tr("The hint is visible to all users. Do not include the password here."), m_passwordTipsEdit, 2000); - check = true; - } - } - - if (check) { - // 企业版控制中心修改密码屏蔽安全中心登录安全的接口需求 - if ((DSysInfo::uosEditionType() == DSysInfo::UosEnterprise) - || (DSysInfo::uosEditionType() == DSysInfo::UosEnterpriseC)) { - return; - } - - if (error != PW_NO_ERR) { - Q_EMIT requestCheckPwdLimitLevel(); - } - return; - } - - if (!m_passwordTipsEdit->text().simplified().isEmpty()) - requestSetPasswordHint(m_curUser, m_passwordTipsEdit->text()); - - Q_EMIT requestResetPassword(m_curUser, password); -} - -//在修改密码页面当前密码处设置焦点 -void ModifyPasswdPage::showEvent(QShowEvent *event) -{ - Q_UNUSED(event); - DPasswordEdit *passwordEdit = m_isCurrent ? m_oldPasswordEdit : m_newPasswordEdit; - if (passwordEdit && !passwordEdit->hasFocus()) { - passwordEdit->lineEdit()->setFocus(); - } -} - -void ModifyPasswdPage::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event); - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing, true); - QDialog::paintEvent(event); -} - -void ModifyPasswdPage::resetPasswordFinished(const QString &errorText) -{ - if (errorText.isEmpty()) { - close(); - } else { - m_newPasswordEdit->setAlert(true); - m_newPasswordEdit->showAlertMessage(errorText, m_newPasswordEdit, 2000); - } -} - -void ModifyPasswdPage::onForgetPasswordBtnClicked() -{ - m_forgetPasswordBtn->setEnabled(false); - Q_EMIT requestSecurityQuestionsCheck(m_curUser); -} - -void ModifyPasswdPage::onStartResetPasswordReplied(const QString &errorText) -{ - if (!errorText.isEmpty()) { - m_forgetPasswordBtn->setEnabled(true); - } else { - m_enableBtnTimer.singleShot(5000, this, [this]{ m_forgetPasswordBtn->setEnabled(true); }); - } - qDebug() << "Resetpassword reply:" << errorText; -} - -void ModifyPasswdPage::onSecurityQuestionsCheckReplied(const QList &questions) -{ - if (!questions.isEmpty()) { - Q_EMIT requestStartResetPasswordExec(m_curUser); - } else { - QString uosid; - Q_EMIT requestUOSID(uosid); - if (uosid.isEmpty()) { - return; - } - - QString uuid; - Q_EMIT requestUUID(uuid); - if (uuid.isEmpty()) { - return; - } - Q_EMIT requestLocalBindCheck(m_curUser, uosid, uuid); - } - qDebug() << "IsSecurityQuestionsExist:" << !questions.isEmpty(); -} - -void ModifyPasswdPage::onLocalBindCheckUbid(const QString &ubid) -{ - if (!ubid.isEmpty()) { - m_isBindCheckError = false; - Q_EMIT requestStartResetPasswordExec(m_curUser); - } else if (!m_isBindCheckError) { - UnionIDBindReminderDialog dlg; - dlg.exec(); - m_forgetPasswordBtn->setEnabled(true); - } -} - -void ModifyPasswdPage::onLocalBindCheckError(const QString &error) -{ - m_isBindCheckError = true; - m_forgetPasswordBtn->setEnabled(true); - QString tips; - if (error.contains("7500")) { - tips = tr("System error"); - } else if (error.contains("7506")) { - tips = tr("Network error"); - } - if (!tips.isEmpty()) { - DMessageManager::instance()->sendMessage(this, - style()->standardIcon(QStyle::SP_MessageBoxWarning), - tips); - } -} diff --git a/dcc-old/src/plugin-accounts/window/modifypasswdpage.h b/dcc-old/src/plugin-accounts/window/modifypasswdpage.h deleted file mode 100644 index 2f83d9c9ad..0000000000 --- a/dcc-old/src/plugin-accounts/window/modifypasswdpage.h +++ /dev/null @@ -1,91 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "src/plugin-accounts/operation/user.h" -#include "src/plugin-accounts/operation/usermodel.h" - -#include - -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -#define PASSWORD_LEVEL_ICON_NUM 3 -#define PASSWORD_LEVEL_ICON_LIGHT_MODE_PATH ":/accounts/themes/common/icons/dcc_deepin_password_strength_unactive_light_mode.svg" -#define PASSWORD_LEVEL_ICON_DEEP_MODE_PATH ":/accounts/themes/common/icons/dcc_deepin_password_strength_unactive_deep_mode.svg" -#define PASSWORD_LEVEL_ICON_LOW_PATH ":/accounts/themes/common/icons/dcc_deepin_password_strength_low.svg" -#define PASSWORD_LEVEL_ICON_MIDDLE_PATH ":/accounts/themes/common/icons/dcc_deepin_password_strength_middle.svg" -#define PASSWORD_LEVEL_ICON_HIGH_PATH ":/accounts/themes/common/icons/dcc_deepin_password_strength_high.svg" -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QHBoxLayout; -class QPushButton; -class QLabel; -QT_END_NAMESPACE - - -namespace DCC_NAMESPACE { -class SecurityLevelItem; -} - -namespace DCC_NAMESPACE { -//修改密码页面 -class ModifyPasswdPage : public DAbstractDialog -{ - Q_OBJECT - -public: - explicit ModifyPasswdPage(User *user, bool isCurrent = true, QWidget *parent = nullptr); - ~ModifyPasswdPage(); - void initWidget(); - bool judgeTextEmpty(DPasswordEdit *edit); - void clickSaveBtn(); - void onPasswordChangeFinished(const int exitCode, const QString &errorTxt); - void setPasswordEditAttribute(DPasswordEdit *); - void resetPassword(const QString &password, const QString &repeatPassword); - -protected: - void showEvent(QShowEvent *event) override; - void paintEvent(QPaintEvent *event) override; -private: - void resetPasswordFinished(const QString &errorText); - void onForgetPasswordBtnClicked(); - void onStartResetPasswordReplied(const QString &errorText); - void onSecurityQuestionsCheckReplied(const QList &questions); - -Q_SIGNALS: - void requestChangePassword(User *userInter, const QString &oldPassword, const QString &password, const QString &repeatPassword, const bool needResule = true); - void requestResetPassword(User *userInter, const QString &password); - void requestBack(UserModel::ActionOption option = UserModel::ClickCancel); - void requestSetPasswordHint(User *, const QString &); - void requestUOSID(QString &uosid); - void requestUUID(QString &uuid); - void requestLocalBindCheck(User *user, const QString &uosid, const QString &uuid); - void requestStartResetPasswordExec(User *user); - void requestSecurityQuestionsCheck(User *user); - void requestCheckPwdLimitLevel(); - -public Q_SLOTS: - void onLocalBindCheckUbid(const QString &ubid); - void onLocalBindCheckError(const QString &error); - -private: - User *m_curUser; - DPasswordEdit *m_oldPasswordEdit; - DPasswordEdit *m_newPasswordEdit; - DPasswordEdit *m_repeatPasswordEdit; - DCommandLinkButton *m_forgetPasswordBtn; - DTK_WIDGET_NAMESPACE::DLineEdit *m_passwordTipsEdit; - bool m_isCurrent; - bool m_isBindCheckError; - SecurityLevelItem *m_securityLevelItem; - QTimer m_enableBtnTimer; -}; -} diff --git a/dcc-old/src/plugin-accounts/window/pwqualitymanager.cpp b/dcc-old/src/plugin-accounts/window/pwqualitymanager.cpp deleted file mode 100644 index b9f210845a..0000000000 --- a/dcc-old/src/plugin-accounts/window/pwqualitymanager.cpp +++ /dev/null @@ -1,90 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "pwqualitymanager.h" -#include -#include - -using namespace DCC_NAMESPACE; -DCORE_USE_NAMESPACE - -PwqualityManager::PwqualityManager() - : m_passwordMinLen(0) - , m_passwordMaxLen(0) -{ -} - -PwqualityManager *PwqualityManager::instance() -{ - static PwqualityManager pwquality; - return &pwquality; -} - -PwqualityManager::ERROR_TYPE PwqualityManager::verifyPassword(const QString &user, const QString &password, CheckType checkType) -{ - switch (checkType) { - case PwqualityManager::Default: { - ERROR_TYPE error = deepin_pw_check(user.toLocal8Bit().data(), password.toLocal8Bit().data(), LEVEL_STRICT_CHECK, nullptr); - - if (error == PW_ERR_PW_REPEAT) { - error = PW_NO_ERR; - } - return error; - } - case PwqualityManager::Grub2: { - // LEVEL_STRICT_CHECK? - ERROR_TYPE error = deepin_pw_check_grub2(user.toLocal8Bit().data(), password.toLocal8Bit().data(), LEVEL_STANDARD_CHECK, nullptr); - - if (error == PW_ERR_PW_REPEAT) { - error = PW_NO_ERR; - } - return error; - } - } - - return PW_NO_ERR; -} - -PASSWORD_LEVEL_TYPE PwqualityManager::GetNewPassWdLevel(const QString &newPasswd) -{ - return get_new_passwd_strength_level(newPasswd.toLocal8Bit().data()); -} - -QString PwqualityManager::getErrorTips(PwqualityManager::ERROR_TYPE type, CheckType checkType) -{ - int passwordPalimdromeNum = (checkType == Default ? get_pw_palimdrome_num(LEVEL_STRICT_CHECK) : get_pw_palimdrome_num_grub2(LEVEL_STRICT_CHECK)); - int passwordMonotoneCharacterNum = (checkType == Default ? get_pw_monotone_character_num(LEVEL_STRICT_CHECK) : get_pw_monotone_character_num_grub2(LEVEL_STRICT_CHECK)); - int passwordConsecutiveSameCharacterNum = (checkType == Default ? get_pw_consecutive_same_character_num(LEVEL_STRICT_CHECK) : get_pw_consecutive_same_character_num_grub2(LEVEL_STRICT_CHECK)); - m_passwordMinLen = (checkType == Default ? get_pw_min_length(LEVEL_STRICT_CHECK) : get_pw_min_length_grub2(LEVEL_STRICT_CHECK)); - m_passwordMaxLen = (checkType == Default ? get_pw_max_length(LEVEL_STRICT_CHECK) : get_pw_max_length_grub2(LEVEL_STRICT_CHECK)); - - //通用校验规则 - QMap PasswordFlagsStrMap = { - {PW_ERR_PASSWORD_EMPTY, tr("Password cannot be empty")}, - {PW_ERR_LENGTH_SHORT, tr("Password must have at least %1 characters").arg(m_passwordMinLen)}, - {PW_ERR_LENGTH_LONG, tr("Password must be no more than %1 characters").arg(m_passwordMaxLen)}, - {PW_ERR_CHARACTER_INVALID, tr("Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\\{}[]:\"'<>,.?/)")}, - {PW_ERR_PALINDROME, tr("No more than %1 palindrome characters please").arg(passwordPalimdromeNum)}, - {PW_ERR_PW_MONOTONE, tr("No more than %1 monotonic characters please").arg(passwordMonotoneCharacterNum)}, - {PW_ERR_PW_CONSECUTIVE_SAME, tr("No more than %1 repeating characters please").arg(passwordConsecutiveSameCharacterNum)}, - - }; - - //服务器版校验规则 - if (DSysInfo::UosServer == DSysInfo::uosType()) { - PasswordFlagsStrMap[PW_ERR_CHARACTER_INVALID] = tr("Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\\{}[]:\"'<>,.?/)"); - PasswordFlagsStrMap[PW_ERR_PALINDROME] = tr("Password must not contain more than 4 palindrome characters"); - PasswordFlagsStrMap[PW_ERR_WORD] = tr("Do not use common words and combinations as password"); - PasswordFlagsStrMap[PW_ERR_PW_MONOTONE] = tr("Create a strong password please"); - PasswordFlagsStrMap[PW_ERR_PW_CONSECUTIVE_SAME] = tr("Create a strong password please"); - PasswordFlagsStrMap[PW_ERR_PW_FIRST_UPPERM] = tr("Do not use common words and combinations as password"); - } - - //规则校验以外的情况统一返回密码不符合安全要求 - if (PasswordFlagsStrMap.value(type).isEmpty()) { - PasswordFlagsStrMap[type] = tr("It does not meet password rules"); - } - - return PasswordFlagsStrMap.value(type); -} - diff --git a/dcc-old/src/plugin-accounts/window/pwqualitymanager.h b/dcc-old/src/plugin-accounts/window/pwqualitymanager.h deleted file mode 100644 index 4644a29ca5..0000000000 --- a/dcc-old/src/plugin-accounts/window/pwqualitymanager.h +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DEEPIN_INSTALLER_PWQUALITY_MANAGER_H -#define DEEPIN_INSTALLER_PWQUALITY_MANAGER_H - -#include "interface/namespace.h" - -#include -#include - -#include - -namespace DCC_NAMESPACE { -class PwqualityManager : public QObject -{ -Q_OBJECT -public: - typedef PW_ERROR_TYPE ERROR_TYPE; - - enum CheckType { - Default, - Grub2 - }; - - /** - * @brief PwqualityManager::instance 构造一个 单例 - * @return 返回一个静态实例 - */ - static PwqualityManager* instance(); - - /** - * @brief PwqualityManager::verifyPassword 校验密码 - * @param password 带检密码字符串 - * @return 若找到,返回text,反之返回空 - */ - ERROR_TYPE verifyPassword(const QString &user, const QString &password, CheckType checkType = Default); - PASSWORD_LEVEL_TYPE GetNewPassWdLevel(const QString &newPasswd); - QString getErrorTips(ERROR_TYPE type, CheckType checkType = Default); - -private: - PwqualityManager(); - PwqualityManager(const PwqualityManager&) = delete; - - int m_passwordMinLen; - int m_passwordMaxLen; -}; -} - -#endif // DEEPIN_INSTALLER_PWQUALITY_MANAGER_H diff --git a/dcc-old/src/plugin-accounts/window/removeuserdialog.cpp b/dcc-old/src/plugin-accounts/window/removeuserdialog.cpp deleted file mode 100644 index 08767760ac..0000000000 --- a/dcc-old/src/plugin-accounts/window/removeuserdialog.cpp +++ /dev/null @@ -1,62 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "removeuserdialog.h" - -#include -#include -#include -#include - -#include "avatarwidget.h" - -using namespace DCC_NAMESPACE; - -static QPixmap RoundPixmap(const QPixmap &pix) { - QPixmap ret(pix.size()); - ret.fill(Qt::transparent); - - QPainter painter(&ret); - painter.setRenderHints(painter.renderHints() | QPainter::Antialiasing); - - QPainterPath path; - path.addEllipse(ret.rect()); - painter.setClipPath(path); - painter.drawPixmap(0, 0, pix); - - painter.end(); - - return ret; -} - -RemoveUserDialog::RemoveUserDialog(const User *user, QWidget *parent) - : DDialog(parent) - , m_deleteHome(true) -{ - setTitle(tr("Are you sure you want to delete this account?")); - - const auto ratio = devicePixelRatioF(); - const QString iconFile = QUrl(user->currentAvatar()).toLocalFile(); - const QPixmap pix = QPixmap(iconFile).scaled(48 * ratio, 48 * ratio, Qt::IgnoreAspectRatio, Qt::FastTransformation); - QPixmap p = RoundPixmap(pix); - p.setDevicePixelRatio(ratio); - setIcon(p); - - QCheckBox *box = new QCheckBox(tr("Delete account directory")); - box->setChecked(true); - box->setAccessibleName("Delete_Account_Checkbox"); - addContent(box, Qt::AlignTop); - - QStringList buttons; - buttons << tr("Cancel") << tr("Delete"); - addButtons(buttons); - - connect(box, &QCheckBox::toggled, [this, box] { - m_deleteHome = box->checkState() == Qt::Checked; - }); -} - -bool RemoveUserDialog::deleteHome() const -{ - return m_deleteHome; -} diff --git a/dcc-old/src/plugin-accounts/window/removeuserdialog.h b/dcc-old/src/plugin-accounts/window/removeuserdialog.h deleted file mode 100644 index fbc998f458..0000000000 --- a/dcc-old/src/plugin-accounts/window/removeuserdialog.h +++ /dev/null @@ -1,29 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef REMOVEUSERDIALOG_H -#define REMOVEUSERDIALOG_H - -#include - -#include "interface/namespace.h" -#include "src/plugin-accounts/operation/user.h" - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { - -class RemoveUserDialog : public DDialog -{ - Q_OBJECT -public: - explicit RemoveUserDialog(const User *user, QWidget *parent = nullptr); - - bool deleteHome() const; - -private: - bool m_deleteHome; -}; -} - -#endif // REMOVEUSERDIALOG_H diff --git a/dcc-old/src/plugin-accounts/window/securitylevelitem.cpp b/dcc-old/src/plugin-accounts/window/securitylevelitem.cpp deleted file mode 100644 index c69a2184eb..0000000000 --- a/dcc-old/src/plugin-accounts/window/securitylevelitem.cpp +++ /dev/null @@ -1,211 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "securitylevelitem.h" -#include "widgets/accessibleinterface.h" -#include "pwqualitymanager.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -#define PASSWORD_LEVEL_ICON_LIGHT_MODE_PATH ":/accounts/icons/dcc_deepin_password_strength_unactive_light_mode.svg" -#define PASSWORD_LEVEL_ICON_DEEP_MODE_PATH ":/accounts/icons/dcc_deepin_password_strength_unactive_deep_mode.svg" -#define PASSWORD_LEVEL_ICON_LOW_PATH ":/accounts/icons/dcc_deepin_password_strength_low.svg" -#define PASSWORD_LEVEL_ICON_MIDDLE_PATH ":/accounts/icons/dcc_deepin_password_strength_middle.svg" -#define PASSWORD_LEVEL_ICON_HIGH_PATH ":/accounts/icons/dcc_deepin_password_strength_high.svg" - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE -SET_FORM_ACCESSIBLE(SecurityLevelItem, "SecurityLevelItem") -SecurityLevelItem::SecurityLevelItem(QWidget *parent) - : QWidget(parent) - , m_newPasswdLevelText(new QLabel(this)) - , m_level(NoneLevel) -{ - initIcons(); - initUi(); -} - -SecurityLevelItem::~SecurityLevelItem() -{ -} - -void SecurityLevelItem::setUser(const QString &userName) -{ - m_userName = userName; -} - -void SecurityLevelItem::bind(Dtk::Widget::DLineEdit *lineEdit) -{ - QObject::disconnect(lineEdit, &DLineEdit::textChanged, this, nullptr); - QObject::connect(lineEdit, &DLineEdit::textChanged, this, [this, lineEdit](const QString &text) { - if (text.isEmpty()) { - setLevel(SecurityLevelItem::NoneLevel); - lineEdit->setAlert(false); - lineEdit->hideAlertMessage(); - return; - } - PwqualityManager *pwQualityManager = PwqualityManager::instance(); - PASSWORD_LEVEL_TYPE level = pwQualityManager->GetNewPassWdLevel(text); - PwqualityManager::ERROR_TYPE error = pwQualityManager->verifyPassword(m_userName, text); - - switch (level) { - case PASSWORD_STRENGTH_LEVEL_HIGH: - setLevel(SecurityLevelItem::HighLevel); - break; - case PASSWORD_STRENGTH_LEVEL_MIDDLE: - setLevel(SecurityLevelItem::MidLevel); - break; - case PASSWORD_STRENGTH_LEVEL_LOW: - setLevel(SecurityLevelItem::LowLevel); - break; - default: - lineEdit->showAlertMessage(QObject::tr("Error occurred when reading the configuration files of password rules!")); - return; - } - if (error != PwqualityManager::ERROR_TYPE::PW_NO_ERR) { - lineEdit->lineEdit()->setProperty("_d_dtk_lineedit_opacity", false); - lineEdit->setAlert(true); - lineEdit->showAlertMessage(pwQualityManager->getErrorTips(error), lineEdit, 2000); - } else { - lineEdit->setAlert(false); - lineEdit->hideAlertMessage(); - } - }); -} - -void SecurityLevelItem::setLevel(SecurityLevelItem::Level level) -{ - if (level == m_level) - return; - - m_level = level; - - QPalette palette; - switch (level) { - case NoneLevel: - m_newPasswdLevelText->setText(tr("")); - m_newPasswdLevelIcons[0]->setPixmap(m_icons[NoneIcon]); - m_newPasswdLevelIcons[1]->setPixmap(m_icons[NoneIcon]); - m_newPasswdLevelIcons[2]->setPixmap(m_icons[NoneIcon]); - break; - case LowLevel: - palette.setColor(QPalette::Text, QColor("#FF5736")); - m_newPasswdLevelText->setPalette(palette); - m_newPasswdLevelText->setForegroundRole(QPalette::Text); - m_newPasswdLevelText->setText(tr("Weak")); - - m_newPasswdLevelIcons[0]->setPixmap(m_icons[RedIcon]); - m_newPasswdLevelIcons[1]->setPixmap(m_icons[NoneIcon]); - m_newPasswdLevelIcons[2]->setPixmap(m_icons[NoneIcon]); - break; - case MidLevel: - palette.setColor(QPalette::Text, QColor("#FFAA00")); - m_newPasswdLevelText->setPalette(palette); - m_newPasswdLevelText->setForegroundRole(QPalette::Text); - m_newPasswdLevelText->setText(tr("Medium")); - - m_newPasswdLevelIcons[0]->setPixmap(m_icons[YellowIcon]); - m_newPasswdLevelIcons[1]->setPixmap(m_icons[YellowIcon]); - m_newPasswdLevelIcons[2]->setPixmap(m_icons[NoneIcon]); - break; - case HighLevel: - palette.setColor(QPalette::Text, QColor("#15BB18")); - m_newPasswdLevelText->setPalette(palette); - m_newPasswdLevelText->setForegroundRole(QPalette::Text); - m_newPasswdLevelText->setText(tr("Strong")); - - m_newPasswdLevelIcons[0]->setPixmap(m_icons[GreenIcon]); - m_newPasswdLevelIcons[1]->setPixmap(m_icons[GreenIcon]); - m_newPasswdLevelIcons[2]->setPixmap(m_icons[GreenIcon]); - break; - } -} - -const QPixmap SecurityLevelItem::loadSvgImg(const QString &fileName, const int width, const int hight) -{ - if (!QFileInfo::exists(fileName)) - return QPixmap(); - - QPixmap pixmap(width, hight); - QSvgRenderer renderer(fileName); - pixmap.fill(Qt::transparent); - - QPainter painter; - painter.begin(&pixmap); - painter.setRenderHint(QPainter::Antialiasing, true); - renderer.render(&painter); - painter.end(); - - pixmap.setDevicePixelRatio(qRound(qApp->devicePixelRatio())); - - return pixmap; -} - -void SecurityLevelItem::initUi() -{ - for (int i = 0; i < PASSWORD_LEVEL_ICON_NUM; i++) { - m_newPasswdLevelIcons[i] = new QLabel; - } - - QHBoxLayout *newPasswdLevelLayout = new QHBoxLayout; - newPasswdLevelLayout->setMargin(0); - m_newPasswdLevelText->setFixedWidth(55); - m_newPasswdLevelText->setFixedHeight(20); - m_newPasswdLevelText->setAlignment(Qt::AlignRight); - DFontSizeManager::instance()->bind(m_newPasswdLevelText, DFontSizeManager::T8); - newPasswdLevelLayout->addWidget(m_newPasswdLevelText, 0, Qt::AlignRight); - newPasswdLevelLayout->addSpacing(4); - - for (int i = 0; i < PASSWORD_LEVEL_ICON_NUM; i++) { - m_newPasswdLevelIcons[i]->setFixedWidth(8); - m_newPasswdLevelIcons[i]->setFixedHeight(4); - m_newPasswdLevelIcons[i]->setPixmap(m_icons[NoneIcon]); - } - - newPasswdLevelLayout->addWidget(m_newPasswdLevelIcons[0]); - newPasswdLevelLayout->addSpacing(4); - - newPasswdLevelLayout->addWidget(m_newPasswdLevelIcons[1]); - newPasswdLevelLayout->addSpacing(4); - - newPasswdLevelLayout->addWidget(m_newPasswdLevelIcons[2]); - newPasswdLevelLayout->addSpacing(50); - setLayout(newPasswdLevelLayout); -} - -void SecurityLevelItem::initIcons() -{ - qreal pixelRatio = devicePixelRatioF(); - - auto onThemeTypeChanged = [=](DGuiApplicationHelper::ColorType themeType) { - switch (themeType) { - case DGuiApplicationHelper::UnknownType: - case DGuiApplicationHelper::LightType: - m_icons[NoneIcon] = loadSvgImg(PASSWORD_LEVEL_ICON_LIGHT_MODE_PATH, qRound(8 * pixelRatio), qRound(4 * pixelRatio)); - break; - case DGuiApplicationHelper::DarkType: - m_icons[NoneIcon] = loadSvgImg(PASSWORD_LEVEL_ICON_DEEP_MODE_PATH, qRound(8 * pixelRatio), qRound(4 * pixelRatio)); - break; - } - }; - - onThemeTypeChanged(DGuiApplicationHelper::instance()->themeType()); - - m_icons[RedIcon] = loadSvgImg(PASSWORD_LEVEL_ICON_LOW_PATH, qRound(8 * pixelRatio), qRound(4 * pixelRatio)); - m_icons[YellowIcon] = loadSvgImg(PASSWORD_LEVEL_ICON_MIDDLE_PATH, qRound(8 * pixelRatio), qRound(4 * pixelRatio)); - m_icons[GreenIcon] = loadSvgImg(PASSWORD_LEVEL_ICON_HIGH_PATH, qRound(8 * pixelRatio), qRound(4 * pixelRatio)); - - connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [=](DGuiApplicationHelper::ColorType themeType) { - onThemeTypeChanged(themeType); - setLevel(m_level); - }); -} diff --git a/dcc-old/src/plugin-accounts/window/securitylevelitem.h b/dcc-old/src/plugin-accounts/window/securitylevelitem.h deleted file mode 100644 index 6392dda3db..0000000000 --- a/dcc-old/src/plugin-accounts/window/securitylevelitem.h +++ /dev/null @@ -1,67 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_WIDGETS_SECURITYLEVEL_H -#define DCC_WIDGETS_SECURITYLEVEL_H - -#include "interface/namespace.h" - -#include - -#include - -#define PASSWORD_LEVEL_ICON_NUM 3 -DWIDGET_BEGIN_NAMESPACE -class DLineEdit; -DWIDGET_END_NAMESPACE - -QT_BEGIN_NAMESPACE -class QLabel; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class SecurityLevelItem : public QWidget -{ - Q_OBJECT -public: - explicit SecurityLevelItem(QWidget *parent = nullptr); - ~SecurityLevelItem(); - - void setUser(const QString &userName); - void bind(DTK_WIDGET_NAMESPACE::DLineEdit *lineEdit); - - enum Level { - NoneLevel = 0, - LowLevel, - MidLevel, - HighLevel - }; - Q_ENUM(Level) - - enum IconType { - NoneIcon = 0, - RedIcon, - YellowIcon, - GreenIcon, - ICONTYPE_NR_ITEMS - }; - Q_ENUM(IconType) - -public: - void setLevel(Level level); - -private: - const QPixmap loadSvgImg(const QString &fileName, const int width, const int hight); - void initUi(); - void initIcons(); - -private: - QLabel *m_newPasswdLevelText; - QLabel *m_newPasswdLevelIcons[PASSWORD_LEVEL_ICON_NUM]; - QPixmap m_icons[ICONTYPE_NR_ITEMS]; - Level m_level; - QString m_userName; -}; -} // namespace DCC_NAMESPACE - -#endif // DCC_WIDGETS_SECURITYLEVEL_H diff --git a/dcc-old/src/plugin-accounts/window/securityquestionspage.cpp b/dcc-old/src/plugin-accounts/window/securityquestionspage.cpp deleted file mode 100644 index 74440173db..0000000000 --- a/dcc-old/src/plugin-accounts/window/securityquestionspage.cpp +++ /dev/null @@ -1,350 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "securityquestionspage.h" -#include "createaccountpage.h" - -#include -#include -#include - -#include - -#include -#include - - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -static void palrtteTransparency(QWidget *widget, qint8 alphaFloat) -{ - QPalette palette = widget->palette(); - QColor color = DGuiApplicationHelper::adjustColor(palette.color(QPalette::Active, QPalette::BrightText), 0, 0, 0, 0, 0, 0, alphaFloat); - palette.setColor(QPalette::WindowText, color); - widget->setPalette(palette); -} - -SecurityQuestionsPage::SecurityQuestionsPage(User *user, QWidget *parent) - : QWidget(parent) - , m_curUser(user) - , m_questionCombobox1(new DComboBox) - , m_questionCombobox2(new DComboBox) - , m_questionCombobox3(new DComboBox) - , m_answerEdit1(new DLineEdit) - , m_answerEdit2(new DLineEdit) - , m_answerEdit3(new DLineEdit) -{ - initWidget(); - initData(); -} - -SecurityQuestionsPage::~SecurityQuestionsPage() -{ - -} - -void SecurityQuestionsPage::initWidget() -{ - this->setAccessibleName("SecurityQuestionsPage"); - - QLabel *titleLabel = new QLabel(tr("Security Questions")); - titleLabel->setObjectName("TitleLabel"); - titleLabel->setAccessibleName("DDialogTitleLabel"); - titleLabel->setAttribute(Qt::WA_TransparentForMouseEvents); - titleLabel->setWordWrap(true); - titleLabel->setAlignment(Qt::AlignCenter); - titleLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - DFontSizeManager *fontManager = DFontSizeManager::instance(); - fontManager->bind(titleLabel, DFontSizeManager::T5, QFont::Medium); - palrtteTransparency(titleLabel, -10); - - QLabel *messageLabel = new QLabel(tr("These questions will be used to help reset your password in case you forget it.")); - fontManager->bind(messageLabel, DFontSizeManager::T6, QFont::Medium); - messageLabel->setObjectName("MessageLabel"); - messageLabel->setAccessibleName("DDialogMessageLabel"); - messageLabel->setAttribute(Qt::WA_TransparentForMouseEvents); - messageLabel->setWordWrap(true); - messageLabel->setAlignment(Qt::AlignCenter); - messageLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - palrtteTransparency(messageLabel, -30); - - QVBoxLayout *mainContentLayout = new QVBoxLayout(this); - mainContentLayout->setContentsMargins(10, 20, 10, 10); - mainContentLayout->setSpacing(0); - - mainContentLayout->addWidget(titleLabel); - mainContentLayout->addSpacing(10); - mainContentLayout->addWidget(messageLabel); - mainContentLayout->addSpacing(20); - - QLabel *questionLabel1 = new QLabel(tr("Security question 1") + ":"); - mainContentLayout->addWidget(questionLabel1, 0, Qt::AlignLeft); - mainContentLayout->addSpacing(6); - mainContentLayout->addWidget(m_questionCombobox1); - mainContentLayout->addSpacing(10); - mainContentLayout->addWidget(m_answerEdit1); - mainContentLayout->addSpacing(20); - - QLabel *questionLabel2 = new QLabel(tr("Security question 2") + ":"); - mainContentLayout->addWidget(questionLabel2, 0, Qt::AlignLeft); - mainContentLayout->addSpacing(6); - mainContentLayout->addWidget(m_questionCombobox2); - mainContentLayout->addSpacing(10); - mainContentLayout->addWidget(m_answerEdit2); - mainContentLayout->addSpacing(20); - - QLabel *questionLabel3 = new QLabel(tr("Security question 3") + ":"); - mainContentLayout->addWidget(questionLabel3, 0, Qt::AlignLeft); - mainContentLayout->addSpacing(6); - mainContentLayout->addWidget(m_questionCombobox3); - mainContentLayout->addSpacing(10); - mainContentLayout->addWidget(m_answerEdit3); - mainContentLayout->addStretch(0); - - QPushButton *cancelButton = new QPushButton(tr("Cancel")); - DSuggestButton *confirmButton = new DSuggestButton(tr("Confirm")); - QHBoxLayout *buttonHLayout = new QHBoxLayout; - buttonHLayout->setSpacing(0); - buttonHLayout->addWidget(cancelButton); - buttonHLayout->addSpacing(10); - buttonHLayout->addWidget(confirmButton); - - mainContentLayout->addStretch(); - mainContentLayout->addLayout(buttonHLayout); - - addItems(m_questionCombobox1); - addItems(m_questionCombobox2); - addItems(m_questionCombobox3); - - connect(cancelButton, &QPushButton::clicked, this, [this] { - // 关闭当前界面时需要断开信号连接 - disconnect(m_curUser, &User::startSecurityQuestionsCheckReplied, this, &SecurityQuestionsPage::onSecurityQuestionsCheckReplied); - disconnect(m_curUser, &User::setSecurityQuestionsReplied, this, &SecurityQuestionsPage::onSetSecurityQuestionsReplied); - Q_EMIT requestBack(); - }); - - connect(confirmButton, &QPushButton::clicked, this, &SecurityQuestionsPage::onConfirmButtonClicked); - connect(m_questionCombobox1, qOverload(&QComboBox::currentIndexChanged), this, &SecurityQuestionsPage::onQuestionCombobox1CurrentTextChanged); - connect(m_questionCombobox2, qOverload(&QComboBox::currentIndexChanged), this, &SecurityQuestionsPage::onQuestionCombobox2CurrentTextChanged); - connect(m_questionCombobox3, qOverload(&QComboBox::currentIndexChanged), this, &SecurityQuestionsPage::onQuestionCombobox3CurrentTextChanged); - connect(m_answerEdit1, &DLineEdit::textChanged, this, &SecurityQuestionsPage::onAnswerEdit1CurrentTextChanged); - connect(m_answerEdit2, &DLineEdit::textChanged, this, &SecurityQuestionsPage::onAnswerEdit2CurrentTextChanged); - connect(m_answerEdit3, &DLineEdit::textChanged, this, &SecurityQuestionsPage::onAnswerEdit3CurrentTextChanged); - connect(m_curUser, &User::startSecurityQuestionsCheckReplied, this, &SecurityQuestionsPage::onSecurityQuestionsCheckReplied); - connect(m_curUser, &User::setSecurityQuestionsReplied, this, &SecurityQuestionsPage::onSetSecurityQuestionsReplied); - - m_answerEdit1->setFocus(); -} - -void SecurityQuestionsPage::initData() -{ - m_answerEdit1->setEchoMode(QLineEdit::PasswordEchoOnEdit); - m_answerEdit2->setEchoMode(QLineEdit::PasswordEchoOnEdit); - m_answerEdit3->setEchoMode(QLineEdit::PasswordEchoOnEdit); - m_answerEdit1->setPlaceholderText(tr("Keep the answer under 30 characters")); - m_answerEdit2->setPlaceholderText(tr("Keep the answer under 30 characters")); - m_answerEdit3->setPlaceholderText(tr("Keep the answer under 30 characters")); -} - -void SecurityQuestionsPage::onConfirmButtonClicked() -{ - if (isSecurityQuestionsEmpty()) { - return; - } - - int index1 = m_questionCombobox1->currentIndex(); - int index2 = m_questionCombobox2->currentIndex(); - int index3 = m_questionCombobox3->currentIndex(); - - if ((index1 == index2) || (index2 == index3 ) || (index1 == index3)) { - DMessageManager::instance()->sendMessage(this, - style()->standardIcon(QStyle::SP_MessageBoxWarning), - tr("Do not choose a duplicate question please")); - return; - } - - if (!isAllAnswersCharactersSizeRight()) { - return; - } - - QMap securityQuestions { - {index1, cryptUserPassword(m_answerEdit1->text()).toUtf8()}, - {index2, cryptUserPassword(m_answerEdit2->text()).toUtf8()}, - {index3, cryptUserPassword(m_answerEdit3->text()).toUtf8()}}; - - Q_EMIT requestSetSecurityQuestions(m_curUser, securityQuestions); -} - -void SecurityQuestionsPage::onQuestionCombobox1CurrentTextChanged(int index) -{ - m_answerEdit1->clear(); - checkQuestionDuplicate(index, m_questionCombobox2->currentIndex(), m_questionCombobox3->currentIndex(), m_questionCombobox1); -} - -void SecurityQuestionsPage::onQuestionCombobox2CurrentTextChanged(int index) -{ - m_answerEdit2->clear(); - checkQuestionDuplicate(index, m_questionCombobox1->currentIndex(), m_questionCombobox3->currentIndex(), m_questionCombobox2); -} - -void SecurityQuestionsPage::onQuestionCombobox3CurrentTextChanged(int index) -{ - m_answerEdit3->clear(); - checkQuestionDuplicate(index, m_questionCombobox1->currentIndex(), m_questionCombobox2->currentIndex(), m_questionCombobox3); -} - -void SecurityQuestionsPage::onAnswerEdit1CurrentTextChanged(const QString &) -{ - hideAlert(m_answerEdit1); -} - -void SecurityQuestionsPage::onAnswerEdit2CurrentTextChanged(const QString &) -{ - hideAlert(m_answerEdit2); -} - -void SecurityQuestionsPage::onAnswerEdit3CurrentTextChanged(const QString &) -{ - hideAlert(m_answerEdit3); -} - -void SecurityQuestionsPage::onSecurityQuestionsCheckReplied(const QList &questions) -{ - for (int i = 0; i < questions.size(); ++i) { - if (i == 0) { - m_questionCombobox1->setCurrentIndex(questions.at(i)); - } else if (i == 1) { - m_questionCombobox2->setCurrentIndex(questions.at(i)); - } else if (i == 2) { - m_questionCombobox3->setCurrentIndex(questions.at(i)); - } - } -} - -void SecurityQuestionsPage::onSetSecurityQuestionsReplied(const QString &errorText) -{ - if (errorText.isEmpty()) { - // 关闭当前界面时需要先断开信号连接 - disconnect(m_curUser, &User::startSecurityQuestionsCheckReplied, this, &SecurityQuestionsPage::onSecurityQuestionsCheckReplied); - disconnect(m_curUser, &User::setSecurityQuestionsReplied, this, &SecurityQuestionsPage::onSetSecurityQuestionsReplied); - Q_EMIT requestBack(); - } else { - qWarning() << "SetSecurityQuestionsReplied:" << errorText; - } -} - -void SecurityQuestionsPage::addItems(DComboBox *questionCombobox) -{ - questionCombobox->addItem(tr("Please select a question")); - questionCombobox->addItem(tr("What's the name of the city where you were born?")); - questionCombobox->addItem(tr("What's the name of the first school you attended?")); - questionCombobox->addItem(tr("Who do you love the most in this world?")); - questionCombobox->addItem(tr("What's your favorite animal?")); - questionCombobox->addItem(tr("What's your favorite song?")); - questionCombobox->addItem(tr("What's your nickname?")); - QStandardItemModel* model = qobject_cast(questionCombobox->model()); - QModelIndex firstIndex = model->index(0, questionCombobox->modelColumn(), questionCombobox->rootModelIndex()); - QStandardItem* firstItem = model->itemFromIndex(firstIndex); - firstItem->setSelectable(false); - firstItem->setEnabled(false); -} - -bool SecurityQuestionsPage::isContentEmpty(DComboBox *comboBox) -{ - DAlertControl *control = new DAlertControl(comboBox, this); - if (comboBox->currentIndex() == 0) { - control->setAlert(true); - control->showAlertMessage(tr("It cannot be empty"), comboBox, 3000); - } else { - control->setAlert(false); - } - - return comboBox->currentIndex() == 0; -} - -bool SecurityQuestionsPage::isContentEmpty(DLineEdit *edit) -{ - if (edit->text().isEmpty()) { - edit->setAlert(true); - edit->showAlertMessage(tr("It cannot be empty"), edit, 2000); - } else { - edit->setAlert(false); - } - - return edit->text().isEmpty(); -} - -bool SecurityQuestionsPage::isSecurityQuestionsEmpty() -{ - return isContentEmpty(m_questionCombobox1) || isContentEmpty(m_questionCombobox2) || isContentEmpty(m_questionCombobox3) || - isContentEmpty(m_answerEdit1) || isContentEmpty(m_answerEdit2) || isContentEmpty(m_answerEdit3); -} - -QString SecurityQuestionsPage::cryptUserPassword(const QString &password) -{ - /* - NOTE(kirigaya): Password is a combination of salt and crypt function. - slat is begin with $6$, 16 byte of random values, at the end of $. - crypt function will return encrypted values. - */ - - const QString seedchars("./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"); - char salt[] = "$6$................$"; - - std::random_device r; - std::default_random_engine e1(r()); - std::uniform_int_distribution uniform_dist(0, seedchars.size() - 1); //seedchars.size()是64,生成随机数的范围应该写成[0, 63]。 - - // Random access to a character in a restricted list - for (int i = 0; i != 16; i++) { - salt[3 + i] = seedchars.at(uniform_dist(e1)).toLatin1(); - } - - return crypt(password.toUtf8().data(), salt); -} - -bool SecurityQuestionsPage::isAnswersCharactersSizeRight(DLineEdit *edit) -{ - if (edit->text().size() > SECURITY_ANSWERS_CHARACTERS_MAX_SIZE) { - edit->setAlert(true); - edit->showAlertMessage(tr("Keep the answer under 30 characters"), edit, 2000); - } else { - edit->setAlert(false); - } - - return edit->text().size() <= SECURITY_ANSWERS_CHARACTERS_MAX_SIZE; -} - -void SecurityQuestionsPage::checkQuestionDuplicate(int id, int id1, int id2, QWidget *w) -{ - if (id == id1 || id == id2) { - DAlertControl *control = new DAlertControl(w, this); - control->setAlert(true); - control->showAlertMessage(tr("Do not choose a duplicate question please"), w, 3000); - } -} - -void SecurityQuestionsPage::hideAlert(DLineEdit *edit) -{ - if (edit->isAlert()) { - edit->hideAlertMessage(); - edit->setAlert(false); - } -} - -bool SecurityQuestionsPage::isAllAnswersCharactersSizeRight() -{ - return isAnswersCharactersSizeRight(m_answerEdit1) && - isAnswersCharactersSizeRight(m_answerEdit2) && - isAnswersCharactersSizeRight(m_answerEdit3); -} - -//设置焦点 -void SecurityQuestionsPage::showEvent(QShowEvent *event) -{ - Q_UNUSED(event); - if (m_questionCombobox1 && !m_questionCombobox1->hasFocus()) { - m_questionCombobox1->setFocus(); - } -} diff --git a/dcc-old/src/plugin-accounts/window/securityquestionspage.h b/dcc-old/src/plugin-accounts/window/securityquestionspage.h deleted file mode 100644 index 67c1b00331..0000000000 --- a/dcc-old/src/plugin-accounts/window/securityquestionspage.h +++ /dev/null @@ -1,70 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "src/plugin-accounts/operation/user.h" -#include "src/plugin-accounts/operation/usermodel.h" - -#include -#include -#include - -#define SECURITY_QUESTIONS_NUM 6 -#define SECURITY_ANSWERS_CHARACTERS_MAX_SIZE 30 - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { - -class SecurityQuestionsPage : public QWidget -{ - Q_OBJECT -public: - explicit SecurityQuestionsPage(User *user, QWidget *parent = nullptr); - ~SecurityQuestionsPage(); - -Q_SIGNALS: - void requestBack(UserModel::ActionOption option = UserModel::ClickCancel); - void requestSetSecurityQuestions(User *userInter, const QMap &securityQuestions); - void requestSecurityQuestionsCheck(User *userInter); - -public Q_SLOTS: - void onConfirmButtonClicked(); - void onQuestionCombobox1CurrentTextChanged(int); - void onQuestionCombobox2CurrentTextChanged(int); - void onQuestionCombobox3CurrentTextChanged(int); - void onAnswerEdit1CurrentTextChanged(const QString&); - void onAnswerEdit2CurrentTextChanged(const QString&); - void onAnswerEdit3CurrentTextChanged(const QString&); - void onSecurityQuestionsCheckReplied(const QList &questions); - void onSetSecurityQuestionsReplied(const QString &errorText); - -protected: - void showEvent(QShowEvent *event) override; - -private: - void initWidget(); - void initData(); - void addItems(DComboBox *questionCombobox); - bool isContentEmpty(DComboBox *edit); - bool isContentEmpty(DLineEdit *edit); - bool isSecurityQuestionsEmpty(); - QString cryptUserPassword(const QString &password); - bool isAllAnswersCharactersSizeRight(); - bool isAnswersCharactersSizeRight(DLineEdit *edit); - void checkQuestionDuplicate(int id, int id1, int id2, QWidget* w); - void hideAlert(DLineEdit *edit); - -private: - User *m_curUser; - DComboBox *m_questionCombobox1; - DComboBox *m_questionCombobox2; - DComboBox *m_questionCombobox3; - DLineEdit *m_answerEdit1; - DLineEdit *m_answerEdit2; - DLineEdit *m_answerEdit3; -}; - -} - diff --git a/dcc-old/src/plugin-accounts/window/unionidbindreminderdialog.cpp b/dcc-old/src/plugin-accounts/window/unionidbindreminderdialog.cpp deleted file mode 100644 index ff003980aa..0000000000 --- a/dcc-old/src/plugin-accounts/window/unionidbindreminderdialog.cpp +++ /dev/null @@ -1,34 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "unionidbindreminderdialog.h" -#include -#include -#include - -DCORE_USE_NAMESPACE -DGUI_USE_NAMESPACE - -UnionIDBindReminderDialog::UnionIDBindReminderDialog(QWidget *parent) - : DDialog(tr("The user account is not linked to Union ID"), - tr("To reset passwords, you should authenticate your Union ID first. Click \"Go to Link\" to finish the settings.")) -{ - setParent(parent); - setIcon(DIconTheme::findQIcon("dialog-warning")); - QStringList buttons; - buttons << tr("Cancel"); - addButtons(buttons); - addButton(tr("Go to Link"), true, ButtonRecommend); - - connect(getButton(1), &QPushButton::clicked, this, []{ - DDBusSender() - .service("org.deepin.dde.ControlCenter1") - .interface("org.deepin.dde.ControlCenter1") - .path("/org/deepin/dde/ControlCenter1") - .method("ShowPage") - .arg(QStringLiteral("cloudsync")) - .arg(tr("")) - .call(); - }); -} - diff --git a/dcc-old/src/plugin-accounts/window/unionidbindreminderdialog.h b/dcc-old/src/plugin-accounts/window/unionidbindreminderdialog.h deleted file mode 100644 index 4ae2649751..0000000000 --- a/dcc-old/src/plugin-accounts/window/unionidbindreminderdialog.h +++ /dev/null @@ -1,20 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef REMINDERDDIALOG_H -#define REMINDERDDIALOG_H - -#include - -DWIDGET_USE_NAMESPACE - -class UnionIDBindReminderDialog : public DDialog -{ - Q_OBJECT -public: - explicit UnionIDBindReminderDialog(QWidget *parent = nullptr); - ~UnionIDBindReminderDialog() {} - -}; - -#endif // REMINDERDDIALOG_H diff --git a/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23module.cpp b/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23module.cpp deleted file mode 100644 index 324171c8c4..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23module.cpp +++ /dev/null @@ -1,110 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "adapterv20tov23module.h" -#include "moduleinterface.h" -#include -#include - -AdapterV20toV23Module::AdapterV20toV23Module(dccV20::ModuleInterface *v20Module) - : ModuleObject() - , m_v20Module(v20Module) - , m_layout(nullptr) -{ - setName(v20Module->name()); - setDisplayName(v20Module->displayName()); - setIcon(m_v20Module->icon()); -} - -AdapterV20toV23Module::~AdapterV20toV23Module() -{ - delete m_v20Module; -} - -dccV20::ModuleInterface *AdapterV20toV23Module::inter() -{ - return m_v20Module; -} - -void AdapterV20toV23Module::active() -{ - emit actived(); - m_v20Module->active(); -} - -void AdapterV20toV23Module::deactive() -{ - m_layout = nullptr; - for (auto &&w : m_widgets) { - w = nullptr; - } - - m_v20Module->deactive(); -} - -QString AdapterV20toV23Module::path() const -{ - return m_v20Module->path(); -} - -QString AdapterV20toV23Module::follow() const -{ - return m_v20Module->follow(); -} - -bool AdapterV20toV23Module::enabled() const -{ - return m_v20Module->enabled(); -} - -void AdapterV20toV23Module::setWidget(int index) -{ - if (!m_layout) - return; - - while (m_layout->count() > index) { - QLayoutItem *item = m_layout->takeAt(index); - QWidget *oldW = item->widget(); - if (!m_widgets.contains(oldW)) { - oldW->setVisible(false); - oldW->setParent(nullptr); - oldW->deleteLater(); - } - delete item; - } - - for (int i = index; i < m_widgets.count(); ++i) { - m_layout->addWidget(m_widgets.at(i), i * 4 + 3); - } -} - -void AdapterV20toV23Module::setChildPage(int level, QWidget *w) -{ - while (level < m_widgets.size()) { - m_widgets.takeLast(); - } - m_widgets.append(w); - setWidget(level); -} - -void AdapterV20toV23Module::popWidget(QWidget *w) -{ - while (!m_widgets.isEmpty()) { - QWidget *last = m_widgets.takeLast(); - if (last == w) - break; - } - setWidget(0); -} - -QWidget *AdapterV20toV23Module::page() -{ - QWidget *parentWidget = new QWidget(); - m_layout = new QHBoxLayout(); - m_layout->setMargin(0); - m_layout->setSpacing(0); - parentWidget->setLayout(m_layout); - setWidget(0); - - return parentWidget; -} diff --git a/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23module.h b/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23module.h deleted file mode 100644 index ef99665294..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23module.h +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ADAPTERV20TOV23MODULE_H -#define ADAPTERV20TOV23MODULE_H - -#include "interface/moduleobject.h" - -class QEvent; -class QTimer; - -class QHBoxLayout; -namespace dccV20 { -class ModuleInterface; -} - -class AdapterV20toV23Module : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit AdapterV20toV23Module(dccV20::ModuleInterface *v20Module); - ~AdapterV20toV23Module(); - - virtual void active() override; - virtual void deactive() override; - - dccV20::ModuleInterface *inter(); - void setChildPage(int level, QWidget *w); - void popWidget(QWidget *w); - - virtual QWidget *page() override; - -Q_SIGNALS: - void actived(); - -public: - QString path() const; - QString follow() const; - bool enabled() const; - -private: - void setWidget(int index); - -private: - dccV20::ModuleInterface *m_v20Module; - QList m_widgets; - QHBoxLayout *m_layout; -}; - -#endif // ADAPTERV20TOV23MODULE_H diff --git a/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23plugin.cpp b/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23plugin.cpp deleted file mode 100644 index 53efdceb86..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23plugin.cpp +++ /dev/null @@ -1,185 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "adapterv20tov23plugin.h" -#include "adapterv20tov23module.h" -#include "moduleinterface.h" -#include "frameproxyv20.h" -#include "pluginmanagerv20.h" - -#include -#include -#include -#include - -AdapterV20toV23Root::AdapterV20toV23Root(QObject *parent) - : ModuleObject("adapterV20toV23", QString(), parent) - , m_root(nullptr) - , m_timer(nullptr) - , m_prameProxy(nullptr) - , m_pluginManagerV20(nullptr) - , m_status(WaitParent) - , m_tryCount(50) -{ - setHidden(true); -} - -AdapterV20toV23Root::~AdapterV20toV23Root() -{ - if (m_timer) - delete m_timer; - if (m_pluginManagerV20) - delete m_pluginManagerV20; - if (m_prameProxy) - delete m_prameProxy; -} - -void AdapterV20toV23Root::init() -{ - m_timer = new QTimer(this); - connect(m_timer, &QTimer::timeout, this, &AdapterV20toV23Root::timerTask); - m_timer->start(10); -} - -bool AdapterV20toV23Root::loadFinished() const -{ - return m_status == LoadFinished; -} - -dccV23::ModuleObject *AdapterV20toV23Root::moduleRoot() const -{ - return m_root; -} - -void AdapterV20toV23Root::timerTask() -{ - switch (m_status) { - case WaitParent: // 等待获取父对象 - m_root = getParent(); - if (m_root) - m_status = GetPaths; - break; - case GetPaths: // 获取插件路径,并完成一些初始化 - m_root->removeChild(this); - connect(m_root, &ModuleObject::destroyed, this, &AdapterV20toV23Root::deleteLater); - connect(m_root, &ModuleObject::insertedChild, this, &AdapterV20toV23Root::pushModule, Qt::QueuedConnection); - m_prameProxy = new FrameProxyV20(this); - m_prameProxy->setRootModule(m_root); - m_pluginManagerV20 = new PluginManagerV20(); - m_pluginPaths = m_pluginManagerV20->pluginPath(); - m_status = LoadPlugin; - break; - case LoadPlugin: // 加载插件,每次加载一个 - if (!m_pluginPaths.isEmpty()) - m_pluginManagerV20->loadPlugin(m_pluginPaths.takeFirst(), m_prameProxy); - else { - m_modules = m_pluginManagerV20->modules(); - delete m_pluginManagerV20; - m_pluginManagerV20 = nullptr; - m_status = InsertModule; - } - break; - case InsertModule: // 尝试插入 - pushModule(); - m_tryCount--; - if (m_modules.isEmpty() || m_tryCount <= 0) - m_status = InsertAllModule; - break; - case InsertAllModule: // 插入所有项,并断开信号 - disconnect(m_root, &ModuleObject::insertedChild, this, &AdapterV20toV23Root::pushModule); - m_timer->stop(); - delete m_timer; - m_timer = nullptr; - insertModule(true); - m_status = LoadFinished; - break; - default: - break; - } -} - -void AdapterV20toV23Root::pushModule() -{ - insertModule(false); -} - -void AdapterV20toV23Root::insertModule(bool append) -{ - while (!m_modules.isEmpty()) { - auto &&module = m_modules.takeFirst(); - QString path = module->path(); - QString follow = module->follow(); - ModuleObject *root = m_root; - if (path != "mainwindow") { - auto it = std::find_if(m_root->childrens().begin(), m_root->childrens().end(), [path](auto &&child) { - return child->name() == path; - }); - - if (it == m_root->childrens().end()) { - if (append) { - follow = QString::number(m_root->getChildrenSize() + 1); - root = m_root; - } else { - m_modules.append(module); - return; - } - } else { - root = (*it); - } - } - bool ok; - int index = follow.toInt(&ok) - 1; - if (!ok) { - index = -1; - for (int i = 0; index == -1 && i < root->getChildrenSize(); i++) { - if (root->children(i)->name() == follow) - index = i + 1; - } - } - if (index == -1) { - if (append) { - index = m_root->getChildrenSize(); - } else { - m_modules.append(module); - return; - } - } - root->insertChild(index, module); - - m_prameProxy->append(module); - dccV20::ModuleInterface *inter = module->inter(); - inter->setFrameProxy(m_prameProxy); - if (inter->follow() != MAINWINDOW && m_prameProxy) { - m_prameProxy->setSearchPath(inter); - } - inter->preInitialize(false); - inter->initialize(); - } -} - -/////////////////////////// -AdapterV20toV23Plugin::AdapterV20toV23Plugin(QObject *parent) - : PluginInterface(parent) -{ -} - -AdapterV20toV23Plugin::~AdapterV20toV23Plugin() -{ -} - -QString AdapterV20toV23Plugin::name() const -{ - return "adapterv20tov23"; -} - -QString AdapterV20toV23Plugin::follow() const -{ - return PluginInterface::follow(); -} - -DCC_NAMESPACE::ModuleObject *AdapterV20toV23Plugin::module() -{ - auto root = new AdapterV20toV23Root; - root->init(); - return root; -} diff --git a/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23plugin.h b/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23plugin.h deleted file mode 100644 index 13cdd7756f..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/adapterv20tov23plugin.h +++ /dev/null @@ -1,68 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef ADAPTERV20TOV23PLUGIN_H -#define ADAPTERV20TOV23PLUGIN_H - -#include "interface/moduleobject.h" -#include "interface/plugininterface.h" -class QEvent; -class QTimer; - -class FrameProxyV20; -class PluginManagerV20; -class AdapterV20toV23Module; - -class AdapterV20toV23Root : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit AdapterV20toV23Root(QObject *parent = nullptr); - ~AdapterV20toV23Root(); - - void init(); - bool loadFinished() const; - ModuleObject *moduleRoot() const; - -public Q_SLOTS: - void timerTask(); - void pushModule(); - void insertModule(bool append); - -private: - enum Status{ - WaitParent, - GetPaths, - LoadPlugin, - InsertModule, - InsertAllModule, // 对于找不到位置的插到最后 - LoadFinished, - }; - ModuleObject *m_root; - QTimer *m_timer; - FrameProxyV20 *m_prameProxy; - PluginManagerV20 *m_pluginManagerV20; - Status m_status; - QStringList m_pluginPaths; - QList m_modules; - int m_tryCount; - -}; - -class AdapterV20toV23Plugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.AdapterV20toV23" FILE "plugin-adapterv20tov23.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit AdapterV20toV23Plugin(QObject *parent = nullptr); - ~AdapterV20toV23Plugin(); - - virtual QString name() const override; - virtual QString follow() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - -}; - -#endif // ADAPTERV20TOV23PLUGIN_H diff --git a/dcc-old/src/plugin-adapterv20tov23/frameproxyinterface.h b/dcc-old/src/plugin-adapterv20tov23/frameproxyinterface.h deleted file mode 100644 index 466b7002eb..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/frameproxyinterface.h +++ /dev/null @@ -1,52 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include - -class QWidget; -class QString; - -namespace dccV20 { -class ModuleInterface; -class FrameProxyInterface -{ -public: - enum PushType { - Replace, - CoverTop, - Normal, - DirectTop, - Count - }; - -public: - // Module request to into next page - virtual void pushWidget(ModuleInterface *const inter, QWidget *const w, PushType type = Normal) = 0; - virtual void popWidget(ModuleInterface *const inter) = 0; - virtual void setModuleVisible(ModuleInterface *const inter, const bool visible) = 0; - virtual void showModulePage(const QString &module, const QString &page, bool animation) = 0; - virtual void setModuleSubscriptVisible(const QString &module, bool bIsDisplay) = 0; - - Q_DECL_DEPRECATED virtual void setRemoveableDeviceStatus(QString type, bool state) = 0; - Q_DECL_DEPRECATED virtual bool getRemoveableDeviceStatus(QString type) const = 0; - - virtual void setSearchPath(ModuleInterface *const inter) const = 0; - virtual void addChildPageTrans(const QString &menu, const QString &rran) = 0; - - virtual void setModuleVisible(const QString &module, bool visible) = 0; - virtual void setWidgetVisible(const QString &module, const QString &widget, bool visible) = 0; - virtual void setDetailVisible(const QString &module, const QString &widget, const QString &detail, bool visible) = 0; - virtual void updateSearchData(const QString &module) = 0; - virtual QString moduleDisplayName(const QString &module) const = 0; -public: - ModuleInterface *currModule() const { return m_currModule; } - -protected: - void setCurrModule(ModuleInterface *const m) { m_currModule = m; } - -private: - ModuleInterface *m_currModule{nullptr}; -}; -} diff --git a/dcc-old/src/plugin-adapterv20tov23/frameproxyv20.cpp b/dcc-old/src/plugin-adapterv20tov23/frameproxyv20.cpp deleted file mode 100644 index f2285b0f40..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/frameproxyv20.cpp +++ /dev/null @@ -1,185 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "frameproxyv20.h" -#include "moduleinterface.h" - -#include -#include -#include - -using namespace dccV20; - -FrameProxyV20::FrameProxyV20(QObject *parent) - : QObject(parent) - , m_rootModule(nullptr) - , m_topWidget(nullptr) -{ -} - -void FrameProxyV20::setRootModule(DCC_NAMESPACE::ModuleObject *rootModule) -{ - m_rootModule = rootModule; -} - -void FrameProxyV20::append(AdapterV20toV23Module *module) -{ - m_moduleMap.insert(module->inter(), module); - connect(module,&AdapterV20toV23Module::actived,this,&FrameProxyV20::popAllWidgets); -} - -void FrameProxyV20::pushWidget(ModuleInterface *const inter, QWidget *const w, dccV20::FrameProxyInterface::PushType type) -{ - if (!m_moduleMap.contains(inter)) - return; - - AdapterV20toV23Module *module = m_moduleMap.value(inter); - switch (type) { - case Replace: // 替换三级页面。当在新的三级页面中单击“pop”按钮时,返回到旧的三级页面 - case CoverTop: //根据当前页面宽度去计算新增的页面放在最后面一层,或者Top页面 - case DirectTop: //不需要管页面宽度,直接将新增页面放在Top页面;为解决某些页面使用CoverTop无法全部示的问题 - if (m_topWidget) - popWidget(inter); - - module->setChildPage(m_widgets.size(), w); - m_topWidget = w; - m_widgets.push(w); - break; - case Normal: - default: - while (m_widgets.size() > 1) - popWidget(inter); - - module->setChildPage(m_widgets.size(), w); - m_widgets.push(w); - break; - } -} - -void FrameProxyV20::popWidget(ModuleInterface *const inter) -{ - Q_UNUSED(inter) - if (m_widgets.isEmpty()) - return; - - QWidget *w = m_widgets.pop(); - for (auto &&module : m_moduleMap) - module->popWidget(w); - - if (m_topWidget == w) - m_topWidget = nullptr; -} - -void FrameProxyV20::setModuleVisible(ModuleInterface *const inter, const bool visible) -{ - if (m_moduleMap.contains(inter)) - m_moduleMap.value(inter)->setHidden(!visible); -} - -void FrameProxyV20::showModulePage(const QString &module, const QString &page, bool animation) -{ - // DBus 切换页面 module/page - Q_UNUSED(animation) - QString arg = module; - if (!page.isEmpty()) - arg += "/" + page; - QDBusMessage message = QDBusMessage::createMethodCall("com.deepin.dde.ControlCenter", "/com/deepin/dde/ControlCenter", "com.deepin.dde.ControlCenter", "ShowPage"); - message << arg; - QDBusConnection::sessionBus().asyncCall(message); -} - -void FrameProxyV20::setModuleSubscriptVisible(const QString &module, bool bIsDisplay) -{ - Q_UNUSED(module); - Q_UNUSED(bIsDisplay); -} -// 该函数已废弃 -void FrameProxyV20::setRemoveableDeviceStatus(QString type, bool state) -{ - Q_UNUSED(type); - Q_UNUSED(state); -} -// 该函数已废弃 -bool FrameProxyV20::getRemoveableDeviceStatus(QString type) const -{ - Q_UNUSED(type); - return false; -} - -void FrameProxyV20::setSearchPath(ModuleInterface *const inter) const -{ - Q_UNUSED(inter) -} - -void FrameProxyV20::addChildPageTrans(const QString &menu, const QString &rran) -{ - Q_UNUSED(menu) - Q_UNUSED(rran) -} - -void FrameProxyV20::setModuleVisible(const QString &module, bool visible) -{ - auto find_it = std::find_if(m_moduleMap.cbegin(), m_moduleMap.cend(), [module](auto &it) { - return it->displayName() == module; - }); - if (find_it != m_moduleMap.cend()) - find_it.value()->setHidden(!visible); -} - -void FrameProxyV20::setWidgetVisible(const QString &module, const QString &widget, bool visible) -{ - auto find_it = std::find_if(m_moduleMap.cbegin(), m_moduleMap.cend(), [module](auto &it) { - return it->displayName() == module; - }); - if (find_it == m_moduleMap.cend()) - return; - - QStringList content = find_it.value()->contentText(); - if (visible) { - if (content.contains(widget)) - content.append(widget); - } else { - content.removeAll(widget); - } - find_it.value()->setContentText(content); -} - -void FrameProxyV20::setDetailVisible(const QString &module, const QString &widget, const QString &detail, bool visible) -{ - auto find_it = std::find_if(m_moduleMap.cbegin(), m_moduleMap.cend(), [module, widget](auto &it) { - return it->displayName() == widget || it->displayName() == module; - }); - if (find_it == m_moduleMap.cend()) - return; - - if (visible) - find_it.value()->addContentText(detail); - else { - QStringList content = find_it.value()->contentText(); - content.removeAll(detail); - find_it.value()->setContentText(content); - } -} - -void FrameProxyV20::updateSearchData(const QString &module) -{ - Q_UNUSED(module); -} - -QString FrameProxyV20::moduleDisplayName(const QString &module) const -{ - auto find_it = std::find_if(m_moduleMap.cbegin(), m_moduleMap.cend(), [module](auto &it) { - return it->name() == module; - }); - if (find_it == m_moduleMap.cend()) { - qDebug() << "Not found module:" << module; - return QString(); - } - return find_it.key()->displayName(); -} - -void FrameProxyV20::popAllWidgets() -{ - m_topWidget = nullptr; - m_widgets.clear(); -} diff --git a/dcc-old/src/plugin-adapterv20tov23/frameproxyv20.h b/dcc-old/src/plugin-adapterv20tov23/frameproxyv20.h deleted file mode 100644 index adef7efd9b..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/frameproxyv20.h +++ /dev/null @@ -1,58 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef FRAMEPROXYV20_H -#define FRAMEPROXYV20_H - -#include "frameproxyinterface.h" -#include "adapterv20tov23module.h" - -#include - -class QEvent; -class QTimer; -namespace dccV20 { -class ModuleInterface; -} -class FrameProxyV20 : public QObject, public dccV20::FrameProxyInterface -{ -public: - explicit FrameProxyV20(QObject *parent = nullptr); - ~FrameProxyV20() = default; - -public: - void setRootModule(DCC_NAMESPACE::ModuleObject *rootModule); - void append(AdapterV20toV23Module *module); - -public: - // Module request to into next page - virtual void pushWidget(dccV20::ModuleInterface *const inter, QWidget *const w, dccV20::FrameProxyInterface::PushType type = Normal) override; - virtual void popWidget(dccV20::ModuleInterface *const inter) override; - virtual void setModuleVisible(dccV20::ModuleInterface *const inter, const bool visible) override; - virtual void showModulePage(const QString &module, const QString &page, bool animation) override; - virtual void setModuleSubscriptVisible(const QString &module, bool bIsDisplay) override; - - virtual void setRemoveableDeviceStatus(QString type, bool state) override; // Q_DECL_DEPRECATED - virtual bool getRemoveableDeviceStatus(QString type) const override; // Q_DECL_DEPRECATED - - virtual void setSearchPath(dccV20::ModuleInterface *const inter) const override; - virtual void addChildPageTrans(const QString &menu, const QString &rran) override; - - virtual void setModuleVisible(const QString &module, bool visible) override; - virtual void setWidgetVisible(const QString &module, const QString &widget, bool visible) override; - virtual void setDetailVisible(const QString &module, const QString &widget, const QString &detail, bool visible) override; - virtual void updateSearchData(const QString &module) override; - virtual QString moduleDisplayName(const QString &module) const override; - -private: - void popAllWidgets(); - -private: - QMap m_moduleMap; - QStack m_widgets; - DCC_NAMESPACE::ModuleObject *m_rootModule; - QWidget *m_topWidget; -}; - -#endif // FRAMEPROXYV20_H diff --git a/dcc-old/src/plugin-adapterv20tov23/moduleinterface.h b/dcc-old/src/plugin-adapterv20tov23/moduleinterface.h deleted file mode 100644 index 7fb7c96410..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/moduleinterface.h +++ /dev/null @@ -1,190 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "frameproxyinterface.h" - -#include -#include -#include - -#include - -DGUI_USE_NAMESPACE - -//struct ModuleMetadata { -// QString icon; -// QString title; -//}; - -#define MAINWINDOW "mainwindow" -#define DISPLAY "display" -#define DEFAPP "defapp" -#define PERSONALIZATION "personalization" -#define COMMONINFO "commoninfo" -#define SOUND "sound" -#define DATETIME "datetime" -#define POWER "power" -#define KEYBOARD "keyboard" -#define SYSTEMINFO "systeminfo" -#define MOUSE "mouse" - -namespace dccV20 { - -// ModuleInterface_V1_0作为每个规范每个Module的接口,每个Module实现必须实现其所有虚函数。 -class ModuleInterface -{ -public: - ModuleInterface() = default; - ModuleInterface(FrameProxyInterface *frameProxy) : m_frameProxy(frameProxy) {} - virtual ~ModuleInterface() {} - - void setFrameProxy(FrameProxyInterface *frameProxy) { m_frameProxy = frameProxy; } - - // preInitialize会在模块初始化时被调用,用于模块在准备阶段进行资源的初始化; - // preInitialize不允许进行高资源的操作; - virtual void preInitialize(bool sync = false,FrameProxyInterface::PushType = FrameProxyInterface::PushType::Normal) {Q_UNUSED(sync)} - - // initialize初始化相应的模块,参数proxy用于Moudle向Frame信息查询和主动调用; - // 返回Module的id; - // initialize的时候不能做资源占用较高的操作; - virtual void initialize() = 0; - - // reset module settings - virtual void reset() {} - - /// - /// \brief name - /// your module name - /// \return - /// - virtual const QString name() const = 0; - - /// - /// \brief name - /// 模块名,用于显示 - /// \return - /// - virtual const QString displayName() const = 0; - - /// - /// \brief icon - /// get module icon path - /// \return - /// - virtual QIcon icon() const { - return DIconTheme::findQIcon(QString("dcc_nav_%1").arg(name())); - } - - /// - /// \brief translationPath - /// 获取多语言文件的路径,用以搜索 - /// \return QString - /// - virtual QString translationPath() const { - return QStringLiteral(":/translations/dde-control-center_%1.ts"); - } - - /// - /// \brief showPage - /// show specified module page - /// \param pageName - /// the page name - /// - virtual void showPage(const QString &pageName) { Q_UNUSED(pageName); } - - // 返回模块主Widget; - virtual QWidget *moduleWidget() { return nullptr;} - - /// - /// \brief contentPopped - /// call when specific widget popped - /// \param w - /// - virtual void contentPopped(QWidget *const w) { Q_UNUSED(w);} - - /// - /// \brief active - /// 当模块第一次被点击进入时,active会被调用,如果是插件,重载的时候必须声明为slots,否则加载不了 - virtual void active() {} - - /// - /// \brief active - /// 当模块被销毁时,deactive会被调用 - virtual void deactive() {} - - /// - /// \brief load - /// 当搜索到相关字段后,lead会被调用 - /// 如果可以正常显示则返回 0, 否则返回非0 - virtual int load(const QString &path) { - Q_UNUSED(path); - return 0; - } - - virtual QStringList availPage() const { return QStringList(); } - - /** - * @brief path - * @return 插件级别及二级菜单插件所属模块 - */ - virtual QString path() const { - return QString(); - } - - /** - * @brief follow - * @return 插件插入位置,可以字符串或者数字 - */ - virtual QString follow() const { - return QString(); - } - - /** - * @brief enabled - * @return 插件是否处于可用状态 - */ - virtual bool enabled() const { - return true; - } - - /** - * @brief addChildPageTrans - * @return 添加插件二级菜单翻译内容 - */ - virtual void addChildPageTrans() const {}; - -public: - inline void setAvailable(bool isAvailable) { m_available = isAvailable; } - inline bool isAvailable() const { return m_available; } - inline void setEnabled(bool value) { - QWidget *mainwindow = dynamic_cast(m_frameProxy); - if (mainwindow) { - mainwindow->setEnabled(value); - } - } - - inline bool deviceUnavailabel() const - { - return m_deviceUnavailabel; - } - - inline void setDeviceUnavailabel(bool deviceUnavailabel) - { - m_deviceUnavailabel = deviceUnavailabel; - } - -protected: - FrameProxyInterface *m_frameProxy{nullptr}; - bool m_available{true}; - bool m_deviceUnavailabel{false}; - -private: - virtual void initSearchData() {}; -}; - -} - -#define ModuleInterface_V1_0_iid "com.deepin.dde.ControlCenter.module/1.0" -Q_DECLARE_INTERFACE(dccV20::ModuleInterface, ModuleInterface_V1_0_iid) diff --git a/dcc-old/src/plugin-adapterv20tov23/plugin-adapterv20tov23.json b/dcc-old/src/plugin-adapterv20tov23/plugin-adapterv20tov23.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/plugin-adapterv20tov23.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-adapterv20tov23/pluginmanagerv20.cpp b/dcc-old/src/plugin-adapterv20tov23/pluginmanagerv20.cpp deleted file mode 100644 index 60068e51ae..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/pluginmanagerv20.cpp +++ /dev/null @@ -1,68 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "pluginmanagerv20.h" -#include "moduleinterface.h" -#include "frameproxyinterface.h" -#include "adapterv20tov23module.h" - -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcAdapterV20toV23Worker, "dcc-adapterv20tov23-worker") -const QString &PluginDirectory = QStringLiteral(DCC_DefaultModuleDirectory); - -using namespace DCC_NAMESPACE; -using namespace dccV20; - -PluginManagerV20::PluginManagerV20() -{ -} - -PluginManagerV20::~PluginManagerV20() -{ -} - -QStringList PluginManagerV20::pluginPath() -{ - QStringList paths; - QDir moduleDir(PluginDirectory); - if (!moduleDir.exists()) { - qCWarning(DdcAdapterV20toV23Worker) << "plugin directory not exists"; - return paths; - } - auto moduleList = moduleDir.entryInfoList(); - for (auto i : moduleList) { - QString path = i.absoluteFilePath(); - if (!QLibrary::isLibrary(path)) - continue; - paths.append(path); - } - return paths; -} - -void PluginManagerV20::loadPlugin(QString path, dccV20::FrameProxyInterface *frameProxy) -{ - Q_UNUSED(frameProxy) - qCDebug(DdcAdapterV20toV23Worker) << "loading module: " << path; - QElapsedTimer et; - et.start(); - QPluginLoader loader(path); - - QObject *instance = loader.instance(); - if (!instance) { - qDebug() << loader.errorString(); - return; - } - - auto *module = qobject_cast(instance); - if (!module) { - return; - } - qCDebug(DdcAdapterV20toV23Worker) << "load plugin Name: " << module->name() << module->displayName(); - qCDebug(DdcAdapterV20toV23Worker) << "load this plugin using time: " << et.elapsed() << "ms"; - m_modules.append(new AdapterV20toV23Module(module)); -} diff --git a/dcc-old/src/plugin-adapterv20tov23/pluginmanagerv20.h b/dcc-old/src/plugin-adapterv20tov23/pluginmanagerv20.h deleted file mode 100644 index 5aba6ab451..0000000000 --- a/dcc-old/src/plugin-adapterv20tov23/pluginmanagerv20.h +++ /dev/null @@ -1,24 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PLUGINMANAGERV20_H -#define PLUGINMANAGERV20_H -#include "frameproxyinterface.h" -#include "interface/moduleobject.h" - -class AdapterV20toV23Module; - -class PluginManagerV20 -{ -public: - explicit PluginManagerV20(); - ~PluginManagerV20(); - - QStringList pluginPath(); - void loadPlugin(QString path, dccV20::FrameProxyInterface *frameProxy); - QList modules() { return m_modules; } - -private: - QList m_modules; -}; -#endif // PLUGINMANAGERV20_H diff --git a/dcc-old/src/plugin-authentication/operation/charamangerdbusproxy.cpp b/dcc-old/src/plugin-authentication/operation/charamangerdbusproxy.cpp deleted file mode 100644 index badcc77d87..0000000000 --- a/dcc-old/src/plugin-authentication/operation/charamangerdbusproxy.cpp +++ /dev/null @@ -1,148 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "charamangerdbusproxy.h" - -#include -#include -#include -#include -#include -#include - -const static QString CharaMangerService = QStringLiteral("org.deepin.dde.Authenticate1"); - -const static QString CharaMangerPath = QStringLiteral("/org/deepin/dde/Authenticate1/CharaManger"); -const static QString CharaMangerInterface = QStringLiteral("org.deepin.dde.Authenticate1.CharaManger"); - -const static QString FingerprintPath = QStringLiteral("/org/deepin/dde/Authenticate1/Fingerprint"); -const static QString FingerprintInterface = QStringLiteral("org.deepin.dde.Authenticate1.Fingerprint"); - -const static QString SessionManagerService = QStringLiteral("org.deepin.dde.SessionManager1"); -const static QString SessionManagerPath = QStringLiteral("/org/deepin/dde/SessionManager1"); -const static QString SessionManagerInterface = QStringLiteral("org.deepin.dde.SessionManager1"); - -const static QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); -const static QString PropertiesChanged = QStringLiteral("PropertiesChanged"); - -CharaMangerDBusProxy::CharaMangerDBusProxy(QObject *parent) - : QObject(parent) - , m_charaMangerInter(new QDBusInterface(CharaMangerService, CharaMangerPath, CharaMangerInterface, QDBusConnection::systemBus(), this)) - , m_fingerprintInter(new QDBusInterface(CharaMangerService, FingerprintPath, FingerprintInterface, QDBusConnection::systemBus(), this)) - , m_SMInter(new QDBusInterface(SessionManagerService, SessionManagerPath, SessionManagerInterface, QDBusConnection::sessionBus(), this)) -{ - QDBusConnection::systemBus().connect(CharaMangerService, CharaMangerPath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); - QDBusConnection::systemBus().connect(CharaMangerService, FingerprintPath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); - QDBusConnection::sessionBus().connect(SessionManagerService, SessionManagerPath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); - - connect(m_charaMangerInter, SIGNAL(EnrollStatus(const QString &, int , const QString &)),this,SIGNAL(EnrollStatusCharaManger(const QString &, int , const QString &))); - connect(m_charaMangerInter, SIGNAL(CharaUpdated(const QString &, int)), this, SIGNAL(CharaUpdated(const QString &, int))); - connect(m_charaMangerInter, SIGNAL(DriverChanged()), this, SIGNAL(DriverChanged())); - - connect(m_fingerprintInter, SIGNAL(EnrollStatus(const QString &, int , const QString &)),this,SIGNAL(EnrollStatusFingerprint(const QString &, int , const QString &))); - connect(m_fingerprintInter, SIGNAL(Touch(const QString &, bool )),this,SIGNAL(Touch(const QString &, bool ))); -} - -void CharaMangerDBusProxy::setFingerprintInterTimeout(int timeout) -{ - m_fingerprintInter->setTimeout(timeout); -} - -QString CharaMangerDBusProxy::List(const QString &driverName, int charaType) -{ - QList argumentList; - argumentList << QVariant::fromValue(driverName) << QVariant::fromValue(charaType); - return QDBusPendingReply(m_charaMangerInter->asyncCallWithArgumentList(QStringLiteral("List"), argumentList)); -} - -QString CharaMangerDBusProxy::driverInfo() -{ - return qvariant_cast(m_charaMangerInter->property("DriverInfo")); -} - -QDBusPendingReply CharaMangerDBusProxy::EnrollStart(const QString &driverName, int charaType, const QString &charaName) -{ - QList argumentList; - argumentList << QVariant::fromValue(driverName) << QVariant::fromValue(charaType) << QVariant::fromValue(charaName); - return m_charaMangerInter->asyncCallWithArgumentList(QStringLiteral("EnrollStart"), argumentList); -} - -QDBusPendingReply<> CharaMangerDBusProxy::EnrollStop() -{ - QList argumentList; - return m_charaMangerInter->asyncCallWithArgumentList(QStringLiteral("EnrollStop"), argumentList); -} - -QDBusPendingReply<> CharaMangerDBusProxy::Delete(int charaType, const QString &charaName) -{ - QList argumentList; - argumentList << QVariant::fromValue(charaType) << QVariant::fromValue(charaName); - return m_charaMangerInter->asyncCallWithArgumentList(QStringLiteral("Delete"), argumentList); -} - -QDBusPendingReply<> CharaMangerDBusProxy::Rename(int charaType, const QString &oldName, const QString &newName) -{ - QList argumentList; - argumentList << QVariant::fromValue(charaType) << QVariant::fromValue(oldName) << QVariant::fromValue(newName); - return m_charaMangerInter->asyncCallWithArgumentList(QStringLiteral("Rename"), argumentList); -} - -void CharaMangerDBusProxy::setFingerprintTimeout(int timeout) -{ - m_fingerprintInter->setTimeout(timeout); -} - -QString CharaMangerDBusProxy::defaultDevice() -{ - return qvariant_cast(m_fingerprintInter->property("DefaultDevice")); -} - -QDBusPendingReply<> CharaMangerDBusProxy::Claim(const QString &username, bool claimed) -{ - QList argumentList; - argumentList << QVariant::fromValue(username) << QVariant::fromValue(claimed); - return m_fingerprintInter->asyncCallWithArgumentList(QStringLiteral("Claim"), argumentList); -} - -QDBusPendingReply<> CharaMangerDBusProxy::Enroll(const QString &finger) -{ - QList argumentList; - argumentList << QVariant::fromValue(finger); - return m_fingerprintInter->asyncCallWithArgumentList(QStringLiteral("Enroll"), argumentList); - -} - -QStringList CharaMangerDBusProxy::ListFingers(const QString &username) -{ - QList argumentList; - argumentList << QVariant::fromValue(username); - return QDBusPendingReply(m_fingerprintInter->asyncCallWithArgumentList(QStringLiteral("ListFingers"), argumentList)); -} - -void CharaMangerDBusProxy::StopEnroll() -{ - QList argumentList; - m_fingerprintInter->asyncCallWithArgumentList(QStringLiteral("StopEnroll"), argumentList); -} - -QDBusPendingReply<> CharaMangerDBusProxy::DeleteFinger(const QString &username, const QString &finger) -{ - QList argumentList; - argumentList << QVariant::fromValue(username) << QVariant::fromValue(finger); - return m_fingerprintInter->asyncCallWithArgumentList(QStringLiteral("DeleteFinger"), argumentList); -} - -void CharaMangerDBusProxy::RenameFinger(const QString &username, const QString &finger, const QString &newName) -{ - QList argumentList; - argumentList << QVariant::fromValue(username) << QVariant::fromValue(finger) << QVariant::fromValue(newName); - m_fingerprintInter->asyncCallWithArgumentList(QStringLiteral("RenameFinger"), argumentList); -} - -void CharaMangerDBusProxy::onPropertiesChanged(const QDBusMessage &message) -{ - QVariantMap changedProps = qdbus_cast(message.arguments().at(1).value()); - for (QVariantMap::const_iterator it = changedProps.begin(); it != changedProps.end(); ++it) { - QMetaObject::invokeMethod(this, it.key().toLatin1() + "Changed", Qt::DirectConnection, QGenericArgument(it.value().typeName(), it.value().data())); - } -} diff --git a/dcc-old/src/plugin-authentication/operation/charamangerdbusproxy.h b/dcc-old/src/plugin-authentication/operation/charamangerdbusproxy.h deleted file mode 100644 index 5e3370dc01..0000000000 --- a/dcc-old/src/plugin-authentication/operation/charamangerdbusproxy.h +++ /dev/null @@ -1,64 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef CHARAMANGERDBUSPROXY_H -#define CHARAMANGERDBUSPROXY_H - -#include -#include -#include -#include - -class QDBusInterface; -class QDBusMessage; -class CharaMangerDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit CharaMangerDBusProxy(QObject *parent = nullptr); - - void setFingerprintInterTimeout(int timeout); - -public: - // CharaManger - QString List(const QString &driverName, int charaType); - QString driverInfo(); - QDBusPendingReply EnrollStart(const QString &driverName, int charaType, const QString &charaName); - QDBusPendingReply<> EnrollStop(); - QDBusPendingReply<> Delete(int charaType, const QString &charaName); - QDBusPendingReply<> Rename(int charaType, const QString &oldName, const QString &newName); - - // Fingerprint - void setFingerprintTimeout(int timeout); - QString defaultDevice(); - QDBusPendingReply<> Claim(const QString &username, bool claimed); - QDBusPendingReply<> Enroll(const QString &finger); - QStringList ListFingers(const QString &username); - void StopEnroll(); - QDBusPendingReply<> DeleteFinger(const QString &username, const QString &finger); - void RenameFinger(const QString &username, const QString &finger, const QString &newName); - -signals: - // CharaManger signals - void CharaUpdated(const QString &charaName, int CharaType); - void DriverChanged(); - void EnrollStatusCharaManger(const QString &Sender, int Code, const QString &Msg); - void DriverInfoChanged(const QString & value) const; - - // Fingerprint signals - void EnrollStatusFingerprint(const QString &id, int code, const QString &msg); - void Touch(const QString &id, bool pressed); - - // SessionManager singnals - void LockedChanged(bool value) const; - -private slots: - void onPropertiesChanged(const QDBusMessage &message); - -private: - QDBusInterface *m_charaMangerInter; - QDBusInterface *m_fingerprintInter; - QDBusInterface *m_SMInter; -}; - -#endif // CHARAMANGERDBUSPROXY_H diff --git a/dcc-old/src/plugin-authentication/operation/charamangermodel.cpp b/dcc-old/src/plugin-authentication/operation/charamangermodel.cpp deleted file mode 100644 index b4b15f75af..0000000000 --- a/dcc-old/src/plugin-authentication/operation/charamangermodel.cpp +++ /dev/null @@ -1,372 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "charamangermodel.h" - -#include -#include -#include - -CharaMangerModel::CharaMangerModel(QObject *parent) - : QObject (parent) - , m_isFaceDriverVaild(false) - , m_facesList(QStringList()) - , m_isIrisDriverVaild(false) - , m_irisList(QStringList()) - , m_charaVaild(false) -{ - initFingerModel(); - connect(this, &CharaMangerModel::vaildFingerChanged, this, &CharaMangerModel::checkCharaVaild); - connect(this, &CharaMangerModel::vaildFaceDriverChanged, this, &CharaMangerModel::checkCharaVaild); - connect(this, &CharaMangerModel::vaildIrisDriverChanged, this, &CharaMangerModel::checkCharaVaild); -} - -void CharaMangerModel::setFaceDriverVaild(bool isVaild) -{ - if (m_isFaceDriverVaild == isVaild) - return; - m_isFaceDriverVaild = isVaild; - - Q_EMIT vaildFaceDriverChanged(isVaild); -} - -void CharaMangerModel::setFaceDriverName(const QString &driverName) -{ - if (m_faceDriverName == driverName) - return; - m_faceDriverName = driverName; -} - -void CharaMangerModel::setFacesList(const QStringList &faces) -{ - if (faces == m_facesList) - return; - - m_facesList = faces; - Q_EMIT facesListChanged(faces); -} - -void CharaMangerModel::setIrisDriverVaild(bool isVaild) -{ - if (m_isIrisDriverVaild == isVaild) - return; - m_isIrisDriverVaild = isVaild; - - Q_EMIT vaildIrisDriverChanged(isVaild); -} - -void CharaMangerModel::setIrisDriverName(const QString &driverName) -{ - if (driverName == m_irisDriverName) - return; - - m_irisDriverName = driverName; -} - -void CharaMangerModel::setIrisList(const QStringList &iris) -{ - if (iris == m_irisList) - return; - - m_irisList.clear(); - m_irisList = iris; - Q_EMIT irisListChanged(iris); -} - -void CharaMangerModel::setInputFaceFD(const int &fd) -{ - Q_EMIT tryStartInputFace(fd); -} - -void CharaMangerModel::setInputIrisFD(CharaMangerModel::AddInfoState state) -{ - Q_EMIT tryStartInputIris(state); -} - -void CharaMangerModel::initFingerModel() -{ - m_isFingerVaild = false; - - m_predefineThumbsNames = { - tr("Fingerprint1"), tr("Fingerprint2"), tr("Fingerprint3"), - tr("Fingerprint4"), tr("Fingerprint5"), tr("Fingerprint6"), - tr("Fingerprint7"), tr("Fingerprint8"), tr("Fingerprint9"), - tr("Fingerprint10") - }; - m_progress = 0; -} - -void CharaMangerModel::setFingerVaild(bool isVaild) -{ - if (m_isFingerVaild == isVaild) - return; - - m_isFingerVaild = isVaild; - - Q_EMIT vaildFingerChanged(isVaild); -} - -void CharaMangerModel::setUserName(const QString &name) -{ - if (m_userName != name) - m_userName = name; -} - -void CharaMangerModel::onFingerEnrollStatusChanged(int code, const QString& msg) -{ - QJsonDocument jsonDocument; - QJsonObject jsonObject; - - if (!msg.isEmpty()) { - jsonDocument = QJsonDocument::fromJson(msg.toLocal8Bit()); - jsonObject = jsonDocument.object(); - } - - switch(code) { - case ET_Completed: - m_progress = 0; - Q_EMIT enrollCompleted(); - break; - case ET_Failed: { - m_progress = 0; - QString title = tr("Scan failed"); - QString msg = ""; - do { - QStringList keys = jsonObject.keys(); - if (!keys.contains("subcode")) { - break; - } - auto errCode = jsonObject.value("subcode").toInt(); - switch(errCode) { - case FC_RepeatTemplet: - title = tr("The fingerprint already exists"); - msg = tr("Please scan other fingers"); - break; - case FC_UnkownError: - title = tr("Unknown error"); - msg = tr("Scan suspended"); - } - break; - } while(0); - Q_EMIT enrollFailed(title, msg); - break; - } - case ET_StagePass: { - if (msg.isEmpty()) { - // 厂商未给出进度值的情况,直接让进度值递减增加,无限趋近于100,直到录入完成 - m_progress += (100 - m_progress)/3; - Q_EMIT enrollStagePass(m_progress); - break; - } - QStringList keys = jsonObject.keys(); - if (!keys.contains("progress")) { - // 厂商未给出进度值的情况,直接让进度值递减增加,无限趋近于100,直到录入完成 - m_progress += (100 - m_progress)/3; - Q_EMIT enrollStagePass(m_progress); - break; - } - auto pro = jsonObject.value("progress").toInt(); - Q_EMIT enrollStagePass(pro); - break; - } - case ET_Retry: { - QString title = tr("Cannot recognize"); - QString msg = tr("Cannot recognize"); - do { - QStringList keys = jsonObject.keys(); - if (!keys.contains("subcode")) { - break; - } - auto errCode = jsonObject.value("subcode").toInt(); - switch(errCode) { - case RC_TouchTooShort: //接触时间过短 - title = tr("Moved too fast"); - msg = tr("Finger moved too fast, please do not lift until prompted"); - break; - case RC_ErrorFigure: //图像不可用 - title = tr("Unclear fingerprint"); - msg = tr("Clean your finger or adjust the finger position, and try again"); - break; - case RC_RepeatTouchData: //重复率过高 - title = tr("Already scanned"); - msg = tr("Adjust the finger position to scan your fingerprint fully"); - break; - case RC_RepeatFingerData: //重复手指 - title = tr("The fingerprint already exists"); - msg = tr("Please scan other fingers"); - break; - case RC_SwipeTooShort: //按压时间短 - title = tr("Moved too fast"); - msg = tr("Finger moved too fast. Please do not lift until prompted"); - break; - case RC_FingerNotCenter: //手指不在中间 - msg = tr("Adjust the finger position to scan your fingerprint fully"); - break; - case RC_RemoveAndRetry: // 拿开手指从新扫描 - msg = tr("Clean your finger or adjust the finger position, and try again"); - break; - case RC_CannotRecognize: - title = tr("Cannot recognize"); - msg = tr("Lift your finger and place it on the sensor again"); - break; - } - break; - } while(0); - Q_EMIT enrollRetry(title, msg); - break; - } - case ET_Disconnect: - Q_EMIT enrollDisconnected(); - break; - default: - break; - } -} - -void CharaMangerModel::onTouch(const QString &id, bool pressed) -{ -} - -void CharaMangerModel::refreshEnrollResult(CharaMangerModel::EnrollResult enrollRes) -{ - Q_EMIT enrollResult(enrollRes); -} - -void CharaMangerModel::setThumbsList(const QStringList &thumbs) -{ - if (thumbs != m_thumbsList) { - m_thumbsList.clear(); - m_thumbsList = thumbs; - Q_EMIT thumbsListChanged(m_thumbsList); - } -} - -void CharaMangerModel::onEnrollStatusChanged(int code, const QString &msg) -{ - // TODO: 处理所有录入状态提示信息 - Q_UNUSED(msg); - QString title = tr("Position your face inside the frame"); - switch (code) { - case STATUS_SUCCESS: - Q_EMIT enrollInfoState(AddInfoState::Success, tr("Face enrolled")); - break; - case STATUS_CANCELED: - break; - case STATUS_NOT_REAL_HUMAN: - title = tr("Position a human face please"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_FACE_NOT_CENTER: - title = tr("Position your face inside the frame"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_FACE_TOO_BIG: - title = tr("Keep away from the camera"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_FACE_TOO_SMALL: - title = tr("Get closer to the camera"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_NO_FACE: - title = tr("Position your face inside the frame"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_FACE_TOO_MANY: - title = tr("Do not position multiple faces inside the frame"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_FACE_NOT_CLEARITY: - title = tr("Make sure the camera lens is clean"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_FACE_BRIGHTNESS: - title = tr("Do not enroll in dark, bright or backlit environments"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_FACE_COVERD: - title = tr("Keep your face uncovered"); - Q_EMIT enrollStatusTips(title); - break; - case STATUS_OVERTIME: - Q_EMIT enrollInfoState(AddInfoState::Fail, tr("Scan timed out")); - break; - case STATUS_COLLAPSE: - Q_EMIT enrollInfoState(AddInfoState::Fail, tr("Device crashed, please scan again!")); - break; - default: - break; - } -} - -void CharaMangerModel::onEnrollIrisStatusChanged(int code, const QString &msg) -{ - // TODO: 处理所有录入状态提示信息 未更新 - Q_UNUSED(msg); - QString title = tr("Position your face inside the frame"); - switch (code) { - case STATUS_IRIS_SUCCESS: - Q_EMIT enrollIrisInfoState(AddInfoState::Success, tr("Face enrolled")); - break; - case STATUS_IRIS_TOO_BIG: - break; - case STATUS_IRIS_TOO_SMALL: - title = tr("Position a human face please"); - Q_EMIT enrollIrisStatusTips(title); - break; - case STATUS_IRIS_NO_FACE: - title = tr("Position your face inside the frame"); - Q_EMIT enrollIrisStatusTips(title); - break; - case STATUS_IRIS_NOT_CLEARITY: - title = tr("Keep away from the camera"); - Q_EMIT enrollIrisStatusTips(title); - break; - case STATUS_IRIS_BRIGHTNESS: - title = tr("Get closer to the camera"); - Q_EMIT enrollIrisStatusTips(title); - break; - case STATUS_IRIS_EYES_CLOSE: - title = tr("Position your face inside the frame"); - Q_EMIT enrollIrisStatusTips(title); - break; - case STATUS_IRIS_CANCELED: - Q_EMIT enrollIrisInfoState(AddInfoState::Fail, tr("Cancel")); - break; - case STATUS_IRIS_Error: - Q_EMIT enrollIrisInfoState(AddInfoState::Fail, tr("Device crashed, please scan again!")); - break; - case STATUS_IRIS_OVERTIME: - Q_EMIT enrollIrisInfoState(AddInfoState::Fail, tr("Scan timed out")); - break; - default: - break; - } -} - -void CharaMangerModel::onRefreshEnrollDate(const int &charaType) -{ - if (charaType & FACE_CHARA) { - Q_EMIT facesListChanged(this->facesList()); - } - - if (charaType & IRIS_CHARA) { - Q_EMIT irisListChanged(this->irisList()); - } -} - - - - -bool CharaMangerModel::charaVaild() const -{ - return m_charaVaild; -} - -void CharaMangerModel::setCharaVaild(bool newCharaVaild) -{ - if (m_charaVaild == newCharaVaild) - return; - m_charaVaild = newCharaVaild; - emit charaVaildChanged(m_charaVaild); -} diff --git a/dcc-old/src/plugin-authentication/operation/charamangermodel.h b/dcc-old/src/plugin-authentication/operation/charamangermodel.h deleted file mode 100644 index c5f8b5d72e..0000000000 --- a/dcc-old/src/plugin-authentication/operation/charamangermodel.h +++ /dev/null @@ -1,238 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef CHARAMANGERMODEL_H -#define CHARAMANGERMODEL_H -#include - -#define FACE_CHARA 4 -#define IRIS_CHARA 64 - -class CharaMangerModel : public QObject -{ - Q_OBJECT - Q_PROPERTY(bool faceDriverVaild READ faceDriverVaild WRITE setFaceDriverVaild NOTIFY vaildFaceDriverChanged) - Q_PROPERTY(QStringList facesList READ facesList WRITE setFacesList NOTIFY facesListChanged) - Q_PROPERTY(bool charaVaild READ charaVaild WRITE setCharaVaild NOTIFY charaVaildChanged) - -public: - /** - * @brief The EnrollStatusType enum 人脸录入状态 - */ - enum EnrollFaceStatusType { - STATUS_SUCCESS = 0, // 成功 - STATUS_NOT_REAL_HUMAN, // 非人类 - STATUS_FACE_NOT_CENTER, // 非中心 - STATUS_FACE_TOO_BIG, // 脸太大 - STATUS_FACE_TOO_SMALL, - STATUS_NO_FACE, - STATUS_FACE_TOO_MANY, // 多人 - STATUS_FACE_NOT_CLEARITY, // 不清晰 - STATUS_FACE_BRIGHTNESS, // 亮度 - STATUS_FACE_COVERD, // 遮挡 - STATUS_CANCELED, // 取消 - STATUS_OVERTIME, // 超时 - STATUS_COLLAPSE // 崩溃 - }; - - /** - * @brief The EnrollIrisStatusType enum - */ - enum EnrollIrisStatusType { - STATUS_IRIS_SUCCESS = 0, // 成功 - STATUS_IRIS_TOO_BIG, // 太大 - STATUS_IRIS_TOO_SMALL, - STATUS_IRIS_NO_FACE, - STATUS_IRIS_NOT_CLEARITY, // 不清晰 - STATUS_IRIS_BRIGHTNESS, // 亮度 - STATUS_IRIS_EYES_CLOSE, // 闭目 - STATUS_IRIS_CANCELED, // 取消 - STATUS_IRIS_Error, // 崩溃 - STATUS_IRIS_OVERTIME // 超时 - }; - - /** - * @brief The AddInfoState enum 录入的四种状态 - */ - enum AddInfoState { - StartState, - Success, - Fail, - Processing, - }; - - /** - * @brief The EnrollResult enum 指纹 - */ - enum EnrollResult { - Enroll_AuthFailed, - Enroll_ClaimFailed, - Enroll_Failed, - Enroll_Success, - Count - }; - - enum EnrollStatusType { - ET_Completed = 0, - ET_Failed, - ET_StagePass, - ET_Retry, - ET_Disconnect - }; - - enum EnrollFailedCode { - FC_UnkownError = 1, - FC_RepeatTemplet, - FC_EnrollBroken, - FC_DataFull - }; - - enum EnrollRetryCode { - RC_TouchTooShort = 1, - RC_ErrorFigure, - RC_RepeatTouchData, - RC_RepeatFingerData, - RC_SwipeTooShort, - RC_FingerNotCenter, - RC_RemoveAndRetry, - RC_CannotRecognize - }; - -public: - explicit CharaMangerModel(QObject *parent = nullptr); - - inline int faceCharaType() const { return FACE_CHARA; } - inline int irisCharaType() const { return IRIS_CHARA; } - - inline bool faceDriverVaild() const { return m_isFaceDriverVaild; } - void setFaceDriverVaild(bool isVaild); - - inline QString faceDriverName() const { return m_faceDriverName; } - void setFaceDriverName(const QString &driverName); - - inline QStringList facesList() const { return m_facesList; } - void setFacesList(const QStringList &faces); - - inline bool irisDriverVaild() const { return m_isIrisDriverVaild; } - void setIrisDriverVaild(bool isVaild); - - inline QString irisDriverName() const { return m_irisDriverName; } - void setIrisDriverName(const QString &driverName); - - inline QStringList irisList() const { return m_irisList; } - void setIrisList(const QStringList &iris); - - /** - * @brief onEnrollStatusChanged 录入状态信号,在录入过程中通过此信号提示当前录入状态 - * @param code - * @param msg - */ - void onEnrollStatusChanged(int code, const QString& msg); - void onEnrollIrisStatusChanged(int code, const QString& msg); - - /** - * @brief onRefreshEnrollDate 用于刷新用户已录入的数据( eg: 重命名失败后) - * @param charaType 对应类型 - */ - void onRefreshEnrollDate(const int &charaType); - - void setInputFaceFD(const int &fd); - void setInputIrisFD(CharaMangerModel::AddInfoState state); - - // Finger - void initFingerModel(); - inline QList getPredefineThumbsName() const { return m_predefineThumbsNames; } - - inline bool fingerVaild() const { return m_isFingerVaild; } - void setFingerVaild(bool isVaild); - - inline QString userName() const { return m_userName; } - void setUserName(const QString &name); - - inline QStringList thumbsList() const { return m_thumbsList; } - void setThumbsList(const QStringList &thumbs); - - void onFingerEnrollStatusChanged(int code, const QString& msg); - void onTouch(const QString &id, bool pressed); - - void resetProgress() { m_progress = 0; } - - void refreshEnrollResult(EnrollResult enrollRes); - - bool charaVaild() const; - void setCharaVaild(bool newCharaVaild = true); - -Q_SIGNALS: - void vaildFaceDriverChanged(const bool isVaild); - void vaildIrisDriverChanged(const bool isVaild); - - void facesListChanged(const QStringList &faces); - void irisListChanged(const QStringList &iris); - - /** - * @brief enrollInfoState 注册录入状态 用于区分页面显示状态 注:仅处理成功录入失败状态 - * @param state 录入的状态 - * @param tips 对应的提示语 - */ - void enrollInfoState(AddInfoState state, const QString &tips); - void enrollStatusTips(QString title); - - /** - * @brief enrollIrisInfoState 注册虹膜录入状态 - * @param state 录入状态 - * @param tips 提示信息 - */ - void enrollIrisInfoState(AddInfoState state, const QString &tips); - void enrollIrisStatusTips(QString title); - - /** - * @brief tryStartInputFace tryStartInputIris 获取人脸虹膜文件标识符 - * @param fd - */ - void tryStartInputFace(const int &fd); - void tryStartInputIris(CharaMangerModel::AddInfoState state); - - // FInger - void vaildFingerChanged(const bool isVaild); - void thumbsListChanged(const QStringList &thumbs); - - void enrollFailed(QString title, QString msg); - void enrollCompleted(); - void enrollStagePass(int pro); - void enrollRetry(QString title, QString msg); - void enrollDisconnected(); - void enrollResult(EnrollResult enrollRes); - - void lockedChanged(bool locked); - - //charaVaild - void charaVaildChanged(const bool isVaild); - -private: - void checkCharaVaild() { - if (m_isIrisDriverVaild || m_isFaceDriverVaild || m_isFingerVaild) - setCharaVaild(); - else - setCharaVaild(false); - } - - // 人脸 - QString m_faceDriverName; - bool m_isFaceDriverVaild; - QStringList m_facesList; - - // 虹膜 - QString m_irisDriverName; - bool m_isIrisDriverVaild; - QStringList m_irisList; - - // 指纹 - QString m_userName; - bool m_isFingerVaild{false}; - int m_progress; - QStringList m_thumbsList; - QList m_predefineThumbsNames; - bool m_charaVaild; -}; - -#endif // CHARAMANGERMODEL_H diff --git a/dcc-old/src/plugin-authentication/operation/charamangerworker.cpp b/dcc-old/src/plugin-authentication/operation/charamangerworker.cpp deleted file mode 100644 index 2177d8b9eb..0000000000 --- a/dcc-old/src/plugin-authentication/operation/charamangerworker.cpp +++ /dev/null @@ -1,413 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "charamangerworker.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -#define INPUT_TIME 30 - -CharaMangerWorker::CharaMangerWorker(CharaMangerModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_charaMangerInter(new CharaMangerDBusProxy(this)) - , m_stopTimer(new QTimer(this)) - , m_fileDescriptor(nullptr) - , m_currentInputCharaType(0) -{ - m_stopTimer->setSingleShot(true); - // 监测录入状态 - connect(m_charaMangerInter, &CharaMangerDBusProxy::EnrollStatusCharaManger, this, &CharaMangerWorker::refreshUserEnrollStatus); - - // 若添加新信息 触发本信号 - connect(m_charaMangerInter, &CharaMangerDBusProxy::CharaUpdated, this, &CharaMangerWorker::refreshUserEnrollList); - - // 获取设备信息 - connect(m_charaMangerInter, &CharaMangerDBusProxy::DriverInfoChanged, this, &CharaMangerWorker::predefineDriverInfo); - connect(m_charaMangerInter, &CharaMangerDBusProxy::DriverChanged, this, &CharaMangerWorker::refreshDriverInfo); - - //处理指纹后端的录入状态信号 - connect(m_charaMangerInter, &CharaMangerDBusProxy::EnrollStatusFingerprint, m_model, [this](const QString &, int code, const QString &msg) { - m_model->onFingerEnrollStatusChanged(code, msg); - }); - //当前此信号末实现 - connect(m_charaMangerInter, &CharaMangerDBusProxy::Touch, m_model, &CharaMangerModel::onTouch); - connect(m_charaMangerInter, &CharaMangerDBusProxy::LockedChanged, m_model, &CharaMangerModel::lockedChanged); - - initCharaManger(); - initFinger(); -} - -CharaMangerWorker::~CharaMangerWorker() -{ - if (m_fileDescriptor) { - delete m_fileDescriptor; - m_fileDescriptor = nullptr; - } - if (m_stopTimer) - m_stopTimer->stop(); -} - -void CharaMangerWorker::initCharaManger() -{ - // 获取DeviceInfo属性 - QDBusInterface charaManagerInter("org.deepin.dde.Authenticate1", - "/org/deepin/dde/Authenticate1/CharaManger", - "org.freedesktop.DBus.Properties", - QDBusConnection::systemBus()); - QDBusPendingCall call = charaManagerInter.asyncCall("Get", "org.deepin.dde.Authenticate1.CharaManger", "DriverInfo"); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, [this, call, watcher] { - if (!call.isError()) { - QDBusReply reply = call.reply(); - predefineDriverInfo(reply.value().variant().toString()); - } else { - qWarning() << "Failed to get driver info: " << call.error().message(); - } - watcher->deleteLater(); - }); - - // 录入时间超时 停止录入 - connect(m_stopTimer, &QTimer::timeout, [this] { - if (m_currentInputCharaType & FACE_CHARA) { - m_model->onEnrollStatusChanged(CharaMangerModel::EnrollFaceStatusType::STATUS_OVERTIME, QString()); - } - if (m_currentInputCharaType & IRIS_CHARA) { - m_model->onEnrollIrisStatusChanged(CharaMangerModel::EnrollIrisStatusType::STATUS_IRIS_OVERTIME, QString()); - } - - stopEnroll(); - }); -} - -void CharaMangerWorker::initFinger() -{ - struct passwd *pws; - QString userId; - pws = getpwuid(getuid()); - userId = QString(pws->pw_name); - - auto defualtDevice = m_charaMangerInter->defaultDevice(); - m_model->setFingerVaild(!defualtDevice.isEmpty()); - m_model->setUserName(userId); - - if (!defualtDevice.isEmpty()) { - refreshFingerEnrollList(userId); - } -} - -QMap CharaMangerWorker::parseDriverNameJsonData(const QString &mangerInfo) -{ - QMap tmpInfo; - if (mangerInfo.isEmpty()) - return tmpInfo; - - QJsonDocument doc = QJsonDocument::fromJson(mangerInfo.toUtf8()); - QJsonArray jInfo = doc.array(); - for (QJsonValue jValue : jInfo) { - QJsonObject jObj = jValue.toObject(); - const QString tmpName = jObj["DriverName"].toString(); - const uint tmpType = static_cast(jObj["CharaType"].toInt()); - tmpInfo.insert(tmpName, tmpType); - } - return tmpInfo; -} - -QStringList CharaMangerWorker::parseCharaNameJsonData(const QString &mangerInfo) -{ - QMap tmpInfo; - QStringList userInfoList; - if (mangerInfo.isEmpty()) - return QStringList(); - - QJsonDocument doc = QJsonDocument::fromJson(mangerInfo.toUtf8()); - QJsonArray jInfo = doc.array(); - - for (QJsonValue jValue : jInfo) { - QJsonObject jObj = jValue.toObject(); - const QString tmpName = jObj["CharaName"].toString(); - const uint64_t time = static_cast(jObj["Time"].toInt()); - tmpInfo.insert(tmpName, time); - - QMap::Iterator it = tmpInfo.begin(); - int index = 0; - while (it != tmpInfo.end()) { - if (time > it.value()) { - index++; - } - it++; - } - userInfoList.insert(index, tmpName); - } - - return userInfoList; -} - -void CharaMangerWorker::predefineDriverInfo(const QString &driverInfo) -{ - // 处理界面显示空设备 - m_model->setFaceDriverVaild(false); - m_model->setIrisDriverVaild(false); - if (driverInfo.isNull()) { - return; - } - QStringList faceDriverNames; - QStringList irisDriverNames; - - // TODO: 处理设备信息 - QMap driInfo = parseDriverNameJsonData(driverInfo); - QMap::Iterator it; - - qDebug() << "info: " << driInfo.size() << driverInfo; - // 记录driver信息 - for (it = driInfo.begin(); it != driInfo.end(); ++it) { - // 可用人脸driverName - if (it.value() & FACE_CHARA) { - faceDriverNames.append(it.key()); - m_model->setFaceDriverVaild(false); - } - - if (it.value() & IRIS_CHARA) { - irisDriverNames.append(it.key()); - m_model->setIrisDriverVaild(false); - } - } - - // 获取用户录入的数据 - if (!faceDriverNames.isEmpty()) { - m_model->setFaceDriverVaild(true); - m_model->setFaceDriverName(faceDriverNames.at(0)); - refreshUserEnrollList(faceDriverNames.at(0), FACE_CHARA); - } else { - m_model->setFaceDriverVaild(false); - } - - if (!irisDriverNames.isEmpty()) { - m_model->setIrisDriverVaild(true); - m_model->setIrisDriverName(irisDriverNames.at(0)); - refreshUserEnrollList(irisDriverNames.at(0), IRIS_CHARA); - } else { - m_model->setIrisDriverVaild(false); - } -} - -void CharaMangerWorker::refreshUserEnrollList(const QString &serviceName, const int &CharaType) -{ - auto call = m_charaMangerInter->List(serviceName, CharaType); - qDebug() << "CharaManger List : " << call; - if (call.isEmpty()) { - qDebug() << "facePrintInter ListFaces call Error or MangerList is empty! "; - if (CharaType & FACE_CHARA) - m_model->setFacesList(QStringList()); - - if (CharaType & IRIS_CHARA) - m_model->setIrisList(QStringList()); - - return; - } - refreshUserInfo(call, CharaType); -} - -void CharaMangerWorker::refreshUserInfo(const QString &EnrollInfo, const int &CharaType) -{ - QStringList userInfoList = parseCharaNameJsonData(EnrollInfo); - - if (userInfoList.isEmpty()) { - qDebug() << "get userInfo error! "; - m_model->setFacesList(QStringList()); - m_model->setIrisList(QStringList()); - return; - } - - if (CharaType & FACE_CHARA) - m_model->setFacesList(userInfoList); - if (CharaType & IRIS_CHARA) - m_model->setIrisList(userInfoList); -} - -void CharaMangerWorker::refreshDriverInfo() -{ - auto driverInfo = m_charaMangerInter->driverInfo(); - predefineDriverInfo(driverInfo); -} - -void CharaMangerWorker::entollStart(const QString &driverName, const int &charaType, const QString &charaName) -{ - qDebug() << " CharaMangerWorker::entollStart " << driverName << charaType << charaName; - m_currentInputCharaType = charaType; - - m_fileDescriptor = new QDBusPendingReply(); - *m_fileDescriptor = m_charaMangerInter->EnrollStart(driverName, charaType, charaName); - - Q_EMIT requestMainWindowEnabled(false); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(*m_fileDescriptor, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (m_fileDescriptor->isError()) { - qDebug() << "get File Descriptor error! " << m_fileDescriptor->error(); - } else { - m_stopTimer->start(1000 * INPUT_TIME); - - if (charaType & FACE_CHARA) { - Q_EMIT requestMainWindowEnabled(true); - m_model->setInputFaceFD(m_fileDescriptor->value().fileDescriptor()); - } - - if (charaType & IRIS_CHARA) { - Q_EMIT requestMainWindowEnabled(true); - m_model->setInputIrisFD(CharaMangerModel::AddInfoState::Processing); - } - - } - Q_EMIT requestMainWindowEnabled(true); - watcher->deleteLater(); - }); -} - -void CharaMangerWorker::refreshUserEnrollStatus(const QString &senderid, const int &code, const QString &codeInfo) -{ - Q_UNUSED(senderid); - if (m_currentInputCharaType & FACE_CHARA) - m_model->onEnrollStatusChanged(code, codeInfo); - - if (m_currentInputCharaType & IRIS_CHARA) - m_model->onEnrollIrisStatusChanged(code, codeInfo); -} - -void CharaMangerWorker::stopEnroll() -{ - if (m_stopTimer) { - m_stopTimer->stop(); - } - - m_currentInputCharaType = -1; - auto call = m_charaMangerInter->EnrollStop(); - if (call.isError()) { - qDebug() << "call stop Enroll " << call.error(); - } - - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [this]{ - if (m_fileDescriptor) { - delete m_fileDescriptor; - m_fileDescriptor = nullptr; - } - - sender()->deleteLater(); - }); -} - -void CharaMangerWorker::deleteCharaItem(const int &charaType, const QString &charaName) -{ - m_charaMangerInter->Delete(charaType, charaName); -} - -void CharaMangerWorker::renameCharaItem(const int &charaType, const QString &oldName, const QString &newName) -{ - auto call = m_charaMangerInter->Rename(charaType, oldName, newName); - call.waitForFinished(); - if (call.isError()) { - qDebug() << "call RenameFinger Error : " << call.error(); - m_model->onRefreshEnrollDate(charaType); - } -} - -void CharaMangerWorker::tryEnroll(const QString &name, const QString &thumb) -{ - m_charaMangerInter->setFingerprintInterTimeout(1000 * 60 * 60); - auto callClaim = m_charaMangerInter->Claim(name, true); - callClaim.waitForFinished(); - - if (callClaim.isError()) { - qDebug() << "call Claim Error : " << callClaim.error(); - m_model->refreshEnrollResult(CharaMangerModel::EnrollResult::Enroll_ClaimFailed); - } else { - m_charaMangerInter->setFingerprintInterTimeout(-1); - auto callEnroll = m_charaMangerInter->Enroll(thumb); - - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(callEnroll, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (callEnroll.isError()) { - qDebug() << "call Enroll Error : " << callEnroll.error(); - m_charaMangerInter->Claim(name, false); - m_model->refreshEnrollResult(CharaMangerModel::EnrollResult::Enroll_Failed); - } else { - Q_EMIT requestMainWindowEnabled(true); - m_model->refreshEnrollResult(CharaMangerModel::EnrollResult::Enroll_Success); - } - Q_EMIT requestMainWindowEnabled(true); - watcher->deleteLater(); - }); - } - m_charaMangerInter->setFingerprintInterTimeout(-1); - -} - -void CharaMangerWorker::refreshFingerEnrollList(const QString &id) -{ - QStringList call = m_charaMangerInter->ListFingers(id); - if (call.isEmpty()) { - qDebug() << "m_charaMangerInter->ListFingers call Error"; - m_model->setThumbsList(QStringList()); - return; - } else { - qDebug() << "m_charaMangerInter->ListFingers"; - } - m_model->setThumbsList(call); - -} - -void CharaMangerWorker::stopFingerEnroll(const QString &userName) -{ - qDebug() << "stopEnroll"; - m_charaMangerInter->StopEnroll(); - auto callClaim = m_charaMangerInter->Claim(userName, false); - callClaim.waitForFinished(); - if (callClaim.isError()) { - qDebug() << "call Claim Error : " << callClaim.error(); - } -} - -void CharaMangerWorker::deleteFingerItem(const QString &userName, const QString &finger) -{ - m_charaMangerInter->setFingerprintInterTimeout(1000 * 60 * 60); - auto callClaim = m_charaMangerInter->Claim(userName, true); - callClaim.waitForFinished(); - if (callClaim.isError()) { - qDebug() << "call Claim Error : " << callClaim.error(); - m_model->refreshEnrollResult(CharaMangerModel::EnrollResult::Enroll_ClaimFailed); - } else { - m_charaMangerInter->setFingerprintInterTimeout(-1); - auto call = m_charaMangerInter->DeleteFinger(userName, finger); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - - QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - refreshFingerEnrollList(userName); - sender()->deleteLater(); - auto callStopClaim = m_charaMangerInter->Claim(userName, false); - callStopClaim.waitForFinished(); - if (callStopClaim.isError()) { - qDebug() << "call stop Claim Error : " << callStopClaim.error(); - } - }); - } - m_charaMangerInter->setFingerprintInterTimeout(-1); -} - -void CharaMangerWorker::renameFingerItem(const QString &userName, const QString &finger, const QString &newName) -{ - m_charaMangerInter->RenameFinger(userName, finger, newName); - refreshFingerEnrollList(userName); -} diff --git a/dcc-old/src/plugin-authentication/operation/charamangerworker.h b/dcc-old/src/plugin-authentication/operation/charamangerworker.h deleted file mode 100644 index 096c59b841..0000000000 --- a/dcc-old/src/plugin-authentication/operation/charamangerworker.h +++ /dev/null @@ -1,100 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef FACEIDWORKER_H -#define FACEIDWORKER_H - -#include "charamangerdbusproxy.h" -#include "charamangermodel.h" - -#include -#include -#include -#include - -class CharaMangerWorker : public QObject -{ - Q_OBJECT -public: - explicit CharaMangerWorker(CharaMangerModel *model, QObject *parent = nullptr); - ~CharaMangerWorker(); - void initCharaManger(); - void initFinger(); - -private: - /** - * @brief parseJsonData 仅仅将 mangerInfo 进行数据转化 - * @return 获取后端所有解析后的数据 - */ - QMap parseDriverNameJsonData(const QString& mangerInfo); - QStringList parseCharaNameJsonData(const QString& mangerInfo); - -Q_SIGNALS: - void tryStartInputFace(const int &fd); - void tryStartInputIris(CharaMangerModel::AddInfoState state); - void requestMainWindowEnabled(const bool isEnabled) const; - -public Q_SLOTS: - void predefineDriverInfo(const QString &driverInfo); - - /** - * @brief refreshUserEnrollList 获取用户录入信息 - * @param driverName 驱动名称 - * @param CharaType 对应生物特征 - */ - void refreshUserEnrollList(const QString &driverName, const int &CharaType); - - void refreshUserInfo(const QString &EnrollInfo, const int &CharaType); - - void refreshDriverInfo(); - - /** - * @brief entollStart 处理认证接口 - * @param driverName - * @param charaType - * @param charaName - */ - void entollStart(const QString &driverName, const int &charaType, const QString &charaName); - - /** - * @brief refreshUserEnrollStatus 获取设备录入状态 - * @param senderid dbus对应senderID - * @param code 对应信息 - * @param codeInfo 信息描述 - */ - void refreshUserEnrollStatus(const QString &senderid, const int &code, const QString &codeInfo); - - void stopEnroll(); - - /** - * @brief deleteFaceidItem 删除对应录入信息 - * @param charaType 唯一值 - * @param charaName 对应名称 - */ - void deleteCharaItem(const int &charaType, const QString &charaName); - void renameCharaItem(const int &charaType, const QString &oldName, const QString &newName); - - // Fingerprint - void tryEnroll(const QString &name, const QString &thumb); - void refreshFingerEnrollList(const QString &id); - void stopFingerEnroll(const QString& userName); - void deleteFingerItem(const QString& userName, const QString& finger); - void renameFingerItem(const QString& userName, const QString& finger, const QString& newName); - -private: - CharaMangerModel *m_model; - CharaMangerDBusProxy *m_charaMangerInter; - - /** - * @brief m_stopTimer 开始录入进行计时 1Min后若没有录入成功则失败 - * 注: timer stop时机 - */ - QTimer *m_stopTimer; - QDBusPendingReply* m_fileDescriptor; - /** - * @brief m_currentInputCharaType 当前录入方式 注:确保唯一性 - */ - int m_currentInputCharaType; -}; - -#endif // FACEIDWORKER_H diff --git a/dcc-old/src/plugin-authentication/operation/qrc/authentication.qrc b/dcc-old/src/plugin-authentication/operation/qrc/authentication.qrc deleted file mode 100644 index 716803448d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/authentication.qrc +++ /dev/null @@ -1,116 +0,0 @@ - - - icons/dcc_nav_authentication_42px.svg - icons/dcc_nav_authentication_84px.svg - icons/dark/icons/icon_face-fail.svg - icons/dark/icons/icon_face-start.svg - icons/dark/icons/icon_face-success.svg - icons/dark/icons/icon_unknown_device.svg - icons/light/icons/icon_face-fail.svg - icons/light/icons/icon_face-start.svg - icons/light/icons/icon_face-success.svg - icons/light/icons/icon_unknown_device.svg - icons/light/icons/finger/fingerprint_animation_light_1.svg - icons/light/icons/finger/fingerprint_animation_light_2.svg - icons/light/icons/finger/fingerprint_animation_light_3.svg - icons/light/icons/finger/fingerprint_animation_light_4.svg - icons/light/icons/finger/fingerprint_animation_light_5.svg - icons/light/icons/finger/fingerprint_animation_light_6.svg - icons/light/icons/finger/fingerprint_animation_light_7.svg - icons/light/icons/finger/fingerprint_animation_light_8.svg - icons/light/icons/finger/fingerprint_animation_light_9.svg - icons/light/icons/finger/fingerprint_animation_light_10.svg - icons/light/icons/finger/fingerprint_animation_light_11.svg - icons/light/icons/finger/fingerprint_animation_light_12.svg - icons/light/icons/finger/fingerprint_animation_light_13.svg - icons/light/icons/finger/fingerprint_animation_light_14.svg - icons/light/icons/finger/fingerprint_animation_light_15.svg - icons/light/icons/finger/fingerprint_animation_light_16.svg - icons/light/icons/finger/fingerprint_animation_light_17.svg - icons/light/icons/finger/fingerprint_animation_light_18.svg - icons/light/icons/finger/fingerprint_animation_light_19.svg - icons/light/icons/finger/fingerprint_animation_light_20.svg - icons/light/icons/finger/fingerprint_animation_light_21.svg - icons/light/icons/finger/fingerprint_animation_light_22.svg - icons/light/icons/finger/fingerprint_animation_light_23.svg - icons/light/icons/finger/fingerprint_animation_light_24.svg - icons/light/icons/finger/fingerprint_animation_light_25.svg - icons/light/icons/finger/fingerprint_animation_light_26.svg - icons/light/icons/finger/fingerprint_animation_light_27.svg - icons/light/icons/finger/fingerprint_animation_light_28.svg - icons/light/icons/finger/fingerprint_animation_light_29.svg - icons/light/icons/finger/fingerprint_animation_light_30.svg - icons/light/icons/finger/fingerprint_animation_light_31.svg - icons/light/icons/finger/fingerprint_animation_light_32.svg - icons/light/icons/finger/fingerprint_animation_light_33.svg - icons/light/icons/finger/fingerprint_animation_light_34.svg - icons/light/icons/finger/fingerprint_animation_light_35.svg - icons/light/icons/finger/fingerprint_animation_light_36.svg - icons/light/icons/finger/fingerprint_animation_light_37.svg - icons/light/icons/finger/fingerprint_animation_light_38.svg - icons/light/icons/finger/fingerprint_animation_light_39.svg - icons/light/icons/finger/fingerprint_animation_light_40.svg - icons/light/icons/finger/fingerprint_animation_light_41.svg - icons/light/icons/finger/fingerprint_animation_light_42.svg - icons/light/icons/finger/fingerprint_animation_light_43.svg - icons/light/icons/finger/fingerprint_animation_light_44.svg - icons/light/icons/finger/fingerprint_animation_light_45.svg - icons/light/icons/finger/fingerprint_animation_light_46.svg - icons/light/icons/finger/fingerprint_animation_light_47.svg - icons/light/icons/finger/fingerprint_animation_light_48.svg - icons/light/icons/finger/fingerprint_animation_light_49.svg - icons/light/icons/finger/fingerprint_animation_light_50.svg - icons/light/icons/finger/fingerprint_light.svg - icons/dark/icons/finger/fingerprint_animation_light_1.svg - icons/dark/icons/finger/fingerprint_animation_light_2.svg - icons/dark/icons/finger/fingerprint_animation_light_3.svg - icons/dark/icons/finger/fingerprint_animation_light_4.svg - icons/dark/icons/finger/fingerprint_animation_light_5.svg - icons/dark/icons/finger/fingerprint_animation_light_6.svg - icons/dark/icons/finger/fingerprint_animation_light_7.svg - icons/dark/icons/finger/fingerprint_animation_light_8.svg - icons/dark/icons/finger/fingerprint_animation_light_9.svg - icons/dark/icons/finger/fingerprint_animation_light_10.svg - icons/dark/icons/finger/fingerprint_animation_light_11.svg - icons/dark/icons/finger/fingerprint_animation_light_12.svg - icons/dark/icons/finger/fingerprint_animation_light_13.svg - icons/dark/icons/finger/fingerprint_animation_light_14.svg - icons/dark/icons/finger/fingerprint_animation_light_15.svg - icons/dark/icons/finger/fingerprint_animation_light_16.svg - icons/dark/icons/finger/fingerprint_animation_light_17.svg - icons/dark/icons/finger/fingerprint_animation_light_18.svg - icons/dark/icons/finger/fingerprint_animation_light_19.svg - icons/dark/icons/finger/fingerprint_animation_light_20.svg - icons/dark/icons/finger/fingerprint_animation_light_21.svg - icons/dark/icons/finger/fingerprint_animation_light_22.svg - icons/dark/icons/finger/fingerprint_animation_light_23.svg - icons/dark/icons/finger/fingerprint_animation_light_24.svg - icons/dark/icons/finger/fingerprint_animation_light_25.svg - icons/dark/icons/finger/fingerprint_animation_light_26.svg - icons/dark/icons/finger/fingerprint_animation_light_27.svg - icons/dark/icons/finger/fingerprint_animation_light_28.svg - icons/dark/icons/finger/fingerprint_animation_light_29.svg - icons/dark/icons/finger/fingerprint_animation_light_30.svg - icons/dark/icons/finger/fingerprint_animation_light_31.svg - icons/dark/icons/finger/fingerprint_animation_light_32.svg - icons/dark/icons/finger/fingerprint_animation_light_33.svg - icons/dark/icons/finger/fingerprint_animation_light_34.svg - icons/dark/icons/finger/fingerprint_animation_light_35.svg - icons/dark/icons/finger/fingerprint_animation_light_36.svg - icons/dark/icons/finger/fingerprint_animation_light_37.svg - icons/dark/icons/finger/fingerprint_animation_light_38.svg - icons/dark/icons/finger/fingerprint_animation_light_39.svg - icons/dark/icons/finger/fingerprint_animation_light_40.svg - icons/dark/icons/finger/fingerprint_animation_light_41.svg - icons/dark/icons/finger/fingerprint_animation_light_42.svg - icons/dark/icons/finger/fingerprint_animation_light_43.svg - icons/dark/icons/finger/fingerprint_animation_light_44.svg - icons/dark/icons/finger/fingerprint_animation_light_45.svg - icons/dark/icons/finger/fingerprint_animation_light_46.svg - icons/dark/icons/finger/fingerprint_animation_light_47.svg - icons/dark/icons/finger/fingerprint_animation_light_48.svg - icons/dark/icons/finger/fingerprint_animation_light_49.svg - icons/dark/icons/finger/fingerprint_animation_light_50.svg - icons/dark/icons/finger/fingerprint_light.svg - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_1.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_1.svg deleted file mode 100644 index 58f6ef27aa..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_1.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_10.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_10.svg deleted file mode 100644 index 79bbdbdc59..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_10.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_11.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_11.svg deleted file mode 100644 index 25770c1c24..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_11.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_12.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_12.svg deleted file mode 100644 index bf4b196bfe..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_12.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_13.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_13.svg deleted file mode 100644 index 6df920a72c..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_13.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_14.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_14.svg deleted file mode 100644 index ec597c639d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_14.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_15.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_15.svg deleted file mode 100644 index 7cef3a8135..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_15.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_16.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_16.svg deleted file mode 100644 index b120055950..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_16.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_17.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_17.svg deleted file mode 100644 index 70c006b3b2..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_17.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_18.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_18.svg deleted file mode 100644 index 636ed3b095..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_18.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_19.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_19.svg deleted file mode 100644 index ccebd9df76..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_19.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_2.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_2.svg deleted file mode 100644 index 37b7661505..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_2.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_20.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_20.svg deleted file mode 100644 index 2f20a1eec4..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_20.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_21.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_21.svg deleted file mode 100644 index 02c9c9cacb..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_21.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_22.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_22.svg deleted file mode 100644 index a7eb01b9c5..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_22.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_23.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_23.svg deleted file mode 100644 index af58b01388..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_23.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_24.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_24.svg deleted file mode 100644 index 4521fbeadc..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_24.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_25.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_25.svg deleted file mode 100644 index 32b4ee0d89..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_25.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_26.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_26.svg deleted file mode 100644 index 7016621f7a..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_26.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_27.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_27.svg deleted file mode 100644 index 110eee0b72..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_27.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_28.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_28.svg deleted file mode 100644 index b4aa4a0efb..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_28.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_29.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_29.svg deleted file mode 100644 index 6afb233e91..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_29.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_3.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_3.svg deleted file mode 100644 index 1a7f6affe0..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_3.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_30.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_30.svg deleted file mode 100644 index c2e37524bc..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_30.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_31.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_31.svg deleted file mode 100644 index c09ac1241c..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_31.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_32.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_32.svg deleted file mode 100644 index b1e4ec2c50..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_32.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_33.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_33.svg deleted file mode 100644 index 6d046ce32b..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_33.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_34.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_34.svg deleted file mode 100644 index 75296d4409..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_34.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_35.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_35.svg deleted file mode 100644 index f34a2e69eb..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_35.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_36.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_36.svg deleted file mode 100644 index ee86c7bcf9..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_36.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_37.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_37.svg deleted file mode 100644 index bcb9f59be9..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_37.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_38.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_38.svg deleted file mode 100644 index 979c921e73..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_38.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_39.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_39.svg deleted file mode 100644 index 36872a25c4..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_39.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_4.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_4.svg deleted file mode 100644 index 8e7dc1c671..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_4.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_40.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_40.svg deleted file mode 100644 index 36dad981ae..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_40.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_41.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_41.svg deleted file mode 100644 index f1b8b37df5..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_41.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_42.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_42.svg deleted file mode 100644 index 353194f429..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_42.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_43.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_43.svg deleted file mode 100644 index 5d59f2ae39..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_43.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_44.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_44.svg deleted file mode 100644 index 94f21adca8..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_44.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_45.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_45.svg deleted file mode 100644 index 05d2ef579e..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_45.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_46.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_46.svg deleted file mode 100644 index 6ce18e0fba..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_46.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_47.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_47.svg deleted file mode 100644 index 0d04b62ddd..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_47.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_48.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_48.svg deleted file mode 100644 index 0570ae20bb..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_48.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_49.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_49.svg deleted file mode 100644 index 851c6694be..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_49.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_5.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_5.svg deleted file mode 100644 index 34a8f24f42..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_5.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_50.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_50.svg deleted file mode 100644 index f59e137f92..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_50.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_6.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_6.svg deleted file mode 100644 index 9638a56afa..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_6.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_7.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_7.svg deleted file mode 100644 index 9a98c4579b..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_7.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_8.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_8.svg deleted file mode 100644 index 17371ca69d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_8.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_9.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_9.svg deleted file mode 100644 index e70b17aeb9..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_animation_light_9.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_light.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_light.svg deleted file mode 100644 index fadeba2af8..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/finger/fingerprint_light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-fail.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-fail.svg deleted file mode 100644 index 37c50f985a..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-fail.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-start.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-start.svg deleted file mode 100644 index f49272b34c..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-start.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-success.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-success.svg deleted file mode 100644 index 50e86953cf..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_face-success.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - icon_face-enter_dark - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_unknown_device.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_unknown_device.svg deleted file mode 100644 index 18bfae2cd1..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dark/icons/icon_unknown_device.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dcc_nav_authentication_42px.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dcc_nav_authentication_42px.svg deleted file mode 100644 index 1c88b0c3a7..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dcc_nav_authentication_42px.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/dcc_nav_authentication_84px.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/dcc_nav_authentication_84px.svg deleted file mode 100644 index 773ca430c3..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/dcc_nav_authentication_84px.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_1.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_1.svg deleted file mode 100644 index 893363c666..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_1.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_10.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_10.svg deleted file mode 100644 index 1e8a60759d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_10.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_11.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_11.svg deleted file mode 100644 index 2109a07cde..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_11.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_12.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_12.svg deleted file mode 100644 index db9a722f61..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_12.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_13.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_13.svg deleted file mode 100644 index a8b57de13a..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_13.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_14.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_14.svg deleted file mode 100644 index 854fcf4dec..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_14.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_15.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_15.svg deleted file mode 100644 index d587fec31f..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_15.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_16.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_16.svg deleted file mode 100644 index a547511c32..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_16.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_17.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_17.svg deleted file mode 100644 index 8edc13a831..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_17.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_18.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_18.svg deleted file mode 100644 index a7c2716822..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_18.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_19.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_19.svg deleted file mode 100644 index 358b3e504e..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_19.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_2.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_2.svg deleted file mode 100644 index 76c6e8689d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_2.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_20.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_20.svg deleted file mode 100644 index f37803ed41..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_20.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_21.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_21.svg deleted file mode 100644 index c14238f277..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_21.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_22.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_22.svg deleted file mode 100644 index 775396659d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_22.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_23.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_23.svg deleted file mode 100644 index c09adccc6f..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_23.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_24.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_24.svg deleted file mode 100644 index d7b789cd97..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_24.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_25.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_25.svg deleted file mode 100644 index 32b0997d23..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_25.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_26.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_26.svg deleted file mode 100644 index ff297c167d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_26.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_27.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_27.svg deleted file mode 100644 index be36b805ab..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_27.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_28.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_28.svg deleted file mode 100644 index aad4f49e2e..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_28.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_29.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_29.svg deleted file mode 100644 index 1a13828a0e..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_29.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_3.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_3.svg deleted file mode 100644 index b729d90a3f..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_3.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_30.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_30.svg deleted file mode 100644 index 96ed68db67..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_30.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_31.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_31.svg deleted file mode 100644 index 1dbf59fbdc..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_31.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_32.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_32.svg deleted file mode 100644 index 31fde2221e..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_32.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_33.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_33.svg deleted file mode 100644 index be2f68b5fc..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_33.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_34.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_34.svg deleted file mode 100644 index 78a65a47dd..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_34.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_35.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_35.svg deleted file mode 100644 index 202c15ef55..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_35.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_36.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_36.svg deleted file mode 100644 index 2b65d38045..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_36.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_37.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_37.svg deleted file mode 100644 index 61734617b3..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_37.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_38.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_38.svg deleted file mode 100644 index f3a6c729e5..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_38.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_39.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_39.svg deleted file mode 100644 index b276d3623d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_39.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_4.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_4.svg deleted file mode 100644 index 1356a4002d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_4.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_40.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_40.svg deleted file mode 100644 index beec1b956d..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_40.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_41.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_41.svg deleted file mode 100644 index 1f4a8ba922..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_41.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_42.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_42.svg deleted file mode 100644 index 1e87b034bd..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_42.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_43.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_43.svg deleted file mode 100644 index 59b23c4203..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_43.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_44.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_44.svg deleted file mode 100644 index 2387e433ab..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_44.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_45.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_45.svg deleted file mode 100644 index f04956b61e..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_45.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_46.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_46.svg deleted file mode 100644 index de0c69cad8..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_46.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_47.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_47.svg deleted file mode 100644 index c8199f1702..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_47.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_48.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_48.svg deleted file mode 100644 index 66bb4d0005..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_48.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_49.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_49.svg deleted file mode 100644 index 0bd8eb53b9..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_49.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_5.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_5.svg deleted file mode 100644 index 231825f0fb..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_5.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_50.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_50.svg deleted file mode 100644 index 46c1c1f8d3..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_50.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_6.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_6.svg deleted file mode 100644 index 80e0809453..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_6.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_7.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_7.svg deleted file mode 100644 index d6f643b1b2..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_7.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_8.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_8.svg deleted file mode 100644 index bf1e7c515c..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_8.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_9.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_9.svg deleted file mode 100644 index 587efa57e3..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_animation_light_9.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_light.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_light.svg deleted file mode 100644 index 3119fadb3b..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/finger/fingerprint_light.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-fail.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-fail.svg deleted file mode 100644 index 4962e2952b..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-fail.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-start.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-start.svg deleted file mode 100644 index 968fc0abbc..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-start.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-success.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-success.svg deleted file mode 100644 index 1e84386e53..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_face-success.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - 编组 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_unknown_device.svg b/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_unknown_device.svg deleted file mode 100644 index 5b55bd2ab1..0000000000 --- a/dcc-old/src/plugin-authentication/operation/qrc/icons/light/icons/icon_unknown_device.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-authentication/window/authentication.json b/dcc-old/src/plugin-authentication/window/authentication.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-authentication/window/authentication.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-authentication/window/authenticationplugin.cpp b/dcc-old/src/plugin-authentication/window/authenticationplugin.cpp deleted file mode 100644 index f8a2bd506b..0000000000 --- a/dcc-old/src/plugin-authentication/window/authenticationplugin.cpp +++ /dev/null @@ -1,117 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "authenticationplugin.h" -#include "interface/pagemodule.h" - -#include "charamangermodel.h" -#include "charamangerworker.h" -#include "faceiddetailwidget.h" -#include "fingerdetailwidget.h" -#include "irisdetailwidget.h" -#include - -DGUI_USE_NAMESPACE -using namespace DCC_NAMESPACE; -QString AuthenticationPlugin::name() const -{ - return QStringLiteral("Authentication"); -} - -ModuleObject *AuthenticationPlugin::module() -{ - // 一级 - AuthenticationModule *authenticationInterface = new AuthenticationModule; - - // 二级 -- 指纹 - ModuleObject *moduleFinger = new PageModule("fingerprint", tr("Fingerprint"), authenticationInterface); - FingerModule *fingerPage = new FingerModule(authenticationInterface->model(), authenticationInterface->work()); - moduleFinger->appendChild(fingerPage); - authenticationInterface->appendChild(moduleFinger); - moduleFinger->setHidden(!authenticationInterface->model()->fingerVaild()); - connect(authenticationInterface->model(), &CharaMangerModel::vaildFingerChanged, moduleFinger, [ moduleFinger ](const bool isVaild) { - moduleFinger->setHidden(!isVaild); - }); - - // 二级 -- 人脸 - ModuleObject *moduleFace = new PageModule("face", tr("Face"), authenticationInterface); - FaceModule *facePage = new FaceModule(authenticationInterface->model(), authenticationInterface->work()); - moduleFace->appendChild(facePage); - authenticationInterface->appendChild(moduleFace); - moduleFace->setHidden(!authenticationInterface->model()->faceDriverVaild()); - connect(authenticationInterface->model(), &CharaMangerModel::vaildFaceDriverChanged, moduleFace, [ moduleFace ](const bool isVaild) { - moduleFace->setHidden(!isVaild); - }); - - // 二级 -- 虹膜 - ModuleObject *moduleIris= new PageModule("iris", tr("Iris"), authenticationInterface); - IrisModule *irisPage = new IrisModule(authenticationInterface->model(), authenticationInterface->work()); - moduleIris->appendChild(irisPage); - authenticationInterface->appendChild(moduleIris); - moduleIris->setHidden(!authenticationInterface->model()->irisDriverVaild()); - connect(authenticationInterface->model(), &CharaMangerModel::vaildIrisDriverChanged, moduleIris, [ moduleIris ](const bool isVaild) { - moduleIris->setHidden(!isVaild); - }); - - return authenticationInterface; -} - -QString AuthenticationPlugin::location() const -{ - return "3"; -} - -AuthenticationModule::AuthenticationModule(QObject *parent) - : HListModule("authentication", tr("Biometric Authentication"), QString(), DIconTheme::findQIcon("dcc_nav_authentication"), parent) - , m_model(new CharaMangerModel(this)) - , m_work(new CharaMangerWorker(m_model, this)) -{ - setHidden(!m_model->charaVaild()); - connect(m_model, &CharaMangerModel::charaVaildChanged, this, [ = ](const bool isVaild) { - setHidden(!isVaild); - }); -} - -AuthenticationModule::~AuthenticationModule() -{ - m_model->deleteLater(); - m_work->deleteLater(); -} - -void AuthenticationModule::active() -{ -} - -QWidget *FingerModule::page() -{ - FingerDetailWidget *w = new FingerDetailWidget; - w->setFingerModel(m_model); - connect(w, &FingerDetailWidget::requestAddThumbs, m_worker, &CharaMangerWorker::tryEnroll); - connect(w, &FingerDetailWidget::requestStopEnroll, m_worker, &CharaMangerWorker::stopFingerEnroll); - connect(w, &FingerDetailWidget::requestDeleteFingerItem, m_worker, &CharaMangerWorker::deleteFingerItem); - connect(w, &FingerDetailWidget::requestRenameFingerItem, m_worker, &CharaMangerWorker::renameFingerItem); - connect(w, &FingerDetailWidget::noticeEnrollCompleted, m_worker, &CharaMangerWorker::refreshFingerEnrollList); - return w; -} - -QWidget *FaceModule::page() -{ - FaceidDetailWidget *w = new FaceidDetailWidget(m_model); - connect(w, &FaceidDetailWidget::requestEntollStart, m_worker, &CharaMangerWorker::entollStart); - connect(w, &FaceidDetailWidget::requestStopEnroll, m_worker, &CharaMangerWorker::stopEnroll); - connect(w, &FaceidDetailWidget::requestDeleteFaceItem, m_worker, &CharaMangerWorker::deleteCharaItem); - connect(w, &FaceidDetailWidget::requestRenameFaceItem, m_worker, &CharaMangerWorker::renameCharaItem); - connect(w, &FaceidDetailWidget::noticeEnrollCompleted, m_worker, &CharaMangerWorker::refreshUserEnrollList); - return w; -} - -QWidget *IrisModule::page() -{ - IrisDetailWidget *w = new IrisDetailWidget(m_model); - connect(w, &IrisDetailWidget::requestEntollStart, m_worker, &CharaMangerWorker::entollStart); - connect(w, &IrisDetailWidget::requestStopEnroll, m_worker, &CharaMangerWorker::stopEnroll); - connect(w, &IrisDetailWidget::requestDeleteIrisItem, m_worker, &CharaMangerWorker::deleteCharaItem); - connect(w, &IrisDetailWidget::requestRenameIrisItem, m_worker, &CharaMangerWorker::renameCharaItem); - connect(w, &IrisDetailWidget::noticeEnrollCompleted, m_worker, &CharaMangerWorker::refreshUserEnrollList); - return w; -} diff --git a/dcc-old/src/plugin-authentication/window/authenticationplugin.h b/dcc-old/src/plugin-authentication/window/authenticationplugin.h deleted file mode 100644 index c3c9e394e4..0000000000 --- a/dcc-old/src/plugin-authentication/window/authenticationplugin.h +++ /dev/null @@ -1,90 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef AUTHENTICATIONPLUGIN_H -#define AUTHENTICATIONPLUGIN_H - -#include "interface/hlistmodule.h" -#include "interface/plugininterface.h" - -class CharaMangerWorker; -class CharaMangerModel; -class AuthenticationPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Authentication" FILE "authentication.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface)public: -public: - explicit AuthenticationPlugin() {} - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; -}; - -// 一级页面 -class AuthenticationModule : public DCC_NAMESPACE::HListModule -{ - Q_OBJECT -public: - explicit AuthenticationModule(QObject *parent = nullptr); - ~AuthenticationModule(); - - CharaMangerWorker *work() { return m_work; } - CharaMangerModel *model() { return m_model; } - -protected: - virtual void active() override; - -private: - CharaMangerModel *m_model; - CharaMangerWorker *m_work; -}; - -// 指纹页面 -class FingerModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit FingerModule(CharaMangerModel *model, CharaMangerWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - - virtual QWidget *page() override; - -private: - CharaMangerModel *m_model; - CharaMangerWorker *m_worker; -}; - -// 人脸页面 -class FaceModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit FaceModule(CharaMangerModel *model, CharaMangerWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - - virtual QWidget *page() override; - -private: - CharaMangerModel *m_model; - CharaMangerWorker *m_worker; -}; - -// 虹膜页面 -class IrisModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit IrisModule(CharaMangerModel *model, CharaMangerWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - - virtual QWidget *page() override; - -private: - CharaMangerModel *m_model; - CharaMangerWorker *m_worker; -}; - - -#endif // AUTHENTICATIONPLUGIN_H diff --git a/dcc-old/src/plugin-authentication/window/faceiddetailwidget.cpp b/dcc-old/src/plugin-authentication/window/faceiddetailwidget.cpp deleted file mode 100644 index 992ca3cd4c..0000000000 --- a/dcc-old/src/plugin-authentication/window/faceiddetailwidget.cpp +++ /dev/null @@ -1,150 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "faceiddetailwidget.h" -#include "widgets/face/faceinfodialog.h" -#include "widgets/face/addfaceinfodialog.h" -#include "charamangermodel.h" - -#include -#include -#include -#include - -#include -#include - -DGUI_USE_NAMESPACE - -FaceidDetailWidget::FaceidDetailWidget(CharaMangerModel *model, QWidget *parent) - : QWidget (parent) - , m_model (model) - , m_mainContentLayout(new QVBoxLayout(this)) - , m_faceWidget(new FaceWidget(model, this)) - , m_pNotDevice(new QLabel(this)) - , m_tip(new DLabel(tr("No supported devices found"), this)) - , m_addFaceInfodlg(new AddFaceInfoDialog(model, this)) - , m_facedlg(new FaceInfoDialog(model, this)) -{ - connect(m_model, &CharaMangerModel::vaildFaceDriverChanged, this, &FaceidDetailWidget::onDeviceStatusChanged); - onDeviceStatusChanged(model->faceDriverVaild()); - - initFaceidShow(); - - //人脸操作 - connect(m_faceWidget, &FaceWidget::requestAddFace, this, &FaceidDetailWidget::onShowAddFaceDialog); - connect(m_faceWidget, &FaceWidget::requestDeleteFaceItem, this, &FaceidDetailWidget::requestDeleteFaceItem); - connect(m_faceWidget, &FaceWidget::requestRenameFaceItem, this, &FaceidDetailWidget::requestRenameFaceItem); - connect(m_faceWidget, &FaceWidget::noticeEnrollCompleted, this, &FaceidDetailWidget::noticeEnrollCompleted); -} - -FaceidDetailWidget::~FaceidDetailWidget() -{ - -} - -void FaceidDetailWidget::initFaceidShow() -{ - //整体布局 - m_mainContentLayout->setContentsMargins(0, 10, 0, 0); - - m_faceWidget->setContentsMargins(0, 0, 0, 0); - m_faceWidget->layout()->setMargin(0); - - setLayout(m_mainContentLayout); - setFocusPolicy(Qt::FocusPolicy::ClickFocus); - - connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::themeTypeChanged, - this, [=](Dtk::Gui::DGuiApplicationHelper::ColorType themeType) { - Q_UNUSED(themeType); - m_pNotDevice->setPixmap(DIconTheme::findQIcon(getDisplayPath()).pixmap(64, 64)); - }); - - m_pNotDevice->setPixmap(DIconTheme::findQIcon(getDisplayPath()).pixmap(64, 64)); - m_pNotDevice->setAlignment(Qt::AlignHCenter); - - // 设置高亮字体 - m_tip->setEnabled(false); - auto pal = m_tip->palette(); - DFontSizeManager::instance()->bind(m_tip, DFontSizeManager::T7); - QColor base_color = pal.text().color(); - base_color.setAlpha(255 / 10 * 2); - pal.setColor(QPalette::Text, base_color); - m_tip->setPalette(pal); - - m_mainContentLayout->addWidget(m_faceWidget); - m_mainContentLayout->addWidget(m_pNotDevice); - m_mainContentLayout->addWidget(m_tip); -} - -QString FaceidDetailWidget::getDisplayPath() -{ - QString theme; - DGuiApplicationHelper::ColorType type = DGuiApplicationHelper::instance()->themeType(); - switch (type) { - case DGuiApplicationHelper::UnknownType: - break; - case DGuiApplicationHelper::LightType: - theme = QString("light"); - break; - case DGuiApplicationHelper::DarkType: - theme = QString("dark"); - break; - } - return QString(":/authentication/themes/%1/icons/icon_unknown_device.svg").arg(theme); -} - - -void FaceidDetailWidget::onDeviceStatusChanged(bool hasDevice) -{ - if (hasDevice) { - m_pNotDevice->hide(); - m_tip->hide(); - m_mainContentLayout->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - m_faceWidget->show(); - } else { - m_faceWidget->hide(); - m_mainContentLayout->setAlignment(Qt::AlignHCenter | Qt::AlignCenter); - m_pNotDevice->show(); - m_tip->show(); - } -} - -void FaceidDetailWidget::onShowAddFaceDialog(const QString &driverName, const int &charaType, const QString &charaName) -{ - m_addFaceInfodlg->responseEnrollInfoState(CharaMangerModel::AddInfoState::StartState, QString()); - - connect(m_addFaceInfodlg, &AddFaceInfoDialog::requestStopEnroll, this, &FaceidDetailWidget::requestStopEnroll, Qt::UniqueConnection); - - // 用户点击对话框开始录入 - disconnect(m_addFaceInfodlg, &AddFaceInfoDialog::requestShowFaceInfoDialog, this, nullptr); - connect(m_addFaceInfodlg, &AddFaceInfoDialog::requestShowFaceInfoDialog, this, [=](){ - m_addFaceInfodlg->hide(); - onShowAddFaceidVideo(); - Q_EMIT requestEntollStart(driverName, charaType, charaName); - }); - - m_addFaceInfodlg->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::WindowStaysOnTopHint); - m_addFaceInfodlg->show(); - m_addFaceInfodlg->setFocus(); - m_addFaceInfodlg->activateWindow(); -} - -void FaceidDetailWidget::onConnectFD(const int &facedf) -{ - m_facedlg->faceInfoLabel()->createConnection(facedf); - - m_facedlg->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::WindowStaysOnTopHint); - m_facedlg->show(); - m_facedlg->setFocus(); - m_facedlg->activateWindow(); -} - -void FaceidDetailWidget::onShowAddFaceidVideo() -{ - // 开始录入人脸 - connect(m_facedlg, &FaceInfoDialog::requestCloseDlg, this, &FaceidDetailWidget::requestStopEnroll, Qt::UniqueConnection); - - // 开始录入就弹出 TODO: 处理拿到FD后的内容 - connect(m_model, &CharaMangerModel::tryStartInputFace, this, &FaceidDetailWidget::onConnectFD, Qt::UniqueConnection); -} diff --git a/dcc-old/src/plugin-authentication/window/faceiddetailwidget.h b/dcc-old/src/plugin-authentication/window/faceiddetailwidget.h deleted file mode 100644 index 9fde17ab6f..0000000000 --- a/dcc-old/src/plugin-authentication/window/faceiddetailwidget.h +++ /dev/null @@ -1,58 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/face/facewidget.h" -#include "widgets/face/addfaceinfodialog.h" -#include "widgets/face/faceinfodialog.h" - -#include -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QHBoxLayout; -class QScrollArea; -QT_END_NAMESPACE - -class CharaMangerModel; -class FaceidDetailWidget : public QWidget -{ - Q_OBJECT -public: - explicit FaceidDetailWidget(CharaMangerModel *model, QWidget *parent = nullptr); - ~FaceidDetailWidget(); - -private: - void initFaceidShow(); - QString getDisplayPath(); - void onShowAddFaceidVideo(); - -Q_SIGNALS: - void requestDeleteFaceItem(const int &charaType, const QString &charaName); - void requestRenameFaceItem(const int &charaType, const QString& oldFaceName, const QString& newFaceName); - void noticeEnrollCompleted(const QString &driverName, const int &CharaType); - void requestEntollStart(const QString &driverName, const int &charaType, const QString &charaName); - void requestStopEnroll(); - -public Q_SLOTS: - void onDeviceStatusChanged(bool hasDevice); - void onShowAddFaceDialog(const QString &driverName, const int &charaType, const QString &charaName); - -private Q_SLOTS: - void onConnectFD(const int &facedf); - -private: - CharaMangerModel *m_model; - - QVBoxLayout *m_mainContentLayout; - FaceWidget *m_faceWidget; - QLabel *m_pNotDevice; - DTK_WIDGET_NAMESPACE::DLabel *m_tip; - - AddFaceInfoDialog *m_addFaceInfodlg; - FaceInfoDialog *m_facedlg; -}; - diff --git a/dcc-old/src/plugin-authentication/window/fingerdetailwidget.cpp b/dcc-old/src/plugin-authentication/window/fingerdetailwidget.cpp deleted file mode 100644 index e929e441ad..0000000000 --- a/dcc-old/src/plugin-authentication/window/fingerdetailwidget.cpp +++ /dev/null @@ -1,195 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/finger/addfingerdialog.h" -#include "fingerdetailwidget.h" -#include "charamangermodel.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -FingerDetailWidget::FingerDetailWidget(QWidget *parent) - : QWidget(parent) - , m_model(nullptr) - , m_fingerWidget(new FingerWidget) - , m_disclaimer(nullptr) -{ -} - -FingerDetailWidget::~FingerDetailWidget() -{ - -} - -void FingerDetailWidget::initFingerUI() -{ - //整体布局 - QVBoxLayout *mainContentLayout = new QVBoxLayout(this); - mainContentLayout->setContentsMargins(0, 10, 0, 0); - mainContentLayout->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - - m_fingerWidget->setContentsMargins(0, 0, 0, 0); - m_fingerWidget->layout()->setMargin(0); - mainContentLayout->addWidget(m_fingerWidget); - mainContentLayout->addSpacing(30); - - setLayout(mainContentLayout); - setFocusPolicy(Qt::FocusPolicy::ClickFocus); - - //指纹界面操作 - connect(m_fingerWidget, &FingerWidget::requestAddThumbs, this, &FingerDetailWidget::showFingerDisclaimer); - connect(m_fingerWidget, &FingerWidget::requestDeleteFingerItem, this, &FingerDetailWidget::requestDeleteFingerItem); - connect(m_fingerWidget, &FingerWidget::requestRenameFingerItem, this, &FingerDetailWidget::requestRenameFingerItem); - connect(m_fingerWidget, &FingerWidget::noticeEnrollCompleted, this, &FingerDetailWidget::noticeEnrollCompleted); -} - -void FingerDetailWidget::initNotFingerDevice() -{ - QVBoxLayout *mainContentLayout = new QVBoxLayout(this); - mainContentLayout->setContentsMargins(0, 10, 0, 0); - mainContentLayout->setAlignment(Qt::AlignHCenter | Qt::AlignCenter); - - QLabel *pNotDevice = new QLabel; - - // 显示高亮字体 - DLabel *tip = new DLabel(tr("No supported devices found")); - tip->setEnabled(false); - auto pal = tip->palette(); - DFontSizeManager::instance()->bind(tip, DFontSizeManager::T7); - QColor base_color = pal.text().color(); - base_color.setAlpha(255 / 10 * 2); - pal.setColor(QPalette::Text, base_color); - tip->setPalette(pal); - - connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::themeTypeChanged, - this, [ = ](Dtk::Gui::DGuiApplicationHelper::ColorType themeType) { - Q_UNUSED(themeType); - pNotDevice->setPixmap(DIconTheme::findQIcon(getDisplayPath()).pixmap(64, 64)); - - }); - pNotDevice->setPixmap(DIconTheme::findQIcon(getDisplayPath()).pixmap(64, 64)); - pNotDevice->setAlignment(Qt::AlignHCenter); - - - mainContentLayout->addWidget(pNotDevice); - mainContentLayout->addWidget(tip); - setLayout(mainContentLayout); -} - -QString FingerDetailWidget::getDisplayPath() -{ - QString theme; - DGuiApplicationHelper::ColorType type = DGuiApplicationHelper::instance()->themeType(); - switch (type) { - case DGuiApplicationHelper::UnknownType: - break; - case DGuiApplicationHelper::LightType: - theme = QString("light"); - break; - case DGuiApplicationHelper::DarkType: - theme = QString("dark"); - break; - } - return QString(":/authentication/themes/%1/icons/icon_unknown_device.svg").arg(theme); -} - -void FingerDetailWidget::showDeviceStatus(bool hasDevice) -{ - // 指纹设备不支持热插拔 直接显示对应信息 - if (hasDevice) { - initFingerUI(); - } else { - initNotFingerDevice(); - } -} - -void FingerDetailWidget::showAddFingerDialog(const QString &name, const QString &thumb) -{ - AddFingerDialog *dlg = new AddFingerDialog(thumb, this); - connect(dlg, &AddFingerDialog::requestEnrollThumb, this, [ = ] { - dlg->deleteLater(); - showAddFingerDialog(name, thumb); - }); - connect(dlg, &AddFingerDialog::requestStopEnroll, this, &FingerDetailWidget::requestStopEnroll); - connect(dlg, &AddFingerDialog::requesetCloseDlg, dlg, [ = ](const QString & userName) { - Q_EMIT noticeEnrollCompleted(userName); - if (m_disclaimer != nullptr) { - m_disclaimer->close(); - delete m_disclaimer; - m_disclaimer = nullptr; - } - dlg->deleteLater(); - }); - - connect(m_model, &CharaMangerModel::enrollResult, dlg, [ = ](CharaMangerModel::EnrollResult res) { - // 第一次tryEnroll进入时显示添加指纹对话框 - if (res == CharaMangerModel::Enroll_Success) { - m_model->resetProgress(); - dlg->setFingerModel(m_model); - dlg->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::WindowStaysOnTopHint); - dlg->setUsername(name); - dlg->show(); - dlg->setFocus(); - dlg->activateWindow(); - } else if (res == CharaMangerModel::Enroll_Failed) { - qDebug() << "CharaMangerModel::Enroll_Failed"; - Q_EMIT requestStopEnroll(name); - if (m_disclaimer != nullptr) { - m_disclaimer->close(); - delete m_disclaimer; - m_disclaimer = nullptr; - } - dlg->deleteLater(); - } else if (res == CharaMangerModel::Enroll_AuthFailed) { - qDebug() << "CharaMangerModel::Enroll_AuthFailed"; - dlg->deleteLater(); - } - }); - - Q_EMIT requestAddThumbs(name, thumb); -} - -void FingerDetailWidget::setFingerModel(CharaMangerModel *model) -{ - if (!model) - return; - - m_model = model; - m_fingerWidget->setFingerModel(model); - connect(model, &CharaMangerModel::vaildFingerChanged, this, &FingerDetailWidget::showDeviceStatus); - showDeviceStatus(model->fingerVaild()); -} - -void FingerDetailWidget::showFingerDisclaimer(const QString &name, const QString &thumb) -{ - if (m_disclaimer != nullptr) { - return; - } - m_disclaimer = new FingerDisclaimer(this); - m_disclaimer->setVisible(true); - - connect(m_disclaimer, &FingerDisclaimer::requestShowFingeInfoDialog, this, [ = ] { - m_disclaimer->setVisible(false); - showAddFingerDialog(name, thumb); - }); - - connect(m_disclaimer, &FingerDisclaimer::requesetCloseDlg, this, [ = ] { - if (m_disclaimer != nullptr) - { - delete m_disclaimer; - m_disclaimer = nullptr; - } - }); -} diff --git a/dcc-old/src/plugin-authentication/window/fingerdetailwidget.h b/dcc-old/src/plugin-authentication/window/fingerdetailwidget.h deleted file mode 100644 index e6acff6d2f..0000000000 --- a/dcc-old/src/plugin-authentication/window/fingerdetailwidget.h +++ /dev/null @@ -1,52 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/finger/fingerwidget.h" -#include "widgets/finger/fingerdisclaimer.h" - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QHBoxLayout; -class QScrollArea; -QT_END_NAMESPACE - -class CharaMangerModel; -class FingerWidget; -class FingerDetailWidget : public QWidget -{ - Q_OBJECT -public: - explicit FingerDetailWidget(QWidget *parent = nullptr); - ~FingerDetailWidget(); - - void setFingerModel(CharaMangerModel *model); - -private: - void initFingerUI(); - void initNotFingerDevice(); - QString getDisplayPath(); - -Q_SIGNALS: - void requestAddThumbs(const QString &name, const QString &thumb); - void requestStopEnroll(const QString &thumb); - void requestDeleteFingerItem(const QString &userName, const QString &finger); - void requestRenameFingerItem(const QString &userName, const QString &finger, const QString &newName); - void noticeEnrollCompleted(QString username); - -public Q_SLOTS: - void showDeviceStatus(bool hasDevice); - void showAddFingerDialog(const QString &name, const QString &thumb); - void showFingerDisclaimer(const QString &name, const QString &thumb); - -private: - QString m_currentUserName; - CharaMangerModel *m_model; - FingerWidget *m_fingerWidget; //指纹界面 - FingerDisclaimer *m_disclaimer; -}; - diff --git a/dcc-old/src/plugin-authentication/window/irisdetailwidget.cpp b/dcc-old/src/plugin-authentication/window/irisdetailwidget.cpp deleted file mode 100644 index ced4f8ed0a..0000000000 --- a/dcc-old/src/plugin-authentication/window/irisdetailwidget.cpp +++ /dev/null @@ -1,126 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/iris/addirisinfodialog.h" -#include "irisdetailwidget.h" -#include "charamangermodel.h" - -#include -#include -#include -#include - -#include -#include - -DGUI_USE_NAMESPACE - -IrisDetailWidget::IrisDetailWidget(CharaMangerModel *model, QWidget *parent) - : QWidget (parent) - , m_model (model) - , m_mainContentLayout(new QVBoxLayout(this)) - , m_irisWidget(new IrisWidget(model, this)) - , m_pNotDevice(new QLabel(this)) - , m_tip(new DLabel(tr("No supported devices found"), this)) -{ - connect(m_model, &CharaMangerModel::vaildIrisDriverChanged, this, &IrisDetailWidget::onDeviceStatusChanged); - onDeviceStatusChanged(model->irisDriverVaild()); - - initIrisShow(); - - connect(m_irisWidget, &IrisWidget::requestAddIris, this, &IrisDetailWidget::onShowAddIrisDialog); - connect(m_irisWidget, &IrisWidget::requestDeleteIrisItem, this, &IrisDetailWidget::requestDeleteIrisItem); - connect(m_irisWidget, &IrisWidget::requestRenameIrisItem, this, &IrisDetailWidget::requestRenameIrisItem); - connect(m_irisWidget, &IrisWidget::noticeEnrollCompleted, this, &IrisDetailWidget::noticeEnrollCompleted); -} - -IrisDetailWidget::~IrisDetailWidget() -{ - -} - -void IrisDetailWidget::initIrisShow() -{ - //整体布局 - m_mainContentLayout->setContentsMargins(0, 10, 0, 0); - - m_irisWidget->setContentsMargins(0, 0, 0, 0); - m_irisWidget->layout()->setMargin(0); - - setLayout(m_mainContentLayout); - setFocusPolicy(Qt::FocusPolicy::ClickFocus); - - connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::themeTypeChanged, - this, [=](Dtk::Gui::DGuiApplicationHelper::ColorType themeType) { - Q_UNUSED(themeType); - m_pNotDevice->setPixmap(DIconTheme::findQIcon(getDisplayPath()).pixmap(64, 64)); - }); - - m_pNotDevice->setPixmap(DIconTheme::findQIcon(getDisplayPath()).pixmap(64, 64)); - m_pNotDevice->setAlignment(Qt::AlignHCenter); - - // 设置高亮字体 - m_tip->setEnabled(false); - auto pal = m_tip->palette(); - DFontSizeManager::instance()->bind(m_tip, DFontSizeManager::T7); - QColor base_color = pal.text().color(); - base_color.setAlpha(255 / 10 * 2); - pal.setColor(QPalette::Text, base_color); - m_tip->setPalette(pal); - - m_mainContentLayout->addWidget(m_irisWidget); - m_mainContentLayout->addWidget(m_pNotDevice); - m_mainContentLayout->addWidget(m_tip); -} - -QString IrisDetailWidget::getDisplayPath() -{ - QString theme; - DGuiApplicationHelper::ColorType type = DGuiApplicationHelper::instance()->themeType(); - switch (type) { - case DGuiApplicationHelper::UnknownType: - break; - case DGuiApplicationHelper::LightType: - theme = QString("light"); - break; - case DGuiApplicationHelper::DarkType: - theme = QString("dark"); - break; - } - return QString(":/authentication/themes/%1/icons/icon_unknown_device.svg").arg(theme); -} - - -void IrisDetailWidget::onDeviceStatusChanged(bool hasDevice) -{ - if (hasDevice) { - m_pNotDevice->hide(); - m_tip->hide(); - m_mainContentLayout->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - m_irisWidget->show(); - } else { - m_irisWidget->hide(); - m_mainContentLayout->setAlignment(Qt::AlignHCenter | Qt::AlignCenter); - m_pNotDevice->show(); - m_tip->show(); - } -} - -void IrisDetailWidget::onShowAddIrisDialog(const QString &driverName, const int &charaType, const QString &charaName) -{ - AddIrisInfoDialog *irisDlg = new AddIrisInfoDialog(m_model, this); - connect(m_model, &CharaMangerModel::tryStartInputIris, irisDlg, &AddIrisInfoDialog::refreshInfoStatusDisplay); - - connect(irisDlg, &AddIrisInfoDialog::requestStopEnroll, this, &IrisDetailWidget::requestStopEnroll); - connect(irisDlg, &AddIrisInfoDialog::requesetCloseDlg, irisDlg, &AddIrisInfoDialog::deleteLater); - - // 点击下一步开始录入 - connect(irisDlg, &AddIrisInfoDialog::requestInputIris, this, [ = ](){ - Q_EMIT requestEntollStart(driverName, charaType, charaName); - }); - - irisDlg->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::WindowStaysOnTopHint); - irisDlg->exec(); - irisDlg->setFocus(); - irisDlg->activateWindow(); -} diff --git a/dcc-old/src/plugin-authentication/window/irisdetailwidget.h b/dcc-old/src/plugin-authentication/window/irisdetailwidget.h deleted file mode 100644 index 73e66ca5e0..0000000000 --- a/dcc-old/src/plugin-authentication/window/irisdetailwidget.h +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/iris/iriswidget.h" - -#include -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QHBoxLayout; -class QScrollArea; -QT_END_NAMESPACE - -class CharaMangerModel; -class IrisDetailWidget : public QWidget -{ - Q_OBJECT -public: - explicit IrisDetailWidget(CharaMangerModel *model, QWidget *parent = nullptr); - ~IrisDetailWidget(); - -private: - void initIrisShow(); - QString getDisplayPath(); - -Q_SIGNALS: - void requestAddIris(const QString &driverName, const int &charaType, const QString &charaName); - void requestDeleteIrisItem(const int &charaType, const QString &charaName); - void requestRenameIrisItem(const int &charaType, const QString& oldIrisName, const QString& newIrisName); - void noticeEnrollCompleted(const QString &driverName, const int &CharaType); - void requestEntollStart(const QString &driverName, const int &charaType, const QString &charaName); - void requestStopEnroll(); - -public Q_SLOTS: - void onDeviceStatusChanged(bool hasDevice); - void onShowAddIrisDialog(const QString &driverName, const int &charaType, const QString &charaName); - -private: - CharaMangerModel *m_model; - - QVBoxLayout *m_mainContentLayout; - IrisWidget *m_irisWidget; - QLabel *m_pNotDevice; - DTK_WIDGET_NAMESPACE::DLabel *m_tip; -}; - diff --git a/dcc-old/src/plugin-authentication/window/widgets/authenticationinfoitem.cpp b/dcc-old/src/plugin-authentication/window/widgets/authenticationinfoitem.cpp deleted file mode 100644 index 3ea8283690..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/authenticationinfoitem.cpp +++ /dev/null @@ -1,232 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "authenticationinfoitem.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -AuthenticationInfoItem::AuthenticationInfoItem(QWidget *parent) - : SettingsItem(parent) - , m_layout(new QHBoxLayout) - , m_title(new QLabel) - , m_removeBtn(new DIconButton(this)) - , m_editBtn(new DIconButton(this)) - , m_editTitle(new DLineEdit(this)) - , m_itemName("") - , m_currentpa(DPaletteHelper::instance()->palette(this)) -{ - setFixedHeight(36); - - m_editBtn->setIcon(DIconTheme::findQIcon("dcc_edit")); - m_editBtn->setFlat(true);//设置背景透明 - m_editBtn->setVisible(false); - - m_editTitle->setClearButtonEnabled(false); - m_editTitle->setVisible(false); - m_editTitle->lineEdit()->setFrame(false); - - m_removeBtn->setFlat(true); - m_removeBtn->setIcon(DStyle::StandardPixmap::SP_DeleteButton); - m_removeBtn->setFixedSize(QSize(24, 24)); - m_removeBtn->setIconSize(QSize(16, 16)); - m_removeBtn->setVisible(false); - DStyle::setFocusRectVisible(m_removeBtn, false); - - m_layout->setContentsMargins(10, 5, 10, 5); - m_layout->addWidget(m_title, 0, Qt::AlignLeft); - m_layout->addWidget(m_editBtn, 0, Qt::AlignLeft); - m_layout->addWidget(m_editTitle, 0 , Qt::AlignLeft); - m_layout->addStretch(); - m_layout->addWidget(m_removeBtn, 0, Qt::AlignVCenter); - setLayout(m_layout); - - connect(m_removeBtn, &DIconButton::clicked, this, &AuthenticationInfoItem::removeClicked); - connect(m_editBtn, &DIconButton::clicked, this, [this] { - m_editBtn->hide(); - Q_EMIT editClicked(m_editTitle->isVisible()); - if (m_editTitle->isVisible()) { - m_editTitle->lineEdit()->setText(m_title->text()); - m_editTitle->lineEdit()->selectAll(); - m_editTitle->lineEdit()->setFocus(); - } - }); - connect(m_editTitle->lineEdit(), &QLineEdit::textChanged, this, [this] { - m_editTitle->setAlert(false); - m_editTitle->hideAlertMessage(); - }); - connect(m_editTitle->lineEdit(), &QLineEdit::editingFinished, this, [this] { - if (onNameEditFinished()) { - Q_EMIT editTextFinished(m_editTitle->text()); - } - m_editTitle->lineEdit()->clearFocus(); - setEditTitle(false); - }); - - connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::themeTypeChanged, - this, [=](Dtk::Gui::DGuiApplicationHelper::ColorType themeType) { - Q_UNUSED(themeType); - DPaletteHelper::instance()->resetPalette(this); - m_currentpa = DPaletteHelper::instance()->palette(this); - }); -} - -void AuthenticationInfoItem::setTitle(const QString &title) -{ - title.isEmpty() ? m_layout->removeWidget(m_title) : m_title->setText(title); - m_itemName = title; -} - -void AuthenticationInfoItem::appendItem(QWidget *widget) -{ - m_layout->addWidget(widget, 0, Qt::AlignLeft); -} - -void AuthenticationInfoItem::setShowIcon(bool state) -{ - m_removeBtn->setVisible(state); -} - -void AuthenticationInfoItem::setEditTitle(bool state) -{ - m_title->setVisible(!state); - m_editTitle->setVisible(state); -} - -void AuthenticationInfoItem::setHideTitle(bool state) -{ - m_title->setVisible(state); - m_editTitle->setVisible(state); -} - -bool AuthenticationInfoItem::validateName(const QString &password) -{ - QString validate_policy = QString("1234567890") + QString("abcdefghijklmnopqrstuvwxyz") + - QString("ABCDEFGHIJKLMNOPQRSTUVWXYZ") + QString("_"); - for (const QChar &p : password) { - if (!validate_policy.contains(p)) { - ushort uNum = p.unicode(); - // 片段非validate_policy中的字符是否为汉子 - if (uNum < 0x4E00 || uNum > 0x9FA5) { - return false; - } - } - } - return true; -} - -bool AuthenticationInfoItem::onNameEditFinished() -{ - QString editName = m_editTitle->lineEdit()->text(); - if (editName.isEmpty()) - return false; - //正则表达式判断是否由字母、数字、中文、下划线组成 - bool regResult = editName.contains(QRegularExpression("(^[\\w\u4e00-\u9fa5]+$)")); - if (editName.size() > 15) { - QString errMsg = regResult ? tr("No more than 15 characters") : tr("Use letters, numbers and underscores only, and no more than 15 characters"); - showAlertMessage(errMsg); - return false; - } else { - if (!regResult) { - QString errMsg = tr("Use letters, numbers and underscores only"); - showAlertMessage(errMsg); - return false; - } - } - return true; -} - -void AuthenticationInfoItem::showAlertMessage(const QString &errMsg) -{ - m_editTitle->setAlert(true); - m_editTitle->showAlertMessage(errMsg, parentWidget()->parentWidget(), 2000); - m_editTitle->lineEdit()->selectAll(); -} - -void AuthenticationInfoItem::enterEvent(QEvent *event) -{ - DPalette pa = DPaletteHelper::instance()->palette(this); - DStyleHelper styleHelper; - styleHelper = DStyleHelper(this->style()); - - QBrush brush; - if (styleHelper.dstyle()) { - brush = styleHelper.dstyle()->generatedBrush(DStyle::SS_HoverState, pa.itemBackground(), DPalette::Normal, DPalette::ItemBackground); - } - pa.setBrush(DPalette::Window, Qt::transparent); - pa.setBrush(DPalette::ItemBackground, brush); - DPaletteHelper::instance()->setPalette(this, pa); - - if (m_editTitle->isVisible()) - m_editBtn->hide(); - else - m_editBtn->show(); - - QFrame::enterEvent(event); -} - -void AuthenticationInfoItem::leaveEvent(QEvent *event) -{ - DPaletteHelper::instance()->setPalette(this, m_currentpa); - m_editBtn->hide(); - QFrame::leaveEvent(event); -} - -AuthenticationLinkButtonItem::AuthenticationLinkButtonItem(QWidget *parent) - : SettingsItem(parent) - , m_currentpa(DPaletteHelper::instance()->palette(this)) -{ - setFixedHeight(36); - - connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::themeTypeChanged, - this, [=](Dtk::Gui::DGuiApplicationHelper::ColorType themeType) { - Q_UNUSED(themeType); - DPaletteHelper::instance()->resetPalette(this); - m_currentpa = DPaletteHelper::instance()->palette(this); - }); -} - -void AuthenticationLinkButtonItem::enterEvent(QEvent *event) -{ - DPalette pa = DPaletteHelper::instance()->palette(this); - DStyleHelper styleHelper; - styleHelper = DStyleHelper(this->style()); - - QBrush brush; - if (styleHelper.dstyle()) { - brush = styleHelper.dstyle()->generatedBrush(DStyle::SS_HoverState, pa.itemBackground(), DPalette::Normal, DPalette::ItemBackground); - } - pa.setBrush(DPalette::Window, Qt::transparent); - pa.setBrush(DPalette::ItemBackground, brush); - DPaletteHelper::instance()->setPalette(this, pa); - - QFrame::enterEvent(event); -} - -void AuthenticationLinkButtonItem::leaveEvent(QEvent *event) -{ - DPaletteHelper::instance()->setPalette(this, m_currentpa); - QFrame::leaveEvent(event); -} - -void AuthenticationLinkButtonItem::mousePressEvent(QMouseEvent *event) -{ - SettingsItem::mousePressEvent(event); - - Q_EMIT mousePressed(); -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/authenticationinfoitem.h b/dcc-old/src/plugin-authentication/window/widgets/authenticationinfoitem.h deleted file mode 100644 index 8aeb95e9d0..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/authenticationinfoitem.h +++ /dev/null @@ -1,96 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -/* - * Copyright (C) 2011 ~ 2019 Deepin Technology Co., Ltd. - * - * Author: liuhong - * - * Maintainer: liuhong - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include -#include "interface/namespace.h" -#include "widgets/settingsitem.h" -#include - -QT_BEGIN_NAMESPACE -class QWidget; -class QHBoxLayout; -class QStackedWidget; -class QLabel; -class QLineEdit; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DIconButton; -class DLineEdit; -DWIDGET_END_NAMESPACE - -class AuthenticationLinkButtonItem : public DCC_NAMESPACE::SettingsItem{ - Q_OBJECT -public: - explicit AuthenticationLinkButtonItem(QWidget *parent = nullptr); - -protected: - void enterEvent(QEvent *event) override; - void leaveEvent(QEvent *event) override; - void mousePressEvent(QMouseEvent *event) override; - -Q_SIGNALS: - void mousePressed(); - -private: - DTK_GUI_NAMESPACE::DPalette m_currentpa; -}; - -class AuthenticationInfoItem : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT -public: - explicit AuthenticationInfoItem(QWidget *parent = nullptr); - void setTitle(const QString &title); - QString getTitle() const { return m_itemName; }; - void alertTitleRepeat(); - void appendItem(QWidget *widget); - void setShowIcon(bool state); - void setEditTitle(bool state); - void setHideTitle(bool state); - bool onNameEditFinished(); - //判断账户名是否符合规则 - bool validateName(const QString &password); - void showAlertMessage(const QString &errMsg); - -Q_SIGNALS: - void removeClicked(); - void editClicked(bool state); - void editTextFinished(QString finger); - -protected: - void enterEvent(QEvent *event) override; - void leaveEvent(QEvent *event) override; - -private: - QHBoxLayout *m_layout; - QLabel *m_title; - DTK_WIDGET_NAMESPACE::DIconButton *m_removeBtn; - DTK_WIDGET_NAMESPACE::DIconButton *m_editBtn; - DTK_WIDGET_NAMESPACE::DLineEdit *m_editTitle; - QString m_itemName; - DTK_GUI_NAMESPACE::DPalette m_currentpa; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/disclaimersdialog.cpp b/dcc-old/src/plugin-authentication/window/widgets/disclaimersdialog.cpp deleted file mode 100644 index 377e43dda4..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/disclaimersdialog.cpp +++ /dev/null @@ -1,116 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "disclaimersdialog.h" - -#include -#include -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -DisclaimersDialog::DisclaimersDialog(DisclaimersObj disobj, DAbstractDialog *parent) - : DAbstractDialog(parent) - , m_mainLayout(new QVBoxLayout(this)) - , m_cancelBtn(new QPushButton(this)) - , m_acceptBtn(new DSuggestButton(this)) -{ - initWidget(disobj); - initConnect(); - QWidget::installEventFilter(this); -} - -DisclaimersDialog::~DisclaimersDialog() -{ - -} - -void DisclaimersDialog::initWidget(DisclaimersObj state) -{ - setFixedSize(QSize(454, 542)); - m_mainLayout->setAlignment(Qt::AlignHCenter); - - DTitlebar *titleIcon = new DTitlebar(this); - titleIcon->setFrameStyle(QFrame::NoFrame); - titleIcon->setBackgroundTransparent(true); - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("Disclaimer")); - - DLabel *tipLabel = new DLabel(""); - if (state == DisclaimersObj::Faceid) { - tipLabel->setText(tr("Before using face recognition, please note that: \n" - "1. Your device may be unlocked by people or objects that look or appear similar to you.\n" - "2. Face recognition is less secure than digital passwords and mixed passwords.\n" - "3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios.\n" - "4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition.\n" - "5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition.\n" - "\n" - "In order to better use of face recognition, please pay attention to the following matters when inputting the facial data:\n" - "1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen.\n" - "2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features.\n" - "3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box.\n")); - } else if (state == DisclaimersObj::Finge || state == DisclaimersObj::Iris) { - setFixedSize(QSize(382, 446)); - tipLabel->setText(tr("\"Biometric authentication\" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through \"biometric authentication\", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result.\n" - "Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. \n" - "UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through \"Service and Support\" in the UnionTech OS. \n")); - } - - - DFontSizeManager::instance()->bind(tipLabel, DFontSizeManager::T6); - tipLabel->adjustSize(); - tipLabel->setWordWrap(true); - tipLabel->setContentsMargins(20, 0, 20, 0); - tipLabel->setAlignment(Qt::AlignJustify); - - QScrollArea *scrollArea = new QScrollArea; - scrollArea->setWidgetResizable(true); - scrollArea->setFrameStyle(QFrame::NoFrame); - scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - scrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - scrollArea->setContentsMargins(0, 0, 0, 0); - scrollArea->setWidget(tipLabel); - scrollArea->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContentsOnFirstShow); - QPalette pa = scrollArea->palette(); - pa.setColor(QPalette::Window, Qt::transparent); - scrollArea->setPalette(pa); - - // 下方按钮 - QHBoxLayout *btnLayout = new QHBoxLayout(this); - m_cancelBtn->setText(tr("Cancel")); - m_acceptBtn->setText(tr("Next")); - m_acceptBtn->setDisabled(false); - - btnLayout->addWidget(m_cancelBtn, Qt::AlignCenter); - btnLayout->addSpacing(10); - btnLayout->addWidget(m_acceptBtn, Qt::AlignCenter); - btnLayout->setContentsMargins(20, 10, 20, 20); - - m_mainLayout->addWidget(titleIcon, Qt::AlignTop | Qt::AlignRight); - m_mainLayout->addSpacing(10); - m_mainLayout->setMargin(0); - m_mainLayout->addWidget(scrollArea, 0, Qt::AlignHCenter); - m_mainLayout->setSpacing(5); - m_mainLayout->addLayout(btnLayout); - setLayout(m_mainLayout); -} - -void DisclaimersDialog::initConnect() -{ - connect(m_cancelBtn, &QPushButton::clicked, this, &DisclaimersDialog::close); - connect(m_acceptBtn, &QPushButton::clicked, this, [this] { - Q_EMIT requestClickStatus(true); - this->close(); - }); -} - -void DisclaimersDialog::closeEvent(QCloseEvent *event) -{ - Q_EMIT requesetCloseDlg(true); - QDialog::closeEvent(event); -} - diff --git a/dcc-old/src/plugin-authentication/window/widgets/disclaimersdialog.h b/dcc-old/src/plugin-authentication/window/widgets/disclaimersdialog.h deleted file mode 100644 index f23155ac4f..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/disclaimersdialog.h +++ /dev/null @@ -1,79 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -/* - * Copyright (C) 2011 ~ 2021 Deepin Technology Co., Ltd. - * - * Author: duanhongyu - - * Maintainer: duanhongyu - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -#include -#include - -DWIDGET_USE_NAMESPACE - -QT_BEGIN_NAMESPACE -class QDialog; -class QVBoxLayout; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DSuggestButton; -class DTipLabel; -DWIDGET_END_NAMESPACE - -enum DisclaimersObj { - Faceid, - Iris, - Finge -}; - -// 免责声明对话框 -class DisclaimersDialog : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit DisclaimersDialog(DisclaimersObj disobj, DAbstractDialog *parent = nullptr); - ~DisclaimersDialog(); - -private: - void initWidget(DisclaimersObj state); - void initConnect(); - -protected: - void closeEvent(QCloseEvent *event) override; - -Q_SIGNALS: - /** - * @brief requestClickStatus 点击确定后 返回登陆界面 显示勾选状态 - */ - void requestClickStatus(bool isClick); - /** - * @brief requesetCloseDlg 离开免责对话框界面 需要恢复父窗口显示状态 - */ - void requesetCloseDlg(bool isClose); - -private: - QVBoxLayout *m_mainLayout; - QPushButton* m_cancelBtn; - DTK_WIDGET_NAMESPACE::DSuggestButton* m_acceptBtn; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/disclaimersitem.cpp b/dcc-old/src/plugin-authentication/window/widgets/disclaimersitem.cpp deleted file mode 100644 index 9335cb4e42..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/disclaimersitem.cpp +++ /dev/null @@ -1,60 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "disclaimersdialog.h" -#include "disclaimersitem.h" - -#include -#include -#include -#include - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -DisclaimersItem::DisclaimersItem(DisclaimersObj disobj, QWidget *parent) - : SettingsItem(parent) - , m_layout(new QHBoxLayout(this)) - , m_acceptCheck(new QCheckBox(this)) - , m_state(disobj) -{ - m_acceptCheck->setText(tr("I have read and agree to the")); - - m_disclaimersBtn = new DCommandLinkButton(tr("Disclaimer")); - - m_layout->setContentsMargins(10, 0, 10, 0); - m_layout->addStretch(); - m_layout->addWidget(m_acceptCheck, 0, Qt::AlignCenter); - m_layout->addWidget(m_disclaimersBtn, 0, Qt::AlignCenter); - m_layout->addStretch(); - - DFontSizeManager::instance()->bind(m_acceptCheck, DFontSizeManager::SizeType::T8); - DFontSizeManager::instance()->bind(m_disclaimersBtn, DFontSizeManager::SizeType::T8); - - connect(m_disclaimersBtn, &QPushButton::clicked, this, &DisclaimersItem::requestSetWindowEnabled); - connect(m_disclaimersBtn, &QPushButton::clicked, this, &DisclaimersItem::showDisclaimers); - connect(m_acceptCheck, &QCheckBox::toggled, this, &DisclaimersItem::setAcceptState); - setLayout(m_layout); -} - -void DisclaimersItem::setAcceptState(const bool &state) -{ - m_acceptCheck->setChecked(state); - Q_EMIT requestStateChange(!state); -} - -void DisclaimersItem::showDisclaimers() -{ - DisclaimersDialog *disdlg = new DisclaimersDialog(m_state); - connect(disdlg, &DisclaimersDialog::requestClickStatus, this, &DisclaimersItem::setAcceptState); - connect(disdlg, &DisclaimersDialog::requesetCloseDlg, this, &DisclaimersItem::requestSetWindowEnabled); - disdlg->setWindowFlags(Qt::Dialog | Qt::Popup | Qt::WindowStaysOnTopHint); - disdlg->setFocus(); - disdlg->activateWindow(); - disdlg->exec(); -} - diff --git a/dcc-old/src/plugin-authentication/window/widgets/disclaimersitem.h b/dcc-old/src/plugin-authentication/window/widgets/disclaimersitem.h deleted file mode 100644 index 262fa8ea59..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/disclaimersitem.h +++ /dev/null @@ -1,40 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "widgets/settingsitem.h" -#include "disclaimersdialog.h" - -QT_BEGIN_NAMESPACE -class QCheckBox; -class QLabel; -class QHBoxLayout; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DSuggestButton; -class DCommandLinkButton; -DWIDGET_END_NAMESPACE - -// 免责声明 -class DisclaimersItem : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT -public: - explicit DisclaimersItem(DisclaimersObj disobj, QWidget *parent = nullptr); - -public Q_SLOTS: - void showDisclaimers(); - void setAcceptState(const bool &state); - -Q_SIGNALS: - void requestStateChange(bool state); - void requestSetWindowEnabled(bool checked = false); - -private: - QHBoxLayout *m_layout; - QCheckBox *m_acceptCheck; - DTK_WIDGET_NAMESPACE::DCommandLinkButton *m_disclaimersBtn; // 免责声明按钮 - DisclaimersObj m_state; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/face/addfaceinfodialog.cpp b/dcc-old/src/plugin-authentication/window/widgets/face/addfaceinfodialog.cpp deleted file mode 100644 index c0d898d952..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/face/addfaceinfodialog.cpp +++ /dev/null @@ -1,217 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "addfaceinfodialog.h" -#include "charamangermodel.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -AddFaceInfoDialog::AddFaceInfoDialog(CharaMangerModel *model, QWidget *parent) - : DAbstractDialog(parent) - , m_faceModel(model) - , m_mainLayout(new QVBoxLayout(this)) - , m_cancelBtn(new QPushButton(this)) - , m_acceptBtn(new DSuggestButton(this)) - , m_currentState(CharaMangerModel::AddInfoState::StartState) -{ - initWidget(); - initConnect(); - QWidget::installEventFilter(this); -} - -AddFaceInfoDialog::~AddFaceInfoDialog() -{ - -} - -void AddFaceInfoDialog::closeEvent(QCloseEvent *event) -{ - Q_EMIT requesetCloseDlg(); - QDialog::closeEvent(event); -} - -bool AddFaceInfoDialog::eventFilter(QObject *o, QEvent *e) -{ - if (o == this && QEvent::WindowDeactivate == e->type()) { - clearFocus(); - setFocus(); - return true; - } - return false; -} - -void AddFaceInfoDialog::initWidget() -{ - setFixedSize(QSize(454, 542)); - m_mainLayout->setAlignment(Qt::AlignHCenter); - - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("Enroll Face")); - - // 人脸图片 - m_facePic = new QLabel(this); - m_facePic->setPixmap(DIconTheme::findQIcon(getFacePicture()).pixmap(128,128)); - - // 提示信息 - m_resultTips = new QLabel(this); - m_resultTips->hide(); - m_explainTips = new DLabel(tr("Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well.")); - m_explainTips->setWordWrap(true); - m_explainTips->setAlignment(Qt::AlignCenter); - DFontSizeManager::instance()->bind(m_explainTips, DFontSizeManager::T8); - - QHBoxLayout *tips = new QHBoxLayout; - tips->addWidget(m_explainTips); - tips->setContentsMargins(42, 10, 42, 10); - - // 免责声明 - m_disclaimersItem = new DisclaimersItem(DisclaimersObj::Faceid, this); - m_disclaimersItem->show(); - - // 下方按钮 - QHBoxLayout *btnLayout = new QHBoxLayout; - m_cancelBtn->setText(tr("Cancel")); - m_cancelBtn->hide(); - m_acceptBtn->setText(tr("Next")); - m_acceptBtn->setDisabled(true); - - btnLayout->addWidget(m_cancelBtn, Qt::AlignCenter); - btnLayout->addSpacing(10); - btnLayout->addWidget(m_acceptBtn, Qt::AlignCenter); - btnLayout->setContentsMargins(20, 10, 20, 20); - - m_mainLayout->addWidget(titleIcon, Qt::AlignTop | Qt::AlignRight); - m_mainLayout->addSpacing(55); - m_mainLayout->addWidget(m_facePic, 0, Qt::AlignHCenter); - m_mainLayout->addSpacing(15); - m_mainLayout->addWidget(m_resultTips, 0, Qt::AlignHCenter); - m_mainLayout->addSpacing(10); - m_mainLayout->addLayout(tips); - m_mainLayout->addStretch(); - m_mainLayout->addWidget(m_disclaimersItem, 0, Qt::AlignCenter); - m_mainLayout->addLayout(btnLayout); - - m_mainLayout->setMargin(0); - m_mainLayout->setSpacing(0); - setLayout(m_mainLayout); - - this->activateWindow(); - this->setFocus(); -} - -void AddFaceInfoDialog::initConnect() -{ - connect(m_faceModel, &CharaMangerModel::enrollInfoState, this, &AddFaceInfoDialog::responseEnrollInfoState); - - connect(m_disclaimersItem, &DisclaimersItem::requestSetWindowEnabled, this, &AddFaceInfoDialog::onSetWindowEnabled); - connect(m_disclaimersItem, &DisclaimersItem::requestStateChange, m_acceptBtn, &QPushButton::setDisabled); - connect(m_cancelBtn, &QPushButton::clicked, this, &AddFaceInfoDialog::close); - connect(m_acceptBtn, &QPushButton::clicked, this, &AddFaceInfoDialog::requestShowFaceInfoDialog, Qt::UniqueConnection); -} - -QString AddFaceInfoDialog::getFacePicture() -{ - QString theme; - QString icon; - DGuiApplicationHelper::ColorType type = DGuiApplicationHelper::instance()->themeType(); - switch (type) { - case DGuiApplicationHelper::UnknownType: - break; - case DGuiApplicationHelper::LightType: - theme = QString("light"); - break; - case DGuiApplicationHelper::DarkType: - theme = QString("dark"); - break; - } - - switch (m_currentState) { - case CharaMangerModel::AddInfoState::StartState: - icon = QString("start"); - break; - case CharaMangerModel::AddInfoState::Success: - icon = QString("success"); - break; - case CharaMangerModel::AddInfoState::Fail: - icon = QString("fail"); - break; - default: - break; - } - return QString(":/icons/deepin/builtin/icons/%1/icons/icon_face-%2.svg").arg(theme).arg(icon); -} - -void AddFaceInfoDialog::responseEnrollInfoState(CharaMangerModel::AddInfoState state, const QString &tips) -{ - m_currentState = state; - - m_facePic->setPixmap(DIconTheme::findQIcon(getFacePicture()).pixmap(128, 128)); - if (m_currentState == CharaMangerModel::AddInfoState::StartState) { - m_resultTips->hide(); - - m_explainTips->setText(tr("Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well.")); - m_disclaimersItem->setAcceptState(false); - m_disclaimersItem->show(); - - m_cancelBtn->hide(); - m_acceptBtn->setText(tr("Next")); - m_acceptBtn->setDisabled(true); - m_acceptBtn->show(); - return; - } - - if (m_currentState == CharaMangerModel::AddInfoState::Success) { - m_resultTips->setText(tr("Face enrolled")); - m_resultTips->show(); - - m_explainTips->setText(tr("Use your face to unlock the device and make settings later")); - - m_disclaimersItem->hide(); - m_acceptBtn->hide(); - m_cancelBtn->show(); - m_cancelBtn->setText(tr("Done")); - } - - if (m_currentState == CharaMangerModel::AddInfoState::Fail) { - m_resultTips->setText(tr("Failed to enroll your face")); - m_resultTips->show(); - - m_explainTips->setText(tips); - - m_disclaimersItem->hide(); - m_acceptBtn->show(); - m_acceptBtn->setText(tr("Try Again")); - m_acceptBtn->setDisabled(false); - m_cancelBtn->show(); - m_cancelBtn->setText(tr("Close")); - } - - this->show(); - Q_EMIT requestStopEnroll(); -} - -// 处理界面失焦效果 配合 模态对话框 -void AddFaceInfoDialog::onSetWindowEnabled(const bool isEnabled) -{ - this->setEnabled(isEnabled); -} - diff --git a/dcc-old/src/plugin-authentication/window/widgets/face/addfaceinfodialog.h b/dcc-old/src/plugin-authentication/window/widgets/face/addfaceinfodialog.h deleted file mode 100644 index 8fd2ea278b..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/face/addfaceinfodialog.h +++ /dev/null @@ -1,70 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "widgets/titlelabel.h" -#include "widgets/buttontuple.h" -#include "widgets/disclaimersitem.h" -#include "charamangermodel.h" - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QPushButton; -class QCloseEvent; -class QDialog; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DSuggestButton; -class DTipLabel; -DWIDGET_END_NAMESPACE - -// 添加人脸对话框 -class CharaMangerModel; -class AddFaceInfoDialog : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit AddFaceInfoDialog(CharaMangerModel *model, QWidget *parent = nullptr); - ~AddFaceInfoDialog(); - - void onSetWindowEnabled(const bool isEnabled); - /** - * @brief responseEnrollInfoState 响应当前人脸录入状态 - * @param state 三种状态 - * @param tips 对应的提示语 - */ - void responseEnrollInfoState(CharaMangerModel::AddInfoState state, const QString &tips); - -Q_SIGNALS: - void requestShowFaceInfoDialog(); - void requesetCloseDlg(); - void requestStopEnroll(); - -protected: - void closeEvent(QCloseEvent *event) override; - bool eventFilter(QObject *o, QEvent *e) override; - -private: - void initWidget(); - void initConnect(); - QString getFacePicture(); - - -private: - CharaMangerModel *m_faceModel; - QVBoxLayout *m_mainLayout; - QLabel *m_facePic; // 人脸图片 - QLabel *m_resultTips; // 录入结果说明 - DLabel *m_explainTips; // 状态说明信息 - DisclaimersItem *m_disclaimersItem; // 免责声明 - QPushButton* m_cancelBtn; // 取消 - DTK_WIDGET_NAMESPACE::DSuggestButton* m_acceptBtn; // 下一步 - CharaMangerModel::AddInfoState m_currentState; -}; - diff --git a/dcc-old/src/plugin-authentication/window/widgets/face/faceinfodialog.cpp b/dcc-old/src/plugin-authentication/window/widgets/face/faceinfodialog.cpp deleted file mode 100644 index b1e21dec34..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/face/faceinfodialog.cpp +++ /dev/null @@ -1,90 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "faceinfodialog.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -FaceInfoDialog::FaceInfoDialog(CharaMangerModel *model, QWidget *parent) - : DAbstractDialog(parent) - , m_faceModel(model) - , m_faceLabel(new FaceInfoWidget(this)) - , m_mainLayout(new QVBoxLayout(this)) -{ - initWidget(); - - connect(m_faceModel, &CharaMangerModel::enrollInfoState, this, &FaceInfoDialog::close); - connect(m_faceModel, &CharaMangerModel::enrollStatusTips, this, &FaceInfoDialog::refreshExplainTips); - - QWidget::installEventFilter(this); -} - -FaceInfoDialog::~FaceInfoDialog() -{ -} - -void FaceInfoDialog::initWidget() -{ - setFixedSize(QSize(454, 542)); - m_mainLayout->setAlignment(Qt::AlignHCenter); - - DTitlebar *titleIcon = new DTitlebar(this); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("Enroll Face")); - - m_mainLayout->addWidget(titleIcon, Qt::AlignTop | Qt::AlignRight); - m_mainLayout->addSpacing(60); - m_mainLayout->addWidget(m_faceLabel, 0, Qt::AlignHCenter); - m_mainLayout->addSpacing(30); - - // 提示语 - m_explainTips = new QLabel(tr("Position your face inside the frame")); - m_explainTips->setWordWrap(true); - m_explainTips->setAlignment(Qt::AlignTop); - DFontSizeManager::instance()->bind(m_explainTips, DFontSizeManager::T6); - m_mainLayout->addWidget(m_explainTips, 0, Qt::AlignHCenter); - - m_mainLayout->setMargin(0); - m_mainLayout->setSpacing(0); - setLayout(m_mainLayout); - - this->activateWindow(); - this->setFocus(); -} - -void FaceInfoDialog::refreshExplainTips(QString tips) -{ - m_explainTips->setText(tips); -} - -void FaceInfoDialog::closeEvent(QCloseEvent *event) -{ - Q_EMIT requestCloseDlg(); - QDialog::closeEvent(event); -} - -bool FaceInfoDialog::eventFilter(QObject *o, QEvent *e) -{ - if (o == this && QEvent::WindowDeactivate == e->type()) { - clearFocus(); - setFocus(); - return true; - } - return false; -} - - diff --git a/dcc-old/src/plugin-authentication/window/widgets/face/faceinfodialog.h b/dcc-old/src/plugin-authentication/window/widgets/face/faceinfodialog.h deleted file mode 100644 index 207789d9a0..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/face/faceinfodialog.h +++ /dev/null @@ -1,55 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "charamangermodel.h" -#include "widgets/face/faceinfowidget.h" - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QPushButton; -class QCloseEvent; -class QLabel; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DSuggestButton; -class DTipLabel; -DWIDGET_END_NAMESPACE - -// 人脸视频录入对话框 -class FaceInfoWidget; -class FaceInfoDialog : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit FaceInfoDialog(CharaMangerModel *model, QWidget *parent = nullptr); - ~FaceInfoDialog(); - - inline FaceInfoWidget* faceInfoLabel() { return m_faceLabel; } - -private: - void initWidget(); - -private Q_SLOTS: - void refreshExplainTips(QString tips); - -Q_SIGNALS: - void requestCloseDlg(); - -protected: - void closeEvent(QCloseEvent *event) override; - bool eventFilter(QObject *o, QEvent *e) override; - -private: - CharaMangerModel *m_faceModel; - FaceInfoWidget *m_faceLabel; - - QVBoxLayout *m_mainLayout; - QLabel *m_explainTips; // 状态说明信息 -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/face/faceinfowidget.cpp b/dcc-old/src/plugin-authentication/window/widgets/face/faceinfowidget.cpp deleted file mode 100644 index a42f92a50f..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/face/faceinfowidget.cpp +++ /dev/null @@ -1,122 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "faceinfowidget.h" - -#include - -#include -#include -#include -#include -#include -#include - -using Dtk::Gui::DGuiApplicationHelper; - -#define Faceimg_SIZE 248 - -FaceInfoWidget::FaceInfoWidget(QWidget *parent) - : QLabel (parent) - , m_faceLable(new QLabel(this)) - , m_startTimer(new QTimer(this)) - , m_themeColor(DGuiApplicationHelper::instance()->systemTheme()->activeColor()) - , m_persent(0) - , m_rotateAngle(0) -{ - initWidget(); - - connect(m_startTimer, &QTimer::timeout, this, &FaceInfoWidget::onUpdateProgressbar); - m_startTimer->start(100); -} - -FaceInfoWidget::~FaceInfoWidget() -{ - if (m_startTimer) - m_startTimer->stop(); - m_faceLable = nullptr; -} - -void FaceInfoWidget::initWidget() -{ - QVBoxLayout *mainLayout = new QVBoxLayout(this); - setFixedSize(QSize(258, 258)); - mainLayout->setAlignment(Qt::AlignHCenter); - - mainLayout->addWidget(m_faceLable, 0, Qt::AlignHCenter); - mainLayout->setMargin(0); - mainLayout->setSpacing(0); - setLayout(mainLayout); -} - -void FaceInfoWidget::createConnection(const int fd) -{ - m_faceLable->setPixmap(QPixmap()); - DA_read_frames(fd, static_cast(m_faceLable), recvCamara); -} - -void FaceInfoWidget::onUpdateProgressbar() -{ - m_persent >= 96 ? m_persent = 0 : m_persent += 4; - update(); -} - -void FaceInfoWidget::recvCamara(void *const context, const DA_img *const img) -{ - if (!context) - return; - - QLabel *label_ptr = static_cast(context); - - QPixmap pix(Faceimg_SIZE, Faceimg_SIZE); - pix.fill(Qt::transparent); - QPainter painter(&pix); - painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - QPainterPath path; - path.addEllipse(0, 0, Faceimg_SIZE, Faceimg_SIZE); - painter.setClipPath(path); - painter.drawPixmap(0, 0, Faceimg_SIZE, Faceimg_SIZE, QPixmap::fromImage(QImage((uchar *)(img->data), img->width, img->height, QImage::Format_RGB888))); - if (label_ptr) { - label_ptr->setPixmap(pix); - } -} - - -void FaceInfoWidget::paintEvent(QPaintEvent *event) -{ - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing); - painter.save(); - - m_rotateAngle = 360 * m_persent / 100; - int side = qMin(width(), height()); - QRectF outRect(0, 0, side, side); - QRectF inRect(5, 5, side-10, side-10); - - painter.setPen(Qt::NoPen); - painter.setOpacity(0.1); - switch (DGuiApplicationHelper::instance()->themeType()) { - case DGuiApplicationHelper::UnknownType: - break; - case DGuiApplicationHelper::LightType: - painter.setBrush(QBrush(QColor("#000000"))); - break; - case DGuiApplicationHelper::DarkType: - painter.setBrush(QBrush(QColor("#ffffff"))); - break; - } - painter.drawEllipse(outRect); - - painter.setOpacity(1); - painter.setBrush(QBrush(m_themeColor)); - // startAngle和spanAngle必须以1/16度指定,即整圆等于5760(16 * 360) - painter.drawPie(outRect, (90 - m_rotateAngle)*16, 40 * 16); - - //画遮罩 - painter.setBrush(palette().window().color()); - painter.drawEllipse(inRect); - painter.restore(); - - QWidget::paintEvent(event); -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/face/faceinfowidget.h b/dcc-old/src/plugin-authentication/window/widgets/face/faceinfowidget.h deleted file mode 100644 index ea9fc2b3dd..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/face/faceinfowidget.h +++ /dev/null @@ -1,42 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "charamangermodel.h" -#include - -#include - -class FaceInfoWidget : public QLabel -{ - Q_OBJECT -public: - explicit FaceInfoWidget(QWidget *parent = nullptr); - ~FaceInfoWidget(); - - void initWidget(); - void createConnection(const int fd); - -private Q_SLOTS: - /** - * @brief onUpdateProgressbar 刷新外圈进度条 - */ - void onUpdateProgressbar(); - -private: - void paintEvent(QPaintEvent *event); - static void recvCamara(void *const context, const DA_img *const img); - -private: - DA_img *m_videoData; - QLabel *m_faceLable; - QTimer *m_startTimer; - QColor m_themeColor; - - int m_persent; // 记录进度 - int m_rotateAngle;//旋转角度 - int m_postRotateAngle; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/face/facewidget.cpp b/dcc-old/src/plugin-authentication/window/widgets/face/facewidget.cpp deleted file mode 100644 index 4acdb5e34d..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/face/facewidget.cpp +++ /dev/null @@ -1,193 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "facewidget.h" -#include "widgets/titlelabel.h" -#include "charamangermodel.h" - -#include - -#include -#include -#include -#include - -#define FACEID_NUM 5 - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -FaceWidget::FaceWidget(CharaMangerModel *model, QWidget *parent) - : QWidget (parent) - , m_model(model) - , m_listGrp(new SettingsGroup(nullptr, SettingsGroup::GroupBackground)) - , m_clearBtn(new DCommandLinkButton(tr("Edit"), this)) -{ - initUI(); - initConnect(); -} - -FaceWidget::~FaceWidget() -{ - -} - -void FaceWidget::initUI() -{ - m_clearBtn->setCheckable(true); - TitleLabel *facetitleLabel = new TitleLabel(tr("Manage Faces"), this); - TitleLabel *maxFingerTip = new TitleLabel(tr("You can add up to 5 faces"), this); - - QFont font; - font.setPointSizeF(10); - maxFingerTip->setFont(font); - - m_listGrp->setSpacing(1); - m_listGrp->setContentsMargins(10, 0, 10, 0); - m_listGrp->layout()->setMargin(0); - m_listGrp->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - QHBoxLayout *headLayout = new QHBoxLayout; - headLayout->setSpacing(0); - headLayout->setContentsMargins(10, 0, 10, 0); - headLayout->addWidget(facetitleLabel, 0, Qt::AlignLeft); - - QHBoxLayout *tipLayout = new QHBoxLayout; - tipLayout->setSpacing(10); - tipLayout->setContentsMargins(10, 0, 10, 0); - tipLayout->addWidget(maxFingerTip, 0, Qt::AlignLeft); - tipLayout->addWidget(m_clearBtn, 0, Qt::AlignRight); - tipLayout->addSpacing(5); - - QVBoxLayout *mainContentLayout = new QVBoxLayout; - mainContentLayout->setSpacing(1); - mainContentLayout->setMargin(0); - mainContentLayout->addLayout(headLayout); - mainContentLayout->addSpacing(2); - mainContentLayout->addLayout(tipLayout); - mainContentLayout->addSpacing(10); - mainContentLayout->addWidget(m_listGrp); - setLayout(mainContentLayout); - - //设置字体大小 - DFontSizeManager::instance()->bind(m_clearBtn, DFontSizeManager::T8); - - connect(m_clearBtn, &DCommandLinkButton::clicked, this, [ = ](bool checked) { - if (checked) { - m_clearBtn->setText(tr("Done")); - //添加一个空白区域 - mainContentLayout->addSpacing(20); - } else { - m_clearBtn->setText(tr("Edit")); - //把之前添加的空白区域移除 - mainContentLayout->removeItem(mainContentLayout->itemAt(mainContentLayout->count() - 1)); - } - for (auto &item : m_vecItem) { - item->setShowIcon(checked); - } - }); -} - -void FaceWidget::initConnect() -{ - connect(m_model, &CharaMangerModel::enrollInfoState, this, [this](){ - Q_EMIT noticeEnrollCompleted(m_model->faceDriverName(), m_model->faceCharaType()); - }); - connect(m_model, &CharaMangerModel::facesListChanged, this, &FaceWidget::onFaceidListChanged); - onFaceidListChanged(m_model->facesList()); - -} - -void FaceWidget::addFaceButton(const QString &newFaceName) -{ - AuthenticationLinkButtonItem* addfaceItem = new AuthenticationLinkButtonItem(this); - QString strAddFace = tr("Add Face"); - DCommandLinkButton *addBtn = new DCommandLinkButton(strAddFace); - QHBoxLayout *faceLayout = new QHBoxLayout(); - faceLayout->addWidget(addBtn, 0, Qt::AlignLeft); - // DCommandLinkButton 本身有2px 的间距 按ui要求上下保持一致 - faceLayout->setContentsMargins(3, 5, 0, 5); - addfaceItem->setLayout(faceLayout); - m_listGrp->insertItem(m_listGrp->itemCount(), addfaceItem); - addfaceItem->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - DFontSizeManager::instance()->bind(addBtn, DFontSizeManager::T7); - QFontMetrics fontMetrics(font()); - int nFontWidth = fontMetrics.horizontalAdvance(strAddFace); - addBtn->setMinimumWidth(nFontWidth); - connect(addBtn, &DCommandLinkButton::clicked, this, [ = ] { - Q_EMIT requestAddFace(m_model->faceDriverName(), m_model->faceCharaType(), newFaceName); - }); - connect(addfaceItem, &AuthenticationLinkButtonItem::mousePressed, this, [ = ] { - Q_EMIT requestAddFace(m_model->faceDriverName(), m_model->faceCharaType(), newFaceName); - }); -} - -void FaceWidget::onFaceidListChanged(const QStringList &facelist) -{ - m_vecItem.clear(); - m_listGrp->clear(); - - for (int n = 0; n < FACEID_NUM && n < facelist.size(); ++n) { - QString faceid = facelist.at(n); - auto item = new AuthenticationInfoItem(this); - item->setTitle(faceid); - item->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - DFontSizeManager::instance()->bind(item, DFontSizeManager::T6); - m_listGrp->appendItem(item); - connect(item, &AuthenticationInfoItem::removeClicked, this, [this, faceid] { - Q_EMIT requestDeleteFaceItem(m_model->faceCharaType(), faceid); - }); - - connect(item, &AuthenticationInfoItem::editTextFinished, this, [this, faceid, item, facelist, n](QString newName) { - // 没有改名,直接返回 - if (item->getTitle() == newName) { - return; - } - for (int i = 0; i < facelist.size(); ++i) { - if (newName == facelist.at(i) && i != n) { - QString errMsg = tr("The name already exists"); - item->showAlertMessage(errMsg); - return; - } - } - item->setTitle(newName); - Q_EMIT requestRenameFaceItem(m_model->faceCharaType(), faceid, newName); - Q_EMIT noticeEnrollCompleted(m_model->faceDriverName(), m_model->faceCharaType()); - }); - - connect(item, &AuthenticationInfoItem::editClicked, this, [this, item, facelist]() { - for (int k = 0; k < facelist.size(); ++k) { - static_cast(m_listGrp->getItem(k))->setEditTitle(item == m_listGrp->getItem(k)); - } - }); - - if (m_clearBtn->isChecked()) - item->setShowIcon(true); - - m_vecItem.append(item); - } - m_clearBtn->setVisible(m_listGrp->itemCount()); - - if (facelist.size() >= FACEID_NUM) { - return; - } - - // 找到最小的名称以便作为缺省名添加 - for (int i = 0; i < FACEID_NUM; ++i) { - bool findNotUsedThumb = false; - QString newName(tr("Faceprint") + QString("%1").arg(i + 1)); - - for (int n = 0; n < FACEID_NUM && n < facelist.size(); ++n) { - if (newName == facelist.at(n)) { - findNotUsedThumb = true; - break; - } - } - - if (!findNotUsedThumb) { - addFaceButton(newName); - break; - } - } -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/face/facewidget.h b/dcc-old/src/plugin-authentication/window/widgets/face/facewidget.h deleted file mode 100644 index 27b64cee30..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/face/facewidget.h +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "widgets/authenticationinfoitem.h" -#include "widgets/settingsgroup.h" - -#include - -#include -#include - -class CharaMangerModel; -class FaceWidget : public QWidget -{ - Q_OBJECT -public: - explicit FaceWidget(CharaMangerModel *model, QWidget *parent = nullptr); - ~FaceWidget(); - -private: - void initUI(); - void initConnect(); - -private Q_SLOTS: - void addFaceButton(const QString &newFaceName); - -Q_SIGNALS: - void requestAddFace(const QString &driverName, const int &charaType, const QString &charaName); - void requestDeleteFaceItem(const int &charaType, const QString &charaName); - void requestRenameFaceItem(const int &charaType, const QString &oldName, const QString &newName); - void noticeEnrollCompleted(const QString &driverName, const int &CharaType); - -public Q_SLOTS: - void onFaceidListChanged(const QStringList &facelist); - -private: - CharaMangerModel *m_model; - DCC_NAMESPACE::SettingsGroup *m_listGrp; - DTK_WIDGET_NAMESPACE::DCommandLinkButton *m_clearBtn; - QVector m_vecItem; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/addfingerdialog.cpp b/dcc-old/src/plugin-authentication/window/widgets/finger/addfingerdialog.cpp deleted file mode 100644 index ab06f06d61..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/addfingerdialog.cpp +++ /dev/null @@ -1,274 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "addfingerdialog.h" -#include "charamangermodel.h" - -#include - -#include -#include -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -#define test false - -AddFingerDialog::AddFingerDialog(const QString &thumb, QWidget *parent) - : DAbstractDialog(parent) - , m_timer(new QTimer(parent)) - , m_mainLayout(new QVBoxLayout(this)) - , m_btnHLayout(new QHBoxLayout(this)) - , m_fingeWidget(new FingerInfoWidget(this)) - , m_thumb(thumb) - , m_cancelBtn(new QPushButton(this)) - , m_spaceWidget(new QWidget(this)) - , m_addBtn(new DTK_WIDGET_NAMESPACE::DSuggestButton(this)) -{ - initWidget(); - initData(); - QWidget::installEventFilter(this); -} - -AddFingerDialog::~AddFingerDialog() -{ -} - -void AddFingerDialog::initWidget() -{ - setFixedSize(QSize(382,446)); - m_mainLayout->setAlignment(Qt::AlignHCenter); - - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(""); - - m_mainLayout->addWidget(titleIcon, Qt::AlignTop | Qt::AlignRight); - m_mainLayout->addSpacing(65); // UI 暂定 整体115 - m_mainLayout->addWidget(m_fingeWidget, 0, Qt::AlignTop | Qt::AlignHCenter); - - m_btnHLayout->addWidget(m_cancelBtn, Qt::AlignHorizontal_Mask); - QHBoxLayout *btnHLayout = new QHBoxLayout(this); - btnHLayout->addSpacing(20); - m_spaceWidget->setMaximumWidth(20); - m_spaceWidget->setLayout(btnHLayout); - m_btnHLayout->addWidget(m_spaceWidget, Qt::AlignHorizontal_Mask); - m_btnHLayout->addWidget(m_addBtn, Qt::AlignHorizontal_Mask); - m_btnHLayout->setContentsMargins(10, 0, 10, 10); - - m_mainLayout->setSpacing(0); - m_mainLayout->addLayout(m_btnHLayout); - - m_mainLayout->setMargin(0); - m_mainLayout->setSpacing(0); - - setLayout(m_mainLayout); - - this->activateWindow(); - this->setFocus(); -} - -void AddFingerDialog::initData() -{ - m_cancelBtn->setText((tr("Cancel"))); - m_addBtn->setEnabled(false); - m_addBtn->setVisible(false); - m_spaceWidget->setVisible(false); - connect(m_cancelBtn, &QPushButton::clicked, this, &AddFingerDialog::close); - connect(m_addBtn, &DSuggestButton::clicked, this, [=] { - auto text = m_addBtn->text(); - if (text == tr("Done")) { - this->close(); - } else if (text == tr("Scan Again")) { - Q_EMIT requestEnrollThumb(); - } - }); -} - -void AddFingerDialog::setFingerModel(CharaMangerModel *model) -{ - m_model = model; - m_timer->setSingleShot(true); - connect(m_timer, &QTimer::timeout, this, &AddFingerDialog::enrollOverTime); - connect(m_model, &CharaMangerModel::enrollCompleted, this, &AddFingerDialog::enrollCompleted); - connect(m_model, &CharaMangerModel::enrollStagePass, this, &AddFingerDialog::enrollStagePass); - connect(m_model, &CharaMangerModel::enrollFailed, this, &AddFingerDialog::enrollFailed); - connect(m_model, &CharaMangerModel::enrollDisconnected, this, &AddFingerDialog::enrollDisconnected); - connect(m_model, &CharaMangerModel::enrollRetry, this, &AddFingerDialog::enrollRetry); - connect(m_model, &CharaMangerModel::lockedChanged, this, [=](bool locked) { - if (locked) { -// close(); - } - }); - m_timer->start(1000 * 60);//1min -} - -void AddFingerDialog::setUsername(const QString &name) -{ - m_username = name; -} - -void AddFingerDialog::enrollCompleted() -{ - if (!m_isEnrolling) { - return; - } - - m_isEnrolling = false; - m_fingeWidget->finished(); - m_addBtn->show(); - m_addBtn->setText(tr("Done")); - m_addBtn->setEnabled(true); - m_cancelBtn->setVisible(false); - m_cancelBtn->setEnabled(false); - m_spaceWidget->setVisible(false); - m_timer->stop(); - Q_EMIT requestStopEnroll(m_username); -} - -void AddFingerDialog::enrollStagePass(int pro) -{ - if (!m_isEnrolling) { - return; - } - - m_addBtn->setEnabled(false); - m_fingeWidget->setProsses(pro); - m_timer->start(1000 * 60);//1min -} - -void AddFingerDialog::enrollFailed(QString title, QString msg) -{ - if (!m_isEnrolling) { - return; - } - m_isEnrolling = false; - m_fingeWidget->stopLiftTimer(); - m_fingeWidget->setStatueMsg(title, msg, true); - m_addBtn->show(); - m_addBtn->setText(tr("Scan Again")); - m_addBtn->setEnabled(true); - m_spaceWidget->setVisible(true); - m_timer->stop(); - - Q_EMIT requestStopEnroll(m_username); -} -void AddFingerDialog::enrollDisconnected() -{ - Q_EMIT requestStopEnroll(m_username); - - m_isEnrolling = false; - m_fingeWidget->setStatueMsg(tr("Scan Suspended"), tr("Scan Suspended"), true); - m_addBtn->show(); - m_addBtn->setText(tr("Scan Again")); - m_addBtn->setEnabled(true); - m_spaceWidget->setVisible(false); - m_timer->stop(); - - //会出现末知情况,需要与后端确认中断时是否可以停止 - Q_EMIT requestStopEnroll(m_username); -} - -void AddFingerDialog::enrollFocusOut() -{ - Q_EMIT requestStopEnroll(m_username); - - m_isEnrolling = false; - m_fingeWidget->setStatueMsg(tr("Scan Suspended"), tr(""), true); - m_addBtn->show(); - m_addBtn->setText(tr("Scan Again")); - m_cancelBtn->setEnabled(false); - m_addBtn->setEnabled(false); - m_spaceWidget->setVisible(true); - m_timer->stop(); - - //会出现末知情况,需要与后端确认中断时是否可以停止 - Q_EMIT requestStopEnroll(m_username); -} - -void AddFingerDialog::enrollOverTime() -{ - Q_EMIT requestStopEnroll(m_username); - - m_isEnrolling = false; - m_fingeWidget->setStatueMsg(tr("Scan Suspended"), "", true); - m_addBtn->show(); - m_addBtn->setText(tr("Scan Again")); - m_addBtn->setEnabled(true); - m_spaceWidget->setVisible(true); - m_timer->stop(); - - //会出现末知情况,需要与后端确认中断时是否可以停止 - Q_EMIT requestStopEnroll(m_username); -} - -void AddFingerDialog::enrollRetry(QString title, QString msg) -{ - if (!m_isEnrolling) { - return; - } - - m_addBtn->setEnabled(false); - m_timer->start(1000 * 60);//1min - m_fingeWidget->setStatueMsg(title, msg, false); -} - -void AddFingerDialog::setInitStatus() -{ - m_isEnrolling = true; - m_addBtn->setEnabled(false); - m_addBtn->setVisible(false); - m_spaceWidget->setVisible(false); - m_timer->start(1000 * 60);//1min - m_fingeWidget->reEnter(); -} - -void AddFingerDialog::closeEvent(QCloseEvent *event) -{ - if (m_isEnrolling) { - Q_EMIT requestStopEnroll(m_username); - } - Q_EMIT requesetCloseDlg(m_username); - QDialog::closeEvent(event); -} - -void AddFingerDialog::keyPressEvent(QKeyEvent *event) -{ -// switch (event->key()) { -// case Qt::Key_Escape: -// break; -// default: -// QDialog::keyPressEvent(event); -// break; -// } - if (event->key() != Qt::Key_Escape) { - QDialog::keyPressEvent(event); - } -} - -bool AddFingerDialog::eventFilter(QObject *o, QEvent *e) -{ - if (o == this) { - if (QEvent::WindowDeactivate == e->type()) { - clearFocus(); - if (m_isEnrolling) { - enrollFocusOut(); - QTimer::singleShot(1000, this, [=] { - m_cancelBtn->setEnabled(true); - m_addBtn->setEnabled(true); - }); - } - setFocus(); - return true ; - } - } - return false ; -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/addfingerdialog.h b/dcc-old/src/plugin-authentication/window/widgets/finger/addfingerdialog.h deleted file mode 100644 index 2ab6144582..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/addfingerdialog.h +++ /dev/null @@ -1,72 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "fingerinfowidget.h" -#include "widgets/titlelabel.h" - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QHBoxLayout; -class QPushButton; -class QCloseEvent; -class QDialog; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DSuggestButton; -class DTipLabel; -DWIDGET_END_NAMESPACE - -//添加指纹对话框 -class CharaMangerModel; -class AddFingerDialog : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit AddFingerDialog(const QString &thumb, QWidget *parent = nullptr); - ~AddFingerDialog() override; - - void setFingerModel(CharaMangerModel *model); - void setUsername(const QString &name); - void enrollCompleted(); - void enrollStagePass(int pro); - void enrollFailed(QString title, QString msg); - void setInitStatus(); - void enrollDisconnected(); - void enrollFocusOut(); - void enrollOverTime(); - void enrollRetry(QString title, QString msg); - -private: - void initWidget(); - void initData(); - void keyPressEvent(QKeyEvent *event); -protected: - void closeEvent(QCloseEvent *event); - bool eventFilter(QObject *o, QEvent *e); -Q_SIGNALS: - void requestSaveThumb(const QString &name); - void requestStopEnroll(const QString &thumb); - void requestReEnrollThumb(); - void requestEnrollThumb(); - void requesetCloseDlg(const QString &name); - -private: - QTimer *m_timer; - CharaMangerModel *m_model; - QVBoxLayout *m_mainLayout; - QHBoxLayout *m_btnHLayout; - FingerInfoWidget *m_fingeWidget; - QString m_thumb; - QString m_username; - QPushButton *m_cancelBtn; - QWidget *m_spaceWidget; - DTK_WIDGET_NAMESPACE::DSuggestButton *m_addBtn; - bool m_isEnrolling{true}; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerdisclaimer.cpp b/dcc-old/src/plugin-authentication/window/widgets/finger/fingerdisclaimer.cpp deleted file mode 100644 index 9e5907548f..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerdisclaimer.cpp +++ /dev/null @@ -1,153 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "fingerdisclaimer.h" -#include "charamangermodel.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -FingerDisclaimer::FingerDisclaimer(QWidget *parent) - : DAbstractDialog(parent) - , m_mainLayout(new QVBoxLayout(this)) - , m_fingerPic(new QLabel(this)) - , m_cancelBtn(new QPushButton(this)) - , m_acceptBtn(new DSuggestButton(this)) - , m_currentState(CharaMangerModel::AddInfoState::StartState) -{ - initWidget(); - initConnect(); - QWidget::installEventFilter(this); -} - -FingerDisclaimer::~FingerDisclaimer() -{ - -} - -void FingerDisclaimer::closeEvent(QCloseEvent *event) -{ - Q_EMIT requesetCloseDlg(); - QDialog::closeEvent(event); -} - -bool FingerDisclaimer::eventFilter(QObject *o, QEvent *e) -{ - if (o == this && QEvent::WindowDeactivate == e->type()) { - clearFocus(); - setFocus(); - return true; - } - return false; -} - -void FingerDisclaimer::initWidget() -{ - setFixedSize(QSize(382, 446)); - m_mainLayout->setAlignment(Qt::AlignHCenter); - - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("Add Fingerprint")); - - m_fingerPic = new QLabel(this); - m_fingerPic->setPixmap(DIconTheme::findQIcon(getFacePicture()).pixmap(128, 128)); - - // 提示信息 - m_resultTips = new QLabel(this); - m_resultTips->hide(); - m_explainTips = new DLabel(); - m_explainTips->setWordWrap(true); - m_explainTips->setAlignment(Qt::AlignCenter); - DFontSizeManager::instance()->bind(m_explainTips, DFontSizeManager::T8); - - QHBoxLayout *tips = new QHBoxLayout(this); - tips->addWidget(m_explainTips); - tips->setContentsMargins(42, 10, 42, 10); - - // 免责声明 - m_disclaimersItem = new DisclaimersItem(DisclaimersObj::Finge, this); - m_disclaimersItem->show(); - - // 下方按钮 - QHBoxLayout *btnLayout = new QHBoxLayout(this); - m_cancelBtn->setText(tr("Cancel")); - m_cancelBtn->hide(); - m_acceptBtn->setText(tr("Next")); - m_acceptBtn->setDisabled(true); - - btnLayout->addWidget(m_cancelBtn, Qt::AlignCenter); - btnLayout->addSpacing(10); - btnLayout->addWidget(m_acceptBtn, Qt::AlignHorizontal_Mask); - btnLayout->setContentsMargins(8, 10, 10, 12); - - m_mainLayout->addWidget(titleIcon, Qt::AlignTop | Qt::AlignRight); - m_mainLayout->addSpacing(85); - m_mainLayout->addWidget(m_fingerPic, 0, Qt::AlignHCenter); - m_mainLayout->addSpacing(15); - m_mainLayout->addWidget(m_resultTips, 0, Qt::AlignHCenter); - m_mainLayout->addSpacing(10); - m_mainLayout->addLayout(tips); - m_mainLayout->addStretch(); - m_mainLayout->addWidget(m_disclaimersItem, 0, Qt::AlignCenter); - m_mainLayout->addLayout(btnLayout); - - m_mainLayout->setMargin(0); - m_mainLayout->setSpacing(0); - setLayout(m_mainLayout); - - this->activateWindow(); - this->setFocus(); -} - -void FingerDisclaimer::initConnect() -{ - connect(m_disclaimersItem, &DisclaimersItem::requestSetWindowEnabled, this, &FingerDisclaimer::onSetWindowEnabled); - connect(m_disclaimersItem, &DisclaimersItem::requestStateChange, m_acceptBtn, &QPushButton::setDisabled); - connect(m_cancelBtn, &QPushButton::clicked, this, &FingerDisclaimer::close); - connect(m_acceptBtn, &QPushButton::clicked, this, &FingerDisclaimer::requestShowFingeInfoDialog, Qt::UniqueConnection); -} - -QString FingerDisclaimer::getFacePicture() -{ - QString theme; - QString icon; - DGuiApplicationHelper::ColorType type = DGuiApplicationHelper::instance()->themeType(); - switch (type) { - case DGuiApplicationHelper::UnknownType: - break; - case DGuiApplicationHelper::LightType: - theme = QString("light"); - break; - case DGuiApplicationHelper::DarkType: - theme = QString("dark"); - break; - } - - return QString(":/icons/deepin/builtin/icons/%1/icons/finger/fingerprint_light.svg").arg(theme); -} - - -// 处理界面失焦效果 配合 模态对话框 -void FingerDisclaimer::onSetWindowEnabled(const bool isEnabled) -{ - this->setEnabled(isEnabled); -} - diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerdisclaimer.h b/dcc-old/src/plugin-authentication/window/widgets/finger/fingerdisclaimer.h deleted file mode 100644 index 4ff1830e3e..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerdisclaimer.h +++ /dev/null @@ -1,59 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "charamangermodel.h" -#include "widgets/titlelabel.h" -#include "widgets/buttontuple.h" -#include "widgets/disclaimersitem.h" - -#include -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QPushButton; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DSuggestButton; -class DTipLabel; -DWIDGET_END_NAMESPACE - -class CharaMangerModel; -class FingerDisclaimer : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit FingerDisclaimer(QWidget *parent = nullptr); - ~FingerDisclaimer(); - - void onSetWindowEnabled(const bool isEnabled); - -Q_SIGNALS: - void requestShowFingeInfoDialog(); - void requesetCloseDlg(); - void requestStopEnroll(); - -protected: - void closeEvent(QCloseEvent *event); - bool eventFilter(QObject *o, QEvent *e); - -private: - void initWidget(); - void initConnect(); - QString getFacePicture(); - -private: - QVBoxLayout *m_mainLayout; - QLabel *m_fingerPic; - QLabel *m_resultTips; // 录入结果说明 - DTK_WIDGET_NAMESPACE::DLabel *m_explainTips; // 状态说明信息 - DisclaimersItem *m_disclaimersItem; // 免责声明 - QPushButton *m_cancelBtn; // 取消 - DTK_WIDGET_NAMESPACE::DSuggestButton *m_acceptBtn; // 下一步 - CharaMangerModel::AddInfoState m_currentState; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerinfowidget.cpp b/dcc-old/src/plugin-authentication/window/widgets/finger/fingerinfowidget.cpp deleted file mode 100644 index b9ab0f3ace..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerinfowidget.cpp +++ /dev/null @@ -1,166 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "fingerinfowidget.h" - -#include -#include - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -FingerInfoWidget::FingerInfoWidget(QWidget *parent) - : QWidget(parent) - , m_view(new DPictureSequenceView) - , m_tipLbl(new QLabel(this)) - , m_titleLbl(new DCC_NAMESPACE::TitleLabel(this)) - , m_isFinished(false) - , m_titleTimer(new QTimer(this)) - , m_msgTimer(new QTimer(this)) - , m_liftTimer(new QTimer(this)) -{ - m_titleTimer->setSingleShot(true); - m_titleTimer->setInterval(2000); - m_msgTimer->setSingleShot(true); - m_msgTimer->setInterval(2000); - m_liftTimer->setSingleShot(true); - m_liftTimer->setInterval(1000); - connect(m_titleTimer, &QTimer::timeout, this, [this] { - m_titleLbl->setText(m_defTitle); - }); - connect(m_msgTimer, &QTimer::timeout, this, [this] { - m_tipLbl->setText(m_defTip); - }); - connect(m_liftTimer, &QTimer::timeout, this, [this] { - if (m_pro > 0 && m_pro < 35) { - m_defTitle = tr("Place your finger"); - m_defTip = tr("Place your finger firmly on the sensor until you're asked to lift it"); - } else if (m_pro >= 35 && m_pro < 100) { - m_defTitle = tr("Scan the edges of your fingerprint"); - m_defTip = tr("Place the edges of your fingerprint on the sensor"); - } else { - m_liftTimer->stop(); - return; - } - - m_titleLbl->setText(m_defTitle); - m_tipLbl->setText(m_defTip); - }); - - DGuiApplicationHelper::ColorType type = DGuiApplicationHelper::instance()->themeType(); - switch (type) { - case DGuiApplicationHelper::UnknownType: - break; - case DGuiApplicationHelper::LightType: - m_theme = QString("light"); - break; - case DGuiApplicationHelper::DarkType: - m_theme = QString("dark"); - break; - } - - m_view->setSingleShot(true); - - m_titleLbl->setAlignment(Qt::AlignCenter); - m_tipLbl->setWordWrap(true); - m_tipLbl->setAlignment(Qt::AlignCenter); - - QVBoxLayout *layout = new QVBoxLayout; - m_view->setMinimumHeight(90); - layout->addWidget(m_view, 0, Qt::AlignTop); - layout->addSpacing(20); - layout->addWidget(m_titleLbl, 0, Qt::AlignHCenter); - layout->addSpacing(10); - layout->addWidget(m_tipLbl, 0, Qt::AlignHCenter); - setLayout(layout); - - setProsses(0); -} - -void FingerInfoWidget::setStatueMsg(const QString &title, const QString &msg, bool reset) -{ - m_reset = reset; - m_msgTimer->stop(); - m_titleTimer->stop(); - - m_titleLbl->setText(title); - m_tipLbl->setText(msg); - - if (!m_reset) { - m_msgTimer->start(); - m_titleTimer->start(); - - if (m_pro == 0) { - m_view->setPictureSequence(QStringList() << QString(":/icons/deepin/builtin/icons/%1/icons/finger/fingerprint_light.svg").arg(m_theme)); - } else { - m_view->setPictureSequence(QStringList() << QString(":/icons/deepin/builtin/icons/%1/icons/finger/fingerprint_animation_light_%2.svg") - .arg(m_theme).arg(m_pro/2)); - } - } -} - -void FingerInfoWidget::setProsses(int pro) -{ - m_pro = pro; - if (m_pro == 0) { - m_isStageOne = true; - m_view->setPictureSequence(QStringList() << QString(":/icons/deepin/builtin/icons/%1/icons/finger/fingerprint_light.svg").arg(m_theme)); - m_defTitle = tr("Place your finger"); - m_defTip = tr("Place your finger firmly on the sensor until you're asked to lift it"); - } else { - int idx = m_pro / 2; - idx = idx > 50 ? 50 : idx; - m_view->setPictureSequence(QStringList() << QString(":/icons/deepin/builtin/icons/%1/icons/finger/fingerprint_animation_light_%2.svg") - .arg(m_theme).arg(idx)); - if (m_pro > 0 && m_pro < 35) { - m_defTitle = tr("Lift your finger"); - m_defTip = tr("Lift your finger and place it on the sensor again"); - m_liftTimer->start(); - } else if (m_pro >= 35 && m_pro < 100) { - if (m_isStageOne == true) { - m_isStageOne = false; - m_defTitle = tr("Scan the edges of your fingerprint"); - m_defTip = tr("Adjust the position to scan the edges of your fingerprint"); - } else { - m_defTitle = tr("Scan the edges of your fingerprint"); - m_defTip = tr("Lift your finger and do that again"); - m_liftTimer->start(); - } - } else { - m_defTitle = tr("Fingerprint added"); - m_defTip = tr(""); - } - } - m_msgTimer->stop(); - m_titleTimer->stop(); - m_titleLbl->setText(m_defTitle); - auto font = m_titleLbl->font(); - font.setWeight(QFont::DemiBold); - m_titleLbl->setFont(font); - m_tipLbl->setText(m_defTip); -} - -void FingerInfoWidget::reEnter() -{ - m_isFinished = false; - - setProsses(0); -} - -void FingerInfoWidget::finished() -{ - m_isFinished = true; - stopLiftTimer(); - setProsses(100); -} - -void FingerInfoWidget::stopLiftTimer() -{ - if (nullptr != m_liftTimer && m_liftTimer->isActive()) - m_liftTimer->stop(); -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerinfowidget.h b/dcc-old/src/plugin-authentication/window/widgets/finger/fingerinfowidget.h deleted file mode 100644 index 70b1b5785f..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerinfowidget.h +++ /dev/null @@ -1,49 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "widgets/titlelabel.h" - -#include -#include -#include - -class FingerInfoWidget : public QWidget -{ - Q_OBJECT -public: - enum enrollStage { - enrollFirstStage = 1, - enrollSecondStage - }; - - explicit FingerInfoWidget(QWidget *parent = nullptr); - - void setStatueMsg(const QString &title, const QString &msg, bool reset = true); - - void setProsses(int pro); - void reEnter(); - void finished(); - void stopLiftTimer(); - -Q_SIGNALS: - void playEnd(); - -private: - DTK_WIDGET_NAMESPACE::DPictureSequenceView *m_view; - QLabel *m_tipLbl; - DCC_NAMESPACE::TitleLabel *m_titleLbl; - bool m_isFinished; - - QString m_defTip{""}; - QString m_defTitle{""}; - int m_pro{0}; - QTimer *m_titleTimer; - QTimer *m_msgTimer; - QTimer *m_liftTimer; - QString m_theme; - bool m_reset{false}; - bool m_isStageOne{true}; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/fingeritem.cpp b/dcc-old/src/plugin-authentication/window/widgets/finger/fingeritem.cpp deleted file mode 100644 index 4fdb72dd54..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/fingeritem.cpp +++ /dev/null @@ -1,43 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "fingeritem.h" - -#include -#include - -FingerItem::FingerItem(QWidget *parent) - : SettingsItem(parent) - , m_layout(new QHBoxLayout) - , m_editMode(false) - , m_editBtn(new DIconButton(this)) - , m_removeBtn(new DIconButton(this)) - , m_title(new QLabel) -{ - setFixedHeight(36); - - m_editBtn->setVisible(false); - - m_layout->setContentsMargins(20, 0, 10, 0); - - m_layout->addWidget(m_title); - m_layout->addWidget(m_editBtn); - m_layout->addStretch(); - m_layout->addWidget(m_removeBtn); - - setLayout(m_layout); -} - -void FingerItem::setTitle(const QString &title) -{ - m_title->setText(title); -} - -void FingerItem::setEditMode(const bool editmode) -{ - m_editMode = editmode; - - m_editBtn->setVisible(editmode); - m_removeBtn->setVisible(editmode); -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/fingeritem.h b/dcc-old/src/plugin-authentication/window/widgets/finger/fingeritem.h deleted file mode 100644 index df242cbe6c..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/fingeritem.h +++ /dev/null @@ -1,42 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef FINGERITEM_H -#define FINGERITEM_H - -#include -#include "widgets/settingsitem.h" -#include - -#include - -QT_BEGIN_NAMESPACE -class QHBoxLayout; -class QLabel; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DIconButton; -DWIDGET_END_NAMESPACE - -DWIDGET_USE_NAMESPACE - -class FingerItem : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT -public: - explicit FingerItem(QWidget *parent = nullptr); - - void setTitle(const QString &title); - void setEditMode(const bool editmode); - -private: - QHBoxLayout *m_layout; - bool m_editMode; - DIconButton *m_editBtn; - DIconButton *m_removeBtn; - QLabel *m_title; -}; - -#endif // FINGERITEM_H diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerwidget.cpp b/dcc-old/src/plugin-authentication/window/widgets/finger/fingerwidget.cpp deleted file mode 100644 index 216061187c..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerwidget.cpp +++ /dev/null @@ -1,198 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "charamangermodel.h" -#include "fingerwidget.h" -#include "widgets/titlelabel.h" -#include "widgets/settingsgroup.h" - -#include - -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -FingerWidget::FingerWidget(QWidget *parent) - : QWidget(parent) - , m_listGrp(new SettingsGroup(nullptr, SettingsGroup::GroupBackground)) - , m_clearBtn(nullptr) -{ - //注册所有的事件 - installEventFilter(this); - - m_clearBtn = new DCommandLinkButton(tr("Edit")); - m_clearBtn->setCheckable(true); - - TitleLabel *fingetitleLabel = new TitleLabel(tr("Fingerprint Password")); - TitleLabel *maxFingerTip = new TitleLabel(tr("You can add up to 10 fingerprints")); - QFont font; - font.setPointSizeF(10); - maxFingerTip->setFont(font); - - m_listGrp->setSpacing(1); - m_listGrp->setContentsMargins(10, 0, 10, 0); - m_listGrp->layout()->setMargin(0); - m_listGrp->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - QHBoxLayout *headLayout = new QHBoxLayout; - headLayout->setSpacing(0); - headLayout->setContentsMargins(10, 0, 10, 0); - headLayout->addWidget(fingetitleLabel, 0, Qt::AlignLeft); - - QHBoxLayout *tipLayout = new QHBoxLayout; - tipLayout->setSpacing(10); - tipLayout->setContentsMargins(10, 0, 10, 0); - tipLayout->addWidget(maxFingerTip, 0, Qt::AlignLeft); - tipLayout->addWidget(m_clearBtn, 0, Qt::AlignRight); - tipLayout->addSpacing(5); - - QVBoxLayout *mainContentLayout = new QVBoxLayout; - mainContentLayout->setSpacing(1); - mainContentLayout->setMargin(0); - mainContentLayout->addLayout(headLayout); - mainContentLayout->addSpacing(2); - mainContentLayout->addLayout(tipLayout); - mainContentLayout->addSpacing(10); - mainContentLayout->addWidget(m_listGrp); - setLayout(mainContentLayout); - - //设置字体大小 - DFontSizeManager::instance()->bind(m_clearBtn, DFontSizeManager::T8); - - connect(m_clearBtn, &DCommandLinkButton::clicked, this, [ = ](bool checked) { - if (checked) { - m_clearBtn->setText(tr("Done")); - //添加一个空白区域 - mainContentLayout->addSpacing(20); - } else { - m_clearBtn->setText(tr("Edit")); - //把之前添加的空白区域移除 - mainContentLayout->removeItem(mainContentLayout->itemAt(mainContentLayout->count() - 1)); - } - for (auto &item : m_vecItem) { - item->setShowIcon(checked); - } - }); -} - -FingerWidget::~FingerWidget() -{ - -} - -void FingerWidget::setFingerModel(CharaMangerModel *model) -{ - m_model = model; - m_currentUserName = model->userName(); - connect(m_model, &CharaMangerModel::enrollCompleted, this, [this] { - Q_EMIT noticeEnrollCompleted(m_currentUserName); - }); - connect(model, &CharaMangerModel::thumbsListChanged, this, &FingerWidget::onThumbsListChanged); - onThumbsListChanged(model->thumbsList()); -} - -bool FingerWidget::eventFilter(QObject *watched, QEvent *event) -{ - Q_UNUSED(watched); - //删除指纹提权超时的时候,再次输入密码需要通知界面刷新 - if(event->type() == QEvent::WindowActivate) { - Q_EMIT noticeEnrollCompleted(m_currentUserName); - } - return true; -} - -void FingerWidget::onThumbsListChanged(const QStringList &thumbs) -{ - m_vecItem.clear(); - m_listGrp->clear(); - - for (int n = 0; n < 10 && n < thumbs.size(); ++n) { - QString finger = thumbs.at(n); - auto item = new AuthenticationInfoItem(this); - item->setTitle(finger); - item->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - DFontSizeManager::instance()->bind(item, DFontSizeManager::T6); - m_listGrp->appendItem(item); - connect(item, &AuthenticationInfoItem::removeClicked, this, [this, finger] { - Q_EMIT requestDeleteFingerItem(m_currentUserName, finger); - }); - connect(item, &AuthenticationInfoItem::editTextFinished, this, [this, finger, item, thumbs, n](QString newName) { - // 没有改名,直接返回 - if (item->getTitle() == newName) { - return; - } - for (int i = 0; i < thumbs.size(); ++i) { - if (newName == thumbs.at(i) && i != n) { - QString errMsg = tr("The name already exists"); - item->showAlertMessage(errMsg); - return; - } - } - item->setTitle(newName); - Q_EMIT requestRenameFingerItem(m_currentUserName, finger, newName); - }); - - connect(item, &AuthenticationInfoItem::editClicked, this, [this, item, thumbs]() { - for (int k = 0; k < thumbs.size(); ++k) { - static_cast(m_listGrp->getItem(k))->setEditTitle(item == m_listGrp->getItem(k)); - } - }); - - if(m_clearBtn->isChecked()) - item->setShowIcon(true); - - m_vecItem.append(item); - } - - m_clearBtn->setVisible(m_listGrp->itemCount()); - // 如果指纹数量大于等于10,则不显示添加指纹按钮 - if (thumbs.size() >= 10) { - return; - } - // 找到最小的指纹名以便作为缺省名添加 - for (int i = 0; i < m_model->getPredefineThumbsName().size(); ++i) { - bool findNotUsedThumb = false; - QString newFingerName = m_model->getPredefineThumbsName().at(i); - for (int n = 0; n < 10 && n < thumbs.size(); ++n) { - if (newFingerName == thumbs.at(n)) { - findNotUsedThumb = true; - break; - } - } - if (!findNotUsedThumb) { - addFingerButton(newFingerName); - break; - } - } -} - -void FingerWidget::addFingerButton(const QString &newFingerName) -{ - AuthenticationLinkButtonItem* addfingerItem = new AuthenticationLinkButtonItem(this); - - QString strAddFinger = tr("Add Fingerprint"); - DCommandLinkButton *addBtn = new DCommandLinkButton(strAddFinger); - QHBoxLayout *fingerLayout = new QHBoxLayout(this); - fingerLayout->addWidget(addBtn, 0, Qt::AlignLeft); - fingerLayout->setContentsMargins(3, 5, 0, 5); - addfingerItem->setLayout(fingerLayout); - m_listGrp->insertItem(m_listGrp->itemCount(), addfingerItem); - addfingerItem->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - DFontSizeManager::instance()->bind(addBtn, DFontSizeManager::T7); - QFontMetrics fontMetrics(font()); - int nFontWidth = fontMetrics.horizontalAdvance(strAddFinger); - addBtn->setMinimumWidth(nFontWidth); - connect(addBtn, &DCommandLinkButton::clicked, this, [ = ] { - Q_EMIT requestAddThumbs(m_currentUserName, newFingerName); - }); - connect(addfingerItem, &AuthenticationLinkButtonItem::mousePressed, this, [ = ] { - Q_EMIT requestAddThumbs(m_currentUserName, newFingerName); - }); -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerwidget.h b/dcc-old/src/plugin-authentication/window/widgets/finger/fingerwidget.h deleted file mode 100644 index 099ef223eb..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/finger/fingerwidget.h +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "widgets/authenticationinfoitem.h" -#include "widgets/settingsgroup.h" -#include - -#include -#include - -DWIDGET_BEGIN_NAMESPACE -class DCommandLinkButton; -DWIDGET_END_NAMESPACE - -class CharaMangerModel; -class FingerWidget : public QWidget -{ - Q_OBJECT -public: - explicit FingerWidget(QWidget *parent = nullptr); - ~FingerWidget(); - void setFingerModel(CharaMangerModel *model); - void addFingerButton(const QString &newFingerName); - bool eventFilter(QObject *watched, QEvent *event)override; - -Q_SIGNALS: - void requestAddThumbs(const QString &name, const QString &thumb); - void requestDeleteFingerItem(const QString &userName, const QString& finger); - void requestRenameFingerItem(const QString &userName, const QString& finger, const QString& newName); - void noticeEnrollCompleted(QString userName); - -public Q_SLOTS: - void onThumbsListChanged(const QStringList &thumbs); - -private: - QString m_currentUserName; - CharaMangerModel *m_model; - DCC_NAMESPACE::SettingsGroup *m_listGrp; - DTK_WIDGET_NAMESPACE::DCommandLinkButton *m_clearBtn; - QVector m_vecItem; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/iris/addirisinfodialog.cpp b/dcc-old/src/plugin-authentication/window/widgets/iris/addirisinfodialog.cpp deleted file mode 100644 index fec616a9b9..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/iris/addirisinfodialog.cpp +++ /dev/null @@ -1,184 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "addirisinfodialog.h" -#include "charamangermodel.h" - -#include -#include -#include - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -AddIrisInfoDialog::AddIrisInfoDialog(CharaMangerModel *model, QWidget *parent) - : DAbstractDialog(parent) - , m_charaModel(model) - , m_mainLayout(new QVBoxLayout(this)) - , m_irisInfo(new IrisInfoWidget(this)) - , m_resultTips(new QLabel(this)) - , m_explainTips(new QLabel(this)) - , m_disclaimersItem(new DisclaimersItem(DisclaimersObj::Iris, this)) - , m_cancelBtn(new QPushButton(this)) - , m_acceptBtn(new DSuggestButton(this)) -{ - initWidget(); - initConnect(); - installEventFilter(this); -} - -AddIrisInfoDialog::~AddIrisInfoDialog() -{ - -} - - -void AddIrisInfoDialog::closeEvent(QCloseEvent *event) -{ - Q_EMIT requesetCloseDlg(); - if (m_state == CharaMangerModel::AddInfoState::Processing) { - Q_EMIT requestStopEnroll(); - } - QDialog::closeEvent(event); -} - -bool AddIrisInfoDialog::eventFilter(QObject *o, QEvent *e) -{ - if (o == this && QEvent::WindowDeactivate == e->type()) { - clearFocus(); - setFocus(); - return true; - } - return false; -} - -void AddIrisInfoDialog::initWidget() -{ - setFixedSize(QSize(340, 404)); - m_mainLayout->setAlignment(Qt::AlignHCenter); - - DTitlebar *titleIcon = new DTitlebar(this); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("Enroll Iris")); - - // 图片 - m_irisInfo->setFixedSize(QSize(128, 128)); - m_irisInfo->updateState(CharaMangerModel::AddInfoState::StartState); - - // 提示信息 - m_resultTips->hide(); - m_explainTips = new QLabel(this); - m_explainTips->setWordWrap(true); - m_explainTips->setAlignment(Qt::AlignCenter); - DFontSizeManager::instance()->bind(m_explainTips, DFontSizeManager::T8); - - QHBoxLayout *tips = new QHBoxLayout(this); - tips->addWidget(m_explainTips, 0, Qt::AlignHCenter); - - // 免责声明 - m_disclaimersItem->show(); - - // 下方按钮 - QHBoxLayout *btnLayout = new QHBoxLayout(this); - m_cancelBtn->setText(tr("Cancel")); - m_cancelBtn->hide(); - m_acceptBtn->setText(tr("Next")); - m_acceptBtn->setDisabled(true); - - btnLayout->addWidget(m_cancelBtn, Qt::AlignCenter); - btnLayout->addSpacing(10); - btnLayout->addWidget(m_acceptBtn, Qt::AlignCenter); - btnLayout->setContentsMargins(20, 10, 20, 20); - - m_mainLayout->addWidget(titleIcon, Qt::AlignTop | Qt::AlignRight); - m_mainLayout->addSpacing(30); - m_mainLayout->addWidget(m_irisInfo, 0, Qt::AlignHCenter); - m_mainLayout->addSpacing(15); - m_mainLayout->addWidget(m_resultTips, 0, Qt::AlignHCenter); - m_mainLayout->addSpacing(10); - m_mainLayout->addLayout(tips); - m_mainLayout->addStretch(); - m_mainLayout->addWidget(m_disclaimersItem, 0, Qt::AlignCenter); - m_mainLayout->addLayout(btnLayout); - - m_mainLayout->setMargin(0); - m_mainLayout->setSpacing(0); - setLayout(m_mainLayout); -} - -void AddIrisInfoDialog::initConnect() -{ - connect(m_charaModel, &CharaMangerModel::enrollIrisInfoState, this, &AddIrisInfoDialog::refreshInfoStatusDisplay); - connect(m_charaModel, &CharaMangerModel::enrollIrisStatusTips, this, &AddIrisInfoDialog::refreshExplainTips); - connect(m_disclaimersItem, &DisclaimersItem::requestSetWindowEnabled, this, &AddIrisInfoDialog::onSetWindowEnabled); - connect(m_disclaimersItem, &DisclaimersItem::requestStateChange, m_acceptBtn, &QPushButton::setDisabled); - - connect(m_cancelBtn, &QPushButton::clicked, this, &AddIrisInfoDialog::close); - connect(m_acceptBtn, &QPushButton::clicked, this, &AddIrisInfoDialog::requestInputIris); - connect(m_cancelBtn, &QPushButton::clicked, this, [this]{ - if (m_acceptBtn->text() == "Done") { - this->close(); - } - }); -} - -void AddIrisInfoDialog::refreshInfoStatusDisplay(CharaMangerModel::AddInfoState state) -{ - m_irisInfo->updateState(state); - m_state = state; - switch (state) { - case CharaMangerModel::AddInfoState::Processing:{ - m_resultTips->setVisible(false); - m_disclaimersItem->setVisible(false); - m_cancelBtn->setVisible(false); - m_acceptBtn->setVisible(false); - m_explainTips->setVisible(true); - } - break; - case CharaMangerModel::AddInfoState::Success:{ - m_resultTips->setVisible(true); - m_resultTips->setText(tr("Iris enrolled")); - m_disclaimersItem->setVisible(false); - m_cancelBtn->setVisible(true); - m_cancelBtn->setText(tr("Done")); - m_acceptBtn->setVisible(false); - m_explainTips->setVisible(false); - - Q_EMIT requestStopEnroll(); - } - break; - case CharaMangerModel::AddInfoState::Fail:{ - m_resultTips->setVisible(true); - m_resultTips->setText(tr("Failed to enroll your iris")); - m_disclaimersItem->setVisible(false); - m_cancelBtn->setVisible(true); - m_cancelBtn->setText("Done"); - m_acceptBtn->setVisible(true); - m_acceptBtn->setText(tr("Try Again")); - m_explainTips->setVisible(false); - - Q_EMIT requestStopEnroll(); - } - break; - default: - break; - } -} - -void AddIrisInfoDialog::onSetWindowEnabled(const bool isEnabled) -{ - this->setEnabled(isEnabled); -} - -void AddIrisInfoDialog::refreshExplainTips(QString tips) -{ - m_explainTips->setText(tips); -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/iris/addirisinfodialog.h b/dcc-old/src/plugin-authentication/window/widgets/iris/addirisinfodialog.h deleted file mode 100644 index bdf6f248a0..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/iris/addirisinfodialog.h +++ /dev/null @@ -1,66 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "widgets/titlelabel.h" -#include "widgets/buttontuple.h" -#include "widgets/disclaimersitem.h" -#include "widgets/iris/irisinfowidget.h" - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QPushButton; -class QCloseEvent; -class QDialog; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DSuggestButton; -class DTipLabel; -DWIDGET_END_NAMESPACE - -// 虹膜对话框 -class CharaMangerModel; -class AddIrisInfoDialog : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - - explicit AddIrisInfoDialog(CharaMangerModel *model, QWidget *parent = nullptr); - ~AddIrisInfoDialog(); - -Q_SIGNALS: - void requestInputIris(); - void requesetCloseDlg(); - void requestStopEnroll(); - -protected: - void closeEvent(QCloseEvent *event) override; - bool eventFilter(QObject *o, QEvent *e) override; - -private: - void initWidget(); - void initConnect(); - -public Q_SLOTS: - void refreshInfoStatusDisplay(CharaMangerModel::AddInfoState state); - void onSetWindowEnabled(const bool isEnabled); - void refreshExplainTips(QString tips); - -private: - CharaMangerModel *m_charaModel; - QVBoxLayout *m_mainLayout; - IrisInfoWidget *m_irisInfo; - QLabel *m_resultTips; // 录入结果说明 - QLabel *m_explainTips; // 状态说明信息 - DisclaimersItem *m_disclaimersItem; // 免责声明 - QPushButton* m_cancelBtn; // 取消 - DTK_WIDGET_NAMESPACE::DSuggestButton* m_acceptBtn; // 下一步 - CharaMangerModel::AddInfoState m_state; -}; - diff --git a/dcc-old/src/plugin-authentication/window/widgets/iris/irisinfowidget.cpp b/dcc-old/src/plugin-authentication/window/widgets/iris/irisinfowidget.cpp deleted file mode 100644 index ed17fbf46f..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/iris/irisinfowidget.cpp +++ /dev/null @@ -1,94 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "irisinfowidget.h" - -#include -#include -#include -#include - -DGUI_USE_NAMESPACE - -IrisInfoWidget::IrisInfoWidget(QWidget *parent) - : QWidget (parent) - , m_state(CharaMangerModel::AddInfoState::StartState) - , m_timer(new QTimer(this)) - , m_angle(0) -{ - m_timer->setInterval(1000 / 60); - connect(m_timer, &QTimer::timeout, this, static_cast(&QWidget::update)); -} - -IrisInfoWidget::~IrisInfoWidget() -{ - -} - -void IrisInfoWidget::updateState(CharaMangerModel::AddInfoState state) -{ - m_state = state; - - if (m_state == CharaMangerModel::AddInfoState::Processing) - m_timer->start(); - else { - m_timer->stop(); - } - update(); -} - -void IrisInfoWidget::paintEvent(QPaintEvent *event) -{ - QPainter painter(this); - - painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - - QString backRes; - - if (m_state == CharaMangerModel::AddInfoState::StartState - || m_state == CharaMangerModel::AddInfoState::Processing) { - if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - backRes = ":/icons/deepin/builtin/icons/dcc_auth_iris-light.svg"; - } else if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType) { - backRes = ":/icons/deepin/builtin/icons/dcc_auth_iris-dark.svg"; - } - } else if (m_state == CharaMangerModel::AddInfoState::Success) { - backRes = ":/icons/deepin/builtin/icons/dcc_auth_success.svg"; - } else if (m_state == CharaMangerModel::AddInfoState::Fail) { - backRes = ":/icons/deepin/builtin/icons/dcc_auth_fail.svg"; - } else { - qWarning() << "not support"; - } - - // 静态背景图 - QPixmap backPix(backRes); - const int minSize = qMin(width(), height()); - const qreal scale = backPix.width() * 1.0 / minSize; - backPix = backPix.scaled(minSize, minSize, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - painter.drawPixmap(rect(), backPix); - - // 动态效果 - if (m_state == CharaMangerModel::AddInfoState::Processing) { - // 内圈 - painter.translate(width() / 2, height() / 2); - painter.rotate((m_angle += 1) % 360); - painter.translate( -(width() / 2), -(height() / 2)); - QPixmap insidePix(":/icons/deepin/builtin/icons/dcc_auth_circle_inside.svg"); - insidePix = insidePix.scaled(insidePix.width() / scale, insidePix.height() / scale, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - QRect insideRect((width() - insidePix.width() / scale) / 2, (height() - insidePix.height() / scale) / 2, insidePix.width() / scale, insidePix.height() / scale); - painter.drawPixmap(insideRect, insidePix); - - // 外圈 - painter.translate(width() / 2, height() / 2); - painter.rotate((m_angle += 2) % 360); - painter.translate( -(width() / 2), -(height() / 2)); - QPixmap outsidePix(":/icons/deepin/builtin/icons/dcc_auth_circle_outside.svg"); - outsidePix = outsidePix.scaled(outsidePix.width() / scale, outsidePix.height() / scale, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - QRect outsideRect((width() - outsidePix.width() / scale) / 2, (height() - outsidePix.height() / scale) / 2, outsidePix.width() / scale, outsidePix.height() / scale); - painter.drawPixmap(outsideRect, outsidePix); - } - - QWidget::paintEvent(event); -} - diff --git a/dcc-old/src/plugin-authentication/window/widgets/iris/irisinfowidget.h b/dcc-old/src/plugin-authentication/window/widgets/iris/irisinfowidget.h deleted file mode 100644 index 9b8d1d5252..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/iris/irisinfowidget.h +++ /dev/null @@ -1,34 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "charamangermodel.h" - -#include - -class CharaMangerModel; - -class IrisInfoWidget : public QWidget -{ - Q_OBJECT -public: - explicit IrisInfoWidget(QWidget *parent = nullptr); - ~IrisInfoWidget(); - -public Q_SLOTS: - void updateState(CharaMangerModel::AddInfoState state); - -private: - void initWidget(); - -protected: - void paintEvent(QPaintEvent *event); - -private: - CharaMangerModel::AddInfoState m_state; - QTimer *m_timer; - int m_angle; -}; diff --git a/dcc-old/src/plugin-authentication/window/widgets/iris/iriswidget.cpp b/dcc-old/src/plugin-authentication/window/widgets/iris/iriswidget.cpp deleted file mode 100644 index 3e962b2c72..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/iris/iriswidget.cpp +++ /dev/null @@ -1,194 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "iriswidget.h" -#include "widgets/titlelabel.h" -#include "charamangermodel.h" - -#include - -#include -#include -#include -#include - -#define IRISID_NUM 5 - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -IrisWidget::IrisWidget(CharaMangerModel *model, QWidget *parent) - : QWidget (parent) - , m_model(model) - , m_listGrp(new SettingsGroup(nullptr, SettingsGroup::GroupBackground)) - , m_clearBtn(new DCommandLinkButton(tr("Edit"), this)) -{ - initUI(); - initConnect(); -} - -IrisWidget::~IrisWidget() -{ - -} - -void IrisWidget::initUI() -{ - m_clearBtn->setCheckable(true); - - TitleLabel *titleLabel = new TitleLabel(tr("Manage Irises"), this); - TitleLabel *maxFingerTip = new TitleLabel(tr("You can add up to 5 irises"), this); - - QFont font; - font.setPointSizeF(10); - maxFingerTip->setFont(font); - - m_listGrp->setSpacing(1); - m_listGrp->setContentsMargins(10, 0, 10, 0); - m_listGrp->layout()->setMargin(0); - m_listGrp->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - QHBoxLayout *headLayout = new QHBoxLayout; - headLayout->setSpacing(0); - headLayout->setContentsMargins(10, 0, 10, 0); - headLayout->addWidget(titleLabel, 0, Qt::AlignLeft); - - QHBoxLayout *tipLayout = new QHBoxLayout; - tipLayout->setSpacing(10); - tipLayout->setContentsMargins(10, 0, 10, 0); - tipLayout->addWidget(maxFingerTip, 0, Qt::AlignLeft); - tipLayout->addWidget(m_clearBtn, 0, Qt::AlignRight); - tipLayout->addSpacing(5); - - QVBoxLayout *mainContentLayout = new QVBoxLayout; - mainContentLayout->setSpacing(1); - mainContentLayout->setMargin(0); - mainContentLayout->addLayout(headLayout); - mainContentLayout->addSpacing(2); - mainContentLayout->addLayout(tipLayout); - mainContentLayout->addSpacing(10); - mainContentLayout->addWidget(m_listGrp); - setLayout(mainContentLayout); - - //设置字体大小 - DFontSizeManager::instance()->bind(m_clearBtn, DFontSizeManager::T8); - - connect(m_clearBtn, &DCommandLinkButton::clicked, this, [ = ](bool checked) { - if (checked) { - m_clearBtn->setText(tr("Done")); - //添加一个空白区域 - mainContentLayout->addSpacing(20); - } else { - m_clearBtn->setText(tr("Edit")); - //把之前添加的空白区域移除 - mainContentLayout->removeItem(mainContentLayout->itemAt(mainContentLayout->count() - 1)); - } - for (auto &item : m_vecItem) { - item->setShowIcon(checked); - } - }); -} - -void IrisWidget::initConnect() -{ - connect(m_model, &CharaMangerModel::enrollInfoState, this, [this](){ - Q_EMIT noticeEnrollCompleted(m_model->irisDriverName(), m_model->irisCharaType()); - }); - connect(m_model, &CharaMangerModel::irisListChanged, this, &IrisWidget::onIrisListChanged); - onIrisListChanged(m_model->irisList()); - -} - -void IrisWidget::addIrisButton(const QString &newIrisName) -{ - AuthenticationLinkButtonItem* addItem = new AuthenticationLinkButtonItem(this); - - QString strAddIris = tr("Add Iris"); - DCommandLinkButton *addBtn = new DCommandLinkButton(strAddIris); - QHBoxLayout *irisLayout = new QHBoxLayout(this); - irisLayout->addWidget(addBtn, 0, Qt::AlignLeft); - irisLayout->setContentsMargins(3, 5, 0, 5); - addItem->setLayout(irisLayout); - m_listGrp->insertItem(m_listGrp->itemCount(), addItem); - addItem->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - DFontSizeManager::instance()->bind(addBtn, DFontSizeManager::T7); - QFontMetrics fontMetrics(font()); - int nFontWidth = fontMetrics.horizontalAdvance(strAddIris); - addBtn->setMinimumWidth(nFontWidth); - connect(addBtn, &DCommandLinkButton::clicked, this, [ = ] { - Q_EMIT requestAddIris(m_model->irisDriverName(), m_model->irisCharaType(), newIrisName); - }); - connect(addItem, &AuthenticationLinkButtonItem::mousePressed, this, [ = ] { - Q_EMIT requestAddIris(m_model->irisDriverName(), m_model->irisCharaType(), newIrisName); - }); -} - -void IrisWidget::onIrisListChanged(const QStringList &irislist) -{ - m_vecItem.clear(); - m_listGrp->clear(); - - for (int n = 0; n < IRISID_NUM && n < irislist.size(); ++n) { - QString irisid = irislist.at(n); - auto item = new AuthenticationInfoItem(this); - item->setTitle(irisid); - item->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - DFontSizeManager::instance()->bind(item, DFontSizeManager::T6); - m_listGrp->appendItem(item); - connect(item, &AuthenticationInfoItem::removeClicked, this, [this, irisid] { - Q_EMIT requestDeleteIrisItem(m_model->irisCharaType(), irisid); - }); - - connect(item, &AuthenticationInfoItem::editTextFinished, this, [this, irisid, item, irislist, n](QString newName) { - // 没有改名,直接返回 - if (item->getTitle() == newName) { - return; - } - for (int i = 0; i < irislist.size(); ++i) { - if (newName == irislist.at(i) && i != n) { - QString errMsg = tr("The name already exists"); - item->showAlertMessage(errMsg); - return; - } - } - item->setTitle(newName); - Q_EMIT requestRenameIrisItem(m_model->irisCharaType(), irisid, newName); - Q_EMIT noticeEnrollCompleted(m_model->irisDriverName(), m_model->irisCharaType()); - }); - - connect(item, &AuthenticationInfoItem::editClicked, this, [this, item, irislist]() { - for (int k = 0; k < irislist.size(); ++k) { - static_cast(m_listGrp->getItem(k))->setEditTitle(item == m_listGrp->getItem(k)); - } - }); - - if (m_clearBtn->isChecked()) - item->setShowIcon(true); - - m_vecItem.append(item); - } - m_clearBtn->setVisible(m_listGrp->itemCount()); - - if (irislist.size() >= IRISID_NUM) { - return; - } - - // 找到最小的名称以便作为缺省名添加 - for (int i = 0; i < IRISID_NUM; ++i) { - bool findNotUsedThumb = false; - QString newName(tr("Iris") + QString("%1").arg(i + 1)); - - for (int n = 0; n < IRISID_NUM && n < irislist.size(); ++n) { - if (newName == irislist.at(n)) { - findNotUsedThumb = true; - break; - } - } - - if (!findNotUsedThumb) { - addIrisButton(newName); - break; - } - } -} diff --git a/dcc-old/src/plugin-authentication/window/widgets/iris/iriswidget.h b/dcc-old/src/plugin-authentication/window/widgets/iris/iriswidget.h deleted file mode 100644 index fc539353b5..0000000000 --- a/dcc-old/src/plugin-authentication/window/widgets/iris/iriswidget.h +++ /dev/null @@ -1,44 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/authenticationinfoitem.h" -#include "widgets/settingsgroup.h" - -#include - -#include -#include - -class CharaMangerModel; -class IrisWidget : public QWidget -{ - Q_OBJECT -public: - explicit IrisWidget(CharaMangerModel *model, QWidget *parent = nullptr); - ~IrisWidget(); - -private: - void initUI(); - void initConnect(); - -private Q_SLOTS: - void addIrisButton(const QString &newIrisName); - -Q_SIGNALS: - void requestAddIris(const QString &driverName, const int &charaType, const QString &charaName); - void requestDeleteIrisItem(const int &charaType, const QString &charaName); - void requestRenameIrisItem(const int &charaType, const QString &oldName, const QString &newName); - void noticeEnrollCompleted(const QString &driverName, const int &CharaType); - -public Q_SLOTS: - void onIrisListChanged(const QStringList &irislist); - -private: - CharaMangerModel *m_model; - DCC_NAMESPACE::SettingsGroup *m_listGrp; - DTK_WIDGET_NAMESPACE::DCommandLinkButton *m_clearBtn; - QVector m_vecItem; -}; diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothadapter.cpp b/dcc-old/src/plugin-bluetooth/operation/bluetoothadapter.cpp deleted file mode 100644 index 6468287ca0..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothadapter.cpp +++ /dev/null @@ -1,204 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "bluetoothadapter.h" -#include "bluetoothdbusproxy.h" - -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcBluetoothAdapter, "dcc-bluetooth-adapter") - -BluetoothAdapter::BluetoothAdapter(BluetoothDBusProxy *proxy, QObject *parent) - : QObject(parent) - , m_id("") - , m_name("") - , m_powered(false) - , m_discovering(false) - , m_discoverable(false) - , m_bluetoothDBusProxy(proxy) -{ -} - -void BluetoothAdapter::setName(const QString &name) -{ - if (name != m_name) { - m_name = name; - Q_EMIT nameChanged(name); - } -} - -void BluetoothAdapter::addDevice(const BluetoothDevice *device) -{ - if (!deviceById(device->id())) { - m_devicesId << device->id(); - m_devices[device->id()] = device; - //打印配对设备信息,方便查看设备显示顺序 - if (!device->name().isEmpty() && device->paired()) - qCDebug(DdcBluetoothAdapter) << "BluetoothAdapter add device " << device->name(); - Q_EMIT deviceAdded(device); - } -} - -void BluetoothAdapter::removeDevice(const QString &deviceId) -{ - const BluetoothDevice *device = nullptr; - - device = deviceById(deviceId); - if (device) { - m_devicesId.removeOne(deviceId); - m_devices.remove(deviceId); - Q_EMIT deviceRemoved(deviceId); - } -} - -void BluetoothAdapter::setPowered(bool powered, bool discovering) -{ - if (!powered) { - Q_EMIT closeDetailPage(); - } - if (powered != m_powered || (powered && m_powered && discovering != m_discovering)) { - m_powered = powered; - m_discovering = discovering; - Q_EMIT poweredChanged(powered, discovering); - } -} - -void BluetoothAdapter::setAdapterPowered(const bool &powered) -{ - // 关闭蓝牙之前删除历史蓝牙设备列表,确保完全是删除后再设置开关 - if (powered) { - m_bluetoothDBusProxy->SetAdapterPowered(QDBusObjectPath(id()), true, this, SLOT(onSetAdapterPowered()), SLOT(onSetAdapterPoweredError())); - } else { - m_bluetoothDBusProxy->ClearUnpairedDevice(this, SLOT(onClearUnpairedDevice())); - } -} - -void BluetoothAdapter::onClearUnpairedDevice() -{ - m_bluetoothDBusProxy->SetAdapterPowered(QDBusObjectPath(id()), false, this, SLOT(onSetAdapterPowered()), SLOT(onSetAdapterPoweredError())); -} - -void BluetoothAdapter::onSetAdapterPowered() -{ - Q_EMIT loadStatus(); -} - -void BluetoothAdapter::onSetAdapterPoweredError() -{ - Q_EMIT poweredChanged(powered(), discovering()); -} - -void BluetoothAdapter::setDiscoverabled(const bool discoverable) -{ - if (m_discoverable == discoverable) { - return; - } - m_discoverable = discoverable; - Q_EMIT discoverableChanged(discoverable); -} - -QMap BluetoothAdapter::devices() const -{ - return m_devices; -} - -QList BluetoothAdapter::devicesId() const -{ - return m_devicesId; -} - -const BluetoothDevice *BluetoothAdapter::deviceById(const QString &id) const -{ - return m_devices.keys().contains(id) ? m_devices[id] : nullptr; -} - -void BluetoothAdapter::setId(const QString &id) -{ - m_id = id; -} - -void BluetoothAdapter::inflate(const QJsonObject &obj) -{ - const QString path = obj["Path"].toString(); - const QString alias = obj["Alias"].toString(); - const bool powered = obj["Powered"].toBool(); - const bool discovering = obj["Discovering"].toBool(); - const bool discovered = obj["Discoverable"].toBool(); - - setDiscoverabled(discovered); - setId(path); - setName(alias); - setPowered(powered, discovering); - - QDBusObjectPath dPath(path); - m_bluetoothDBusProxy->GetDevices(dPath, this, SLOT(onGetDevices(QString))); -} - -void BluetoothAdapter::inflateDevice(BluetoothDevice *device, const QJsonObject &deviceObj) -{ - const QString id = deviceObj["Path"].toString(); - const QString addr = deviceObj["Address"].toString(); - const QString alias = deviceObj["Alias"].toString(); - const QString name = deviceObj["Name"].toString(); - const bool paired = deviceObj["Paired"].toBool(); - const BluetoothDevice::State state = BluetoothDevice::State(deviceObj["State"].toInt()); - const bool connectState = deviceObj["ConnectState"].toBool(); - const QString icon = deviceObj["Icon"].toString(); - const int battery = deviceObj["Battery"].toInt(); - - // if (icon == "audio-card") { - // m_connectingAudioDevice = (BluetoothDevice::StateAvailable == state); - // } - - // FIXME: If the name and alias of the Bluetooth device are both empty, it will not be updated by default. - // To solve the problem of blank device name display. - if (alias.isEmpty() && name.isEmpty()) - return; - - device->setId(id); - device->setAddress(addr); - device->setName(name); - device->setAlias(alias); - device->setPaired(paired); - device->setState(state, connectState); - device->setDeviceType(icon); - device->setBattery(battery); -} - -void BluetoothAdapter::onGetDevices(QString replyStr) -{ - QStringList tmpList; - QJsonDocument doc = QJsonDocument::fromJson(replyStr.toUtf8()); - QJsonArray arr = doc.array(); - for (QJsonValue val : arr) { - const QString id = val.toObject()["Path"].toString(); - const QString name = val.toObject()["Name"].toString(); - - const BluetoothDevice *result = deviceById(id); - BluetoothDevice *device = const_cast(result); - if (!device) { - device = new BluetoothDevice(this); - } else { - if (device->name() != name) - removeDevice(device->id()); - } - inflateDevice(device, val.toObject()); - addDevice(device); - - tmpList << id; - } - - for (const BluetoothDevice *device : devices()) { - if (!tmpList.contains(device->id())) { - removeDevice(device->id()); - - BluetoothDevice *target = const_cast(device); - if (target) - target->deleteLater(); - } - } -} diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothadapter.h b/dcc-old/src/plugin-bluetooth/operation/bluetoothadapter.h deleted file mode 100644 index 5f4b84ffe5..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothadapter.h +++ /dev/null @@ -1,74 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_BLUETOOTH_ADAPTER_H -#define DCC_BLUETOOTH_ADAPTER_H - -#include - -#include "bluetoothdevice.h" - -class QJsonObject; -class BluetoothDBusProxy; - -class BluetoothAdapter : public QObject -{ - Q_OBJECT -public: - explicit BluetoothAdapter(BluetoothDBusProxy *proxy, QObject *parent = 0); - - inline QString name() const { return m_name; } - void setName(const QString &name); - - inline QString id() const { return m_id; } - void setId(const QString &id); - - QMap devices() const; - QList devicesId() const; - const BluetoothDevice *deviceById(const QString &id) const; - - inline bool powered() const { return m_powered; } - void setPowered(bool powered, bool discovering); - void setAdapterPowered(const bool &powered); - - inline bool discoverabled() const { return m_discoverable; } - void setDiscoverabled(const bool discoverable); - - inline bool discovering() const { return m_discovering; } - - void inflate(const QJsonObject &obj); - void inflateDevice(BluetoothDevice *device, const QJsonObject &deviceObj); - -public Q_SLOTS: - void addDevice(const BluetoothDevice *device); - void removeDevice(const QString &deviceId); - - void onGetDevices(QString replyStr); - -Q_SIGNALS: - void nameChanged(const QString &name) const; - void deviceAdded(const BluetoothDevice *device) const; - void deviceRemoved(const QString &deviceId) const; - void poweredChanged(const bool &powered, const bool &discovering) const; - void loadStatus() const; - void discoverableChanged(const bool &discoverable) const; - void closeDetailPage() const; - -private Q_SLOTS: - void onClearUnpairedDevice(); - void onSetAdapterPowered(); - void onSetAdapterPoweredError(); - -private: - QString m_id; - QString m_name; - bool m_powered; - bool m_discovering; - bool m_discoverable; - QMap m_devices; - //按序存放设备id,确定设备显示顺序 - QList m_devicesId; - BluetoothDBusProxy *m_bluetoothDBusProxy; -}; - -#endif // DCC_BLUETOOTH_ADAPTER_H diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothdbusproxy.cpp b/dcc-old/src/plugin-bluetooth/operation/bluetoothdbusproxy.cpp deleted file mode 100644 index 6373574426..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothdbusproxy.cpp +++ /dev/null @@ -1,156 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "bluetoothdbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include -#include - -const static QString BluetoothService = "org.deepin.dde.Bluetooth1"; -const static QString BluetoothPath = "/org/deepin/dde/Bluetooth1"; -const static QString BluetoothInterface = "org.deepin.dde.Bluetooth1"; - -const static QString AirPlaneModeService = "org.deepin.dde.AirplaneMode1"; -const static QString AirPlaneModePath = "/org/deepin/dde/AirplaneMode1"; -const static QString AirPlaneModeInterface = "org.deepin.dde.AirplaneMode1"; - -using namespace DCC_NAMESPACE; - -BluetoothDBusProxy::BluetoothDBusProxy(QObject *parent) - : QObject(parent) - , m_bluetoothInter(new DDBusInterface(BluetoothService, BluetoothPath, BluetoothInterface, QDBusConnection::sessionBus(), this)) - , m_airPlaneModeInter(new DDBusInterface(AirPlaneModeService, AirPlaneModePath, AirPlaneModeInterface, QDBusConnection::systemBus(), this)) -{ -} - -void BluetoothDBusProxy::showBluetoothTransDialog(const QString &address, const QStringList &files) -{ - QDBusMessage message = QDBusMessage::createMethodCall("com.deepin.filemanager.filedialog", "/com/deepin/filemanager/filedialogmanager", "com.deepin.filemanager.filedialogmanager", "showBluetoothTransDialog"); - message << address << files; - QDBusConnection::sessionBus().asyncCall(message); -} - -bool BluetoothDBusProxy::bluetoothIsValid() -{ - return m_bluetoothInter->isValid(); -} -// Bluetooth PROPERTY -uint BluetoothDBusProxy::state() -{ - return qvariant_cast(m_bluetoothInter->property("State")); -} - -bool BluetoothDBusProxy::transportable() -{ - return qvariant_cast(m_bluetoothInter->property("Transportable")); -} - -bool BluetoothDBusProxy::canSendFile() -{ - return qvariant_cast(m_bluetoothInter->property("CanSendFile")); -} - -bool BluetoothDBusProxy::displaySwitch() -{ - return qvariant_cast(m_bluetoothInter->property("DisplaySwitch")); -} - -void BluetoothDBusProxy::setDisplaySwitch(bool value) -{ - m_bluetoothInter->setProperty("DisplaySwitch", QVariant::fromValue(value)); -} -// AirplaneMode PROPERTY -bool BluetoothDBusProxy::enabled() -{ - return qvariant_cast(m_airPlaneModeInter->property("Enabled")); -} - -void BluetoothDBusProxy::ClearUnpairedDevice() -{ - m_bluetoothInter->asyncCall(QStringLiteral("ClearUnpairedDevice")); -} - -void BluetoothDBusProxy::ClearUnpairedDevice(QObject *receiver, const char *member) -{ - QList argumentList; - m_bluetoothInter->callWithCallback(QStringLiteral("ClearUnpairedDevice"), argumentList, receiver, member); -} - -void BluetoothDBusProxy::SetAdapterPowered(const QDBusObjectPath &adapter, bool powered) -{ - m_bluetoothInter->asyncCall(QStringLiteral("SetAdapterPowered"), QVariant::fromValue(adapter), QVariant::fromValue(powered)); -} - -void BluetoothDBusProxy::SetAdapterPowered(const QDBusObjectPath &adapter, bool powered, QObject *receiver, const char *member, const char *errorSlot) -{ - QList argumentList; - argumentList << QVariant::fromValue(adapter); - argumentList << QVariant::fromValue(powered); - m_bluetoothInter->callWithCallback(QStringLiteral("SetAdapterPowered"), argumentList, receiver, member, errorSlot); -} - -void BluetoothDBusProxy::DisconnectDevice(const QDBusObjectPath &device) -{ - m_bluetoothInter->asyncCall(QStringLiteral("DisconnectDevice"), QVariant::fromValue(device)); -} - -void BluetoothDBusProxy::RemoveDevice(const QDBusObjectPath &adapter, const QDBusObjectPath &device) -{ - m_bluetoothInter->asyncCall(QStringLiteral("RemoveDevice"), QVariant::fromValue(adapter), QVariant::fromValue(device)); -} - -void BluetoothDBusProxy::ConnectDevice(const QDBusObjectPath &device, const QDBusObjectPath &adapter) -{ - m_bluetoothInter->asyncCall(QStringLiteral("ConnectDevice"), QVariant::fromValue(device), QVariant::fromValue(adapter)); -} - -QString BluetoothDBusProxy::GetDevices(const QDBusObjectPath &adapter) -{ - return QDBusPendingReply(m_bluetoothInter->asyncCall(QStringLiteral("GetDevices"), QVariant::fromValue(adapter))); -} - -void BluetoothDBusProxy::GetDevices(const QDBusObjectPath &adapter, QObject *receiver, const char *member) -{ - QList argumentList; - argumentList << QVariant::fromValue(adapter); - m_bluetoothInter->callWithCallback(QStringLiteral("GetDevices"), argumentList, receiver, member); -} - -QString BluetoothDBusProxy::GetAdapters() -{ - return QDBusPendingReply(m_bluetoothInter->asyncCall(QStringLiteral("GetAdapters"))); -} - -void BluetoothDBusProxy::SetAdapterAlias(const QDBusObjectPath &adapter, const QString &alias) -{ - m_bluetoothInter->asyncCall(QStringLiteral("SetAdapterAlias"), QVariant::fromValue(adapter), QVariant::fromValue(alias)); -} - -void BluetoothDBusProxy::SetDeviceAlias(const QDBusObjectPath &device, const QString &alias) -{ - m_bluetoothInter->asyncCall(QStringLiteral("SetDeviceAlias"), QVariant::fromValue(device), QVariant::fromValue(alias)); -} - -void BluetoothDBusProxy::RequestDiscovery(const QDBusObjectPath &adapter) -{ - m_bluetoothInter->asyncCall(QStringLiteral("RequestDiscovery"), QVariant::fromValue(adapter)); -} - -void BluetoothDBusProxy::Confirm(const QDBusObjectPath &device, bool accept) -{ - m_bluetoothInter->asyncCall(QStringLiteral("Confirm"), QVariant::fromValue(device), QVariant::fromValue(accept)); -} - -void BluetoothDBusProxy::SetAdapterDiscovering(const QDBusObjectPath &adapter, bool discovering) -{ - m_bluetoothInter->asyncCall(QStringLiteral("SetAdapterDiscovering"), QVariant::fromValue(adapter), QVariant::fromValue(discovering)); -} - -void BluetoothDBusProxy::SetAdapterDiscoverable(const QDBusObjectPath &adapter, bool discoverable) -{ - m_bluetoothInter->asyncCall(QStringLiteral("SetAdapterDiscoverable"), QVariant::fromValue(adapter), QVariant::fromValue(discoverable)); -} diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothdbusproxy.h b/dcc-old/src/plugin-bluetooth/operation/bluetoothdbusproxy.h deleted file mode 100644 index fbee5c8ce0..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothdbusproxy.h +++ /dev/null @@ -1,89 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef BLUETOOTHDBUSPROXY_H -#define BLUETOOTHDBUSPROXY_H - -#include "interface/namespace.h" - -#include -#include -class QDBusInterface; -class QDBusMessage; -class QDBusObjectPath; - -using Dtk::Core::DDBusInterface; - -class BluetoothDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit BluetoothDBusProxy(QObject *parent = nullptr); - - void showBluetoothTransDialog(const QString &address, const QStringList &files); - // Bluetooth - bool bluetoothIsValid(); - Q_PROPERTY(uint State READ state NOTIFY StateChanged) - uint state(); - Q_PROPERTY(bool Transportable READ transportable NOTIFY TransportableChanged) - bool transportable(); - Q_PROPERTY(bool CanSendFile READ canSendFile NOTIFY CanSendFileChanged) - bool canSendFile(); - Q_PROPERTY(bool DisplaySwitch READ displaySwitch WRITE setDisplaySwitch NOTIFY DisplaySwitchChanged) - bool displaySwitch(); - void setDisplaySwitch(bool value); - // AirplaneMode - Q_PROPERTY(bool Enabled READ enabled NOTIFY EnabledChanged) - bool enabled(); - -Q_SIGNALS: // SIGNALS - // Bluetooth - void AdapterAdded(const QString &adapterJSON); - void AdapterRemoved(const QString &adapterJSON); - void AdapterPropertiesChanged(const QString &adapterJSON); - void DeviceAdded(const QString &devJSON); - void DeviceRemoved(const QString &devJSON); - void DevicePropertiesChanged(const QString &devJSON); - void Cancelled(const QDBusObjectPath &device); - void RequestAuthorization(const QDBusObjectPath &device); - void RequestConfirmation(const QDBusObjectPath &device, const QString &passkey); - void RequestPasskey(const QDBusObjectPath &device); - void RequestPinCode(const QDBusObjectPath &device); - void DisplayPasskey(const QDBusObjectPath &device, uint passkey, uint entered); - void DisplayPinCode(const QDBusObjectPath &device, const QString &pinCode); - // property changed signals - void StateChanged(uint value) const; - void TransportableChanged(bool value) const; - void CanSendFileChanged(bool value) const; - void DisplaySwitchChanged(bool value) const; - - // AirplaneMode - // property changed signals - void EnabledChanged(bool value) const; - -public Q_SLOTS: // METHODS - // Bluetooth - void ClearUnpairedDevice(); - void ClearUnpairedDevice(QObject *receiver, const char *member); - void SetAdapterPowered(const QDBusObjectPath &adapter, bool powered); - void SetAdapterPowered(const QDBusObjectPath &adapter, bool powered, QObject *receiver, const char *member, const char *errorSlot); - void DisconnectDevice(const QDBusObjectPath &device); - void RemoveDevice(const QDBusObjectPath &adapter, const QDBusObjectPath &device); - void ConnectDevice(const QDBusObjectPath &device, const QDBusObjectPath &adapter); - QString GetDevices(const QDBusObjectPath &adapter); - void GetDevices(const QDBusObjectPath &adapter, QObject *receiver, const char *member); - QString GetAdapters(); - void SetAdapterAlias(const QDBusObjectPath &adapter, const QString &alias); - void SetDeviceAlias(const QDBusObjectPath &device, const QString &alias); - void RequestDiscovery(const QDBusObjectPath &adapter); - void Confirm(const QDBusObjectPath &device, bool accept); - void SetAdapterDiscovering(const QDBusObjectPath &adapter, bool discovering); - void SetAdapterDiscoverable(const QDBusObjectPath &adapter, bool discoverable); - -private: - DDBusInterface *m_bluetoothInter; - DDBusInterface *m_airPlaneModeInter; -}; - -#endif // BLUETOOTHDBUSPROXY_H diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothdevice.cpp b/dcc-old/src/plugin-bluetooth/operation/bluetoothdevice.cpp deleted file mode 100644 index 3560e2b2f0..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothdevice.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "bluetoothdevice.h" - -BluetoothDevice::BluetoothDevice(QObject *parent) - : QObject(parent) - , m_id("") - , m_name("") - , m_paired(false) - , m_trusted(false) - , m_connecting(false) - , m_connectState(false) - , m_state(StateUnavailable) -{ -} - -void BluetoothDevice::setId(const QString &id) -{ - m_id = id; -} - -void BluetoothDevice::setAddress(const QString &addr) -{ - m_address = addr; -} - -void BluetoothDevice::setName(const QString &name) -{ - if (name != m_name) { - m_name = name; - Q_EMIT nameChanged(name); - } -} - -void BluetoothDevice::setAlias(const QString &alias) -{ - if (alias != m_alias) { - m_alias = alias; - Q_EMIT aliasChanged(alias); - } -} - -void BluetoothDevice::setPaired(bool paired) -{ - if (paired != m_paired) { - m_paired = paired; - Q_EMIT pairedChanged(paired); - } -} - -void BluetoothDevice::setState(const State &state, bool connectState) -{ - if ((state != m_state) || (connectState != m_connectState)) { - m_state = state; - m_connectState = connectState; - Q_EMIT stateChanged(state, connectState); - } -} - -void BluetoothDevice::setTrusted(bool trusted) -{ - if (trusted != m_trusted) { - m_trusted = trusted; - Q_EMIT trustedChanged(trusted); - } -} - -void BluetoothDevice::setConnecting(bool connecting) -{ - if (connecting != m_connecting) { - m_connecting = connecting; - Q_EMIT connectingChanged(connecting); - } -} - -void BluetoothDevice::setBattery(int battery) { - if (m_battery != battery) { - m_battery = battery; - Q_EMIT batteryChanged(battery); - } -} - -void BluetoothDevice::setDeviceType(const QString &deviceType) -{ - m_deviceType = deviceType; -} - -bool BluetoothDevice::canSendFile() const -{ - // 目前pc和手机可以发送蓝牙文件 - if ((m_deviceType == "pc") || (m_deviceType == "phone")) { - return true; - } - return false; -} - -QDebug &operator<<(QDebug &stream, const BluetoothDevice *device) -{ - stream << "BluetoothDevice name:" << device->name() << " paired:" << device->paired() - << " state:" << device->state(); - - return stream; -} diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothdevice.h b/dcc-old/src/plugin-bluetooth/operation/bluetoothdevice.h deleted file mode 100644 index 27e9dbcbbc..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothdevice.h +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_BLUETOOTH_DEVICE_H -#define DCC_BLUETOOTH_DEVICE_H - -#include -#include - -// INFO: when meet problem, view the link underline -// https://github.com/bluez/bluez/blob/master/src/dbus-common.c#L53-L115 - -class BluetoothDevice : public QObject -{ - Q_OBJECT - -public: - enum State { - StateUnavailable = 0, - StateAvailable = 1, - StateConnected = 2, - StateDisconnecting = 3 - }; - Q_ENUM(State) - -public: - explicit BluetoothDevice(QObject *parent = nullptr); - - inline QString id() const { return m_id; } - - void setId(const QString &id); - - inline int battery() const { return m_battery; } - - void setBattery(const int battery); - - inline QString address() const { return m_address; } - - void setAddress(const QString &addr); - - inline QString name() const { return m_name; } - - void setName(const QString &name); - - inline QString alias() const { return m_alias; } - - void setAlias(const QString &alias); - - inline bool paired() const { return m_paired; } - - void setPaired(bool paired); - - inline State state() const { return m_state; } - - void setState(const State &state, bool connectState); - - inline bool trusted() const { return m_trusted; } - - void setTrusted(bool trusted); - - inline bool connecting() const { return m_connecting; } - - void setConnecting(bool connecting); - - inline QString deviceType() const { return m_deviceType; } - - void setDeviceType(const QString &deviceType); - - inline bool connectState() const { return m_connectState; } - - bool canSendFile() const; - -Q_SIGNALS: - void nameChanged(const QString &name) const; - void aliasChanged(const QString &alias) const; - void pairedChanged(const bool &paired) const; - void stateChanged(const State &state, bool paired) const; - void trustedChanged(const bool trusted) const; - void connectingChanged(const bool &connecting) const; - void batteryChanged(const int battery) const; - -private: - QString m_id; - QString m_address; - QString m_name; - QString m_alias; - QString m_deviceType; - bool m_paired; - bool m_trusted; - bool m_connecting; - bool m_connectState; - State m_state; - int m_battery = 0; -}; - -QDebug &operator<<(QDebug &stream, const BluetoothDevice *device); - -#endif // DCC_BLUETOOTH_DEVICE_H diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothmodel.cpp b/dcc-old/src/plugin-bluetooth/operation/bluetoothmodel.cpp deleted file mode 100644 index 6202bc4d88..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothmodel.cpp +++ /dev/null @@ -1,126 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "bluetoothmodel.h" - -BluetoothModel::BluetoothModel(QObject *parent) - : QObject(parent) - , m_transPortable(false) - , m_canSendFile(false) - , m_airplaneEnable(false) - , m_displaySwitch(false) -{ - m_adapters.clear(); -} - -void BluetoothModel::addAdapter(BluetoothAdapter *adapter) -{ - if (!adapterById(adapter->id())) { - m_adapters[adapter->id()] = adapter; - m_adapterIds << adapter->id(); - Q_EMIT adapterAdded(adapter); - Q_EMIT adpaterListChanged(); - return; - } - - adapter->deleteLater(); -} - -const BluetoothAdapter *BluetoothModel::removeAdapater(const QString &adapterId) -{ - const BluetoothAdapter *adapter = nullptr; - - adapter = adapterById(adapterId); - if (adapter) { - m_adapters.remove(adapterId); - m_adapterIds.removeOne(adapterId); - Q_EMIT adapterRemoved(adapter); - Q_EMIT adpaterListChanged(); - } - - return adapter; -} - -QList BluetoothModel::adapters() const -{ - QList allAdapters = m_adapters.values(); - std::sort(allAdapters.begin(), allAdapters.end(), [ & ](const BluetoothAdapter *adapter1, const BluetoothAdapter *adapter2) { - return m_adapterIds.indexOf(adapter1->id()) < m_adapterIds.indexOf(adapter2->id()); - }); - - return allAdapters; -} - -const BluetoothAdapter *BluetoothModel::adapterById(const QString &id) -{ - return m_adapters.keys().contains(id) ? m_adapters[id] : nullptr; -} - -/** - * @brief BluetoothModel::canTransportable - * @return - * 返回值表示是否能传输蓝牙文件 - */ -bool BluetoothModel::canTransportable() const -{ - return m_transPortable; -} - -void BluetoothModel::setMyDeviceVisible(const bool visible) -{ - if (m_myDeviceVisible == visible) - return; - - m_myDeviceVisible = visible; - Q_EMIT notifyMyDeviceVisibleChanged(m_myDeviceVisible); -} - -void BluetoothModel::setOtherDeviceVisible(const bool visible) -{ - if (m_otherDeviceVisible == visible) - return; - - m_otherDeviceVisible = visible; - Q_EMIT notifyOtherDeviceVisibleChanged(m_otherDeviceVisible); -} - -/** - * @brief BluetoothModel::setTransportable - * @param transPortable - * 设置是否能传输蓝牙文件 - */ -void BluetoothModel::setTransportable(const bool transPortable) -{ - if (m_transPortable != transPortable) { - m_transPortable = transPortable; - Q_EMIT transportableChanged(transPortable); - } -} - -void BluetoothModel::setCanSendFile(const bool canSendFile) -{ - if (m_canSendFile != canSendFile) { - m_canSendFile = canSendFile; - Q_EMIT canSendFileChanged(canSendFile); - } -} - -void BluetoothModel::setAirplaneEnable(bool enable) -{ - if (m_airplaneEnable == enable) - return; - - m_airplaneEnable = enable; - - Q_EMIT airplaneEnableChanged(m_airplaneEnable); -} - -void BluetoothModel::setDisplaySwitch(bool on) -{ - if (m_displaySwitch == on) - return; - - m_displaySwitch = on; - - Q_EMIT displaySwitchChanged(m_displaySwitch); -} diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothmodel.h b/dcc-old/src/plugin-bluetooth/operation/bluetoothmodel.h deleted file mode 100644 index b41f0507c4..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothmodel.h +++ /dev/null @@ -1,63 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_BLUETOOTH_BLUETOOTHMODEL_H -#define DCC_BLUETOOTH_BLUETOOTHMODEL_H - -#include - -#include "bluetoothadapter.h" - -class BluetoothModel : public QObject -{ - Q_OBJECT -public: - explicit BluetoothModel(QObject *parent = nullptr); - - QList adapters() const; - const BluetoothAdapter *adapterById(const QString &id); - - bool canTransportable() const; - inline bool canSendFile() const { return m_canSendFile; } - - inline bool airplaneMode() const { return m_airplaneEnable; } - inline bool displaySwitch() const { return m_displaySwitch; } - - bool myDeviceVisible() { return m_myDeviceVisible; } - void setMyDeviceVisible(const bool visible); - - bool otherDeviceVisible() { return m_otherDeviceVisible; } - void setOtherDeviceVisible(const bool visible); - -public Q_SLOTS: - void addAdapter(BluetoothAdapter *adapter); - const BluetoothAdapter *removeAdapater(const QString &adapterId); - void setTransportable(const bool transPortable); - void setCanSendFile(const bool canSendFile); - void setAirplaneEnable(bool enable); - void setDisplaySwitch(bool on); - -Q_SIGNALS: - void adapterAdded(const BluetoothAdapter *adapter) const; - void adapterRemoved(const BluetoothAdapter *adapter) const; - void adpaterListChanged(); - void transportableChanged(const bool transPortable) const; - void canSendFileChanged(const bool canSendFile) const; - void airplaneEnableChanged(bool enable) const; - void displaySwitchChanged(bool on) const; - void notifyMyDeviceVisibleChanged(bool); - void notifyOtherDeviceVisibleChanged(bool); - -private: - QMap m_adapters; - QStringList m_adapterIds; - bool m_transPortable; - bool m_canSendFile; - bool m_airplaneEnable; - bool m_displaySwitch; - friend class BluetoothWorker; - bool m_myDeviceVisible = false; - bool m_otherDeviceVisible = false; -}; - -#endif // DCC_BLUETOOTH_BLUETOOTHMODEL_H diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothworker.cpp b/dcc-old/src/plugin-bluetooth/operation/bluetoothworker.cpp deleted file mode 100644 index 45f22ab2e4..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothworker.cpp +++ /dev/null @@ -1,330 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "bluetoothworker.h" - -#include "bluetoothdbusproxy.h" - -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcBluetoothWorkder, "dcc-bluetooth-worker") - -BluetoothWorker::BluetoothWorker(BluetoothModel *model, QObject *parent) - : QObject(parent) - , m_bluetoothDBusProxy(new BluetoothDBusProxy(this)) - , m_model(model) - , m_connectingAudioDevice(false) - , m_state(m_bluetoothDBusProxy->state()) -{ - // clang-format off - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::StateChanged, this, &BluetoothWorker::onStateChanged); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::AdapterAdded, this, &BluetoothWorker::addAdapter); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::AdapterRemoved, this, &BluetoothWorker::removeAdapter); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::AdapterPropertiesChanged, this, &BluetoothWorker::onAdapterPropertiesChanged); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::DeviceAdded, this, &BluetoothWorker::addDevice); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::DeviceRemoved, this, &BluetoothWorker::removeDevice); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::DevicePropertiesChanged, this, &BluetoothWorker::onDevicePropertiesChanged); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::Cancelled, this, [=](const QDBusObjectPath &device) { - PinCodeDialog *dialog = m_dialogs[device]; - if (dialog != nullptr) { - m_dialogs.remove(device); - QMetaObject::invokeMethod(dialog, "deleteLater", Qt::QueuedConnection); - } else { - Q_EMIT pinCodeCancel(device); - } - }); - - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::RequestAuthorization, this, [](const QDBusObjectPath &in0) { - qCDebug(DdcBluetoothWorkder) << "request authorization: " << in0.path(); - }); - - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::RequestConfirmation, this, &BluetoothWorker::requestConfirmation); - - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::RequestPasskey, this, [](const QDBusObjectPath &in0) { - qCDebug(DdcBluetoothWorkder) << "request passkey: " << in0.path(); - }); - - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::RequestPinCode, this, [](const QDBusObjectPath &in0) { - qCDebug(DdcBluetoothWorkder) << "request pincode: " << in0.path(); - }); - - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::DisplayPasskey, this, [=](const QDBusObjectPath &in0, uint in1, uint in2) { - qCDebug(DdcBluetoothWorkder) << "request display passkey: " << in0.path() << in1 << in2; - - PinCodeDialog *dialog = PinCodeDialog::instance(QString::number(in1), false); - m_dialogs[in0] = dialog; - if (!dialog->isVisible()) { - dialog->exec(); - QMetaObject::invokeMethod(dialog, "deleteLater", Qt::QueuedConnection); - } - }); - - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::DisplayPinCode, this, [=](const QDBusObjectPath &in0, const QString &in1) { - qCDebug(DdcBluetoothWorkder) << "request display pincode: " << in0.path() << in1; - - PinCodeDialog *dialog = PinCodeDialog::instance(in1, false); - m_dialogs[in0] = dialog; - if (!dialog->isVisible()) { - dialog->exec(); - QMetaObject::invokeMethod(dialog, "deleteLater", Qt::QueuedConnection); - } - }); - - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::TransportableChanged, m_model, &BluetoothModel::setTransportable); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::CanSendFileChanged, m_model, &BluetoothModel::setCanSendFile); - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::DisplaySwitchChanged, m_model, &BluetoothModel::setDisplaySwitch); - - m_model->setTransportable(m_bluetoothDBusProxy->transportable()); - m_model->setCanSendFile(m_bluetoothDBusProxy->canSendFile()); - m_model->setDisplaySwitch(m_bluetoothDBusProxy->displaySwitch()); - - connect(m_bluetoothDBusProxy, &BluetoothDBusProxy::EnabledChanged, m_model, &BluetoothModel::setAirplaneEnable); - m_model->setAirplaneEnable(m_bluetoothDBusProxy->enabled()); - - //第一次调用时传true,refresh 函数会使用同步方式去获取蓝牙设备数据 - //避免出现当dbus调用控制中心接口直接显示蓝牙模块时, - //因为异步的数据获取使控制中心设置了蓝牙模块不可见, - //而出现没办法显示蓝牙模块 - refresh(true); - // clang-format on -} - -BluetoothWorker::~BluetoothWorker() { } - -void BluetoothWorker::onStateChanged(uint state) -{ - // 当蓝牙状态由0变成大于0时,强制刷新蓝牙列表 - if (!m_state && state > 0) - refresh(true); - - m_state = state; -} - -void BluetoothWorker::activate() -{ - if (!m_bluetoothDBusProxy->bluetoothIsValid()) { - return; - } - - blockDBusSignals(false); - m_bluetoothDBusProxy->ClearUnpairedDevice(); - - refresh(); -} - -void BluetoothWorker::deactivate() -{ - blockDBusSignals(true); -} - -void BluetoothWorker::blockDBusSignals(bool block) -{ - if (!m_bluetoothDBusProxy->bluetoothIsValid()) { - return; - } - - m_bluetoothDBusProxy->blockSignals(block); -} - -void BluetoothWorker::setAdapterPowered(const BluetoothAdapter *adapter, const bool &powered) -{ - const_cast(adapter)->setAdapterPowered(powered); -} - -void BluetoothWorker::disconnectDevice(const BluetoothDevice *device) -{ - QDBusObjectPath path(device->id()); - m_bluetoothDBusProxy->DisconnectDevice(path); - qCDebug(DdcBluetoothWorkder) << "disconnect from device: " << device->name(); -} - -void BluetoothWorker::ignoreDevice(const BluetoothAdapter *adapter, const BluetoothDevice *device) -{ - m_bluetoothDBusProxy->RemoveDevice(QDBusObjectPath(adapter->id()), - QDBusObjectPath(device->id())); - qCDebug(DdcBluetoothWorkder) << "ignore device: " << device->name(); -} - -void BluetoothWorker::connectDevice(const BluetoothDevice *device, const BluetoothAdapter *adapter) -{ - // INFO: when is headset, not connect twice - if (device - && (device->deviceType() == "audio-headset" || device->deviceType() == "autio-headphones") - && device->state() == BluetoothDevice::StateAvailable) { - return; - } - for (const BluetoothAdapter *a : m_model->adapters()) { - for (const BluetoothDevice *d : a->devices()) { - BluetoothDevice *vd = const_cast(d); - if (vd) - vd->setConnecting(d == device); - } - } - - QDBusObjectPath path(device->id()); - m_bluetoothDBusProxy->ConnectDevice(path, QDBusObjectPath(adapter->id())); - qCDebug(DdcBluetoothWorkder) << "connect to device: " << device->name(); -} - -void BluetoothWorker::onAdapterPropertiesChanged(const QString &json) -{ - const QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); - const QJsonObject obj = doc.object(); - const QString id = obj["Path"].toString(); - - BluetoothAdapter *adapter = const_cast(m_model->adapterById(id)); - if (adapter) - adapter->inflate(obj); -} - -void BluetoothWorker::onDevicePropertiesChanged(const QString &json) -{ - const QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); - const QJsonObject obj = doc.object(); - const QString id = obj["Path"].toString(); - const QString name = obj["Name"].toString(); - for (const BluetoothAdapter *adapter : m_model->adapters()) { - BluetoothAdapter *adapterPointer = const_cast(adapter); - BluetoothDevice *device = const_cast(adapter->deviceById(id)); - if (device) { - if (device->name() == name) { - adapterPointer->inflateDevice(device, obj); - } else { - if (!adapterPointer) - return; - adapterPointer->removeDevice(device->id()); - adapterPointer->inflateDevice(device, obj); - adapterPointer->addDevice(device); - } - } - } -} - -void BluetoothWorker::addAdapter(const QString &json) -{ - QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); - QJsonObject obj = doc.object(); - - BluetoothAdapter *adapter = new BluetoothAdapter(m_bluetoothDBusProxy, m_model); - adapter->inflate(obj); - m_model->addAdapter(adapter); -} - -void BluetoothWorker::removeAdapter(const QString &json) -{ - QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); - QJsonObject obj = doc.object(); - const QString id = obj["Path"].toString(); - - const BluetoothAdapter *result = m_model->removeAdapater(id); - BluetoothAdapter *adapter = const_cast(result); - if (adapter) { - adapter->deleteLater(); - adapter = nullptr; - } -} - -void BluetoothWorker::addDevice(const QString &json) -{ - QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); - QJsonObject obj = doc.object(); - const QString adapterId = obj["AdapterPath"].toString(); - const QString id = obj["Path"].toString(); - const int battery = obj["Battery"].toInt(); - - const BluetoothAdapter *result = m_model->adapterById(adapterId); - BluetoothAdapter *adapter = const_cast(result); - if (adapter) { - const BluetoothDevice *result1 = adapter->deviceById(id); - BluetoothDevice *device = const_cast(result1); - if (!device) - device = new BluetoothDevice(adapter); - device->setBattery(battery); - adapter->inflateDevice(device, obj); - adapter->addDevice(device); - } -} - -void BluetoothWorker::removeDevice(const QString &json) -{ - QJsonDocument doc = QJsonDocument::fromJson(json.toUtf8()); - QJsonObject obj = doc.object(); - const QString adapterId = obj["AdapterPath"].toString(); - const QString id = obj["Path"].toString(); - - const BluetoothAdapter *result = m_model->adapterById(adapterId); - BluetoothAdapter *adapter = const_cast(result); - if (adapter) { - adapter->removeDevice(id); - } -} - -void BluetoothWorker::refresh(bool beFirst) -{ - Q_UNUSED(beFirst) - if (!m_bluetoothDBusProxy->bluetoothIsValid()) - return; - - const QString replyStr = m_bluetoothDBusProxy->GetAdapters(); - QJsonDocument doc = QJsonDocument::fromJson(replyStr.toUtf8()); - QJsonArray arr = doc.array(); - for (QJsonValue val : arr) { - BluetoothAdapter *adapter = new BluetoothAdapter(m_bluetoothDBusProxy, m_model); - adapter->inflate(val.toObject()); - - m_model->addAdapter(adapter); - } -} - -void BluetoothWorker::setAlias(const BluetoothAdapter *adapter, const QString &alias) -{ - m_bluetoothDBusProxy->SetAdapterAlias(QDBusObjectPath(adapter->id()), alias); -} - -void BluetoothWorker::setDeviceAlias(const BluetoothDevice *device, const QString &alias) -{ - QDBusObjectPath path(device->id()); - m_bluetoothDBusProxy->SetDeviceAlias(QDBusObjectPath(device->id()), alias); -} - -void BluetoothWorker::setAdapterDiscoverable(const QString &path) -{ - m_bluetoothDBusProxy->RequestDiscovery(QDBusObjectPath(path)); -} - -void BluetoothWorker::pinCodeConfirm(const QDBusObjectPath &path, bool value) -{ - m_bluetoothDBusProxy->Confirm(path, value); -} - -void BluetoothWorker::setAdapterDiscovering(const QDBusObjectPath &path, bool enable) -{ - m_bluetoothDBusProxy->SetAdapterDiscovering(path, enable); -} - -void BluetoothWorker::onRequestSetDiscoverable(const BluetoothAdapter *adapter, - const bool &discoverable) -{ - QDBusObjectPath path(adapter->id()); - m_bluetoothDBusProxy->SetAdapterDiscoverable(path, discoverable); -} - -bool BluetoothWorker::displaySwitch() -{ - return m_bluetoothDBusProxy->property("DisplaySwitch").toBool(); -} - -void BluetoothWorker::setDisplaySwitch(const bool &on) -{ - m_bluetoothDBusProxy->setDisplaySwitch(on); -} - -void BluetoothWorker::showBluetoothTransDialog(const QString &address, const QStringList &files) -{ - m_bluetoothDBusProxy->showBluetoothTransDialog(address, files); -} diff --git a/dcc-old/src/plugin-bluetooth/operation/bluetoothworker.h b/dcc-old/src/plugin-bluetooth/operation/bluetoothworker.h deleted file mode 100644 index f8145c5540..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/bluetoothworker.h +++ /dev/null @@ -1,73 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_BLUETOOTH_BLUETOOTHWORKER_H -#define DCC_BLUETOOTH_BLUETOOTHWORKER_H - -#include - -#include "bluetoothmodel.h" -#include "pincodedialog.h" - -class QDBusObjectPath; -class BluetoothDBusProxy; - -class BluetoothWorker : public QObject -{ - Q_OBJECT -public: - explicit BluetoothWorker(BluetoothModel *model, QObject *parent = nullptr); - - BluetoothModel *model() { return m_model; } - - void activate(); - void deactivate(); - - void blockDBusSignals(bool block); - - bool displaySwitch(); - -Q_SIGNALS: - void requestConfirmation(const QDBusObjectPath &path, const QString &code); - void pinCodeCancel(const QDBusObjectPath &device); - -public Q_SLOTS: - void setAdapterPowered(const BluetoothAdapter *adapter, const bool &powered); - void connectDevice(const BluetoothDevice *device, const BluetoothAdapter *adapter); - void disconnectDevice(const BluetoothDevice *device); - void ignoreDevice(const BluetoothAdapter *adapter, const BluetoothDevice *device); - void setAlias(const BluetoothAdapter *adapter, const QString &alias); - void setDeviceAlias(const BluetoothDevice *device, const QString &alias); - void setAdapterDiscoverable(const QString &path); - void pinCodeConfirm(const QDBusObjectPath &path, bool value); - void setAdapterDiscovering(const QDBusObjectPath &path, bool enable); - void onRequestSetDiscoverable(const BluetoothAdapter *adapter, const bool &discoverable); - void setDisplaySwitch(const bool &on); - void showBluetoothTransDialog(const QString &address, const QStringList &files); - -private Q_SLOTS: - void onAdapterPropertiesChanged(const QString &json); - void onDevicePropertiesChanged(const QString &json); - - void addAdapter(const QString &json); - void removeAdapter(const QString &json); - - void addDevice(const QString &json); - void removeDevice(const QString &json); - - void refresh(bool beFirst = false); - void onStateChanged(uint state); - -private: - BluetoothWorker(BluetoothWorker const &) = delete; - BluetoothWorker &operator=(BluetoothWorker const &) = delete; - ~BluetoothWorker(); - - BluetoothDBusProxy *m_bluetoothDBusProxy; - BluetoothModel *m_model; - QMap m_dialogs; - bool m_connectingAudioDevice; - uint m_state; -}; - -#endif // DCC_BLUETOOTH_BLUETOOTHWORKER_H diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_battery_32px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_battery_32px.svg deleted file mode 100644 index dd05a2a45b..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_battery_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_general_purpose_32px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_general_purpose_32px.svg deleted file mode 100644 index c7fa0e51d1..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_general_purpose_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_using_electric_32px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_using_electric_32px.svg deleted file mode 100644 index 5c91cbb11e..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/actions/dcc_using_electric_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/bluetooth.qrc b/dcc-old/src/plugin-bluetooth/operation/qrc/bluetooth.qrc deleted file mode 100644 index e710b309dd..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/bluetooth.qrc +++ /dev/null @@ -1,53 +0,0 @@ - - - icons/dcc_nav_bluetooth_42px.svg - icons/dcc_nav_bluetooth_84px.svg - texts/bluetooth_other_16px.svg - texts/dcc_edit_12px.svg - texts/dcc_refresh_12px.svg - dark/icons/battery-000-symbolic_20px.svg - dark/icons/battery-010-symbolic_20px.svg - dark/icons/battery-020-symbolic_20px.svg - dark/icons/battery-030-symbolic_20px.svg - dark/icons/battery-040-symbolic_20px.svg - dark/icons/battery-050-symbolic_20px.svg - dark/icons/battery-060-symbolic_20px.svg - dark/icons/battery-070-symbolic_20px.svg - dark/icons/battery-080-symbolic_20px.svg - dark/icons/battery-090-symbolic_20px.svg - dark/icons/battery-100-symbolic_20px.svg - dark/icons/battery-unknow-symbolic_20px.svg - light/icons/battery-000-symbolic_20px.svg - light/icons/battery-010-symbolic_20px.svg - light/icons/battery-020-symbolic_20px.svg - light/icons/battery-030-symbolic_20px.svg - light/icons/battery-040-symbolic_20px.svg - light/icons/battery-050-symbolic_20px.svg - light/icons/battery-060-symbolic_20px.svg - light/icons/battery-070-symbolic_20px.svg - light/icons/battery-080-symbolic_20px.svg - light/icons/battery-090-symbolic_20px.svg - light/icons/battery-100-symbolic_20px.svg - light/icons/battery-unknow-symbolic_20px.svg - texts/bluetooth_camera_16px.svg - texts/bluetooth_clang_16px.svg - texts/bluetooth_keyboard_16px.svg - texts/bluetooth_lan_16px.svg - texts/bluetooth_laptop_16px.svg - texts/bluetooth_microphone_16px.svg - texts/bluetooth_mouse_16px.svg - texts/bluetooth_other_16px.svg - texts/bluetooth_pad_16px.svg - texts/bluetooth_pc_16px.svg - texts/bluetooth_pen_16px.svg - texts/bluetooth_pheadset_16px.svg - texts/bluetooth_phone_16px.svg - texts/bluetooth_print_16px.svg - texts/bluetooth_scaner_16px.svg - texts/bluetooth_touchpad_16px.svg - texts/bluetooth_tv_16px.svg - texts/bluetooth_video_16px.svg - texts/bluetooth_vidicon_16px.svg - texts/dcc_edit_12px.svg - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-000-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-000-symbolic_20px.svg deleted file mode 100644 index 5e86fa7eed..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-000-symbolic_20px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-010-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-010-symbolic_20px.svg deleted file mode 100644 index e56e848da4..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-010-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-020-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-020-symbolic_20px.svg deleted file mode 100644 index 212281ebb2..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-020-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-030-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-030-symbolic_20px.svg deleted file mode 100644 index d264f8dffd..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-030-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-040-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-040-symbolic_20px.svg deleted file mode 100644 index 3491ab4229..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-040-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-050-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-050-symbolic_20px.svg deleted file mode 100644 index e215c8b7d9..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-050-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-060-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-060-symbolic_20px.svg deleted file mode 100644 index 986c30c28c..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-060-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-070-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-070-symbolic_20px.svg deleted file mode 100644 index fef2614745..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-070-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-080-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-080-symbolic_20px.svg deleted file mode 100644 index c51847a02f..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-080-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-090-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-090-symbolic_20px.svg deleted file mode 100644 index 1aad3eaa1f..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-090-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-100-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-100-symbolic_20px.svg deleted file mode 100644 index 3126488bbb..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-100-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-unknow-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-unknow-symbolic_20px.svg deleted file mode 100644 index 0737573fbd..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/dark/icons/battery-unknow-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/icons/dcc_nav_bluetooth_42px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/icons/dcc_nav_bluetooth_42px.svg deleted file mode 100644 index 689e5be1f4..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/icons/dcc_nav_bluetooth_42px.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - dcc_nav_bluetooth_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/icons/dcc_nav_bluetooth_84px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/icons/dcc_nav_bluetooth_84px.svg deleted file mode 100644 index 08afaf7e87..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/icons/dcc_nav_bluetooth_84px.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - dcc_nav_bluetooth_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-000-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-000-symbolic_20px.svg deleted file mode 100644 index 7200009d1d..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-000-symbolic_20px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-010-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-010-symbolic_20px.svg deleted file mode 100644 index 570ea60c6f..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-010-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-020-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-020-symbolic_20px.svg deleted file mode 100644 index e5b1672b29..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-020-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-030-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-030-symbolic_20px.svg deleted file mode 100644 index 2652a707ac..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-030-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-040-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-040-symbolic_20px.svg deleted file mode 100644 index f6601f2a3c..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-040-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-050-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-050-symbolic_20px.svg deleted file mode 100644 index f4158de828..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-050-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-060-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-060-symbolic_20px.svg deleted file mode 100644 index b4df905b4a..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-060-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-070-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-070-symbolic_20px.svg deleted file mode 100644 index 2cd4ad4270..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-070-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-080-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-080-symbolic_20px.svg deleted file mode 100644 index c604bc7256..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-080-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-090-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-090-symbolic_20px.svg deleted file mode 100644 index 386b994620..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-090-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-100-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-100-symbolic_20px.svg deleted file mode 100644 index 6ac5c44f63..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-100-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-unknow-symbolic_20px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-unknow-symbolic_20px.svg deleted file mode 100644 index dd9536d31a..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/light/icons/battery-unknow-symbolic_20px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_camera_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_camera_16px.svg deleted file mode 100644 index dfc5671e53..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_camera_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/camera - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_clang_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_clang_16px.svg deleted file mode 100644 index 19af98e5ab..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_clang_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/clang - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_keyboard_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_keyboard_16px.svg deleted file mode 100644 index 4ac95ed96b..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_keyboard_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/keyboard - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_lan_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_lan_16px.svg deleted file mode 100644 index dd65217058..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_lan_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/lan - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_laptop_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_laptop_16px.svg deleted file mode 100644 index 74a8d8c42c..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_laptop_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/laptop - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_microphone_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_microphone_16px.svg deleted file mode 100644 index 2bc110d8ac..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_microphone_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/microphone - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_mouse_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_mouse_16px.svg deleted file mode 100644 index 72ce585e31..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_mouse_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/mouse - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_other_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_other_16px.svg deleted file mode 100644 index 50f4c7f869..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_other_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/other - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pad_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pad_16px.svg deleted file mode 100644 index 1bbeb41fdd..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pad_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/pad - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pc_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pc_16px.svg deleted file mode 100644 index dec6b72c26..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pc_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/pc - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pen_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pen_16px.svg deleted file mode 100644 index e4daa1afa8..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pen_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/pen - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pheadset_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pheadset_16px.svg deleted file mode 100644 index 44fd6e443c..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_pheadset_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/pheadset - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_phone_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_phone_16px.svg deleted file mode 100644 index eb81186973..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_phone_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/phone - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_print_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_print_16px.svg deleted file mode 100644 index b460c643f9..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_print_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/print - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_scaner_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_scaner_16px.svg deleted file mode 100644 index 0390b45885..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_scaner_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/scaner - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_touchpad_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_touchpad_16px.svg deleted file mode 100644 index 73df77c99c..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_touchpad_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/touchpad - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_tv_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_tv_16px.svg deleted file mode 100644 index c50aa782e2..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_tv_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - buletooth_icon/tv - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_video_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_video_16px.svg deleted file mode 100644 index 21dec29aab..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_video_16px.svg +++ /dev/null @@ -1,11 +0,0 @@ - - - buletooth_icon/video - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_vidicon_16px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_vidicon_16px.svg deleted file mode 100644 index 6d1f55b335..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/bluetooth_vidicon_16px.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - buletooth_vidicon_dark - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/dcc_edit_12px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/dcc_edit_12px.svg deleted file mode 100644 index ef6823ccc1..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/dcc_edit_12px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/dcc_refresh_12px.svg b/dcc-old/src/plugin-bluetooth/operation/qrc/texts/dcc_refresh_12px.svg deleted file mode 100644 index e03bcfdf52..0000000000 --- a/dcc-old/src/plugin-bluetooth/operation/qrc/texts/dcc_refresh_12px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-bluetooth/window/adaptermodule.cpp b/dcc-old/src/plugin-bluetooth/window/adaptermodule.cpp deleted file mode 100644 index 46fe8cafdf..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/adaptermodule.cpp +++ /dev/null @@ -1,381 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "adaptermodule.h" -#include "bluetoothdevicemodel.h" -#include "bluetoothworker.h" -#include "widgets/widgetmodule.h" -#include "widgets/settingsgroup.h" -#include "widgets/dcclistview.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -AdapterModule::AdapterModule(const BluetoothAdapter *adapter, BluetoothModel *model, BluetoothWorker *work, QObject *parent) - : QObject(parent) - , m_adapter(adapter) - , m_hasPaired(false) - , m_model(model) - , m_work(work) -{ - m_moduleList.append(new WidgetModule("bluetoothTitleGroup", tr("Allow other Bluetooth devices to find this device"), this, &AdapterModule::initBluetoothTitle)); - m_bluetoothTitle = new WidgetModule("bluetoothTitle", tr("Enable Bluetooth to find nearby devices (speakers, keyboard, mouse)"), [](QLabel *tip) { - tip->setText(tr("Enable Bluetooth to find nearby devices (speakers, keyboard, mouse)")); - tip->setWordWrap(true); - tip->setContentsMargins(16, 0, 10, 0); - }); - m_moduleList.append(m_bluetoothTitle); - m_devicesTitle = new WidgetModule("devicesTitle", tr("My Devices"), [](TitleLabel *title) { - title->setText(tr("My Devices")); - DFontSizeManager::instance()->bind(title, DFontSizeManager::T5, QFont::DemiBold); // 设置字体 - }); - m_moduleList.append(m_devicesTitle); - m_mydevicelist = new WidgetModule("mydeviceList", tr("My Devices"), this, &AdapterModule::initDeviceListView); - m_moduleList.append(m_mydevicelist); - m_otherDevices = new WidgetModule("otherDevices", tr("Other Devices"), [](TitleLabel *title) { - title->setText(tr("Other Devices")); - DFontSizeManager::instance()->bind(title, DFontSizeManager::T5, QFont::DemiBold); // 设置字体 - }); - m_moduleList.append(m_otherDevices); - m_anonymousCheckBox = new WidgetModule("anonymousCheckBox", tr("Other Devices"), this, &AdapterModule::initAnonymousCheckBox); - m_moduleList.append(m_anonymousCheckBox); - m_otherdevicelist = new WidgetModule("otherdeviceList", "", this, &AdapterModule::initOtherDeviceListView); - m_moduleList.append(m_otherdevicelist); - - setAdapter(m_adapter); -} - -AdapterModule::~AdapterModule() -{ - qDeleteAll(m_moduleList); -} - -const QList &AdapterModule::ModuleList() const -{ - return m_moduleList; -} - -void AdapterModule::active() -{ - updateVisible(m_adapter->powered(), m_adapter->discovering()); - if (m_adapter->powered() && !m_adapter->discovering()) - Q_EMIT requestRefresh(m_adapter); -} - -void AdapterModule::initBluetoothTitle(DCC_NAMESPACE::SettingsGroup *settingsGrp) -{ - m_titleEdit = new TitleEdit; - m_titleEdit->setTitle(m_adapter->name()); - DSpinner *spinnerBtn = new DSpinner(m_titleEdit); - spinnerBtn->setFixedSize(24, 24); - spinnerBtn->start(); - spinnerBtn->hide(); - m_titleEdit->setMinimumWidth(10); - SwitchWidget *powerSwitch = new SwitchWidget(nullptr, m_titleEdit); - //把动画按钮放在蓝牙开关前面 - powerSwitch->getMainLayout()->insertWidget(1, spinnerBtn, Qt::AlignVCenter); - powerSwitch->setObjectName("powerSwitch"); - - powerSwitch->setFixedHeight(36); - powerSwitch->setContentsMargins(0, 0, 0, 0); - powerSwitch->setChecked(m_adapter->powered()); - - SwitchWidget *discoverySwitch = new SwitchWidget(tr("Allow other Bluetooth devices to find this device")); - discoverySwitch->leftWidget()->setMinimumWidth(10); - discoverySwitch->setContentsMargins(0, 0, 0, 0); - discoverySwitch->setFixedHeight(36); - discoverySwitch->setObjectName("discoverySwitch"); - discoverySwitch->setChecked(m_adapter->discoverabled()); - - settingsGrp->setBackgroundStyle(SettingsGroup::GroupBackground); - settingsGrp->setContentsMargins(0, 0, 0, 0); - settingsGrp->layout()->setMargin(0); - settingsGrp->setSpacing(1); - - settingsGrp->appendItem(powerSwitch); - settingsGrp->appendItem(discoverySwitch); - discoverySwitch->setChecked(m_adapter->discoverabled()); - discoverySwitch->setVisible(m_adapter->powered()); - - connect(m_titleEdit, &TitleEdit::requestSetBluetoothName, this, [=](const QString &alias) { - Q_EMIT requestSetAlias(m_adapter, alias); - }); - connect(m_adapter, &BluetoothAdapter::nameChanged, m_titleEdit, &TitleEdit::setTitle, Qt::QueuedConnection); - connect(powerSwitch, &SwitchWidget::checkedChanged, this, [this, powerSwitch, discoverySwitch](const bool check) { - //关闭蓝牙的时候,直接隐藏列表 - if (!check) { - discoverySwitch->setVisible(false); - updateVisible(false, false); - if (m_adapter) { - Q_EMIT m_adapter->closeDetailPage(); - } - } - powerSwitch->switchButton()->setEnabled(false); - Q_EMIT requestSetToggleAdapter(m_adapter, check); - }); - connect(m_adapter, &BluetoothAdapter::poweredChanged, powerSwitch, [powerSwitch, spinnerBtn] { - powerSwitch->switchButton()->setEnabled(true); - spinnerBtn->hide(); - }); - connect(m_adapter, &BluetoothAdapter::loadStatus, powerSwitch, [powerSwitch, spinnerBtn] { - powerSwitch->switchButton()->setEnabled(false); - spinnerBtn->show(); - }); - connect(discoverySwitch, &SwitchWidget::checkedChanged, this, &AdapterModule::toggleDiscoverableSwitch); - connect(m_adapter, &BluetoothAdapter::discoverableChanged, discoverySwitch, [this, discoverySwitch] { - discoverySwitch->setChecked(m_adapter->discoverabled()); - }); - connect(m_adapter, &BluetoothAdapter::poweredChanged, powerSwitch, [powerSwitch, discoverySwitch](bool bPower, bool) { - powerSwitch->setEnabled(true); - powerSwitch->setChecked(bPower); - powerSwitch->setVisible(true); - discoverySwitch->setEnabled(true); - discoverySwitch->setVisible(bPower); - }); -} - -void AdapterModule::initDeviceListView(DCCListView *deviceListView) -{ - deviceListView->setAccessibleName("List_mydevicelist"); - deviceListView->setObjectName("myDeviceListView"); - deviceListView->setFrameShape(QFrame::NoFrame); - BluetoothDeviceModel *model = new BluetoothDeviceModel(m_adapter, true, deviceListView); - deviceListView->setModel(model); - deviceListView->setItemDelegate(new BluetoothDeviceDelegate(deviceListView)); - deviceListView->setEditTriggers(QAbstractItemView::NoEditTriggers); - deviceListView->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - deviceListView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - deviceListView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - deviceListView->setSelectionMode(QAbstractItemView::NoSelection); - deviceListView->setViewportMargins(0, 0, 0, 0); - - connect(model, &BluetoothDeviceModel::requestSetDevAlias, this, &AdapterModule::requestSetDevAlias); - connect(model, &BluetoothDeviceModel::detailClick, this, [this, deviceListView](const BluetoothDevice *device) { - contextMenu(m_adapter, device, deviceListView); - }); - connect(deviceListView, &DListView::clicked, this, [this](const QModelIndex &idx) { - const BluetoothDevice *device = static_cast(idx.internalPointer()); - if (device->state() != BluetoothDevice::StateConnected) { - Q_EMIT requestConnectDevice(device, m_adapter); - } - }); - - connect(deviceListView, &DListView::activated, deviceListView, &DListView::clicked); -} - -void AdapterModule::initAnonymousCheckBox(QWidget *w) -{ - QCheckBox *showAnonymousCheckBox = new QCheckBox(w); - showAnonymousCheckBox->setAccessibleName("AnonymousCheckBox"); - showAnonymousCheckBox->setChecked(m_model->displaySwitch()); - - showAnonymousCheckBox->setText(tr("Show Bluetooth devices without names")); - - showAnonymousCheckBox->setFixedHeight(36); - showAnonymousCheckBox->setMinimumWidth(10); - - DSpinner *spinner = new DSpinner(w); - spinner->setFixedSize(24, 24); - spinner->start(); - spinner->setVisible(m_adapter->discovering()); - - DIconButton *refreshBtn = new DIconButton(w); - refreshBtn->setFixedSize(36, 36); - refreshBtn->setIcon(DIconTheme::findQIcon("dcc_refresh")); - refreshBtn->setVisible(!m_adapter->discovering()); - - QHBoxLayout *phlayoutShowAnonymous = new QHBoxLayout; - phlayoutShowAnonymous->addWidget(showAnonymousCheckBox); - phlayoutShowAnonymous->addStretch(); - phlayoutShowAnonymous->addWidget(spinner); - phlayoutShowAnonymous->addWidget(refreshBtn); - - connect(refreshBtn, &DIconButton::clicked, this, [this] { - Q_EMIT requestRefresh(m_adapter); - }); - connect(m_model, &BluetoothModel::displaySwitchChanged, showAnonymousCheckBox, &QCheckBox::setChecked); - connect(showAnonymousCheckBox, &QCheckBox::stateChanged, this, [=](int state) { - if (state == Qt::CheckState::Unchecked) { - if (m_model->displaySwitch()) { - Q_EMIT requestSetDisplaySwitch(false); - } - } else { - if (!m_model->displaySwitch()) { - Q_EMIT requestSetDisplaySwitch(true); - } - } - }); - connect(m_adapter, &BluetoothAdapter::poweredChanged, spinner, [spinner, refreshBtn](bool bPower, bool bDiscovering) { - spinner->setVisible(bPower && bDiscovering); - refreshBtn->setVisible(bPower && !bDiscovering); - }); - w->setLayout(phlayoutShowAnonymous); -} - -void AdapterModule::initOtherDeviceListView(DCCListView *otherDeviceListView) -{ - otherDeviceListView->setAccessibleName("List_otherdevicelist"); - otherDeviceListView->setObjectName("otherDeviceListView"); - otherDeviceListView->setFrameShape(QFrame::NoFrame); - BluetoothDeviceModel *model = new BluetoothDeviceModel(m_adapter, false, otherDeviceListView); - otherDeviceListView->setModel(model); - otherDeviceListView->setEditTriggers(QAbstractItemView::NoEditTriggers); - otherDeviceListView->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - otherDeviceListView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - otherDeviceListView->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - otherDeviceListView->setSelectionMode(QAbstractItemView::NoSelection); - otherDeviceListView->setViewportMargins(0, 0, 0, 0); - model->showAnonymous(m_model->displaySwitch()); - - connect(m_model, &BluetoothModel::displaySwitchChanged, model, &BluetoothDeviceModel::showAnonymous); - - connect(otherDeviceListView, &DListView::clicked, this, [this](const QModelIndex &idx) { - const BluetoothDevice *device = static_cast(idx.internalPointer()); - if (device->state() != BluetoothDevice::StateConnected) { - Q_EMIT requestConnectDevice(device, m_adapter); - } - }); - - connect(otherDeviceListView, &DListView::activated, otherDeviceListView, &DListView::clicked); -} - -void AdapterModule::setAdapter(const BluetoothAdapter *adapter) -{ - connect(adapter, &BluetoothAdapter::poweredChanged, this, &AdapterModule::updateVisible, Qt::QueuedConnection); - connect(adapter, &BluetoothAdapter::deviceAdded, this, &AdapterModule::deviceChanged, Qt::QueuedConnection); - connect(adapter, &BluetoothAdapter::deviceRemoved, this, &AdapterModule::deviceChanged, Qt::QueuedConnection); - deviceChanged(); - updateVisible(adapter->powered(), adapter->discovering()); -} - -bool AdapterModule::getSwitchState() -{ - return m_adapter->powered(); -} - -void AdapterModule::toggleDiscoverableSwitch(const bool checked) -{ - Q_EMIT requestDiscoverable(m_adapter, checked); -} - -void AdapterModule::updateVisible(bool bPower, bool bDiscovering) -{ - // NOTE: maybe it should be used? - Q_UNUSED(bDiscovering) - m_bluetoothTitle->setHidden(bPower); - m_otherDevices->setHidden(!bPower); - m_anonymousCheckBox->setHidden(!bPower); - m_otherdevicelist->setHidden(!bPower); - m_devicesTitle->setHidden(!bPower || !m_hasPaired); - m_mydevicelist->setHidden(!bPower || !m_hasPaired); -} - -void AdapterModule::contextMenu(const BluetoothAdapter *adapter, const BluetoothDevice *device, DCCListView *view) -{ - QMenu *menu = new QMenu(view); - menu->setAccessibleName("DetailMenu"); - QAction *connectAction = menu->addAction(tr("Connect")); - QAction *disconnectAction = menu->addAction(tr("Disconnect")); - QAction *renameAction = menu->addAction(tr("Rename")); - QAction *transfileAction = menu->addAction(tr("Send Files")); - menu->addSeparator(); - QAction *ignoreAction = menu->addAction(tr("Ignore this device")); - connectAction->setObjectName("connectAction"); - switch (device->state()) { - case BluetoothDevice::StateConnected: - if (device->connectState()) { - menu->removeAction(connectAction); - } else { - menu->removeAction(disconnectAction); - menu->removeAction(transfileAction); - menu->removeAction(ignoreAction); - ignoreAction->setEnabled(false); - } - break; - case BluetoothDevice::StateAvailable: - connectAction->setText(tr("Connecting")); - menu->removeAction(disconnectAction); - menu->removeAction(transfileAction); - ignoreAction->setEnabled(false); - break; - case BluetoothDevice::StateDisconnecting: - connectAction->setText(tr("Disconnecting")); - menu->removeAction(disconnectAction); - menu->removeAction(transfileAction); - ignoreAction->setEnabled(false); - break; - case BluetoothDevice::StateUnavailable: - menu->removeAction(disconnectAction); - menu->removeAction(transfileAction); - break; - } - if (!device->canSendFile()) - menu->removeAction(transfileAction); - QAction *action = menu->exec(QCursor::pos()); - if (action == nullptr) { - // 没有不处理,但要先判断 - } else if (action == connectAction) { - Q_EMIT requestConnectDevice(device, adapter); - } else if (action == disconnectAction) { - Q_EMIT requestDisconnectDevice(device); - } else if (action == renameAction) { - BluetoothDeviceModel *model = qobject_cast(view->model()); - view->edit(model->index(device)); - } else if (action == transfileAction) { - QFileDialog *transFile = new QFileDialog(view); - transFile->setModal(true); - transFile->setFileMode(QFileDialog::ExistingFiles); - transFile->setAcceptMode(QFileDialog::AcceptOpen); - transFile->setDirectory(QDir::homePath()); - connect(transFile, &QFileDialog::finished, this, [this, transFile, device](int result) { - if (result == QFileDialog::Accepted) { - QStringList selectedFiles = transFile->selectedFiles(); - if (selectedFiles.count() <= 0) - return; - // 蓝牙传输dbus接口: SendFile(destination string, filename string) 接口支持文件多选 - m_work->showBluetoothTransDialog(device->address(), selectedFiles); - } - }); - transFile->show(); - } else if (action == ignoreAction) { - Q_EMIT requestIgnoreDevice(adapter, device); - } - menu->deleteLater(); -} - -void AdapterModule::deviceChanged() -{ - bool hasPaired = false; - for (auto &&dev : m_adapter->devices()) { - hasPaired |= dev->paired(); - if (!m_devices.contains(dev)) { - connect(dev, &BluetoothDevice::pairedChanged, this, &AdapterModule::deviceChanged, Qt::QueuedConnection); - connect(dev, &BluetoothDevice::destroyed, this, [this]() { - m_devices.remove(qobject_cast(sender())); - }); - m_devices.insert(dev); - } - } - if (hasPaired != m_hasPaired) { - m_hasPaired = hasPaired; - updateVisible(m_adapter->powered(), m_adapter->discovering()); - } -} diff --git a/dcc-old/src/plugin-bluetooth/window/adaptermodule.h b/dcc-old/src/plugin-bluetooth/window/adaptermodule.h deleted file mode 100644 index 350241778c..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/adaptermodule.h +++ /dev/null @@ -1,87 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef ADAPTERMODULE_H -#define ADAPTERMODULE_H - -#include "interface/moduleobject.h" - -#include "widgets/switchwidget.h" -#include "widgets/titlelabel.h" -#include "bluetoothmodel.h" -#include "titleedit.h" - -#include - -DWIDGET_BEGIN_NAMESPACE -class DListView; -class DSpinner; -class DIconButton; -DWIDGET_END_NAMESPACE - -namespace DCC_NAMESPACE { -class SettingsGroup; -class DCCListView; -} - -class BluetoothWorker; -class QCheckBox; - -class AdapterModule : public QObject -{ - Q_OBJECT -public: - explicit AdapterModule(const BluetoothAdapter *adapter, BluetoothModel *model, BluetoothWorker *work, QObject *parent = nullptr); - virtual ~AdapterModule(); - const QList &ModuleList() const; - void active(); - -public Q_SLOTS: - void initBluetoothTitle(DCC_NAMESPACE::SettingsGroup *settingsGrp); - void initDeviceListView(DCC_NAMESPACE::DCCListView *deviceListView); - void initAnonymousCheckBox(QWidget *w); - void initOtherDeviceListView(DCC_NAMESPACE::DCCListView *otherDeviceListView); - void toggleDiscoverableSwitch(const bool checked); - void updateVisible(bool bPower, bool bDiscovering); - -Q_SIGNALS: - void requestSetToggleAdapter(const BluetoothAdapter *adapter, const bool &toggled); - void requestConnectDevice(const BluetoothDevice *device, const BluetoothAdapter *adapter); - void requestDisconnectDevice(const BluetoothDevice *device); - void requestSetAlias(const BluetoothAdapter *adapter, const QString &alias); - void requestSetDevAlias(const BluetoothDevice *device, const QString &devAlias); - void notifyRemoveDevice(); - void requestRefresh(const BluetoothAdapter *adapter); - void requestDiscoverable(const BluetoothAdapter *adapter, const bool &discoverable); - void requestSetDisplaySwitch(const bool &on); - void requestIgnoreDevice(const BluetoothAdapter *adapter, const BluetoothDevice *device); - -private Q_SLOTS: - void contextMenu(const BluetoothAdapter *adapter, const BluetoothDevice *device, DCC_NAMESPACE::DCCListView *view); - void deviceChanged(); - -private: - void setAdapter(const BluetoothAdapter *adapter); - bool getSwitchState(); - -protected: - QList m_moduleList; - QSet m_devices; - - DCC_NAMESPACE::TitleEdit *m_titleEdit; - const BluetoothAdapter *m_adapter; - bool m_hasPaired; - - BluetoothModel *m_model; - BluetoothWorker *m_work; - - DCC_NAMESPACE::ModuleObject *m_bluetoothTitle; - DCC_NAMESPACE::ModuleObject *m_otherDevices; - DCC_NAMESPACE::ModuleObject *m_anonymousCheckBox; - DCC_NAMESPACE::ModuleObject *m_otherdevicelist; - DCC_NAMESPACE::ModuleObject *m_devicesTitle; - DCC_NAMESPACE::ModuleObject *m_mydevicelist; -}; - -#endif // ADAPTERMODULE_H diff --git a/dcc-old/src/plugin-bluetooth/window/bluetoothdevicemodel.cpp b/dcc-old/src/plugin-bluetooth/window/bluetoothdevicemodel.cpp deleted file mode 100644 index dd0682e6c2..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/bluetoothdevicemodel.cpp +++ /dev/null @@ -1,447 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "bluetoothdevicemodel.h" - -#include "bluetoothadapter.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -struct BluetoothDeviceItemAction -{ - const BluetoothDevice *device; - DViewItemAction *spinnerAction; - DViewItemAction *percentageText; - DViewItemAction *percentageIcon; - DViewItemAction *textAction; - DViewItemAction *spaceAction; - DViewItemAction *iconAction; - DSpinner *loadingIndicator; - DViewItemActionList actionList; - DStandardItem *item; - - explicit BluetoothDeviceItemAction(const BluetoothDevice *_device) - : device(_device) - , spinnerAction(new DViewItemAction(Qt::AlignVCenter, QSize(), QSize(), false)) - , percentageText(new DViewItemAction(Qt::AlignVCenter, QSize(), QSize(), false)) - , percentageIcon(new DViewItemAction(Qt::AlignVCenter, QSize(), QSize(), false)) - , textAction(new DViewItemAction(Qt::AlignVCenter, QSize(), QSize(), true)) - , spaceAction(new DViewItemAction(Qt::AlignVCenter, QSize(), QSize(), false)) - , iconAction(new DViewItemAction(Qt::AlignVCenter, QSize(), QSize(), true)) - , loadingIndicator(nullptr) - , item(new DStandardItem()) - { - iconAction->setData(static_cast(device)); - actionList.append(percentageText); - actionList.append(percentageIcon); - actionList.append(spinnerAction); - actionList.append(textAction); - actionList.append(spaceAction); - actionList.append(iconAction); - percentageText->setVisible(false); - percentageIcon->setVisible(false); - spinnerAction->setVisible(false); - item->setActionList(Qt::Edge::RightEdge, actionList); - } - - ~BluetoothDeviceItemAction() - { - delete item; - if (loadingIndicator) - delete loadingIndicator; - } - - void setLoading(bool isLoading, QWidget *parentView) - { - if (spinnerAction->isVisible() == isLoading) - return; - if (isLoading) { - QAbstractItemView *view = qobject_cast(parentView); - QWidget *parentWidget = view ? view->viewport() : parentView; - if (!loadingIndicator) { - loadingIndicator = new DSpinner(parentWidget); - loadingIndicator->setFixedSize(24, 24); - spinnerAction->setWidget(loadingIndicator); - loadingIndicator->connect(loadingIndicator, - &QWidget::destroyed, - loadingIndicator, - [this]() { - loadingIndicator = nullptr; - }); - } - loadingIndicator->setParent(parentWidget); - loadingIndicator->start(); - } else if (loadingIndicator) { - loadingIndicator->stop(); - loadingIndicator->setVisible(false); - } - spinnerAction->setVisible(isLoading); - textAction->setVisible(!isLoading); - } - Q_DISABLE_COPY(BluetoothDeviceItemAction) -}; - -const QMap BluetoothDeviceModel::deviceType2Icon = { - {"unknow", "other"}, - {"computer", "pc"}, - {"phone", "phone"}, - {"video-display", "vidicon"}, - {"multimedia-player", "tv"}, - {"scanner", "scaner"}, - {"input-keyboard", "keyboard"}, - {"input-mouse", "mouse"}, - {"input-gaming", "other"}, - {"input-tablet", "touchpad"}, - {"audio-card", "pheadset"}, - {"audio-headset", "pheadset"}, - {"network-wireless", "lan"}, - {"camera-video", "vidicon"}, - {"printer", "print"}, - {"camera-photo", "camera"}, - {"modem", "other"} -}; - -BluetoothDeviceModel::BluetoothDeviceModel(const BluetoothAdapter *adapter, - bool paired, - QWidget *parent) - : QAbstractItemModel(parent) - , m_paired(paired) - , m_adapter(adapter) - , m_parent(parent) - , m_showAnonymous(false) -{ - for (QString id : m_adapter->devicesId()) { - if (m_adapter->devices().contains(id)) { - const BluetoothDevice *device = m_adapter->devices()[id]; - addDevice(device); - } - } - connect(adapter, - &BluetoothAdapter::deviceAdded, - this, - &BluetoothDeviceModel::addDevice, - Qt::QueuedConnection); - connect(adapter, - &BluetoothAdapter::deviceRemoved, - this, - &BluetoothDeviceModel::removeDevice, - Qt::QueuedConnection); -} - -BluetoothDeviceModel::~BluetoothDeviceModel() -{ - for (auto it = m_allData.begin(); it != m_allData.end(); ++it) { - delete (*it); - } -} - -QModelIndex BluetoothDeviceModel::index(const BluetoothDevice *device) -{ - int row = 0; - for (auto it = m_data.begin(); it != m_data.end(); ++it, ++row) { - if ((*it)->device == device) { - return index(row, 0); - } - } - return QModelIndex(); -} - -// Basic functionality: -QModelIndex BluetoothDeviceModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent) - if (row < 0 || row >= m_data.size()) - return QModelIndex(); - return createIndex(row, column, const_cast(m_data.at(row)->device)); -} - -QModelIndex BluetoothDeviceModel::parent(const QModelIndex &index) const -{ - Q_UNUSED(index) - return QModelIndex(); -} - -int BluetoothDeviceModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - return m_data.size(); -} - -int BluetoothDeviceModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent) - return 1; -} - -QVariant BluetoothDeviceModel::data(const QModelIndex &index, int role) const -{ - if (!index.isValid()) - return QVariant(); - - auto themeType = DGuiApplicationHelper::instance()->themeType(); - bool isDarkTheme = themeType == DGuiApplicationHelper::DarkType; - - int row = index.row(); - const BluetoothDevice *device = m_data.at(row)->device; - const QString iconSuffix = deviceType2Icon[device->deviceType()]; - - switch (role) { - case Qt::EditRole: - case Qt::DisplayRole: - return device->alias().isEmpty() ? device->name() : device->alias(); - case Qt::DecorationRole: - if (!iconSuffix.isEmpty()) { - QString deviceIconName = QString("bluetooth_%1").arg(iconSuffix); - return QIcon::fromTheme(deviceIconName); - } - else - return QIcon::fromTheme(QString("bluetooth_other")); - case Dtk::RightActionListRole: - return m_data.at(row)->item->data(role); - default: - return QVariant(); - } -} - -bool BluetoothDeviceModel::setData(const QModelIndex &index, const QVariant &value, int role) -{ - if (index.isValid() && role == Qt::EditRole) { - const BluetoothDevice *device = - static_cast(index.internalPointer()); - QString devAlias = value.toString(); - QString devName(device->name()); - if (devAlias.isEmpty()) { - Q_EMIT requestSetDevAlias(device, devName); - } else { - Q_EMIT requestSetDevAlias(device, devAlias); - } - emit dataChanged(index, index, { role }); - return true; - } - return false; -} - -Qt::ItemFlags BluetoothDeviceModel::flags(const QModelIndex &index) const -{ - Qt::ItemFlags flag = QAbstractItemModel::flags(index); - int row = index.row(); - const BluetoothDevice *device = m_data.at(row)->device; - // INFO: when is headset, not connect twice - if (device - && (device->deviceType() == "audio-headset" || device->deviceType() == "autio-headphones") - && device->state() == BluetoothDevice::StateAvailable) - flag.setFlag(Qt::ItemIsEnabled, false); - return flag | Qt::ItemIsEditable; -} - -void BluetoothDeviceModel::addDevice(const BluetoothDevice *device) -{ - for (auto it = m_allData.begin(); it != m_allData.end(); ++it) { - if ((*it)->device == device) { - return; - } - } - - // clang-format off - connect(device, &BluetoothDevice::pairedChanged, this, &BluetoothDeviceModel::onPairedChanged, Qt::UniqueConnection); - if (device->paired() != m_paired) - return; - connect(device, &BluetoothDevice::nameChanged, this, &BluetoothDeviceModel::updateData, Qt::UniqueConnection); - connect(device, &BluetoothDevice::aliasChanged, this, &BluetoothDeviceModel::updateData, Qt::UniqueConnection); - connect(device, &BluetoothDevice::stateChanged, this, &BluetoothDeviceModel::updateData, Qt::UniqueConnection); - connect(device, &BluetoothDevice::trustedChanged, this, &BluetoothDeviceModel::updateData, Qt::UniqueConnection); - connect(device, &BluetoothDevice::connectingChanged, this, &BluetoothDeviceModel::updateData, Qt::UniqueConnection); - connect(device, &BluetoothDevice::batteryChanged, this, &BluetoothDeviceModel::updateData, Qt::UniqueConnection); - - BluetoothDeviceItemAction *item = new BluetoothDeviceItemAction(device); - updateItem(item); - connect(item->iconAction, &DViewItemAction::triggered, this, [this]() { - DViewItemAction *action = qobject_cast(sender()); - for (auto it = m_data.begin(); it != m_data.end(); ++it) { - if ((*it)->iconAction == action) { - emit detailClick((*it)->device); - break; - } - } - }); - // clang-format on - m_allData.append(item); - if (m_showAnonymous || !device->name().isEmpty()) { - beginInsertRows(QModelIndex(), 0, 0); - m_data.prepend(item); - endInsertRows(); - } -} - -void BluetoothDeviceModel::onPairedChanged(const bool &paired) -{ - const BluetoothDevice *device = qobject_cast(sender()); - if (!device) - return; - if (paired == m_paired) { - addDevice(device); - } else { - removeDevice(device->id()); - } -} - -void BluetoothDeviceModel::updateData() -{ - const BluetoothDevice *device = qobject_cast(sender()); - int row = 0; - for (auto it = m_data.begin(); it != m_data.end(); ++it, ++row) { - if ((*it)->device == device) { - updateItem(*it); - emit dataChanged(index(row, 0), index(row, 0)); - break; - } - } -} - -void BluetoothDeviceModel::removeDevice(const QString &deviceId) -{ - for (auto it = m_allData.begin(); it != m_allData.end(); ++it) { - if ((*it)->device->id() == deviceId) { - BluetoothDeviceItemAction *item = *it; - m_allData.removeOne(item); - int row = m_data.indexOf(item); - if (row != -1) { - beginRemoveRows(QModelIndex(), row, row); - m_data.removeOne(item); - endRemoveRows(); - } - delete item; - break; - } - } -} - -void BluetoothDeviceModel::updateItem(BluetoothDeviceItemAction *item) -{ - const BluetoothDevice *device = item->device; - if (device->state() == BluetoothDevice::StateAvailable) { - item->setLoading(true, m_parent); - } else { - switch (device->state()) { - case BluetoothDevice::StateConnected: - if (device->connectState()) { - item->textAction->setText(tr("Connected")); - item->setLoading(false, m_parent); - } - break; - case BluetoothDevice::StateUnavailable: - case BluetoothDevice::StateDisconnecting: { - item->textAction->setText(tr("Not connected")); - item->setLoading(false, m_parent); - } break; - default: - break; - } - } - item->iconAction->setVisible(m_paired); - if (m_paired) { - item->iconAction->setIcon(m_parent->style()->standardIcon(QStyle::SP_ArrowRight)); - int battery = device->battery(); - if (battery != 0) { - item->percentageIcon->setVisible(true); - item->percentageIcon->setIcon(getBatteryIcon(battery)); - item->percentageText->setVisible(true); - item->percentageText->setText(QString("%1%").arg(battery)); - return; - } - } - item->percentageIcon->setVisible(false); - item->percentageText->setVisible(false); -} - -QIcon BluetoothDeviceModel::getBatteryIcon(int percentage) -{ - /* 0-5%、6-10%、11%-20%、21-30%、31-40%、41-50%、51-60%、61%-70%、71-80%、81-90%、91-100% */ - QString percentageStr; - if (percentage <= 5) { - percentageStr = "000"; - } else if (percentage <= 10) { - percentageStr = "010"; - } else if (percentage <= 20) { - percentageStr = "020"; - } else if (percentage <= 30) { - percentageStr = "030"; - } else if (percentage <= 40) { - percentageStr = "040"; - } else if (percentage <= 50) { - percentageStr = "050"; - } else if (percentage <= 60) { - percentageStr = "060"; - } else if (percentage <= 70) { - percentageStr = "070"; - } else if (percentage <= 80) { - percentageStr = "080"; - } else if (percentage <= 90) { - percentageStr = "090"; - } else if (percentage <= 100) { - percentageStr = "100"; - } else { - percentageStr = "unknow"; - } - - QString iconName = QString("battery-%1-symbolic").arg(percentageStr); - QIcon qrcIcon = DIconTheme::findQIcon(iconName, DIconTheme::DontFallbackToQIconFromTheme); - auto themeType = DGuiApplicationHelper::instance()->themeType(); - bool isDarkTheme = themeType == DGuiApplicationHelper::DarkType; - // "-dark" means dark icon, not icon for dark theme. - QString iconNameSystem = isDarkTheme ? iconName : iconName + "-dark"; - return DIconTheme::findQIcon(iconNameSystem, qrcIcon, DIconTheme::IgnoreBuiltinIcons); -} - -void BluetoothDeviceModel::showAnonymous(bool show) -{ - if (m_showAnonymous == show) - return; - m_showAnonymous = show; - beginResetModel(); - m_data.clear(); - for (auto it = m_allData.begin(); it != m_allData.end(); ++it) { - if (m_showAnonymous || !(*it)->device->name().isEmpty()) - m_data.append(*it); - } - endResetModel(); -} - -BluetoothDeviceDelegate::BluetoothDeviceDelegate(QAbstractItemView *parent) - : Dtk::Widget::DStyledItemDelegate(parent) -{ -} - -QWidget *BluetoothDeviceDelegate::createEditor(QWidget *parent, - const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - Q_UNUSED(option) - if (!index.isValid()) - return nullptr; - - QLineEdit *edit = new QLineEdit(parent); - edit->setFrame(false); - edit->setSizePolicy(QSizePolicy::Ignored, edit->sizePolicy().verticalPolicy()); - connect(edit, &QLineEdit::textChanged, edit, [edit](const QString &str) { - if (str.length() > 32) { - edit->backspace(); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } - }); - return edit; -} diff --git a/dcc-old/src/plugin-bluetooth/window/bluetoothdevicemodel.h b/dcc-old/src/plugin-bluetooth/window/bluetoothdevicemodel.h deleted file mode 100644 index d74d897b60..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/bluetoothdevicemodel.h +++ /dev/null @@ -1,74 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef BLUETOOTHDEVICEMODEL_H -#define BLUETOOTHDEVICEMODEL_H - -#include - -#include - -class QPainter; -class QStyleOptionViewItem; -class QModelIndex; -class BluetoothDevice; -class BluetoothAdapter; -struct BluetoothDeviceItemAction; - -class BluetoothDeviceModel : public QAbstractItemModel -{ - Q_OBJECT -public: - explicit BluetoothDeviceModel(const BluetoothAdapter *adapter, bool paired = false, QWidget *parent = nullptr); - virtual ~BluetoothDeviceModel() override; - void setPairedDevices(bool paired); - QModelIndex index(const BluetoothDevice *device); - // Basic functionality: - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - QModelIndex parent(const QModelIndex &index) const override; - - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; - - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override; - virtual Qt::ItemFlags flags(const QModelIndex &index) const override; - -Q_SIGNALS: - void detailClick(const BluetoothDevice *device); - void requestSetDevAlias(const BluetoothDevice *device, const QString &devAlias); - -public Q_SLOTS: - void showAnonymous(bool show); - QIcon getBatteryIcon(int percentage); - -private Q_SLOTS: - void addDevice(const BluetoothDevice *device); - void removeDevice(const QString &deviceId); - void updateData(); - void onPairedChanged(const bool &paired); - -private: - void updateItem(BluetoothDeviceItemAction *item); - -private: - const static QMap deviceType2Icon; - bool m_paired; - QList m_allData; - QList m_data; - const BluetoothAdapter *m_adapter; - QWidget *m_parent; - bool m_showAnonymous; -}; - -class BluetoothDeviceDelegate : public Dtk::Widget::DStyledItemDelegate -{ -public: - BluetoothDeviceDelegate(QAbstractItemView *parent = nullptr); - -protected: - QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override; -}; - -#endif // BLUETOOTHDEVICEMODEL_H diff --git a/dcc-old/src/plugin-bluetooth/window/bluetoothmodule.cpp b/dcc-old/src/plugin-bluetooth/window/bluetoothmodule.cpp deleted file mode 100644 index 5ffdda000a..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/bluetoothmodule.cpp +++ /dev/null @@ -1,146 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "bluetoothmodule.h" -#include "bluetoothmodel.h" -#include "adaptermodule.h" -#include "bluetoothworker.h" -#include "bluetoothadapter.h" -#include "bluetoothdevice.h" -#include "pincodedialog.h" - -#include -#include -#include - -#include -DGUI_USE_NAMESPACE - -Q_LOGGING_CATEGORY(DdcBluetoothModule, "dcc-bluetooth-module") - -using namespace DCC_NAMESPACE; - -BluetoothModule::BluetoothModule(QObject *parent) - : PageModule("bluetooth", tr("Bluetooth"), tr("Bluetooth device manager"), DIconTheme::findQIcon("dcc_nav_bluetooth"), parent) -{ - m_model = new BluetoothModel(this); - m_work = new BluetoothWorker(m_model, this); - - connect(this, &BluetoothModule::requestSetToggleAdapter, m_work, &BluetoothWorker::setAdapterPowered); - connect(this, &BluetoothModule::requestConnectDevice, m_work, &BluetoothWorker::connectDevice); - connect(this, &BluetoothModule::requestDisconnectDevice, m_work, &BluetoothWorker::disconnectDevice); - connect(this, &BluetoothModule::requestSetAlias, m_work, &BluetoothWorker::setAlias); - connect(this, &BluetoothModule::requestDiscoverable, m_work, &BluetoothWorker::onRequestSetDiscoverable); - - connect(m_work, &BluetoothWorker::requestConfirmation, this, &BluetoothModule::showPinCode); - connect(m_work, &BluetoothWorker::pinCodeCancel, this, &BluetoothModule::closePinCode); - - connect(m_model, &BluetoothModel::adapterAdded, this, &BluetoothModule::addAdapter); - connect(m_model, &BluetoothModel::adapterRemoved, this, &BluetoothModule::removeAdapter); - - for (const BluetoothAdapter *adapter : m_model->adapters()) - addAdapter(adapter); - - updateWidget(); -} - -void BluetoothModule::active() -{ - for (auto &&module : m_valueMap) - module->active(); -} - -void BluetoothModule::deactive() -{ - for (auto &&adapter : m_valueMap.keys()) - m_work->setAdapterDiscovering(QDBusObjectPath(adapter->id()), false); -} - -bool BluetoothModule::hasDevice() -{ - return !m_valueMap.isEmpty(); -} - -void BluetoothModule::showPinCode(const QDBusObjectPath &device, const QString &code) -{ - qCDebug(DdcBluetoothModule) << "request confirmation: " << device.path() << code; - PinCodeDialog *dialog = PinCodeDialog::instance(code); - m_dialogs[device] = dialog; - if (!dialog->isVisible()) { - int ret = dialog->exec(); - closePinCode(device); - m_work->pinCodeConfirm(device, bool(ret)); - } -} - -void BluetoothModule::closePinCode(const QDBusObjectPath &device) -{ - PinCodeDialog *dialog = m_dialogs[device]; - m_dialogs.remove(device); - QMetaObject::invokeMethod(dialog, "deleteLater", Qt::QueuedConnection); -} - -AdapterModule *BluetoothModule::getAdapter(const BluetoothAdapter *adapter) -{ - AdapterModule *adpWidget = new AdapterModule(adapter, m_model, m_work, this); - - const QDBusObjectPath path(adapter->id()); - - connect(adpWidget, &AdapterModule::requestSetToggleAdapter, this, &BluetoothModule::requestSetToggleAdapter); - connect(adpWidget, &AdapterModule::requestConnectDevice, this, &BluetoothModule::requestConnectDevice); - connect(adpWidget, &AdapterModule::requestDisconnectDevice, this, &BluetoothModule::requestDisconnectDevice); - connect(adpWidget, &AdapterModule::requestSetAlias, this, &BluetoothModule::requestSetAlias); - connect(adpWidget, &AdapterModule::requestRefresh, this, &BluetoothModule::requestRefresh); - connect(adpWidget, &AdapterModule::requestDiscoverable, this, &BluetoothModule::requestDiscoverable); - connect(adpWidget, &AdapterModule::requestDiscoverable, this, &BluetoothModule::requestDiscoverable); - connect(adpWidget, &AdapterModule::requestSetDevAlias, m_work, &BluetoothWorker::setDeviceAlias); - connect(adpWidget, &AdapterModule::requestSetDisplaySwitch, m_work, &BluetoothWorker::setDisplaySwitch); - connect(adpWidget, &AdapterModule::requestIgnoreDevice, m_work, &BluetoothWorker::ignoreDevice); - - return adpWidget; -} - -void BluetoothModule::addAdapter(const BluetoothAdapter *adapter) -{ - if (!m_valueMap.contains(adapter)) { - m_valueMap[adapter] = getAdapter(adapter); - updateVisible(); - updateWidget(); - } -} -void BluetoothModule::removeAdapter(const BluetoothAdapter *adapter) -{ - if (m_valueMap.contains(adapter)) { - AdapterModule *adpModule = m_valueMap.take(adapter); - for (auto &&obj : adpModule->ModuleList()) { - removeChild(obj); - } - adpModule->setParent(nullptr); - adpModule->deleteLater(); - updateWidget(); - } -} - -void BluetoothModule::requestRefresh(const BluetoothAdapter *adapter) -{ - m_work->setAdapterDiscoverable(adapter->id()); -} - -void BluetoothModule::updateVisible() -{ - int row = 0; - for (const BluetoothAdapter *adapter : m_model->adapters()) { - auto &&adpModule = m_valueMap.value(adapter, nullptr); - if (adpModule) { - for (auto &&module : adpModule->ModuleList()) { - insertChild(row++, module); - } - } - } -} - -void BluetoothModule::updateWidget() -{ - setHidden(m_valueMap.isEmpty()); -} diff --git a/dcc-old/src/plugin-bluetooth/window/bluetoothmodule.h b/dcc-old/src/plugin-bluetooth/window/bluetoothmodule.h deleted file mode 100644 index c297066ee9..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/bluetoothmodule.h +++ /dev/null @@ -1,60 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef BLUETOOTHMODULE_H -#define BLUETOOTHMODULE_H - -#include "interface/pagemodule.h" - -#include - -class BluetoothModel; -class BluetoothWorker; -class BluetoothAdapter; -class BluetoothDevice; -class QDBusObjectPath; -class PinCodeDialog; -class AdapterModule; - -class BluetoothModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT - -public: - explicit BluetoothModule(QObject *parent = nullptr); - ~BluetoothModule() override { } - void active() override; - void deactive() override; - bool hasDevice(); - -Q_SIGNALS: - void showBluetoothDetail(const BluetoothAdapter *adapter) const; - - void requestSetToggleAdapter(const BluetoothAdapter *adapter, const bool &toggled); - void requestConnectDevice(const BluetoothDevice *device, const BluetoothAdapter *adapter); - void requestDisconnectDevice(const BluetoothDevice *device); - void requestSetAlias(const BluetoothAdapter *adapter, const QString &alias); - void requestDiscoverable(const BluetoothAdapter *adapter, const bool &discoverable); - -public Q_SLOTS: - void showPinCode(const QDBusObjectPath &device, const QString &code); - void closePinCode(const QDBusObjectPath &device); - - void addAdapter(const BluetoothAdapter *adapter); - void removeAdapter(const BluetoothAdapter *adapter); - void requestRefresh(const BluetoothAdapter *adapter); - void updateVisible(); - -private: - void updateWidget(); - AdapterModule *getAdapter(const BluetoothAdapter *adapter); - -private: - BluetoothModel *m_model; - BluetoothWorker *m_work; - QMap m_valueMap; - QMap m_dialogs; -}; - -#endif // BLUETOOTHMODULE_H diff --git a/dcc-old/src/plugin-bluetooth/window/bluetoothplugin.cpp b/dcc-old/src/plugin-bluetooth/window/bluetoothplugin.cpp deleted file mode 100644 index 70efa79995..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/bluetoothplugin.cpp +++ /dev/null @@ -1,38 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "bluetoothplugin.h" -#include "bluetoothmodule.h" - -using namespace DCC_NAMESPACE; - -BluetoothPlugin::BluetoothPlugin(QObject *parent) - : PluginInterface(parent) - , m_moduleRoot(nullptr) -{ -} - -BluetoothPlugin::~BluetoothPlugin() -{ - m_moduleRoot = nullptr; -} - -QString BluetoothPlugin::name() const -{ - return QStringLiteral("bluetooth"); -} - -ModuleObject *BluetoothPlugin::module() -{ - if (m_moduleRoot) - return m_moduleRoot; - - m_moduleRoot = new BluetoothModule; - return m_moduleRoot; -} - -QString BluetoothPlugin::location() const -{ - return "8"; -} diff --git a/dcc-old/src/plugin-bluetooth/window/bluetoothplugin.h b/dcc-old/src/plugin-bluetooth/window/bluetoothplugin.h deleted file mode 100644 index 4fb3c5164d..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/bluetoothplugin.h +++ /dev/null @@ -1,28 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef BLUETOOTHPLUGIN_H -#define BLUETOOTHPLUGIN_H - -#include "interface/moduleobject.h" -#include "interface/plugininterface.h" - -class BluetoothPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Bluetooth" FILE "plugin-bluetooth.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit BluetoothPlugin(QObject *parent = nullptr); - ~BluetoothPlugin(); - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; - -private: - DCC_NAMESPACE::ModuleObject *m_moduleRoot; -}; - -#endif // BLUETOOTHPLUGIN_H diff --git a/dcc-old/src/plugin-bluetooth/window/pincodedialog.cpp b/dcc-old/src/plugin-bluetooth/window/pincodedialog.cpp deleted file mode 100644 index 57d2da8aee..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/pincodedialog.cpp +++ /dev/null @@ -1,67 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "pincodedialog.h" - -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -static QList Instances; - -PinCodeDialog::PinCodeDialog(const QString &pinCode, const bool &cancelable) - : DDialog() - , m_pinCodeLabel(new QLabel) -{ - setTitle(tr("The PIN for connecting to the Bluetooth device is:")); - setIcon(DIconTheme::findQIcon("notification-bluetooth-connected")); - - m_pinCodeLabel->setObjectName("PinCodeText"); - addContent(m_pinCodeLabel, Qt::AlignTop | Qt::AlignCenter); - - QStringList btns; - if (cancelable) { - btns << tr("Cancel"); - } - btns << tr("Confirm"); - addButtons(btns); - - setPinCode(pinCode); -} - -PinCodeDialog::~PinCodeDialog() -{ - Instances.removeAll(this); -} - -PinCodeDialog *PinCodeDialog::instance(const QString &pinCode, const bool &cancelable) -{ - QList::Iterator it = std::find_if(Instances.begin(), Instances.end(), [pinCode](PinCodeDialog *dia) { - return dia->pinCode() == pinCode; - }); - if (it != Instances.end()) { - return *it; - } - - PinCodeDialog *dia = new PinCodeDialog(pinCode, cancelable); - Instances.append(dia); - - return dia; -} - -QString PinCodeDialog::pinCode() const -{ - return m_pinCodeLabel->text(); -} - -void PinCodeDialog::setPinCode(const QString &pinCode) -{ - m_pinCodeLabel->setText(pinCode); -} - -PinCodeDialog::PinCodeDialog() - : PinCodeDialog("", false) -{ -} diff --git a/dcc-old/src/plugin-bluetooth/window/pincodedialog.h b/dcc-old/src/plugin-bluetooth/window/pincodedialog.h deleted file mode 100644 index e8244a0753..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/pincodedialog.h +++ /dev/null @@ -1,28 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_BLUETOOTH_PINCODEDIALOG_H -#define DCC_BLUETOOTH_PINCODEDIALOG_H - -#include - -class QLabel; - -class PinCodeDialog : public Dtk::Widget::DDialog -{ - Q_OBJECT -public: - static PinCodeDialog *instance(const QString &pinCode, const bool &cancelable = true); - - QString pinCode() const; - void setPinCode(const QString &pinCode); - -private: - QLabel *m_pinCodeLabel; - - explicit PinCodeDialog(); - explicit PinCodeDialog(const QString &pinCode, const bool &cancelable = true); - ~PinCodeDialog(); -}; - -#endif // DCC_BLUETOOTH_PINCODEDIALOG_H diff --git a/dcc-old/src/plugin-bluetooth/window/plugin-bluetooth.json b/dcc-old/src/plugin-bluetooth/window/plugin-bluetooth.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/plugin-bluetooth.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-bluetooth/window/titleedit.cpp b/dcc-old/src/plugin-bluetooth/window/titleedit.cpp deleted file mode 100644 index 26f0778084..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/titleedit.cpp +++ /dev/null @@ -1,93 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "titleedit.h" - -#include - -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -using namespace DCC_NAMESPACE; - -TitleEdit::TitleEdit(QWidget *parent) - : QWidget(parent) - , m_name(new QLabel) - , m_lineEdit(new DLineEdit) -{ - setAccessibleName("TitleEdit"); - QHBoxLayout *mainlayout = new QHBoxLayout; - m_lineEdit->lineEdit()->setVisible(false); - m_lineEdit->setAccessibleName("TitleEdit_lineEdit"); - mainlayout->addWidget(m_name); - mainlayout->addWidget(m_lineEdit); - mainlayout->addSpacing(5); - DToolButton *editWidget = new DToolButton(this); - editWidget->setIcon(DIconTheme::findQIcon("dcc_edit")); - mainlayout->addWidget(editWidget); - mainlayout->addStretch(); - mainlayout->setMargin(0); - mainlayout->setSpacing(0); - setLayout(mainlayout); - - connect(m_lineEdit, &DLineEdit::editingFinished, this, [this, editWidget]() { - this->setName(); - editWidget->setVisible(true); - }); - - connect(m_lineEdit, &DLineEdit::focusChanged, this, [this, editWidget](bool onFocus) { - if (onFocus) { - editWidget->setVisible(false); - this->setEdit(); - } else { - this->setName(); - editWidget->setVisible(true); - } - }); - - connect(m_lineEdit, &DLineEdit::textChanged, this, [=](const QString &str) { - if (str.length() > 64) { - m_lineEdit->lineEdit()->backspace(); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } - }); - connect(editWidget, &DToolButton::clicked, this, [this, editWidget]() { - editWidget->setVisible(false); - this->setEdit(); - }); -} - -void TitleEdit::setName() -{ - m_lineEdit->lineEdit()->setVisible(false); - m_name->setVisible(true); - if (m_name->text() != m_lineEdit->text()) { - if (!m_lineEdit->text().isEmpty()) { - m_name->setText(m_lineEdit->text()); - Q_EMIT requestSetBluetoothName(m_lineEdit->text()); - } else { - m_lineEdit->setText(m_name->text()); - } - } - m_name->setFocus(); -} - -void TitleEdit::setEdit() -{ - m_name->setVisible(false); - m_lineEdit->lineEdit()->setVisible(true); - m_lineEdit->lineEdit()->setFocus(); -} - -void TitleEdit::setTitle(const QString &title) -{ - m_name->setText(title); - m_lineEdit->setText(title); -} diff --git a/dcc-old/src/plugin-bluetooth/window/titleedit.h b/dcc-old/src/plugin-bluetooth/window/titleedit.h deleted file mode 100644 index 52e4f6d656..0000000000 --- a/dcc-old/src/plugin-bluetooth/window/titleedit.h +++ /dev/null @@ -1,37 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include - -DWIDGET_USE_NAMESPACE - -QT_BEGIN_NAMESPACE -class QLabel; -class QLineEdit; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class TitleEdit : public QWidget -{ - Q_OBJECT -public: - explicit TitleEdit(QWidget *parent = nullptr); - -Q_SIGNALS: - void requestSetBluetoothName(const QString &name); - -public Q_SLOTS: - void setName(); - void setEdit(); - void setTitle(const QString &title); - -private: - QLabel *m_name; - DLineEdit *m_lineEdit; -}; -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-commoninfo/operation/commoninfomodel.cpp b/dcc-old/src/plugin-commoninfo/operation/commoninfomodel.cpp deleted file mode 100644 index 2e582b2aaf..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/commoninfomodel.cpp +++ /dev/null @@ -1,147 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "commoninfomodel.h" - -#include - -using namespace DCC_NAMESPACE; - -CommonInfoModel::CommonInfoModel(QObject *parent) - : QObject(parent) - , m_bootDelay(false) - , m_themeEnabled(false) - , m_updating(false) - , m_joinUeProgram(false) - , m_activation(false) - , m_plymouthscale(0) - , m_plymouththeme(QString()) -{ -} - -void CommonInfoModel::setEntryLists(const QStringList &list) -{ - if (list != m_entryLists) { - m_entryLists = list; - Q_EMIT entryListsChanged(list); - } -} - -void CommonInfoModel::setThemeEnabled(const bool enabled) -{ - if (m_themeEnabled != enabled) { - m_themeEnabled = enabled; - Q_EMIT themeEnabledChanged(m_themeEnabled); - } -} - -void CommonInfoModel::setShowGrubEditAuth(const bool enabled) -{ - m_isShowGrubEditAuth = enabled; -} - -void CommonInfoModel::setGrubEditAuthEnabled(const bool enabled) -{ - if (m_grubEditAuthEnabled != enabled) { - m_grubEditAuthEnabled = enabled; - Q_EMIT grubEditAuthEnabledChanged(m_grubEditAuthEnabled); - } -} - -void CommonInfoModel::setDefaultEntry(const QString &entry) -{ - if (m_defaultEntry != entry) { - m_defaultEntry = entry; - Q_EMIT defaultEntryChanged(entry); - } -} - -void CommonInfoModel::setUpdating(bool updating) -{ - if (updating != m_updating) { - m_updating = updating; - Q_EMIT updatingChanged(updating); - } -} - -void CommonInfoModel::setUeProgram(const bool ueProgram) -{ - if (m_joinUeProgram != ueProgram) { - m_joinUeProgram = ueProgram; - } - Q_EMIT ueProgramChanged(m_joinUeProgram); -} - -void CommonInfoModel::setDeveloperModeState(const bool state) -{ - if (m_developerModeState != state) { - m_developerModeState = state; - Q_EMIT developerModeStateChanged(state); - } -} - -void CommonInfoModel::setIsLogin(const bool log) -{ - if (m_isLogin == log) - return; - - m_isLogin = log; - Q_EMIT isLoginChenged(log); -} - -bool CommonInfoModel::bootDelay() const -{ - return m_bootDelay; -} - -void CommonInfoModel::setBootDelay(bool bootDelay) -{ - if (m_bootDelay != bootDelay) { - m_bootDelay = bootDelay; - Q_EMIT bootDelayChanged(bootDelay); - } -} - -void CommonInfoModel::setActivation(bool value) -{ - if (m_activation != value) { - m_activation = value; - Q_EMIT LicenseStateChanged(value); - } -} - -QPixmap CommonInfoModel::background() const -{ - return m_background; -} - -void CommonInfoModel::setBackground(const QPixmap &background) -{ - m_background = background; - - Q_EMIT backgroundChanged(background); -} - -bool CommonInfoModel::ueProgram() const -{ - return m_joinUeProgram; -} - -bool CommonInfoModel::developerModeState() const -{ - return m_developerModeState; -} - -void CommonInfoModel::setPlymouthScale(int scale) -{ - m_plymouthscale = scale; - - Q_EMIT plymouthScaleChanged(scale); -} - -void CommonInfoModel::setPlymouthTheme(const QString &themeName) -{ - m_plymouththeme = themeName; - - Q_EMIT plymouthThemeChanged(themeName); -} diff --git a/dcc-old/src/plugin-commoninfo/operation/commoninfomodel.h b/dcc-old/src/plugin-commoninfo/operation/commoninfomodel.h deleted file mode 100644 index 92c00d18de..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/commoninfomodel.h +++ /dev/null @@ -1,79 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" - -#include -#include - -namespace DCC_NAMESPACE { -class CommonInfoModel : public QObject -{ - Q_OBJECT -public: - explicit CommonInfoModel(QObject *parent = nullptr); - - void setEntryLists(const QStringList &list); - inline QStringList entryLists() const { return m_entryLists;} - inline QString defaultEntry() const { return m_defaultEntry;} - bool bootDelay() const; - inline bool themeEnabled() const { return m_themeEnabled; } - inline bool isShowGrubEditAuth() { return m_isShowGrubEditAuth; } - inline bool grubEditAuthEnabled() { return m_grubEditAuthEnabled; } - inline bool updating() const { return m_updating; } - QPixmap background() const; - void setBackground(const QPixmap &background); - bool ueProgram() const; // for user experience program - bool developerModeState() const; - inline bool isLogin() const { return m_isLogin; } - inline bool isActivate() const { return m_activation; } - void setActivation(bool value); - inline int plymouthScale() const { return m_plymouthscale; } - inline QString plymouthTheme() const { return m_plymouththeme; } - -Q_SIGNALS: - void bootDelayChanged(const bool enabled) const; - void themeEnabledChanged(const bool enabled) const; - void grubEditAuthEnabledChanged(const bool enabled) const; - void entryListsChanged(const QStringList &list); - void defaultEntryChanged(const QString &entry); - void updatingChanged(const bool &updating); - void backgroundChanged(const QPixmap &pixmap); - void ueProgramChanged(const bool enable) const; // for user experience program - void developerModeStateChanged(const bool enable) const; - void isLoginChenged(bool log) const; - void LicenseStateChanged(bool state); - void plymouthScaleChanged(int scale); - void plymouthThemeChanged(const QString &themeName); - -public Q_SLOTS: - void setBootDelay(bool bootDelay); - void setThemeEnabled(const bool enabled); - void setShowGrubEditAuth(const bool enabled); - void setGrubEditAuthEnabled(const bool enabled); - void setDefaultEntry(const QString &entry); - void setUpdating(bool updating); - void setUeProgram(const bool ueProgram); // for user experience program - void setDeveloperModeState(const bool state); - void setIsLogin(const bool log); - void setPlymouthScale(int scale); - void setPlymouthTheme(const QString &themeName); - -private: - bool m_bootDelay; - bool m_themeEnabled; - bool m_isShowGrubEditAuth = false; - bool m_grubEditAuthEnabled = false; - bool m_updating; - QStringList m_entryLists; - QString m_defaultEntry; - QPixmap m_background; - bool m_joinUeProgram; // for user experience program - bool m_developerModeState{false}; // for developer mode state - bool m_isLogin{false}; - bool m_activation; - int m_plymouthscale; - QString m_plymouththeme; -}; -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-commoninfo/operation/commoninfoproxy.cpp b/dcc-old/src/plugin-commoninfo/operation/commoninfoproxy.cpp deleted file mode 100644 index 0de84451ab..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/commoninfoproxy.cpp +++ /dev/null @@ -1,201 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "commoninfoproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include -#include - -const QString &GrubService = QStringLiteral("org.deepin.dde.Grub2"); -const QString &GrubPath = QStringLiteral("/org/deepin/dde/Grub2"); -const QString &GrubInterface = QStringLiteral("org.deepin.dde.Grub2"); - -const QString &GrubThemePath = QStringLiteral("/org/deepin/dde/Grub2/Theme"); -const QString &GrubThemeInterface = QStringLiteral("org.deepin.dde.Grub2.Theme"); - -const QString &GrubEditAuthPath = QStringLiteral("/org/deepin/dde/Grub2/EditAuthentication"); -const QString &GrubEditAuthInterface = QStringLiteral("org.deepin.dde.Grub2.EditAuthentication"); - -const QString &DeepinIdService = QStringLiteral("com.deepin.deepinid"); -const QString &DeepinIdPath = QStringLiteral("/com/deepin/deepinid"); -const QString &DeepinIdInterface = QStringLiteral("com.deepin.deepinid"); - -const QString &LicenseService = QStringLiteral("com.deepin.license"); -const QString &LicensePath = QStringLiteral("/com/deepin/license/Info"); -const QString &LicenseInterface = QStringLiteral("com.deepin.license.Info"); - -const QString &UserexperienceService = QStringLiteral("com.deepin.userexperience.Daemon"); -const QString &UserexperiencePath = QStringLiteral("/com/deepin/userexperience/Daemon"); -const QString &UserexperienceInterface = QStringLiteral("com.deepin.userexperience.Daemon"); - -const QString &NotificationService = QStringLiteral("org.deepin.dde.Notification1"); -const QString &NotificationPath = QStringLiteral("/org/deepin/dde/Notification1"); -const QString &NotificationInterface = QStringLiteral("org.deepin.dde.Notification"); - -const QString &PlyMouthScaleService = QStringLiteral("org.deepin.dde.Daemon1"); -const QString &PlyMouthScalePath = QStringLiteral("/org/deepin/dde/Daemon1"); -const QString &PlyMouthScaleInterface = QStringLiteral("org.deepin.dde.Daemon1"); - -CommonInfoProxy::CommonInfoProxy(QObject *parent) - : QObject(parent) - , m_grubInter(new DDBusInterface(GrubService, GrubPath, GrubInterface, QDBusConnection::systemBus(), this)) - , m_grubThemeInter(new DDBusInterface(GrubService, GrubThemePath, GrubThemeInterface, QDBusConnection::systemBus(), this)) - , m_grubEditAuthInter(new DDBusInterface(GrubService, GrubEditAuthPath, GrubEditAuthInterface, QDBusConnection::systemBus(), this)) - , m_deepinIdInter(new DDBusInterface(DeepinIdService, DeepinIdPath, DeepinIdInterface, QDBusConnection::sessionBus(), this)) - , m_licenseInter(new DDBusInterface(LicenseService, LicensePath, LicenseInterface, QDBusConnection::systemBus(), this)) - , m_userexperienceInter(new DDBusInterface(UserexperienceService, UserexperiencePath, UserexperienceInterface, QDBusConnection::sessionBus(), this)) - , m_notificationInter(new DDBusInterface(NotificationService, NotificationPath, NotificationInterface, QDBusConnection::sessionBus(), this)) - , m_grubScaleInter(new DDBusInterface(PlyMouthScaleService, PlyMouthScalePath, PlyMouthScaleInterface, QDBusConnection::systemBus(), this)) -{ - // in this function, it will wait for 50 seconds finall return - m_grubScaleInter->setTimeout(50000); -} - -bool CommonInfoProxy::IsLogin() -{ - return qvariant_cast(m_deepinIdInter->property("IsLogin")); -} - -bool CommonInfoProxy::DeviceUnlocked() -{ - return qvariant_cast(m_deepinIdInter->property("DeviceUnlocked")); -} - -void CommonInfoProxy::UnlockDevice() -{ - m_deepinIdInter->asyncCall("UnlockDevice"); -} - -void CommonInfoProxy::Login() -{ - m_deepinIdInter->asyncCall("Login"); -} - -QStringList CommonInfoProxy::GetSimpleEntryTitles() -{ - QDBusReply reply = m_grubInter->call(QStringLiteral("GetSimpleEntryTitles")); - if (reply.isValid()) - return reply.value(); - return {}; -} - -bool CommonInfoProxy::EnableTheme() -{ - return qvariant_cast(m_grubInter->property("EnableTheme")); -} - -void CommonInfoProxy::setEnableTheme(const bool value) -{ - QDBusPendingCall call = m_grubInter->asyncCallWithArgumentList("SetEnableTheme", { value }); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - Q_EMIT resetEnableTheme(); - } - watcher->deleteLater(); - }); -} - -bool CommonInfoProxy::Updating() -{ - return qvariant_cast(m_grubInter->property("Updating")); -} - -QString CommonInfoProxy::DefaultEntry() -{ - return qvariant_cast(m_grubInter->property("DefaultEntry")); -} - -void CommonInfoProxy::setDefaultEntry(const QString &entry) -{ - m_grubInter->asyncCallWithArgumentList("SetDefaultEntry", { entry }); -} - -uint CommonInfoProxy::Timeout() -{ - return qvariant_cast(m_grubInter->property("Timeout")); -} - -void CommonInfoProxy::setTimeout(const uint timeout) -{ - m_grubInter->asyncCallWithArgumentList("SetTimeout", { timeout }); -} - -QStringList CommonInfoProxy::EnabledUsers() -{ - return qvariant_cast(m_grubEditAuthInter->property("EnabledUsers")); -} - -void CommonInfoProxy::DisableUser(const QString &username) -{ - QDBusPendingCall call = m_grubEditAuthInter->asyncCallWithArgumentList("Disable", { username }); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - Q_EMIT resetGrubEditAuthEnabled(); - } - watcher->deleteLater(); - }); -} - -void CommonInfoProxy::EnableUser(const QString &username, const QString &password) -{ - QDBusPendingCall call = m_grubEditAuthInter->asyncCallWithArgumentList("Enable", { username, password }); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - Q_EMIT resetGrubEditAuthEnabled(); - } - watcher->deleteLater(); - }); -} - -QDBusPendingCall CommonInfoProxy::SetScalePlymouth(int scale) -{ - return m_grubScaleInter->asyncCallWithArgumentList("ScalePlymouth", { scale }); -} - -QString CommonInfoProxy::Background() -{ - QDBusReply reply = m_grubThemeInter->call(QStringLiteral("GetBackground")); - if (reply.isValid()) - return reply.value(); - return QString(); -} - -void CommonInfoProxy::setBackground(const QString &name) -{ - m_grubThemeInter->asyncCallWithArgumentList("SetBackgroundSourceFile", { name }); -} - -int CommonInfoProxy::AuthorizationState() -{ - return qvariant_cast(m_licenseInter->property("AuthorizationState")); -} - -int CommonInfoProxy::LicenseState() -{ - return qvariant_cast(m_licenseInter->property("LicenseState")); -} - -void CommonInfoProxy::Enable(const bool value) -{ - m_userexperienceInter->asyncCallWithArgumentList("Enable", { value }); -} - -bool CommonInfoProxy::IsEnabled() -{ - QDBusReply reply = m_userexperienceInter->call(QStringLiteral("IsEnabled")); - if (reply.isValid()) - return reply.value(); - return false; -} - -void CommonInfoProxy::Notify(const QString &in0, const uint in1, const QString &in2, const QString &in3, const QString &in4, const QStringList &in5, const QVariantMap &in6, const int in7) -{ - m_notificationInter->asyncCall("Notify", in0, in1, in2, in3, in4, in5, in6, in7); -} diff --git a/dcc-old/src/plugin-commoninfo/operation/commoninfoproxy.h b/dcc-old/src/plugin-commoninfo/operation/commoninfoproxy.h deleted file mode 100644 index 6bf89aebf8..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/commoninfoproxy.h +++ /dev/null @@ -1,100 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include -#include -#include - -using Dtk::Core::DDBusInterface; - -class CommonInfoProxy : public QObject -{ - Q_OBJECT -public: - explicit CommonInfoProxy(QObject *parent = nullptr); - - // deepin id - Q_PROPERTY(bool IsLogin READ IsLogin NOTIFY IsLoginChanged) - bool IsLogin(); - Q_PROPERTY(bool DeviceUnlocked READ DeviceUnlocked NOTIFY DeviceUnlockedChanged) - bool DeviceUnlocked(); - void UnlockDevice(); - void Login(); - - // grub2 - QStringList GetSimpleEntryTitles(); - Q_PROPERTY(bool EnableTheme READ EnableTheme WRITE setEnableTheme NOTIFY EnableThemeChanged) - bool EnableTheme(); - void setEnableTheme(const bool value); - Q_PROPERTY(bool Updating READ Updating NOTIFY UpdatingChanged) - bool Updating(); - Q_PROPERTY(QString DefaultEntry READ DefaultEntry WRITE setDefaultEntry NOTIFY DefaultEntryChanged) - QString DefaultEntry(); - void setDefaultEntry(const QString &entry); - Q_PROPERTY(uint Timeout READ Timeout WRITE setTimeout NOTIFY TimeoutChanged) - uint Timeout(); - void setTimeout(const uint timeout); - // grub2.EditAuth - Q_PROPERTY(QStringList EnabledUsers READ EnabledUsers NOTIFY EnabledUsersChanged) - QStringList EnabledUsers(); - void DisableUser(const QString &username); - void EnableUser(const QString &username, const QString &password); - // grub2.Theme - Q_PROPERTY(QString Background READ Background WRITE setBackground NOTIFY BackgroundChanged) - QString Background(); - void setBackground(const QString &name); - - // license - Q_PROPERTY(int AuthorizationState READ AuthorizationState NOTIFY AuthorizationStateChanged) - int AuthorizationState(); - Q_PROPERTY(int LicenseState READ LicenseState NOTIFY LicenseStateChanged) - int LicenseState(); - - // userexperience - void Enable(const bool value); - bool IsEnabled(); - - // notification - void Notify(const QString &in0, const uint in1, const QString &in2, const QString &in3, const QString &in4, - const QStringList &in5, const QVariantMap &in6, const int in7); - // groubScale - QDBusPendingCall SetScalePlymouth(int scale); - -Q_SIGNALS: // SIGNALS - // deepin id - void IsLoginChanged(const bool value); - void DeviceUnlockedChanged(const bool value); - // grub2 - void EnableThemeChanged(const bool value); - void UpdatingChanged(const bool value); - void DefaultEntryChanged(const QString &entry); - void TimeoutChanged(const uint value); - // grub2.EditAuth - void EnabledUsersChanged(const QStringList &users); - // grub2.Theme - void BackgroundChanged(); - - // license - void AuthorizationStateChanged(const int code); - void LicenseStateChanged(const int code); - - void DeepinIdError(const int code, const QString &msg); - - // reset signals - void resetEnableTheme(); - void resetGrubEditAuthEnabled(); - -private: - DDBusInterface *m_grubInter; - DDBusInterface *m_grubThemeInter; - DDBusInterface *m_grubEditAuthInter; - DDBusInterface *m_deepinIdInter; - DDBusInterface *m_licenseInter; - DDBusInterface *m_userexperienceInter; - DDBusInterface *m_notificationInter; - DDBusInterface *m_grubScaleInter; -}; diff --git a/dcc-old/src/plugin-commoninfo/operation/commoninfowork.cpp b/dcc-old/src/plugin-commoninfo/operation/commoninfowork.cpp deleted file mode 100644 index 14df7d8525..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/commoninfowork.cpp +++ /dev/null @@ -1,421 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "commoninfowork.h" -#include "commoninfomodel.h" -#include "commoninfoproxy.h" -#include "widgets/utils.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -Q_LOGGING_CATEGORY(DccCommonInfoWork, "dcc-commoninfo-work"); - -std::mutex SCALE_SETTING_GUARD; - -static const QString PlyMouthConf = QStringLiteral("/etc/plymouth/plymouthd.conf"); - -using namespace DCC_NAMESPACE; - -const QString &GRUB_EDIT_AUTH_ACCOUNT("root"); - -const QStringList &SYSTEM_LOCAL_LIST { - "zh_CN", - "zh_HK", - "zh_TW", - "ug_CN", // 维语 - "bo_CN" // 藏语 -}; - -const QMap &SYSTEM_LOCAL_MAP { - {"zh_CN", "zh_CN"}, - {"zh_HK", "zh_HK"}, - {"zh_TW", "zh_TW"}, -}; - -static const QString getLicensePath(const QString &filePath, const QString &type) -{ - const QString& locale { QLocale::system().name() }; - QString lang = SYSTEM_LOCAL_LIST.contains(locale) ? locale : "en_US"; - - QString path = QString(filePath).arg(lang).arg(type); - if (QFile(path).exists()) - return path; - else - return QString(filePath).arg("en_US").arg(type); - -} - -static QString getUserExpContent() -{ - QString userExpContent = getLicensePath("/usr/share/protocol/userexperience-agreement/User-Experience-Program-License-Agreement-CN-%1.md", ""); - if (DSysInfo::isCommunityEdition()) { - userExpContent = getLicensePath("/usr/share/deepin-deepinid-client/privacy/User-Experience-Program-License-Agreement-Community/User-Experience-Program-License-Agreement-CN-%1.md", ""); - return userExpContent; - } - QFile newfile(userExpContent); - if (false == newfile.exists()) { - userExpContent = getLicensePath("/usr/share/deepin-deepinid-client/privacy/User-Experience-Program-License-Agreement/User-Experience-Program-License-Agreement-CN-%1.md", ""); - QFile file(userExpContent); - if (false == file.exists()) { - userExpContent = getLicensePath("/usr/share/deepin-deepinid-client/privacy/User-Experience-Program-License-Agreement-%1.md", ""); - } - } - return userExpContent; -} - -static const QString getDevelopModeLicense(const QString &filePath, const QString &type) -{ - const QString& locale { QLocale::system().name() }; - QString lang; - if (SYSTEM_LOCAL_MAP.keys().contains(locale)) { - lang = { SYSTEM_LOCAL_MAP.value(QLocale::system().name(), "en_US") }; - } - - if (lang.isEmpty()) { - lang = { SYSTEM_LOCAL_MAP.value(QLocale::system().name(), "en_US") }; - } - - QString path = QString(filePath).arg(lang).arg(type); - QFile license(path); - if (!license.open(QIODevice::ReadOnly)) - return QString(); - - const QByteArray buf = license.readAll(); - license.close(); - - return buf; -} - -static void notifyInfo(const QString &summary) -{ - DUtil::DNotifySender(summary) - .appIcon("dde-control-center") - .appName(QObject::tr("dde-control-center")) - .timeOut(5000) - .call(); -} - -static void notifyInfoWithBody(const QString &summary, const QString &body) -{ - DUtil::DNotifySender(summary) - .appIcon("dde-control-center") - .appName(QObject::tr("dde-control-center")) - .appBody(body) - .timeOut(5000) - .call(); -} - -CommonInfoWork::CommonInfoWork(CommonInfoModel *model, QObject *parent) - : QObject(parent) - , m_commomModel(model) - , m_commonInfoProxy(new CommonInfoProxy(this)) - , m_title("") - , m_content("") - , m_scaleIsSetting(false) -{ - //监听开发者在线认证失败的错误接口信息 - connect(m_commonInfoProxy, &CommonInfoProxy::DeepinIdError, this, &CommonInfoWork::deepinIdErrorSlot); - connect(m_commonInfoProxy, &CommonInfoProxy::IsLoginChanged, m_commomModel, &CommonInfoModel::setIsLogin); - connect(m_commonInfoProxy, &CommonInfoProxy::DeviceUnlockedChanged, m_commomModel, &CommonInfoModel::setDeveloperModeState); - connect(m_commonInfoProxy, &CommonInfoProxy::DefaultEntryChanged, m_commomModel, &CommonInfoModel::setDefaultEntry); - connect(m_commonInfoProxy, &CommonInfoProxy::EnableThemeChanged, m_commomModel, &CommonInfoModel::setThemeEnabled); - connect(m_commonInfoProxy, &CommonInfoProxy::TimeoutChanged, m_commomModel, [this] (const uint timeout) { - m_commomModel->setBootDelay(timeout > 1); - }); - connect(m_commonInfoProxy, &CommonInfoProxy::UpdatingChanged, m_commomModel, &CommonInfoModel::setUpdating); - connect(m_commonInfoProxy, &CommonInfoProxy::BackgroundChanged, m_commomModel, [this] () { - QPixmap pix = QPixmap(m_commonInfoProxy->Background()); - m_commomModel->setBackground(pix); - }); - connect(m_commonInfoProxy, &CommonInfoProxy::EnabledUsersChanged, m_commomModel, [this] (const QStringList &users) { - m_commomModel->setGrubEditAuthEnabled(users.contains(GRUB_EDIT_AUTH_ACCOUNT)); - }); - connect(m_commonInfoProxy, &CommonInfoProxy::AuthorizationStateChanged, m_commomModel, [this] (const int code) { - m_commomModel->setActivation(code == 1 || code == 3); - }); - - connect(m_commonInfoProxy, &CommonInfoProxy::resetEnableTheme, this, [=](){ - m_commomModel->themeEnabledChanged(m_commomModel->themeEnabled()); - }); - - connect(m_commonInfoProxy, &CommonInfoProxy::resetGrubEditAuthEnabled, this, [=](){ - m_commomModel->grubEditAuthEnabledChanged(m_commomModel->grubEditAuthEnabled()); - }); -} - -CommonInfoWork::~CommonInfoWork() -{ - if (m_process) { - //如果控制中心被强制关闭,需要用kill来杀掉没有被关闭的窗口 - kill(static_cast<__pid_t>(m_process->processId()), 15); - m_process->deleteLater(); - m_process = nullptr; - } -} - -void CommonInfoWork::active() -{ - m_commomModel->setShowGrubEditAuth(true); - m_commomModel->setIsLogin(m_commonInfoProxy->IsLogin()); - m_commomModel->setDeveloperModeState(m_commonInfoProxy->DeviceUnlocked()); - m_commomModel->setThemeEnabled(m_commonInfoProxy->EnableTheme()); - m_commomModel->setBootDelay(m_commonInfoProxy->Timeout() > 1); - m_commomModel->setGrubEditAuthEnabled(m_commonInfoProxy->EnabledUsers().contains(GRUB_EDIT_AUTH_ACCOUNT)); - m_commomModel->setUpdating(m_commonInfoProxy->Updating()); - auto [factor, themeName] = getPlyMouthInformation(); - m_commomModel->setPlymouthScale(factor); - m_commomModel->setPlymouthTheme(themeName); - auto AuthorizationState = m_commonInfoProxy->AuthorizationState(); - m_commomModel->setActivation(AuthorizationState == 1 || AuthorizationState == 3); - m_commomModel->setUeProgram(m_commonInfoProxy->IsEnabled()); - m_commomModel->setEntryLists(m_commonInfoProxy->GetSimpleEntryTitles()); - m_commomModel->setDefaultEntry(m_commonInfoProxy->DefaultEntry()); - - QPixmap pix = QPixmap(m_commonInfoProxy->Background()); - m_commomModel->setBackground(pix); -} - -void CommonInfoWork::setBootDelay(bool value) -{ - qDebug()<<" CommonInfoWork::setBootDelay value = "<< value; - m_commonInfoProxy->setTimeout(value ? 5 : 1); -} - -void CommonInfoWork::setEnableTheme(bool value) -{ - m_commonInfoProxy->setEnableTheme(value); -} - -void CommonInfoWork::disableGrubEditAuth() -{ - m_commonInfoProxy->DisableUser(GRUB_EDIT_AUTH_ACCOUNT); -} - -void CommonInfoWork::onSetGrubEditPasswd(const QString &password, const bool &isReset) -{ - Q_UNUSED(isReset); - // 密码加密后发送到后端存储 - m_commonInfoProxy->EnableUser(GRUB_EDIT_AUTH_ACCOUNT, passwdEncrypt(password)); -} - -void CommonInfoWork::setDefaultEntry(const QString &entry) -{ - m_commonInfoProxy->setDefaultEntry(entry); -} - -void CommonInfoWork::setBackground(const QString &path) -{ - m_commonInfoProxy->setBackground(path); -} - -void CommonInfoWork::setUeProgram(bool enabled) -{ - QString current_date = QDateTime::currentDateTime().toString("yyyy-MM-dd hh:mm::ss.zzz"); - if (enabled) { - qInfo("suser opened experience project switch."); - // 打开license-dialog必要的三个参数:标题、license文件路径、checkBtn的Text - QString allowContent(tr("Agree and Join User Experience Program")); - - // license路径 - m_content = getUserExpContent(); - - m_process = new QProcess(this); - - auto pathType = "-c"; - if (!SYSTEM_LOCAL_LIST.contains(QLocale::system().name())) - pathType = "-e"; - m_process->start("dde-license-dialog", - QStringList() << "-t" << m_title << pathType << m_content << "-a" << allowContent); - qDebug()<<" Deliver content QStringList() = "<<"dde-license-dialog" - << "-t" << m_title << pathType << m_content << "-a" << allowContent; - connect(m_process, static_cast(&QProcess::finished), this, [=](int result) { - if (96 == result) { - m_commonInfoProxy->Enable(enabled); - m_commomModel->setUeProgram(enabled); - } else { - m_commomModel->setUeProgram(!enabled); - qInfo() << QString("On %1, users cancel the switch to join the user experience program!").arg(current_date); - } - m_process->deleteLater(); - m_process = nullptr; - }); - } else { - m_commonInfoProxy->Enable(enabled); - m_commomModel->setUeProgram(enabled); - } -} - -void CommonInfoWork::closeUeProgram() -{ - if (m_process) { - m_process->kill(); - } -} - -void CommonInfoWork::setEnableDeveloperMode(bool enabled) -{ - QDateTime current_date_time = QDateTime::currentDateTime(); - QString current_date = current_date_time.toString("yyyy-MM-dd hh:mm::ss.zzz"); - - if (!enabled) - return; - // 打开license-dialog必要的三个参数:标题、license文件路径、checkBtn的Text - QString title(tr("The Disclaimer of Developer Mode")); - QString allowContent(tr("Agree and Request Root Access")); - - // license内容 - QString content = getDevelopModeLicense(":/systeminfo/license/deepin-end-user-license-agreement_developer_community_%1.txt", ""); - QString contentPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation).append("tmpDeveloperMode.txt");// 临时存储路径 - QFile *contentFile = new QFile(contentPath); - // 如果文件不存在,则创建文件 - if (!contentFile->exists()) { - contentFile->open(QIODevice::WriteOnly); - contentFile->close(); - } - // 写入文件内容 - if (!contentFile->open(QFile::ReadWrite | QIODevice::Text | QIODevice::Truncate)) - return; - contentFile->write(content.toLocal8Bit()); - contentFile->close(); - - auto pathType = "-c"; - QStringList sl; - sl << "zh_CN" << "zh_TW"; - if (!sl.contains(QLocale::system().name())) - pathType = "-e"; - - m_process = new QProcess(this); - m_process->start("dde-license-dialog", QStringList() << "-t" << title << pathType << contentPath << "-a" << allowContent); - - connect(m_process, static_cast(&QProcess::finished), this, [=](int result) { - if (96 == result) { - m_commonInfoProxy->UnlockDevice(); - } else { - qInfo() << QString("On %1, Remove developer mode Disclaimer!").arg(current_date); - } - contentFile->remove(); - contentFile->deleteLater(); - m_process->deleteLater(); - m_process = nullptr; - }); -} - -void CommonInfoWork::login() -{ - m_commonInfoProxy->Login(); -} - -QString CommonInfoWork::passwdEncrypt(const QString &password) -{ - const QString &pbkdf2_cmd(R"(echo -e "%1\n%2\n"| grub-mkpasswd-pbkdf2 | grep PBKDF2 | awk '{print $4}')"); - QProcess pbkdf2; - pbkdf2.start("bash", {"-c", pbkdf2_cmd.arg(password).arg(password)}); - pbkdf2.waitForFinished(); - QString pwdOut = pbkdf2.readAllStandardOutput(); - pwdOut[pwdOut.length() - 1] = '\0'; - return pwdOut; -} - -std::pair CommonInfoWork::getPlyMouthInformation() -{ - QSettings settings(PlyMouthConf, QSettings::IniFormat); - - QString themeName = settings.value("Daemon/Theme").toString(); - - static QStringList ScaleLowDpiThemeNames = {"deepin-logo", "deepin-ssd-logo", "uos-ssd-logo"}; - static QStringList ScaleHighDpiThemeNames = {"deepin-hidpi-logo", "deepin-hidpi-ssd-logo", "uos-hidpi-ssd-logo"}; - if (ScaleLowDpiThemeNames.contains(themeName)) { - return {1, themeName}; - } else if (ScaleHighDpiThemeNames.contains(themeName)) { - return {2, themeName}; - } - - return {0, QString()}; -} - -void CommonInfoWork::deepinIdErrorSlot(int code, const QString &msg) -{ - Q_UNUSED(code); - - //初始化Notify 七个参数 - QString in0(QObject::tr("dde-control-center")); - uint in1 = 101; - QString in2("preferences-system"); - QString in3(""); - QString in4(""); - QStringList in5; - QVariantMap in6; - int in7 = 5000; - - //截取error接口 1001:未导入证书 1002:未登录 1003:无法获取硬件信息 1004:网络异常 1005:证书加载失败 1006:签名验证失败 1007:文件保存失败 - QString msgcode = msg; - msgcode = msgcode.split(":").at(0); - if (msgcode == "1001") { - in3 = tr("Failed to get root access"); - } else if (msgcode == "1002") { - in3 = tr("Please sign in to your Union ID first"); - } else if (msgcode == "1003") { - in3 = tr("Cannot read your PC information"); - } else if (msgcode == "1004") { - in3 = tr("No network connection"); - } else if (msgcode == "1005") { - in3 = tr("Certificate loading failed, unable to get root access"); - } else if (msgcode == "1006") { - in3 = tr("Signature verification failed, unable to get root access"); - } else if (msgcode == "1007") { - in3 = tr("Failed to get root access"); - } - //系统通知 认证失败 无法进入开发模式 - m_commonInfoProxy->Notify(in0, in1, in2, in3, in4, in5, in6, in7); -} - -void CommonInfoWork::setPlymouthFactor(int factor) -{ - if (factor == m_commomModel->plymouthScale()) { - return; - } - if (m_scaleIsSetting) { - return; - } - std::lock_guard guard(SCALE_SETTING_GUARD); - m_scaleIsSetting = true; - QDBusPendingCall call = m_commonInfoProxy->SetScalePlymouth(factor); - notifyInfo(tr("Start setting the new boot animation, please wait for a minute")); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher, call] { - if (call.isError()) { - qCWarning(DccCommonInfoWork) << "DBus Error: " << call.error(); - } - auto [factor, themeName] = getPlyMouthInformation(); - m_commomModel->setPlymouthTheme(themeName); - m_commomModel->setPlymouthScale(factor); - notifyInfoWithBody(tr("Setting new boot animation finished"), - tr("The settings will be applied after rebooting the system")); - m_scaleIsSetting = false; - watcher->deleteLater(); - Q_EMIT settingScaling(false); - }); - Q_EMIT settingScaling(true); -} - -QPixmap CommonInfoWork::getPlymouthFilePixmap() -{ - QString theme = m_commomModel->plymouthTheme(); - - static QString ThemePath = "/usr/share/plymouth/themes"; - - QString logoPath = ThemePath + QDir::separator() + theme + QDir::separator() + "logo.png"; - - return QPixmap(logoPath); -} diff --git a/dcc-old/src/plugin-commoninfo/operation/commoninfowork.h b/dcc-old/src/plugin-commoninfo/operation/commoninfowork.h deleted file mode 100644 index 8cfd7da99e..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/commoninfowork.h +++ /dev/null @@ -1,56 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" - -#include - -class QProcess; -class CommonInfoProxy; - -namespace DCC_NAMESPACE { - -class CommonInfoModel; - -class CommonInfoWork : public QObject -{ - Q_OBJECT -public: - explicit CommonInfoWork(CommonInfoModel *model, QObject *parent = nullptr); - virtual ~CommonInfoWork(); - - void active(); - QPixmap getPlymouthFilePixmap(); - bool isSettingPlymouth() { return m_scaleIsSetting; } - -public Q_SLOTS: - void setBootDelay(bool value); - void setEnableTheme(bool value); - void setDefaultEntry(const QString &entry); - void disableGrubEditAuth(); - void onSetGrubEditPasswd(const QString &password, const bool &isReset); - void setBackground(const QString &path); - void setUeProgram(bool enabled); - void closeUeProgram(); - void setEnableDeveloperMode(bool enabled); - void login(); - void deepinIdErrorSlot(int code, const QString &msg); - void setPlymouthFactor(int factor); - -Q_SIGNALS: - void settingScaling(bool); - -private: - QString passwdEncrypt(const QString &password); - std::pair getPlyMouthInformation(); - -private: - CommonInfoModel *m_commomModel; - CommonInfoProxy *m_commonInfoProxy; - QProcess *m_process = nullptr; - QString m_title; - QString m_content; - bool m_scaleIsSetting; -}; -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-commoninfo/operation/qrc/commoninfo.qrc b/dcc-old/src/plugin-commoninfo/operation/qrc/commoninfo.qrc deleted file mode 100644 index 2e37b8fe79..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/qrc/commoninfo.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - icons/dcc_nav_commoninfo_42px.svg - icons/dcc_nav_commoninfo_84px.svg - - diff --git a/dcc-old/src/plugin-commoninfo/operation/qrc/icons/dcc_nav_commoninfo_42px.svg b/dcc-old/src/plugin-commoninfo/operation/qrc/icons/dcc_nav_commoninfo_42px.svg deleted file mode 100644 index 2cab53d7d2..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/qrc/icons/dcc_nav_commoninfo_42px.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - dcc_nav_commoninfo_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-commoninfo/operation/qrc/icons/dcc_nav_commoninfo_84px.svg b/dcc-old/src/plugin-commoninfo/operation/qrc/icons/dcc_nav_commoninfo_84px.svg deleted file mode 100644 index 93698a3275..0000000000 --- a/dcc-old/src/plugin-commoninfo/operation/qrc/icons/dcc_nav_commoninfo_84px.svg +++ /dev/null @@ -1,42 +0,0 @@ - - - dcc_nav_commoninfo_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-commoninfo/window/CommonInfoPlugin.json b/dcc-old/src/plugin-commoninfo/window/CommonInfoPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/CommonInfoPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-commoninfo/window/bootwidget.cpp b/dcc-old/src/plugin-commoninfo/window/bootwidget.cpp deleted file mode 100644 index 92e8e69a7a..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/bootwidget.cpp +++ /dev/null @@ -1,435 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "bootwidget.h" -#include "commonbackgrounditem.h" - -#include "pwqualitymanager.h" -#include "src/plugin-commoninfo/operation/commoninfomodel.h" -#include "src/frame/utils.h" - -#include "widgets/switchwidget.h" -#include "widgets/settingsgroup.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -Q_LOGGING_CATEGORY(DccCommonInfoBoot, "dcc-commoninfo-bootwidget"); - -Q_DECLARE_METATYPE(QMargins) - -const QMargins ListViewItemMargin(10, 8, 10, 8); -const QVariant VListViewItemMargin = QVariant::fromValue(ListViewItemMargin); - -constexpr static int LISTVIEW_ITEM_SPACING = 3; -constexpr static int LISTVIEW_ITEM_HEIGHT = 32; -constexpr static int LISTVIEW_ITEM_HEIGHT_WITH_SPACING = LISTVIEW_ITEM_SPACING + LISTVIEW_ITEM_HEIGHT; -constexpr static int LISTVIEW_MAX_HEIGHT = 350; -constexpr static int MAX_BACKGROUND_HEIGHT = LISTVIEW_MAX_HEIGHT + LISTVIEW_ITEM_HEIGHT_WITH_SPACING; - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE - -BootWidget::BootWidget(QWidget *parent) - : QWidget(parent) - , m_isCommoninfoBootWallpaperConfigValid(!QSysInfo::currentCpuArchitecture().contains("arm")) -{ - QVBoxLayout *layout = new QVBoxLayout; - setLayout(layout); - SettingsGroup *groupOther = new SettingsGroup; - groupOther->getLayout()->setContentsMargins(0, 0, 0, 0); - - m_listLayout = new QVBoxLayout; - m_listLayout->addSpacing(10); - m_listLayout->setMargin(0); - - m_bootList = new CommonInfoListView(this); - m_bootList->setAccessibleName("List_bootlist"); - m_bootList->setAutoScroll(false); - m_bootList->setFrameShape(QFrame::NoFrame); - m_bootList->setDragDropMode(QListView::DragDrop); - m_bootList->setDefaultDropAction(Qt::MoveAction); - m_bootList->setAutoFillBackground(false); - m_bootList->setDragEnabled(false); - m_bootList->verticalScrollBar()->setContextMenuPolicy(Qt::NoContextMenu); - m_bootList->setSelectionMode(DListView::NoSelection); - m_bootList->setEditTriggers(QAbstractItemView::NoEditTriggers); - m_bootList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_bootList->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - m_bootList->setMinimumWidth(240); - m_bootList->setItemSpacing(LISTVIEW_ITEM_SPACING); - - QSize itemSize = m_bootList->itemSize(); - itemSize.setHeight(LISTVIEW_ITEM_HEIGHT); - m_bootList->setItemSize(itemSize); - - m_bootList->setMaxShowHeight(LISTVIEW_MAX_HEIGHT); - m_bootList->setWordWrap(true); - - DPalette dp = DPaletteHelper::instance()->palette(m_bootList); - dp.setColor(DPalette::Text, QColor(255, 255, 255)); - DPaletteHelper::instance()->setPalette(m_bootList, dp); - - m_updatingLabel = new QLabel(tr("Updating..."), this); - m_updatingLabel->setVisible(false); - - DPalette dpLabel = DPaletteHelper::instance()->palette(m_updatingLabel); - dpLabel.setColor(DPalette::Text, QColor(255, 255, 255)); - DPaletteHelper::instance()->setPalette(m_updatingLabel, dpLabel); - m_listLayout->addWidget(m_updatingLabel, 0, Qt::AlignHCenter | Qt::AlignBottom); - - m_background = new CommonBackgroundItem(this); - m_background->setLayout(m_listLayout); - - m_bootDelay = new SwitchWidget(this); - m_bootDelay->setTitle(tr("Startup Delay")); - m_theme = new SwitchWidget(this); - m_theme->setTitle(tr("Theme")); - - QMap mapBackgroundMessage; - mapBackgroundMessage[true] = tr("Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background"); - mapBackgroundMessage[false] = tr("Click the option in boot menu to set it as the first boot"); - DTipLabel *backgroundLabel = new DTipLabel(mapBackgroundMessage[false], this); - backgroundLabel->setText(mapBackgroundMessage[true]); - backgroundLabel->setWordWrap(true); - backgroundLabel->setContentsMargins(0, 0, 0, 0); - backgroundLabel->setAlignment(Qt::AlignLeft); - m_themeLbl = new DTipLabel(tr("Switch theme on to view it in boot menu"), this); - m_themeLbl->setAccessibleName("themeLbl"); - m_themeLbl->setWordWrap(true); - m_themeLbl->setContentsMargins(0, 0, 0, 0); - m_themeLbl->setAlignment(Qt::AlignLeft); - groupOther->appendItem(m_bootDelay); - groupOther->setSpacing(10); - groupOther->appendItem(m_theme); - groupOther->setSpacing(10); - layout->setMargin(0); - layout->addSpacing(10); - layout->addWidget(m_background); - layout->addSpacing(10); - layout->addWidget(backgroundLabel); - layout->addSpacing(10); - layout->addWidget(groupOther); - layout->addWidget(m_themeLbl); - - if (!m_isCommoninfoBootWallpaperConfigValid) { - m_theme->setVisible(false); - m_themeLbl->setVisible(false); - } - - m_grubVerification = new SwitchWidget(this); - m_grubVerification->setTitle(tr("GRUB Authentication")); - m_grubVerification->addBackground(); - layout->addSpacing(10); - layout->addWidget(m_grubVerification); - - m_grubVerifyLbl = new DTipLabel(tr("GRUB password is required to edit its configuration"), this); - m_grubVerifyLbl->setAccessibleName("grubVerifyLbl"); - m_grubVerifyLbl->setWordWrap(true); - m_grubVerifyLbl->setAlignment(Qt::AlignLeft); - QHBoxLayout *hLayout = new QHBoxLayout; - layout->addLayout(hLayout); - hLayout->addWidget(m_grubVerifyLbl, 1); - m_grubModifyPasswdLink = new DCommandLinkButton(tr("Change Password"), this); - m_grubModifyPasswdLink->hide(); - hLayout->addWidget(m_grubModifyPasswdLink, 0); - hLayout->setContentsMargins(0, 0, 0, 0); - layout->addStretch(); - layout->setContentsMargins(0, 10, 0, 10); - setWindowTitle(tr("Boot Menu")); - - if (IS_COMMUNITY_SYSTEM) { - m_grubVerification->hide(); - m_grubVerifyLbl->hide(); - } - - connect(m_theme, &SwitchWidget::checkedChanged, this, &BootWidget::enableTheme); - connect(m_bootDelay, &SwitchWidget::checkedChanged, this, &BootWidget::bootdelay); - connect(m_bootList, &DListView::clicked, this ,&BootWidget::onCurrentItem); - connect(m_background, &CommonBackgroundItem::requestEnableTheme, this, &BootWidget::enableTheme); - connect(m_background, &CommonBackgroundItem::requestSetBackground, this, &BootWidget::requestSetBackground); - - m_background->setThemeEnable(m_isCommoninfoBootWallpaperConfigValid); - backgroundLabel->setText(mapBackgroundMessage[m_isCommoninfoBootWallpaperConfigValid]); - // 修改grub密码 - connect(m_grubVerification, &SwitchWidget::checkedChanged, this, &BootWidget::enableGrubEditAuth); - connect(m_grubModifyPasswdLink, &DCommandLinkButton::clicked, this, [this]{ - showGrubEditAuthPasswdDialog(true); - }); -} - -BootWidget::~BootWidget() -{ -} - -void BootWidget::setDefaultEntry(const QString &value) -{ - m_defaultEntry = value; - - blockSignals(true); - int row_count = m_bootItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - QStandardItem *item = m_bootItemModel->item(i, 0); - if (item->text() == value) { - m_curSelectedIndex = item->index(); - item->setCheckState(Qt::CheckState::Checked); - } else { - item->setCheckState(Qt::CheckState::Unchecked); - } - } - blockSignals(false); -} - -void BootWidget::setModel(CommonInfoModel *model) -{ - m_commonInfoModel = model; - - connect(model, &CommonInfoModel::bootDelayChanged, m_bootDelay, &SwitchWidget::setChecked); - connect(model, &CommonInfoModel::themeEnabledChanged, m_theme, &SwitchWidget::setChecked); - connect(model, &CommonInfoModel::defaultEntryChanged, this, &BootWidget::setDefaultEntry); - connect(model, &CommonInfoModel::updatingChanged, m_updatingLabel, &QLabel::setVisible); - connect(model, &CommonInfoModel::entryListsChanged, this, &BootWidget::setEntryList); - connect(model, &CommonInfoModel::themeEnabledChanged, this, [&](const bool _t1) { - if (m_isCommoninfoBootWallpaperConfigValid) { - m_background->setThemeEnable(_t1); - m_background->updateBackground(m_commonInfoModel->background()); - } - }); - connect(model, &CommonInfoModel::backgroundChanged, m_background, &CommonBackgroundItem::updateBackground); - - // modified by wuchuanfei 20190909 for 8613 - m_bootDelay->setChecked(model->bootDelay()); - m_theme->setChecked(model->themeEnabled()); - m_updatingLabel->setVisible(model->updating()); - m_background->setThemeEnable(model->themeEnabled() && m_isCommoninfoBootWallpaperConfigValid); - - setEntryList(model->entryLists()); - setDefaultEntry(model->defaultEntry()); - - if(m_isCommoninfoBootWallpaperConfigValid) - m_background->updateBackground(model->background()); - - m_grubVerification->setChecked(m_commonInfoModel->grubEditAuthEnabled()); - m_grubModifyPasswdLink->setVisible(m_commonInfoModel->isShowGrubEditAuth() && m_grubVerification->checked()); - connect(model, &CommonInfoModel::grubEditAuthEnabledChanged, this, [&](const bool &value) { - // from CommonInfoWork::onEnabledUsersChanged - m_grubVerification->setChecked(value); - m_grubModifyPasswdLink->setVisible(m_commonInfoModel->isShowGrubEditAuth() && value); - }); - - connect(m_grubVerification, &SwitchWidget::checkedChanged, this, [&](const bool &value){ - Q_UNUSED(value); - m_grubModifyPasswdLink->setVisible(m_commonInfoModel->isShowGrubEditAuth() && m_grubVerification->checked()); - }); -} - -void BootWidget::setEntryList(const QStringList &list) -{ - m_bootItemModel = new QStandardItemModel(this); - m_bootList->setModel(m_bootItemModel); - - for (int i = 0; i < list.count(); i++) { - const QString entry = list.at(i); - - DStandardItem *item = new DStandardItem(); - item->setText(entry); - item->setCheckable(false); // for Bug 2449 - item->setData(VListViewItemMargin, Dtk::MarginsRole); - - m_bootItemModel->appendRow(item); - - if (m_defaultEntry == entry) { - m_curSelectedIndex = item->index(); - item->setCheckState(Qt::CheckState::Checked); - } else { - item->setCheckState(Qt::CheckState::Unchecked); - } - } - - setBootList(); -} - -void BootWidget::setBootList() -{ - int cout = m_bootList->count(); - int height = (cout + 2) * LISTVIEW_ITEM_HEIGHT; - - m_listLayout->addWidget(m_bootList, Qt::AlignCenter); - m_listLayout->addSpacing(15); - m_background->setFixedHeight(std::min(height + LISTVIEW_ITEM_HEIGHT , MAX_BACKGROUND_HEIGHT)); -} - -void BootWidget::onCurrentItem(const QModelIndex &curIndex) -{ - QString curText = curIndex.data().toString(); - if (curText.isEmpty()) - return; - - // 获取当前被选项 - QString selectedText = m_curSelectedIndex.data().toString(); - - qCDebug(DccCommonInfoBoot) << "current text" << curText << "selectedText" << selectedText; - // NOTE: If the type of current selected boot entry is submenu whitch is not shown in current boot list, do not care, and do the set action - if (curText != selectedText) { - qCInfo(DccCommonInfoBoot) << "start to set first menu to "<< curText; - Q_EMIT defaultEntry(curText); - } -} - -void BootWidget::onGrubEditAuthCancel(bool toEnable) -{ - m_grubVerification->setChecked(toEnable); - m_grubModifyPasswdLink->setVisible(m_commonInfoModel->isShowGrubEditAuth() && toEnable); -} - -void BootWidget::setGrubEditAuthVisible(bool show) -{ - if (!show) { - m_grubModifyPasswdLink->hide(); - } - bool isShow = (!IS_COMMUNITY_SYSTEM) && show; - m_grubVerifyLbl->setVisible(isShow); - m_grubVerification->setVisible(isShow); -} - -void BootWidget::showGrubEditAuthPasswdDialog(bool isReset) -{ - if (m_grubEditAuthDialog) { - return; - } - m_grubEditAuthDialog = new DDialog(tr("Change GRUB password"), nullptr, nullptr); - m_grubEditAuthDialog->setIcon(DStyle().standardIcon(DStyle::SP_MessageBoxWarning)); - // 需要重新布局 - DWidget *widget = new DWidget; - QGridLayout *grid = new QGridLayout(widget); - DLabel *usernameLabel = new DLabel(tr("Username:")); - DLabel *rootLabel = new DLabel(tr("root")); - DLabel *label1 = new DLabel(tr("New password:")); - DLabel *label2 = new DLabel(tr("Repeat password:")); - DPasswordEdit *edit1 = new DPasswordEdit(); - DPasswordEdit *edit2 = new DPasswordEdit(); - edit1->setPlaceholderText(tr("Required")); - edit2->setPlaceholderText(tr("Required")); - edit1->setCutEnabled(false); - edit1->setCopyEnabled(false); - edit2->setCutEnabled(false); - edit2->setCopyEnabled(false); - grid->addWidget(usernameLabel, 0, 0, 1, 1); - grid->addWidget(rootLabel, 0, 1, 1, 1); - grid->addWidget(label1, 1, 0, 1, 1); - grid->addWidget(edit1, 1, 1, 1, 1); - grid->addWidget(label2, 2, 0, 1, 1); - grid->addWidget(edit2, 2, 1, 1, 1); - grid->setRowMinimumHeight(0, 40); - grid->setMargin(0); - m_grubEditAuthDialog->addContent(widget); - m_grubEditAuthDialog->addButton(tr("Cancel", "button"), false, DDialog::ButtonNormal); - m_grubEditAuthDialog->addButton(tr("Confirm", "button"), true, DDialog::ButtonRecommend); - - QList buttons = m_grubEditAuthDialog->getButtons(); - buttons[1]->setEnabled(false); - - QObject::connect(edit1, &DPasswordEdit::textChanged, [edit1, edit2, buttons](const QString &text){ - if (text.isEmpty()) { - buttons[1]->setEnabled(false); - if (!edit2->text().isEmpty()) { - edit1->setAlert(true); - edit1->showAlertMessage(tr("Password cannot be empty")); - } - return; - } - // "root" 是设置/修改 grub 密码默认的账户, 同 GRUB_EDIT_AUTH_ACCOUNT - PwqualityManager::ERROR_TYPE error = PwqualityManager::instance()->verifyPassword("", edit1->lineEdit()->text(), PwqualityManager::CheckType::Grub2); - if (error != PwqualityManager::ERROR_TYPE::PW_NO_ERR) { - edit1->showAlertMessage(PwqualityManager::instance()->getErrorTips(error, PwqualityManager::CheckType::Grub2)); - buttons[1]->setEnabled(false); - edit1->setAlert(true); - } else { - if (!edit2->text().isEmpty() && text != edit2->text()) { - edit1->setAlert(true); - edit1->showAlertMessage(tr("Passwords do not match")); - } - bool isAlert = text != edit2->text() && !edit2->text().isEmpty(); - if (!isAlert) { - edit1->hideAlertMessage(); - edit2->hideAlertMessage(); - edit2->setAlert(false); - } - edit1->setAlert(isAlert); - buttons[1]->setEnabled(!isAlert && text == edit2->text()); - } - }); - QObject::connect(edit2, &DPasswordEdit::textChanged, [edit1, edit2, buttons](const QString &text){ - if (text.isEmpty()) { - buttons[1]->setEnabled(false); - if (!edit1->text().isEmpty()) { - edit2->setAlert(true); - edit2->showAlertMessage(tr("Password cannot be empty")); - } - return; - } - PwqualityManager::ERROR_TYPE error = PwqualityManager::instance()->verifyPassword("", text, PwqualityManager::CheckType::Grub2); - if (error != PwqualityManager::ERROR_TYPE::PW_NO_ERR) { - edit2->showAlertMessage(PwqualityManager::instance()->getErrorTips(error, PwqualityManager::CheckType::Grub2)); - buttons[1]->setEnabled(false); - edit2->setAlert(true); - return; - } - - if (text != edit1->text()) { - edit2->showAlertMessage(tr("Passwords do not match")); - } - - bool isValid = !edit1->text().isEmpty() && text == edit1->text(); - edit2->setAlert(!isValid); - if (isValid) { - edit1->hideAlertMessage(); - edit2->hideAlertMessage(); - edit1->setAlert(false); - } - buttons[1]->setEnabled(isValid); - }); - - QObject::connect(m_grubEditAuthDialog, &DDialog::buttonClicked, [=](int index){ - if (index == 1) { - // 需要将密码发送后在worker里加密 - Q_EMIT setGrubEditPasswd(edit1->text(), isReset); - } else { - if (!isReset) { - m_grubVerification->setChecked(false); - } - } - }); - QObject::connect(m_grubEditAuthDialog, &DDialog::closed, [=](){ - if (!isReset) { - m_grubVerification->setChecked(false); - } - }); - m_grubEditAuthDialog->exec(); - m_grubEditAuthDialog->deleteLater(); - m_grubEditAuthDialog = nullptr; -} - -void BootWidget::resizeEvent(QResizeEvent *event) -{ - auto w = event->size().width(); - m_listLayout->setContentsMargins(static_cast(w * 0.2), 0, static_cast(w * 0.2), 0); -} diff --git a/dcc-old/src/plugin-commoninfo/window/bootwidget.h b/dcc-old/src/plugin-commoninfo/window/bootwidget.h deleted file mode 100644 index bf41027b12..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/bootwidget.h +++ /dev/null @@ -1,71 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" - -#include "commoninfolistview.h" -#include - -class QVBoxLayout; -class QLabel; -class QResizeEvent; - -DWIDGET_BEGIN_NAMESPACE -class DTipLabel; -class DDialog; -class DCommandLinkButton; -DWIDGET_END_NAMESPACE - -namespace DCC_NAMESPACE { -class SwitchWidget; - -class CommonInfoModel; -class CommonBackgroundItem; - -class BootWidget : public QWidget -{ - Q_OBJECT -public: - explicit BootWidget(QWidget *parent = nullptr); - virtual ~BootWidget(); - - void setDefaultEntry(const QString &value); - void setModel(CommonInfoModel *model); - void resizeEvent(QResizeEvent *event); - void setBootList(); - -Q_SIGNALS: - void enableTheme(bool value); - void bootdelay(bool value); - void defaultEntry(const QString &item); - void requestSetBackground(const QString &path); - void enableGrubEditAuth(bool value); - void setGrubEditPasswd(const QString &passwd, const bool &isReset); - -public Q_SLOTS: - void setEntryList(const QStringList &list); - void onCurrentItem(const QModelIndex &curIndex); - void onGrubEditAuthCancel(bool toEnable); - void setGrubEditAuthVisible(bool show); - void showGrubEditAuthPasswdDialog(bool isReset); - -private: - QString m_defaultEntry; // 默认启动项 - SwitchWidget *m_bootDelay; // 延时启动功能 - SwitchWidget *m_theme; // 主题功能 - DTK_WIDGET_NAMESPACE::DTipLabel *m_themeLbl; // 主题提示 - SwitchWidget *m_grubVerification; // grub 验证 - DTK_WIDGET_NAMESPACE::DTipLabel *m_grubVerifyLbl; // grub 验证提示 - DTK_WIDGET_NAMESPACE::DCommandLinkButton *m_grubModifyPasswdLink; // grub修改密码 - DTK_WIDGET_NAMESPACE::DDialog *m_grubEditAuthDialog = nullptr; // grub修改密码输入框 - CommonInfoListView *m_bootList; // 启动项目列表 - QLabel *m_updatingLabel; // Updating标签 - CommonBackgroundItem *m_background; // 背景项 - QVBoxLayout *m_listLayout; - QModelIndex m_curSelectedIndex; - QStandardItemModel *m_bootItemModel; - CommonInfoModel *m_commonInfoModel = nullptr; - bool m_isCommoninfoBootWallpaperConfigValid; -}; -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-commoninfo/window/commonbackgrounditem.cpp b/dcc-old/src/plugin-commoninfo/window/commonbackgrounditem.cpp deleted file mode 100644 index 636430a339..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/commonbackgrounditem.cpp +++ /dev/null @@ -1,173 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "commonbackgrounditem.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -static const QStringList mimeTypeList { "image/jpg", "image/jpeg", - "image/png", "image/tiff", - "image/gif", "image/bmp" }; -static const int ItemHeight = 187; -static const qreal Radius = 8.0; - -CommonBackgroundItem::CommonBackgroundItem(QWidget *parent) - : SettingsItem(parent) -{ - setMinimumHeight(ItemHeight); -} - -void CommonBackgroundItem::setThemeEnable(const bool state) -{ - setAcceptDrops(state); - m_themeEnable = state; - update(); -} - -void CommonBackgroundItem::paintEvent(QPaintEvent *e) -{ - SettingsItem::paintEvent(e); - - QPainter painter(this); - painter.setRenderHints(QPainter::Antialiasing); - - if (m_background.isNull()) { - painter.fillRect(this->rect(), Qt::black); - return; - } - - QPalette pa = DPaletteHelper::instance()->palette(this); - painter.setPen(Qt::NoPen); - painter.setBrush(QBrush(pa.color(QPalette::Window))); - - painter.drawRoundedRect(this->rect(), Radius, Radius); - - QRect pixRect(this->rect().x() + 10, this->rect().y() + 10, - this->rect().width() - 20, this->rect().height() - 20); - pixRect.moveCenter(this->rect().center()); - - QPainterPath path; - path.addRoundedRect(pixRect, Radius, Radius); - painter.setClipPath(path); - - if (m_themeEnable) { - painter.drawPixmap(m_background.rect(), m_background); - } else { - painter.setBrush(QBrush(Qt::black)); - painter.drawRect(pixRect); - } - - painter.setPen(Qt::NoPen); - painter.end(); - if (m_isDrop) { - painter.fillRect(this->rect(), QColor(0, 0, 0, 100)); - } -} - -void CommonBackgroundItem::dragEnterEvent(QDragEnterEvent *e) -{ - QMimeDatabase b; - Q_FOREACH (QUrl url, e->mimeData()->urls()) { - QString mime = b.mimeTypeForUrl(url).name(); - - if (!mimeTypeList.contains(mime)) - continue; - - if (e->mimeData()->hasUrls()) { - e->acceptProposedAction(); - m_isDrop = true; - update(); - } - - return; - } -} - -void CommonBackgroundItem::dragLeaveEvent(QDragLeaveEvent *e) -{ - Q_UNUSED(e); - - m_isDrop = false; - update(); -} - -void CommonBackgroundItem::dropEvent(QDropEvent *e) -{ - if (e->mimeData()->urls().isEmpty()) { - return; - } - - QList urls = e->mimeData()->urls(); - if (urls.isEmpty()) { - return; - } - QString path = urls[0].toLocalFile(); - if (path.isEmpty()) { - return; - } - Q_EMIT requestSetBackground(path); - e->acceptProposedAction(); - m_isDrop = false; - update(); -} - -void CommonBackgroundItem::dragMoveEvent(QDragMoveEvent *event) -{ - event->accept(); -} - -void CommonBackgroundItem::resizeEvent(QResizeEvent *e) -{ - Q_UNUSED(e); - - updateBackground(m_basePixmap); -} - -void CommonBackgroundItem::updateBackground(const QPixmap &pixmap) -{ - if (pixmap.isNull()) - return; - - m_basePixmap = pixmap; - - QSize pixmapSize = m_basePixmap.size(); - QSize showSize = size(); - QSize finalSize = ((float)showSize.width() / (float)pixmapSize.width()) * pixmapSize; - qreal ratio = devicePixelRatioF(); - - auto previewPixmap = m_basePixmap.scaled(finalSize, - Qt::IgnoreAspectRatio, - Qt::SmoothTransformation); - - - if (previewPixmap.size().height() <= showSize.height()) { - m_background = previewPixmap; - } else { - qreal centerHeight = (float)previewPixmap.size().height() / 2; - qreal offsetHeight = (float)showSize.height() / 2; - - qreal start_y = centerHeight - offsetHeight; - - qreal start_x = 0; - - m_background = previewPixmap.copy(QRect(start_x, start_y, showSize.width(), showSize.height())); - } - - m_background.setDevicePixelRatio(ratio); - update(); -} diff --git a/dcc-old/src/plugin-commoninfo/window/commonbackgrounditem.h b/dcc-old/src/plugin-commoninfo/window/commonbackgrounditem.h deleted file mode 100644 index 6ed5889569..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/commonbackgrounditem.h +++ /dev/null @@ -1,37 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -namespace DCC_NAMESPACE { -class CommonBackgroundItem : public SettingsItem -{ - Q_OBJECT -public: - explicit CommonBackgroundItem(QWidget *parent = nullptr); - -Q_SIGNALS: - void requestEnableTheme(const bool state); - void requestSetBackground(const QString &path); - -public Q_SLOTS: - void setThemeEnable(const bool state); - void updateBackground(const QPixmap &pixmap); - -protected: - void paintEvent(QPaintEvent *e) override; - void dragEnterEvent(QDragEnterEvent *e) override; - void dragLeaveEvent(QDragLeaveEvent *e) override; - void dropEvent(QDropEvent *e) override; - void dragMoveEvent(QDragMoveEvent *event) override; - void resizeEvent(QResizeEvent *e) override; - -private: - QPixmap m_background; - QPixmap m_basePixmap; - bool m_isDrop; - bool m_themeEnable; -}; -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-commoninfo/window/commoninfolistview.cpp b/dcc-old/src/plugin-commoninfo/window/commoninfolistview.cpp deleted file mode 100644 index 131cb61e6c..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/commoninfolistview.cpp +++ /dev/null @@ -1,33 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "commoninfolistview.h" - -CommonInfoListView::CommonInfoListView(QWidget *parent) - : DTK_WIDGET_NAMESPACE::DListView(parent) - , m_maxheight(std::nullopt) -{ - -} - -void CommonInfoListView::setMaxShowHeight(int height) -{ - m_maxheight = height; -} - -void CommonInfoListView::updateGeometries() -{ - DListView::updateGeometries(); - if (model()->rowCount() == 0) { - return; - } - QRect r = rectForIndex(model()->index(model()->rowCount() - 1, 0)); - QMargins margins = viewportMargins(); - - int height = r.y() + r.height() + margins.top() + margins.bottom() + 1; - - if (!m_maxheight.has_value() || m_maxheight.value() > height) { - setFixedHeight(height); - } -} diff --git a/dcc-old/src/plugin-commoninfo/window/commoninfolistview.h b/dcc-old/src/plugin-commoninfo/window/commoninfolistview.h deleted file mode 100644 index 797185f688..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/commoninfolistview.h +++ /dev/null @@ -1,24 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include - -#include - -class CommonInfoListView : public DTK_WIDGET_NAMESPACE::DListView -{ - Q_OBJECT -public: - explicit CommonInfoListView(QWidget *parent = nullptr); - - void setMaxShowHeight(int height); - -protected slots: - void updateGeometries() override; - -private: - std::optional m_maxheight; -}; diff --git a/dcc-old/src/plugin-commoninfo/window/commoninfomodule.cpp b/dcc-old/src/plugin-commoninfo/window/commoninfomodule.cpp deleted file mode 100644 index a057e13f13..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/commoninfomodule.cpp +++ /dev/null @@ -1,231 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "commoninfomodule.h" - -#include "bootwidget.h" -#include "dcclistview.h" -#include "developermodewidget.h" -#include "interface/pagemodule.h" -#include "moduleobject.h" -#include "plymouthdisplay.h" -#include "src/frame/utils.h" -#include "src/plugin-commoninfo/operation/commoninfomodel.h" -#include "src/plugin-commoninfo/operation/commoninfowork.h" -#include "userexperienceprogramwidget.h" -#include "widgets/itemmodule.h" - -#include - -#include -#include -#include - -#include - -using Dtk::Widget::DStandardItem; - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DCORE_USE_NAMESPACE - -CommonInfoModule::CommonInfoModule(QObject *parent) - : HListModule(parent) - , m_worker(nullptr) - , m_model(nullptr) -{ - m_model = new CommonInfoModel(this); - m_worker = new CommonInfoWork(m_model, this); -} - -CommonInfoModule::~CommonInfoModule() -{ - m_model->deleteLater(); - m_worker->deleteLater(); -} - -void CommonInfoModule::active() -{ - m_worker->active(); -} - -QString CommonInfoPlugin::name() const -{ - return QStringLiteral("commoninfo"); -} - -ModuleObject *CommonInfoPlugin::module() -{ - // 一级菜单--通用设置 - CommonInfoModule *moduleInterface = new CommonInfoModule(); - moduleInterface->setName("commoninfo"); - moduleInterface->setDisplayName(tr("General Settings")); - moduleInterface->setIcon(DIconTheme::findQIcon("dcc_nav_commoninfo")); - - // 二级菜单--启动菜单 - ModuleObject *moduleBootMenu = new PageModule("bootMenu", tr("Boot Menu")); - BootModule *bootModule = - new BootModule(moduleInterface->model(), moduleInterface->worker(), moduleBootMenu); - moduleBootMenu->appendChild(bootModule); - moduleInterface->appendChild(moduleBootMenu); - - moduleInterface->appendChild( - new PlyMouthModule(moduleInterface->model(), moduleInterface->worker())); - - // 服务器版/社区版 - if (!IS_SERVER_SYSTEM && !IS_COMMUNITY_SYSTEM && DSysInfo::isDeepin()) { - if (DSysInfo::uosEditionType() != DSysInfo::UosEuler - || DSysInfo::uosEditionType() != DSysInfo::UosEnterpriseC) { - // 二级菜单--开发者模式 - ModuleObject *moduleDeveloperMode = - new PageModule("developerMode", tr("Developer Mode")); - DeveloperModeModule *developerModeModule = - new DeveloperModeModule(moduleInterface->model(), - moduleInterface->worker(), - moduleBootMenu); - moduleDeveloperMode->appendChild(developerModeModule); - moduleInterface->appendChild(moduleDeveloperMode); - } - - // 二级菜单--用户体验计划 - ModuleObject *moduleUserExperienceProgram = - new PageModule("userExperienceProgram", tr("User Experience Program")); - UserExperienceProgramModule *userExperienceProgramModule = - new UserExperienceProgramModule(moduleInterface->model(), - moduleInterface->worker(), - moduleBootMenu); - moduleUserExperienceProgram->appendChild(userExperienceProgramModule); - moduleInterface->appendChild(moduleUserExperienceProgram); - } - - return moduleInterface; -} - -QString CommonInfoPlugin::location() const -{ - return "22"; -} - -QWidget *DeveloperModeModule::page() -{ - DeveloperModeWidget *w = new DeveloperModeWidget; - w->setModel(m_model); - connect(w, &DeveloperModeWidget::requestLogin, m_worker, &CommonInfoWork::login); - connect(w, &DeveloperModeWidget::enableDeveloperMode, this, [=](bool enabled) { - m_worker->setEnableDeveloperMode(enabled); - }); - return w; -} - -QWidget *UserExperienceProgramModule::page() -{ - UserExperienceProgramWidget *w = new UserExperienceProgramWidget(); - w->setModel(m_model); - connect(w, - &UserExperienceProgramWidget::enableUeProgram, - m_worker, - &CommonInfoWork::setUeProgram); - connect(w, &UserExperienceProgramWidget::destroyed, m_worker, &CommonInfoWork::closeUeProgram); - return w; -} - -QWidget *BootModule::page() -{ - BootWidget *w = new BootWidget(); - w->setModel(m_model); - connect(w, &BootWidget::bootdelay, m_worker, &CommonInfoWork::setBootDelay); - connect(w, &BootWidget::enableTheme, m_worker, &CommonInfoWork::setEnableTheme); - connect(w, &BootWidget::enableGrubEditAuth, m_worker, [this, w](bool value) { - if (value) { - w->showGrubEditAuthPasswdDialog(false); - } else { - m_worker->disableGrubEditAuth(); - } - }); - connect(w, &BootWidget::setGrubEditPasswd, m_worker, &CommonInfoWork::onSetGrubEditPasswd); - connect(w, &BootWidget::defaultEntry, m_worker, &CommonInfoWork::setDefaultEntry); - connect(w, &BootWidget::requestSetBackground, m_worker, &CommonInfoWork::setBackground); - - w->setGrubEditAuthVisible(m_model->isShowGrubEditAuth()); - return w; -} - -PlyMouthModule::PlyMouthModule(CommonInfoModel *model, CommonInfoWork *work, QObject *parent) - : PageModule("plymouthAnimation", tr("Boot Animation"), parent) - , m_model(model) - , m_work(work) -{ - appendChild(new ItemModule("", "", this, &PlyMouthModule::initPlyMouthDisplay, false)); - appendChild(new ItemModule("plymouthScale", - "", - this, - &PlyMouthModule::initPlymouthScale, - false)); -} - -QWidget *PlyMouthModule::initPlyMouthDisplay(ModuleObject *module) -{ - auto displayItem = new PlyMouthDisplayItem; - - displayItem->setLogoPixmap(m_work->getPlymouthFilePixmap()); - connect(m_model, &CommonInfoModel::plymouthThemeChanged, displayItem, [displayItem, this] { - displayItem->setLogoPixmap(m_work->getPlymouthFilePixmap()); - }); - - return displayItem; -} - -QWidget *PlyMouthModule::initPlymouthScale(ModuleObject *module) -{ - Q_UNUSED(module) - DCCListView *plymouthView = new DCCListView; - QStandardItemModel *plymouthModel = new QStandardItemModel; - - DStandardItem *smallOne = new DStandardItem; - smallOne->setData(tr("Small Size"), Qt::DisplayRole); - smallOne->setData(1, Dtk::UserRole); - - DStandardItem *bingOne = new DStandardItem; - bingOne->setData(tr("Big Size"), Qt::DisplayRole); - bingOne->setData(2, Dtk::UserRole); - - plymouthModel->appendRow(smallOne); - plymouthModel->appendRow(bingOne); - - plymouthView->setModel(plymouthModel); - - auto plymouthValueViewChanged = [plymouthView, plymouthModel](int scale) { - if (scale == 0 || scale > 2) { - return; - } - int row = scale - 1; - plymouthView->setCurrentIndex(plymouthModel->index(row, 0)); - for (int i = 0; i < 2; ++i) { - auto item = plymouthModel->item(i); - item->setCheckState(row == i ? Qt::Checked : Qt::Unchecked); - } - }; - plymouthValueViewChanged(m_model->plymouthScale()); - - auto handleDisableChanged = [plymouthModel](bool disable) { - for (int i = 0; i < 2; ++i) { - auto item = plymouthModel->item(i); - item->setEnabled(!disable); - } - }; - - handleDisableChanged(m_work->isSettingPlymouth()); - - connect(m_model, - &CommonInfoModel::plymouthScaleChanged, - plymouthView, - plymouthValueViewChanged); - - connect(m_work, &CommonInfoWork::settingScaling, plymouthView, handleDisableChanged); - - connect(plymouthView, &QListView::clicked, m_work, [this](const QModelIndex &index) { - int scale = index.row() + 1; - m_work->setPlymouthFactor(scale); - }); - return plymouthView; -} diff --git a/dcc-old/src/plugin-commoninfo/window/commoninfomodule.h b/dcc-old/src/plugin-commoninfo/window/commoninfomodule.h deleted file mode 100644 index b21d6412ec..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/commoninfomodule.h +++ /dev/null @@ -1,121 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/hlistmodule.h" -#include "interface/namespace.h" -#include "interface/plugininterface.h" -#include "pagemodule.h" - -#include - -namespace DCC_NAMESPACE { -class CommonInfoModel; -class CommonInfoWork; - -class CommonInfoPlugin : public PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.CommonInfo" FILE "CommonInfoPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - virtual QString name() const override; - virtual ModuleObject *module() override; - virtual QString location() const override; -}; - -class CommonInfoModule : public HListModule -{ - Q_OBJECT -public: - explicit CommonInfoModule(QObject *parent = nullptr); - ~CommonInfoModule(); - virtual void active() override; - - CommonInfoWork *worker() { return m_worker; } - - CommonInfoModel *model() { return m_model; } - -private: - CommonInfoWork *m_worker; - CommonInfoModel *m_model; -}; - -class DeveloperModeModule : public ModuleObject -{ - Q_OBJECT -public: - explicit DeveloperModeModule(CommonInfoModel *model, - CommonInfoWork *worker, - QObject *parent = nullptr) - : ModuleObject(parent) - , m_model(model) - , m_worker(worker) - { - } - - virtual QWidget *page() override; - -private: - CommonInfoModel *m_model; - CommonInfoWork *m_worker; -}; - -class PlyMouthModule : public PageModule -{ - Q_OBJECT -public: - explicit PlyMouthModule(CommonInfoModel *model, - CommonInfoWork *worker, - QObject *parent = nullptr); - -private slots: - QWidget *initPlymouthScale(ModuleObject *module); - QWidget *initPlyMouthDisplay(ModuleObject *module); - -private: - CommonInfoModel *m_model; - CommonInfoWork *m_work; -}; - -class UserExperienceProgramModule : public ModuleObject -{ - Q_OBJECT -public: - explicit UserExperienceProgramModule(CommonInfoModel *model, - CommonInfoWork *worker, - QObject *parent = nullptr) - : ModuleObject(parent) - , m_model(model) - , m_worker(worker) - { - } - - virtual QWidget *page() override; - -private: - CommonInfoModel *m_model; - CommonInfoWork *m_worker; -}; - -class BootModule : public ModuleObject -{ - Q_OBJECT -public: - explicit BootModule(CommonInfoModel *model, CommonInfoWork *worker, QObject *parent = nullptr) - : ModuleObject(parent) - , m_model(model) - , m_worker(worker) - { - } - - virtual QWidget *page() override; - -private: - CommonInfoModel *m_model; - CommonInfoWork *m_worker; -}; - -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-commoninfo/window/developermodedialog.cpp b/dcc-old/src/plugin-commoninfo/window/developermodedialog.cpp deleted file mode 100644 index 344a2a5faf..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/developermodedialog.cpp +++ /dev/null @@ -1,280 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "developermodedialog.h" -#include "src/plugin-commoninfo/operation/commoninfomodel.h" -#include "widgets/titlelabel.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -DeveloperModeDialog::DeveloperModeDialog(QObject *parent) - : DAbstractDialog(parent) - , m_importFile(new QFileDialog(this)) - , m_exportFile(new QFileDialog(this)) -{ - //注册类型 - qRegisterMetaType("DMIInfo"); - qDBusRegisterMetaType(); - qRegisterMetaType("HardwareInfo"); - qDBusRegisterMetaType(); - - setAccessibleName("DeveloperModeDialog"); - setMinimumSize(QSize(350, 380)); - //总布局 - QVBoxLayout *vBoxLayout = new QVBoxLayout(this); - //图标和关闭按钮布局 - QHBoxLayout *titleHBoxLayout = new QHBoxLayout(); - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setAccessibleName("DeveloperModeDialog_titleIcon"); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setIcon(DIconTheme::findQIcon("preferences-system")); - titleHBoxLayout->addWidget(titleIcon, Qt::AlignTop); - titleIcon->setMenuVisible(false); - titleIcon->setTitle(""); - //内容布局 - QVBoxLayout *contentVBoxLayout = new QVBoxLayout(); - auto chooseModeTip = new TitleLabel(tr("Request Root Access"), this); - chooseModeTip->setAlignment(Qt::AlignHCenter | Qt::AlignTop); - chooseModeTip->setWordWrap(true); - - contentVBoxLayout->setContentsMargins(40, 0, 40, 20); - contentVBoxLayout->addWidget(chooseModeTip, 0, Qt::AlignTop); - - auto hw = new QWidget(); - hw->setAccessibleName("hBoxLayout"); - QHBoxLayout *hBoxLayout = new QHBoxLayout(); - m_onlineBtn = new DRadioButton(tr("Online")); - m_offlineBtn = new DRadioButton(tr("Offline")); - m_onlineBtn->setChecked(true); - hw->setLayout(hBoxLayout); - - hBoxLayout->setSpacing(20); - hBoxLayout->addWidget(m_onlineBtn, 0, Qt::AlignCenter); - hBoxLayout->addWidget(m_offlineBtn, 0, Qt::AlignCenter); - contentVBoxLayout->addWidget(hw, 0, Qt::AlignTop | Qt::AlignHCenter); - - //在线激活模式提示 - auto chooseModeCommonts = new DTextBrowser(); - chooseModeCommonts->setAccessibleName("DeveloperModeDialog_DTextBrowser"); - auto mpalette = this->palette(); - mpalette.setBrush(QPalette::Base, QBrush(Qt::NoBrush)); - chooseModeCommonts->setPalette(mpalette); - chooseModeCommonts->setFrameStyle(QFrame::NoFrame); - chooseModeCommonts->setAlignment(Qt::AlignLeft | Qt::AlignTop); - chooseModeCommonts->setText(tr("Please sign in to your Union ID first and continue")); - - contentVBoxLayout->addWidget(chooseModeCommonts, 1, Qt::AlignTop | Qt::AlignHCenter); - - //在线激活模式下一步按钮 - m_nextButton = new DSuggestButton(tr("Next")); - contentVBoxLayout->addWidget(m_nextButton, 0, Qt::AlignBottom); - - //离线激活模式导出机器信息和导入证书按钮 - auto exportBtn = new QPushButton(tr("Export PC Info")); - auto importBtn = new DSuggestButton(tr("Import Certificate")); - importBtn->setAccessibleName("importBtn"); - exportBtn->setVisible(false); - importBtn->setVisible(false); - - contentVBoxLayout->addWidget(exportBtn, 0, Qt::AlignBottom); - contentVBoxLayout->addWidget(importBtn, 0, Qt::AlignBottom); - - //加入布局 - vBoxLayout->addLayout(titleHBoxLayout); - vBoxLayout->addLayout(contentVBoxLayout); - vBoxLayout->setMargin(0); - setLayout(vBoxLayout); - - m_importFile->setModal(true); - m_importFile->setAcceptMode(QFileDialog::AcceptSave); - m_importFile->setNameFilter("*.json"); - // 以读写方式打开主目录下的1.json文件,若该文件不存在则会自动创建 - m_importFile->selectFile("1.json"); - QStringList directory = QStandardPaths::standardLocations(QStandardPaths::DesktopLocation); - if (!directory.isEmpty()) { - m_importFile->setDirectory(directory.first()); - } - - m_exportFile->setModal(true); - m_exportFile->setAcceptMode(QFileDialog::AcceptOpen); - directory = QStandardPaths::standardLocations(QStandardPaths::DownloadLocation); - if (!directory.isEmpty()) { - m_exportFile->setDirectory(directory.first()); - } - - connect(m_importFile, &QFileDialog::finished, this, [ = ](int result) { - if (result == QFileDialog::Accepted) { - QDBusInterface licenseInfo("com.deepin.sync.Helper", - "/com/deepin/sync/Helper", - "com.deepin.sync.Helper", - QDBusConnection::systemBus()); - - QDBusReply hardwareInfo = licenseInfo.call(QDBus::AutoDetect, "GetHardware"); - QString fileName = m_importFile->selectedFiles().first(); - if (fileName.isEmpty()) - return; - - QFile file(fileName); - if (!file.open(QIODevice::ReadWrite)) - qDebug() << "File open error"; - else - qDebug() << "File open!"; - - // 使用QJsonObject对象插入键值对。 - QJsonObject jsonObject; - auto hardwareInfoValue = hardwareInfo.value(); - auto hardwareDMIValue = hardwareInfo.value().dmi; - jsonObject.insert("id", hardwareInfoValue.id); - jsonObject.insert("hostname", hardwareInfoValue.hostName); - jsonObject.insert("username", hardwareInfoValue.username); - jsonObject.insert("cpu", hardwareInfoValue.cpu); - jsonObject.insert("laptop", hardwareInfoValue.laptop); - jsonObject.insert("memory", hardwareInfoValue.memory); - jsonObject.insert("network_cards", hardwareInfoValue.networkCards); - - QJsonObject objectDMI; - objectDMI.insert("bios_vendor", hardwareDMIValue.biosVendor); - objectDMI.insert("bios_version", hardwareDMIValue.biosVersion); - objectDMI.insert("bios_date", hardwareDMIValue.biosDate); - objectDMI.insert("board_name", hardwareDMIValue.boardName); - objectDMI.insert("board_serial", hardwareDMIValue.boardSerial); - objectDMI.insert("board_vendor", hardwareDMIValue.boardVendor); - objectDMI.insert("board_version", hardwareDMIValue.boardVersion); - objectDMI.insert("product_name", hardwareDMIValue.productName); - objectDMI.insert("product_family", hardwareDMIValue.productFamily); - objectDMI.insert("product_serial", hardwareDMIValue.producctSerial); - objectDMI.insert("product_uuid", hardwareDMIValue.productUUID); - objectDMI.insert("product_version", hardwareDMIValue.productVersion); - - jsonObject.insert("dmi", objectDMI); - //使用QJsonDocument设置该json对象 - QJsonDocument jsonDoc; - jsonDoc.setObject(jsonObject); - - //将json以文本形式写入文件并关闭文件 - file.write(jsonDoc.toJson()); - file.close(); - } - }); - - connect(m_exportFile, &QFileDialog::finished, this, [ = ](int result) { - if (result == QFileDialog::Accepted) { - QString fileName = m_exportFile->selectedFiles().first(); - if (fileName.isEmpty()) - return; - - Q_EMIT requestCommit(fileName); - close(); - } - }); - - //选择激活在线模式或离线模式 - connect(m_onlineBtn, &QAbstractButton::toggled, [ = ] { - if (m_onlineBtn->isChecked()) { - exportBtn->setVisible(false); - importBtn->setVisible(false); - m_nextButton->setVisible(true); - - chooseModeCommonts->setText(tr("Please sign in to your Union ID first and continue")); - this->update(); - } else { - m_nextButton->setVisible(false); - exportBtn->setVisible(true); - importBtn->setVisible(true); - chooseModeCommonts->setText(tr("1. Export your PC information") + '\n' - + tr("2. Go to https://www.chinauos.com/developMode to download an offline certificate") + '\n' - + tr("3. Import the certificate")); - } - }); - - connect(m_nextButton, &QPushButton::clicked, this, &DeveloperModeDialog::setLogin); - connect(exportBtn, &QPushButton::clicked, [ this ] { - m_importFile->show(); - }); - - //离线模式导入证书 - connect(importBtn, &QPushButton::clicked, [ this ] { - m_exportFile->show(); - }); -} - -DeveloperModeDialog::~DeveloperModeDialog() -{ - if (m_importFile) - m_importFile->deleteLater(); - - if (m_exportFile) - m_exportFile->deleteLater(); -} - -void DeveloperModeDialog::setModel(CommonInfoModel *model) -{ - m_model = model; -} - -void DeveloperModeDialog::shutdown() -{ - if (m_importFile && m_importFile->isVisible()) - m_importFile->reject(); - - if (m_exportFile && m_exportFile->isVisible()) - m_exportFile->reject(); -} - -void DeveloperModeDialog::setLogin() -{ - auto model = m_model; - auto btn = m_nextButton; - Q_ASSERT(model); - auto requestDev = [this, btn] { - btn->clearFocus(); - //防止出现弹窗时可以再次点击按钮 - hide(); - QTimer::singleShot(100, this, [ this ] { - Q_EMIT requestDeveloperMode(true); - }); - }; - - if (!model->isLogin()) { - m_enterDev = true; - btn->clearFocus(); - Q_EMIT requestLogin(); - connect(model, &CommonInfoModel::isLoginChenged, this, [requestDev, this](bool log) { - if (!log || !m_enterDev) - return; - - requestDev(); - m_enterDev = false; - }); - } else { - requestDev(); - } -} - -void DeveloperModeDialog::showEvent(QShowEvent *) -{ - setFocus(); -} diff --git a/dcc-old/src/plugin-commoninfo/window/developermodedialog.h b/dcc-old/src/plugin-commoninfo/window/developermodedialog.h deleted file mode 100644 index 8c31844df4..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/developermodedialog.h +++ /dev/null @@ -1,169 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DeveloperModeDialog_H -#define DeveloperModeDialog_H - -#include "interface/namespace.h" - -#include -#include -#include - -#include -#include -#include - -struct TS{ - QString ts1; - QString ts2; -}; - -class QFileDialog; - -namespace DCC_NAMESPACE { -class CommonInfoModel; - -class DeveloperModeDialog : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit DeveloperModeDialog(QObject *parent = nullptr); - ~DeveloperModeDialog(); - -public: - void setModel(CommonInfoModel *model); - void shutdown(); - -Q_SIGNALS: - void requestDeveloperMode(bool enabled); - void requestLogin(); - void requestCommit(QString filePathName); - -protected: - virtual void showEvent(QShowEvent *); - -private Q_SLOTS: - void setLogin(); - -private: - DTK_WIDGET_NAMESPACE::DRadioButton *m_onlineBtn{nullptr}; - DTK_WIDGET_NAMESPACE::DRadioButton *m_offlineBtn{nullptr}; - DTK_WIDGET_NAMESPACE::DSuggestButton *m_nextButton{nullptr}; - CommonInfoModel *m_model{nullptr}; - bool m_enterDev{false}; - QFileDialog *m_importFile; - QFileDialog *m_exportFile; -}; -} - -class DMIInfo -{ -public: - DMIInfo(){} - - friend QDebug operator<<(QDebug debug, const DMIInfo &info) - { - debug << QString("DMIInfo(") << info.biosVendor << ", " << info.biosVersion << ", " - << info.biosDate << ", " << info.boardName << ", " << info.boardSerial << ", " - << info.boardVendor << ", " << info.boardVersion << ", " - << info.productName << ", " << info.productFamily << ", " - << info.producctSerial << ", " << info.productUUID << ", " - << info.productVersion << ")"; - - return debug; - } - friend const QDBusArgument &operator>>(const QDBusArgument &arg, DMIInfo &info) - { - arg.beginStructure(); - arg >> info.biosVendor >> info.biosVersion >> info.biosDate - >> info.boardName >> info.boardSerial >> info.boardVendor >> info.boardVersion - >> info.productName >> info.productFamily - >> info.producctSerial >> info.productUUID >> info.productVersion; - arg.endStructure(); - - return arg; - } - friend QDBusArgument &operator<<(QDBusArgument &arg, const DMIInfo &info) - { - arg.beginStructure(); - arg << info.biosVendor << info.biosVersion << info.biosDate - << info.boardName << info.boardSerial << info.boardVendor << info.boardVersion - << info.productName << info.productFamily - << info.producctSerial << info.productUUID << info.productVersion; - arg.endStructure(); - - return arg; - } - -public: - QString biosVendor{""}; - QString biosVersion{""}; - QString biosDate{""}; - QString boardName{""}; - QString boardSerial{""}; - QString boardVendor{""}; - QString boardVersion{""}; - QString productName{""}; - QString productFamily{""}; - QString producctSerial{""}; - QString productUUID{""}; - QString productVersion{""}; -}; - -class HardwareInfo -{ -public: - HardwareInfo(){} - - friend QDebug operator<<(QDebug debug, const HardwareInfo &info) - { - debug << "HardwareInfo(" <>(const QDBusArgument &arg, HardwareInfo &info) - { - arg.beginStructure(); - arg >> info.id >> info.hostName >> info.username >> info.os >> info.cpu - >> info.laptop >> info.memory >> info.diskTotal >> info.networkCards - >> info.diskList >> info.dmi; - arg.endStructure(); - - return arg; - } - -public: - QString id{""}; - QString hostName{""}; - QString username{""}; - QString os{""}; - QString cpu{""}; - bool laptop{false}; - qint64 memory{0}; - qint64 diskTotal{0}; - QString networkCards{""}; - QString diskList{""}; - DMIInfo dmi; -}; - -Q_DECLARE_METATYPE(DMIInfo) -Q_DECLARE_METATYPE(HardwareInfo) - - - - -#endif // DEVELPERMODEACTIVATE_H diff --git a/dcc-old/src/plugin-commoninfo/window/developermodewidget.cpp b/dcc-old/src/plugin-commoninfo/window/developermodewidget.cpp deleted file mode 100644 index 17a96a2370..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/developermodewidget.cpp +++ /dev/null @@ -1,187 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "developermodewidget.h" -#include "src/plugin-commoninfo/operation/commoninfomodel.h" -#include "widgets/switchwidget.h" - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -DeveloperModeWidget::DeveloperModeWidget(QWidget *parent) - : QWidget(parent) - , m_model(nullptr) - , m_inter(new QDBusInterface("com.deepin.sync.Helper", - "/com/deepin/sync/Helper", - "com.deepin.sync.Helper", - QDBusConnection::systemBus(), this)) - , m_developerDialog(new DeveloperModeDialog(this)) -{ - setAccessibleName("DeveloperModeWidget"); - m_devBtn = new QPushButton(tr("Request Root Access")); - m_dtip = new DTipLabel(tr("Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully.")); - m_dtip->setAccessibleName("DeveloperModeWidget_dtip "); - m_dtip->setAlignment(Qt::AlignLeft | Qt::AlignTop); - m_dtip->setWordWrap(true); - - m_lab = new DLabel(tr("The feature is not available at present, please activate your system first")); - m_lab->setAccessibleName("DeveloperModeWidget_lab"); - m_lab->setWordWrap(true); - m_lab->setVisible(false); - - QVBoxLayout *vBoxLayout = new QVBoxLayout; - vBoxLayout->setMargin(0); - vBoxLayout->setSpacing(10); - vBoxLayout->setContentsMargins(0, 10, 0, 10); - vBoxLayout->addWidget(m_devBtn); - vBoxLayout->addWidget(m_lab); - vBoxLayout->addWidget(m_dtip); - vBoxLayout->addStretch(); - setLayout(vBoxLayout); - - connect(m_developerDialog, &DeveloperModeDialog::requestDeveloperMode, this, &DeveloperModeWidget::enableDeveloperMode); - connect(this, &DeveloperModeWidget::enableDeveloperMode, m_developerDialog, &DeveloperModeDialog::close); - connect(m_developerDialog, &DeveloperModeDialog::requestLogin, this, &DeveloperModeWidget::requestLogin); - connect(m_developerDialog, &DeveloperModeDialog::requestCommit, [ this ](QString filePathName) { - //读取机器信息证书 - QFile fFile(filePathName); - if (!fFile.open(QIODevice::ReadOnly)) { - qDebug() << "Can't open file for writing"; - } - - QByteArray data = fFile.readAll(); - QDBusMessage msg = m_inter->call("EnableDeveloperMode", data); - - //当返回信息为错误接口信息才处理 - if (msg.type() == QDBusMessage::MessageType::ErrorMessage) { - //系统通知弹窗qdbus 接口 - QDBusInterface tInterNotify("org.deepin.dde.Notification1", - "/org/deepin/dde/Notification1", - "org.deepin.dde.Notification1", - QDBusConnection::sessionBus()); - - //初始化Notify 七个参数 - QString in0(QObject::tr("dde-control-center")); - uint in1 = 101; - QString in2("preferences-system"); - QString in3(""); - QString in4(""); - QStringList in5; - QVariantMap in6; - int in7 = 5000; - - //截取error接口 1001:未导入证书 1002:未登录 1003:无法获取硬件信息 1004:网络异常 1005:证书加载失败 1006:签名验证失败 1007:文件保存失败 - QString msgcode = msg.errorMessage(); - msgcode = msgcode.split(":").at(0); - if (msgcode == "1001") { - in3 = tr("Failed to get root access"); - } else if (msgcode == "1002") { - in3 = tr("Please sign in to your Union ID first"); - } else if (msgcode == "1003") { - in3 = tr("Cannot read your PC information"); - } else if (msgcode == "1004") { - in3 = tr("No network connection"); - } else if (msgcode == "1005") { - in3 = tr("Certificate loading failed, unable to get root access"); - } else if (msgcode == "1006") { - in3 = tr("Signature verification failed, unable to get root access"); - } else if (msgcode == "1007") { - in3 = tr("Failed to get root access"); - } - - //系统通知认证失败 无法进入开发模式 - tInterNotify.call("Notify", in0, in1, in2, in3, in4, in5, in6, in7); - } - }); - - //绑定选择激活开发模式窗口 - connect(m_devBtn, &QPushButton::clicked, [ this ] { - m_developerDialog->show(); - }); -} - -DeveloperModeWidget::~DeveloperModeWidget() -{ - if (m_developerDialog) { - m_developerDialog->shutdown(); // 若存在可显示对话框,则需强制关闭 - m_developerDialog->deleteLater(); - } -} - -void DeveloperModeWidget::setModel(CommonInfoModel *model) -{ - m_model = model; - m_developerDialog->setModel(m_model); - onLoginChanged(); - if (!model->developerModeState()) { - m_devBtn->setEnabled(model->isActivate()); - m_lab->setVisible(!model->isActivate()); - m_dtip->setVisible(model->isActivate()); - } - updateDeveloperModeState(model->developerModeState()); - connect(model, &CommonInfoModel::developerModeStateChanged, this, [ this ](const bool state) { - //更新界面 - updateDeveloperModeState(state); - - if (!state) - return; - - //弹窗提示重启 - DDialog dlg("", tr("To make some features effective, a restart is required. Restart now?"), this); - dlg.addButtons({tr("Cancel"), tr("Restart Now")}); - connect(&dlg, &DDialog::buttonClicked, this, [ = ](int idx, QString str) { - Q_UNUSED(str); - if (idx == 1) { - DDBusSender() - .service("org.deepin.dde.SessionManager1") - .interface("org.deepin.dde.SessionManager1") - .path("/org/deepin/dde/SessionManager1") - .method("RequestReboot") - .call(); - } - }); - dlg.exec(); - }); - connect(model, &CommonInfoModel::isLoginChenged, this, &DeveloperModeWidget::onLoginChanged); - if (!model->developerModeState()) { - connect(model, &CommonInfoModel::LicenseStateChanged, this, [ = ](const bool & value) { - m_devBtn->setEnabled(value); - m_lab->setVisible(!value); - m_dtip->setVisible(value); - }); - } -} - -void DeveloperModeWidget::onLoginChanged() -{ -} - -//开发者模式变化时,更新界面 -void DeveloperModeWidget::updateDeveloperModeState(const bool state) -{ - QDBusReply reply = m_inter->call("IsDeveloperMode"); - if (state || reply.value()) { - //开发者模式不可逆,这里将控件disable - m_devBtn->clearFocus(); - m_devBtn->setEnabled(false); - m_devBtn->setText(tr("Root Access Allowed")); - } else { - m_devBtn->setEnabled(m_model->isActivate()); - m_devBtn->setText(tr("Request Root Access")); - m_devBtn->setChecked(false); - } -} diff --git a/dcc-old/src/plugin-commoninfo/window/developermodewidget.h b/dcc-old/src/plugin-commoninfo/window/developermodewidget.h deleted file mode 100644 index 9519e0a93e..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/developermodewidget.h +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" -#include "developermodedialog.h" - -#include -#include - -class QPushButton; -class QDBusInterface; - -namespace DCC_NAMESPACE { -class SwitchWidget; -class CommonInfoModel; - -class DeveloperModeWidget : public QWidget -{ - Q_OBJECT -public: - explicit DeveloperModeWidget(QWidget *parent = nullptr); - ~DeveloperModeWidget(); - void setModel(CommonInfoModel *model); - -Q_SIGNALS: - void enableDeveloperMode(bool enabled); - void requestLogin(); - -private Q_SLOTS: - void onLoginChanged(); - -public Q_SLOTS: - void updateDeveloperModeState(const bool state); - -private: - bool m_enterDev{false}; - QPushButton *m_devBtn; - CommonInfoModel *m_model{nullptr}; - QDBusInterface *m_inter; - DTK_NAMESPACE::Widget::DLabel *m_lab; - DTK_NAMESPACE::Widget::DLabel *m_dtip; - DeveloperModeDialog *m_developerDialog; -}; -} diff --git a/dcc-old/src/plugin-commoninfo/window/plymouthdisplay.cpp b/dcc-old/src/plugin-commoninfo/window/plymouthdisplay.cpp deleted file mode 100644 index 3ea5dff765..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/plymouthdisplay.cpp +++ /dev/null @@ -1,46 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "plymouthdisplay.h" - -#include - -#include -#include - -using namespace DCC_NAMESPACE; - -static constexpr int ItemHeight = 200; -static constexpr qreal Radius = 8.0; - -PlyMouthDisplayItem::PlyMouthDisplayItem(QWidget *parent) - : QWidget(parent) - , m_logo(QPixmap()) -{ - setMinimumHeight(ItemHeight); -} - -void PlyMouthDisplayItem::paintEvent(QPaintEvent *event) -{ - QWidget::paintEvent(event); - QPainter painter(this); - painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - - QPainterPath path; - path.addRoundedRect(rect(), Radius, Radius); - painter.fillPath(path, Qt::black); - - if (m_logo.isNull()) { - return; - } - qreal x = (rect().width() - m_logo.width()) / 2.0; - qreal y = (rect().height() - m_logo.height()) / 2.0; - painter.drawPixmap(x, y, m_logo); -} - -void PlyMouthDisplayItem::setLogoPixmap(const QPixmap &pix) -{ - m_logo = pix; - update(); -} diff --git a/dcc-old/src/plugin-commoninfo/window/plymouthdisplay.h b/dcc-old/src/plugin-commoninfo/window/plymouthdisplay.h deleted file mode 100644 index 05a4a02a03..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/plymouthdisplay.h +++ /dev/null @@ -1,28 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include "interface/namespace.h" - -#include -#include -#include - -namespace DCC_NAMESPACE { -class PlyMouthDisplayItem : public QWidget -{ - Q_OBJECT -public: - explicit PlyMouthDisplayItem(QWidget *parent = nullptr); - -public slots: - void setLogoPixmap(const QPixmap &pix); - -protected: - void paintEvent(QPaintEvent *event) override; - -private: - QPixmap m_logo; -}; -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-commoninfo/window/pwqualitymanager.cpp b/dcc-old/src/plugin-commoninfo/window/pwqualitymanager.cpp deleted file mode 100644 index b9f210845a..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/pwqualitymanager.cpp +++ /dev/null @@ -1,90 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "pwqualitymanager.h" -#include -#include - -using namespace DCC_NAMESPACE; -DCORE_USE_NAMESPACE - -PwqualityManager::PwqualityManager() - : m_passwordMinLen(0) - , m_passwordMaxLen(0) -{ -} - -PwqualityManager *PwqualityManager::instance() -{ - static PwqualityManager pwquality; - return &pwquality; -} - -PwqualityManager::ERROR_TYPE PwqualityManager::verifyPassword(const QString &user, const QString &password, CheckType checkType) -{ - switch (checkType) { - case PwqualityManager::Default: { - ERROR_TYPE error = deepin_pw_check(user.toLocal8Bit().data(), password.toLocal8Bit().data(), LEVEL_STRICT_CHECK, nullptr); - - if (error == PW_ERR_PW_REPEAT) { - error = PW_NO_ERR; - } - return error; - } - case PwqualityManager::Grub2: { - // LEVEL_STRICT_CHECK? - ERROR_TYPE error = deepin_pw_check_grub2(user.toLocal8Bit().data(), password.toLocal8Bit().data(), LEVEL_STANDARD_CHECK, nullptr); - - if (error == PW_ERR_PW_REPEAT) { - error = PW_NO_ERR; - } - return error; - } - } - - return PW_NO_ERR; -} - -PASSWORD_LEVEL_TYPE PwqualityManager::GetNewPassWdLevel(const QString &newPasswd) -{ - return get_new_passwd_strength_level(newPasswd.toLocal8Bit().data()); -} - -QString PwqualityManager::getErrorTips(PwqualityManager::ERROR_TYPE type, CheckType checkType) -{ - int passwordPalimdromeNum = (checkType == Default ? get_pw_palimdrome_num(LEVEL_STRICT_CHECK) : get_pw_palimdrome_num_grub2(LEVEL_STRICT_CHECK)); - int passwordMonotoneCharacterNum = (checkType == Default ? get_pw_monotone_character_num(LEVEL_STRICT_CHECK) : get_pw_monotone_character_num_grub2(LEVEL_STRICT_CHECK)); - int passwordConsecutiveSameCharacterNum = (checkType == Default ? get_pw_consecutive_same_character_num(LEVEL_STRICT_CHECK) : get_pw_consecutive_same_character_num_grub2(LEVEL_STRICT_CHECK)); - m_passwordMinLen = (checkType == Default ? get_pw_min_length(LEVEL_STRICT_CHECK) : get_pw_min_length_grub2(LEVEL_STRICT_CHECK)); - m_passwordMaxLen = (checkType == Default ? get_pw_max_length(LEVEL_STRICT_CHECK) : get_pw_max_length_grub2(LEVEL_STRICT_CHECK)); - - //通用校验规则 - QMap PasswordFlagsStrMap = { - {PW_ERR_PASSWORD_EMPTY, tr("Password cannot be empty")}, - {PW_ERR_LENGTH_SHORT, tr("Password must have at least %1 characters").arg(m_passwordMinLen)}, - {PW_ERR_LENGTH_LONG, tr("Password must be no more than %1 characters").arg(m_passwordMaxLen)}, - {PW_ERR_CHARACTER_INVALID, tr("Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\\{}[]:\"'<>,.?/)")}, - {PW_ERR_PALINDROME, tr("No more than %1 palindrome characters please").arg(passwordPalimdromeNum)}, - {PW_ERR_PW_MONOTONE, tr("No more than %1 monotonic characters please").arg(passwordMonotoneCharacterNum)}, - {PW_ERR_PW_CONSECUTIVE_SAME, tr("No more than %1 repeating characters please").arg(passwordConsecutiveSameCharacterNum)}, - - }; - - //服务器版校验规则 - if (DSysInfo::UosServer == DSysInfo::uosType()) { - PasswordFlagsStrMap[PW_ERR_CHARACTER_INVALID] = tr("Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\\{}[]:\"'<>,.?/)"); - PasswordFlagsStrMap[PW_ERR_PALINDROME] = tr("Password must not contain more than 4 palindrome characters"); - PasswordFlagsStrMap[PW_ERR_WORD] = tr("Do not use common words and combinations as password"); - PasswordFlagsStrMap[PW_ERR_PW_MONOTONE] = tr("Create a strong password please"); - PasswordFlagsStrMap[PW_ERR_PW_CONSECUTIVE_SAME] = tr("Create a strong password please"); - PasswordFlagsStrMap[PW_ERR_PW_FIRST_UPPERM] = tr("Do not use common words and combinations as password"); - } - - //规则校验以外的情况统一返回密码不符合安全要求 - if (PasswordFlagsStrMap.value(type).isEmpty()) { - PasswordFlagsStrMap[type] = tr("It does not meet password rules"); - } - - return PasswordFlagsStrMap.value(type); -} - diff --git a/dcc-old/src/plugin-commoninfo/window/pwqualitymanager.h b/dcc-old/src/plugin-commoninfo/window/pwqualitymanager.h deleted file mode 100644 index 4644a29ca5..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/pwqualitymanager.h +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DEEPIN_INSTALLER_PWQUALITY_MANAGER_H -#define DEEPIN_INSTALLER_PWQUALITY_MANAGER_H - -#include "interface/namespace.h" - -#include -#include - -#include - -namespace DCC_NAMESPACE { -class PwqualityManager : public QObject -{ -Q_OBJECT -public: - typedef PW_ERROR_TYPE ERROR_TYPE; - - enum CheckType { - Default, - Grub2 - }; - - /** - * @brief PwqualityManager::instance 构造一个 单例 - * @return 返回一个静态实例 - */ - static PwqualityManager* instance(); - - /** - * @brief PwqualityManager::verifyPassword 校验密码 - * @param password 带检密码字符串 - * @return 若找到,返回text,反之返回空 - */ - ERROR_TYPE verifyPassword(const QString &user, const QString &password, CheckType checkType = Default); - PASSWORD_LEVEL_TYPE GetNewPassWdLevel(const QString &newPasswd); - QString getErrorTips(ERROR_TYPE type, CheckType checkType = Default); - -private: - PwqualityManager(); - PwqualityManager(const PwqualityManager&) = delete; - - int m_passwordMinLen; - int m_passwordMaxLen; -}; -} - -#endif // DEEPIN_INSTALLER_PWQUALITY_MANAGER_H diff --git a/dcc-old/src/plugin-commoninfo/window/userexperienceprogramwidget.cpp b/dcc-old/src/plugin-commoninfo/window/userexperienceprogramwidget.cpp deleted file mode 100644 index ae1a56a050..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/userexperienceprogramwidget.cpp +++ /dev/null @@ -1,85 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "userexperienceprogramwidget.h" -#include "src/plugin-commoninfo/operation/commoninfomodel.h" -#include "src/frame/utils.h" -#include "widgets/switchwidget.h" - -#include -#include - -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE -UserExperienceProgramWidget::UserExperienceProgramWidget(QWidget *parent) - : QWidget(parent) -{ - setAccessibleName("UserExperienceProgramWidget"); - QVBoxLayout *vBoxLayout = new QVBoxLayout; - - m_joinUeProgram = new SwitchWidget(); - m_joinUeProgram->addBackground(); - //~ contents_path /commoninfo/User Experience Program - //~ child_page User Experience Program - m_joinUeProgram->setTitle(tr("Join User Experience Program")); - - QString text = ""; - QString http = IS_COMMUNITY_SYSTEM ? tr("https://www.deepin.org/en/agreement/privacy/") : tr("https://www.uniontech.com/agreement/privacy-en"); - if (IS_COMMUNITY_SYSTEM) { - text = tr("

Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. " - "If you refuse our collection and use of the aforementioned information, do not join User Experience Program. " - "For details, please refer to Deepin Privacy Policy ( %1).

") - .arg(http); - } else { - text = tr("

Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. " - "If you refuse our collection and use of the aforementioned information, do not join User Experience Program. " - "To know more about the management of your data, please refer to UnionTech OS Privacy Policy ( %1).

") - .arg(http); - } - - DTipLabel *label = new DTipLabel(text); - - label->setTextFormat(Qt::RichText); - label->setAlignment(Qt::AlignJustify | Qt::AlignLeft); - label->setWordWrap(true); - connect(label, &QLabel::linkActivated, this, [](const QString &link) { - QDesktopServices::openUrl(QUrl(link)); - }); - - vBoxLayout->setMargin(0); - vBoxLayout->setContentsMargins(0, 10, 0, 10); - vBoxLayout->setSpacing(0); - vBoxLayout->addWidget(m_joinUeProgram); - vBoxLayout->addSpacing(8); - vBoxLayout->addWidget(label); - vBoxLayout->addStretch(); - - setLayout(vBoxLayout); - - connect(m_joinUeProgram, &SwitchWidget::checkedChanged, this, [this](bool state) { - m_joinUeProgram->setEnabled(false); - QTimer::singleShot(0, this, [ = ] { - this->enableUeProgram(state); - }); - }); -} - -void UserExperienceProgramWidget::setModel(CommonInfoModel *model) -{ - setDefaultUeProgram(model->ueProgram()); - connect(model, &CommonInfoModel::ueProgramChanged, m_joinUeProgram, [this](const bool enable) { - m_joinUeProgram->setEnabled(true); - m_joinUeProgram->setChecked(enable); - }); -} - -void UserExperienceProgramWidget::setDefaultUeProgram(const bool enabled) -{ - m_joinUeProgram->setChecked(enabled); -} diff --git a/dcc-old/src/plugin-commoninfo/window/userexperienceprogramwidget.h b/dcc-old/src/plugin-commoninfo/window/userexperienceprogramwidget.h deleted file mode 100644 index d87771e8c4..0000000000 --- a/dcc-old/src/plugin-commoninfo/window/userexperienceprogramwidget.h +++ /dev/null @@ -1,28 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" - -#include - - -namespace DCC_NAMESPACE { -class SwitchWidget; -class CommonInfoModel; - -class UserExperienceProgramWidget : public QWidget -{ - Q_OBJECT -public: - explicit UserExperienceProgramWidget(QWidget *parent = nullptr); - - void setModel(CommonInfoModel *model); - void setDefaultUeProgram(const bool enabled); -Q_SIGNALS: - void enableUeProgram(bool enabled); - -private: - SwitchWidget *m_joinUeProgram; -}; -} diff --git a/dcc-old/src/plugin-datetime/operation/datetimedbusproxy.cpp b/dcc-old/src/plugin-datetime/operation/datetimedbusproxy.cpp deleted file mode 100644 index f3f368005f..0000000000 --- a/dcc-old/src/plugin-datetime/operation/datetimedbusproxy.cpp +++ /dev/null @@ -1,247 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "datetimedbusproxy.h" - -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcDateTimeDbusProxy, "dcc-datetime-dbusproxy") - -const QString TimedateService = QStringLiteral("org.deepin.dde.Timedate1"); -const QString TimedatePath = QStringLiteral("/org/deepin/dde/Timedate1"); -const QString TimedateInterface = QStringLiteral("org.deepin.dde.Timedate1"); - -const QString SystemTimedatedService = QStringLiteral("org.deepin.dde.Timedate1"); -const QString SystemTimedatedPath = QStringLiteral("/org/deepin/dde/Timedate1"); -const QString SystemTimedatedInterface = QStringLiteral("org.deepin.dde.Timedate1"); - -const QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); -const QString PropertiesChanged = QStringLiteral("PropertiesChanged"); - -const QString LangSelectorService = QStringLiteral("org.deepin.dde.LangSelector1"); -const QString LangSelectorPath = QStringLiteral("/org/deepin/dde/LangSelector1"); -const QString LangSelectorInterface = QStringLiteral("org.deepin.dde.LangSelector1"); - -DatetimeDBusProxy::DatetimeDBusProxy(QObject *parent) - : QObject(parent) - , m_localeInter(new QDBusInterface(LangSelectorService, LangSelectorPath, LangSelectorInterface, QDBusConnection::sessionBus(), this)) - , m_timedateInter(new QDBusInterface(TimedateService, TimedatePath, TimedateInterface, QDBusConnection::sessionBus(), this)) - , m_systemtimedatedInter(new QDBusInterface(SystemTimedatedService, SystemTimedatedPath, SystemTimedatedInterface, QDBusConnection::systemBus(), this)) -{ - registerZoneInfoMetaType(); - - qRegisterMetaType("LocaleInfo"); - qDBusRegisterMetaType(); - - qRegisterMetaType("LocaleList"); - qDBusRegisterMetaType(); - QDBusConnection::sessionBus().connect(TimedateService, TimedatePath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); -} - -bool DatetimeDBusProxy::use24HourFormat() -{ - return qvariant_cast(m_timedateInter->property("Use24HourFormat")); -} -void DatetimeDBusProxy::setUse24HourFormat(bool value) -{ - m_timedateInter->setProperty("Use24HourFormat", QVariant::fromValue(value)); -} - -int DatetimeDBusProxy::weekdayFormat() -{ - return qvariant_cast(m_timedateInter->property("WeekdayFormat")); -} -void DatetimeDBusProxy::setWeekdayFormat(int value) -{ - m_timedateInter->setProperty("WeekdayFormat", QVariant::fromValue(value)); -} - -int DatetimeDBusProxy::longDateFormat() -{ - return qvariant_cast(m_timedateInter->property("LongDateFormat")); -} -void DatetimeDBusProxy::setLongDateFormat(int value) -{ - m_timedateInter->setProperty("LongDateFormat", QVariant::fromValue(value)); -} - -int DatetimeDBusProxy::shortDateFormat() -{ - return qvariant_cast(m_timedateInter->property("ShortDateFormat")); -} -void DatetimeDBusProxy::setShortDateFormat(int value) -{ - m_timedateInter->setProperty("ShortDateFormat", QVariant::fromValue(value)); -} - -int DatetimeDBusProxy::longTimeFormat() -{ - return qvariant_cast(m_timedateInter->property("LongTimeFormat")); -} -void DatetimeDBusProxy::setLongTimeFormat(int value) -{ - m_timedateInter->setProperty("LongTimeFormat", QVariant::fromValue(value)); -} - -int DatetimeDBusProxy::shortTimeFormat() -{ - return qvariant_cast(m_timedateInter->property("ShortTimeFormat")); -} -void DatetimeDBusProxy::setShortTimeFormat(int value) -{ - m_timedateInter->setProperty("ShortTimeFormat", QVariant::fromValue(value)); -} - -int DatetimeDBusProxy::weekBegins() -{ - return qvariant_cast(m_timedateInter->property("WeekBegins")); -} -void DatetimeDBusProxy::setWeekBegins(int value) -{ - m_timedateInter->setProperty("WeekBegins", QVariant::fromValue(value)); -} - -QString DatetimeDBusProxy::nTPServer() -{ - return qvariant_cast(m_timedateInter->property("NTPServer")); -} - -QString DatetimeDBusProxy::timezone() -{ - return qvariant_cast(m_timedateInter->property("Timezone")); -} - -bool DatetimeDBusProxy::nTP() -{ - return qvariant_cast(m_timedateInter->property("NTP")); -} - -QStringList DatetimeDBusProxy::userTimezones() -{ - return qvariant_cast(m_timedateInter->property("UserTimezones")); -} - -void DatetimeDBusProxy::onPropertiesChanged(const QDBusMessage &message) -{ - QVariantMap changedProps = qdbus_cast(message.arguments().at(1).value()); - for (QVariantMap::const_iterator it = changedProps.cbegin(); it != changedProps.cend(); ++it) { - QMetaObject::invokeMethod(this, it.key().toLatin1() + "Changed", Qt::DirectConnection, QGenericArgument(it.value().typeName(), it.value().data())); - } -} - -// Timedate -void DatetimeDBusProxy::SetNTP(bool useNTP) -{ - m_timedateInter->asyncCall(QStringLiteral("SetNTP"), useNTP); -} -void DatetimeDBusProxy::SetNTP(bool useNTP, QObject *receiver, const char *member, const char *errorSlot) -{ - QList argumentList; - argumentList << QVariant::fromValue(useNTP); - m_timedateInter->callWithCallback(QStringLiteral("SetNTP"), argumentList, receiver, member, errorSlot); -} - -void DatetimeDBusProxy::SetDate(int year, int month, int day, int hour, int min, int sec, int nsec) -{ - m_timedateInter->asyncCall(QStringLiteral("SetDate"), year, month, day, hour, min, sec, nsec); -} -void DatetimeDBusProxy::SetDate(const QDateTime &datetime, QObject *receiver, const char *member) -{ - const QDate date = datetime.date(); - const QTime time = datetime.time(); - QList argumentList; - argumentList << QVariant::fromValue(date.year()) << QVariant::fromValue(date.month()) << QVariant::fromValue(date.day()); - argumentList << QVariant::fromValue(time.hour()) << QVariant::fromValue(time.minute()) << QVariant::fromValue(time.second()) << 0; - m_timedateInter->callWithCallback(QStringLiteral("SetDate"), argumentList, receiver, member); -} -void DatetimeDBusProxy::DeleteUserTimezone(const QString &zone) -{ - m_timedateInter->asyncCall(QStringLiteral("DeleteUserTimezone"), zone); -} - -void DatetimeDBusProxy::AddUserTimezone(const QString &zone) -{ - m_timedateInter->asyncCall(QStringLiteral("AddUserTimezone"), zone); -} - -QStringList DatetimeDBusProxy::GetSampleNTPServers() -{ - return QDBusPendingReply(m_timedateInter->asyncCall(QStringLiteral("GetSampleNTPServers"))); -} - -bool DatetimeDBusProxy::GetSampleNTPServers(QObject *receiver, const char *member) -{ - QList argumentList; - return m_timedateInter->callWithCallback(QStringLiteral("GetSampleNTPServers"), argumentList, receiver, member); -} - -ZoneInfo DatetimeDBusProxy::GetZoneInfo(const QString &zone) -{ - return QDBusPendingReply(m_timedateInter->asyncCall(QStringLiteral("GetZoneInfo"), zone)); -} -bool DatetimeDBusProxy::GetZoneInfo(const QString &zone, QObject *receiver, const char *member) -{ - QList argumentList; - argumentList << QVariant::fromValue(zone); - return m_timedateInter->callWithCallback(QStringLiteral("GetZoneInfo"), argumentList, receiver, member); -} - -// System Timedate -void DatetimeDBusProxy::SetTimezone(const QString &timezone) -{ - m_timedateInter->asyncCall(QStringLiteral("SetTimezone"), timezone); -} - -void DatetimeDBusProxy::SetNTPServer(const QString &server, const QString &message) -{ - m_systemtimedatedInter->asyncCall(QStringLiteral("SetNTPServer"), server, message); -} - -void DatetimeDBusProxy::SetNTPServer(const QString &server, const QString &message, QObject *receiver, const char *member, const char *errorSlot) -{ - QList argumentList; - argumentList << QVariant::fromValue(server) << QVariant::fromValue(message); - m_systemtimedatedInter->callWithCallback(QStringLiteral("SetNTPServer"), argumentList, receiver, member, errorSlot); -} - -QString DatetimeDBusProxy::currentLocale() -{ - QDBusInterface dbus(LangSelectorService, LangSelectorPath, LangSelectorInterface, QDBusConnection::sessionBus()); - return qvariant_cast(dbus.property("CurrentLocale")); -} - -std::optional DatetimeDBusProxy::getLocaleListMap() -{ - QDBusPendingReply reply = m_localeInter->asyncCall(QStringLiteral("GetLocaleList")); - reply.waitForFinished(); - if (reply.isError()) { - qCDebug(DdcDateTimeDbusProxy) << "Can not get localeRegion: "<< reply.error(); - return std::nullopt; - } - return reply.value(); -} - -std::optional DatetimeDBusProxy::getLocaleRegion() -{ - QDBusPendingReply reply = m_localeInter->asyncCall(QStringLiteral("GetLocaleRegion")); - reply.waitForFinished(); - if (reply.isError()) { - qCDebug(DdcDateTimeDbusProxy) << "Can not get localeRegion: "<< reply.error(); - return std::nullopt; - } - if (reply.value().isEmpty()) { - return std::nullopt; - } else { - return reply.value(); - } -} - -void DatetimeDBusProxy::setLocaleRegion(const QString &locale) -{ - m_localeInter->asyncCall(QStringLiteral("SetLocaleRegion"), locale); -} diff --git a/dcc-old/src/plugin-datetime/operation/datetimedbusproxy.h b/dcc-old/src/plugin-datetime/operation/datetimedbusproxy.h deleted file mode 100644 index 3689bebfaf..0000000000 --- a/dcc-old/src/plugin-datetime/operation/datetimedbusproxy.h +++ /dev/null @@ -1,151 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DATETIMEDBUSPROXY_H -#define DATETIMEDBUSPROXY_H - -#include "zoneinfo.h" -#include -#include - -#include -class QDBusInterface; -class QDBusMessage; -class QDateTime; - -class LocaleInfo -{ -public: - LocaleInfo() { } - - friend QDBusArgument &operator<<(QDBusArgument &arg, const LocaleInfo &info) - { - arg.beginStructure(); - arg << info.id << info.name; - arg.endStructure(); - - return arg; - } - - friend const QDBusArgument &operator>>(const QDBusArgument &arg, LocaleInfo &info) - { - arg.beginStructure(); - arg >> info.id >> info.name; - arg.endStructure(); - - return arg; - } - - friend QDataStream &operator<<(QDataStream &ds, const LocaleInfo &info) - { - return ds << info.id << info.name; - } - - friend const QDataStream &operator>>(QDataStream &ds, LocaleInfo &info) - { - return ds >> info.id >> info.name; - } - - bool operator==(const LocaleInfo &info) { return id == info.id && name == info.name; } - -public: - QString id{ "" }; - QString name{ "" }; -}; - -typedef QList LocaleList; -Q_DECLARE_METATYPE(LocaleInfo) -Q_DECLARE_METATYPE(LocaleList) - -class DatetimeDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit DatetimeDBusProxy(QObject *parent = nullptr); - static QString currentLocale(); - // Timedate - Q_PROPERTY(bool Use24HourFormat READ use24HourFormat WRITE setUse24HourFormat NOTIFY Use24HourFormatChanged) - bool use24HourFormat(); - void setUse24HourFormat(bool value); - Q_PROPERTY(int WeekdayFormat READ weekdayFormat WRITE setWeekdayFormat NOTIFY WeekdayFormatChanged) - int weekdayFormat(); - void setWeekdayFormat(int value); - Q_PROPERTY(int LongDateFormat READ longDateFormat WRITE setLongDateFormat NOTIFY LongDateFormatChanged) - int longDateFormat(); - void setLongDateFormat(int value); - Q_PROPERTY(int ShortDateFormat READ shortDateFormat WRITE setShortDateFormat NOTIFY ShortDateFormatChanged) - int shortDateFormat(); - void setShortDateFormat(int value); - Q_PROPERTY(int LongTimeFormat READ longTimeFormat WRITE setLongTimeFormat NOTIFY LongTimeFormatChanged) - int longTimeFormat(); - void setLongTimeFormat(int value); - Q_PROPERTY(int ShortTimeFormat READ shortTimeFormat WRITE setShortTimeFormat NOTIFY ShortTimeFormatChanged) - int shortTimeFormat(); - void setShortTimeFormat(int value); - Q_PROPERTY(int WeekBegins READ weekBegins WRITE setWeekBegins NOTIFY WeekBeginsChanged) - int weekBegins(); - void setWeekBegins(int value); - Q_PROPERTY(QString NTPServer READ nTPServer NOTIFY NTPServerChanged) - QString nTPServer(); - Q_PROPERTY(QString Timezone READ timezone NOTIFY TimezoneChanged) - QString timezone(); - Q_PROPERTY(bool NTP READ nTP NOTIFY NTPChanged) - bool nTP(); - Q_PROPERTY(QStringList UserTimezones READ userTimezones NOTIFY UserTimezonesChanged) - QStringList userTimezones(); - - // Locale - std::optional getLocaleListMap(); - std::optional getLocaleRegion(); - - void setLocaleRegion(const QString &locale); - -Q_SIGNALS: // SIGNALS - // Timedate - // begin property changed signals - void CanNTPChanged(bool value) const; - void DSTOffsetChanged(int value) const; - void LocalRTCChanged(bool value) const; - void LongDateFormatChanged(int value) const; - void LongTimeFormatChanged(int value) const; - void NTPChanged(bool value) const; - void NTPServerChanged(const QString &value) const; - void ShortDateFormatChanged(int value) const; - void ShortTimeFormatChanged(int value) const; - void TimezoneChanged(const QString &value) const; - void Use24HourFormatChanged(bool value) const; - void UserTimezonesChanged(const QStringList &value) const; - void WeekBeginsChanged(int value) const; - void WeekdayFormatChanged(int value) const; - -public Q_SLOTS: - // Timedate - void SetNTP(bool useNTP); - void SetNTP(bool useNTP, QObject *receiver, const char *member, const char *errorSlot); - void SetDate(int year, int month, int day, int hour, int min, int sec, int nsec); - void SetDate(const QDateTime &datetime, QObject *receiver, const char *member); - void DeleteUserTimezone(const QString &zone); - void AddUserTimezone(const QString &zone); - QStringList GetSampleNTPServers(); - bool GetSampleNTPServers(QObject *receiver, const char *member); - ZoneInfo GetZoneInfo(const QString &zone); - bool GetZoneInfo(const QString &zone, QObject *receiver, const char *member); - // System Timedate - void SetTimezone(const QString &timezone); - void SetNTPServer(const QString &server, const QString &message); - void SetNTPServer(const QString &server, - const QString &message, - QObject *receiver, - const char *member, - const char *errorSlot); - -private Q_SLOTS: - void onPropertiesChanged(const QDBusMessage &message); - -private: - QDBusInterface *m_localeInter; - QDBusInterface *m_timedateInter; - QDBusInterface *m_systemtimedatedInter; -}; - -#endif // DATETIMEDBUSPROXY_H diff --git a/dcc-old/src/plugin-datetime/operation/datetimemodel.cpp b/dcc-old/src/plugin-datetime/operation/datetimemodel.cpp deleted file mode 100644 index f60a38a752..0000000000 --- a/dcc-old/src/plugin-datetime/operation/datetimemodel.cpp +++ /dev/null @@ -1,226 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "datetimemodel.h" - -#include -#include -#include - -DatetimeModel::DatetimeModel(QObject *parent) - : QObject(parent) - , m_ntp(true) - , m_bUse24HourType(true) -{ -} - -void DatetimeModel::setNTP(bool ntp) -{ - if (m_ntp != ntp) { - m_ntp = ntp; - Q_EMIT NTPChanged(ntp); - } -} - -void DatetimeModel::set24HourFormat(bool state) -{ - if (m_bUse24HourType != state) { - m_bUse24HourType = state; - Q_EMIT hourTypeChanged(state); - } -} - -#ifndef DCC_DISABLE_TIMEZONE -QString DatetimeModel::systemTimeZoneId() const -{ - return m_systemTimeZoneId; -} - -void DatetimeModel::setSystemTimeZoneId(const QString &systemTimeZoneId) -{ - if (m_systemTimeZoneId != systemTimeZoneId) { - m_systemTimeZoneId = systemTimeZoneId; - Q_EMIT systemTimeZoneIdChanged(systemTimeZoneId); - } -} -#endif - -QList DatetimeModel::userTimeZones() const -{ - return m_userTimeZones; -} - -void DatetimeModel::addUserTimeZone(const ZoneInfo &zone) -{ - const QString zoneName = zone.getZoneName(); - - if (!m_userZoneIds.contains(zoneName)) { - m_userZoneIds.append(zoneName); - m_userTimeZones.append(zone); - Q_EMIT userTimeZoneAdded(zone); - } -} - -void DatetimeModel::removeUserTimeZone(const ZoneInfo &zone) -{ - const QString zoneName = zone.getZoneName(); - - if (m_userZoneIds.contains(zoneName)) { - m_userZoneIds.removeAll(zoneName); - m_userTimeZones.removeAll(zone); - Q_EMIT userTimeZoneRemoved(zone); - } -} - -void DatetimeModel::setCurrentTimeZone(const ZoneInfo ¤tTimeZone) -{ - if (m_currentTimeZone == currentTimeZone) - return; - - m_currentTimeZone = currentTimeZone; - - Q_EMIT currentTimeZoneChanged(currentTimeZone); -} - -void DatetimeModel::setCurrentUseTimeZone(const ZoneInfo ¤tSysTimeZone) -{ - if (m_currentSystemTimeZone == currentSysTimeZone) - return; - - m_currentSystemTimeZone = currentSysTimeZone; - - Q_EMIT currentSystemTimeZoneChanged(currentSysTimeZone); -} - -void DatetimeModel::setNtpServerAddress(const QString &ntpServer) -{ - if (m_strNtpServerAddress != ntpServer) { - m_strNtpServerAddress = ntpServer; - Q_EMIT NTPServerChanged(ntpServer); - } -} - -void DatetimeModel::setNTPServerList(const QStringList &list) -{ - if (m_NtpServerList != list) { - m_NtpServerList = list; - Q_EMIT NTPServerListChanged(list); - } -} - -void DatetimeModel::setTimeZoneInfo(const QString &timeZone) -{ - if (m_timeZones != timeZone) { - m_timeZones = timeZone; - Q_EMIT timeZoneChanged(timeZone); - } -} - -void DatetimeModel::setCountry(const QString &country) -{ - if (m_country != country) { - m_country = country; - Q_EMIT countryChanged(country); - } -} - -void DatetimeModel::setLocaleName(const QString &localeName) -{ - if (m_localeName != localeName) { - m_localeName = localeName; - Q_EMIT localeNameChanged(localeName); - } -} - -void DatetimeModel::setLangRegion(const QString &langCountry) -{ - if (m_langCountry != langCountry) { - m_langCountry = langCountry; - Q_EMIT langCountryChanged(langCountry); - } -} - -void DatetimeModel::setFirstDayOfWeek(const int &firstDayOfWeekFormat) -{ - if (m_firstDayOfWeekFormat != firstDayOfWeekFormat) { - m_firstDayOfWeekFormat = firstDayOfWeekFormat; - Q_EMIT firstDayOfWeekFormatChanged(firstDayOfWeekFormat); - } -} - -void DatetimeModel::setShortDateFormat(const QString &shortDateFormat) -{ - if (m_shortDateFormat != shortDateFormat) { - m_shortDateFormat = shortDateFormat; - Q_EMIT shortDateFormatChanged(shortDateFormat); - } -} - -void DatetimeModel::setLongDateFormat(const QString &longDateFormat) -{ - if (m_longDateFormat != longDateFormat) { - m_longDateFormat = longDateFormat; - Q_EMIT longDateFormatChanged(longDateFormat); - } -} - -void DatetimeModel::setShortTimeFormat(const QString &shortTimeFormat) -{ - if (m_shortTimeFormat != shortTimeFormat) { - m_shortTimeFormat = shortTimeFormat; - Q_EMIT shortTimeFormatChanged(shortTimeFormat); - } -} - -void DatetimeModel::setLongTimeFormat(const QString &longTimeFormat) -{ - if (m_longTimeFormat != longTimeFormat) { - m_longTimeFormat = longTimeFormat; - Q_EMIT longTimeFormatChanged(longTimeFormat); - } -} - -void DatetimeModel::setCurrencyFormat(const QString ¤cyFormat) -{ - if (m_currencyFormat != currencyFormat) { - m_currencyFormat = currencyFormat; - Q_EMIT currencyFormatChanged(currencyFormat); - } -} - -void DatetimeModel::setNumberFormat(const QString &numberFormat) -{ - if (m_numberFormat != numberFormat) { - m_numberFormat = numberFormat; - Q_EMIT numberFormatChanged(numberFormat); - } -} - -void DatetimeModel::setPaperFormat(const QString &paperFormat) -{ - if (m_paperFormat != paperFormat) { - m_paperFormat = paperFormat; - Q_EMIT paperFormatChanged(paperFormat); - } -} - -void DatetimeModel::setRegionFormat(const RegionFormat ®ionFormat) -{ - if (m_regionFormat != regionFormat) { - m_regionFormat = regionFormat; - } -} - -void DatetimeModel::setCountries(const QStringList &countries) -{ - if (m_countries != countries) { - m_countries = countries; - } -} - -void DatetimeModel::setRegions(const Regions ®ions) -{ - if (m_regions != regions) { - m_regions = regions; - } -} diff --git a/dcc-old/src/plugin-datetime/operation/datetimemodel.h b/dcc-old/src/plugin-datetime/operation/datetimemodel.h deleted file mode 100644 index 108076a1e4..0000000000 --- a/dcc-old/src/plugin-datetime/operation/datetimemodel.h +++ /dev/null @@ -1,148 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DATETIMEMODEL_H -#define DATETIMEMODEL_H - -#include - -#include "zoneinfo.h" -#include "regionproxy.h" - -class DatetimeModel : public QObject -{ - Q_OBJECT -public: - using Regions = QMap; - - explicit DatetimeModel(QObject *parent = nullptr); - - inline bool nTP() const { return m_ntp; } - void setNTP(bool ntp); - inline bool get24HourFormat() const { return m_bUse24HourType; } - - QList userTimeZones() const; - void addUserTimeZone(const ZoneInfo &zone); - void removeUserTimeZone(const ZoneInfo &zone); -#ifndef DCC_DISABLE_TIMEZONE - QString systemTimeZoneId() const; - void setSystemTimeZoneId(const QString &systemTimeZoneId); -#endif - inline ZoneInfo currentTimeZone() const - { - return m_currentTimeZone; - } - void setCurrentTimeZone(const ZoneInfo ¤tTimeZone); - - inline ZoneInfo currentSystemTimeZone() const { return m_currentSystemTimeZone; } - void setCurrentUseTimeZone(const ZoneInfo ¤tTimeZone); - - inline QString ntpServerAddress() const { return m_strNtpServerAddress; } - void setNtpServerAddress(const QString &ntpServer); - - inline QStringList ntpServerList() const { return m_NtpServerList; } - void setNTPServerList(const QStringList &list); - - inline QString getTimeZone() const { return m_timeZones; } - void setTimeZoneInfo(const QString &timeZone); - - inline QString country() const { return m_country; } - void setCountry(const QString &country); - - inline QString localeName() const { return m_localeName; } - void setLocaleName(const QString &localeName); - - inline QString langRegion() const { return m_langCountry; } - void setLangRegion(const QString &langCountry); - - inline int firstDayOfWeekFormat() const { return m_firstDayOfWeekFormat; } - void setFirstDayOfWeek(const int &firstDayOfWeekFormat); - - inline QString shortDateFormat() const { return m_shortDateFormat; } - void setShortDateFormat(const QString &shortDateFormat); - - inline QString longDateFormat() const { return m_longDateFormat; } - void setLongDateFormat(const QString &longDateFormat); - - inline QString shortTimeFormat() const { return m_shortTimeFormat; } - void setShortTimeFormat(const QString &shortTimeFormat); - - inline QString longTimeFormat() const { return m_longTimeFormat; } - void setLongTimeFormat(const QString &longTimeFormat); - - inline QString currencyFormat() const { return m_currencyFormat; } - void setCurrencyFormat(const QString ¤cyFormat); - - inline QString numberFormat() const { return m_numberFormat; } - void setNumberFormat(const QString &numberFormat); - - inline QString paperFormat() const { return m_paperFormat; } - void setPaperFormat(const QString &paperFormat); - - inline RegionFormat regionFormat() const { return m_regionFormat; } - void setRegionFormat(const RegionFormat ®ionFormat); - - inline QStringList countries() const { return m_countries; } - void setCountries(const QStringList &countries); - - inline Regions regions() const { return m_regions; } - void setRegions(const Regions ®ions); - -Q_SIGNALS: - void NTPChanged(bool value); - void hourTypeChanged(bool value); - void userTimeZoneAdded(const ZoneInfo &zone); - void userTimeZoneRemoved(const ZoneInfo &zone); - void systemTimeZoneIdChanged(const QString &zone); - void systemTimeChanged(); - void currentTimeZoneChanged(const ZoneInfo &zone) const; - void currentSystemTimeZoneChanged(const ZoneInfo &zone) const; - void NTPServerChanged(QString server); - void NTPServerListChanged(QStringList list); - void NTPServerNotChanged(QString server); - void timeZoneChanged(QString value); - void localeNameChanged(const QString &localeName); - void countryChanged(const QString &country); - void langCountryChanged(const QString &langCountry); - void firstDayOfWeekFormatChanged(const int firstDayOfWeekFormat); - void shortDateFormatChanged(const QString &shortDateFormat); - void longDateFormatChanged(const QString &longDate); - void shortTimeFormatChanged(const QString &shortTimeFormat); - void longTimeFormatChanged(const QString &longTimeFormat); - void currencyFormatChanged(const QString ¤cyFormat); - void numberFormatChanged(const QString &numberFormat); - void paperFormatChanged(const QString &numberFormat); - -public Q_SLOTS: - void set24HourFormat(bool state); - -private: - bool m_ntp; - bool m_bUse24HourType; - QStringList m_userZoneIds; -#ifndef DCC_DISABLE_TIMEZONE - QString m_systemTimeZoneId; -#endif - QList m_userTimeZones; - ZoneInfo m_currentTimeZone; - ZoneInfo m_currentSystemTimeZone; - QString m_strNtpServerAddress; - QStringList m_NtpServerList; - QString m_timeZones; - QString m_country; - QString m_langCountry; - QStringList m_countries; - Regions m_regions; - QString m_localeName; - int m_firstDayOfWeekFormat; - QString m_shortDateFormat; - QString m_longDateFormat; - QString m_shortTimeFormat; - QString m_longTimeFormat; - QString m_currencyFormat; - QString m_numberFormat; - QString m_paperFormat; - RegionFormat m_regionFormat; -}; - -#endif // DATETIMEMODEL_H diff --git a/dcc-old/src/plugin-datetime/operation/datetimeworker.cpp b/dcc-old/src/plugin-datetime/operation/datetimeworker.cpp deleted file mode 100644 index 32b71fe35d..0000000000 --- a/dcc-old/src/plugin-datetime/operation/datetimeworker.cpp +++ /dev/null @@ -1,401 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "datetimeworker.h" -#include "datetimedbusproxy.h" -#include "regionproxy.h" -#include - -#include -#include -#include - -#include -#include - -Q_LOGGING_CATEGORY(DdcDateTimeWorkder, "dcc-datetime-worker") - - -DatetimeWorker::DatetimeWorker(DatetimeModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_timedateInter(new DatetimeDBusProxy(this)) - , m_regionInter(new RegionProxy(this)) - , m_config(DTK_CORE_NAMESPACE::DConfig::createGeneric("org.deepin.region-format", QString(), this)) -{ -#ifndef DCC_DISABLE_TIMEZONE - connect(m_timedateInter, &DatetimeDBusProxy::UserTimezonesChanged, this, &DatetimeWorker::onTimezoneListChanged); - connect(m_timedateInter, &DatetimeDBusProxy::TimezoneChanged, m_model, &DatetimeModel::setSystemTimeZoneId); -#endif - connect(m_timedateInter, &DatetimeDBusProxy::NTPChanged, m_model, &DatetimeModel::setNTP); - connect(m_timedateInter, &DatetimeDBusProxy::Use24HourFormatChanged, m_model, &DatetimeModel::set24HourFormat); - - connect(m_timedateInter, &DatetimeDBusProxy::TimezoneChanged, this, [=](const QString &value) { - auto tzinfo = GetZoneInfo(value); - if (tzinfo.getZoneName().length() == 0) { - tzinfo = GetZoneInfo(QTimeZone::systemTimeZoneId()); - } - m_model->setCurrentUseTimeZone(tzinfo); - }); - - connect(m_timedateInter, &DatetimeDBusProxy::NTPServerChanged, m_model, &DatetimeModel::setNtpServerAddress); - connect(m_timedateInter, &DatetimeDBusProxy::TimezoneChanged, m_model, &DatetimeModel::setTimeZoneInfo); - - m_model->setCurrentTimeZone(GetZoneInfo(QTimeZone::systemTimeZoneId())); - m_model->setCurrentUseTimeZone(GetZoneInfo(m_timedateInter->timezone())); - m_model->set24HourFormat(m_timedateInter->use24HourFormat()); - - refreshNtpServerList(); - m_model->setNtpServerAddress(m_timedateInter->nTPServer()); - m_model->setTimeZoneInfo(m_timedateInter->timezone()); - m_model->setNTP(m_timedateInter->nTP()); - - initRegionFormatData(); -} - -DatetimeWorker::~DatetimeWorker() -{ -} - -void DatetimeWorker::activate() -{ - if (!m_regionInter->isActive()) { - m_regionInter->active(); - m_model->setCountries(m_regionInter->countries()); - m_model->setRegions(m_regionInter->regions()); - } - m_model->setNTP(m_timedateInter->nTP()); -#ifndef DCC_DISABLE_TIMEZONE - m_model->setSystemTimeZoneId(m_timedateInter->timezone()); - onTimezoneListChanged(m_timedateInter->userTimezones()); -#endif -} - -void DatetimeWorker::deactivate() -{ -} - -void DatetimeWorker::setNTP(bool ntp) -{ - Q_EMIT requestSetAutoHide(false); - m_timedateInter->SetNTP(ntp, this, SLOT(setAutoHide()), SLOT(setNTPError())); -} -void DatetimeWorker::setAutoHide() -{ - Q_EMIT requestSetAutoHide(true); -} -void DatetimeWorker::setNTPError() -{ - Q_EMIT m_model->NTPChanged(m_model->nTP()); - setAutoHide(); -} - -void DatetimeWorker::setDatetime(const QDateTime &datetime) -{ - Q_EMIT requestSetAutoHide(false); - qCDebug(DdcDateTimeWorkder) << "start setDatetime"; - m_setDatetime = new QDateTime(datetime); - m_timedateInter->SetNTP(false, this, SLOT(setDatetimeStart()), SLOT(setAutoHide())); -} -void DatetimeWorker::setDatetimeStart() -{ - if (m_setDatetime) { - qCDebug(DdcDateTimeWorkder) << "set ntp success, m_timedateInter->SetDate"; - m_timedateInter->SetDate(*m_setDatetime, this, SLOT(setDateFinished())); - delete m_setDatetime; - m_setDatetime = nullptr; - } - setAutoHide(); -} -void DatetimeWorker::setDateFinished() -{ - Q_EMIT m_model->systemTimeChanged(); -} -void DatetimeWorker::set24HourType(bool state) -{ - m_timedateInter->setUse24HourFormat(state); -} - -#ifndef DCC_DISABLE_TIMEZONE -void DatetimeWorker::setTimezone(const QString &timezone) -{ - m_timedateInter->SetTimezone(timezone); -} - -void DatetimeWorker::removeUserTimeZone(const ZoneInfo &info) -{ - m_timedateInter->DeleteUserTimezone(info.getZoneName()); -} - -void DatetimeWorker::addUserTimeZone(const QString &zone) -{ - m_timedateInter->AddUserTimezone(zone); -} - -void DatetimeWorker::setNtpServer(QString server) -{ - qInfo() << "Try set server : " << server; - - if (server.isEmpty() && server == m_timedateInter->nTPServer()) - return; - m_timedateInter->SetNTPServer(server, tr("Authentication is required to change NTP server"), this, SLOT(SetNTPServerFinished()), SLOT(SetNTPServerError())); -} - -void DatetimeWorker::SetNTPServerFinished() -{ - qInfo() << "set server success."; - Q_EMIT m_model->NTPServerChanged(m_timedateInter->nTPServer()); -} -void DatetimeWorker::SetNTPServerError() -{ - qInfo() << "Not set server success."; - Q_EMIT m_model->NTPServerNotChanged(m_timedateInter->nTPServer()); -} - -void DatetimeWorker::setWeekdayFormat(int type) -{ - m_timedateInter->setWeekdayFormat(type); -} - -void DatetimeWorker::setShortDateFormat(int type) -{ - m_timedateInter->setShortDateFormat(type); -} - -void DatetimeWorker::setLongDateFormat(int type) -{ - m_timedateInter->setLongDateFormat(type); -} - -void DatetimeWorker::setLongTimeFormat(int type) -{ - m_timedateInter->setLongTimeFormat(type); -} - -void DatetimeWorker::setShortTimeFormat(int type) -{ - m_timedateInter->setShortTimeFormat(type); -} - -void DatetimeWorker::setWeekStartDayFormat(int type) -{ - m_timedateInter->setWeekBegins(type); -} - -void DatetimeWorker::onTimezoneListChanged(const QStringList &timezones) -{ - QList zones = m_model->userTimeZones(); - QStringList zonesName; - for (const ZoneInfo &zone : zones) { - zonesName.append(zone.getZoneName()); - } - for (const QString &zone : timezones) { - zonesName.removeOne(zone); - m_timedateInter->GetZoneInfo(zone, this, SLOT(getZoneInfoFinished(ZoneInfo))); - } - for (const ZoneInfo &zone : zones) { - if (zonesName.contains(zone.getZoneName())) { - m_model->removeUserTimeZone(zone); - } - } -} - -void DatetimeWorker::getZoneInfoFinished(ZoneInfo zoneInfo) -{ - m_model->addUserTimeZone(zoneInfo); -} -#endif - -void DatetimeWorker::refreshNtpServerList() -{ - m_timedateInter->GetSampleNTPServers(this, SLOT(getSampleNTPServersFinished(const QStringList &))); -} - -void DatetimeWorker::getSampleNTPServersFinished(const QStringList &serverList) -{ - m_model->setNTPServerList(serverList); -} - -ZoneInfo DatetimeWorker::GetZoneInfo(const QString &zoneId) -{ - return m_timedateInter->GetZoneInfo(zoneId); -} - -void DatetimeWorker::initRegionFormatData() -{ - if (!m_config->isValid()) - return; - - if (m_config->isDefaultValue(country_key)) { - m_model->setCountry(m_regionInter->systemCountry()); - } else { - m_model->setCountry(m_config->value(country_key).toString()); - } - if (m_config->isDefaultValue(languageRegion_key) || m_config->value(languageRegion_key).toString().isEmpty()) { - m_model->setLangRegion(m_regionInter->langCountry()); - } else { - m_model->setLangRegion(m_config->value(languageRegion_key).toString()); - } - if (m_config->isDefaultValue(localeName_key)) { - m_model->setLocaleName(QLocale::system().name()); - } else { - m_model->setLocaleName(m_config->value(localeName_key).toString()); - } - if (m_config->isDefaultValue(firstDayOfWeek_key)) { - QLocale locale(QLocale::system().name()); - m_model->setFirstDayOfWeek(m_regionInter->regionFormat(locale).firstDayOfWeekFormat); - } else { - m_model->setFirstDayOfWeek(m_config->value(firstDayOfWeek_key).toInt()); - } - if (m_config->isDefaultValue(shortDateFormat_key)) { - QLocale locale(QLocale::system().name()); - m_model->setShortDateFormat(m_regionInter->regionFormat(locale).shortDateFormat); - } else { - m_model->setShortDateFormat(m_config->value(shortDateFormat_key).toString()); - } - if (m_config->isDefaultValue(longDateFormat_key)) { - QLocale locale(QLocale::system().name()); - m_model->setLongDateFormat(m_regionInter->regionFormat(locale).longDateFormat); - } else { - m_model->setLongDateFormat(m_config->value(longDateFormat_key).toString()); - } - if (m_config->isDefaultValue(shortTimeFormat_key)) { - QLocale locale(QLocale::system().name()); - m_model->setShortTimeFormat(m_regionInter->regionFormat(locale).shortTimeFormat); - } else { - m_model->setShortTimeFormat(m_config->value(shortTimeFormat_key).toString()); - } - if (m_config->isDefaultValue(longTimeFormat_key)) { - QLocale locale(QLocale::system().name()); - m_model->setLongTimeFormat(m_regionInter->regionFormat(locale).longTimeFormat); - } else { - m_model->setLongTimeFormat(m_config->value(longTimeFormat_key).toString()); - } - if (m_config->isDefaultValue(currencyFormat_key)) { - QLocale locale(QLocale::system().name()); - m_model->setCurrencyFormat(m_regionInter->regionFormat(locale).currencyFormat); - } else { - m_model->setCurrencyFormat(m_config->value(currencyFormat_key).toString()); - } - if (m_config->isDefaultValue(numberFormat_key)) { - QLocale locale(QLocale::system().name()); - m_model->setNumberFormat(m_regionInter->regionFormat(locale).numberFormat); - } else { - m_model->setNumberFormat(m_config->value(numberFormat_key).toString()); - } - if (m_config->isDefaultValue(paperFormat_key)) { - QLocale locale(QLocale::system().name()); - m_model->setPaperFormat(m_regionInter->regionFormat(locale).paperFormat); - } else { - m_model->setPaperFormat(m_config->value(paperFormat_key).toString()); - } - - RegionFormat regionFormat; - regionFormat.firstDayOfWeekFormat = m_model->firstDayOfWeekFormat(); - regionFormat.shortDateFormat = m_model->shortDateFormat(); - regionFormat.longDateFormat = m_model->longDateFormat(); - regionFormat.shortTimeFormat = m_model->shortTimeFormat(); - regionFormat.longTimeFormat = m_model->longTimeFormat(); - regionFormat.paperFormat = m_model->paperFormat(); - regionFormat.currencyFormat = m_model->currencyFormat(); - regionFormat.numberFormat = m_model->numberFormat(); - m_model->setRegionFormat(regionFormat); - - connect(m_config, &DTK_CORE_NAMESPACE::DConfig::valueChanged, this, [this] (const QString &key) { - if (key == country_key) { - m_model->setCountry(m_config->value(key).toString()); - } else if (key == languageRegion_key) { - m_model->setLangRegion(m_config->value(key).toString()); - } else if (key == localeName_key) { - m_model->setLocaleName(m_config->value(key).toString()); - } else if (key == firstDayOfWeek_key) { - m_model->setFirstDayOfWeek(m_config->value(key).toInt()); - } else if (key == shortDateFormat_key) { - m_model->setShortDateFormat(m_config->value(key).toString()); - } else if (key == longDateFormat_key) { - m_model->setLongDateFormat(m_config->value(key).toString()); - } else if (key == shortTimeFormat_key) { - m_model->setShortTimeFormat(m_config->value(key).toString()); - } else if (key == longTimeFormat_key) { - m_model->setLongTimeFormat(m_config->value(key).toString()); - } else if (key == currencyFormat_key) { - m_model->setCurrencyFormat(m_config->value(key).toString()); - } else if (key == numberFormat_key) { - m_model->setNumberFormat(m_config->value(key).toString()); - } else if (key == paperFormat_key) { - m_model->setPaperFormat(m_config->value(key).toString()); - } - }); -} - -std::optional DatetimeWorker::getSupportedLocale() -{ - if (m_supportedLocaleList.has_value()) { - return m_supportedLocaleList; - } - static QString LOCALE_LIST_FILE = QStringLiteral(LOCALE_I18N_PATH); - QFile file(LOCALE_LIST_FILE); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) - return std::nullopt; - QStringList localelist; - QTextStream in(&file); - while (!in.atEnd()) { - QString line = in.readLine(); - QStringList out = line.split(" "); - localelist.push_back(out[0]); - } - m_supportedLocaleList = localelist; - return m_supportedLocaleList; -} - -std::optional DatetimeWorker::getAllLocale() -{ - return m_timedateInter->getLocaleListMap(); -} - -std::optional DatetimeWorker::getLocaleRegion() -{ - return m_timedateInter->getLocaleRegion(); -} - -void DatetimeWorker::setLocaleRegion(const QString &locale) -{ - m_timedateInter->setLocaleRegion(locale); -} - -void DatetimeWorker::setConfigValue(const QString &key, const QVariant &value) -{ - m_config->setValue(key, value); -} - -void DatetimeWorker::genLocale(const QString &localeName) -{ - static QString localeConfPath = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) + QDir::separator() + "locale.conf"; - - QSettings settings(localeConfPath, QSettings::IniFormat); - - auto supportedLocaleListRes = getSupportedLocale(); - if (!supportedLocaleListRes.has_value()) { - return; - } - - QStringList supportedLocaleList = supportedLocaleListRes.value(); - QString localeSet; - if (QString otherLocaleName = localeName + ".UTF-8"; - supportedLocaleList.contains(otherLocaleName)) { - localeSet = otherLocaleName; - } else if (supportedLocaleList.contains(localeName)) { - localeSet = localeName; - } else { - return; - } - - settings.setValue("LC_NUMERIC", localeSet); - settings.setValue("LC_MONETARY", localeSet); - settings.setValue("LC_TIME", localeSet); - settings.setValue("LC_PAPER", localeSet); - settings.setValue("LC_NAME", localeSet); - settings.setValue("LC_ADDRESS", localeSet); - settings.setValue("LC_TELEPHONE", localeSet); - settings.setValue("LC_MEASUREMENT", localeSet); -} diff --git a/dcc-old/src/plugin-datetime/operation/datetimeworker.h b/dcc-old/src/plugin-datetime/operation/datetimeworker.h deleted file mode 100644 index d3394923f9..0000000000 --- a/dcc-old/src/plugin-datetime/operation/datetimeworker.h +++ /dev/null @@ -1,92 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DATETIMEWORKER_H -#define DATETIMEWORKER_H - -#include "datetimemodel.h" -#include "datetimedbusproxy.h" - -#include - -#include - -#include -#include - -class DatetimeDBusProxy; -class RegionProxy; - -DCORE_BEGIN_NAMESPACE -class DConfig; -DCORE_END_NAMESPACE - -class DatetimeWorker : public QObject -{ - Q_OBJECT -public: - explicit DatetimeWorker(DatetimeModel *model, QObject *parent = nullptr); - ~DatetimeWorker(); - - void activate(); - void deactivate(); - DatetimeModel *model() { return m_model; } - - std::optional getAllLocale(); - std::optional getLocaleRegion(); - - void setLocaleRegion(const QString &locale); - void setConfigValue(const QString &key, const QVariant &value); - -Q_SIGNALS: - void requestSetAutoHide(const bool visible) const; - -public Q_SLOTS: - void setNTP(bool ntp); - void setDatetime(const QDateTime &time); - void set24HourType(bool state); -#ifndef DCC_DISABLE_TIMEZONE - void setTimezone(const QString &timezone); - void removeUserTimeZone(const ZoneInfo &info); - void addUserTimeZone(const QString &zone); -#endif - void setNtpServer(QString server); - - void setWeekdayFormat(int type); - void setShortDateFormat(int type); - void setLongDateFormat(int type); - void setLongTimeFormat(int type); - void setShortTimeFormat(int type); - void setWeekStartDayFormat(int type); - - void genLocale(const QString &localeName); - -private Q_SLOTS: -#ifndef DCC_DISABLE_TIMEZONE - void onTimezoneListChanged(const QStringList &timezones); -#endif - void setAutoHide(); - void setNTPError(); - void setDatetimeStart(); - void setDateFinished(); - void getSampleNTPServersFinished(const QStringList &serverList); - void SetNTPServerFinished(); - void SetNTPServerError(); - void getZoneInfoFinished(ZoneInfo zoneInfo); - -private: - void refreshNtpServerList(); - ZoneInfo GetZoneInfo(const QString &zoneId); - void initRegionFormatData(); - std::optional getSupportedLocale(); - -private: - DatetimeModel *m_model; - DatetimeDBusProxy *m_timedateInter; - QDateTime *m_setDatetime; - RegionProxy *m_regionInter; - DTK_CORE_NAMESPACE::DConfig *m_config; - std::optional m_supportedLocaleList; -}; - -#endif // DATETIMEWORKER_H diff --git a/dcc-old/src/plugin-datetime/operation/qrc/datetime.qrc b/dcc-old/src/plugin-datetime/operation/qrc/datetime.qrc deleted file mode 100644 index 267df3ade3..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/datetime.qrc +++ /dev/null @@ -1,18 +0,0 @@ - - - icons/dcc_nav_datetime_42px.svg - icons/dcc_nav_datetime_84px.svg - texts/dcc_clock_white_16px.svg - texts/dcc_noun_minute_16px.svg - texts/dcc_noun_hour_16px.svg - texts/dcc_clock_black_16px.svg - texts/dcc_noun_second_16px.svg - resource/deepindigitaltimes-Regular.ttf - images/indicator_active.png - images/timezone_map_big2.png - images/timezone_map_big.png - images/timezone_map_big@1x.svg - images/timezone_map_big@2x.png - images/popup_menu.css - - \ No newline at end of file diff --git a/dcc-old/src/plugin-datetime/operation/qrc/icons/dcc_nav_datetime_42px.svg b/dcc-old/src/plugin-datetime/operation/qrc/icons/dcc_nav_datetime_42px.svg deleted file mode 100644 index 3ca1ed2134..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/icons/dcc_nav_datetime_42px.svg +++ /dev/null @@ -1,57 +0,0 @@ - - - dcc_nav_datetime_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-datetime/operation/qrc/icons/dcc_nav_datetime_84px.svg b/dcc-old/src/plugin-datetime/operation/qrc/icons/dcc_nav_datetime_84px.svg deleted file mode 100644 index 39ed24ac67..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/icons/dcc_nav_datetime_84px.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - dcc_nav_datetime_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-datetime/operation/qrc/images/indicator_active.png b/dcc-old/src/plugin-datetime/operation/qrc/images/indicator_active.png deleted file mode 100644 index 12dc84d284..0000000000 Binary files a/dcc-old/src/plugin-datetime/operation/qrc/images/indicator_active.png and /dev/null differ diff --git a/dcc-old/src/plugin-datetime/operation/qrc/images/popup_menu.css b/dcc-old/src/plugin-datetime/operation/qrc/images/popup_menu.css deleted file mode 100644 index dd9ef4b137..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/images/popup_menu.css +++ /dev/null @@ -1,27 +0,0 @@ -/** Used in class PopupMenu **/ - -QHeaderView, -QHeaderView::section, -QListCornerButton::section { - background-color: transparent; -} - -QListView { - font-size: 12px; - border: none; - margin: 4px 0px; - padding: 0px; - background: transparent; - - /* make the selection span the entire width of the view */ - show-decoration-selected: 0; -} - -QListView::item { - background: transparent; - height: 24px; - padding: 0px; - margin: 0px; - outline: none; - border-bottom: 1px solid rgba(0, 0, 0, 0.05); -} diff --git a/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big.png b/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big.png deleted file mode 100644 index 9a3c3ad586..0000000000 Binary files a/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big.png and /dev/null differ diff --git a/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big2.png b/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big2.png deleted file mode 100644 index 3ecb365616..0000000000 Binary files a/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big2.png and /dev/null differ diff --git a/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big@1x.svg b/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big@1x.svg deleted file mode 100644 index e2c18e0d54..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big@1x.svg +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big@2x.png b/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big@2x.png deleted file mode 100644 index a6fb8f1888..0000000000 Binary files a/dcc-old/src/plugin-datetime/operation/qrc/images/timezone_map_big@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-datetime/operation/qrc/resource/deepindigitaltimes-Regular.ttf b/dcc-old/src/plugin-datetime/operation/qrc/resource/deepindigitaltimes-Regular.ttf deleted file mode 100644 index e981d825f6..0000000000 Binary files a/dcc-old/src/plugin-datetime/operation/qrc/resource/deepindigitaltimes-Regular.ttf and /dev/null differ diff --git a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_clock_black_16px.svg b/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_clock_black_16px.svg deleted file mode 100644 index 36ac2e555e..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_clock_black_16px.svg +++ /dev/null @@ -1,50 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_clock_white_16px.svg b/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_clock_white_16px.svg deleted file mode 100644 index 5f2cf1dca7..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_clock_white_16px.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_hour_16px.svg b/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_hour_16px.svg deleted file mode 100644 index 8cbdc7dc02..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_hour_16px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_minute_16px.svg b/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_minute_16px.svg deleted file mode 100644 index fc614a83d8..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_minute_16px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_second_16px.svg b/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_second_16px.svg deleted file mode 100644 index 5e969e5aaf..0000000000 --- a/dcc-old/src/plugin-datetime/operation/qrc/texts/dcc_noun_second_16px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-datetime/operation/regionproxy.cpp b/dcc-old/src/plugin-datetime/operation/regionproxy.cpp deleted file mode 100644 index b9861cb0a3..0000000000 --- a/dcc-old/src/plugin-datetime/operation/regionproxy.cpp +++ /dev/null @@ -1,376 +0,0 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "regionproxy.h" - -#include -#include - -static const QDate CurrentDate(2023, 1, 1); -static const QTime CurrentTime(1, 1, 1); - -class Format -{ - enum Type { Date, Time }; - -public: - virtual ~Format() = default; - - inline QStringList daysText() - { - return QStringList() << m_locale.dayName(Qt::Monday) << m_locale.dayName(Qt::Tuesday) - << m_locale.dayName(Qt::Wednesday) << m_locale.dayName(Qt::Thursday) - << m_locale.dayName(Qt::Friday) << m_locale.dayName(Qt::Saturday) - << m_locale.dayName(Qt::Sunday); - } - - inline QStringList shortDatesText() { return textFromFormat(Date, shortDateFormats()); } - - inline QStringList longDatesText() { return textFromFormat(Date, longDateFormats()); } - - inline QStringList shortTimesText() { return textFromFormat(Time, shortTimeFormats()); } - - inline QStringList longTimesText() { return textFromFormat(Time, longTimeFormats()); } - - virtual QStringList shortDateFormats() { return QStringList(); } - - virtual QStringList longDateFormats() { return QStringList(); } - - virtual QStringList shortTimeFormats() { return QStringList(); } - - virtual QStringList longTimeFormats() { return QStringList(); } - - void updateState(QDate date, QTime time, QLocale locale) - { - m_date = date; - m_time = time; - m_locale = locale; - } - -private: - QStringList textFromFormat(Type type, const QStringList &formats) - { - QStringList text; - for (const QString &format : formats) - type == Date ? text << m_locale.toString(m_date, format) - : text << m_locale.toString(m_time, format); - return text; - } - -private: - QDate m_date; - QTime m_time; - -protected: - QLocale m_locale; -}; - -class DefaultFormat : public Format -{ -public: - virtual ~DefaultFormat() override { } - - virtual QStringList shortDateFormats() override - { - return { m_locale.dateFormat(QLocale::ShortFormat) }; - } - - virtual QStringList longDateFormats() override - { - return { m_locale.dateFormat(QLocale::LongFormat) }; - } - - virtual QStringList shortTimeFormats() override - { - return { m_locale.timeFormat(QLocale::ShortFormat) }; - } - - virtual QStringList longTimeFormats() override - { - return { m_locale.timeFormat(QLocale::LongFormat) }; - } -}; - -class ChineseSimpliedFormat : public Format -{ -public: - virtual QStringList shortDateFormats() override - { - return { "yyyy/M/d", "yyyy-M-d", "yyyy.M.d", "yyyy/MM/dd", "yyyy-MM-dd", - "yyyy.MM.dd", "yy/M/d", "yy-M-d", "yy.M.d" }; - } - - virtual QStringList longDateFormats() override - { - return { "yyyy年M月d日", "yyyy年M月d日,dddd", "yyyy年M月d日 dddd", "dddd yyyy年M月d日" }; - } - - virtual QStringList shortTimeFormats() override - { - return { "H:mm", "HH:mm", "AP h:mm", "AP hh:mm" }; - } - - virtual QStringList longTimeFormats() override - { - return { "H:mm:ss", "HH:mm:ss", "AP H:mm:ss", "AP HH:mm:ss" }; - } -}; - -class UKFormat : public Format -{ -public: - virtual QStringList shortDateFormats() override - { - return { "dd/MM/yyyy", "dd/MM/yy", "d/M/yy", "d.M.yy", "yyyy-MM-dd" }; - } - - virtual QStringList longDateFormats() override - { - return { "dd MMMM yyyy", "d MMMM yyyy", "dddd,d MMMM yyyy", "dddd, dd MMMM yyyy" }; - } - - virtual QStringList shortTimeFormats() override - { - return { "HH:mm", "H:mm", "HH:mm AP", "H:mm AP" }; - } - - virtual QStringList longTimeFormats() override - { - return { "HH:mm:ss", "H:mm:ss", "HH:mm:ss ap", "apH:mm:ss ap" }; - } -}; - -class USAFormat : public Format -{ -public: - virtual QStringList shortDateFormats() override - { - return { "M/d/yyyy", "M/d/yy", "MM/dd/yy", "MM/dd/yyyy", - "yy/MM/dd", "yyyy-MM-dd", "dd-MMM-yy" }; - } - - virtual QStringList longDateFormats() override - { - return { "dddd, MMMM d, yyyy", "MMMM d, yyyy", "dddd, d MMMM, yyyy", "d MMMM, yyyy" }; - } - - virtual QStringList shortTimeFormats() override - { - return { "H:mm AP", "HH:mm AP", "H:mm", "HH:mm" }; - } - - virtual QStringList longTimeFormats() override - { - return { "H:mm:ss AP", "HH:mm:ss AP", "H:mm:ss", "HH:mm:ss" }; - } -}; - -class WorldFormat : public Format -{ -public: - virtual QStringList shortDateFormats() override { return { "dd/MM/yyyy", "d MMM yyyy" }; } - - virtual QStringList longDateFormats() override - { - return { "dddd, d MMMM yyyy", "d MMMM yyyy" }; - } - - virtual QStringList shortTimeFormats() override { return { "H:mm AP", "HH:mm" }; } - - virtual QStringList longTimeFormats() override { return { "H:mm:ss AP", "HH:mm:ss" }; } -}; - -RegionAvailableData RegionProxy::m_formatData = RegionAvailableData(); -RegionAvailableData RegionProxy::m_allFormat = RegionAvailableData(); -RegionAvailableData RegionProxy::m_defaultFormat = RegionAvailableData(); -RegionAvailableData RegionProxy::m_customFormat = RegionAvailableData(); - -RegionProxy::RegionProxy(QObject *parent) - : QObject(parent) - , m_translatorLanguage(nullptr) - , m_translatorCountry(nullptr) - , m_isActive(false) -{ -} - -// the locale even has sichuangYi. too many languages -void RegionProxy::active() -{ - if (m_isActive) { - return; - } - m_isActive = true; - m_translatorLanguage = new QTranslator(this); - m_translatorLanguage->load("/usr/share/dde-control-center/translations/datetime_language_" - + QLocale::system().name()); - qApp->installTranslator(m_translatorLanguage); - m_translatorCountry = new QTranslator(this); - m_translatorCountry->load("/usr/share/dde-control-center/translations/datetime_country_" - + QLocale::system().name()); - qApp->installTranslator(m_translatorCountry); - - QList locales = - QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); - locales.removeOne(QLocale::C); - // NOTE: sorry for Sichuang friends - locales.removeOne(QLocale::SichuanYi); - QStringList countries; - for (const auto &locale : locales) { - QString script = locale.scriptToString(locale.script()); - QString language = locale.languageToString(locale.language()); - QString country = locale.countryToString(locale.country()); - // NOTE: sorry for guangdong friends - if (locale.language() == QLocale::Cantonese && locale.language() == QLocale::Chinese) { - continue; - } - if ((locale.country() == QLocale::HongKong || locale.country() == QLocale::Taiwan) - && locale.language() == QLocale::Chinese) - language = "Traditional Chinese"; - if (locale.country() == QLocale::China && locale.language() == QLocale::Chinese) - language = "Simplified Chinese"; - QString langCountry = QString("%1:%2").arg(language).arg(country); - if (!countries.contains(country)) { - countries << country; - m_countries << country; - } - m_regions.insert(langCountry, locale); - } -} - -RegionProxy::~RegionProxy() { } - -Regions RegionProxy::regions() const -{ - return m_regions; -} - -RegionFormat RegionProxy::systemRegionFormat() -{ - return regionFormat(QLocale::system()); -} - -QStringList RegionProxy::countries() const -{ - return m_countries; -} - -QString RegionProxy::systemCountry() const -{ - QString country = QLocale::system().countryToString(QLocale::system().country()); - return country; -} - -QString RegionProxy::langCountry() const -{ - QLocale locale = QLocale::system(); - QString language = locale.languageToString(locale.language()); - QString country = locale.countryToString(locale.country()); - if ((locale.country() == QLocale::HongKong || locale.country() == QLocale::Taiwan) - && locale.language() == QLocale::Chinese) - language = "Traditional Chinese"; - if (locale.country() == QLocale::China && locale.language() == QLocale::Chinese) - language = "Simplified Chinese"; - QString langCountry = QString("%1:%2").arg(language).arg(country); - return langCountry; -} - -RegionFormat RegionProxy::regionFormat(const QLocale &locale) -{ - RegionFormat regionFormat; - regionFormat.firstDayOfWeekFormat = locale.firstDayOfWeek(); - regionFormat.shortDateFormat = locale.dateFormat(QLocale::ShortFormat); - regionFormat.longDateFormat = locale.dateFormat(QLocale::LongFormat); - regionFormat.shortTimeFormat = locale.timeFormat(QLocale::ShortFormat); - regionFormat.longTimeFormat = locale.timeFormat(QLocale::LongFormat); - regionFormat.currencyFormat = locale.currencySymbol(QLocale::CurrencySymbol); - regionFormat.numberFormat = locale.toString(123456789); - regionFormat.paperFormat = "A4"; - - return regionFormat; -} - -RegionAvailableData RegionProxy::allTextData(const QLocale &locale) -{ - RegionAvailableData allTextData; - allTextData += RegionProxy::defaultTextData(locale); - allTextData += RegionProxy::customTextData(locale); - - m_allFormat += m_defaultFormat; - m_allFormat += m_customFormat; - - return allTextData; -} - -RegionAvailableData RegionProxy::allFormat() -{ - return m_allFormat; -} - -RegionAvailableData RegionProxy::customTextData(const QLocale &locale) -{ - qDebug() << locale.country() << locale.language() << locale.name(); - - Format *format = nullptr; - if (locale.country() == QLocale::China && locale.script() == QLocale::SimplifiedHanScript) { - format = new ChineseSimpliedFormat(); - } else if (locale.country() == QLocale::UnitedKingdom - && locale.language() == QLocale::English) { - format = new UKFormat(); - } else if (locale.country() == QLocale::UnitedStates && locale.language() == QLocale::English) { - format = new USAFormat(); - } else if (locale.country() == QLocale::World && locale.language() == QLocale::English) { - format = new WorldFormat(); - } else { - return RegionAvailableData(); - } - - QScopedPointer pFormat(format); - pFormat->updateState(CurrentDate, CurrentTime, locale); - - RegionAvailableData textData; - textData.daysAvailable = pFormat->daysText(); - textData.shortDatesAvailable = pFormat->shortDatesText(); - textData.longDatesAvailable = pFormat->longDatesText(); - textData.shortTimesAvailable = pFormat->shortTimesText(); - textData.longTimesAvailable = pFormat->longTimesText(); - - m_customFormat.daysAvailable = pFormat->daysText(); // TODO format - m_customFormat.shortDatesAvailable = pFormat->shortDateFormats(); - m_customFormat.longDatesAvailable = pFormat->longDateFormats(); - m_customFormat.shortTimesAvailable = pFormat->shortTimeFormats(); - m_customFormat.longTimesAvailable = pFormat->longTimeFormats(); - - return textData; -} - -RegionAvailableData RegionProxy::defaultTextData(const QLocale &locale) -{ - QScopedPointer defaultFormat(new DefaultFormat()); - defaultFormat->updateState(CurrentDate, CurrentTime, locale); - - RegionAvailableData textData; - textData.daysAvailable = defaultFormat->daysText(); - textData.shortDatesAvailable = defaultFormat->shortDatesText(); - textData.longDatesAvailable = defaultFormat->longDatesText(); - textData.shortTimesAvailable = defaultFormat->shortTimesText(); - textData.longTimesAvailable = defaultFormat->longTimesText(); - - m_defaultFormat.daysAvailable = defaultFormat->daysText(); // TODO format - m_defaultFormat.shortDatesAvailable = defaultFormat->shortDateFormats(); - m_defaultFormat.longDatesAvailable = defaultFormat->longDateFormats(); - m_defaultFormat.shortTimesAvailable = defaultFormat->shortTimeFormats(); - m_defaultFormat.longTimesAvailable = defaultFormat->longTimeFormats(); - - return textData; -} - -QDebug operator<<(QDebug debug, const RegionFormat ®ionFormat) -{ - debug << regionFormat.firstDayOfWeekFormat << regionFormat.shortDateFormat - << regionFormat.longDateFormat << regionFormat.shortTimeFormat - << regionFormat.longTimeFormat << regionFormat.currencyFormat << regionFormat.numberFormat - << regionFormat.paperFormat; - - return debug; -} diff --git a/dcc-old/src/plugin-datetime/operation/regionproxy.h b/dcc-old/src/plugin-datetime/operation/regionproxy.h deleted file mode 100644 index 481d866971..0000000000 --- a/dcc-old/src/plugin-datetime/operation/regionproxy.h +++ /dev/null @@ -1,121 +0,0 @@ -//SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef REGIONPROXY_H -#define REGIONPROXY_H - -#include -#include - -const QString localeName_key = "localeName"; -const QString country_key = "country"; -const QString languageRegion_key = "languageRegion"; -const QString firstDayOfWeek_key = "firstDayOfWeek"; -const QString shortDateFormat_key = "shortDateFormat"; -const QString longDateFormat_key = "longDateFormat"; -const QString shortTimeFormat_key = "shortTimeFormat"; -const QString longTimeFormat_key = "longTimeFormat"; -const QString currencyFormat_key = "currencyFormat"; -const QString numberFormat_key = "numberFormat"; -const QString paperFormat_key = "paperFormat"; - -struct RegionFormat { - int firstDayOfWeekFormat = 0; - QString shortDateFormat; - QString longDateFormat; - QString shortTimeFormat; - QString longTimeFormat; - QString currencyFormat; - QString numberFormat; - QString paperFormat; - bool operator!=(const RegionFormat &other) - { - return !(*this == other); - } - bool operator==(const RegionFormat &other) - { - return (this->firstDayOfWeekFormat == other.firstDayOfWeekFormat) && - (this->shortDateFormat == other.shortDateFormat) && - (this->longDateFormat == other.longDateFormat) && - (this->shortTimeFormat == other.shortTimeFormat) && - (this->longTimeFormat == other.longTimeFormat) && - (this->currencyFormat == other.currencyFormat) && - (this->numberFormat == other.numberFormat) && - (this->paperFormat == other.paperFormat); - } -}; - -QDebug operator<<(QDebug debug, const RegionFormat ®ionFormat); - -struct RegionAvailableData { - QStringList daysAvailable; - QStringList shortDatesAvailable; - QStringList longDatesAvailable; - QStringList shortTimesAvailable; - QStringList longTimesAvailable; - RegionAvailableData& operator+=(const RegionAvailableData &rhs) { - for (QString element : rhs.daysAvailable) { - if (daysAvailable.contains(element)) - continue; - daysAvailable << element; - } - for (QString element : rhs.shortDatesAvailable) { - if (shortDatesAvailable.contains(element)) - continue; - shortDatesAvailable << element; - } - for (QString element : rhs.longDatesAvailable) { - if (longDatesAvailable.contains(element)) - continue; - longDatesAvailable << element; - } - for (QString element : rhs.shortTimesAvailable) { - if (shortTimesAvailable.contains(element)) - continue; - shortTimesAvailable << element; - } - for (QString element : rhs.longTimesAvailable) { - if (longTimesAvailable.contains(element)) - continue; - longTimesAvailable << element; - } - return *this; - } -}; - -using Regions = QMap; -class QTranslator; -class RegionProxy : public QObject -{ - Q_OBJECT -public: - explicit RegionProxy(QObject *parent = nullptr); - ~RegionProxy(); - - Regions regions() const; - QStringList countries() const; - QString systemCountry() const; - QString langCountry() const; - - static RegionFormat regionFormat(const QLocale &locale); - static RegionFormat systemRegionFormat(); - static RegionAvailableData allTextData(const QLocale &locale); - static RegionAvailableData allFormat(); - - void active(); - - bool isActive() { return m_isActive; } -private: - QStringList m_countries; - Regions m_regions; - QTranslator *m_translatorLanguage = nullptr; - QTranslator *m_translatorCountry = nullptr; - static RegionAvailableData m_formatData; - static RegionAvailableData m_allFormat, m_defaultFormat, m_customFormat; - static RegionAvailableData customTextData(const QLocale &locale); - static RegionAvailableData defaultTextData(const QLocale &locale); - bool m_isActive; -}; - -#endif // REGIONPROXY_H diff --git a/dcc-old/src/plugin-datetime/operation/zoneinfo.cpp b/dcc-old/src/plugin-datetime/operation/zoneinfo.cpp deleted file mode 100644 index 21f129c0d7..0000000000 --- a/dcc-old/src/plugin-datetime/operation/zoneinfo.cpp +++ /dev/null @@ -1,74 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "zoneinfo.h" - -ZoneInfo::ZoneInfo() - : m_utcOffset(0) - , i2(0) - , i3(0) - , i4(0) -{ -} - -QDebug operator<<(QDebug argument, const ZoneInfo &info) -{ - argument << QString("ZoneInfo("); - argument << info.m_zoneName << "," << info.m_zoneCity << "," << info.m_utcOffset; - argument << ",("; - argument << info.i2 << "," << info.i3 << "," << info.i4; - argument << "))"; - return argument; -} - -QDBusArgument &operator<<(QDBusArgument &argument, const ZoneInfo &info) -{ - argument.beginStructure(); - argument << info.m_zoneName << info.m_zoneCity << info.m_utcOffset; - argument.beginStructure(); - argument << info.i2 << info.i3 << info.i4; - argument.endStructure(); - argument.endStructure(); - return argument; -} - -QDataStream &operator<<(QDataStream &argument, const ZoneInfo &info) -{ - argument << info.m_zoneName << info.m_zoneCity << info.m_utcOffset; - argument << info.i2 << info.i3 << info.i4; - return argument; -} - -const QDBusArgument &operator>>(const QDBusArgument &argument, ZoneInfo &info) -{ - argument.beginStructure(); - argument >> info.m_zoneName >> info.m_zoneCity >> info.m_utcOffset; - argument.beginStructure(); - argument >> info.i2 >> info.i3 >> info.i4; - argument.endStructure(); - argument.endStructure(); - return argument; -} - -const QDataStream &operator>>(QDataStream &argument, ZoneInfo &info) -{ - argument >> info.m_zoneName >> info.m_zoneCity >> info.m_utcOffset; - argument >> info.i2 >> info.i3 >> info.i4; - return argument; -} - -bool ZoneInfo::operator==(const ZoneInfo &what) const -{ - return m_zoneName == what.m_zoneName - && m_zoneCity == what.m_zoneCity - && m_utcOffset == what.m_utcOffset - && i2 == what.i2 - && i3 == what.i3 - && i4 == what.i4; -} - -void registerZoneInfoMetaType() -{ - qRegisterMetaType("ZoneInfo"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-datetime/operation/zoneinfo.h b/dcc-old/src/plugin-datetime/operation/zoneinfo.h deleted file mode 100644 index 93302ce670..0000000000 --- a/dcc-old/src/plugin-datetime/operation/zoneinfo.h +++ /dev/null @@ -1,44 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ZONEINFO_H -#define ZONEINFO_H - -#include -#include -#include -#include -#include - -class ZoneInfo -{ -public: - ZoneInfo(); - - friend QDebug operator<<(QDebug argument, const ZoneInfo &info); - friend QDBusArgument &operator<<(QDBusArgument &argument, const ZoneInfo &info); - friend QDataStream &operator<<(QDataStream &argument, const ZoneInfo &info); - friend const QDBusArgument &operator>>(const QDBusArgument &argument, ZoneInfo &info); - friend const QDataStream &operator>>(QDataStream &argument, ZoneInfo &info); - - bool operator==(const ZoneInfo &what) const; - -public: - inline QString getZoneName() const { return m_zoneName; } - inline QString getZoneCity() const { return m_zoneCity; } - inline int getUTCOffset() const { return m_utcOffset; } - -private: - QString m_zoneName; - QString m_zoneCity; - int m_utcOffset; - qint64 i2; - qint64 i3; - int i4; -}; - -Q_DECLARE_METATYPE(ZoneInfo) - -void registerZoneInfoMetaType(); - -#endif // ZONEINFO_H diff --git a/dcc-old/src/plugin-datetime/window/datetimeplugin.cpp b/dcc-old/src/plugin-datetime/window/datetimeplugin.cpp deleted file mode 100644 index 7b5e15f116..0000000000 --- a/dcc-old/src/plugin-datetime/window/datetimeplugin.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "datetimeplugin.h" -#include "datetimemodel.h" -#include "datetimeworker.h" -#include "regionmodule.h" -#include "timesettingmodule.h" -#include "timezonemodule.h" - -#include -DGUI_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -DatetimeModule::DatetimeModule(QObject *parent) - : HListModule("datetime", tr("Time and Format"), DIconTheme::findQIcon("dcc_nav_datetime"), parent) - , m_model(nullptr) -{ - m_model = new DatetimeModel(this); - m_work = new DatetimeWorker(m_model, this); - - appendChild(new TimeSettingModule(m_model, m_work, this)); - appendChild(new TimezoneModule(m_model, m_work, this)); - appendChild(new RegionModule(m_model, m_work, this)); -} - -void DatetimeModule::active() -{ - m_work->activate(); -} - -DatetimePlugin::DatetimePlugin(QObject *parent) - : PluginInterface(parent) - , m_moduleRoot(nullptr) -{ -} - -DatetimePlugin::~DatetimePlugin() -{ - m_moduleRoot = nullptr; -} - -QString DatetimePlugin::name() const -{ - return QStringLiteral("datetime"); -} - -ModuleObject *DatetimePlugin::module() -{ - if (m_moduleRoot) - return m_moduleRoot; - - m_moduleRoot = new DatetimeModule; - return m_moduleRoot; -} - -QString DatetimePlugin::location() const -{ - return "12"; -} diff --git a/dcc-old/src/plugin-datetime/window/datetimeplugin.h b/dcc-old/src/plugin-datetime/window/datetimeplugin.h deleted file mode 100644 index 7d18ea5290..0000000000 --- a/dcc-old/src/plugin-datetime/window/datetimeplugin.h +++ /dev/null @@ -1,47 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DATETIMEPLUGIN_H -#define DATETIMEPLUGIN_H - -#include "interface/hlistmodule.h" -#include "interface/plugininterface.h" - -class DatetimeModel; -class DatetimeWorker; - -class DatetimeModule : public DCC_NAMESPACE::HListModule -{ - Q_OBJECT -public: - explicit DatetimeModule(QObject *parent = nullptr); - ~DatetimeModule() override {} - virtual void active() override; - -private: - DatetimeModel *m_model; - DatetimeWorker *m_work; - DCC_NAMESPACE::ModuleObject *m_timeSettings; - DCC_NAMESPACE::ModuleObject *m_timezoneList; - DCC_NAMESPACE::ModuleObject *m_timeFormat; -}; - -class DatetimePlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Datetime" FILE "plugin-datetime.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit DatetimePlugin(QObject *parent = nullptr); - ~DatetimePlugin() override; - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; - -private: - DCC_NAMESPACE::ModuleObject *m_moduleRoot; -}; - -#endif // DatetimePLUGIN_H diff --git a/dcc-old/src/plugin-datetime/window/plugin-datetime.json b/dcc-old/src/plugin-datetime/window/plugin-datetime.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-datetime/window/plugin-datetime.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-datetime/window/regionmodule.cpp b/dcc-old/src/plugin-datetime/window/regionmodule.cpp deleted file mode 100644 index eded89adce..0000000000 --- a/dcc-old/src/plugin-datetime/window/regionmodule.cpp +++ /dev/null @@ -1,360 +0,0 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "regionmodule.h" - -#include "customregionformatdialog.h" -#include "datetimemodel.h" -#include "datetimeworker.h" -#include "widgets/widgetmodule.h" - -#include -#include -#include -#include - -#include - -using icu::Locale; -using icu::UnicodeString; - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -RegionModule::RegionModule(DatetimeModel *model, DatetimeWorker *work, QObject *parent) - : PageModule("region", tr("Region and Format"), parent) - , m_model(model) - , m_work(work) - , m_locale(QLocale::system()) -{ - if (!m_model->localeName().isEmpty()) - m_locale = QLocale(m_model->localeName()); - - setNoScroll(false); - - // NOTE: not provide this feature - appendChild(new ItemModule("RegionTitle", tr("Country or Region"))); - appendChild(new WidgetModule("RegionTip", - tr(""), - this, - &RegionModule::initCountryTip)); - initCountryModule(); - appendChild(m_countryModule); - appendChild(new ItemModule("regionFormat", tr("Format"))); - appendChild(new WidgetModule("regionFormatTip", - tr(""), - this, - &RegionModule::initRegionFormatTip)); - initLangRegionModule(); - appendChild(m_langRegionModule); - appendChild(new WidgetModule("", tr(""), [this](DListView *formatList) { - m_listView = formatList; - initFormatList(formatList); - })); - initFormatModificationModule(); - appendChild(m_formatModificationModule); - - m_regionFormat = m_model->regionFormat(); - - connect(m_langRegionModule, &ItemModule::clicked, this, &RegionModule::onLangRegionClicked); - connect(m_model, &DatetimeModel::localeNameChanged, this, [this](const QString &name) { - m_locale = QLocale(name); - }); -} - -void RegionModule::initCountryTip(DTipLabel *countryTipLabel) -{ - countryTipLabel->setWordWrap(true); - countryTipLabel->setAlignment(Qt::AlignLeft); - countryTipLabel->setContentsMargins(10, 0, 10, 0); - countryTipLabel->setText(tr("Operating system and applications may provide you with local content based on your country and region.")); -} - -void RegionModule::initCountryModule() -{ - m_countryModule = new ItemModule("Region", tr("Area"), [this](ModuleObject *) { - m_countryCombo = new DComboBox; - for (const QString &country : m_model->countries()) { - m_countryCombo->addItem( - QString("%1").arg(QCoreApplication::translate("dcc::datetime::Country", - country.toUtf8().data()))); - } - m_countryCombo->setCurrentText( - QString("%1").arg(QCoreApplication::translate("dcc::datetime::Country", - m_model->country().toUtf8().data()))); - connect(m_countryCombo, - qOverload(&QComboBox::currentIndexChanged), - this, - [this](int index) { - QString country = m_model->countries().at(index); - m_work->setConfigValue(country_key, country); - m_model->setCountry(country); - QString language; - QList locales = - QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry); - for (auto locale : locales) { - if (QLocale::countryToString(locale.country()) == country) { - language = QLocale::languageToString(locale.language()); - m_model->setLocaleName(locale.name()); - m_work->setConfigValue(localeName_key, locale.name()); - m_work->genLocale(locale.name()); - break; - } - } - QString langCountry = QString("%1:%2").arg(country).arg(language); - m_work->setConfigValue(languageRegion_key, langCountry); - m_model->setLangRegion(langCountry); - updateRegionFormat(RegionProxy::regionFormat(m_model->localeName())); - }); - connect(m_model, &DatetimeModel::countryChanged, this, [this](const QString &text) { - m_countryCombo->setCurrentText(QString("%1").arg( - QCoreApplication::translate("dcc::datetime::Country", text.toUtf8().data()))); - }); - return m_countryCombo; - }); - m_countryModule->setBackground(true); -} - -void RegionModule::initRegionFormatTip(DTipLabel *regionFormatTipLabel) -{ - regionFormatTipLabel->setWordWrap(true); - regionFormatTipLabel->setAlignment(Qt::AlignLeft); - regionFormatTipLabel->setContentsMargins(10, 0, 10, 0); - regionFormatTipLabel->setText( - tr("Operating system and applications may set date and time formats based on regional formats.")); -} - -void RegionModule::initLangRegionModule() -{ - m_langRegionModule = - new ItemModule("languageRegion", tr("Region format"), [this](ModuleObject *) { - QWidget *widget = new QWidget; - m_langRegionLabel = new QLabel; - m_langRegionLabel->setText( - getTranslation(m_model->localeName(), m_model->langRegion())); - connect(m_model, - &DatetimeModel::langCountryChanged, - this, - [this](const QString &text) { - m_langRegionLabel->setText(getTranslation(m_model->localeName(), text)); - }); - QLabel *langRegionEnterLabel = new QLabel; - langRegionEnterLabel->setPixmap( - DStyle::standardIcon(widget->style(), DStyle::SP_ArrowEnter) - .pixmap(16, 16)); - QHBoxLayout *hLayout = new QHBoxLayout; - hLayout->addStretch(0); - hLayout->addWidget(m_langRegionLabel); - hLayout->addWidget(langRegionEnterLabel); - widget->setLayout(hLayout); - return widget; - }); - m_langRegionModule->setBackground(true); - m_langRegionModule->setClickable(true); -} - -void RegionModule::initFormatList(DListView *formatList) -{ - QStandardItemModel *viewModel = new QStandardItemModel; - formatList->setFrameShape(QFrame::NoFrame); - formatList->setSelectionMode(QAbstractItemView::NoSelection); - formatList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - formatList->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - formatList->setEditTriggers(QAbstractItemView::NoEditTriggers); - formatList->setSpacing(0); - formatList->setItemSpacing(0); - formatList->setViewportMargins(0, 0, 0, 0); - formatList->setModel(viewModel); - formatList->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - formatList->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - // first day of week - DStandardItem *dayItem = new DStandardItem; - dayItem->setText(tr("First day of week")); - m_dayAction = new DViewItemAction; - QString day = m_locale.standaloneDayName(m_model->firstDayOfWeekFormat()); - m_dayAction->setText(day); - dayItem->setActionList(Qt::RightEdge, DViewItemActionList() << m_dayAction); - connect(m_model, &DatetimeModel::firstDayOfWeekFormatChanged, this, [this](const int day) { - QString dayStr = m_locale.standaloneDayName(day); - m_dayAction->setText(dayStr); - }); - - // short date - DStandardItem *shortDateItem = new DStandardItem; - shortDateItem->setText(tr("Short date")); - m_shortDateAction = new DViewItemAction; - m_shortDateAction->setText(m_locale.toString(QDate::currentDate(), m_model->shortDateFormat())); - shortDateItem->setActionList(Qt::RightEdge, DViewItemActionList() << m_shortDateAction); - connect(m_model, &DatetimeModel::shortDateFormatChanged, this, [this](const QString &text) { - m_shortDateAction->setText(m_locale.toString(QDate::currentDate(), text)); - }); - - // long date - DStandardItem *longDateItem = new DStandardItem; - longDateItem->setText(tr("Long date")); - m_longDateAction = new DViewItemAction; - m_longDateAction->setText(m_locale.toString(QDate::currentDate(), m_model->longDateFormat())); - longDateItem->setActionList(Qt::RightEdge, DViewItemActionList() << m_longDateAction); - connect(m_model, &DatetimeModel::longDateFormatChanged, this, [this](const QString &text) { - m_longDateAction->setText(m_locale.toString(QDate::currentDate(), text)); - }); - - // short time - DStandardItem *shortTimeItem = new DStandardItem; - shortTimeItem->setText(tr("Short time")); - m_shortTimeAction = new DViewItemAction; - m_shortTimeAction->setText(m_locale.toString(QTime::currentTime(), m_model->shortTimeFormat())); - shortTimeItem->setActionList(Qt::RightEdge, DViewItemActionList() << m_shortTimeAction); - connect(m_model, &DatetimeModel::shortTimeFormatChanged, this, [this](const QString &text) { - m_shortTimeAction->setText(m_locale.toString(QTime::currentTime(), text)); - }); - - // long time - DStandardItem *longTimeItem = new DStandardItem; - longTimeItem->setText(tr("Long time")); - m_longTimeAction = new DViewItemAction; - m_longTimeAction->setText(m_locale.toString(QTime::currentTime(), m_model->longTimeFormat())); - longTimeItem->setActionList(Qt::RightEdge, DViewItemActionList() << m_longTimeAction); - connect(m_model, &DatetimeModel::longTimeFormatChanged, this, [this](const QString &text) { - m_longTimeAction->setText(m_locale.toString(QTime::currentTime(), text)); - }); - - // currency - DStandardItem *currencyItem = new DStandardItem; - currencyItem->setText(tr("Currency symbol")); - m_currencyAction = new DViewItemAction; - m_currencyAction->setText(m_model->currencyFormat()); - currencyItem->setActionList(Qt::RightEdge, DViewItemActionList() << m_currencyAction); - connect(m_model, &DatetimeModel::currencyFormatChanged, this, [this](const QString &text) { - m_currencyAction->setText(text.toUtf8()); - }); - - // number - DStandardItem *numberItem = new DStandardItem; - numberItem->setText(tr("Numbers")); - m_numberAction = new DViewItemAction; - m_numberAction->setText(m_model->numberFormat()); - numberItem->setActionList(Qt::RightEdge, DViewItemActionList() << m_numberAction); - connect(m_model, &DatetimeModel::numberFormatChanged, this, [this](const QString &text) { - m_numberAction->setText(text.toUtf8()); - }); - - // paper - DStandardItem *paperItem = new DStandardItem; - paperItem->setText(tr("Paper")); - m_paperAction = new DViewItemAction; - m_paperAction->setText(m_model->paperFormat()); - paperItem->setActionList(Qt::RightEdge, DViewItemActionList() << m_paperAction); - connect(m_model, &DatetimeModel::paperFormatChanged, this, [this](const QString &text) { - m_paperAction->setText(text.toUtf8()); - }); - - viewModel->appendRow(dayItem); - viewModel->appendRow(shortDateItem); - viewModel->appendRow(longDateItem); - viewModel->appendRow(shortTimeItem); - viewModel->appendRow(longTimeItem); - viewModel->appendRow(currencyItem); - viewModel->appendRow(numberItem); - viewModel->appendRow(paperItem); -} - -void RegionModule::initFormatModificationModule() -{ - m_formatModificationModule = new ItemModule("", tr(""), [this](ModuleObject *) { - QWidget *widget = new QWidget; - QHBoxLayout *hlayout = new QHBoxLayout(widget); - hlayout->setSpacing(0); - hlayout->setMargin(0); - DCommandLinkButton *button = new DCommandLinkButton(tr("Custom Format")); - connect(button, &QPushButton::clicked, this, [this]() { - CustomRegionFormatDialog dlg; - connect(&dlg, - &CustomRegionFormatDialog::customFormatSaved, - this, - [this](const RegionFormat ®ionFormat) { - updateRegionFormat(regionFormat); - }); - dlg.initRegionFormat(m_locale, m_regionFormat); - dlg.exec(); - }); - hlayout->addStretch(0); - hlayout->addWidget(button); - return widget; - }); - appendChild(m_formatModificationModule); -} - -void RegionModule::updateRegionFormat(const RegionFormat ®ionFormat) -{ - m_regionFormat = regionFormat; - m_dayAction->setText(m_locale.standaloneDayName(regionFormat.firstDayOfWeekFormat)); - m_shortDateAction->setText( - m_locale.toString(QDate::currentDate(), regionFormat.shortDateFormat)); - m_longDateAction->setText(m_locale.toString(QDate::currentDate(), regionFormat.longDateFormat)); - m_shortTimeAction->setText( - m_locale.toString(QTime::currentTime(), regionFormat.shortTimeFormat)); - m_longTimeAction->setText(m_locale.toString(QTime::currentTime(), regionFormat.longTimeFormat)); - m_currencyAction->setText(regionFormat.currencyFormat); - m_numberAction->setText(regionFormat.numberFormat); - m_paperAction->setText(regionFormat.paperFormat); - m_listView->update(); - - m_work->setConfigValue(firstDayOfWeek_key, regionFormat.firstDayOfWeekFormat); - m_work->setConfigValue(shortDateFormat_key, regionFormat.shortDateFormat); - m_work->setConfigValue(longDateFormat_key, regionFormat.longDateFormat); - m_work->setConfigValue(shortTimeFormat_key, regionFormat.shortTimeFormat); - m_work->setConfigValue(longTimeFormat_key, regionFormat.longTimeFormat); - m_work->setConfigValue(currencyFormat_key, regionFormat.currencyFormat); - m_work->setConfigValue(numberFormat_key, regionFormat.numberFormat); - m_work->setConfigValue(paperFormat_key, regionFormat.paperFormat); -} - -void RegionModule::onLangRegionClicked() -{ - RegionFormatDialog dlg(this->m_model); - qRegisterMetaType("RegionFormat"); - dlg.setCurrentRegion(m_langRegionLabel->text()); - connect(&dlg, - &RegionFormatDialog::regionFormatSaved, - this, - [this](const QString &langRegion, const QLocale &locale) { - m_langRegion = langRegion; - m_locale = locale; - m_langRegionLabel->setText(getTranslation(locale.name(), langRegion)); - m_work->setConfigValue(languageRegion_key, langRegion); - m_work->setConfigValue(localeName_key, locale.name()); - m_work->genLocale(locale.name()); - m_model->setLocaleName(locale.name()); - updateRegionFormat(RegionProxy::regionFormat(m_locale)); - }); - dlg.exec(); -} - -QString RegionModule::getTranslation(const QString &localeName, const QString &langRegion) -{ - // This is legacy code that no longer used, if the code is ever needed, this should be - // replaced with DCCLocale::languageAndRegionName() - - QStringList langRegions = langRegion.split(":"); - if (langRegions.size() < 2) { - return langRegion; - } - - auto localeSystem = QLocale::system(); - auto systemLocale = Locale(localeSystem.name().toStdString().data()); - auto IcuLocale = Locale(localeName.toStdString().data()); - auto localeHex = UnicodeString(localeName.toStdString().data()); - std::string displayLanguageIcu; - IcuLocale.getDisplayLanguage(systemLocale, localeHex).toUTF8String(displayLanguageIcu); - std::string displayCountryIcu; - IcuLocale.getDisplayCountry(systemLocale, localeHex).toUTF8String(displayCountryIcu); - - QString displaylanguage = QString::fromStdString(displayLanguageIcu); - QString displayCountry = QString::fromStdString(displayCountryIcu); - QString langCountry = QString("%1(%2)").arg(displaylanguage).arg(displayCountry); - - return langCountry; -} diff --git a/dcc-old/src/plugin-datetime/window/regionmodule.h b/dcc-old/src/plugin-datetime/window/regionmodule.h deleted file mode 100644 index b9a341e4cb..0000000000 --- a/dcc-old/src/plugin-datetime/window/regionmodule.h +++ /dev/null @@ -1,82 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef REGIONMODULE_H -#define REGIONMODULE_H - -#include "interface/pagemodule.h" -#include "settingsitem.h" -#include "regionformatdialog.h" -#include "itemmodule.h" - -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -namespace DCC_NAMESPACE { -class SettingsGroup; -} - -using DCC_NAMESPACE::SettingsItem; -class DatetimeModel; -class DatetimeWorker; - -class RegionModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit RegionModule(DatetimeModel *model, - DatetimeWorker *work, - QObject *parent = nullptr); - -private: - void initCountryTip(DTipLabel *countryTipLabel); - void initCountryModule(); - void initRegionFormatTip(DTipLabel *countryTipLabel); - void initLangRegionModule(); - void initFormatList(DListView *view); - void initFormatModificationModule(); - void updateRegionFormat(const RegionFormat ®ionFormat); - QString getTranslation(const QString &localeName,const QString &langRegion); - -private slots: - void onLangRegionClicked(); - -private: - DatetimeModel *m_model = nullptr; - DatetimeWorker *m_work = nullptr; - DComboBox *m_countryCombo = nullptr; - QLabel *m_langRegionLabel = nullptr; - DViewItemAction *m_dayAction = nullptr; - DViewItemAction *m_shortDateAction = nullptr; - DViewItemAction *m_longDateAction = nullptr; - DViewItemAction *m_shortTimeAction = nullptr; - DViewItemAction *m_longTimeAction = nullptr; - DViewItemAction *m_currencyAction = nullptr; - DViewItemAction *m_numberAction = nullptr; - DViewItemAction *m_paperAction = nullptr; - const QStringList m_fotmatWeek; - const QStringList m_fotmatLongDate; - const QStringList m_fotmatShortDate; - const QStringList m_fotmatLongTime; - const QStringList m_fotmatShortTime; - const QStringList m_weekStartWithDay; - QString m_langRegion; - QLocale m_locale; - RegionFormat m_regionFormat; - - ItemModule *m_countryModule = nullptr; - ItemModule *m_langRegionModule = nullptr; - ItemModule *m_formatModificationModule = nullptr; - - DListView *m_listView = nullptr; -}; - -#endif // FORMATSETTINGMODULE_H diff --git a/dcc-old/src/plugin-datetime/window/timesettingmodule.cpp b/dcc-old/src/plugin-datetime/window/timesettingmodule.cpp deleted file mode 100644 index ca4805e781..0000000000 --- a/dcc-old/src/plugin-datetime/window/timesettingmodule.cpp +++ /dev/null @@ -1,446 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "timesettingmodule.h" -#include "datetimemodel.h" -#include "datetimeworker.h" -#include "clock.h" -#include "datewidget.h" -#include "widgets/widgetmodule.h" -#include "widgets/settingsgroup.h" -#include "widgets/switchwidget.h" -#include "widgets/comboxwidget.h" -#include "widgets/lineeditwidget.h" -#include "widgets/buttontuple.h" - -#include -#include -#include - -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcDateTimeTimeSettingModule, "dcc-datetime-timesettingmodule") - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -const static int SpinBtnLength = 26; - -class TimeSpinBox : public QSpinBox -{ -public: - explicit TimeSpinBox(QWidget *parent = nullptr) - : QSpinBox(parent) - { - this->lineEdit()->setMaxLength(2); - } - -protected: - QString textFromValue(int value) const override - { - return QString("%1").arg(value, 2, 10, QLatin1Char('0')); - } -}; - -TimeSettingModule::TimeSettingModule(DatetimeModel *model, DatetimeWorker *work, QObject *parent) - : PageModule("timeSettings", tr("Time Settings"), parent) - , m_model(model) - , m_work(work) -{ - deactive(); - appendChild(new WidgetModule("time", tr("Time"))); - appendChild(new WidgetModule("ntpServer", tr("Auto Sync"), this, &TimeSettingModule::initAutoSyncTime)); - appendChild(new WidgetModule("time", QString(), this, &TimeSettingModule::initTimeSetting)); - appendChild(new WidgetModule("datetime", QString(), this, &TimeSettingModule::initDigitalClock)); - - ModuleObject *saveButton = new WidgetModule("datetimeDatesettingConfirmbtn","",[this](ButtonTuple *buttonTuple){ - m_buttonTuple = buttonTuple; - m_buttonTuple->setButtonType(ButtonTuple::Save); - QPushButton *cancelButton = m_buttonTuple->leftButton(); - QPushButton *confirmButton = m_buttonTuple->rightButton(); - cancelButton->setText(tr("Reset")); - confirmButton->setText(tr("Save")); - connect(cancelButton, &QPushButton::clicked, this, &TimeSettingModule::onCancelButtonClicked); - connect(cancelButton, &QPushButton::clicked, this, &TimeSettingModule::onCancelButtonClicked); - connect(confirmButton, &QPushButton::clicked, this, &TimeSettingModule::onConfirmButtonClicked); - connect(cancelButton, &QPushButton::clicked, this, [this] { - setBtnEnable(false); - }); - connect(confirmButton, &QPushButton::clicked, this, [this] { - setBtnEnable(false); - }); - setButtonShowState(m_model->nTP()); - setBtnEnable(false); - }); - saveButton->setExtra(); - appendChild(saveButton); - - connect(this, &TimeSettingModule::requestNTPServer, m_work, &DatetimeWorker::setNtpServer); - connect(this, &TimeSettingModule::requestSetTime, m_work, &DatetimeWorker::setDatetime); -} - -void TimeSettingModule::deactive() -{ - m_autoSyncTimeSwitch = nullptr; - m_datetimeGroup = nullptr; - m_timeHourWidget = nullptr; - m_timeMinWidget = nullptr; - m_yearWidget = nullptr; - m_monthWidget = nullptr; - m_dayWidget = nullptr; - m_buttonTuple = nullptr; -} - -void TimeSettingModule::initAutoSyncTime(SettingsGroup *ntpGroup) -{ - ntpGroup->setBackgroundStyle(SettingsGroup::GroupBackground); - m_autoSyncTimeSwitch = new SwitchWidget(ntpGroup); - m_autoSyncTimeSwitch->setTitle(tr("Auto Sync")); - - m_ntpServerList = new ComboxWidget(ntpGroup); - m_ntpServerList->setTitle(tr("Server")); - m_ntpServerList->comboBox()->setMinimumWidth(240); - - m_customizeAddress = new LineEditWidget(ntpGroup); - m_customizeAddress->setTitle(tr("Address")); - m_customizeAddress->textEdit()->setMinimumWidth(240); - m_customizeAddress->textEdit()->setPlaceholderText(tr("Required")); - - m_ntpServerList->comboBox()->addItems(m_model->ntpServerList()); - m_ntpServerList->comboBox()->addItem(tr("Customize")); - - auto setNtpServer = [this](QString server) { - const QStringList &ntpServerList = m_model->ntpServerList(); - m_ntpServerList->comboBox()->blockSignals(true); - m_customizeAddress->blockSignals(true); - if (server.isEmpty()) { - m_ntpServerList->comboBox()->setCurrentIndex(0); - m_customizeAddress->setVisible(false); - } else if (ntpServerList.contains(server)) { - m_ntpServerList->comboBox()->setCurrentText(server); - m_customizeAddress->setVisible(false); - } else { - m_ntpServerList->comboBox()->setCurrentText(tr("Customize")); - m_customizeAddress->setText(server); - m_customizeAddress->setVisible(true); - } - m_ntpServerList->comboBox()->blockSignals(false); - m_customizeAddress->blockSignals(false); - }; - setNtpServer(m_model->ntpServerAddress()); - connect(m_model, &DatetimeModel::NTPServerChanged, m_ntpServerList, setNtpServer); - connect(m_model, &DatetimeModel::NTPServerNotChanged, m_ntpServerList, setNtpServer); - - const bool isNtp = m_model->nTP(); - m_autoSyncTimeSwitch->setChecked(isNtp); - connect(m_autoSyncTimeSwitch, &SwitchWidget::checkedChanged, m_work, &DatetimeWorker::setNTP); - connect(m_model, &DatetimeModel::NTPChanged, this, &TimeSettingModule::setControlVisible); - connect(m_autoSyncTimeSwitch, &SwitchWidget::checkedChanged, this, [this] { - setBtnEnable(false); - }); - - connect(m_ntpServerList->comboBox(), QOverload::of(&QComboBox::currentIndexChanged), this, [this](const int index) { - const QString &text = m_ntpServerList->comboBox()->itemText(index); - m_customizeAddress->setVisible(m_ntpServerList->isVisible() && text == tr("Customize")); - isUserOperate(); - if (m_autoSyncTimeSwitch->checked()) { - if (text == tr("Customize")) - m_customizeAddress->setText(m_customNtpServer); - - if (m_customizeAddress->isShowAlert()) { - m_customizeAddress->hideAlertMessage(); - } - } - if (!m_bIsUserOperate) - return; - - m_bIsUserOperate = false; - - if (text != tr("Customize")) { - if ("" != text) { - Q_EMIT requestNTPServer(text); - } - } else if (!m_customizeAddress->text().isEmpty()) { - Q_EMIT requestNTPServer(m_customNtpServer); - } - - setButtonShowState(m_autoSyncTimeSwitch->checked()); - }); - connect(m_customizeAddress->dTextEdit(), &DLineEdit::focusChanged, this, [=] { - m_buttonTuple->rightButton()->setEnabled(true); - }); - m_ntpServerList->setVisible(isNtp); - m_customizeAddress->setVisible(isNtp && m_ntpServerList->comboBox()->currentText() == tr("Customize")); - ntpGroup->appendItem(m_autoSyncTimeSwitch); - ntpGroup->appendItem(m_ntpServerList); - ntpGroup->appendItem(m_customizeAddress); -} - -void TimeSettingModule::initTimeSetting(SettingsGroup *datetimeGroup) -{ - m_datetimeGroup = datetimeGroup; - - datetimeGroup->setHidden(m_model->nTP()); - connect(m_model, &DatetimeModel::NTPChanged, datetimeGroup, &SettingsGroup::setHidden); - QLabel *centerLabel = new QLabel(" : "); - QFont font; - font.setPointSizeF(24); - centerLabel->setFont(font); - centerLabel->setContextMenuPolicy(Qt::NoContextMenu); - - QTime time(QTime::currentTime()); - m_timeHourWidget = createDSpinBox(datetimeGroup, 0, 23); - m_timeMinWidget = createDSpinBox(datetimeGroup, 0, 59); - m_timeHourWidget->setValue(time.hour()); - m_timeMinWidget->setValue(time.minute()); - m_timeHourWidget->setButtonSymbols(QAbstractSpinBox::NoButtons); - m_timeMinWidget->setButtonSymbols(QAbstractSpinBox::NoButtons); - m_timeMinWidget->setAccessibleName("TIME_MIN_WIDGET"); - m_timeHourWidget->setAccessibleName("TIME_HOUR_WIDGET"); - - int nIndex = QFontDatabase::addApplicationFont(":/icons/deepin/builtin/resource/deepindigitaltimes-Regular.ttf"); - if (nIndex != -1) { - QStringList strList(QFontDatabase::applicationFontFamilies(nIndex)); - if (strList.count() > 0) { - QFont fontThis(strList.at(0)); - fontThis.setPointSize(28); - m_timeHourWidget->setFont(fontThis); - m_timeMinWidget->setFont(fontThis); - } - } - - QHBoxLayout *timeLayout = new QHBoxLayout; - timeLayout->addStretch(); - timeLayout->addWidget(m_timeHourWidget); - timeLayout->addWidget(centerLabel); - timeLayout->addWidget(m_timeMinWidget); - timeLayout->addStretch(); - SettingsItem *w = new SettingsItem(datetimeGroup); - w->addBackground(); - w->setLayout(timeLayout); - - m_yearWidget = new DateWidget(DateWidget::Year, QDate::currentDate().year() - 30, QDate::currentDate().year() + 30); - m_monthWidget = new DateWidget(DateWidget::Month, 1, 12); - m_dayWidget = new DateWidget(DateWidget::Day, 1, 31); - QDate currentDate(QDate::currentDate()); - m_yearWidget->setValue(currentDate.year()); - m_yearWidget->setAccessibleName("yearwidget"); - m_yearWidget->addBackground(); - m_monthWidget->setValue(currentDate.month()); - m_monthWidget->setAccessibleName("monthwidget"); - m_monthWidget->addBackground(); - m_dayWidget->setValue(currentDate.day()); - m_dayWidget->setAccessibleName("daywidget"); - m_dayWidget->addBackground(); - - datetimeGroup->insertWidget(w); - datetimeGroup->insertWidget(m_yearWidget); - datetimeGroup->insertWidget(m_monthWidget); - datetimeGroup->insertWidget(m_dayWidget); - - auto updateDayRange = [this]() { - const int year = m_yearWidget->value(); - const int month = m_monthWidget->value(); - - QDate date(year, month, 1); - m_dayWidget->setRange(1, date.daysInMonth()); - qCDebug(DdcDateTimeTimeSettingModule) << " year : " << year << " , month : " << month << " day range : 1 to " << date.daysInMonth(); - if (m_dayWidget->maximum() < m_dayWidget->getCurrentText().toInt()) { - m_dayWidget->setCurrentText(QString::number(m_dayWidget->maximum())); - } - }; - connect(m_monthWidget, &DateWidget::editingFinished, this, updateDayRange); - connect(m_monthWidget, &DateWidget::notifyClickedState, this, updateDayRange); - connect(m_yearWidget, &DateWidget::editingFinished, this, updateDayRange); - connect(m_yearWidget, &DateWidget::notifyClickedState, this, updateDayRange); - updateDayRange(); - datetimeGroup->setVisible(!m_model->nTP()); - connect(m_timeHourWidget, qOverload(&QSpinBox::valueChanged), this, [this] { - setBtnEnable(true); - }); - connect(m_timeMinWidget, qOverload(&QSpinBox::valueChanged), this, [this] { - setBtnEnable(true); - }); - connect(m_yearWidget, &DateWidget::chenged, this, [this] { - setBtnEnable(true); - }); - connect(m_monthWidget, &DateWidget::chenged, this, [this] { - setBtnEnable(true); - }); - connect(m_dayWidget, &DateWidget::chenged, this, [this] { - setBtnEnable(true); - }); -} - -void TimeSettingModule::initDigitalClock(QWidget *w) -{ - QLabel *centerLabel = new QLabel(" : "); - QLabel *hourLabel = new QLabel(); - QLabel *minLabel = new QLabel(); - QLabel *yearLabel = new QLabel(); - QLabel *monthLabel = new QLabel(); - QLabel *dayLabel = new QLabel(); - centerLabel->setAlignment(Qt::AlignCenter); - hourLabel->setAlignment(Qt::AlignCenter); - minLabel->setAlignment(Qt::AlignCenter); - yearLabel->setAlignment(Qt::AlignCenter); - monthLabel->setAlignment(Qt::AlignCenter); - dayLabel->setAlignment(Qt::AlignCenter); - QFont font; - font.setPointSizeF(24); - centerLabel->setFont(font); - centerLabel->setContextMenuPolicy(Qt::NoContextMenu); - - int nIndex = QFontDatabase::addApplicationFont(":/icons/deepin/builtin/resource/deepindigitaltimes-Regular.ttf"); - if (nIndex != -1) { - QStringList strList(QFontDatabase::applicationFontFamilies(nIndex)); - if (strList.count() > 0) { - QFont fontThis(strList.at(0)); - fontThis.setPointSize(28); - hourLabel->setFont(fontThis); - minLabel->setFont(fontThis); - } - } - QHBoxLayout *timeLayout = new QHBoxLayout; - timeLayout->addWidget(hourLabel); - timeLayout->addWidget(centerLabel); - timeLayout->addWidget(minLabel); - QHBoxLayout *dataLayout = new QHBoxLayout; - dataLayout->addWidget(yearLabel); - dataLayout->addWidget(monthLabel); - dataLayout->addWidget(dayLabel); - DBackgroundGroup *bggroup = new DBackgroundGroup(dataLayout); - bggroup->setAccessibleName("bggroup"); - bggroup->setBackgroundRole(QPalette::Window); - bggroup->setItemSpacing(1); - bggroup->setUseWidgetBackground(false); - - QVBoxLayout *layout = new QVBoxLayout; - layout->addLayout(timeLayout); - layout->addWidget(bggroup); - layout->setSpacing(10); - layout->setContentsMargins(0, 0, 0, 0); - w->setLayout(layout); - QTimer::singleShot(10, w, [this, w]() { - w->setVisible(m_model->nTP()); - }); - connect(m_model, &DatetimeModel::NTPChanged, w, &QWidget::setVisible); - QTimer *timer = new QTimer(w); - auto updateTime = [minLabel, hourLabel, yearLabel, monthLabel, dayLabel]() { - QDateTime datetime = QDateTime::currentDateTime(); - QTime time = QTime::currentTime(); - minLabel->setText(QString::number(time.minute())); - hourLabel->setText(QString::number(time.hour())); - QDate date = QDate::currentDate(); - yearLabel->setText(QString("%1 %2").arg(date.year()).arg(tr("Year"))); - monthLabel->setText(QString("%1 %2").arg(date.month()).arg(tr("Month"))); - dayLabel->setText(QString("%1 %2").arg(date.day()).arg(tr("Day"))); - }; - connect(timer, &QTimer::timeout, w, updateTime); - timer->start(1000); - updateTime(); -} - -void TimeSettingModule::setButtonShowState(bool state) -{ - if (m_customizeAddress->isShowAlert()) { - m_customizeAddress->hideAlertMessage(); - } - m_buttonTuple->leftButton()->setVisible(!state); - m_buttonTuple->rightButton()->setVisible(!state || m_ntpServerList->comboBox()->currentText() == tr("Customize")); -// m_buttonTuple->rightButton()->setText(state ? tr("Save") : tr("Confirm")); -} - -void TimeSettingModule::setControlVisible(bool state) -{ - m_datetimeGroup->setVisible(!state); - m_ntpServerList->setVisible(state); - setButtonShowState(state); - m_autoSyncTimeSwitch->setChecked(state); - m_customizeAddress->setVisible(state && m_ntpServerList->comboBox()->currentText() == tr("Customize")); -} - -void TimeSettingModule::onCancelButtonClicked() -{ - // 取消操作 - QDate date(QDate::currentDate()); - m_yearWidget->setValue(date.year()); - m_monthWidget->setValue(date.month()); - m_dayWidget->setValue(date.day()); - QTime time(QTime::currentTime()); - m_timeHourWidget->setValue(time.hour()); - m_timeMinWidget->setValue(time.minute()); -} - -void TimeSettingModule::onConfirmButtonClicked() -{ - if (m_autoSyncTimeSwitch->checked() && m_ntpServerList->comboBox()->currentText() == tr("Customize")) { - m_buttonTuple->rightButton()->setEnabled(false); - if (m_customizeAddress->text().isEmpty()) { - qCDebug(DdcDateTimeTimeSettingModule) << "The customize address is nullptr."; - m_customizeAddress->setIsErr(true); - return; - } - // this->setFocus(); - // m_customNtpServer = m_addressContent->text(); - // QGSettings("com.deepin.dde.control-center","/com/deepin/dde/control-center/").set("custom-ntpserver", m_customNtpServer); - qCDebug(DdcDateTimeTimeSettingModule) << "ok clicked, requestNTPServer"; - Q_EMIT requestNTPServer(m_customizeAddress->text()); - } else { - qCDebug(DdcDateTimeTimeSettingModule) << "ok clicked, requestSetTime"; - - QDateTime datetime; - datetime.setDate(QDate(m_yearWidget->value(), m_monthWidget->value(), m_dayWidget->value())); - datetime.setTime(QTime(m_timeHourWidget->value(), m_timeMinWidget->value())); - Q_EMIT requestSetTime(datetime); - } -} - -QSpinBox *TimeSettingModule::createDSpinBox(QWidget *parent, int min, int max) -{ - QSpinBox *spinBox = new TimeSpinBox(parent); - spinBox->setFixedSize(100, 60); - spinBox->setRange(min, max); - spinBox->setSingleStep(1); - spinBox->setWrapping(true); - spinBox->setValue(0); - - DIconButton *btnUp = new DIconButton(spinBox); - DIconButton *btnDown = new DIconButton(spinBox); - if (max == 59) { - btnUp->setAccessibleName("MINUP_BUTTON"); - btnDown->setAccessibleName("MINDOWM_BUTTON"); - } else { - btnUp->setAccessibleName("HOURUP_BUTTON"); - btnDown->setAccessibleName("HOURDOWM_BUTTON"); - } - btnUp->setIcon(DStyle::SP_ArrowUp); - btnDown->setIcon(DStyle::SP_ArrowDown); - btnUp->setFixedSize(QSize(SpinBtnLength, SpinBtnLength)); - btnDown->setFixedSize(QSize(SpinBtnLength, SpinBtnLength)); - btnUp->move(70, 4); - btnDown->move(70, 31); - - connect(btnUp, &DIconButton::clicked, spinBox, &QSpinBox::stepUp); - connect(btnDown, &DIconButton::clicked, spinBox, &QSpinBox::stepDown); - - return spinBox; -} - -void TimeSettingModule::isUserOperate() -{ - if (!m_bIsUserOperate) { - m_bIsUserOperate = true; - } -} - -void TimeSettingModule::setBtnEnable(bool state) -{ - m_buttonTuple->leftButton()->setEnabled(state); - m_buttonTuple->rightButton()->setEnabled(state); -} diff --git a/dcc-old/src/plugin-datetime/window/timesettingmodule.h b/dcc-old/src/plugin-datetime/window/timesettingmodule.h deleted file mode 100644 index f1f53228a6..0000000000 --- a/dcc-old/src/plugin-datetime/window/timesettingmodule.h +++ /dev/null @@ -1,71 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TIMESETTINGMODULE_H -#define TIMESETTINGMODULE_H -#include "interface/pagemodule.h" - -namespace DCC_NAMESPACE { -class SettingsGroup; -class SwitchWidget; -class ComboxWidget; -class LineEditWidget; -class ButtonTuple; -} - -class DatetimeModel; -class DatetimeWorker; - -class QSpinBox; -class DateWidget; - -class TimeSettingModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit TimeSettingModule(DatetimeModel *model, DatetimeWorker *work, QObject *parent = nullptr); - - void initAutoSyncTime(DCC_NAMESPACE::SettingsGroup *ntpGroup); - void initTimeSetting(DCC_NAMESPACE::SettingsGroup *datetimeGroup); - void initDigitalClock(QWidget *w); - - virtual void deactive() override; -Q_SIGNALS: - void requestSetAutoSyncdate(const bool &state); - void requestSetTime(const QDateTime &time); - void requestNTPServer(QString server); - -public Q_SLOTS: - void setControlVisible(bool state); - void onCancelButtonClicked(); - void onConfirmButtonClicked(); - void isUserOperate(); - void setBtnEnable(bool state); - -private: - QSpinBox *createDSpinBox(QWidget *parent, int min, int max); - void setButtonShowState(bool state); - -private: - DatetimeModel *m_model; - DatetimeWorker *m_work; - - DCC_NAMESPACE::SwitchWidget *m_autoSyncTimeSwitch; - DCC_NAMESPACE::SettingsGroup *m_datetimeGroup; - QSpinBox *m_timeHourWidget; - QSpinBox *m_timeMinWidget; - DateWidget *m_yearWidget; - DateWidget *m_monthWidget; - DateWidget *m_dayWidget; - DCC_NAMESPACE::ButtonTuple *m_buttonTuple; - - DCC_NAMESPACE::ComboxWidget *m_ntpServerList; - DCC_NAMESPACE::LineEditWidget *m_customizeAddress; - // dcc::widgets::SettingsItem *m_ntpSrvItem; - // dcc::widgets::SettingsItem *m_address; - bool m_bIsUserOperate; - QString m_customNtpServer; -}; - -#endif // TIMESETTINGMODULE_H diff --git a/dcc-old/src/plugin-datetime/window/timezonemodule.cpp b/dcc-old/src/plugin-datetime/window/timezonemodule.cpp deleted file mode 100644 index 9bf316850e..0000000000 --- a/dcc-old/src/plugin-datetime/window/timezonemodule.cpp +++ /dev/null @@ -1,122 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "timezonemodule.h" -#include "datetimemodel.h" -#include "datetimeworker.h" -#include "timezoneitem.h" -#include "timezonechooser.h" -#include "widgets/widgetmodule.h" -#include "widgets/titlelabel.h" -#include "widgets/settingshead.h" -#include "widgets/settingsgroup.h" - -#include - -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -TimezoneModule::TimezoneModule(DatetimeModel *model, DatetimeWorker *work, QObject *parent) - : PageModule("timezoneList", tr("Timezone List"), parent) - , m_model(model) - , m_work(work) - , m_timezoneGroup(nullptr) -{ - deactive(); - connect(this, &TimezoneModule::requestRemoveUserTimeZone, m_work, &DatetimeWorker::removeUserTimeZone); - - appendChild(new WidgetModule("systemTimezone", tr("System Timezone"), [this](SettingsHead *w) { - w->setTitle(tr("System Timezone")); - w->removeBackground(); - connect(w, &SettingsHead::editChanged, this, [this, w](bool) { - w->blockSignals(true); - w->toCancel(); - w->blockSignals(false); - ensureZoneChooserDialog(true); - }); - })); - appendChild(new WidgetModule("systemTimezone", tr("System Timezone"), [this](TimezoneItem *w) { - w->setTimeZone(m_model->currentSystemTimeZone()); - w->setDetailVisible(false); - connect(m_model, &DatetimeModel::currentSystemTimeZoneChanged, w, &TimezoneItem::setTimeZone); - })); - appendChild(new WidgetModule("timezoneList", tr("Timezone List"), [this](SettingsHead *w) { - w->setTitle(tr("Timezone List")); - connect(w, &SettingsHead::editChanged, this, &TimezoneModule::onEditClicked); - connect(this, &TimezoneModule::exitEdit, w, &SettingsHead::toCancel); - connect(this, &TimezoneModule::exitEdit, w, [w, this] { - w->setEditEnable(m_model->userTimeZones().length() > 1); - }); - })); - appendChild(new WidgetModule("timezoneList", tr("Timezone List"), this, &TimezoneModule::initTimezoneListGroup)); -} - -void TimezoneModule::initTimezoneListGroup(DCC_NAMESPACE::SettingsGroup *timezoneGroup) -{ - m_timezoneGroup = timezoneGroup; - - SettingsItem *item = new SettingsItem; - item->addBackground(); - QVBoxLayout *layout = new QVBoxLayout; - DCommandLinkButton *m_addTimezoneButton = new DCommandLinkButton(tr("Add Timezone"), m_timezoneGroup); - m_addTimezoneButton->setAccessibleName(tr("Add Timezone")); - layout->addWidget(m_addTimezoneButton, 0, Qt::AlignLeft); - item->setLayout(layout); - m_timezoneGroup->insertWidget(item); - m_timezoneGroup->setSpacing(8); - - auto updateZones = [this]() { - for (int i = m_timezoneGroup->itemCount() - 2; i >= 0; --i) { - m_timezoneGroup->removeItem(m_timezoneGroup->getItem(i)); - } - const QList &userTimeZones = m_model->userTimeZones(); - for (const ZoneInfo &zoneInfo : userTimeZones) { - TimezoneItem *timezoneitem = new TimezoneItem; - timezoneitem->setTimeZone(zoneInfo); - connect(timezoneitem, &TimezoneItem::removeClicked, this, [this, timezoneitem] { - timezoneitem->setVisible(false); - Q_EMIT requestRemoveUserTimeZone(timezoneitem->timeZone()); - }); - if (zoneInfo.getZoneName() != m_model->systemTimeZoneId()) { - m_timezoneGroup->insertItem(m_timezoneGroup->itemCount() - 1, timezoneitem); - } - } - Q_EMIT exitEdit(); - }; - updateZones(); - connect(m_model, &DatetimeModel::systemTimeZoneIdChanged, m_timezoneGroup, updateZones); - connect(m_model, &DatetimeModel::userTimeZoneAdded, m_timezoneGroup, updateZones); - - connect(m_addTimezoneButton, &QPushButton::clicked, this, &TimezoneModule::ensureZoneChooserDialog); -} - -void TimezoneModule::ensureZoneChooserDialog(bool setZone) -{ - TimeZoneChooser *zoneChooserdialog = new TimeZoneChooser(qApp->activeWindow()); - zoneChooserdialog->setAttribute(Qt::WA_DeleteOnClose, true); - zoneChooserdialog->setIsAddZone(!setZone); - - if (setZone) { - zoneChooserdialog->setMarkedTimeZone(installer::GetCurrentTimezone().isEmpty() ? m_model->getTimeZone() : installer::GetCurrentTimezone()); - connect(zoneChooserdialog, &TimeZoneChooser::confirmed, m_work, &DatetimeWorker::setTimezone); - } else { - connect(zoneChooserdialog, &TimeZoneChooser::confirmed, m_work, &DatetimeWorker::addUserTimeZone); - } - Q_EMIT exitEdit(); - zoneChooserdialog->exec(); -} - -void TimezoneModule::onEditClicked(const bool &edit) -{ - for (int i = m_timezoneGroup->itemCount() - 2; i >= 0; --i) { - TimezoneItem *item = qobject_cast(m_timezoneGroup->getItem(i)); - if (edit) { - item->toRemoveMode(); - } else { - item->toNormalMode(); - } - } -} diff --git a/dcc-old/src/plugin-datetime/window/timezonemodule.h b/dcc-old/src/plugin-datetime/window/timezonemodule.h deleted file mode 100644 index 35144ac7ce..0000000000 --- a/dcc-old/src/plugin-datetime/window/timezonemodule.h +++ /dev/null @@ -1,48 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TIMEZONEMODULE_H -#define TIMEZONEMODULE_H -#include "interface/pagemodule.h" - -#include "zoneinfo.h" - -namespace DCC_NAMESPACE { -class SettingsGroup; -} - -class DatetimeModel; -class DatetimeWorker; - -class TimezoneItem; -class TimeZoneChooser; - -class TimezoneModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit TimezoneModule(DatetimeModel *model, DatetimeWorker *work, QObject *parent = nullptr); - - void initTimezoneListGroup(DCC_NAMESPACE::SettingsGroup *timezoneGroup); - -Q_SIGNALS: - void requestRemoveUserTimeZone(const ZoneInfo &zone); - void notifyItemCount(int); - void requestAddTimeZone(); - void requestAddUserTimeZone(const QString &zone); - void requestSetTimeZone(const QString &zone); - void exitEdit(); - -public Q_SLOTS: - void ensureZoneChooserDialog(bool setZone); - void onEditClicked(const bool &edit); - -private: - DatetimeModel *m_model; - DatetimeWorker *m_work; - - QList m_zoneList; - DCC_NAMESPACE::SettingsGroup *m_timezoneGroup; -}; - -#endif // TIMEZONEMODULE_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/basiclistdelegate.cpp b/dcc-old/src/plugin-datetime/window/widgets/basiclistdelegate.cpp deleted file mode 100644 index 948e26c9d9..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/basiclistdelegate.cpp +++ /dev/null @@ -1,70 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "basiclistdelegate.h" -#include "basiclistmodel.h" - -#include -#include - -QPixmap loadPixmap(const QString &path) -{ - qreal ratio = 1.0; - QPixmap pixmap; - - const qreal devicePixelRatio = qApp->devicePixelRatio(); - - if (!qFuzzyCompare(ratio, devicePixelRatio)) { - QImageReader reader; - reader.setFileName(qt_findAtNxFile(path, devicePixelRatio, &ratio)); - if (reader.canRead()) { - reader.setScaledSize(reader.size() * (devicePixelRatio / ratio)); - pixmap = QPixmap::fromImage(reader.read()); - pixmap.setDevicePixelRatio(devicePixelRatio); - } - } else { - pixmap.load(path); - } - - return pixmap; -} - - -BasicListDelegate::BasicListDelegate(QObject *parent) - : QAbstractItemDelegate(parent) -{ - -} - -void BasicListDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - const bool isHover = index.data(BasicListModel::ItemHoverRole).toBool(); - - painter->setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform); - painter->setBrush(Qt::red); - painter->setPen(Qt::black); - - if (isHover) { - QPainterPath path; - path.addRoundedRect(option.rect.marginsRemoved(QMargins(15, 0, 5, 0)), 6, 6); - painter->fillPath(path, QColor(0, 0, 0, 0.05 * 255)); - } - - painter->drawText(option.rect.marginsRemoved(QMargins(30, 0, 0, 0)), Qt::AlignVCenter | Qt::AlignLeft, index.data(Qt::DisplayRole).toString()); - - if (index.data(BasicListModel::ItemSelectedRole).toBool()) - { - const int x = option.rect.right() - 16 - 14; - const int y = option.rect.top() + (option.rect.height() - 16) / 2; - - painter->drawPixmap(x, y, loadPixmap(":/widgets/themes/dark/icons/list_select.png")); - } -} - -QSize BasicListDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - Q_UNUSED(option); - - return index.data(Qt::SizeHintRole).toSize(); -} - diff --git a/dcc-old/src/plugin-datetime/window/widgets/basiclistdelegate.h b/dcc-old/src/plugin-datetime/window/widgets/basiclistdelegate.h deleted file mode 100644 index 247111f549..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/basiclistdelegate.h +++ /dev/null @@ -1,27 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef BASICLISTDELEGATE_H -#define BASICLISTDELEGATE_H - -#include -#include -#include -#include - -QPixmap loadPixmap(const QString &path); - - -class BasicListDelegate : public QAbstractItemDelegate -{ - Q_OBJECT - -public: - explicit BasicListDelegate(QObject *parent = 0); - - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const; - QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; -}; - - -#endif // BASICLISTDELEGATE_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/basiclistmodel.cpp b/dcc-old/src/plugin-datetime/window/widgets/basiclistmodel.cpp deleted file mode 100644 index a01412f389..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/basiclistmodel.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/basiclistmodel.h" - -#include -#include - - -BasicListModel::BasicListModel(QObject *parent) - : QAbstractListModel(parent) -{ - -} - -int BasicListModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - - return m_options.size(); -} - -QVariant BasicListModel::data(const QModelIndex &index, int role) const -{ - if (!index.isValid()) - return QVariant(); - - switch (role) { - case ItemTextRole: return m_options[index.row()]; - case ItemSizeRole: return QSize(0, 36); - case ItemSelectedRole: return m_selectedIndex == index; - case ItemHoverRole: return m_hoveredIndex == index; - default:; - } - - return QVariant(); -} - -void BasicListModel::clear() -{ - beginRemoveRows(QModelIndex(), 0, m_options.size()); - m_options.clear(); - m_values.clear(); - endRemoveRows(); -} - -void BasicListModel::appendOption(const QString &text, const QVariant &data) -{ - beginInsertRows(QModelIndex(), m_options.size(), m_options.size()); - m_options.append(text); - m_values.append(data); - endInsertRows(); - - // Q_EMIT layoutChanged(); -} - -void BasicListModel::setSelectedIndex(const QModelIndex &index) -{ - const QModelIndex oldIndex = m_selectedIndex; - - m_selectedIndex = index; - - Q_EMIT dataChanged(oldIndex, oldIndex); - Q_EMIT dataChanged(index, index); -} - -void BasicListModel::setHoveredIndex(const QModelIndex &index) -{ - m_hoveredIndex = index; - - Q_EMIT dataChanged(index, index); -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/basiclistmodel.h b/dcc-old/src/plugin-datetime/window/widgets/basiclistmodel.h deleted file mode 100644 index 166e160f8e..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/basiclistmodel.h +++ /dev/null @@ -1,43 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef BASICLISTMODEL_H -#define BASICLISTMODEL_H - -#include - -class BasicListModel : public QAbstractListModel -{ - Q_OBJECT - -public: - enum ItemRole { - ItemSizeRole = Qt::SizeHintRole, - ItemTextRole = Qt::DisplayRole, - ReservedRole = Qt::UserRole, - ItemIsFirstRole, - ItemIsLastRole, - ItemSelectedRole, - ItemHoverRole - }; - - explicit BasicListModel(QObject *parent = 0); - - int rowCount(const QModelIndex &parent) const; - QVariant data(const QModelIndex &index, int role) const; - -public Q_SLOTS: - void clear(); - void appendOption(const QString &text, const QVariant &data = QVariant()); - void setSelectedIndex(const QModelIndex &index); - void setHoveredIndex(const QModelIndex &index); - -private: - QList m_options; - QList m_values; - - QModelIndex m_selectedIndex; - QModelIndex m_hoveredIndex; -}; - -#endif // BASICLISTMODEL_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/clock.cpp b/dcc-old/src/plugin-datetime/window/widgets/clock.cpp deleted file mode 100644 index a82695927f..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/clock.cpp +++ /dev/null @@ -1,148 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "clock.h" - -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE - -static const QSize clockSize = QSize(224, 224); -static const QSize pointSize = QSize(145, 15); - -Clock::Clock(QWidget *parent) - : QWidget(parent) - , m_drawTicks(true) - , m_autoNightMode(true) - , n_bIsUseBlackPlat(true) -{ - m_hour = getPixmap("dcc_noun_hour", pointSize); - m_min = getPixmap("dcc_noun_minute", pointSize); - m_sec = getPixmap("dcc_noun_second", pointSize); - setMinimumSize(clockSize); - - QTimer *timer = new QTimer(this); - connect(timer, &QTimer::timeout, this, QOverload<>::of(&Clock::update)); - timer->start(1000); -} - -Clock::~Clock() -{ -} - -QPixmap Clock::getPixmap(const QString &name, const QSize size) -{ - const QIcon &icon = DIconTheme::findQIcon(name); - const qreal ratio = devicePixelRatioF(); - QPixmap pixmap = icon.pixmap(size * ratio).scaled(size * ratio, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - QPainter p(&pixmap); - p.setRenderHints(QPainter::Antialiasing); - p.drawPixmap(0, 0, pixmap); - pixmap.setDevicePixelRatio(ratio); - return pixmap; -} - -void Clock::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event) - - QDateTime datetime(QDateTime::currentDateTime()); - const QTime time(datetime.time()); - QPainter painter(this); - painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - - do { - const bool nightMode = !(time.hour() >= 6 && time.hour() < 18); - if (nightMode == m_isBlack && !m_plat.isNull()) - break; - if (nightMode) { - m_plat = getPixmap("dcc_clock_black", clockSize); - m_isBlack = true; - } else { - m_plat = getPixmap("dcc_clock_white", clockSize); - m_isBlack = false; - } - } while (false); - - // draw plate - painter.save(); - painter.translate(width() / 2.0, height() / 2.0); - painter.drawPixmap(QPointF(-clockSize.width() / 2.0, -clockSize.height() / 2.0), m_plat); - painter.restore(); - - int nHour = (time.hour() >= 12) ? (time.hour() - 12) : time.hour(); - int nStartAngle = 90; //The image from 0 start , but the clock need from -90 start - - // draw hour hand - const qreal hourAngle = qreal(nHour * 30 + time.minute() * 30 / 60 + time.second() * 30 / 60 / 60 - nStartAngle); - painter.save(); - painter.translate(width() / 2.0, height() / 2.0); - painter.rotate(hourAngle); - painter.drawPixmap(QPointF(-pointSize.width() / 2.0, -pointSize.height() / 2.0), m_hour); - painter.restore(); - - // draw minute hand - const qreal minuteAngle = qreal(time.minute() * 6 + time.second() * 6 / 60 - nStartAngle); - painter.save(); - painter.translate(width() / 2.0, height() / 2.0); - painter.rotate(minuteAngle); - painter.drawPixmap(QPointF(-pointSize.width() / 2.0, -pointSize.height() / 2.0), m_min); - painter.restore(); - - // draw second hand - const qreal secondAngle = qreal(time.second() * 6 - nStartAngle); - painter.save(); - painter.translate(width() / 2.0, height() / 2.0); - painter.rotate(secondAngle); - painter.drawPixmap(QPointF(-pointSize.width() / 2.0, -pointSize.height() / 2.0), m_sec); - painter.restore(); - - painter.end(); -} -//////////////////////////////////////////////////////////// -bool Clock::autoNightMode() const -{ - return m_autoNightMode; -} - -void Clock::setAutoNightMode(bool autoNightMode) -{ - if (m_autoNightMode != autoNightMode) { - m_autoNightMode = autoNightMode; - update(); - } -} - -void Clock::setPlate(bool isBlack) -{ - if (n_bIsUseBlackPlat != isBlack) { - n_bIsUseBlackPlat = isBlack; - update(); - } -} - -void Clock::setTimeZone(const ZoneInfo &timeZone) -{ - if (m_timeZone == timeZone) - return; - - m_timeZone = timeZone; - update(); -} - -bool Clock::drawTicks() const -{ - return m_drawTicks; -} - -void Clock::setDrawTicks(bool drawTicks) -{ - if (m_drawTicks != drawTicks) { - m_drawTicks = drawTicks; - update(); - } -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/clock.h b/dcc-old/src/plugin-datetime/window/widgets/clock.h deleted file mode 100644 index bd654165e0..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/clock.h +++ /dev/null @@ -1,39 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" - -#include -#include -#include "zoneinfo.h" - -class Clock : public QWidget -{ - Q_OBJECT -public: - explicit Clock(QWidget *parent = 0); - virtual ~Clock(); - - bool drawTicks() const; - void setDrawTicks(bool drawTicks); - void setTimeZone(const ZoneInfo &timeZone); - bool autoNightMode() const; - void setAutoNightMode(bool autoNightMode); - void setPlate(bool isBlack = true); - QPixmap getPixmap(const QString &name, const QSize size); - -protected: - void paintEvent(QPaintEvent *event); - -private: - bool m_drawTicks; - bool m_autoNightMode; - bool n_bIsUseBlackPlat; - bool m_isBlack; - ZoneInfo m_timeZone; - QPixmap m_plat; - QPixmap m_hour; - QPixmap m_min; - QPixmap m_sec; -}; diff --git a/dcc-old/src/plugin-datetime/window/widgets/consts.h b/dcc-old/src/plugin-datetime/window/widgets/consts.h deleted file mode 100644 index c315eea2c9..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/consts.h +++ /dev/null @@ -1,22 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INSTALLER_CONSTS_H -#define INSTALLER_CONSTS_H - -namespace installer { - -// Name of application. This name can be used as folder name. -const char kAppName[] = "deepin-installer-reborn"; - -// Human readable application name. -const char kAppDisplayName[] = "Deepin Installer Reborn"; - -const char kDomainName[] = "deepin.org"; - -// Default locale used in program. -const char kDefaultLocale[] = "en_US.UTF-8"; - -} - -#endif // INSTALLER_CONSTS_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/customregionformatdialog.cpp b/dcc-old/src/plugin-datetime/window/widgets/customregionformatdialog.cpp deleted file mode 100644 index 9bdb0bdebb..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/customregionformatdialog.cpp +++ /dev/null @@ -1,179 +0,0 @@ -//SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "customregionformatdialog.h" - -#include -#include - -using namespace DCC_NAMESPACE; - -CustomRegionFormatDialog::CustomRegionFormatDialog(QWidget *parent) - : DDialog(parent) -{ - setMinimumSize(540, 590); - setTitle(tr("Custom Format")); - - QWidget *contentWidget = new QWidget; - QVBoxLayout *mainVLayout = new QVBoxLayout(contentWidget); - mainVLayout->setSpacing(0); - mainVLayout->setMargin(0); - - QVBoxLayout *dateGrpHLayout = new QVBoxLayout; - dateGrpHLayout->setContentsMargins(10, 6, 10, 6); - dateGrpHLayout->setSpacing(0); - DBackgroundGroup *dateGrp = new DBackgroundGroup; - dateGrp->setLayout(dateGrpHLayout); - dateGrp->setBackgroundRole(QPalette::Window); - dateGrp->setItemSpacing(1); - dateGrp->setUseWidgetBackground(false); - - QWidget *dayWidget = new QWidget; - QHBoxLayout *dayHBoxLayout = new QHBoxLayout(dayWidget); - dayHBoxLayout->setMargin(0); - QLabel *dayLabel = new QLabel(tr("First day of week")); - m_dayCombo = new QComboBox; - dayHBoxLayout->addWidget(dayLabel); - dayHBoxLayout->addWidget(m_dayCombo); - - QWidget *shortDateWidget = new QWidget; - QHBoxLayout *shortDateHBoxLayout = new QHBoxLayout(shortDateWidget); - shortDateHBoxLayout->setMargin(0); - QLabel *shortDateLabel = new QLabel(tr("Short date")); - m_shortDateCombo = new QComboBox; - shortDateHBoxLayout->addWidget(shortDateLabel); - shortDateHBoxLayout->addWidget(m_shortDateCombo); - - QWidget *longDateWidget = new QWidget; - QHBoxLayout *longDateHBoxLayout = new QHBoxLayout(longDateWidget); - longDateHBoxLayout->setMargin(0); - QLabel *longDateLabel = new QLabel(tr("Long date")); - m_longDateCombo = new QComboBox; - longDateHBoxLayout->addWidget(longDateLabel); - longDateHBoxLayout->addWidget(m_longDateCombo); - - dateGrpHLayout->addWidget(dayWidget); - dateGrpHLayout->addWidget(shortDateWidget); - dateGrpHLayout->addWidget(longDateWidget); - - QVBoxLayout *timeGrpHLayout = new QVBoxLayout; - timeGrpHLayout->setContentsMargins(10, 6, 10, 6); - timeGrpHLayout->setSpacing(0); - DBackgroundGroup *timeGrp = new DBackgroundGroup; - timeGrp->setBackgroundRole(QPalette::Window); - timeGrp->setLayout(timeGrpHLayout); - timeGrp->setItemSpacing(1); - timeGrp->setUseWidgetBackground(false); - - QWidget *shortTimeWidget = new QWidget; - QHBoxLayout *shortTimeHBoxLayout = new QHBoxLayout(shortTimeWidget); - shortTimeHBoxLayout->setMargin(0); - QLabel *shortTimeLabel = new QLabel(tr("Short time")); - m_shortTimeCombo = new QComboBox; - shortTimeHBoxLayout->addWidget(shortTimeLabel); - shortTimeHBoxLayout->addWidget(m_shortTimeCombo); - - QWidget *longTimeWidget = new QWidget; - QHBoxLayout *longTimeHBoxLayout = new QHBoxLayout(longTimeWidget); - longTimeHBoxLayout->setMargin(0); - QLabel *longTimeLabel = new QLabel(tr("Long time")); - m_longTimeCombo = new QComboBox; - longTimeHBoxLayout->addWidget(longTimeLabel); - longTimeHBoxLayout->addWidget(m_longTimeCombo); - - timeGrpHLayout->addWidget(shortTimeWidget); - timeGrpHLayout->addWidget(longTimeWidget); - - QVBoxLayout *otherGrpHLayout = new QVBoxLayout; - otherGrpHLayout->setContentsMargins(10, 6, 10, 6); - otherGrpHLayout->setSpacing(0); - DBackgroundGroup *otherGrp = new DBackgroundGroup; - otherGrp->setBackgroundRole(QPalette::Window); - otherGrp->setLayout(otherGrpHLayout); - otherGrp->setItemSpacing(1); - otherGrp->setUseWidgetBackground(false); - - QWidget *currencyWidget = new QWidget; - QHBoxLayout *currencyHBoxLayout = new QHBoxLayout(currencyWidget); - currencyHBoxLayout->setMargin(0); - QLabel *currencyLabel = new QLabel(tr("Currency symbol")); - m_currencyValueLabel = new QLabel("$"); - m_currencyValueLabel->setAlignment(Qt::AlignRight); - currencyHBoxLayout->addWidget(currencyLabel); - currencyHBoxLayout->addWidget(m_currencyValueLabel); - - QWidget *numberWidget = new QWidget; - QHBoxLayout *numberHBoxLayout = new QHBoxLayout(numberWidget); - numberHBoxLayout->setMargin(0); - QLabel *numberLabel = new QLabel(tr("Numbers")); - m_numberValueLabel = new QLabel("123456789"); - m_numberValueLabel->setAlignment(Qt::AlignRight); - numberHBoxLayout->addWidget(numberLabel); - numberHBoxLayout->addWidget(m_numberValueLabel); - - QWidget *paperWidget = new QWidget; - QHBoxLayout *paperHBoxLayout = new QHBoxLayout(paperWidget); - paperHBoxLayout->setMargin(0); - QLabel *paperLabel = new QLabel(tr("Paper")); - m_paperValueLabel = new QLabel("A4"); - m_paperValueLabel->setAlignment(Qt::AlignRight); - paperHBoxLayout->addWidget(paperLabel); - paperHBoxLayout->addWidget(m_paperValueLabel); - - otherGrpHLayout->addWidget(currencyWidget); - otherGrpHLayout->addWidget(numberWidget); - otherGrpHLayout->addWidget(paperWidget); - - mainVLayout->addWidget(dateGrp); - mainVLayout->addSpacing(10); - mainVLayout->addWidget(timeGrp); - mainVLayout->addSpacing(10); - mainVLayout->addWidget(otherGrp); - mainVLayout->addSpacing(40); - - addContent(contentWidget); - - addButton(tr("Cancel"), false, DDialog::ButtonNormal); - addButton(tr("Save"), true, DDialog::ButtonRecommend); - - connect(getButton(1), &QPushButton::clicked, this, &CustomRegionFormatDialog::onSaved); -} - -CustomRegionFormatDialog::~CustomRegionFormatDialog() -{ -} - -void CustomRegionFormatDialog::initRegionFormat(const QLocale &locale, const RegionFormat ®ionFormat) -{ - RegionAvailableData regionFormatsAvailable = RegionProxy::allTextData(locale); - m_dayCombo->addItems(regionFormatsAvailable.daysAvailable); - m_shortDateCombo->addItems(regionFormatsAvailable.shortDatesAvailable); - m_longDateCombo->addItems(regionFormatsAvailable.longDatesAvailable); - m_shortTimeCombo->addItems(regionFormatsAvailable.shortTimesAvailable); - m_longTimeCombo->addItems(regionFormatsAvailable.longTimesAvailable); - m_currencyValueLabel->setText(RegionProxy::regionFormat(locale).currencyFormat); - m_numberValueLabel->setText(RegionProxy::regionFormat(locale).numberFormat); - m_paperValueLabel->setText(RegionProxy::regionFormat(locale).paperFormat); - - m_dayCombo->setCurrentText(locale.standaloneDayName(regionFormat.firstDayOfWeekFormat)); - m_shortDateCombo->setCurrentText(locale.toString(QDate(2023, 1, 1), regionFormat.shortDateFormat)); - m_longDateCombo->setCurrentText(locale.toString(QDate(2023, 1, 1), regionFormat.longDateFormat)); - m_shortTimeCombo->setCurrentText(locale.toString(QTime(1, 1, 1), regionFormat.shortTimeFormat)); - m_longTimeCombo->setCurrentText(locale.toString(QTime(1, 1, 1), regionFormat.longTimeFormat)); -} - -void CustomRegionFormatDialog::onSaved() -{ - RegionAvailableData regionFormat = RegionProxy::allFormat(); - m_format.firstDayOfWeekFormat = m_dayCombo->currentIndex() + 1; - m_format.shortDateFormat = regionFormat.shortDatesAvailable.at(m_shortDateCombo->currentIndex()); - m_format.longDateFormat = regionFormat.longDatesAvailable.at(m_longDateCombo->currentIndex()); - m_format.shortTimeFormat = regionFormat.shortTimesAvailable.at(m_shortTimeCombo->currentIndex()); - m_format.longTimeFormat = regionFormat.longTimesAvailable.at(m_longTimeCombo->currentIndex()); - m_format.currencyFormat = m_currencyValueLabel->text(); - m_format.numberFormat = m_numberValueLabel->text(); - m_format.paperFormat = m_paperValueLabel->text(); - - Q_EMIT customFormatSaved(m_format); -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/customregionformatdialog.h b/dcc-old/src/plugin-datetime/window/widgets/customregionformatdialog.h deleted file mode 100644 index 07db58d157..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/customregionformatdialog.h +++ /dev/null @@ -1,49 +0,0 @@ -//SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef CUSTOMREGIONFORMATDIALOG_H -#define CUSTOMREGIONFORMATDIALOG_H - -#include "interface/namespace.h" -#include "regionproxy.h" - -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { - -class CustomRegionFormatDialog : public DDialog -{ - Q_OBJECT -public: - explicit CustomRegionFormatDialog(QWidget *parent = nullptr); - ~CustomRegionFormatDialog(); - - void initRegionFormat(const QLocale &locale, const RegionFormat ®ionFormat); - -Q_SIGNALS: - void customFormatSaved(const RegionFormat ®ionFormat); - -private Q_SLOTS: - void onSaved(); - -private: - QComboBox *m_dayCombo; - QComboBox *m_shortDateCombo; - QComboBox *m_longDateCombo; - QComboBox *m_shortTimeCombo; - QComboBox *m_longTimeCombo; - QLabel *m_currencyValueLabel; - QLabel *m_numberValueLabel; - QLabel *m_paperValueLabel; - - RegionFormat m_format; -}; -} -#endif // CUSTOMREGIONFORMATDIALOG_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/datewidget.cpp b/dcc-old/src/plugin-datetime/window/widgets/datewidget.cpp deleted file mode 100644 index 5fce04743b..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/datewidget.cpp +++ /dev/null @@ -1,198 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "datewidget.h" - -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -DateWidget::DateWidget(Type type, int minimum, int maximum, QWidget *parent) - : SettingsItem (parent) - , m_type(type) - , m_minimum(minimum) - , m_maximum(maximum) - , m_lineEdit(new QLineEdit(this)) - , m_label(new QLabel(this)) - , m_addBtn(new DIconButton(this)) - , m_reducedBtn(new DIconButton(this)) -{ - setFixedHeight(36); - - m_addBtn->setIcon(DStyle::StandardPixmap::SP_IncreaseElement); - m_reducedBtn->setIcon(DStyle::StandardPixmap::SP_DecreaseElement); - - m_lineEdit->setContextMenuPolicy(Qt::NoContextMenu); - m_lineEdit->setObjectName("DCC-Datetime-QLineEdit"); - QPalette palette = m_lineEdit->palette(); - palette.setColor(QPalette::Button, Qt::transparent); - m_lineEdit->setPalette(palette); - DStyle::setFocusRectVisible(m_lineEdit, false); - m_addBtn->setObjectName("DCC-Datetime-Datewidget-Add"); - m_reducedBtn->setObjectName("DCC-Datetime-Datewidget-Reduce"); - - m_label->setParent(m_lineEdit); - m_label->move(0, 0); - m_addBtn->setParent(m_lineEdit); - m_reducedBtn->setParent(m_lineEdit); - - if (m_type == Year) { - m_addBtn->setAccessibleName("yearadd"); - m_reducedBtn->setAccessibleName("yearreduced"); - m_label->setText(tr("Year")); - m_lineEdit->setAccessibleName(tr("Year")); - m_lineEdit->setMaxLength(4); - } else if (m_type == Month) { - m_addBtn->setAccessibleName("monthadd"); - m_reducedBtn->setAccessibleName("monthreduced"); - m_label->setText(tr("Month")); - m_lineEdit->setAccessibleName(tr("Month")); - m_lineEdit->setMaxLength(2); - } else { - m_addBtn->setAccessibleName("dayadd"); - m_reducedBtn->setAccessibleName("dayreduced"); - m_label->setText(tr("Day")); - m_lineEdit->setAccessibleName(tr("Day")); - m_lineEdit->setMaxLength(2); - } - - m_lineEdit->setAlignment(Qt::AlignVCenter | Qt::AlignRight); - setRange(minimum, maximum); - m_lineEdit->installEventFilter(this); - - QHBoxLayout *layout = new QHBoxLayout; - layout->setMargin(0); - layout->setSpacing(0); - - QHBoxLayout *lLayout = new QHBoxLayout; - lLayout->setMargin(0); - lLayout->setSpacing(0); - lLayout->addWidget(m_reducedBtn); - lLayout->addStretch(); - lLayout->addWidget(m_lineEdit); - - QHBoxLayout *rLayout = new QHBoxLayout; - rLayout->setMargin(0); - rLayout->setSpacing(0); - rLayout->addWidget(m_label); - rLayout->addStretch(); - rLayout->addWidget(m_addBtn); - - layout->addLayout(lLayout); - layout->addSpacing(5); - layout->addLayout(rLayout); - setLayout(layout); - - connect(m_addBtn, &DIconButton::clicked, this, &DateWidget::slotAdd); - connect(m_reducedBtn, &DIconButton::clicked, this, &DateWidget::slotReduced); - - connect(m_lineEdit, &QLineEdit::editingFinished, [this] { - fixup(); - Q_EMIT editingFinished(); - }); - connect(m_lineEdit, &QLineEdit::textChanged, this, [this] { - Q_EMIT chenged(); - }); -} - -void DateWidget::setValue(const int &value) -{ - m_lineEdit->blockSignals(true); - m_lineEdit->setText(QString::number(value)); - m_lineEdit->blockSignals(false); -} - -int DateWidget::value() const -{ - return m_lineEdit->text().toInt(); -} - -void DateWidget::slotAdd() -{ - int value = m_lineEdit->text().toInt() + 1; - - if (value < m_minimum) { - value = m_maximum; - } else if (value > m_maximum) { - value = m_minimum; - } - - m_lineEdit->setText(QString::number(value)); - - Q_EMIT notifyClickedState(true); -} - -void DateWidget::slotReduced() -{ - int value = m_lineEdit->text().toInt() - 1; - - if (value < m_minimum) { - value = m_maximum; - } else if (value > m_maximum) { - value = m_minimum; - } - - m_lineEdit->setText(QString::number(value)); - - Q_EMIT notifyClickedState(false); -} - -void DateWidget::fixup() -{ - int value = m_lineEdit->text().toInt(); - value = qMin(m_maximum, qMax(m_minimum, value)); - m_lineEdit->setText(QString::number(value)); -} - -int DateWidget::maximum() const -{ - return m_maximum; -} - -void DateWidget::setRange(int minimum, int maximum) -{ - m_minimum = minimum; - m_maximum = maximum; - - QIntValidator *validator = new QIntValidator(m_minimum, m_maximum, this); - m_lineEdit->setValidator(validator); - - fixup(); -} - -const QString DateWidget::getCurrentText() const -{ - return m_lineEdit->text(); -} - -void DateWidget::setCurrentText(QString text) -{ - m_lineEdit->setText(text); -} - -bool DateWidget::eventFilter(QObject *watched, QEvent *event) -{ - if (watched == m_lineEdit && event->type() == QEvent::FocusOut) { - fixup(); - Q_EMIT editingFinished(); - } - - return false; -} - -void DateWidget::mouseReleaseEvent(QMouseEvent *event) -{ - if (event->button() == Qt::LeftButton) { - m_lineEdit->setFocus(); - } -} - -int DateWidget::minimum() const -{ - return m_minimum; -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/datewidget.h b/dcc-old/src/plugin-datetime/window/widgets/datewidget.h deleted file mode 100644 index 862db8965d..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/datewidget.h +++ /dev/null @@ -1,59 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef DATEWIDGET_H -#define DATEWIDGET_H - -#include "widgets/settingsitem.h" - -#include - -class QLineEdit; -class QLabel; - -class DateWidget : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT -public: - enum Type { - Year, - Month, - Day - }; - -public: - explicit DateWidget(Type type, int minimum, int maximum, QWidget *parent = 0); - - int value() const; - void setValue(const int &value); - int minimum() const; - int maximum() const; - void setRange(int minimum, int maximum); - const QString getCurrentText() const; - void setCurrentText(QString text); - -protected: - bool eventFilter(QObject *watched, QEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - -Q_SIGNALS: - void editingFinished(); - void notifyClickedState(bool); - void chenged(); - -public Q_SLOTS: - void slotAdd(); - void slotReduced(); - void fixup(); - -private: - Type m_type; - int m_minimum; - int m_maximum; - QLineEdit *m_lineEdit; - QLabel *m_label; - DTK_WIDGET_NAMESPACE::DIconButton *m_addBtn; - DTK_WIDGET_NAMESPACE::DIconButton *m_reducedBtn; -}; -#endif // DATEWIDGET_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/file_util.cpp b/dcc-old/src/plugin-datetime/window/widgets/file_util.cpp deleted file mode 100644 index 09b9a04788..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/file_util.cpp +++ /dev/null @@ -1,240 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "file_util.h" - -#include -#include -#include -#include -#include - -#include -#include -#include - -namespace installer { - -QDir ConcateDir(const QDir &parent_dir, const QString &folder_name) -{ - if (!parent_dir.exists(folder_name)) { - // TODO(xushaohua): Handles permission error. - parent_dir.mkpath(folder_name); - } - return QDir(parent_dir.filePath(folder_name)); -} - -bool CopyFile(const QString &src_file, const QString &dest_file, bool overwrite) -{ - QFile dest(dest_file); - if (dest.exists()) { - if (overwrite) { - if (!dest.remove()) { - qCritical() << "Failed to remove:" << dest_file; - return false; - } - } else { - qCritical() << dest_file << "exists but is not overwritten"; - return false; - } - } - return QFile::copy(src_file, dest_file); -} - -bool CopyFolder(const QString &src_dir, const QString &dest_dir, bool recursive) -{ - QDirIterator::IteratorFlag iter_flag; - if (recursive) { - iter_flag = QDirIterator::Subdirectories; - } else { - iter_flag = QDirIterator::NoIteratorFlags; - } - QDirIterator iter(src_dir, QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot, iter_flag); - QFileInfo src_info; - QString dest_filepath; - bool ok = true; - if (!QDir(dest_dir).exists()) { - ok = CreateDirs(dest_dir); - } - - // Walk through source folder. - while (ok && iter.hasNext()) { - src_info = iter.next(); - dest_filepath = iter.filePath().replace(src_dir, dest_dir); - if (src_info.isDir()) { - if (!QDir(dest_filepath).exists()) { - ok = CreateDirs(dest_filepath); - } - if (ok) { - ok = CopyMode(iter.filePath().toStdString().c_str(), - dest_filepath.toStdString().c_str()); - } - } else if (src_info.isFile()) { - if (QFile::exists(dest_filepath)) { - // Remove old file first. - QFile::remove(dest_filepath); - } - ok = QFile::copy(iter.filePath(), dest_filepath); - if (ok) { - ok = CopyMode(iter.filePath().toStdString().c_str(), - dest_filepath.toStdString().c_str()); - } - } else if (src_info.isSymLink()) { - if (QFile::exists(dest_filepath)) { - QFile::remove(dest_filepath); - } - ok = QFile::link(src_info.canonicalFilePath(), dest_filepath); - } else { - // Ignores other type of files. - } - } - return ok; -} - -bool CopyMode(const char *src_file, const char *dest_file) -{ - struct stat st; - if (stat(src_file, &st) == -1) { - return false; - } - - const mode_t mode = st.st_mode & 0777; - return (chmod(dest_file, mode) == 0); -} - -bool CreateDirs(const QString &dirpath) -{ - return QDir(dirpath).mkpath("."); -} - -bool CreateParentDirs(const QString &filepath) -{ - return QFileInfo(filepath).absoluteDir().mkpath("."); -} - -QString GetFileBasename(const QString &filepath) -{ - const QString filename = GetFileName(filepath); - const int dot_index = filename.lastIndexOf(QChar('.')); - if (dot_index > 0) { - return filename.left(dot_index); - } else { - // Filename does not contain extension name. - return filename; - } -} - -QString GetFileExtname(const QString &filepath) -{ - const int dot_index = filepath.lastIndexOf(QChar('.')); - if (dot_index > 0) { - // Ignores hidden file. - return filepath.mid(dot_index + 1).toLower(); - } - - return ""; -} - -QString GetFileName(const QString &filepath) -{ - const int slash_index = filepath.lastIndexOf(QDir::separator()); - if (slash_index > -1) { - return filepath.mid(slash_index + 1); - } else { - // filepath is the filename. - return filepath; - } -} - -qint64 GetFileSize(const QString &filepath) -{ - QFileInfo info(filepath); - if (info.exists()) { - return info.size(); - } else { - return 0; - } -} - -QString ReadFile(const QString &path) -{ - QFile file(path); - if (file.exists()) { - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - qDebug() << "ReadFile() failed to open" << path; - return ""; - } - QTextStream text_stream(&file); - QString str = text_stream.readAll(); - file.close(); - return str; - } else { - qDebug() << "ReadFileContent() file not found: " << path; - return ""; - } -} - -QString ReadGBKFile(const QString &path) -{ - QFile file(path); - if (file.exists()) { - if (!file.open(QIODevice::ReadOnly)) { - qDebug() << "ReadGBKFile() failed to open" << path; - return ""; - } - const QByteArray file_data = file.readAll(); - QTextCodec *codec = QTextCodec::codecForName("GB18030"); - file.close(); - return codec->toUnicode(file_data); - } else { - qDebug() << "ReadGBKFile() file not found:" << path; - return ""; - } -} - -bool ReadRawFile(const QString &path, QByteArray &content) -{ - QFile file(path); - if (file.exists()) { - if (file.open(QIODevice::ReadOnly)) { - content = file.readAll(); - return true; - } - } - qDebug() << "ReadRawFile() failed!" << path; - return false; -} - -bool ReadTextFile(const QString &path, QString &content) -{ - QFile file(path); - if (file.exists()) { - if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { - QTextStream text_stream(&file); - content = text_stream.readAll(); - file.close(); - return true; - } - } - qDebug() << "ReadTextFile() failed!" << path; - return false; -} - -bool WriteTextFile(const QString &path, const QString &content) -{ - QFile file(path); - if (file.open(QIODevice::WriteOnly | QIODevice::Text)) { - QTextStream text_stream(&file); - text_stream << content; - text_stream.flush(); - file.close(); - return true; - } else { - qCritical() << "WriteTextFile() failed!" - << ", path:" << path; - return false; - } -} - -} // namespace installer diff --git a/dcc-old/src/plugin-datetime/window/widgets/file_util.h b/dcc-old/src/plugin-datetime/window/widgets/file_util.h deleted file mode 100644 index e1dc7719a3..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/file_util.h +++ /dev/null @@ -1,69 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INSTALLER_BASE_FILE_UTIL_H -#define INSTALLER_BASE_FILE_UTIL_H - -#include -#include - -namespace installer { - -// Create a folder with |folder_name| in |parent_dir| directory and -// returns a QDir object referencing to its absolute path. -QDir ConcateDir(const QDir &parent_dir, const QString &folder_name); - -// Copy file from |src_file| to |dest_file|. -// If |dest_file| exists, overwrite its content if |overwrite| is true, or -// returns false if not overwrite. -bool CopyFile(const QString &src_file, const QString &dest_file, bool overwrite); - -// Folder content in |src_dir| into |dest_dir|. -// This method only copy normal files, folders and symbolic link file. -// Other type of files and character device, FIFO and device file are ignored. -// For advanced copy function, see misc/unsquashfs.cpp -bool CopyFolder(const QString &src_dir, const QString &dest_dir, bool recursive = true); - -// Copy file/folder mode from |src_file| to |dest_file| -// Both |src_file| and |dest_file| should not be symbolic link. -bool CopyMode(const char *src_file, const char *dest_file); - -// Create parent folders and itself. -bool CreateDirs(const QString &dirpath); - -// Create parent folders. -bool CreateParentDirs(const QString &filepath); - -// Returns basename of |filepath|. -QString GetFileBasename(const QString &filepath); - -// Returns lower cased extension name of |filepath|, might be empty. -QString GetFileExtname(const QString &filepath); - -// Returns filename of |filepath|. -QString GetFileName(const QString &filepath); - -// Get size of file. If file not found or has no access, returns 0. -qint64 GetFileSize(const QString &filepath); - -// Read contents of file, returns an empty string if failed. -// DEPRECATED: call ReadTextFile() instead. -QString ReadFile(const QString &path); - -// Read text file encoded in GB18030. -QString ReadGBKFile(const QString &path); - -// Read content of file at |path|, and save its content into |content|. -// Returns true if succeeded, or false otherwise. -bool ReadRawFile(const QString &path, QByteArray &content); - -// Read contents of text file, returns true if succeeded, or false otherwise. -// |content| holds the content of that file. -bool ReadTextFile(const QString &path, QString &content); - -// Write content to file, returns true if succeeded, or false otherwise. -bool WriteTextFile(const QString &path, const QString &content); - -} // namespace installer - -#endif // INSTALLER_BASE_FILE_UTIL_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/popup_menu.cpp b/dcc-old/src/plugin-datetime/window/widgets/popup_menu.cpp deleted file mode 100644 index 685dc99e51..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/popup_menu.cpp +++ /dev/null @@ -1,198 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "popup_menu.h" - -#include "file_util.h" -#include "popup_menu_delegate.h" - -#include -#include -#include -#include -#include -#include -#include - -namespace installer { - -namespace { - -const int kBorderRadius = 5; -const int kBorderDiameter = kBorderRadius * 2; - -// _____ -// \ | / -// \|/ -const int kTriangleHeight = 6; - -// Height of menu item is also defined in styles/popup_menu.css -const int kMenuItemHeight = 24; -const int kMenuViewVerticalMargin = 4; -const int kMenuViewBottomPadding = 5; -const int kMenuViewHorizontalMargins = 20; -const int kMenuViewMinimumWidth = 60; - -} // namespace - -PopupMenu::PopupMenu(QWidget *parent) - : QFrame(parent) -{ - this->setObjectName("popup_menu"); - this->initUI(); - this->initConnections(); -} - -QStringList PopupMenu::stringList() const -{ - return menu_model_->stringList(); -} - -void PopupMenu::popup(const QPoint &pos) -{ - const QSize size = menu_view_->size(); - this->move(pos.x() - size.width() / 2, pos.y() - size.height()); - this->show(); - - // Grab global keyboard events when menu window is popup. - this->grabKeyboard(); -} - -void PopupMenu::setStringList(const QStringList &strings) -{ - menu_model_->setStringList(strings); - - int item_width = kMenuViewMinimumWidth; - const QFontMetrics metrics(menu_view_->font()); - for (const QString &str : strings) { - const int curr_width = metrics.horizontalAdvance(str); - item_width = (curr_width > item_width) ? curr_width : item_width; - } - // Add margin to list view. - const int width = item_width + kMenuViewHorizontalMargins * 2; - - // Add more space at bottom of list view. - const int height = kMenuItemHeight * strings.length() + kMenuViewVerticalMargin * 2 - + kMenuViewBottomPadding; - - this->resize(width, height + kTriangleHeight); - menu_view_->adjustSize(); - menu_view_->resize(width, height); -} - -bool PopupMenu::eventFilter(QObject *obj, QEvent *event) -{ - if (event->type() == QEvent::MouseButtonPress) { - QMouseEvent *mouse_event = static_cast(event); - if (mouse_event) { - // If mouse press event is not happened within menu area, hide menu. - if (!this->geometry().contains(mouse_event->pos())) { - this->hide(); - } - } - } - return QObject::eventFilter(obj, event); -} - -void PopupMenu::hideEvent(QHideEvent *event) -{ - // No need to monitor global mouse event when menu is hidden. - qApp->removeEventFilter(this); - - this->releaseKeyboard(); - QWidget::hideEvent(event); - Q_EMIT this->onHide(); -} - -void PopupMenu::keyPressEvent(QKeyEvent *event) -{ - if (event->key() == Qt::Key_Escape) { - this->hide(); - } - QWidget::keyPressEvent(event); -} - -void PopupMenu::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event); - - QPainter painter(this); - painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing, true); - const int kWidth = this->width(); - const int kHalfWidth = kWidth / 2; - const int kHeight = this->height(); - - // First draw background with round corner. - QPainterPath background_path; - background_path.moveTo(kWidth, kBorderRadius); - background_path.arcTo(kWidth - kBorderDiameter, 0, kBorderDiameter, kBorderDiameter, 0.0, 90.0); - background_path.lineTo(kBorderRadius, 0); - background_path.arcTo(0, 0, kBorderDiameter, kBorderDiameter, 90.0, 90.0); - background_path.lineTo(0, kHeight - kBorderRadius - kTriangleHeight); - background_path.arcTo(0, - kHeight - kBorderDiameter - kTriangleHeight, - kBorderDiameter, - kBorderDiameter, - 180.0, - 90.0); - background_path.lineTo(kHalfWidth - kTriangleHeight, kHeight - kTriangleHeight); - // Draw isosceles right-angled triangle in bottom center of label. - background_path.lineTo(kHalfWidth, kHeight); - background_path.lineTo(kHalfWidth + kTriangleHeight, kHeight - kTriangleHeight); - background_path.lineTo(kWidth - kBorderRadius, kHeight - kTriangleHeight); - background_path.arcTo(kWidth - kBorderDiameter, - kHeight - kBorderDiameter - kTriangleHeight, - kBorderDiameter, - kBorderDiameter, - 270.0, - 90.0); - background_path.closeSubpath(); - const QColor background_color(255, 255, 255, 230); - painter.fillPath(background_path, QBrush(background_color)); -} - -void PopupMenu::showEvent(QShowEvent *event) -{ - qApp->installEventFilter(this); - QFrame::showEvent(event); -} - -void PopupMenu::initConnections() -{ - connect(menu_view_, &QListView::pressed, this, &PopupMenu::onMenuViewActivated); -} - -void PopupMenu::initUI() -{ - menu_model_ = new QStringListModel(this); - menu_view_ = new QListView(this); - menu_view_->setObjectName("menu_view"); - menu_view_->setAccessibleName("menu_view"); - menu_view_->setContentsMargins(0, kMenuViewVerticalMargin, 0, kMenuViewVerticalMargin); - menu_view_->setModel(menu_model_); - menu_view_->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - menu_view_->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - menu_view_->setUniformItemSizes(true); - menu_view_->setSelectionMode(QListView::SingleSelection); - menu_view_->setEditTriggers(QListView::NoEditTriggers); - PopupMenuDelegate *popup_delegate = new PopupMenuDelegate(this); - menu_view_->setItemDelegate(popup_delegate); - menu_view_->setMouseTracking(true); - menu_view_->setStyleSheet(ReadFile(":/icons/deepin/builtin/images/popup_menu.css")); - - this->setContentsMargins(0, 0, 0, 0); - this->setAttribute(Qt::WA_TranslucentBackground, true); - this->setFocusPolicy(Qt::StrongFocus); - - this->setWindowFlags(Qt::Popup); -} - -void PopupMenu::onMenuViewActivated(const QModelIndex &index) -{ - Q_ASSERT(index.isValid()); - if (index.isValid()) { - Q_EMIT this->menuActivated(index.row()); - } -} - -} // namespace installer diff --git a/dcc-old/src/plugin-datetime/window/widgets/popup_menu.h b/dcc-old/src/plugin-datetime/window/widgets/popup_menu.h deleted file mode 100644 index 23392a2246..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/popup_menu.h +++ /dev/null @@ -1,68 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INSTALLER_UI_WIDGETS_TOOLTIP_CONTAINER_H -#define INSTALLER_UI_WIDGETS_TOOLTIP_CONTAINER_H - -#include -class QKeyEvent; -class QListView; -class QPaintEvent; -class QStringListModel; - -namespace installer { - -// Used to display popup menu with sharp corner at middle of bottom edge. -class PopupMenu : public QFrame -{ - Q_OBJECT - -public: - explicit PopupMenu(QWidget *parent = nullptr); - - // Returns the list used by menu_model to store menu items. - QStringList stringList() const; - -Q_SIGNALS: - // Q_EMITted when window is hidden. - void onHide(); - - // Q_EMITted when a menu item at |index| is activated. - void menuActivated(int index); - -public Q_SLOTS: - // Show tooltip container at |pos| and grab keyboard focus. - void popup(const QPoint &pos); - - // Set menu models's internal list to |strings|. - void setStringList(const QStringList &strings); - -protected: - // Filters global mouse press event. - bool eventFilter(QObject *obj, QEvent *event) override; - - // Release keyboard focus when window is hidden. - void hideEvent(QHideEvent *event) override; - - // Hide window when Escape button is pressed. - void keyPressEvent(QKeyEvent *event) override; - - void paintEvent(QPaintEvent *event) override; - - // Monitors global mouse event when menu is popup. - void showEvent(QShowEvent *event) override; - -private: - void initConnections(); - void initUI(); - - QListView *menu_view_ = nullptr; - QStringListModel *menu_model_ = nullptr; - -private Q_SLOTS: - void onMenuViewActivated(const QModelIndex &index); -}; - -} // namespace installer - -#endif // INSTALLER_UI_WIDGETS_TOOLTIP_CONTAINER_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/popup_menu_delegate.cpp b/dcc-old/src/plugin-datetime/window/widgets/popup_menu_delegate.cpp deleted file mode 100644 index 5cd5351be1..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/popup_menu_delegate.cpp +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "popup_menu_delegate.h" - -#include - -namespace installer { - -PopupMenuDelegate::PopupMenuDelegate(QWidget *parent) - : QStyledItemDelegate(parent) -{ - this->setObjectName("popup_menu_delegate"); -} - -void PopupMenuDelegate::paint(QPainter *painter, - const QStyleOptionViewItem &option, - const QModelIndex &index) const -{ - painter->save(); - - const QRect &rect(option.rect); - - if (option.state & QStyle::State_MouseOver) { - // Draw background color of selected item, no matter it is active or not. - // #2ca7f8 - const QColor selected_color = QColor::fromRgb(44, 167, 248); - painter->fillRect(rect, QBrush(selected_color)); - } - - // Draw text. Default color is #303030. - QColor text_color = QColor::fromRgb(48, 48, 48); - if (option.state & QStyle::State_MouseOver) { - // Change text color to white on mouse hover. - text_color = Qt::white; - } - painter->setPen(QPen(text_color)); - const QString text = index.model()->data(index, Qt::DisplayRole).toString(); - - // Text alignment is center. - painter->drawText(rect, Qt::AlignHCenter | Qt::AlignVCenter, text); - - painter->restore(); -} - -} // namespace installer diff --git a/dcc-old/src/plugin-datetime/window/widgets/popup_menu_delegate.h b/dcc-old/src/plugin-datetime/window/widgets/popup_menu_delegate.h deleted file mode 100644 index 8dfa2b9c1a..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/popup_menu_delegate.h +++ /dev/null @@ -1,28 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef INSTALLER_UI_DELEGATES_POPUP_MENU_DELEGATE_H -#define INSTALLER_UI_DELEGATES_POPUP_MENU_DELEGATE_H - -#include - -namespace installer { - -// Draw menu item in popup window. -class PopupMenuDelegate : public QStyledItemDelegate -{ - Q_OBJECT - -public: - explicit PopupMenuDelegate(QWidget *parent = nullptr); - -protected: - void paint(QPainter *painter, - const QStyleOptionViewItem &option, - const QModelIndex &index) const override; -}; - -} // namespace installer - -#endif // INSTALLER_UI_DELEGATES_POPUP_MENU_DELEGATE_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/regionformatdialog.cpp b/dcc-old/src/plugin-datetime/window/widgets/regionformatdialog.cpp deleted file mode 100644 index f4abb2831a..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/regionformatdialog.cpp +++ /dev/null @@ -1,234 +0,0 @@ -// SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "regionformatdialog.h" - -#include "datetimemodel.h" - -#include -#include - -#include -#include -#include -#include -#include - -#include - -using icu::Locale; -using icu::UnicodeString; - -using namespace DCC_NAMESPACE; - -RegionFormatDialog::RegionFormatDialog(DatetimeModel *datetimeModel, QWidget *parent) - : DAbstractDialog(parent) -{ - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame); // 无边框 - titleIcon->setBackgroundTransparent(true); // 透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("")); - - QLabel *headTitle = new QLabel(tr("Region Format")); - DFontSizeManager::instance()->bind(headTitle, - DFontSizeManager::T5, - QFont::DemiBold); // 设置label字体 - headTitle->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - headTitle->setAlignment(Qt::AlignCenter); - - QVBoxLayout *mainVLayout = new QVBoxLayout(); - mainVLayout->setSpacing(0); - mainVLayout->setMargin(0); - - QWidget *topWidget = new QWidget; - QHBoxLayout *topHLayout = new QHBoxLayout(topWidget); - topHLayout->setSpacing(0); - topHLayout->setMargin(0); - - DFrame *leftFrame = new DFrame; - leftFrame->setFixedSize(344, 520); - DSearchEdit *searchEdit = new DSearchEdit; - m_model = new QStandardItemModel(this); - m_proxyModel = new QSortFilterProxyModel(this); - m_proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); - m_regionListView = new DListView; - m_regionListView->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_regionListView->setEditTriggers(QAbstractItemView::NoEditTriggers); - m_regionListView->setFrameShape(QFrame::NoFrame); - m_regionListView->setSelectionMode(QAbstractItemView::NoSelection); - m_regionListView->setBackgroundType(DStyledItemDelegate::ClipCornerBackground); - m_regionListView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_regionListView->setModel(m_proxyModel); - - QVBoxLayout *leftVLayout = new QVBoxLayout(leftFrame); - leftVLayout->setSpacing(0); - leftVLayout->setMargin(10); - leftVLayout->addWidget(searchEdit); - leftVLayout->addSpacing(10); - leftVLayout->addWidget(m_regionListView); - - DFrame *rightFrame = new DFrame; - rightFrame->setFixedSize(344, 520); - DLabel *titleLabel = new DLabel(tr("Default format")); - DFontSizeManager::instance()->bind(titleLabel, - DFontSizeManager::T5, - QFont::DemiBold); // 设置label字体 - DFrame *formatContentFrame = new DFrame; - formatContentFrame->setBackgroundRole(DPalette::ItemBackground); - QVBoxLayout *formatLayout = new QVBoxLayout(formatContentFrame); - formatLayout->setMargin(0); - - m_dayLabel = addFormatItem(formatContentFrame, tr("First of day"), "Monday"); - m_shortDateLabel = addFormatItem(formatContentFrame, tr("Short date"), "2023.10.01"); - m_longDateLabel = addFormatItem(formatContentFrame, tr("Long date"), "2023.10.01.Mon"); - m_shortTimeLabel = addFormatItem(formatContentFrame, tr("Short time"), "12:00"); - m_longTimeLabel = addFormatItem(formatContentFrame, tr("Long time"), "12:00:00"); - m_currencyLabel = addFormatItem(formatContentFrame, tr("Currency symbol"), "$"); - m_numberLabel = addFormatItem(formatContentFrame, tr("Numbers"), "123456789"); - m_paperLabel = addFormatItem(formatContentFrame, tr("Paper"), "A4"); - - QVBoxLayout *rightLayout = new QVBoxLayout(rightFrame); - rightLayout->setSpacing(0); - rightLayout->setMargin(10); - rightLayout->addWidget(titleLabel); - rightLayout->addSpacing(12); - rightLayout->addWidget(formatContentFrame); - rightLayout->addStretch(0); - - QWidget *buttonsWidget = new QWidget; - QHBoxLayout *bHLayout = new QHBoxLayout(buttonsWidget); - bHLayout->setSpacing(0); - bHLayout->setMargin(0); - QPushButton *cancelBtn = new QPushButton(tr("Cancel")); - cancelBtn->setFixedSize(200, 36); - m_saveBtn = new DSuggestButton(tr("Save")); - m_saveBtn->setFixedSize(200, 36); - m_saveBtn->setEnabled(false); - bHLayout->addStretch(0); - bHLayout->addWidget(cancelBtn); - bHLayout->addSpacing(10); - bHLayout->addWidget(m_saveBtn); - bHLayout->addStretch(0); - - topHLayout->addWidget(leftFrame); - topHLayout->addSpacing(10); - topHLayout->addWidget(rightFrame); - - mainVLayout->addWidget(titleIcon); - mainVLayout->addWidget(headTitle); - mainVLayout->addSpacing(10); - mainVLayout->addWidget(topWidget); - mainVLayout->addSpacing(10); - mainVLayout->addWidget(buttonsWidget); - mainVLayout->addSpacing(40); - - setLayout(mainVLayout); - - connect(searchEdit, &DLineEdit::textChanged, m_proxyModel, &QSortFilterProxyModel::setFilterWildcard); - connect(cancelBtn, &QPushButton::clicked, this, &RegionFormatDialog::close); - connect(m_saveBtn, &QPushButton::clicked, this, &RegionFormatDialog::onSaved); - connect(m_regionListView, &QListView::clicked, this, &RegionFormatDialog::onRegionSelected); - - initItemModel(datetimeModel); - m_proxyModel->setSourceModel(m_model); -} - -RegionFormatDialog::~RegionFormatDialog() { } - -void RegionFormatDialog::setCurrentRegion(const QString ®ion) -{ - QModelIndex start = m_proxyModel->index(0, 0); - if (!start.isValid()) { - qWarning() << "startIndex is invalid when setCurrentRegion called!"; - return; - } - QModelIndexList results = m_proxyModel->match(start, Qt::DisplayRole, region); - if (results.size() > 0) { - m_regionListView->setCurrentIndex(results.first()); - auto realIndex = m_proxyModel->mapToSource(results.first()); - m_locale = realIndex.data(RegionFormatRole::LocaleRole).toLocale(); - updateRegionFormat(m_locale); - QStandardItem *selectedItem = m_model->itemFromIndex(realIndex); - if (selectedItem) { - selectedItem->setCheckState(Qt::Checked); - m_lastSelectedIndex = realIndex; - } - } else { - qWarning() << "There is not anything matched in region proxyModel"; - } -} - -void RegionFormatDialog::onRegionSelected(const QModelIndex &index) -{ - updateDataModel(m_model, index); - m_langRegion = index.data(RegionFormatRole::TextRole).toString(); - m_locale = index.data(RegionFormatRole::LocaleRole).toLocale(); - updateRegionFormat(m_locale); -} - -void RegionFormatDialog::onSaved() -{ - Q_EMIT regionFormatSaved(m_langRegion, m_locale); - close(); -} - -void RegionFormatDialog::initItemModel(DatetimeModel *dateTimeModel) -{ - m_regions = dateTimeModel->regions(); - for (auto locale : m_regions) { - // This is legacy code that no longer used, the following code doesn't garantee to be compilable. - // The code here is just for demo purpose. - auto langAndRegion = DCCLocale::languageAndRegionName(locale.name()); - QString langRegionText = QString("%1 (%2)").arg(langAndRegion.first).arg(langAndRegion.second); - DStandardItem *item = new DStandardItem; - item->setData(langAndRegion.first, RegionFormatRole::TextRole); - item->setData(locale, RegionFormatRole::LocaleRole); - item->setText(langRegionText); - item->setSizeHint(QSize(304, 36)); - m_model->appendRow(item); - } -} - -QLabel *RegionFormatDialog::addFormatItem(const QWidget *frame, - const QString &name, - const QString &format) -{ - QWidget *widget = new QWidget; - QHBoxLayout *hLayout = new QHBoxLayout(widget); - QLabel *nameLabel = new QLabel(name); - QLabel *formatLabel = new QLabel(format); - hLayout->addWidget(nameLabel); - hLayout->addStretch(0); - hLayout->addWidget(formatLabel); - frame->layout()->addWidget(widget); - return formatLabel; -} - -void RegionFormatDialog::updateRegionFormat(const QLocale &locale) -{ - RegionFormat regionFormat = RegionProxy::regionFormat(locale); - m_dayLabel->setText(locale.standaloneDayName(regionFormat.firstDayOfWeekFormat)); - m_shortDateLabel->setText(locale.toString(QDate::currentDate(), regionFormat.shortDateFormat)); - m_longDateLabel->setText(locale.toString(QDate::currentDate(), regionFormat.longDateFormat)); - m_shortTimeLabel->setText(locale.toString(QTime::currentTime(), regionFormat.shortTimeFormat)); - m_longTimeLabel->setText(locale.toString(QTime::currentTime(), regionFormat.longTimeFormat)); - m_currencyLabel->setText(regionFormat.currencyFormat.toUtf8().data()); - m_numberLabel->setText(regionFormat.numberFormat.toUtf8().data()); - m_paperLabel->setText(regionFormat.paperFormat.toUtf8().data()); -} - -void RegionFormatDialog::updateDataModel(QStandardItemModel *model, const QModelIndex &index) -{ - if (m_lastSelectedIndex.isValid()) { - model->itemFromIndex(m_lastSelectedIndex)->setCheckState(Qt::Unchecked); - } - auto realIndex = m_proxyModel->mapToSource(index); - QStandardItem *selectedItem = model->itemFromIndex(realIndex); - if (selectedItem) { - selectedItem->setCheckState(Qt::Checked); - m_lastSelectedIndex = realIndex; - m_saveBtn->setEnabled(true); - } -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/regionformatdialog.h b/dcc-old/src/plugin-datetime/window/widgets/regionformatdialog.h deleted file mode 100644 index 34c47ba174..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/regionformatdialog.h +++ /dev/null @@ -1,71 +0,0 @@ -//SPDX-FileCopyrightText: 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef REGIONFORMATDIALOG_H -#define REGIONFORMATDIALOG_H - -#include "interface/namespace.h" -#include "regionproxy.h" - -#include -#include - -DWIDGET_USE_NAMESPACE - -class QLabel; -class QSortFilterProxyModel; - -class DatetimeModel; - -namespace DCC_NAMESPACE { - -class RegionFormatDialog : public DAbstractDialog -{ - Q_OBJECT -public: - enum RegionFormatRole{ - TextRole = DTK_NAMESPACE::UserRole + 1, - LocaleRole - }; - explicit RegionFormatDialog(DatetimeModel *model, QWidget *parent = nullptr); - ~RegionFormatDialog(); - - void setCurrentRegion(const QString ®ion); - -Q_SIGNALS: - void regionFormatSaved(const QString &langRegion, const QLocale ®ionFormat); - -private Q_SLOTS: - void onRegionSelected(const QModelIndex &index); - void onSaved(); - -private: - void initItemModel(DatetimeModel *dateTimeModel); - QLabel* addFormatItem(const QWidget *frame, const QString &name, const QString &format); - void updateRegionFormat(const QLocale &locale); - void updateDataModel(QStandardItemModel *model, const QModelIndex &index); - -private: - QLabel *m_dayLabel = nullptr; - QLabel *m_shortDateLabel = nullptr; - QLabel *m_longDateLabel = nullptr; - QLabel *m_shortTimeLabel = nullptr; - QLabel *m_longTimeLabel = nullptr; - QLabel *m_currencyLabel = nullptr; - QLabel *m_numberLabel = nullptr; - QLabel *m_paperLabel = nullptr; - - Regions m_regions; - DListView *m_regionListView; - QPushButton *m_saveBtn; - QSortFilterProxyModel *m_proxyModel; - QStandardItemModel *m_model; - QModelIndex m_searchModelIndex; - QModelIndex m_lastSelectedIndex; - bool m_searchStatus = false; - QString m_langRegion; - QLocale m_locale; -}; -} -#endif // RegionFormatDialog_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/searchinput.cpp b/dcc-old/src/plugin-datetime/window/widgets/searchinput.cpp deleted file mode 100644 index 1f899390fc..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/searchinput.cpp +++ /dev/null @@ -1,69 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/searchinput.h" -#include "widgets/basiclistdelegate.h" - -#include -#include - -SearchInput::SearchInput(QWidget* parent) - :QLineEdit(parent), - m_iconVisible(true) -{ - setContextMenuPolicy(Qt::NoContextMenu); - setFocusPolicy(Qt::ClickFocus); - m_search = tr("Search"); -} - -void SearchInput::setSearchText(const QString &text) -{ - m_search = text; -} - -void SearchInput::setIconVisible(bool visible) -{ - m_iconVisible = visible; -} - -QString SearchInput::iconPath() const -{ - return m_iconPath; -} - -void SearchInput::setIcon(const QString &filepath) -{ - m_iconPath = filepath; - - m_icon = loadPixmap(filepath); -} - -void SearchInput::paintEvent(QPaintEvent *e) -{ - QLineEdit::paintEvent(e); - - if(!hasFocus() && text().isEmpty()) - { - QRect rect = this->rect(); - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing); - painter.setOpacity(0.5); - if(m_iconVisible) - { - QFontMetrics fm(qApp->font()); - int w = fm.horizontalAdvance(m_search); - int iw = m_icon.width(); - int x = (rect.width() - w - iw -8)/2; - QRect iconRect(x, 0, iw, rect.height()); - QRect tmp(QPoint(0,0),m_icon.size() / devicePixelRatioF()); - tmp.moveCenter(iconRect.center()); - QRect searchRect(iconRect.right() + 2, 0, w, rect.height()); - painter.drawPixmap(tmp, m_icon); - painter.drawText(searchRect, Qt::AlignCenter, m_search); - } - else - { - painter.drawText(rect, Qt::AlignCenter, m_search); - } - } -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/searchinput.h b/dcc-old/src/plugin-datetime/window/widgets/searchinput.h deleted file mode 100644 index 51e7a9df5a..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/searchinput.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SEARCHINPUT_H -#define SEARCHINPUT_H - -#include - - -class SearchInput : public QLineEdit -{ - Q_OBJECT - Q_PROPERTY(QString icon READ iconPath WRITE setIcon) -public: - explicit SearchInput(QWidget* parent = 0); - void setSearchText(const QString& text); - void setIconVisible(bool visible); - QString iconPath() const; - void setIcon(const QString &filepath); - -protected: - void paintEvent(QPaintEvent *); - -private: - bool m_iconVisible; - QString m_search; - QPixmap m_icon; - QString m_iconPath; -}; - - -#endif // SEARCHINPUT_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezone.cpp b/dcc-old/src/plugin-datetime/window/widgets/timezone.cpp deleted file mode 100644 index 25fd246c92..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezone.cpp +++ /dev/null @@ -1,225 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "timezone.h" - -#ifndef _GNU_SOURCE -# define _GNU_SOURCE /* For tm_gmtoff and tm_zone */ -#endif -#include "consts.h" -#include "file_util.h" - -#include - -#include - -#include - -#include -#include - -namespace installer { - -namespace { - -const QString tzDirPath = std::visit([] { - QString tzDirPath = "/usr/share/zoneinfo"; - if (qEnvironmentVariableIsSet("TZDIR")) - tzDirPath = qEnvironmentVariable("TZDIR"); - return tzDirPath; -}); - -#if USE_DEEPIN_ZONE -const QString kZoneTabFileDeepin = QStringLiteral(DEEPIN_TIME_ZONE_PATH); -const QString kZoneTabFile = std::visit([] { - if (QFile(kZoneTabFileDeepin).exists()) { - return kZoneTabFileDeepin; - } - return tzDirPath + "/zone1970.tab"; -}); -#else -// Absolute path to zone.tab file. -const QString kZoneTabFile = std::visit([] { - return tzDirPath + "/zone1970.tab"; -}); -#endif - -// Absolute path to backward timezone file. -const char kTimezoneAliasFile[] = "/timezone_alias"; - -// Domain name for timezones. -const char kTimezoneDomain[] = "deepin-installer-timezones"; - -// Parse latitude and longitude of the zone's principal location. -// See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. -// |pos| is in ISO 6709 sign-degrees-minutes-seconds format, -// either +-DDMM+-DDDMM or +-DDMMSS+-DDDMMSS. -// |digits| 2 for latitude, 3 for longitude. -double ConvertPos(const QString &pos, int digits) -{ - if (pos.length() < 4 || digits > 9) { - return 0.0; - } - - const QString integer = pos.left(digits + 1); - const QString fraction = pos.mid(digits + 1); - const double t1 = integer.toDouble(); - const double t2 = fraction.toDouble(); - if (t1 > 0.0) { - return t1 + t2 / pow(10.0, fraction.length()); - } else { - return t1 - t2 / pow(10.0, fraction.length()); - } -} - -} // namespace - -[[maybe_unused]] bool ZoneInfoDistanceComp(const ZoneInfo &a, const ZoneInfo &b) -{ - return a.distance < b.distance; -} - -QDebug &operator<<(QDebug &debug, const ZoneInfo &info) -{ - debug << "ZoneInfo {" - << "cc:" << info.country << "tz:" << info.timezone << "lat:" << info.latitude - << "lng:" << info.longitude << "}"; - return debug; -} - -ZoneInfoList GetZoneInfoList() -{ - ZoneInfoList list; - const QString content(ReadFile(kZoneTabFile)); - for (const QString &line : content.split('\n')) { - if (!line.startsWith('#')) { - const QStringList parts(line.split('\t')); - // Parse latitude and longitude. - if (parts.length() >= 3) { - const QString coordinates = parts.at(1); - int index = coordinates.indexOf('+', 3); - if (index == -1) { - index = coordinates.indexOf('-', 3); - } - Q_ASSERT(index > -1); - const double latitude = ConvertPos(coordinates.left(index), 2); - const double longitude = ConvertPos(coordinates.mid(index), 3); - const ZoneInfo zone_info = { parts.at(0), parts.at(2), latitude, longitude, 0.0 }; - list.append(zone_info); - } - } - } - return list; -} - -[[maybe_unused]] int GetZoneInfoByCountry(const ZoneInfoList &list, const QString &country) -{ - int index = -1; - for (const ZoneInfo &info : list) { - index++; - if (info.country == country) { - return index; - } - } - return -1; -} - -int GetZoneInfoByZone(const ZoneInfoList &list, const QString &timezone) -{ - int index = -1; - for (const ZoneInfo &info : list) { - index++; - if (info.timezone == timezone) { - return index; - } - } - return -1; -} - -QString GetCurrentTimezone() -{ - const QString content(ReadFile("/etc/timezone")); - return content.trimmed(); -} - -[[maybe_unused]] QString GetTimezoneName(const QString &timezone) -{ - const int index = timezone.lastIndexOf('/'); - return (index > -1) ? timezone.mid(index + 1) : timezone; -} - -QString GetLocalTimezoneName(const QString &timezone, const QString &locale) -{ - // Set locale first. - (void)setlocale(LC_ALL, QString(locale + ".UTF-8").toStdString().c_str()); - const QString local_name(dgettext(kTimezoneDomain, timezone.toStdString().c_str())); - int index = local_name.lastIndexOf('/'); - if (index == -1) { - // Some translations of locale name contains non-standard char. - index = local_name.lastIndexOf("∕"); - } - - // Reset locale. - (void)setlocale(LC_ALL, kDefaultLocale); - - return (index > -1) ? local_name.mid(index + 1) : local_name; -} - -[[maybe_unused]] TimezoneAliasMap GetTimezoneAliasMap() -{ - TimezoneAliasMap map; - - const QString content = ReadFile(kTimezoneAliasFile); - for (const QString &line : content.split('\n')) { - if (!line.isEmpty()) { - const QStringList parts = line.split(':'); - Q_ASSERT(parts.length() == 2); - if (parts.length() == 2) { - map.insert(parts.at(0), parts.at(1)); - } - } - } - - return map; -} - -[[maybe_unused]] bool IsValidTimezone(const QString &timezone) -{ - // Ignores empty timezone. - if (timezone.isEmpty()) { - return false; - } -#if USE_DEEPIN_ZONE - if (kZoneTabFile == kZoneTabFileDeepin && QFile(kZoneTabFile).exists()) { - return true; - } -#endif - // If |filepath| is a file or a symbolic link to file, it is a valid timezone. - const QString filepath(tzDirPath + QDir::separator() + timezone); - return QFile::exists(filepath); -} - -[[maybe_unused]] TimezoneOffset GetTimezoneOffset(const QString &timezone) -{ - const char *kTzEnv = "TZ"; - const char *old_tz = getenv(kTzEnv); - setenv(kTzEnv, timezone.toStdString().c_str(), 1); - struct tm tm; - const time_t curr_time = time(nullptr); - - // Call tzset() before localtime_r(). Set tzset(3). - tzset(); - (void)localtime_r(&curr_time, &tm); - - // Reset timezone. - if (old_tz) { - setenv(kTzEnv, old_tz, 1); - } else { - unsetenv(kTzEnv); - } - - const TimezoneOffset offset = { tm.tm_zone, tm.tm_gmtoff }; - return offset; -} - -} // namespace installer diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezone.h b/dcc-old/src/plugin-datetime/window/widgets/timezone.h deleted file mode 100644 index f40af1fa24..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezone.h +++ /dev/null @@ -1,67 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INSTALLER_SYSINFO_TIMEZONE_H -#define INSTALLER_SYSINFO_TIMEZONE_H - -#include -#include - -namespace installer { - -struct ZoneInfo -{ -public: - QString country; - QString timezone; - - // Coordinates of zone. - double latitude; - double longitude; - - // Distance to clicked point for comparison. - double distance; -}; - -[[maybe_unused]] bool ZoneInfoDistanceComp(const ZoneInfo &a, const ZoneInfo &b); -QDebug &operator<<(QDebug &debug, const ZoneInfo &info); -typedef QList ZoneInfoList; - -// Read available timezone info in zone.tab file. -ZoneInfoList GetZoneInfoList(); - -// Find ZoneInfo based on |country| or |timezone|. -// Returns -1 if not found. -[[maybe_unused]] int GetZoneInfoByCountry(const ZoneInfoList &list, const QString &country); -int GetZoneInfoByZone(const ZoneInfoList &list, const QString &timezone); - -// Read current timezone in /etc/timezone file. -QString GetCurrentTimezone(); - -// Returns name of timezone, excluding continent name. -[[maybe_unused]] QString GetTimezoneName(const QString &timezone); - -// Returns local name of timezone, excluding continent name. -// |locale| is desired locale name. -QString GetLocalTimezoneName(const QString &timezone, const QString &locale); - -// A map between old name of timezone and current name. -// e.g. Asia/Chongqing -> Asia/Shanghai -typedef QHash TimezoneAliasMap; -[[maybe_unused]] TimezoneAliasMap GetTimezoneAliasMap(); - -// Validate |timezone|. -[[maybe_unused]] bool IsValidTimezone(const QString &timezone); - -struct TimezoneOffset -{ - QString name; // Offset name, like CST. - long seconds; // Offset seconds. -}; - -// Get |timezone| offset. -[[maybe_unused]] TimezoneOffset GetTimezoneOffset(const QString &timezone); - -} // namespace installer - -#endif // INSTALLER_SYSINFO_TIMEZONE_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezone_map.cpp b/dcc-old/src/plugin-datetime/window/widgets/timezone_map.cpp deleted file mode 100644 index 30872ddc82..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezone_map.cpp +++ /dev/null @@ -1,244 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "timezone_map.h" - -#include -#include -#include -#include -#include -#include -#include "basiclistdelegate.h" - -#include "file_util.h" -#include "timezone_map_util.h" -#include "popup_menu.h" -#include "tooltip_pin.h" - -using namespace installer; - -const int kDotVerticalMargin = 2; -const int kZonePinHeight = 30; -const int kZonePinMinimumWidth = 60; - -const double kDistanceThreshold = 64.0; -const char kDotFile[] = ":/icons/deepin/builtin/images/indicator_active.png"; -const char kTimezoneMapFile[] = ":/icons/deepin/builtin/images/timezone_map_big@1x.svg"; - -// At absolute position of |zone| on a map with size (map_width, map_height). -QPoint ZoneInfoToPosition(const installer::ZoneInfo &zone, int map_width, int map_height) -{ - // TODO(xushaohua): Call round(). - const int x = int(ConvertLongitudeToX(zone.longitude) * map_width); - const int y = int(ConvertLatitudeToY(zone.latitude) * map_height); - return QPoint(x, y); -} - -TimezoneMap::TimezoneMap(QWidget *parent) - : QFrame(parent) - , current_zone_() - , total_zones_(GetZoneInfoList()) - , nearest_zones_() -{ - this->setObjectName("timezone_map"); - this->setAccessibleName("timezone_map"); - this->initUI(); - this->initConnections(); -} - -TimezoneMap::~TimezoneMap() -{ - if (popup_window_) { - delete popup_window_; - popup_window_ = nullptr; - } -} - -const QString TimezoneMap::getTimezone() const -{ - return current_zone_.timezone; -} - -bool TimezoneMap::setTimezone(const QString &timezone) -{ - nearest_zones_.clear(); - const int index = GetZoneInfoByZone(total_zones_, timezone); - if (index > -1) { - // 找到时区并标记到地图上 - current_zone_ = total_zones_.at(index); - nearest_zones_.append(current_zone_); - this->remark(); - return true; - } else { - // NOTE(xushaohua): "Etc/UTC" can not be set on the map - qInfo() << "Timezone not found:" << timezone; - } - - return false; -} - -void TimezoneMap::mousePressEvent(QMouseEvent *event) -{ - if (event->button() == Qt::LeftButton) { - // Get nearest zones around mouse. - nearest_zones_ = GetNearestZones(total_zones_, kDistanceThreshold, - event->x(), event->y(), - this->width(), this->height()); - qDebug() << nearest_zones_; - current_zone_ = nearest_zones_.first(); - if (nearest_zones_.length() == 1) { - // 单个时区 - this->remark(); - } else { - this->popupZoneWindow(event->pos()); - } - Q_EMIT this->timezoneUpdated(current_zone_.timezone); - } else { - QWidget::mousePressEvent(event); - } -} - -void TimezoneMap::resizeEvent(QResizeEvent *event) -{ - if (popup_window_->isVisible()) { - dot_->hide(); - popup_window_->hide(); - } - - if (!nearest_zones_.isEmpty()) { - this->remark(); - } - QLabel *background_label = findChild("background_label"); - if (background_label) { - QPixmap timezone_pixmap = loadPixmap(kTimezoneMapFile); - background_label->setPixmap(timezone_pixmap.scaled(event->size() * devicePixelRatioF(), Qt::KeepAspectRatio, Qt::FastTransformation)); - } - - QWidget::resizeEvent(event); -} - -void TimezoneMap::initConnections() -{ - // Hide dot when popup-zones window is hidden. - connect(popup_window_, &PopupMenu::onHide, - dot_, &QLabel::hide); - - // Hide popup_window_ and mark new timezone on map. - connect(popup_window_, &PopupMenu::menuActivated, - this, &TimezoneMap::onPopupWindowActivated); -} - -void TimezoneMap::initUI() -{ - QLabel *background_label = new QLabel(this); - background_label->setObjectName("background_label"); - QPixmap timezone_pixmap = loadPixmap(kTimezoneMapFile); - Q_ASSERT(!timezone_pixmap.isNull()); - background_label->setPixmap(timezone_pixmap); - - // Set parent widget of dot_ to SystemInfoTimezoneFrame. - dot_ = new QLabel(this->parentWidget()); - const QPixmap dot_pixmap(kDotFile); - Q_ASSERT(!dot_pixmap.isNull()); - dot_->setPixmap(dot_pixmap); - dot_->setFixedSize(dot_pixmap.size()); - dot_->hide(); - - // Set parent widget of zone_pin_ to SystemInfoTimezoneFrame. - zone_pin_ = new TooltipPin(this->parentWidget()); - zone_pin_->setFixedHeight(kZonePinHeight); - zone_pin_->setMinimumWidth(kZonePinMinimumWidth); - // Allow mouse event to pass through. - zone_pin_->setAttribute(Qt::WA_TransparentForMouseEvents, true); - zone_pin_->hide(); - - popup_window_ = new PopupMenu(); - popup_window_->hide(); - - this->setContentsMargins(0, 0, 0, 0); -} - -void TimezoneMap::popupZoneWindow(const QPoint &pos) -{ - // Hide all marks first. - dot_->hide(); - zone_pin_->hide(); - popup_window_->hide(); - - // Popup zone list window. - const QString locale = QLocale::system().name(); - QStringList zone_names; - for (const ZoneInfo &zone : nearest_zones_) { - zone_names.append(GetLocalTimezoneName(zone.timezone, locale)); - } - - // Show popup window above dot - popup_window_->setStringList(zone_names); - const int dy = pos.y() - dot_->height() - kDotVerticalMargin; - const QPoint popup_window_pos = this->mapToGlobal(QPoint(pos.x(), dy)); - popup_window_->popup(popup_window_pos); - - const QPoint dot_relative_pos(pos.x() - dot_->width() / 2, - pos.y() - dot_->height() / 2); - const QPoint dot_pos(this->mapToParent(dot_relative_pos)); - dot_->move(dot_pos); - dot_->show(); -} - -void TimezoneMap::remark() -{ - // Hide all marks first. - dot_->hide(); - zone_pin_->hide(); - popup_window_->hide(); - - const int map_width = this->width(); - const int map_height = this->height(); - - Q_ASSERT(!nearest_zones_.isEmpty()); - const QString locale = QLocale::system().name(); - if (!nearest_zones_.isEmpty()) { - zone_pin_->setText(GetLocalTimezoneName(current_zone_.timezone, locale)); - - // Adjust size of pin to fit its content. - zone_pin_->adjustSize(); - - // Show zone pin at current marked zone. - const QPoint zone_pos = ZoneInfoToPosition(current_zone_, map_width, - map_height); - const int zone_dy = zone_pos.y() - dot_->height() / 2 - kDotVerticalMargin; - const QPoint zone_pin_relative_pos(zone_pos.x(), zone_dy); - const QPoint zone_pin_pos(this->mapToParent(zone_pin_relative_pos)); - - if (zone_pin_pos.x() < 100) { - // 左侧位置不够,箭头放到左边 - zone_pin_->setArrowDirection(TooltipPin::ArrowLeft); - } else { - zone_pin_->setArrowDirection(TooltipPin::ArrowDown); - } - zone_pin_->popup(zone_pin_pos); - - const QPoint dot_relative_pos(zone_pos.x() - dot_->width() / 2, - zone_pos.y() - dot_->height() / 2); - const QPoint dot_pos(this->mapToParent(dot_relative_pos)); - dot_->move(dot_pos); - dot_->show(); - } -} - -// 鼠标点击位置有多个时区,弹出菜单选择后 -void TimezoneMap::onPopupWindowActivated(int index) -{ - // Hide popup window and dot first. - popup_window_->hide(); - dot_->hide(); - - // Update current selected timezone and mark it on map. - Q_ASSERT(index < nearest_zones_.length()); - if (index < nearest_zones_.length()) { - current_zone_ = nearest_zones_.at(index); - this->remark(); - Q_EMIT this->timezoneUpdated(current_zone_.timezone); - } -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezone_map.h b/dcc-old/src/plugin-datetime/window/widgets/timezone_map.h deleted file mode 100644 index 6699bac919..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezone_map.h +++ /dev/null @@ -1,77 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INSTALLER_UI_WIDGETS_TIMEZONE_MAP_H -#define INSTALLER_UI_WIDGETS_TIMEZONE_MAP_H - -#include -class QLabel; -class QListView; -class QResizeEvent; -class QStringListModel; - -#include "timezone.h" - -namespace installer { -class PopupMenu; -class TooltipPin; -}; - -// Draw timezone map and bubble. -class TimezoneMap : public QFrame -{ - Q_OBJECT - -public: - explicit TimezoneMap(QWidget *parent = nullptr); - ~TimezoneMap(); - - // Get current selected timezone, might be empty. - const QString getTimezone() const; - -Q_SIGNALS: - void timezoneUpdated(const QString &timezone); - -public Q_SLOTS: - // Remark |timezone| on map. - bool setTimezone(const QString &timezone); - -protected: - void mousePressEvent(QMouseEvent *event) override; - - // Hide tooltips when window is resized. - void resizeEvent(QResizeEvent *event) override; - -private: - void initConnections(); - void initUI(); - - // Popup zone window at |pos|. - void popupZoneWindow(const QPoint &pos); - - // Mark current zone on the map. - void remark(); - - // Currently selected/marked timezone. - installer::ZoneInfo current_zone_; - - // A list of zone info found in system. - const installer::ZoneInfoList total_zones_; - - // A list of zone info which are near enough to current cursor position. - installer::ZoneInfoList nearest_zones_; - - // A round dot to indicate position on the map. - QLabel *dot_ = nullptr; - - // To mark a zone on map. - installer::TooltipPin *zone_pin_ = nullptr; - - // To display a list of zones on map. - installer::PopupMenu *popup_window_ = nullptr; - -private Q_SLOTS: - void onPopupWindowActivated(int index); -}; - -#endif // INSTALLER_UI_WIDGETS_TIMEZONE_MAP_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezone_map_util.cpp b/dcc-old/src/plugin-datetime/window/widgets/timezone_map_util.cpp deleted file mode 100644 index 36857c0223..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezone_map_util.cpp +++ /dev/null @@ -1,69 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "timezone_map_util.h" - -#include - -namespace installer { - -namespace { - -// From gnome-control-center. -double radians(double degrees) { - return (degrees / 360.0) * M_PI * 2; -} - -} // namespace - -double ConvertLatitudeToY(double latitude) { - const double bottom_lat = -59; - const double top_lat = 81; - const double full_range = 4.6068250867599998; - double top_per, y, top_offset, map_range; - - top_per = top_lat / 180.0; - y = 1.25 * log(tan(M_PI_4 + 0.4 * radians(latitude))); - top_offset = full_range * top_per; - map_range = fabs(1.25 * log(tan(M_PI_4 + 0.4 * radians(bottom_lat))) - - top_offset); - y = fabs(y - top_offset); - y = y / map_range; - return y; -} - -double ConvertLongitudeToX(double longitude) { - const double xdeg_offset = -6; - return ((180.0 + longitude) / 360.0 + xdeg_offset / 180.0); -} - -ZoneInfoList GetNearestZones(const ZoneInfoList& total_zones, double threshold, - int x, int y, int map_width, int map_height) { - ZoneInfoList zones; - double minimum_distance = map_width * map_width + map_height * map_height; - int nearest_zone_index = -1; - for (int index = 0; index < total_zones.length(); index++) { - const ZoneInfo& zone = total_zones.at(index); - const double point_x = ConvertLongitudeToX(zone.longitude) * map_width; - const double point_y = ConvertLatitudeToY(zone.latitude) * map_height; - const double dx = point_x - x; - const double dy = point_y - y; - const double distance = dx * dx + dy * dy; - if (distance < minimum_distance) { - minimum_distance = distance; - nearest_zone_index = index; - } - if (distance <= threshold) { - zones.append(zone); - } - } - - // Get the nearest zone. - if (zones.isEmpty()) { - zones.append(total_zones.at(nearest_zone_index)); - } - - return zones; -} - -} // namespace installer diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezone_map_util.h b/dcc-old/src/plugin-datetime/window/widgets/timezone_map_util.h deleted file mode 100644 index bee4812549..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezone_map_util.h +++ /dev/null @@ -1,22 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INSTALLER_DELEGATES_TIMEZONE_MAP_UTIL_H -#define INSTALLER_DELEGATES_TIMEZONE_MAP_UTIL_H - -#include "timezone.h" - -namespace installer { - -// Convert position of zone from polar coordinates to rectangular coordinates. -double ConvertLatitudeToY(double latitude); -double ConvertLongitudeToX(double longitude); - -// Get a list of zone info whose distance to (x, y) is less than |threshold| -// in a world map with size (map_width, map_height). -ZoneInfoList GetNearestZones(const ZoneInfoList& total_zones, double threshold, - int x, int y, int map_width, int map_height); - -} // namespace installer - -#endif // INSTALLER_DELEGATES_TIMEZONE_MAP_UTIL_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezonechooser.cpp b/dcc-old/src/plugin-datetime/window/widgets/timezonechooser.cpp deleted file mode 100644 index e23b8f36eb..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezonechooser.cpp +++ /dev/null @@ -1,311 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "timezonechooser.h" - -#include "datetimedbusproxy.h" -#include "searchinput.h" -#include "timezone_map.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -TimeZoneChooser::TimeZoneChooser(QWidget *parent) - : QDialog(parent) - , m_blurEffect(new DBlurEffectWidget(this)) - , m_map(new TimezoneMap(this)) - , m_searchInput(new SearchInput) - , m_title(new QLabel) - , m_cancelBtn(new QPushButton(tr("Cancel"))) - , m_confirmBtn(new DSuggestButton(tr("Confirm"))) - , m_totalZones(installer::GetZoneInfoList()) -{ - m_blurEffect->setAccessibleName("blurEffect"); - - setWindowFlags(Qt::Dialog); - - m_blurEffect->blurEnabled(); - const bool blurIfPossible = DTK_GUI_NAMESPACE::DWindowManagerHelper::instance()->hasBlurWindow(); - setAttribute(Qt::WA_TranslucentBackground, blurIfPossible); - - setupSize(); - - DTitlebar *titleBar = new DTitlebar(this); - titleBar->setFrameStyle(QFrame::NoFrame); // 无边框 - titleBar->setBackgroundTransparent(true); // 透明 - titleBar->setMenuVisible(false); - - // 删除部分重复设置的代码,并移动部分代码到合适位置,尽量将相同功能的代码放在一起 - m_searchInput->setMinimumSize(350, 36); - m_cancelBtn->setMinimumSize(200, 36); - m_confirmBtn->setMinimumSize(200, 36); - m_confirmBtn->setEnabled(false); - - DPalette pa = DPaletteHelper::instance()->palette(m_title); - pa.setBrush(QPalette::WindowText, pa.windowText()); - DPaletteHelper::instance()->setPalette(m_title, pa); - - m_blurEffect->setBlendMode(DBlurEffectWidget::BehindWindowBlend); - m_blurEffect->setMaskColor(Qt::black); - - QHBoxLayout *hLayout = new QHBoxLayout; - hLayout->addStretch(); - hLayout->addWidget(m_cancelBtn, 0, Qt::AlignHCenter); - hLayout->addSpacing(20); - hLayout->addWidget(m_confirmBtn, 0, Qt::AlignHCenter); - hLayout->addStretch(); - - QVBoxLayout *layout = new QVBoxLayout; - layout->setMargin(0); - layout->setSpacing(0); - layout->addWidget(titleBar); - layout->addWidget(m_title, 0, Qt::AlignHCenter | Qt::AlignTop); - layout->addSpacing(10); - layout->addWidget(m_searchInput, 0, Qt::AlignHCenter | Qt::AlignTop); - layout->addSpacing(10); - layout->addWidget(m_map, 0, Qt::AlignHCenter); - layout->addSpacing(10); - layout->addLayout(hLayout); - layout->addSpacing(10); - setLayout(layout); - - connect(m_confirmBtn, &DSuggestButton::clicked, [this] { - QString zone = m_map->getTimezone(); - Q_EMIT confirmed(zone); - close(); - }); - - connect(m_cancelBtn, &QPushButton::clicked, this, [this] { - Q_EMIT cancelled(); - - close(); - }); - - connect(m_searchInput, &SearchInput::editingFinished, [this] { - QString timezone = m_searchInput->text(); - timezone = m_completionCache.value(timezone, timezone); - if (m_map->setTimezone(timezone) && !m_confirmBtn->isEnabled()) - m_confirmBtn->setEnabled(true); - }); - - connect(m_searchInput, &SearchInput::textChanged, m_searchInput, &SearchInput::editingFinished); - - connect(m_map, &TimezoneMap::timezoneUpdated, this, [this] { - m_searchInput->setText(""); - m_searchInput->clearFocus(); - m_confirmBtn->setEnabled(true); - }); - - QTimer::singleShot(0, [this] { - QStringList completions; - QStringList completions_filter; - for (const auto &zoneInfo : m_totalZones) { - auto timezone = zoneInfo.timezone; - completions << timezone; // timezone as completion candidate. - - // localized timezone as completion candidate. - const QString locale = QLocale::system().name(); - QString localizedTimezone = installer::GetLocalTimezoneName(timezone, locale); - completions << localizedTimezone; - - m_completionCache[localizedTimezone] = timezone; - } - - if ("en_US.UTF-8" == DatetimeDBusProxy::currentLocale()) { - int i = 0; - for (auto str : completions) { - if (i++ % 2 == 0) - continue; - completions_filter << str; - } - m_completer = new QCompleter(completions_filter, m_searchInput); - } else { - m_completer = new QCompleter(completions, m_searchInput); - } - - m_completer->popup()->setAttribute(Qt::WA_InputMethodEnabled); - m_completer->setCompletionMode(QCompleter::PopupCompletion); - m_completer->setCaseSensitivity(Qt::CaseInsensitive); - m_completer->setFilterMode(Qt::MatchContains); - - m_searchInput->setCompleter(m_completer); - - m_popup = m_completer->popup(); - m_popup->setObjectName("TimezoneCompleter"); - m_popup->setAttribute(Qt::WA_TranslucentBackground); - m_popup->installEventFilter(this); - - DBlurEffectWidget *blurEffect = new DBlurEffectWidget(m_popup); - blurEffect->setAccessibleName("blurEffect"); - blurEffect->setMaskColor(Qt::white); - - QHBoxLayout *popuLayout = new QHBoxLayout; - popuLayout->setSpacing(0); - popuLayout->setMargin(0); - popuLayout->addWidget(blurEffect); - m_popup->setLayout(popuLayout); - - blurEffect->lower(); - }); - connect(m_searchInput, &SearchInput::returnPressed, [this] { - QModelIndex index = m_popup->model()->index(0, 0); - if (index.isValid()) { - m_searchInput->setText(index.data().toString()); - m_popup->close(); - } - }); -} - -void TimeZoneChooser::setIsAddZone(const bool isAdd) -{ - m_isAddZone = isAdd; - - if (isAdd) { - m_title->setText(tr("Add Timezone")); - m_confirmBtn->setText(tr("Add")); - } else { - m_title->setText(tr("Change Timezone")); - m_confirmBtn->setText(tr("Confirm")); - } -} - -void TimeZoneChooser::setCurrentTimeZoneText(const QString &zone) -{ - if (zone.isEmpty()) - return; - - const QString locale = QLocale::system().name(); - const QString name = installer::GetLocalTimezoneName(zone, locale); -} - -void TimeZoneChooser::setMarkedTimeZone(const QString &timezone) -{ - m_map->setTimezone(timezone); -} - -void TimeZoneChooser::resizeEvent(QResizeEvent *event) -{ - QDialog::resizeEvent(event); - - m_blurEffect->resize(event->size()); - m_blurEffect->lower(); -} - -void TimeZoneChooser::keyReleaseEvent(QKeyEvent *event) -{ - if (event->matches(QKeySequence::Cancel)) { - Q_EMIT cancelled(); - - close(); - } -} - -bool TimeZoneChooser::eventFilter(QObject *watched, QEvent *event) -{ - // Qt make popups' position 2px higher than the bottom of its associated widget, - // and the 2px's hard coded, so I need to move the popup to a proper position so - // it won't overlap with the SearchInput. - if (watched == m_popup && event->type() == QEvent::Move) { - const QMoveEvent *move = static_cast(event); - const QPoint destPos = m_searchInput->mapToGlobal(QPoint(0, m_searchInput->height() + 1)); - // Don't panic, it won't cause dead loop. - if (move->pos() != destPos) { - m_popup->move(destPos); - } - } - - return false; -} - -void TimeZoneChooser::showEvent(QShowEvent *event) -{ - QDialog::showEvent(event); - - move(qApp->primaryScreen()->geometry().center() - rect().center()); -} - -void TimeZoneChooser::mouseMoveEvent(QMouseEvent *event) -{ - Q_UNUSED(event) - return; -} - -QSize TimeZoneChooser::getFitSize() const -{ - const QRect &primaryRect = QGuiApplication::primaryScreen()->availableGeometry(); - - double width = primaryRect.width() - 360 /* dcc */ - 20 * 2; - double height = primaryRect.height() - 70 /* dock */ - 20 * 2; - - return QSize(static_cast(width), static_cast(height)); -} - -int TimeZoneChooser::getFontSize() const -{ - // 根据屏幕大小设置标题字体大小,不至于因为屏幕太小时,字段显得太大 - const QRect &primaryRect = QGuiApplication::primaryScreen()->availableGeometry(); - - if (primaryRect.width() <= 1024) { - return 24; - } else if (primaryRect.width() <= 1440) { - return 28; - } else { - return 32; - } -} - -void TimeZoneChooser::setupSize() -{ - static const double MapPixWidth = 978.0; - static const double MapPixHeight = 500.0; - static const double MapPictureWidth = 978.0; - static const double MapPictureHeight = 500.0; - - QFont font = m_title->font(); - font.setPointSizeF(getFontSize()); - m_title->setFont(font); - // 获取标题部分根据字体大小计算得到的字体高度 - double fontHeight = m_title->fontMetrics().height() + 10.0; - - QSize fitSize = getFitSize(); - // 先根据屏幕大小,计算出大小合适的地图尺寸 - const double offsetW = 20 * 2.0; - // close Button height and margin 6.0 * 2 + 20, layout spacing * 4 , title font height, search - // and btn height 36 - const double offsetH = 10.0 * 2 + 20 + 10.0 * 4 + fontHeight + 36 * 2; - - // 比对地图和屏幕大小,取其中最小的大小 - const float mapWidth = qMin(MapPixWidth, fitSize.width() - offsetW); - const float mapHeight = qMin(MapPixHeight, fitSize.height() - offsetH); - - // 再计算地图和界面宽高比,取其中最小最大缩放比 - const double widthScale = MapPictureWidth / mapWidth; - const double heightScale = MapPictureHeight / mapHeight; - const double scale = qMax(widthScale, heightScale); - // 根据宽高最大缩放比设置地图大小 - m_map->setFixedSize(MapPictureWidth / scale, MapPictureHeight / scale); - - // 再根据地图大小设置界面大小,使界面与地图保持合适位置 - setFixedSize(m_map->size().width() + offsetW, m_map->size().height() + offsetH); -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezonechooser.h b/dcc-old/src/plugin-datetime/window/widgets/timezonechooser.h deleted file mode 100644 index d301b2482c..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezonechooser.h +++ /dev/null @@ -1,76 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef TIMEZONECHOOSER_H -#define TIMEZONECHOOSER_H - -#include -#include - -#include -#include -#include -#include "timezone.h" - -DWIDGET_USE_NAMESPACE - -class QPushButton; -class QComboBox; -class QLabel; -class QAbstractItemView; - -class TimezoneMap; -class SearchInput; - -DWIDGET_BEGIN_NAMESPACE -class DSearchEdit; -DWIDGET_END_NAMESPACE - -class TimeZoneChooser : public QDialog -{ - Q_OBJECT -public: - explicit TimeZoneChooser(QWidget *parent = nullptr); - void setIsAddZone(const bool isAdd); - inline bool isAddZone() { return m_isAddZone; } - void setCurrentTimeZoneText(const QString &zone); - -Q_SIGNALS: - void confirmed(const QString &zone); - void cancelled(); - -public Q_SLOTS: - void setMarkedTimeZone(const QString &timezone); - -protected: - void resizeEvent(QResizeEvent *event) override; - void keyReleaseEvent(QKeyEvent *event) override; - bool eventFilter(QObject *watched, QEvent *event) override; - void showEvent(QShowEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - -private: - QSize getFitSize() const; - int getFontSize() const; - void setupSize(); - -private: - bool m_isAddZone; - QMap m_completionCache; - - DBlurEffectWidget *m_blurEffect; - - QAbstractItemView *m_popup; - - TimezoneMap *m_map; - SearchInput *m_searchInput; - QLabel *m_title; - QPushButton *m_cancelBtn; - DSuggestButton *m_confirmBtn; - QCompleter *m_completer; - const installer::ZoneInfoList m_totalZones; -}; - -#endif // TIMEZONECHOOSER_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezoneclock.cpp b/dcc-old/src/plugin-datetime/window/widgets/timezoneclock.cpp deleted file mode 100644 index f4e4a3930d..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezoneclock.cpp +++ /dev/null @@ -1,116 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "timezoneclock.h" - -#include -#include -#include -#include - -TimezoneClock::TimezoneClock(QWidget *parent) - : QWidget(parent) - , m_drawTicks(true) - , m_autoNightMode(true) -{ -} - -TimezoneClock::~TimezoneClock() -{ -} - -void TimezoneClock::paintEvent(QPaintEvent *) -{ - QDateTime datetime(QDateTime::currentDateTimeUtc()); - datetime = datetime.addSecs(m_timeZone.getUTCOffset()); - - const QTime time(datetime.time()); - - // LCOV_EXCL_START - //paintEvent函数单元测试无法命中,使用宏跳过此部分 - QPainter painter(this); - painter.setRenderHints(painter.renderHints() | QPainter::Antialiasing); - - // draw plate - const bool nightMode = !(time.hour() >= 6 && time.hour() < 18); - painter.setPen(Qt::transparent); - painter.setBrush(nightMode && autoNightMode() ? Qt::black : Qt::white); - - QPen pen(painter.pen()); - if (nightMode && autoNightMode()) { - pen.setColor(Qt::black); - } else { - pen.setColor(QColor("#E6E6E6")); - } - pen.setWidth(1); - painter.setPen(pen); - - int penWidth = pen.width(); - const QRect rct(QRect(penWidth, penWidth, rect().width() - penWidth * 2, rect().height() - penWidth * 2)); - - painter.drawRoundedRect(rct, rct.width() / 2.0, rct.height() / 2.0); - - // draw hour hand - const qreal hourAngle = qreal(time.hour()) * 30 + time.minute() * 30 / 60; - painter.save(); - painter.setRenderHints(painter.renderHints() | QPainter::Antialiasing); - painter.translate(rct.width() / 2.0, rct.height() / 2.0); - painter.rotate(hourAngle); - pen.setColor(QColor("#07c5fb")); - pen.setWidth(3); - painter.setPen(pen); - painter.drawLine(QPointF(0, 0), QPointF(0, -rct.width() / 2 * 0.5)); - painter.restore(); - - // draw minute hand - const int minuteAngle = time.minute() * 6; - painter.save(); - painter.setRenderHints(painter.renderHints() | QPainter::Antialiasing); - painter.translate(rct.width() / 2.0, rct.height() / 2.0); - painter.rotate(minuteAngle); - pen.setColor(QColor("#f97676")); - pen.setWidth(2); - painter.setPen(pen); - painter.drawLine(QPointF(0, 0), QPointF(0, -rct.width() / 2 * 0.65)); - painter.restore(); - - painter.end(); - // LCOV_EXCL_STOP -} - -bool TimezoneClock::autoNightMode() const -{ - return m_autoNightMode; -} - -void TimezoneClock::setAutoNightMode(bool autoNightMode) -{ - if (m_autoNightMode != autoNightMode) { - m_autoNightMode = autoNightMode; - update(); - } -} - -void TimezoneClock::setTimeZone(const ZoneInfo &timeZone) -{ - if (m_timeZone == timeZone) - return; - - m_timeZone = timeZone; - update(); -} - -bool TimezoneClock::drawTicks() const -{ - return m_drawTicks; -} - -void TimezoneClock::setDrawTicks(bool drawTicks) -{ - if (m_drawTicks != drawTicks) { - m_drawTicks = drawTicks; - update(); - } -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezoneclock.h b/dcc-old/src/plugin-datetime/window/widgets/timezoneclock.h deleted file mode 100644 index a3c45fc4d7..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezoneclock.h +++ /dev/null @@ -1,37 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef TIMEZONECLOCK_H -#define TIMEZONECLOCK_H - -#include -#include -#include "zoneinfo.h" - -class TimezoneClock: public QWidget -{ - Q_OBJECT -public: - explicit TimezoneClock(QWidget *parent = 0); - virtual ~TimezoneClock(); - - bool drawTicks() const; - void setDrawTicks(bool drawTicks); - - void setTimeZone(const ZoneInfo &timeZone); - - bool autoNightMode() const; - void setAutoNightMode(bool autoNightMode); - -protected: - void paintEvent(QPaintEvent *event); - -private: - bool m_drawTicks; - bool m_autoNightMode; - ZoneInfo m_timeZone; -}; - -#endif // TIMEZONECLOCK_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezoneitem.cpp b/dcc-old/src/plugin-datetime/window/widgets/timezoneitem.cpp deleted file mode 100644 index 2b6d096f49..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezoneitem.cpp +++ /dev/null @@ -1,136 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "timezoneitem.h" - -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -TimezoneItem::TimezoneItem(QFrame *parent) - : SettingsItem(parent) - , m_city(new QLabel) - , m_details(new DTipLabel("")) - , m_clock(new TimezoneClock) - , m_removeBtn(new DIconButton(this)) -{ - m_clock->setAccessibleName("TimezoneItem_clock"); - addBackground(); - QVBoxLayout *vlayout = new QVBoxLayout(); - vlayout->setMargin(0); - vlayout->setSpacing(0); - - m_city->setObjectName("DCC-Datetime-TimezoneItem-Label"); - m_details->setObjectName("DCC-Datetime-TimezoneItem-Label"); - m_details->setAlignment(Qt::AlignLeft); - - vlayout->addWidget(m_city); - vlayout->addSpacing(1); - vlayout->addWidget(m_details); - - m_removeBtn->setFlat(true); - m_removeBtn->setIcon(DStyle::StandardPixmap::SP_DeleteButton); - m_removeBtn->setObjectName("remove_button"); - - m_removeBtn->setFixedSize(QSize(48, 48)); - m_removeBtn->setIconSize(QSize(24, 24)); - m_removeBtn->setVisible(false); - - m_clock->setDrawTicks(false); - m_clock->setFixedSize(QSize(48, 48)); - - QHBoxLayout *hlayout = new QHBoxLayout(); - hlayout->setMargin(0); - hlayout->setSpacing(0); - hlayout->setContentsMargins(14, 0, 10, 0); // TODO: 设计沟通设置 14 - hlayout->addLayout(vlayout); - hlayout->addStretch(); - hlayout->addWidget(m_clock, 0, Qt::AlignVCenter); - hlayout->addWidget(m_removeBtn); - setLayout(hlayout); - - connect(m_removeBtn, &DIconButton::clicked, this, &TimezoneItem::removeClicked); -} - -void TimezoneItem::setTimeZone(const ZoneInfo &info) -{ - m_timezone = info; - - updateInfo(); -} - -void TimezoneItem::toRemoveMode() -{ - m_clock->setVisible(false); - m_removeBtn->setVisible(true); -} - -void TimezoneItem::toNormalMode() -{ - m_removeBtn->setVisible(false); - ; - m_clock->setVisible(true); -} - -void TimezoneItem::updateInfo() -{ - const QDateTime localTime(QDateTime::currentDateTime()); - - const double timeDelta = (m_timezone.getUTCOffset() - localTime.offsetFromUtc()) / 3600.0; - - QString dateLiteral; - if (localTime.time().hour() + timeDelta >= 24) { - dateLiteral = tr("Tomorrow"); - } else if (localTime.time().hour() + timeDelta <= 0) { - dateLiteral = tr("Yesterday"); - } else { - dateLiteral = tr("Today"); - } - - int decimalNumber = 1; - //小时取余,再取分钟,将15分钟的双倍只显示一位小数,其他的都显示两位小数 - switch ((m_timezone.getUTCOffset() - localTime.offsetFromUtc()) % 3600 / 60 / 15) { - case -1: - case -3: - case 1: - case 3: - decimalNumber = 2; - break; - default: - decimalNumber = 1; - break; - } - - QString compareLiteral; - if (timeDelta > 0) { - compareLiteral = tr("%1 hours earlier than local").arg(QString::number(timeDelta, 'f', decimalNumber)); - } else { - compareLiteral = tr("%1 hours later than local").arg(QString::number(-timeDelta, 'f', decimalNumber)); - } - - QString gmData = ""; - int utcOff = m_timezone.getUTCOffset() / 3600; - if (utcOff >= 0) { - gmData = QString("(UTC+%1:%2)").arg(utcOff, 2, 10, QLatin1Char('0')).arg(m_timezone.getUTCOffset() % 3600 / 60, 2, 10, QLatin1Char('0')); - } else { - gmData = QString("(UTC%1:%2)").arg(utcOff, 3, 10, QLatin1Char('0')).arg(m_timezone.getUTCOffset() % 3600 / 60, 2, 10, QLatin1Char('0')); - } - - m_details->setText(QString("%1, %2").arg(dateLiteral).arg(compareLiteral)); - QString cityName = m_timezone.getZoneCity().isEmpty() ? m_timezone.getZoneName() : m_timezone.getZoneCity(); - m_city->setText(cityName + gmData); - m_clock->setTimeZone(m_timezone); - - m_removeBtn->setAccessibleName(m_timezone.getZoneCity() + "_DEL"); -} - -void TimezoneItem::setDetailVisible(bool state) -{ - if (m_details) { - m_details->setVisible(state); - } -} diff --git a/dcc-old/src/plugin-datetime/window/widgets/timezoneitem.h b/dcc-old/src/plugin-datetime/window/widgets/timezoneitem.h deleted file mode 100644 index 1e3163cfde..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/timezoneitem.h +++ /dev/null @@ -1,52 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef TIMEZONEITEM_H -#define TIMEZONEITEM_H - -#include "widgets/settingsitem.h" -#include "timezoneclock.h" -#include "zoneinfo.h" - -#include -#include - -#include -#include -#include - - - -class TimezoneItem : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT - -public: - explicit TimezoneItem(QFrame *parent = nullptr); - - inline ZoneInfo timeZone() const { return m_timezone; } - - void toRemoveMode(); - void toNormalMode(); - - void updateInfo(); - void setDetailVisible(bool state); - -Q_SIGNALS: - void removeClicked(); - -public Q_SLOTS: - void setTimeZone(const ZoneInfo &info); - -private: - ZoneInfo m_timezone; - - QLabel *m_city; - DTK_WIDGET_NAMESPACE::DTipLabel *m_details; - TimezoneClock *m_clock; - DTK_WIDGET_NAMESPACE::DIconButton *m_removeBtn; -}; - -#endif // TIMEZONEITEM_H diff --git a/dcc-old/src/plugin-datetime/window/widgets/tooltip_pin.cpp b/dcc-old/src/plugin-datetime/window/widgets/tooltip_pin.cpp deleted file mode 100644 index 2317f29483..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/tooltip_pin.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "tooltip_pin.h" - -#include -#include -#include -#include - -namespace installer { - -namespace { - -const int kBorderRadius = 4; - -// _____ -// \ | / -// \|/ -const int kTriangleHeight = 6; - -} // namespace - -TooltipPin::TooltipPin(QWidget *parent) - : QLabel(parent) - , m_arrowDirection(ArrowDirection::ArrowDown) -{ - this->setObjectName("tooltip_pin"); - - this->setAlignment(Qt::AlignHCenter); - - // Add 15px margin horizontally. - this->setStyleSheet("margin: 0 15px;"); -} - -void TooltipPin::setArrowDirection(TooltipPin::ArrowDirection arrowDirection) -{ - m_arrowDirection = arrowDirection; -} - -void TooltipPin::popup(const QPoint &point) -{ - if (point.x() < 100) { - this->move(point.x() + kTriangleHeight / 2, point.y() - this->height() / 8); - } else { - this->move(point.x() - this->width() / 2, point.y() - this->height() + 6); - } - this->show(); -} - -void TooltipPin::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event); - - QPainter painter(this); - painter.setPen(Qt::NoPen); - painter.setBrush(Qt::white); - painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing, true); - const int kWidth = this->width(); - const int kHeight = this->height(); - - QPainterPath background_path; - QPainterPath arrow_path; - - if (ArrowLeft == m_arrowDirection) { - // 矩形区域 - background_path.addRoundedRect(kTriangleHeight, - 0, - kWidth - kTriangleHeight, - kHeight - kTriangleHeight, - kBorderRadius, - kBorderRadius); - - // 三角箭头 - arrow_path.moveTo(kTriangleHeight, (kHeight - kTriangleHeight) / 2 - kTriangleHeight); - arrow_path.lineTo(0, (kHeight - kTriangleHeight) / 2); - arrow_path.lineTo(kTriangleHeight, (kHeight - kTriangleHeight) / 2 + kTriangleHeight); - } else { - // 矩形区域 - background_path.addRoundedRect(0, - 0, - kWidth, - kHeight - kTriangleHeight, - kBorderRadius, - kBorderRadius); - - // 三角箭头 - arrow_path.moveTo(kWidth / 2 - kTriangleHeight, kHeight - kTriangleHeight); - arrow_path.lineTo(kWidth / 2, kHeight); - arrow_path.lineTo(kWidth / 2 + kTriangleHeight, kHeight - kTriangleHeight); - } - - background_path.addPath(arrow_path); - - // 画背景 - painter.drawPath(background_path); - - // Then draw text. - QFont label_font; - label_font.setPixelSize(12); - const QFontMetrics label_font_metrics(label_font); - const int label_length = label_font_metrics.horizontalAdvance(this->text()); - painter.setPen(QPen(Qt::black)); - painter.setFont(label_font); - // Set text alignment to center - painter.drawText((kWidth - label_length) / 2, 16, this->text()); -} - -} // namespace installer diff --git a/dcc-old/src/plugin-datetime/window/widgets/tooltip_pin.h b/dcc-old/src/plugin-datetime/window/widgets/tooltip_pin.h deleted file mode 100644 index 96b5b8005a..0000000000 --- a/dcc-old/src/plugin-datetime/window/widgets/tooltip_pin.h +++ /dev/null @@ -1,35 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INSTALLER_UI_WIDGETS_TOOLTIP_PIN_H -#define INSTALLER_UI_WIDGETS_TOOLTIP_PIN_H - -#include -class QPaintEvent; - -namespace installer { - -// Displays tooltip text with a sharp corner at middle of bottom edge. -class TooltipPin : public QLabel -{ - Q_OBJECT - -public: - enum ArrowDirection { ArrowDown = 0, ArrowTop, ArrowLeft, ArrowRight }; - -public: - explicit TooltipPin(QWidget *parent = nullptr); - void setArrowDirection(ArrowDirection arrowDirection); - -public Q_SLOTS: - // Show tooltip and set position of pin at |point|. - void popup(const QPoint &point); - -protected: - void paintEvent(QPaintEvent *event) override; - ArrowDirection m_arrowDirection; -}; - -} // namespace installer - -#endif // INSTALLER_UI_WIDGETS_TOOLTIP_PIN_H diff --git a/dcc-old/src/plugin-defaultapp/operation/defappmodel.cpp b/dcc-old/src/plugin-defaultapp/operation/defappmodel.cpp deleted file mode 100644 index 5721af6bc4..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/defappmodel.cpp +++ /dev/null @@ -1,29 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "defappmodel.h" - -DefAppModel::DefAppModel(QObject *parent) - :QObject(parent) -{ - m_modBrowser = new Category(this); - m_modMail = new Category(this); - m_modText = new Category(this); - m_modMusic = new Category(this); - m_modVideo = new Category(this); - m_modPicture = new Category(this); - m_modTerminal = new Category(this); -} - -DefAppModel::~DefAppModel() -{ - m_modBrowser->deleteLater(); - m_modMail->deleteLater(); - m_modText->deleteLater(); - m_modMusic->deleteLater(); - m_modVideo->deleteLater(); - m_modPicture->deleteLater(); - m_modTerminal->deleteLater(); -} - - diff --git a/dcc-old/src/plugin-defaultapp/operation/defappmodel.h b/dcc-old/src/plugin-defaultapp/operation/defappmodel.h deleted file mode 100644 index a88733fae2..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/defappmodel.h +++ /dev/null @@ -1,35 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DEFAPPMODEL_H -#define DEFAPPMODEL_H - -#include "interface/namespace.h" -#include "category.h" - -class Category; -class DefAppModel : public QObject -{ - Q_OBJECT -public: - explicit DefAppModel(QObject *parent = 0); - ~DefAppModel(); - - Category *getModBrowser() {return m_modBrowser;} - Category *getModMail() {return m_modMail;} - Category *getModText() {return m_modText;} - Category *getModMusic() {return m_modMusic;} - Category *getModVideo() {return m_modVideo;} - Category *getModPicture() {return m_modPicture;} - Category *getModTerminal() {return m_modTerminal;} - -private: - Category *m_modBrowser; - Category *m_modMail; - Category *m_modText; - Category *m_modMusic; - Category *m_modVideo; - Category *m_modPicture; - Category *m_modTerminal; -}; -#endif // DEFAPPMODEL_H diff --git a/dcc-old/src/plugin-defaultapp/operation/defappworker.cpp b/dcc-old/src/plugin-defaultapp/operation/defappworker.cpp deleted file mode 100644 index 86f693cb64..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/defappworker.cpp +++ /dev/null @@ -1,452 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "defappworker.h" - -#include "defappmodel.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcDefaultWorker, "dcc-default-worker") - -const QString TerminalGSetting = QStringLiteral("com.deepin.desktop.default-applications.terminal"); - -DefAppWorker::DefAppWorker(DefAppModel *model, QObject *parent) - : QObject(parent) - , m_defAppModel(model) - , m_dbusManager(new MimeDBusProxy(this)) - , m_defaultTerminal(new QGSettings(TerminalGSetting.toLocal8Bit())) -{ - - m_stringToCategory.insert("Browser", Browser); - m_stringToCategory.insert("Mail", Mail); - m_stringToCategory.insert("Text", Text); - m_stringToCategory.insert("Music", Music); - m_stringToCategory.insert("Video", Video); - m_stringToCategory.insert("Picture", Picture); - m_stringToCategory.insert("Terminal", Terminal); - - connect(m_dbusManager, &MimeDBusProxy::Change, this, &DefAppWorker::onGetListApps); - - m_userLocalPath = QDir::homePath() + "/.local/share/applications/"; - - // mkdir folder - QDir dir(m_userLocalPath); - dir.mkpath(m_userLocalPath); -} - -DefAppWorker::~DefAppWorker() -{ - m_defaultTerminal->deleteLater(); -} - -void DefAppWorker::active() -{ - m_dbusManager->blockSignals(false); -} - -void DefAppWorker::deactive() -{ - m_dbusManager->blockSignals(true); -} - -void DefAppWorker::onSetDefaultApp(const QString &category, const App &item) -{ - if (category == "Terminal") { - onSetDefaultTerminal(item); - return; - } - QStringList mimelist = getTypeListByCategory(m_stringToCategory[category]); - - for (auto mimeType : mimelist) { - QDBusPendingCall call = m_dbusManager->SetDefaultApp(mimeType, item.Id); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, - &QDBusPendingCallWatcher::finished, - this, - [watcher, this, item, category] { - if (!watcher->isError()) { - qCDebug(DdcDefaultWorker) - << "Setting MIME " << category << "to " << item.Id; - auto tosetCategory = getCategory(category); - tosetCategory->setDefault(item); - } else { - qCWarning(DdcDefaultWorker) - << "Cannot set MIME" << category << "to" << item.Id; - } - watcher->deleteLater(); - }); - } -} - -void DefAppWorker::onSetDefaultTerminal(const App &item) -{ - Category *defaultTerinmalCategory = getCategory("Terminal"); - - m_defaultTerminal->set("app-id", item.Id); - m_defaultTerminal->set( - "exec", - QString("gdbus call --session --dest org.desktopspec.ApplicationManager1 --object-path " - "%1 --method org.desktopspec.ApplicationManager1.Application.Launch " - "'' [] {}") - .arg(item.dbusPath)); - - defaultTerinmalCategory->setDefault(item); -} - -void DefAppWorker::onGetListApps() -{ - // 遍历QMap去获取dbus数据 - for (auto mimelist = m_stringToCategory.constBegin(); mimelist != m_stringToCategory.constEnd(); - ++mimelist) { - if (mimelist.key() == "Terminal") { - QDBusPendingReply call = m_dbusManager->GetManagedObjects(); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, - &QDBusPendingCallWatcher::finished, - this, - &DefAppWorker::getManagerObjectFinished); - continue; - } - - const QString type{ getTypeByCategory(mimelist.value()) }; - - QDBusPendingReply call = m_dbusManager->ListApps(type); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [watcher, mimelist, type, this] { - if (watcher->isError()) { - qCWarning(DdcDefaultWorker) << "Cannot get AppList"; - watcher->deleteLater(); - return; - } - QDBusPendingReply call = *watcher; - getListAppFinished(mimelist.key(), call.value()); - - QDBusPendingReply getDefaultAppCall = - m_dbusManager->GetDefaultApp(type); - QDBusPendingCallWatcher *defappWatcher = - new QDBusPendingCallWatcher(getDefaultAppCall, this); - connect(defappWatcher, - &QDBusPendingCallWatcher::finished, - this, - [getDefaultAppCall, this, mimelist, type, defappWatcher] { - if (getDefaultAppCall.isError()) { - qCWarning(DdcDefaultWorker) << "Cannot get DefaultApp"; - defappWatcher->deleteLater(); - return; - } - QString mimeType = getDefaultAppCall.argumentAt<0>(); - if (mimeType != type) { - qCWarning(DdcDefaultWorker) << "MimeType not match"; - defappWatcher->deleteLater(); - return; - } - QDBusObjectPath objectPath = getDefaultAppCall.argumentAt<1>(); - if (objectPath.path() == "/") { - qCWarning(DdcDefaultWorker) << "Cannot find Mime: " << type; - defappWatcher->deleteLater(); - return; - } - getDefaultAppFinished(mimelist.key(), m_dbusManager->getAppId(objectPath)); - defappWatcher->deleteLater(); - }); - watcher->deleteLater(); - }); - } -} - -static QStringList getUILanguages() -{ - QLocale syslocal = QLocale::system(); - - QStringList uiLanguages = syslocal.uiLanguages(); - // the nameMap uses underscore instead of minus sign - for (auto &lang : uiLanguages) { - lang.replace('-', '_'); - } - uiLanguages << "default"; - - return uiLanguages; -} - -void DefAppWorker::getManagerObjectFinished(QDBusPendingCallWatcher *call) -{ - Category *category = getCategory("Terminal"); - QList list; - auto uiLanguages = getUILanguages(); - QDBusPendingReply reply = *call; - if (reply.isError()) { - call->deleteLater(); - return; - } - ObjectMap map = reply.value(); - for (auto it = map.cbegin(); it != map.cend(); it++) { - QString dbusPath = it.key().path(); - auto mapInterface = it.value(); - for (const QVariantMap &mapInter : mapInterface) { - if (mapInter.count() == 0) { - continue; - } - if (mapInter.value("Categories").isNull()) { - continue; - } - QStringList cats = qdbus_cast(mapInter["Categories"]); - if (!cats.contains("TerminalEmulator")) { - continue; - } - auto nameMap = qdbus_cast>(mapInter["Name"]); - auto genericNameMap = qdbus_cast>(mapInter["GenericName"]); - QString id = qdbus_cast(mapInter["ID"]); - bool isDeepinVendor = qdbus_cast(mapInter["X_Deepin_Vendor"]) == "deepin"; - - QString name = id; - for (auto &lang : uiLanguages) { - auto iter = nameMap.find(lang); - if (iter != nameMap.end()) { - name = iter.value(); - break; - } - } - - QString genericName; - if (isDeepinVendor) { - for (auto &lang : uiLanguages) { - auto iter = genericNameMap.find(lang); - if (iter != genericNameMap.end()) { - genericName = iter.value(); - break; - } - } - } - - QString icon; - if (auto mapicons = mapInter.value("Icons"); !mapicons.isNull()) { - auto icons = qdbus_cast>(mapicons); - if (!icons.value("Desktop Entry").isNull()) { - icon = icons["Desktop Entry"]; - } - } - - App app; - app.dbusPath = dbusPath; - app.Id = id; - app.Name = name; - app.DisplayName = genericName != "" ? genericName : name; - app.Icon = icon; - app.isUser = false; - list << app; - break; - } - } - - QList systemList = category->getappItem(); - - for (App app : list) { - if (!systemList.contains(app)) { - category->addUserItem(app); - } - } - - systemList = category->getappItem(); - for (App app : systemList) { - if (!list.contains(app)) { - category->delUserItem(app); - } - } - category->setCategory("Terminal"); - - QString id = m_defaultTerminal->get("app-id").toString(); - auto it = std::find_if(list.cbegin(), list.cend(), [id](const App &app) { - return app.Id == id; - }); - - if (it != list.cend()) { - category->setDefault(*it); - } - - call->deleteLater(); -} - -void DefAppWorker::onDelUserApp([[maybe_unused]] const QString &mime, - [[maybe_unused]] const App &item) -{ - // TODO: later -} - -void DefAppWorker::onCreateFile([[maybe_unused]] const QString &mime, - [[maybe_unused]] const QFileInfo &info) -{ - // TODO: later -} - -void DefAppWorker::getListAppFinished(const QString &mimeKey, const ObjectMap &map) -{ - Category *category = getCategory(mimeKey); - if (!category) { - return; - } - - QList list; - auto uiLanguages = getUILanguages(); - - for (auto it = map.cbegin(); it != map.cend(); it++) { - QString dbusPath = it.key().path(); - auto mapInterface = it.value(); - for (const QVariantMap &mapInter : mapInterface) { - if (mapInter.count() == 0) { - continue; - } - - if (auto nodisplay = mapInter.value("NoDisplay"); !nodisplay.isNull()) { - if (qdbus_cast(nodisplay)) { - continue; - } - } - - auto nameMap = qdbus_cast>(mapInter["Name"]); - auto genericNameMap = qdbus_cast>(mapInter["GenericName"]); - QString id = qdbus_cast(mapInter["ID"]); - bool isDeepinVendor = qdbus_cast(mapInter["X_Deepin_Vendor"]) == "deepin"; - - QString name = id; - for (auto &lang : uiLanguages) { - auto iter = nameMap.find(lang); - if (iter != nameMap.end()) { - name = iter.value(); - break; - } - } - - QString genericName; - if (isDeepinVendor) { - for (auto &lang : uiLanguages) { - auto iter = genericNameMap.find(lang); - if (iter != genericNameMap.end()) { - genericName = iter.value(); - break; - } - } - } - - QString icon; - if (auto mapicons = mapInter.value("Icons"); !mapicons.isNull()) { - auto icons = qdbus_cast>(mapicons); - if (!icons.value("Desktop Entry").isNull()) { - icon = icons["Desktop Entry"]; - } - } - - App app; - app.dbusPath = dbusPath; - app.Id = id; - app.Name = name; - app.DisplayName = genericName != "" ? genericName : name; - app.Icon = icon; - app.isUser = false; - list << app; - break; - } - } - - QList systemList = category->getappItem(); - - for (App app : list) { - if (!systemList.contains(app)) { - category->addUserItem(app); - } - } - - systemList = category->getappItem(); - for (App app : systemList) { - if (!list.contains(app)) { - category->delUserItem(app); - } - } - - category->setCategory(mimeKey); -} - -void DefAppWorker::getDefaultAppFinished(const QString &mimeKey, const QString &id) -{ - Category *category = getCategory(mimeKey); - if (!category) { - return; - } - - auto items = category->getappItem(); - auto it = std::find_if(items.cbegin(), items.cend(), [id](const App &app) { - return app.Id == id; - }); - - if (it != items.cend()) { - category->setDefault(*it); - category->setCategory(mimeKey); - } -} - -Category *DefAppWorker::getCategory(const QString &mime) const -{ - switch (m_stringToCategory[mime]) { - case Browser: - return m_defAppModel->getModBrowser(); - case Mail: - return m_defAppModel->getModMail(); - case Text: - return m_defAppModel->getModText(); - case Music: - return m_defAppModel->getModMusic(); - case Video: - return m_defAppModel->getModVideo(); - case Picture: - return m_defAppModel->getModPicture(); - case Terminal: - return m_defAppModel->getModTerminal(); - } - return nullptr; -} - -const QString DefAppWorker::getTypeByCategory(const DefaultAppsCategory &category) -{ - return getTypeListByCategory(category)[0]; -} - -// clang-format off -const QStringList DefAppWorker::getTypeListByCategory(const DefaultAppsCategory &category) -{ - switch (category) { - case Browser: return QStringList() << "x-scheme-handler/http" << "x-scheme-handler/ftp" << "x-scheme-handler/https" - << "text/html" << "text/xml" << "text/xhtml_xml" << "text/xhtml+xml"; - case Mail: return QStringList() << "x-scheme-handler/mailto" << "message/rfc822" << "application/x-extension-eml" - << "application/x-xpinstall"; - case Text: return QStringList() << "text/plain"; - case Music: return QStringList() << "audio/mpeg" << "audio/mp3" << "audio/x-mp3" << "audio/mpeg3" << "audio/x-mpeg-3" - << "audio/x-mpeg" << "audio/flac" << "audio/x-flac" << "application/x-flac" - << "audio/ape" << "audio/x-ape" << "application/x-ape" << "audio/ogg" << "audio/x-ogg" - << "audio/musepack" << "application/musepack" << "audio/x-musepack" - << "application/x-musepack" << "audio/mpc" << "audio/x-mpc" << "audio/vorbis" - << "audio/x-vorbis" << "audio/x-wav" << "audio/x-ms-wma"; - case Video: return QStringList() << "video/mp4" << "audio/mp4" << "audio/x-matroska" << "video/x-matroska" - << "application/x-matroska" << "video/avi" << "video/msvideo" << "video/x-msvideo" - << "video/ogg" << "application/ogg" << "application/x-ogg" << "video/3gpp" << "video/3gpp2" - << "video/flv" << "video/x-flv" << "video/x-flic" << "video/mpeg" << "video/x-mpeg" - << "video/x-ogm" << "application/x-shockwave-flash" << "video/x-theora" << "video/quicktime" - << "video/x-ms-asf" << "application/vnd.rn-realmedia" << "video/x-ms-wmv"; - case Picture: return QStringList() << "image/jpeg" << "image/pjpeg" << "image/bmp" << "image/x-bmp" << "image/png" - << "image/x-png" << "image/tiff" << "image/svg+xml" << "image/x-xbitmap" << "image/gif" - << "image/x-xpixmap" << "image/vnd.microsoft.icon"; - case Terminal: return QStringList() << "application/x-terminal"; - } - return QStringList(); -} - -// clang-format on diff --git a/dcc-old/src/plugin-defaultapp/operation/defappworker.h b/dcc-old/src/plugin-defaultapp/operation/defappworker.h deleted file mode 100644 index 39b004b3d9..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/defappworker.h +++ /dev/null @@ -1,68 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef DEFAPPWORKER_H -#define DEFAPPWORKER_H - -#include -#include - -#include -#include - -#include "mimedbusproxy.h" -#include "category.h" - - -class QFileInfo; - -class DefAppModel; -class Category; -class DefAppWorker : public QObject -{ - Q_OBJECT -public: - explicit DefAppWorker(DefAppModel *m_defAppModel, QObject *parent = 0); - - ~DefAppWorker(); - enum DefaultAppsCategory { - Browser, - Mail, - Text, - Music, - Video, - Picture, - Terminal - }; - - void active(); - void deactive(); - -public Q_SLOTS: - void onSetDefaultApp(const QString &category, const App &item); - void onSetDefaultTerminal(const App &item); - void onGetListApps(); - void onDelUserApp(const QString &mine, const App &item); - void onCreateFile(const QString &mime, const QFileInfo &info); - -private Q_SLOTS: - void getListAppFinished(const QString &mime, const ObjectMap &map); - void getDefaultAppFinished(const QString &mime, const QString &w); - void getManagerObjectFinished(QDBusPendingCallWatcher *call); - -private: - DefAppModel *m_defAppModel; - MimeDBusProxy *m_dbusManager; - QMap m_stringToCategory; - QString m_userLocalPath; - -private: - const QString getTypeByCategory(const DefAppWorker::DefaultAppsCategory &category); - const QStringList getTypeListByCategory(const DefAppWorker::DefaultAppsCategory &category); - Category* getCategory(const QString &mime) const; - QGSettings *m_defaultTerminal; -}; - -#endif // DEFAPPWORKER_H diff --git a/dcc-old/src/plugin-defaultapp/operation/defappworkerold.cpp b/dcc-old/src/plugin-defaultapp/operation/defappworkerold.cpp deleted file mode 100644 index e8a0730cb9..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/defappworkerold.cpp +++ /dev/null @@ -1,318 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "defappworkerold.h" -#include "defappmodel.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcDefaultWorkerOld, "dcc-default-worker-old") - -DefAppWorkerOld::DefAppWorkerOld(DefAppModel *model, QObject *parent) : - QObject(parent), - m_defAppModel(model), - m_dbusManager(new MimeDBusProxyOld(this)) -{ - - m_stringToCategory.insert("Browser", Browser); - m_stringToCategory.insert("Mail", Mail); - m_stringToCategory.insert("Text", Text); - m_stringToCategory.insert("Music", Music); - m_stringToCategory.insert("Video", Video); - m_stringToCategory.insert("Picture", Picture); - m_stringToCategory.insert("Terminal", Terminal); - - connect(m_dbusManager, &MimeDBusProxyOld::Change, this, &DefAppWorkerOld::onGetListApps); - - m_userLocalPath = QDir::homePath() + "/.local/share/applications/"; - - // mkdir folder - QDir dir(m_userLocalPath); - dir.mkpath(m_userLocalPath); -} - -void DefAppWorkerOld::active() -{ - m_dbusManager->blockSignals(false); -} - -void DefAppWorkerOld::deactive() -{ - m_dbusManager->blockSignals(true); -} - -void DefAppWorkerOld::onSetDefaultApp(const QString &category, const App &item) -{ - QStringList mimelist = getTypeListByCategory(m_stringToCategory[category]); - - QDBusPendingCall call = m_dbusManager->SetDefaultApp(mimelist, item.Id); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [call, watcher, this, item, category] { - if (!call.isError()) { - qCDebug(DdcDefaultWorkerOld) << "Setting MIME " << category << "to " << item.Id; - auto tosetCategory = getCategory(category); - tosetCategory->setDefault(item); - } else { - qCWarning(DdcDefaultWorkerOld) << "Cannot set MIME" << category << "to" << item.Id; - } - watcher->deleteLater(); - }); - -} - -void DefAppWorkerOld::onGetListApps() -{ - //遍历QMap去获取dbus数据 - for (auto mimelist = m_stringToCategory.constBegin(); mimelist != m_stringToCategory.constEnd(); ++mimelist) { - const QString type { getTypeByCategory(mimelist.value()) }; - - getDefaultAppFinished(mimelist.key(), m_dbusManager->GetDefaultApp(type)); - getListAppFinished(mimelist.key(),m_dbusManager->ListApps(type), false); - getListAppFinished(mimelist.key(),m_dbusManager->ListUserApps(type), true); - } -} - -void DefAppWorkerOld::onDelUserApp(const QString &mime, const App &item) -{ - Category *category = getCategory(mime); - - category->delUserItem(item); - if (item.CanDelete) { - QStringList mimelist = getTypeListByCategory(m_stringToCategory[mime]); - m_dbusManager->DeleteApp(mimelist, item.Id); - } else { - m_dbusManager->DeleteUserApp(item.Id); - } - - //remove file - QFile file(m_userLocalPath + item.Id); - file.remove(); -} - -void DefAppWorkerOld::onCreateFile(const QString &mime, const QFileInfo &info) -{ - const bool isDesktop = info.suffix() == "desktop"; - - if (isDesktop) { - QFile file(info.filePath()); - QString newfile = m_userLocalPath + "deepin-custom-" + info.fileName(); - file.copy(newfile); - file.close(); - - QStringList mimelist = getTypeListByCategory(m_stringToCategory[mime]); - QFileInfo fileInfo(info.filePath()); - - const QString &filename = "deepin-custom-" + fileInfo.completeBaseName() + ".desktop"; - - m_dbusManager->AddUserApp(mimelist, filename); - - App app; - app.Id = filename; - app.Name = fileInfo.baseName(); - app.DisplayName = fileInfo.baseName(); - app.Icon = "application-default-icon"; - app.Description = ""; - app.Exec = info.filePath(); - app.isUser = true; - - onGetListApps(); - } else { - QFile file(m_userLocalPath + "deepin-custom-" + info.baseName() + ".desktop"); - - if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { - return; - } - - QTextStream out(&file); - out << "[Desktop Entry]\n" - "Type=Application\n" - "Version=1.0\n" - "Name=" + info.baseName() + "\n" - "Path=" + info.path() + "\n" - "Exec=" + info.filePath() + "\n" - "Icon=application-default-icon\n" - "Terminal=false\n" - "Categories=" + mime + ";" -#if (QT_VERSION < QT_VERSION_CHECK(5,15,0)) - << endl; -#else - << Qt::endl; -#endif - out.flush(); - file.close(); - - QStringList mimelist = getTypeListByCategory(m_stringToCategory[mime]); - - QFileInfo fileInfo(info.filePath()); - m_dbusManager->AddUserApp(mimelist, "deepin-custom-" + fileInfo.baseName() + ".desktop"); - - App app; - app.Id = "deepin-custom-" + fileInfo.baseName() + ".desktop"; - app.Name = fileInfo.baseName(); - app.DisplayName = fileInfo.baseName(); - app.Icon = "application-default-icon"; - app.Description = ""; - app.Exec = info.filePath(); - app.isUser = true; - - onGetListApps(); - } -} - -void DefAppWorkerOld::getListAppFinished(const QString &mime, const QString &defaultApp, bool isUser) -{ - const QJsonArray defApp = QJsonDocument::fromJson(defaultApp.toUtf8()).array(); - saveListApp(mime, defApp, isUser); -} - - -void DefAppWorkerOld::getDefaultAppFinished(const QString &mime, const QString &w) -{ - const QJsonObject &defaultApp = QJsonDocument::fromJson(w.toStdString().c_str()).object(); - saveDefaultApp(mime, defaultApp); -} - -void DefAppWorkerOld::saveListApp(const QString &mime, const QJsonArray &json, const bool isUser) -{ - Category *category = getCategory(mime); - if (!category) { - return; - } - - QList list; - - for (const QJsonValue &value : json) { - QJsonObject obj = value.toObject(); - App app; - app.Id = obj["Id"].toString(); - app.Name = obj["Name"].toString(); - app.DisplayName = obj["DisplayName"].toString(); - app.Icon = obj["Icon"].toString(); - app.Description = obj["Description"].toString(); - app.Exec = obj["Exec"].toString(); - app.isUser = isUser; - app.CanDelete = obj["CanDelete"].toBool(); - app.MimeTypeFit = obj["MimeTypeFit"].toBool(); - - list << app; - } - - QList systemList = category->systemAppList(); - QList userList = category->userAppList(); - for (App app : list) { - if (app.isUser == false) { - for (App appUser : userList) { - if (appUser.Exec == app.Exec) { - category->delUserItem(appUser); - } - } - } - } - - for (App app : list) { - if (!systemList.contains(app) || !userList.contains(app)) { - category->addUserItem(app); - } - } - - if (isUser) { - userList = category->userAppList(); - for (App app : userList) { - if (!list.contains(app)) { - category->delUserItem(app); - } - } - } else { - systemList = category->systemAppList(); - for (App app : systemList) { - if (!list.contains(app)) { - category->delUserItem(app); - } - } - } - - category->setCategory(mime); -} - -void DefAppWorkerOld::saveDefaultApp(const QString &mime, const QJsonObject &json) -{ - Category *category = getCategory(mime); - if (!category) { - return; - } - category->setCategory(mime); - - App app; - app.Id = json["Id"].toString(); - app.Name = json["Name"].toString(); - app.DisplayName = json["DisplayName"].toString(); - app.Icon = json["Icon"].toString(); - app.Description = json["Description"].toString(); - app.Exec = json["Exec"].toString(); - app.isUser = false; - - category->setDefault(app); -} - -Category *DefAppWorkerOld::getCategory(const QString &mime) const -{ - switch (m_stringToCategory[mime]) { - case Browser: - return m_defAppModel->getModBrowser(); - case Mail: - return m_defAppModel->getModMail(); - case Text: - return m_defAppModel->getModText(); - case Music: - return m_defAppModel->getModMusic(); - case Video: - return m_defAppModel->getModVideo(); - case Picture: - return m_defAppModel->getModPicture(); - case Terminal: - return m_defAppModel->getModTerminal(); - } - return nullptr; -} - -const QString DefAppWorkerOld::getTypeByCategory(const DefaultAppsCategory &category) -{ - return getTypeListByCategory(category)[0]; -} - -const QStringList DefAppWorkerOld::getTypeListByCategory(const DefaultAppsCategory &category) -{ - switch (category) { - case Browser: return QStringList() << "x-scheme-handler/http" << "x-scheme-handler/ftp" << "x-scheme-handler/https" - << "text/html" << "text/xml" << "text/xhtml_xml" << "text/xhtml+xml"; - case Mail: return QStringList() << "x-scheme-handler/mailto" << "message/rfc822" << "application/x-extension-eml" - << "application/x-xpinstall"; - case Text: return QStringList() << "text/plain"; - case Music: return QStringList() << "audio/mpeg" << "audio/mp3" << "audio/x-mp3" << "audio/mpeg3" << "audio/x-mpeg-3" - << "audio/x-mpeg" << "audio/flac" << "audio/x-flac" << "application/x-flac" - << "audio/ape" << "audio/x-ape" << "application/x-ape" << "audio/ogg" << "audio/x-ogg" - << "audio/musepack" << "application/musepack" << "audio/x-musepack" - << "application/x-musepack" << "audio/mpc" << "audio/x-mpc" << "audio/vorbis" - << "audio/x-vorbis" << "audio/x-wav" << "audio/x-ms-wma"; - case Video: return QStringList() << "video/mp4" << "audio/mp4" << "audio/x-matroska" << "video/x-matroska" - << "application/x-matroska" << "video/avi" << "video/msvideo" << "video/x-msvideo" - << "video/ogg" << "application/ogg" << "application/x-ogg" << "video/3gpp" << "video/3gpp2" - << "video/flv" << "video/x-flv" << "video/x-flic" << "video/mpeg" << "video/x-mpeg" - << "video/x-ogm" << "application/x-shockwave-flash" << "video/x-theora" << "video/quicktime" - << "video/x-ms-asf" << "application/vnd.rn-realmedia" << "video/x-ms-wmv"; - case Picture: return QStringList() << "image/jpeg" << "image/pjpeg" << "image/bmp" << "image/x-bmp" << "image/png" - << "image/x-png" << "image/tiff" << "image/svg+xml" << "image/x-xbitmap" << "image/gif" - << "image/x-xpixmap" << "image/vnd.microsoft.icon"; - case Terminal: return QStringList() << "application/x-terminal"; - } - return QStringList(); -} diff --git a/dcc-old/src/plugin-defaultapp/operation/defappworkerold.h b/dcc-old/src/plugin-defaultapp/operation/defappworkerold.h deleted file mode 100644 index 22333d402a..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/defappworkerold.h +++ /dev/null @@ -1,59 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include -#include - -#include "mimedbusproxyold.h" -#include "category.h" - -class QFileInfo; - -class DefAppModel; -class Category; -class DefAppWorkerOld : public QObject -{ - Q_OBJECT -public: - explicit DefAppWorkerOld(DefAppModel *m_defAppModel, QObject *parent = 0); - - enum DefaultAppsCategory { - Browser, - Mail, - Text, - Music, - Video, - Picture, - Terminal - }; - - void active(); - void deactive(); - - -public Q_SLOTS: - void onSetDefaultApp(const QString &category, const App &item); - void onGetListApps(); - void onDelUserApp(const QString &mine, const App &item); - void onCreateFile(const QString &mime, const QFileInfo &info); - -private Q_SLOTS: - void getListAppFinished(const QString &mime, const QString &defaultApp, bool isUser); - void getDefaultAppFinished(const QString &mime, const QString &w); - void saveListApp(const QString &mime, const QJsonArray &json, const bool isUser); - void saveDefaultApp(const QString &mime, const QJsonObject &json); - -private: - DefAppModel *m_defAppModel; - MimeDBusProxyOld *m_dbusManager; - QMap m_stringToCategory; - QString m_userLocalPath; - -private: - const QString getTypeByCategory(const DefAppWorkerOld::DefaultAppsCategory &category); - const QStringList getTypeListByCategory(const DefAppWorkerOld::DefaultAppsCategory &category); - Category* getCategory(const QString &mime) const; -}; diff --git a/dcc-old/src/plugin-defaultapp/operation/mimedbusproxy.cpp b/dcc-old/src/plugin-defaultapp/operation/mimedbusproxy.cpp deleted file mode 100644 index 256c65e56f..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/mimedbusproxy.cpp +++ /dev/null @@ -1,95 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "mimedbusproxy.h" - -#include -#include -#include -#include -#include -#include -#include - -const QString ApplicationManagerServer = QStringLiteral("org.desktopspec.ApplicationManager1"); -const QString MimePath = QStringLiteral("/org/desktopspec/ApplicationManager1/MimeManager1"); -const QString MimeInterface = QStringLiteral("org.desktopspec.MimeManager1"); -const QString AMApplicationInterface = - QStringLiteral("org.desktopspec.ApplicationManager1.Application"); - -const QString ObjectManagerInterface = QStringLiteral("org.desktopspec.DBus.ObjectManager"); -const QString ApplicationManager1Path = QStringLiteral("/org/desktopspec/ApplicationManager1"); - -MimeDBusProxy::MimeDBusProxy(QObject *parent) - : QObject(parent) - , m_mimeInter(new QDBusInterface(ApplicationManagerServer, - MimePath, - MimeInterface, - QDBusConnection::sessionBus(), - this)) - , m_applicationManagerInter(new QDBusInterface(ApplicationManagerServer, - ApplicationManager1Path, - ObjectManagerInterface, - QDBusConnection::sessionBus(), - this)) -{ - qRegisterMetaType(); - qDBusRegisterMetaType(); - qRegisterMetaType(); - qDBusRegisterMetaType(); - qRegisterMetaType(); - qDBusRegisterMetaType(); - qRegisterMetaType(); - qDBusRegisterMetaType(); -} - -QDBusPendingReply MimeDBusProxy::GetManagedObjects() -{ - return m_applicationManagerInter->asyncCall("GetManagedObjects"); -} - -QDBusPendingReply MimeDBusProxy::SetDefaultApp(const QString &mimeType, - const QString &desktopId) -{ - QStringMap map; - map.insert(mimeType, desktopId); - return m_mimeInter->asyncCallWithArgumentList("setDefaultApplication", - { QVariant::fromValue(map) }); -} - -void MimeDBusProxy::DeleteApp([[maybe_unused]] const QStringList &mimeTypes, - [[maybe_unused]] const QString &desktopId) -{ - // QDBusPendingReply(m_mimeInter->asyncCall("DeleteApp", mimeTypes, desktopId)); -} - -void MimeDBusProxy::DeleteUserApp([[maybe_unused]] const QString &desktopId) -{ - // QDBusPendingReply(m_mimeInter->asyncCall("DeleteUserApp", desktopId)); -} - -void MimeDBusProxy::AddUserApp([[maybe_unused]] const QStringList &mimeTypes, - [[maybe_unused]] const QString &desktopId) -{ - // QDBusPendingReply(m_mimeInter->asyncCall("AddUserApp", mimeTypes, desktopId)); -} - -QString MimeDBusProxy::getAppId(const QDBusObjectPath &appPath) -{ - auto interface = QDBusInterface(ApplicationManagerServer, - appPath.path(), - AMApplicationInterface, - QDBusConnection::sessionBus(), - this); - return interface.property("ID").toString(); -} - -QDBusPendingReply MimeDBusProxy::GetDefaultApp(const QString &mimeType) -{ - return m_mimeInter->asyncCallWithArgumentList("queryDefaultApplication", { mimeType }); -} - -QDBusPendingReply MimeDBusProxy::ListApps(const QString &mimeType) -{ - return m_mimeInter->asyncCallWithArgumentList("listApplications", { mimeType }); -} diff --git a/dcc-old/src/plugin-defaultapp/operation/mimedbusproxy.h b/dcc-old/src/plugin-defaultapp/operation/mimedbusproxy.h deleted file mode 100644 index bac37250cb..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/mimedbusproxy.h +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include -#include - -class QDBusInterface; -class QDBusMessage; - -using ObjectInterfaceMap = QMap; -using ObjectMap = QMap; -using QStringMap = QMap; -using PropMap = QMap; - -Q_DECLARE_METATYPE(ObjectInterfaceMap) -Q_DECLARE_METATYPE(ObjectMap) -Q_DECLARE_METATYPE(QStringMap) -Q_DECLARE_METATYPE(PropMap) - -class MimeDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit MimeDBusProxy(QObject *parent = nullptr); - - QDBusPendingReply SetDefaultApp(const QString &mime, const QString &desktopId); - void DeleteApp(const QStringList &mimeTypes, const QString &desktopId); - void DeleteUserApp(const QString &desktopId); - void AddUserApp(const QStringList &mimeTypes, const QString &desktopId); - - QDBusPendingReply GetManagedObjects(); - QDBusPendingReply GetDefaultApp(const QString &mimeType); - QDBusPendingReply ListApps(const QString &mimeType); - QString getAppId(const QDBusObjectPath &path); - -Q_SIGNALS: - void Change(); - -private: - QDBusInterface *m_mimeInter; - QDBusInterface *m_applicationManagerInter; -}; diff --git a/dcc-old/src/plugin-defaultapp/operation/mimedbusproxyold.cpp b/dcc-old/src/plugin-defaultapp/operation/mimedbusproxyold.cpp deleted file mode 100644 index b82e6c8389..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/mimedbusproxyold.cpp +++ /dev/null @@ -1,63 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "mimedbusproxyold.h" - -#include -#include -#include -#include -#include - -const QString MimeService = QStringLiteral("org.deepin.dde.Mime1"); -const QString MimePath = QStringLiteral("/org/deepin/dde/Mime1"); -const QString MimeInterface = QStringLiteral("org.deepin.dde.Mime1"); - -bool MimeDBusProxyOld::isRegisted() -{ - return QDBusConnection::sessionBus().interface()->isServiceRegistered(MimeInterface); -} - -MimeDBusProxyOld::MimeDBusProxyOld(QObject *parent) - : QObject(parent) - , m_mimeInter(new QDBusInterface(MimeService, MimePath, MimeInterface, QDBusConnection::sessionBus(), this)) -{ - connect(m_mimeInter, SIGNAL(Change()), this, SIGNAL(Change()), Qt::QueuedConnection); -} - -QDBusPendingReply MimeDBusProxyOld::SetDefaultApp(const QStringList &mimeTypes, const QString &desktopId) -{ - QList argumentList; - argumentList << QVariant::fromValue(mimeTypes) << QVariant::fromValue(desktopId); - return m_mimeInter->asyncCallWithArgumentList("SetDefaultApp", argumentList); -} - -void MimeDBusProxyOld::DeleteApp(const QStringList &mimeTypes, const QString &desktopId) -{ - QDBusPendingReply(m_mimeInter->asyncCall("DeleteApp", mimeTypes, desktopId)); -} - -void MimeDBusProxyOld::DeleteUserApp(const QString &desktopId) -{ - QDBusPendingReply(m_mimeInter->asyncCall("DeleteUserApp", desktopId)); -} - -void MimeDBusProxyOld::AddUserApp(const QStringList &mimeTypes, const QString &desktopId) -{ - QDBusPendingReply(m_mimeInter->asyncCall("AddUserApp", mimeTypes, desktopId)); -} - -QString MimeDBusProxyOld::GetDefaultApp(const QString &mimeType) -{ - return QDBusPendingReply(m_mimeInter->asyncCall("GetDefaultApp", mimeType)); -} - -QString MimeDBusProxyOld::ListApps(const QString &mimeType) -{ - return QDBusPendingReply(m_mimeInter->asyncCall("ListApps", mimeType)); -} - -QString MimeDBusProxyOld::ListUserApps(const QString &mimeType) -{ - return QDBusPendingReply(m_mimeInter->asyncCall("ListUserApps", mimeType)); -} diff --git a/dcc-old/src/plugin-defaultapp/operation/mimedbusproxyold.h b/dcc-old/src/plugin-defaultapp/operation/mimedbusproxyold.h deleted file mode 100644 index 75783e91ee..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/mimedbusproxyold.h +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include -#include -class QDBusInterface; -class QDBusMessage; - -class MimeDBusProxyOld : public QObject -{ - Q_OBJECT -public: - static bool isRegisted(); - explicit MimeDBusProxyOld(QObject *parent = nullptr); - - QDBusPendingReply SetDefaultApp(const QStringList &mimeTypes, const QString &desktopId); - void DeleteApp(const QStringList &mimeTypes, const QString &desktopId); - void DeleteUserApp(const QString &desktopId); - void AddUserApp(const QStringList &mimeTypes, const QString &desktopId); - - QString GetDefaultApp(const QString &mimeType); - QString ListApps(const QString &mimeType); - - QString ListUserApps(const QString &mimeType); - -Q_SIGNALS: // SIGNALS - void Change(); - // begin property changed signals - -private: - QDBusInterface *m_mimeInter; -}; - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_browser_32px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_browser_32px.svg deleted file mode 100644 index 5240ff44e1..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_browser_32px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_mail_32px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_mail_32px.svg deleted file mode 100644 index 7318e6d647..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_mail_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_music_32px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_music_32px.svg deleted file mode 100644 index 06e7ca17c1..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_music_32px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_photo_32px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_photo_32px.svg deleted file mode 100644 index 434346a527..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_photo_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_terminal_32px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_terminal_32px.svg deleted file mode 100644 index 8e7504774c..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_terminal_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_text_32px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_text_32px.svg deleted file mode 100644 index 864d5e163b..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_text_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_video_32px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_video_32px.svg deleted file mode 100644 index 319a93f473..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/actions/dcc_video_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/defapp.qrc b/dcc-old/src/plugin-defaultapp/operation/qrc/defapp.qrc deleted file mode 100644 index 2bff03aea9..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/defapp.qrc +++ /dev/null @@ -1,15 +0,0 @@ - - - actions/dcc_browser_32px.svg - actions/dcc_mail_32px.svg - actions/dcc_music_32px.svg - actions/dcc_photo_32px.svg - actions/dcc_terminal_32px.svg - actions/dcc_text_32px.svg - actions/dcc_video_32px.svg - icons/dcc_nav_defapp_42px.svg - icons/dcc_nav_defapp_84px.svg - themes/dark/icons/nav_defapp_normal.svg - themes/dark/icons/nav_defapp.svg - - diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/icons/dcc_nav_defapp_42px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/icons/dcc_nav_defapp_42px.svg deleted file mode 100644 index 165298543e..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/icons/dcc_nav_defapp_42px.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - dcc_nav_defapp_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/icons/dcc_nav_defapp_84px.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/icons/dcc_nav_defapp_84px.svg deleted file mode 100644 index fe3e65f7be..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/icons/dcc_nav_defapp_84px.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - dcc_nav_defapp_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/themes/dark/icons/nav_defapp.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/themes/dark/icons/nav_defapp.svg deleted file mode 100755 index 8f095b782a..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/themes/dark/icons/nav_defapp.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - nav_default_app - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-defaultapp/operation/qrc/themes/dark/icons/nav_defapp_normal.svg b/dcc-old/src/plugin-defaultapp/operation/qrc/themes/dark/icons/nav_defapp_normal.svg deleted file mode 100644 index 0a5b63f4df..0000000000 --- a/dcc-old/src/plugin-defaultapp/operation/qrc/themes/dark/icons/nav_defapp_normal.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - nav_default_app_normal - Created with Sketch. - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-defaultapp/window/defappdetailwidget.cpp b/dcc-old/src/plugin-defaultapp/window/defappdetailwidget.cpp deleted file mode 100644 index 27c29bc0dd..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/defappdetailwidget.cpp +++ /dev/null @@ -1,325 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "defappdetailwidget.h" - -#include "defappmodel.h" -#include "defappworker.h" -#include "widgets/dcclistview.h" - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcDefaultDetailWidget, "dcc-default-detailwidget") - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -DefappDetailWidget::DefappDetailWidget(DefAppWorker::DefaultAppsCategory category, QWidget *parent) - : DCC_NAMESPACE::DCCListView(parent) - , m_model(new QStandardItemModel(this)) - , m_categoryValue(category) - , m_category(nullptr) - , m_systemAppCnt(0) - , m_userAppCnt(0) -{ - setAccessibleName("List_defapplist"); - setEditTriggers(QListView::NoEditTriggers); - setIconSize(QSize(32, 32)); - setMovement(QListView::Static); - setSelectionMode(QListView::NoSelection); - setFrameShape(QFrame::NoFrame); - setModel(m_model); - setViewportMargins(0, 0, 10, 0); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); -} - -DefappDetailWidget::~DefappDetailWidget() { } - -void DefappDetailWidget::setDetailModel(DefAppModel *const model) -{ - switch (m_categoryValue) { - case DefAppWorker::Browser: - setCategory(model->getModBrowser()); - break; - case DefAppWorker::Mail: - setCategory(model->getModMail()); - break; - case DefAppWorker::Text: - setCategory(model->getModText()); - break; - case DefAppWorker::Music: - setCategory(model->getModMusic()); - break; - case DefAppWorker::Video: - setCategory(model->getModVideo()); - break; - case DefAppWorker::Picture: - setCategory(model->getModPicture()); - break; - case DefAppWorker::Terminal: - setCategory(model->getModTerminal()); - break; - default: - break; - } -} - -void DefappDetailWidget::setCategory(Category *const category) -{ - m_category = category; - - connect(m_category, &Category::defaultChanged, this, &DefappDetailWidget::onDefaultAppSet); - connect(m_category, &Category::addedUserItem, this, &DefappDetailWidget::addItem); - connect(m_category, &Category::removedUserItem, this, &DefappDetailWidget::removeItem); - connect(m_category, &Category::categoryNameChanged, this, &DefappDetailWidget::setCategoryName); - connect(m_category, &Category::clearAll, this, &DefappDetailWidget::onClearAll); - - AppsItemChanged(m_category->getappItem()); - - onDefaultAppSet(m_category->getDefault()); - setCategoryName(m_category->getName()); -} - -QIcon DefappDetailWidget::getAppIcon(const QString &appIcon, const QSize &size) -{ - QIcon icon(appIcon); - if (icon.pixmap(size).isNull()) - icon = DIconTheme::findQIcon(appIcon, DIconTheme::findQIcon("application-x-desktop")); - - const qreal ratio = devicePixelRatioF(); - QPixmap pixmap = icon.pixmap(size * ratio) - .scaled(size * ratio, Qt::KeepAspectRatio, Qt::SmoothTransformation); - pixmap.setDevicePixelRatio(ratio); - - return pixmap; -} - -void DefappDetailWidget::addItem(const App &item) -{ - qCDebug(DdcDefaultDetailWidget) << item.Id << ", isUser :" << item.isUser; - appendItemData(item); - updateListView(m_category->getDefault()); -} - -void DefappDetailWidget::removeItem(const App &item) -{ - qCDebug(DdcDefaultDetailWidget) << "DefappDetailWidget::removeItem id " << item.Id; - // update model - int cnt = m_model->rowCount(); - for (int row = 0; row < cnt; row++) { - QString id = m_model->data(m_model->index(row, 0), DefAppIdRole).toString(); - if (id == item.Id) { - m_model->removeRow(row); - if (item.isUser) { - m_userAppCnt--; - } else { - m_systemAppCnt--; - } - - break; - } - } - - updateListView(m_category->getDefault()); -} - -void DefappDetailWidget::showInvalidText(DStandardItem *modelItem, - const QString &name, - const QString &iconName) -{ - if (name.isEmpty()) - return; - - DViewItemActionList actions; - QPointer act( - new DViewItemAction(Qt::AlignVCenter | Qt::AlignLeft, QSize(32, 32), QSize(), false)); - QIcon icon = getAppIcon(iconName, QSize(32, 32)); - act->setIcon(icon); - act->setTextColorRole(DPalette::TextWarning); - act->setIconText(name); - actions << act; - modelItem->setActionList(Qt::LeftEdge, actions); -} - -void DefappDetailWidget::setCategoryName(const QString &name) -{ - m_categoryName = name; -} - -void DefappDetailWidget::updateListView(const App &defaultApp) -{ - int cnt = m_model->rowCount(); - for (int row = 0; row < cnt; row++) { - DStandardItem *modelItem = dynamic_cast(m_model->item(row)); - QString id = modelItem->data(DefAppIdRole).toString(); - bool isUser = modelItem->data(DefAppIsUserRole).toBool(); - bool canDelete = modelItem->data(DefAppCanDeleteRole).toBool(); - QString name = modelItem->data(DefAppNameRole).toString(); - QString iconName = modelItem->data(DefAppIconRole).toString(); - - if (id == defaultApp.Id) { - modelItem->setCheckState(Qt::Checked); - // remove user clear button - if (!isUser && !canDelete) - continue; - - DViewItemActionList actions; - modelItem->setActionList(Qt::RightEdge, actions); - showInvalidText(modelItem, name, iconName); - } else { - modelItem->setCheckState(Qt::Unchecked); - // add user clear button - if (!isUser && !canDelete) - continue; - - DViewItemActionList btnActList; - QPointer delAction( - new DViewItemAction(Qt::AlignVCenter | Qt::AlignRight, - QSize(21, 21), - QSize(19, 19), - true)); - - delAction->setIcon( - DStyleHelper(style()).standardIcon(DStyle::SP_CloseButton, nullptr, this)); - connect(delAction, &QAction::triggered, this, &DefappDetailWidget::onDelBtnClicked); - btnActList << delAction; - modelItem->setActionList(Qt::RightEdge, btnActList); - m_actionMap.insert(delAction, id); - showInvalidText(modelItem, name, iconName); - } - } -} - -void DefappDetailWidget::onDefaultAppSet(const App &app) -{ - qCDebug(DdcDefaultDetailWidget) << "SetAppName" << app.Name << this; - updateListView(app); -} - -void DefappDetailWidget::AppsItemChanged(const QList &list) -{ - for (const App &app : list) { - appendItemData(app); - } - - connect(this, &DListView::clicked, this, &DefappDetailWidget::onListViewClicked); - connect(this, &DListView::activated, this, &QListView::clicked); -} - -void DefappDetailWidget::onListViewClicked(const QModelIndex &index) -{ - if (!index.isValid()) - return; - - QString id = this->model()->data(this->currentIndex(), DefAppIdRole).toString(); - App app = getAppById(id); - if (!isValid(app)) - return; - - qCDebug(DdcDefaultDetailWidget) << "set default app " << app.Name; - updateListView(app); - // set default app - Q_EMIT requestSetDefaultApp(m_categoryName, app); -} - -void DefappDetailWidget::onDelBtnClicked() -{ - DViewItemAction *action = qobject_cast(sender()); - if (!m_actionMap.contains(action)) - return; - - QString id = m_actionMap[action]; - - App app = getAppById(id); - if (!isValid(app) || !(app.isUser || app.CanDelete)) - return; - - qCDebug(DdcDefaultDetailWidget) << "delete app " << app.Id; - // delete user app - Q_EMIT requestDelUserApp(m_categoryName, app); -} - -void DefappDetailWidget::onClearAll() -{ - int cnt = m_model->rowCount(); - m_model->removeRows(0, cnt); - m_systemAppCnt = 0; - m_userAppCnt = 0; -} - -App DefappDetailWidget::getAppById(const QString &appId) -{ - auto res = std::find_if(m_category->getappItem().cbegin(), - m_category->getappItem().cend(), - [=](const App &item) -> bool { - return item.Id == appId; - }); - - if (res != m_category->getappItem().cend()) { - return *res; - } - - App app; - app.Id = nullptr; - return app; -} - -void DefappDetailWidget::appendItemData(const App &app) -{ - qCDebug(DdcDefaultDetailWidget) << "appendItemData=" << app.MimeTypeFit; - DStandardItem *item = new DStandardItem; - QString appName = app.DisplayName; - if (!app.isUser || app.MimeTypeFit) { - item->setText(appName); - item->setIcon(getAppIcon(app.Icon, QSize(32, 32))); - } else { - item->setData(appName, DefAppNameRole); - item->setData(app.Icon, DefAppIconRole); - } - - item->setData(app.Id, DefAppIdRole); - item->setData(app.isUser, DefAppIsUserRole); - item->setData(app.CanDelete, DefAppCanDeleteRole); - - int index = 0; - if (app.isUser) { - index = m_systemAppCnt + m_userAppCnt; - m_userAppCnt++; - } else { - index = m_systemAppCnt; - m_systemAppCnt++; - } - - m_model->insertRow(index, item); -} - -bool DefappDetailWidget::isDesktopOrBinaryFile(const QString &fileName) -{ - QMimeDatabase mimeDatabase; - if (mimeDatabase.suffixForFileName(fileName) == "desktop") { - return true; - } - - QMimeType mimeType(mimeDatabase.mimeTypeForFile(fileName, QMimeDatabase::MatchExtension)); - return mimeType.name().startsWith("application/octet-stream"); -} - -bool DefappDetailWidget::isValid(const App &app) -{ - return (!app.Id.isNull() && !app.Id.isEmpty()); -} diff --git a/dcc-old/src/plugin-defaultapp/window/defappdetailwidget.h b/dcc-old/src/plugin-defaultapp/window/defappdetailwidget.h deleted file mode 100644 index e8c71437f8..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/defappdetailwidget.h +++ /dev/null @@ -1,84 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "dcclistview.h" -#include "defappworker.h" -#include "interface/namespace.h" - -#include - -#include - -#include - -DWIDGET_BEGIN_NAMESPACE -class DListView; -class DViewItemAction; -class DStandardItem; -DWIDGET_END_NAMESPACE - -QT_BEGIN_NAMESPACE -class QStandardItemModel; -class QVBoxLayout; -class QIcon; -QT_END_NAMESPACE - -class defappworker; - -class DefappDetailWidget : public DCC_NAMESPACE::DCCListView -{ - Q_OBJECT -public: - explicit DefappDetailWidget(DefAppWorker::DefaultAppsCategory category, - QWidget *parent = nullptr); - virtual ~DefappDetailWidget(); - - void setDetailModel(DefAppModel *const model); - void setCategory(Category *const category); - -private: - void updateListView(const App &defaultApp); - QIcon getAppIcon(const QString &appIcon, const QSize &size); - App getAppById(const QString &appId); - void appendItemData(const App &app); - bool isDesktopOrBinaryFile(const QString &fileName); - bool isValid(const App &app); - - enum DefAppDataRole { - DefAppIsUserRole = DTK_NAMESPACE::UserRole + 1, - DefAppIdRole, - DefAppCanDeleteRole, - DefAppNameRole, - DefAppIconRole - }; - -Q_SIGNALS: - void requestSetDefaultApp(const QString &category, const App &item); - void requestDelUserApp(const QString &name, const App &item); - -public Q_SLOTS: - void onDefaultAppSet(const App &app); - void setCategoryName(const QString &name); - void onListViewClicked(const QModelIndex &index); - void onDelBtnClicked(); - void onClearAll(); - -private: - void AppsItemChanged(const QList &list); - void addItem(const App &item); - void removeItem(const App &item); - void showInvalidText(DTK_WIDGET_NAMESPACE::DStandardItem *modelItem, - const QString &name, - const QString &iconName); - -private: - QStandardItemModel *m_model; - QString m_categoryName; - int m_categoryValue; - Category *m_category; - QMap m_actionMap; - int m_systemAppCnt; - int m_userAppCnt; -}; diff --git a/dcc-old/src/plugin-defaultapp/window/defappplugin.cpp b/dcc-old/src/plugin-defaultapp/window/defappplugin.cpp deleted file mode 100644 index 0c11f41f31..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/defappplugin.cpp +++ /dev/null @@ -1,163 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "defappplugin.h" - -#include "addbuttonwidget.h" -#include "defappdetailwidget.h" -#include "defappmodel.h" -#include "defappworker.h" -#include "interface/pagemodule.h" -#include "mimedbusproxyold.h" -#include "widgets/itemmodule.h" - -#include -#include -#include - -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -struct DATE -{ - QString name; - QString displayName; - QString icon; - DefAppWorker::DefaultAppsCategory category; - - DATE(const QString &_name, - const QString &_displayName, - const QString &_icon, - DefAppWorker::DefaultAppsCategory _category) - : name(_name) - , displayName(_displayName) - , icon(_icon) - , category(_category) - { - } -}; - -QString DefAppPlugin::name() const -{ - return QStringLiteral("Default Applications"); -} - -ModuleObject *DefAppPlugin::module() -{ - QList moduleInfo = { - DATE("defappWebpage", - tr("Webpage"), - "dcc_browser", - DefAppWorker::DefaultAppsCategory::Browser), - DATE("defappMail", tr("Mail"), "dcc_mail", DefAppWorker::DefaultAppsCategory::Mail), - DATE("defappText", tr("Text"), "dcc_text", DefAppWorker::DefaultAppsCategory::Text), - DATE("defappMusic", tr("Music"), "dcc_music", DefAppWorker::DefaultAppsCategory::Music), - DATE("defappVideo", tr("Video"), "dcc_video", DefAppWorker::DefaultAppsCategory::Video), - DATE("defappPicture", - tr("Picture"), - "dcc_photo", - DefAppWorker::DefaultAppsCategory::Picture), - DATE("defappTerminal", - tr("Terminal"), - "dcc_terminal", - DefAppWorker::DefaultAppsCategory::Terminal), - }; - // 一级页面 - DefAppModule *moduleRoot = new DefAppModule; - - for (DATE iter : moduleInfo) { - PageModule *defappDetail = new PageModule(iter.name, - iter.displayName, - QVariant::fromValue(iter.icon), - moduleRoot); - - defappDetail->appendChild(new ItemModule( - "", - "", - [iter, moduleRoot]([[maybe_unused]] ModuleObject *module) { - DefappDetailWidget *defDetail = new DefappDetailWidget(iter.category); - defDetail->setDetailModel(moduleRoot->model()); - // 设置默认程序 - if (moduleRoot->isOldInterface()) { - connect(defDetail, - &DefappDetailWidget::requestSetDefaultApp, - moduleRoot->oldWork(), - &DefAppWorkerOld::onSetDefaultApp); - connect(defDetail, - &DefappDetailWidget::requestDelUserApp, - moduleRoot->oldWork(), - &DefAppWorkerOld::onDelUserApp); - } else { - connect(defDetail, - &DefappDetailWidget::requestSetDefaultApp, - moduleRoot->work(), - &DefAppWorker::onSetDefaultApp); - connect(defDetail, - &DefappDetailWidget::requestDelUserApp, - moduleRoot->work(), - &DefAppWorker::onDelUserApp); - } - return defDetail; - }, - false)); - // TODO: if we need add again? - // ModuleObject *addButton = - // new WidgetModule("defappApplistAddbtn", - // "addDefApp", - // [iter, moduleRoot](AddButtonWidget *button) { - // button->setDefaultAppsCategory(iter.category); - // button->setModel(moduleRoot->model()); - // connect(button, - // &AddButtonWidget::requestCreateFile, - // moduleRoot->work(), - // &DefAppWorker::onCreateFile); - // }); - // addButton->setExtra(); - // defappDetail->appendChild(addButton); - moduleRoot->appendChild(defappDetail); - } - return moduleRoot; -} - -QString DefAppPlugin::location() const -{ - return "4"; -} - -DefAppModule::DefAppModule(QObject *parent) - : VListModule( - "defapp", tr("Default Applications"), DIconTheme::findQIcon("dcc_nav_defapp"), parent) - , m_model(new DefAppModel(this)) - , m_defApps(nullptr) - , m_isOldInterface(false) -{ - if (MimeDBusProxyOld::isRegisted()) { - m_oldwork = new DefAppWorkerOld(m_model, this); - m_isOldInterface = true; - } else { - m_work = new DefAppWorker(m_model, this); - } -} - -DefAppModule::~DefAppModule() -{ - m_model->deleteLater(); - if (m_isOldInterface) { - m_oldwork->deleteLater(); - } else { - m_work->deleteLater(); - } -} - -void DefAppModule::active() -{ - if (m_isOldInterface) { - m_oldwork->onGetListApps(); - } else { - m_work->onGetListApps(); - } -} diff --git a/dcc-old/src/plugin-defaultapp/window/defappplugin.h b/dcc-old/src/plugin-defaultapp/window/defappplugin.h deleted file mode 100644 index 50edede863..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/defappplugin.h +++ /dev/null @@ -1,56 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DEFAPPPLUGIN_H -#define DEFAPPPLUGIN_H - -#include "defappworker.h" -#include "defappworkerold.h" - -#include "interface/plugininterface.h" -#include "interface/vlistmodule.h" - -class DefAppModel; - -// 默认程序插件 -class DefAppPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.DefApp" FILE "defaultapp.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit DefAppPlugin() { } - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; -}; - -// 一级菜单 -class DefAppModule : public DCC_NAMESPACE::VListModule -{ - Q_OBJECT -public: - explicit DefAppModule(QObject *parent = nullptr); - ~DefAppModule() override; - - DefAppWorker *work() { return m_work; } - - DefAppWorkerOld *oldWork() { return m_oldwork; } - - DefAppModel *model() { return m_model; } - - bool isOldInterface() { return m_isOldInterface; } - -protected: - virtual void active() override; - -private: - DefAppModel *m_model; - DefAppWorker *m_work; - DefAppWorkerOld *m_oldwork; - ModuleObject *m_defApps; - bool m_isOldInterface; -}; - -#endif // DEFAPPPLUGIN_H diff --git a/dcc-old/src/plugin-defaultapp/window/defaultapp.json b/dcc-old/src/plugin-defaultapp/window/defaultapp.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/defaultapp.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-defaultapp/window/widgets/addbuttonwidget.cpp b/dcc-old/src/plugin-defaultapp/window/widgets/addbuttonwidget.cpp deleted file mode 100644 index 6c2ff27391..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/widgets/addbuttonwidget.cpp +++ /dev/null @@ -1,103 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "addbuttonwidget.h" -#include "category.h" -#include "defappmodel.h" - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -AddButtonWidget::AddButtonWidget(DefAppWorker::DefaultAppsCategory category, QWidget *parent) - : QWidget(parent) - , m_addBtn(new DFloatingButton(DStyle::SP_IncreaseElement)) - , m_categoryValue(category) - , m_category(nullptr) -{ - QVBoxLayout *centralLayout = new QVBoxLayout; - - centralLayout->addWidget(m_addBtn, 0, Qt::AlignHCenter | Qt::AlignBottom); - setLayout(centralLayout); - - connect(m_addBtn, &Dtk::Widget::DFloatingButton::clicked, this, &AddButtonWidget::onAddBtnClicked); - m_addBtn->setToolTip(tr("Add Application")); - -} - -AddButtonWidget::~AddButtonWidget() -{ - -} - -void AddButtonWidget::setModel(DefAppModel * const model) -{ - switch (m_categoryValue) { - case DefAppWorker::Browser: - setCategory(model->getModBrowser()); - break; - case DefAppWorker::Mail: - setCategory(model->getModMail()); - break; - case DefAppWorker::Text: - setCategory(model->getModText()); - break; - case DefAppWorker::Music: - setCategory(model->getModMusic()); - break; - case DefAppWorker::Video: - setCategory(model->getModVideo()); - break; - case DefAppWorker::Picture: - setCategory(model->getModPicture()); - break; - case DefAppWorker::Terminal: - setCategory(model->getModTerminal()); - break; - default: - break; - } -} - -void AddButtonWidget::setCategory(Category * const category) -{ - m_category = category; - connect(m_category, &Category::categoryNameChanged, this, &AddButtonWidget::setCategoryName); - setCategoryName(m_category->getName()); -} - -void AddButtonWidget::setDefaultAppsCategory(DefAppWorker::DefaultAppsCategory category) -{ - m_categoryValue = category; -} - -void AddButtonWidget::setCategoryName(const QString &name) -{ - m_categoryName = name; -} - -void AddButtonWidget::onAddBtnClicked() -{ - QFileDialog dialog = QFileDialog(); - dialog.setWindowTitle(tr("Open Desktop file")); - QStringList screen; - screen << tr("Apps (*.desktop)") - << tr("All files (*)"); - dialog.setNameFilters(screen); - dialog.setAcceptMode(QFileDialog::AcceptOpen); - QStringList directory = QStandardPaths::standardLocations(QStandardPaths::HomeLocation); - if (!directory.isEmpty()) - dialog.setDirectory(directory.first()); - if(dialog.exec() == QDialog::Accepted) { - QString path = dialog.selectedFiles().first(); - if (path.isEmpty()) - return; - - QFileInfo info(path); - Q_EMIT requestCreateFile(m_categoryName, info); - } -} - diff --git a/dcc-old/src/plugin-defaultapp/window/widgets/addbuttonwidget.h b/dcc-old/src/plugin-defaultapp/window/widgets/addbuttonwidget.h deleted file mode 100644 index e85534d189..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/widgets/addbuttonwidget.h +++ /dev/null @@ -1,41 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ADDBUTTONWIDGET_H -#define ADDBUTTONWIDGET_H - -#include "defappworker.h" -#include - -#include - -QT_BEGIN_NAMESPACE -class QFileDialog; -QT_END_NAMESPACE - -class AddButtonWidget : public QWidget -{ - Q_OBJECT -public: - AddButtonWidget(DefAppWorker::DefaultAppsCategory category = DefAppWorker::Browser, QWidget *parent = nullptr); - ~AddButtonWidget(); - - void setModel(DefAppModel *const model); - void setCategory(Category *const category); - void setDefaultAppsCategory(DefAppWorker::DefaultAppsCategory category); - -Q_SIGNALS: - void requestCreateFile(const QString &category, const QFileInfo &info); - -public Q_SLOTS: - void setCategoryName(const QString &name); - void onAddBtnClicked(); - -private: - DTK_WIDGET_NAMESPACE::DFloatingButton *m_addBtn; - DefAppWorker::DefaultAppsCategory m_categoryValue; - QString m_categoryName; - Category *m_category; -}; - -#endif // ADDBUTTONWIDGET_H diff --git a/dcc-old/src/plugin-defaultapp/window/widgets/category.cpp b/dcc-old/src/plugin-defaultapp/window/widgets/category.cpp deleted file mode 100644 index de99d4e014..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/widgets/category.cpp +++ /dev/null @@ -1,74 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "category.h" -#include - -Category::Category(QObject *parent) - : QObject(parent) -{ - -} - -void Category::setDefault(const App &def) -{ - if (m_default.Id != def.Id) { - m_default = def; - Q_EMIT defaultChanged(def); - } -} - -void Category::setCategory(const QString &category) -{ - if (m_category == category) - return; - - m_category = category; - Q_EMIT categoryNameChanged(category); -} - -void Category::clear() -{ - bool clearFlag = !m_applist.isEmpty(); - - m_systemAppList.clear(); - m_userAppList.clear(); - m_applist.clear(); - if (clearFlag) - Q_EMIT clearAll(); -} - -void Category::addUserItem(const App &value) -{ - if (value.isUser) { - for (auto r : m_systemAppList) { - if (r.Exec == value.Exec) { - return; - } - } - if (m_userAppList.contains(value)) return; - m_userAppList << value; - } else { - if (m_systemAppList.contains(value)) return; - m_systemAppList << value; - } - - m_applist << value; - Q_EMIT addedUserItem(value); -} - -void Category::delUserItem(const App &value) -{ - bool isRemove = false; - - if (value.isUser) { - isRemove = m_userAppList.removeOne(value); - } else { - isRemove = m_systemAppList.removeOne(value); - } - - if (isRemove) { - m_applist.removeOne(value); - Q_EMIT removedUserItem(value); - } -} diff --git a/dcc-old/src/plugin-defaultapp/window/widgets/category.h b/dcc-old/src/plugin-defaultapp/window/widgets/category.h deleted file mode 100644 index c3ad63c7e2..0000000000 --- a/dcc-old/src/plugin-defaultapp/window/widgets/category.h +++ /dev/null @@ -1,65 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef CATEGORY_H -#define CATEGORY_H - -#include -#include - -struct App { - QString dbusPath; - QString Id; - QString Name; - QString DisplayName; - QString Description; - QString Icon; - QString Exec; - bool isUser; - bool CanDelete; - bool MimeTypeFit; - - App() : isUser(false), CanDelete(false), MimeTypeFit(false) {} - - bool operator ==(const App &app) const { - return app.Id == Id && app.isUser == isUser; - } - - bool operator !=(const App &app) const { - return app.Id != Id && app.isUser != isUser; - } -}; - -class Category : public QObject -{ - Q_OBJECT -public: - explicit Category(QObject *parent = 0); - - void setDefault(const App &def); - - const QString getName() const { return m_category;} - void setCategory(const QString &category); - inline const QList getappItem() const { return m_applist;} - inline const QList systemAppList() const { return m_systemAppList; } - inline const QList userAppList() const { return m_userAppList; } - inline const App getDefault() { return m_default;} - void clear(); - void addUserItem(const App &value); - void delUserItem(const App &value); - -Q_SIGNALS: - void defaultChanged(const App &id); - void addedUserItem(const App &app); - void removedUserItem(const App &app); - void categoryNameChanged(const QString &name); - void clearAll(); - -private: - QList m_applist; - QList m_systemAppList; - QList m_userAppList; - QString m_category; - App m_default; -}; -#endif // CATEGORY_H diff --git a/dcc-old/src/plugin-display/operation/displaydbusproxy.cpp b/dcc-old/src/plugin-display/operation/displaydbusproxy.cpp deleted file mode 100644 index c8077b1951..0000000000 --- a/dcc-old/src/plugin-display/operation/displaydbusproxy.cpp +++ /dev/null @@ -1,315 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "displaydbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include - -const static QString DisplayService = "org.deepin.dde.Display1"; -const static QString DisplayPath = "/org/deepin/dde/Display1"; -const static QString DisplayInterface = "org.deepin.dde.Display1"; - -const static QString AppearanceService = "org.deepin.dde.Appearance1"; -const static QString AppearancePath = "/org/deepin/dde/Appearance1"; -const static QString AppearanceInterface = "org.deepin.dde.Appearance1"; - -const static QString PowerService = "org.deepin.dde.Power1"; -const static QString PowerPath = "/org/deepin/dde/Power1"; -const static QString PowerInterface = "org.deepin.dde.Power1"; - -DisplayDBusProxy::DisplayDBusProxy(QObject *parent) - : QObject(parent) -{ - registerTouchscreenInfoList_V2MetaType(); - registerTouchscreenMapMetaType(); - registerResolutionListMetaType(); - registerBrightnessMapMetaType(); - registerTouchscreenInfoListMetaType(); - registerScreenRectMetaType(); - registerResolutionMetaType(); - - init(); -} - -void DisplayDBusProxy::init() -{ - m_dBusSystemDisplayInter = new DDBusInterface("org.deepin.dde.Display1", "/org/deepin/dde/Display1", "org.deepin.dde.Display1", QDBusConnection::systemBus(), this); - m_dBusDisplayInter = new DDBusInterface(DisplayService, DisplayPath, DisplayInterface, QDBusConnection::sessionBus(), this); - m_dBusAppearanceInter = new DDBusInterface(AppearanceService, AppearancePath, AppearanceInterface, QDBusConnection::sessionBus(), this); - m_dBusPowerInter = new DDBusInterface(PowerService, PowerPath, PowerInterface, QDBusConnection::sessionBus(), this); -} - -//power -bool DisplayDBusProxy::ambientLightAdjustBrightness() -{ - return qvariant_cast(m_dBusPowerInter->property("AmbientLightAdjustBrightness")); -} - -void DisplayDBusProxy::setAmbientLightAdjustBrightness(bool value) -{ - m_dBusPowerInter->setProperty("AmbientLightAdjustBrightness", QVariant::fromValue(value)); -} - -bool DisplayDBusProxy::hasAmbientLightSensor() -{ - return qvariant_cast(m_dBusPowerInter->property("HasAmbientLightSensor")); -} - -//display -BrightnessMap DisplayDBusProxy::brightness() -{ - return qvariant_cast(m_dBusDisplayInter->property("Brightness")); -} - -int DisplayDBusProxy::colorTemperatureManual() -{ - return qvariant_cast(m_dBusDisplayInter->property("ColorTemperatureManual")); -} - -int DisplayDBusProxy::colorTemperatureMode() -{ - return qvariant_cast(m_dBusDisplayInter->property("ColorTemperatureMode")); -} - -QString DisplayDBusProxy::currentCustomId() -{ - return qvariant_cast(m_dBusDisplayInter->property("CurrentCustomId")); -} - -QStringList DisplayDBusProxy::customIdList() -{ - return qvariant_cast(m_dBusDisplayInter->property("CustomIdList")); -} - -uchar DisplayDBusProxy::displayMode() -{ - return qvariant_cast(m_dBusDisplayInter->property("DisplayMode")); -} -bool DisplayDBusProxy::hasChanged() -{ - return qvariant_cast(m_dBusDisplayInter->property("HasChanged")); -} - -uint DisplayDBusProxy::maxBacklightBrightness() -{ - return qvariant_cast(m_dBusDisplayInter->property("MaxBacklightBrightness")); -} - -QList DisplayDBusProxy::monitors() -{ - return qvariant_cast>(m_dBusDisplayInter->property("Monitors")); -} - -QString DisplayDBusProxy::primary() -{ - return qvariant_cast(m_dBusDisplayInter->property("Primary")); -} - -ScreenRect DisplayDBusProxy::primaryRect() -{ - return qvariant_cast(m_dBusDisplayInter->property("PrimaryRect")); -} - -ushort DisplayDBusProxy::screenHeight() -{ - return qvariant_cast(m_dBusDisplayInter->property("ScreenHeight")); -} - -ushort DisplayDBusProxy::screenWidth() -{ - return qvariant_cast(m_dBusDisplayInter->property("ScreenWidth")); -} - -TouchscreenMap DisplayDBusProxy::touchMap() -{ - return qvariant_cast(m_dBusDisplayInter->property("TouchMap")); -} - -TouchscreenInfoList DisplayDBusProxy::touchscreens() -{ - return qvariant_cast(m_dBusDisplayInter->property("Touchscreens")); -} - -TouchscreenInfoList_V2 DisplayDBusProxy::touchscreensV2() -{ - return qvariant_cast(m_dBusDisplayInter->property("TouchscreensV2")); -} - - -QDBusPendingReply DisplayDBusProxy::GetScaleFactor() -{ - QList argumentList; - return m_dBusAppearanceInter->asyncCallWithArgumentList(QStringLiteral("GetScaleFactor"), argumentList); -} - -QDBusPendingReply > DisplayDBusProxy::GetScreenScaleFactors() -{ - QList argumentList; - return m_dBusAppearanceInter->asyncCallWithArgumentList(QStringLiteral("GetScreenScaleFactors"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::SetScaleFactor(double in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusAppearanceInter->asyncCallWithArgumentList(QStringLiteral("SetScaleFactor"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::SetScreenScaleFactors(const QMap &scaleFactors) -{ - QList argumentList; - argumentList << QVariant::fromValue(scaleFactors); - return m_dBusAppearanceInter->asyncCallWithArgumentList(QStringLiteral("SetScreenScaleFactors"), argumentList); -} - -QString DisplayDBusProxy::GetConfig() -{ - QList argumentList; - return QDBusPendingReply(m_dBusSystemDisplayInter->asyncCallWithArgumentList(QStringLiteral("GetConfig"), argumentList)); -} - -void DisplayDBusProxy::SetConfig(QString cfgStr) -{ - QList argumentList; - argumentList << cfgStr; - m_dBusSystemDisplayInter->asyncCallWithArgumentList(QStringLiteral("SetConfig"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::ApplyChanges() -{ - QList argumentList; - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("ApplyChanges"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::AssociateTouch(const QString &in0, const QString &in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("AssociateTouch"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::AssociateTouchByUUID(const QString &in0, const QString &in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("AssociateTouchByUUID"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::ChangeBrightness(bool in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("ChangeBrightness"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::DeleteCustomMode(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("DeleteCustomMode"), argumentList); -} - -QDBusPendingReply DisplayDBusProxy::GetRealDisplayMode() -{ - QList argumentList; - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("GetRealDisplayMode"), argumentList); -} - -QDBusPendingReply DisplayDBusProxy::ListOutputNames() -{ - QList argumentList; - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("ListOutputNames"), argumentList); -} - -QDBusPendingReply DisplayDBusProxy::ListOutputsCommonModes() -{ - QList argumentList; - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("ListOutputsCommonModes"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::ModifyConfigName(const QString &in0, const QString &in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("ModifyConfigName"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::RefreshBrightness() -{ - QList argumentList; - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("RefreshBrightness"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::Reset() -{ - QList argumentList; - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("Reset"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::ResetChanges() -{ - QList argumentList; - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("ResetChanges"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::Save() -{ - QList argumentList; - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("Save"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::SetAndSaveBrightness(const QString &in0, double in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("SetAndSaveBrightness"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::SetBrightness(const QString &in0, double in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("SetBrightness"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::SetColorTemperature(int in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("SetColorTemperature"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::SetMethodAdjustCCT(int in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("SetMethodAdjustCCT"), argumentList); -} - -QDBusPendingReply<> DisplayDBusProxy::SetPrimary(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("SetPrimary"), argumentList); -} - - -QDBusPendingReply<> DisplayDBusProxy::SwitchMode(uchar in0, const QString &in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusDisplayInter->asyncCallWithArgumentList(QStringLiteral("SwitchMode"), argumentList); -} - -QDBusReply DisplayDBusProxy::CanSetBrightnessSync(const QString &name) -{ - return m_dBusDisplayInter->call("CanSetBrightness", name); -} - -QDBusReply DisplayDBusProxy::SupportSetColorTemperatureSync() -{ - return m_dBusDisplayInter->call("SupportSetColorTemperatureSync"); -} diff --git a/dcc-old/src/plugin-display/operation/displaydbusproxy.h b/dcc-old/src/plugin-display/operation/displaydbusproxy.h deleted file mode 100644 index bbde801087..0000000000 --- a/dcc-old/src/plugin-display/operation/displaydbusproxy.h +++ /dev/null @@ -1,151 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DISPLAYDBUSPROXY_H -#define DISPLAYDBUSPROXY_H - -#include "interface/namespace.h" -#include "types/touchscreeninfolist_v2.h" -#include "types/touchscreenmap.h" -#include "types/resolutionlist.h" -#include "types/brightnessmap.h" -#include "types/touchscreeninfolist.h" -#include "types/screenrect.h" - -#include - -#include -#include -#include - -using Dtk::Core::DDBusInterface; -class QDBusMessage; - -class DisplayDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit DisplayDBusProxy(QObject *parent = nullptr); - Q_PROPERTY(BrightnessMap Brightness READ brightness NOTIFY BrightnessChanged) - BrightnessMap brightness(); - - Q_PROPERTY(int ColorTemperatureManual READ colorTemperatureManual NOTIFY ColorTemperatureManualChanged) - int colorTemperatureManual(); - - Q_PROPERTY(int ColorTemperatureMode READ colorTemperatureMode NOTIFY ColorTemperatureModeChanged) - int colorTemperatureMode(); - - Q_PROPERTY(QString CurrentCustomId READ currentCustomId NOTIFY CurrentCustomIdChanged) - QString currentCustomId(); - - Q_PROPERTY(QStringList CustomIdList READ customIdList NOTIFY CustomIdListChanged) - QStringList customIdList(); - - Q_PROPERTY(uchar DisplayMode READ displayMode NOTIFY DisplayModeChanged) - uchar displayMode(); - - Q_PROPERTY(bool HasChanged READ hasChanged NOTIFY HasChangedChanged) - bool hasChanged(); - - Q_PROPERTY(uint MaxBacklightBrightness READ maxBacklightBrightness NOTIFY MaxBacklightBrightnessChanged) - uint maxBacklightBrightness(); - - Q_PROPERTY(QList Monitors READ monitors NOTIFY MonitorsChanged) - QList monitors(); - - Q_PROPERTY(QString Primary READ primary NOTIFY PrimaryChanged) - QString primary(); - - Q_PROPERTY(ScreenRect PrimaryRect READ primaryRect NOTIFY PrimaryRectChanged) - ScreenRect primaryRect(); - - Q_PROPERTY(ushort ScreenHeight READ screenHeight NOTIFY ScreenHeightChanged) - ushort screenHeight(); - - Q_PROPERTY(ushort ScreenWidth READ screenWidth NOTIFY ScreenWidthChanged) - ushort screenWidth(); - - Q_PROPERTY(TouchscreenMap TouchMap READ touchMap NOTIFY TouchMapChanged) - TouchscreenMap touchMap(); - - Q_PROPERTY(TouchscreenInfoList Touchscreens READ touchscreens NOTIFY TouchscreensChanged) - TouchscreenInfoList touchscreens(); - - Q_PROPERTY(TouchscreenInfoList_V2 TouchscreensV2 READ touchscreensV2 NOTIFY TouchscreensV2Changed) - TouchscreenInfoList_V2 touchscreensV2(); - - //power - Q_PROPERTY(bool AmbientLightAdjustBrightness READ ambientLightAdjustBrightness WRITE setAmbientLightAdjustBrightness NOTIFY AmbientLightAdjustBrightnessChanged) - bool ambientLightAdjustBrightness(); - void setAmbientLightAdjustBrightness(bool value); - - Q_PROPERTY(bool HasAmbientLightSensor READ hasAmbientLightSensor NOTIFY HasAmbientLightSensorChanged) - bool hasAmbientLightSensor(); - - -private: - void init(); - -public Q_SLOTS: // METHODS - //Display - QDBusPendingReply<> ApplyChanges(); - QDBusPendingReply<> AssociateTouch(const QString &in0, const QString &in1); - QDBusPendingReply<> AssociateTouchByUUID(const QString &in0, const QString &in1); - QDBusPendingReply<> ChangeBrightness(bool in0); - QDBusPendingReply<> DeleteCustomMode(const QString &in0); - QDBusPendingReply GetRealDisplayMode(); - QDBusPendingReply ListOutputNames(); - QDBusPendingReply ListOutputsCommonModes(); - QDBusPendingReply<> ModifyConfigName(const QString &in0, const QString &in1); - QDBusPendingReply<> RefreshBrightness(); - QDBusPendingReply<> Reset(); - QDBusPendingReply<> ResetChanges(); - QDBusPendingReply<> Save(); - QDBusPendingReply<> SetAndSaveBrightness(const QString &in0, double in1); - QDBusPendingReply<> SetBrightness(const QString &in0, double in1); - QDBusPendingReply<> SetColorTemperature(int in0); - QDBusPendingReply<> SetMethodAdjustCCT(int in0); - QDBusPendingReply<> SetPrimary(const QString &in0); - QDBusPendingReply<> SwitchMode(uchar in0, const QString &in1); - QDBusReply CanSetBrightnessSync(const QString &name); - QDBusReply SupportSetColorTemperatureSync(); - //Appearance - QDBusPendingReply GetScaleFactor(); - QDBusPendingReply > GetScreenScaleFactors(); - QDBusPendingReply<> SetScaleFactor(double in0); - QDBusPendingReply<> SetScreenScaleFactors(const QMap &scaleFactors); - // SystemDisplay - QString GetConfig(); - void SetConfig(QString cfgStr); - -Q_SIGNALS: // SIGNALS - // begin property changed signals - void BrightnessChanged(BrightnessMap value) const; - void ColorTemperatureManualChanged(int value) const; - void ColorTemperatureModeChanged(int value) const; - void CurrentCustomIdChanged(const QString & value) const; - void CustomIdListChanged(const QStringList & value) const; - void DisplayModeChanged(uchar value) const; - void HasChangedChanged(bool value) const; - void MaxBacklightBrightnessChanged(uint value) const; - void MonitorsChanged(const QList & value) const; - void PrimaryChanged(const QString & value) const; - void PrimaryRectChanged(ScreenRect value) const; - void ScreenHeightChanged(ushort value) const; - void ScreenWidthChanged(ushort value) const; - void TouchMapChanged(TouchscreenMap value) const; - void TouchscreensChanged(TouchscreenInfoList value) const; - void TouchscreensV2Changed(TouchscreenInfoList_V2 value) const; - - //power - void AmbientLightAdjustBrightnessChanged(bool value) const; - void HasAmbientLightSensorChanged(bool value) const; - -private: - DDBusInterface *m_dBusDisplayInter; - DDBusInterface *m_dBusSystemDisplayInter; - DDBusInterface *m_dBusAppearanceInter; - DDBusInterface *m_dBusPowerInter; -}; - -#endif // DISPLAYDBUSPROXY_H diff --git a/dcc-old/src/plugin-display/operation/displaymodel.cpp b/dcc-old/src/plugin-display/operation/displaymodel.cpp deleted file mode 100644 index db35c3102c..0000000000 --- a/dcc-old/src/plugin-display/operation/displaymodel.cpp +++ /dev/null @@ -1,241 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "displaymodel.h" - -using namespace DCC_NAMESPACE; -const double DoubleZero = 0.000001; -bool contains(const QList &container, const Resolution &item) -{ - for (auto r : container) - if (r.width() == item.width() && r.height() == item.height()) - return true; - - return false; -} - -DisplayModel::DisplayModel(QObject *parent) - : QObject(parent) - , m_screenHeight(0) - , m_screenWidth(0) - , m_uiScale(1) - , m_minimumBrightnessScale(0.0) - , m_redshiftIsValid(false) - , m_allowEnableMultiScaleRatio(false) - , m_resolutionRefreshEnable(true) - , m_brightnessEnable(true) -{ -} - -double DisplayModel::monitorScale(Monitor *moni) -{ - qDebug() << "ui scale : " << m_uiScale << "\tmonitor scale:" << moni->scale(); - return moni->scale() < 1.0 ? m_uiScale : moni->scale(); -} - -Monitor *DisplayModel::primaryMonitor() const -{ - for (auto mon : m_monitors) - if (mon->name() == m_primary) - return mon; - - return nullptr; -} - -void DisplayModel::setScreenHeight(const int h) -{ - if (m_screenHeight != h) { - m_screenHeight = h; - Q_EMIT screenHeightChanged(m_screenHeight); - } -} - -void DisplayModel::setScreenWidth(const int w) -{ - if (m_screenWidth != w) { - m_screenWidth = w; - Q_EMIT screenWidthChanged(m_screenWidth); - } -} - -void DisplayModel::setDisplayMode(const int mode) -{ - if (m_mode != mode && mode >= 0 && mode < 5) { - m_mode = mode; - Q_EMIT displayModeChanged(m_mode); - } -} - -void DisplayModel::setUIScale(const double scale) -{ - if (fabs(m_uiScale - scale) > DoubleZero) { - m_uiScale = scale; - Q_EMIT uiScaleChanged(m_uiScale); - } -} - -void DisplayModel::setMinimumBrightnessScale(const double scale) -{ - if (fabs(m_minimumBrightnessScale - scale) > DoubleZero) { - m_minimumBrightnessScale = scale; - Q_EMIT minimumBrightnessScaleChanged(m_minimumBrightnessScale); - } -} - -void DisplayModel::setPrimary(const QString &primary) -{ - if (m_primary != primary) { - m_primary = primary; - Q_EMIT primaryScreenChanged(m_primary); - } -} - -void DisplayModel::monitorAdded(Monitor *mon) -{ - m_monitors.append(mon); - // 按照名称排序,显示的时候VGA在前,HDMI在后 - std::sort(m_monitors.begin(), m_monitors.end(), [=](const Monitor *m1, const Monitor *m2){ - return m1->name() > m2->name(); - }); - checkAllSupportFillModes(); - - Q_EMIT monitorListChanged(); -} - -void DisplayModel::monitorRemoved(Monitor *mon) -{ - m_monitors.removeOne(mon); - checkAllSupportFillModes(); - - Q_EMIT monitorListChanged(); -} - -void DisplayModel::setAutoLightAdjustIsValid(bool ala) -{ - if (m_AutoLightAdjustIsValid == ala) - return; - m_AutoLightAdjustIsValid = ala; - Q_EMIT autoLightAdjustVaildChanged(ala); -} - -void DisplayModel::setBrightnessMap(const BrightnessMap &brightnessMap) -{ - if (brightnessMap == m_brightnessMap) - return; - - m_brightnessMap = brightnessMap; -} - -void DisplayModel::setTouchscreenList(const TouchscreenInfoList_V2 &touchscreenList) -{ - if (touchscreenList == m_touchscreenList) - return; - - m_touchscreenList = touchscreenList; - - Q_EMIT touchscreenListChanged(); -} - -void DisplayModel::setTouchMap(const TouchscreenMap &touchMap) -{ - if (touchMap == m_touchMap) - return; - - m_touchMap = touchMap; - - Q_EMIT touchscreenMapChanged(); -} - -void DisplayModel::setAutoLightAdjust(bool ala) -{ - if (ala == m_isAutoLightAdjust) - return; - - m_isAutoLightAdjust = ala; - - Q_EMIT autoLightAdjustSettingChanged(m_isAutoLightAdjust); -} - -bool DisplayModel::redshiftIsValid() const -{ - return m_redshiftIsValid; -} - -void DisplayModel::setAdjustCCTmode(int mode) -{ - if (m_adjustCCTMode == mode) - return; - - m_adjustCCTMode = mode; - - Q_EMIT adjustCCTmodeChanged(mode); -} - -void DisplayModel::setColorTemperature(int value) -{ - if (m_colorTemperature == value) - return; - - m_colorTemperature = value; - - Q_EMIT colorTemperatureChanged(value); -} - -void DisplayModel::setRedshiftIsValid(bool redshiftIsValid) -{ - if (m_redshiftIsValid == redshiftIsValid) - return; - - m_redshiftIsValid = redshiftIsValid; - - Q_EMIT redshiftVaildChanged(redshiftIsValid); -} - -void DisplayModel::setAllowEnableMultiScaleRatio(bool allowEnableMultiScaleRatio) -{ - if (m_allowEnableMultiScaleRatio == allowEnableMultiScaleRatio) - return; - - m_allowEnableMultiScaleRatio = allowEnableMultiScaleRatio; -} - -void DisplayModel::setRefreshRateEnable(bool isEnable) -{ - m_RefreshRateEnable = isEnable; -} - -void DisplayModel::setmaxBacklightBrightness(const uint value) -{ - if (m_maxBacklightBrightness != value && value < 100) { - m_maxBacklightBrightness = value; - Q_EMIT maxBacklightBrightnessChanged(value); - } -} - -void DisplayModel::setResolutionRefreshEnable(const bool enable) -{ - if (m_resolutionRefreshEnable != enable) { - m_resolutionRefreshEnable = enable; - Q_EMIT resolutionRefreshEnableChanged(m_resolutionRefreshEnable); - } -} - -void DisplayModel::setBrightnessEnable(const bool enable) -{ - if (m_brightnessEnable != enable) { - m_brightnessEnable = enable; - Q_EMIT brightnessEnableChanged(m_brightnessEnable); - } -} - -void DisplayModel::checkAllSupportFillModes() -{ - for (auto m : monitorList()) { - if (m->availableFillModes().isEmpty()) { - m_allSupportFillModes = false; - return; - } - } - m_allSupportFillModes = true; -} diff --git a/dcc-old/src/plugin-display/operation/displaymodel.h b/dcc-old/src/plugin-display/operation/displaymodel.h deleted file mode 100644 index 707d4f00f6..0000000000 --- a/dcc-old/src/plugin-display/operation/displaymodel.h +++ /dev/null @@ -1,153 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DISPLAYMODEL_H -#define DISPLAYMODEL_H - -#include "math.h" - -#include -#include - -#include "interface/namespace.h" -#include "monitor.h" -#include "types/brightnessmap.h" -#include "types/touchscreeninfolist_v2.h" -#include "types/touchscreenmap.h" - -#define CUSTOM_MODE 0 -#define MERGE_MODE 1 -#define EXTEND_MODE 2 -#define SINGLE_MODE 3 - -namespace DCC_NAMESPACE { - -class DisplayWorker; -class DisplayModel : public QObject -{ - Q_OBJECT - -public: - friend class DisplayWorker; - -public: - explicit DisplayModel(QObject *parent = 0); - - double monitorScale(Monitor *moni); - inline int screenHeight() const { return m_screenHeight; } - inline int screenWidth() const { return m_screenWidth; } - inline int displayMode() const { return m_mode; } - inline double uiScale() const { return m_uiScale; } - inline double minimumBrightnessScale() const { return m_minimumBrightnessScale; } - inline const QString primary() const { return m_primary; } - inline const QList monitorList() const { return m_monitors; } - Monitor *primaryMonitor() const; - inline const QString defaultFillMode() { return "None"; } - - bool isNightMode() const; - void setIsNightMode(bool isNightMode); - - bool redshiftIsValid() const; - - inline int adjustCCTMode() const { return m_adjustCCTMode; } - void setAdjustCCTmode(int mode); - - inline int colorTemperature() const { return m_colorTemperature; } - void setColorTemperature(int value); - - inline bool autoLightAdjustIsValid() const { return m_AutoLightAdjustIsValid; } - - inline bool isAudtoLightAdjust() const { return m_isAutoLightAdjust; } - void setAutoLightAdjust(bool); - - inline BrightnessMap brightnessMap() const { return m_brightnessMap; } - void setBrightnessMap(const BrightnessMap &brightnessMap); - - inline TouchscreenInfoList_V2 touchscreenList() const { return m_touchscreenList; } - void setTouchscreenList(const TouchscreenInfoList_V2 &touchscreenList); - - inline TouchscreenMap touchMap() const { return m_touchMap; } - void setTouchMap(const TouchscreenMap &touchMap); - - inline bool allowEnableMultiScaleRatio() { return m_allowEnableMultiScaleRatio; } - void setAllowEnableMultiScaleRatio(bool allowEnableMultiScaleRatio); - - inline bool isRefreshRateEnable() const { return m_RefreshRateEnable; } - void setRefreshRateEnable(bool isEnable); - - inline uint maxBacklightBrightness() const { return m_maxBacklightBrightness; } - - inline bool resolutionRefreshEnable() const { return m_resolutionRefreshEnable; } - void setResolutionRefreshEnable(const bool enable); - - inline bool brightnessEnable() const { return m_brightnessEnable; } - void setBrightnessEnable(const bool enable); - - inline bool allSupportFillModes() const { return m_allSupportFillModes; } - void checkAllSupportFillModes(); - - -Q_SIGNALS: - void screenHeightChanged(const int h) const; - void screenWidthChanged(const int w) const; - void displayModeChanged(const int mode) const; - void uiScaleChanged(const double scale) const; - void minimumBrightnessScaleChanged(const double) const; - void primaryScreenChanged(const QString &primary) const; - void monitorListChanged() const; - void machinesListChanged() const; - void nightModeChanged(const bool nightmode) const; - void redshiftVaildChanged(const bool isvalid) const; - void autoLightAdjustSettingChanged(bool setting) const; - void autoLightAdjustVaildChanged(bool isvalid) const; - void touchscreenListChanged() const; - void touchscreenMapChanged() const; - void maxBacklightBrightnessChanged(uint value); - void adjustCCTmodeChanged(int mode); - void colorTemperatureChanged(int value); - void resolutionRefreshEnableChanged(const bool enable); - void brightnessEnableChanged(const bool enable); - void deviceSharingSwitchChanged(const bool enable); - void sharedClipboardChanged(bool on) const; - void sharedDevicesChanged(bool on) const; - void filesStoragePathChanged(const QString& path) const; - -private Q_SLOTS: - void setScreenHeight(const int h); - void setScreenWidth(const int w); - void setDisplayMode(const int mode); - void setUIScale(const double scale); - void setMinimumBrightnessScale(const double scale); - void setPrimary(const QString &primary); - void setRedshiftIsValid(bool redshiftIsValid); - void monitorAdded(Monitor *mon); - void monitorRemoved(Monitor *mon); - void setAutoLightAdjustIsValid(bool); - void setmaxBacklightBrightness(const uint value); - -private: - int m_screenHeight; - int m_screenWidth; - int m_mode {-1}; - int m_colorTemperature {0}; //当前色温对应的颜色值 - int m_adjustCCTMode {0}; //当前自动调节色温模式 0 不开启 1 自动调节 2 手动调节 - double m_uiScale; - double m_minimumBrightnessScale; - QString m_primary; - QList m_monitors; - bool m_redshiftIsValid; - bool m_RefreshRateEnable {false}; - bool m_isAutoLightAdjust {false}; - bool m_AutoLightAdjustIsValid {false}; - bool m_allowEnableMultiScaleRatio; - bool m_resolutionRefreshEnable; - bool m_brightnessEnable; - BrightnessMap m_brightnessMap; - TouchscreenInfoList_V2 m_touchscreenList; - TouchscreenMap m_touchMap; - uint m_maxBacklightBrightness {0}; - bool m_allSupportFillModes; -}; -} - -#endif // DISPLAYMODEL_H diff --git a/dcc-old/src/plugin-display/operation/displayworker.cpp b/dcc-old/src/plugin-display/operation/displayworker.cpp deleted file mode 100644 index 859b6ccafc..0000000000 --- a/dcc-old/src/plugin-display/operation/displayworker.cpp +++ /dev/null @@ -1,915 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2024 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "displayworker.h" -#include "displaymodel.h" -#include "widgets/utils.h" - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcDisplayWorker, "dcc-display-worker") - - -const QString DisplayInterface("org.deepin.dde.Display1"); - -Q_DECLARE_METATYPE(QList) -using namespace DCC_NAMESPACE; - -DisplayWorker::DisplayWorker(DisplayModel *model, QObject *parent, bool isSync) - : QObject(parent) - , m_model(model) - , m_displayInter(new DisplayDBusProxy(this)) - , m_updateScale(false) - , m_timer(new QTimer(this)) - , m_dconfig(DConfig::create("org.deepin.dde.control-center", QStringLiteral("org.deepin.dde.control-center.display"), QString(), this)) -{ - // NOTE: what will it be used? - Q_UNUSED(isSync) - m_timer->setSingleShot(true); - m_timer->setInterval(200); - - if (WQt::Utils::isTreeland()) { - m_reg = new WQt::Registry(WQt::Wayland::display()); - m_reg->setup(); - auto *opMgr = m_reg->outputManager(); - if (!opMgr) { - qFatal("Unable to start the output manager"); - } - connect(opMgr, &WQt::OutputManager::done, this, [this]() { - onWlMonitorListChanged(); - }); - } else { - connect(m_displayInter, &DisplayDBusProxy::MonitorsChanged, this, &DisplayWorker::onMonitorListChanged); - connect(m_displayInter, &DisplayDBusProxy::BrightnessChanged, this, &DisplayWorker::onMonitorsBrightnessChanged); - connect(m_displayInter, &DisplayDBusProxy::BrightnessChanged, model, &DisplayModel::setBrightnessMap); - connect(m_displayInter, &DisplayDBusProxy::TouchscreensV2Changed, model, &DisplayModel::setTouchscreenList); - connect(m_displayInter, &DisplayDBusProxy::TouchMapChanged, model, &DisplayModel::setTouchMap); - connect(m_displayInter, &DisplayDBusProxy::ScreenHeightChanged, model, &DisplayModel::setScreenHeight); - connect(m_displayInter, &DisplayDBusProxy::ScreenWidthChanged, model, &DisplayModel::setScreenWidth); - connect(m_displayInter, &DisplayDBusProxy::DisplayModeChanged, model, &DisplayModel::setDisplayMode); - connect(m_displayInter, &DisplayDBusProxy::MaxBacklightBrightnessChanged, model, &DisplayModel::setmaxBacklightBrightness); - connect(m_displayInter, &DisplayDBusProxy::ColorTemperatureModeChanged, model, &DisplayModel::setAdjustCCTmode); - connect(m_displayInter, &DisplayDBusProxy::ColorTemperatureManualChanged, model, &DisplayModel::setColorTemperature); - connect(m_displayInter, static_cast(&DisplayDBusProxy::PrimaryChanged), model, &DisplayModel::setPrimary); - - //display redSfit/autoLight - connect(m_displayInter, &DisplayDBusProxy::HasAmbientLightSensorChanged, m_model, &DisplayModel::autoLightAdjustVaildChanged); - connect(m_timer, &QTimer::timeout, this, [=] { - m_displayInter->ApplyChanges().waitForFinished(); - m_displayInter->Save().waitForFinished(); - }); - } -} - -DisplayWorker::~DisplayWorker() -{ - qDeleteAll(m_monitors.keys()); - qDeleteAll(m_monitors.values()); -} - -void DisplayWorker::active() -{ - if (WQt::Utils::isTreeland()) { - m_reg->outputManager()->waitForDone(); - onWlMonitorListChanged(); - - m_model->setDisplayMode(EXTEND_MODE); // TODO: use dconfig - auto *treelandOpMgr = m_reg->treeLandOutputManager(); - m_model->setPrimary(treelandOpMgr->mPrimaryOutput); - connect(treelandOpMgr, &WQt::TreeLandOutputManager::primaryOutputChanged, this, [this](){ - m_model->setPrimary(m_reg->treeLandOutputManager()->mPrimaryOutput); - }); - - m_model->setResolutionRefreshEnable(true); - m_model->setBrightnessEnable(false); // TODO: support gamma effects - } else { - // m_model->setAllowEnableMultiScaleRatio( - // valueByQSettings(DCC_CONFIG_FILES, - // "Display", - // "AllowEnableMultiScaleRatio", - // false)); - - QDBusPendingCallWatcher *scalewatcher = new QDBusPendingCallWatcher(m_displayInter->GetScaleFactor()); - connect(scalewatcher, &QDBusPendingCallWatcher::finished, this, &DisplayWorker::onGetScaleFinished); - - QDBusPendingCallWatcher *screenscaleswatcher = new QDBusPendingCallWatcher(m_displayInter->GetScreenScaleFactors()); - connect(screenscaleswatcher, &QDBusPendingCallWatcher::finished, this, &DisplayWorker::onGetScreenScalesFinished); - - onMonitorsBrightnessChanged(m_displayInter->brightness()); - m_model->setBrightnessMap(m_displayInter->brightness()); - onMonitorListChanged(m_displayInter->monitors()); - - m_model->setDisplayMode(m_displayInter->displayMode()); - m_model->setTouchscreenList(m_displayInter->touchscreensV2()); - m_model->setTouchMap(m_displayInter->touchMap()); - m_model->setPrimary(m_displayInter->primary()); - m_model->setScreenHeight(m_displayInter->screenHeight()); - m_model->setScreenWidth(m_displayInter->screenWidth()); - m_model->setAdjustCCTmode(m_displayInter->colorTemperatureMode()); - m_model->setColorTemperature(m_displayInter->colorTemperatureManual()); - m_model->setmaxBacklightBrightness(m_displayInter->maxBacklightBrightness()); - m_model->setAutoLightAdjustIsValid(m_displayInter->hasAmbientLightSensor()); - - bool isRedshiftValid = true; - QDBusReply reply = m_displayInter->SupportSetColorTemperatureSync(); - if (QDBusError::NoError == reply.error().type()) - isRedshiftValid = reply.value(); - else - qCWarning(DdcDisplayWorker) << "Call SupportSetColorTemperature method failed: " << reply.error().message(); - m_model->setRedshiftIsValid(isRedshiftValid); - QVariant minBrightnessValue = 0.1f; - minBrightnessValue = m_dconfig->value("minBrightnessValue", minBrightnessValue); - m_model->setMinimumBrightnessScale(minBrightnessValue.toDouble()); - // m_model->setResolutionRefreshEnable(m_dccSettings->get(GSETTINGS_SHOW_MUTILSCREEN).toBool()); - // m_model->setBrightnessEnable(m_dccSettings->get(GSETTINGS_BRIGHTNESS_ENABLE).toBool()); - } -} - -void DisplayWorker::saveChanges() -{ - clearBackup(); - m_displayInter->Save().waitForFinished(); - if (m_updateScale) - setUiScale(m_currentScale); - m_updateScale = false; -} - -void DisplayWorker::switchMode(const int mode, const QString &name) -{ - if (WQt::Utils::isTreeland()) { - auto *opCfg = m_reg->outputManager()->createConfiguration(); - m_model->setDisplayMode(mode); - int posX = 0; - - for (auto it(m_wl_monitors.cbegin()); it != m_wl_monitors.cend(); ++it) { - switch (mode) { - case MERGE_MODE: { - auto *cfgHead = opCfg->enableHead(it.value()); - cfgHead->setPosition({0, 0}); - break; - } - case EXTEND_MODE: { - auto *cfgHead = opCfg->enableHead(it.value()); - cfgHead->setPosition({posX, 0}); - posX += it.key()->w(); - break; - } - case SINGLE_MODE: { - if (it.key()->name() == name) { - auto *cfgHead = opCfg->enableHead(it.value()); - WQt::OutputMode *preferMode = nullptr; - for (auto *mode: it.value()->property(WQt::OutputHead::Modes).value>()) { - preferMode = mode; - if (mode->isPreferred()) - break; - } - cfgHead->setMode(preferMode); - cfgHead->setPosition({0, 0}); - } else { - opCfg->disableHead(it.value()); - } - break; - } - default: - break; - } - } - - opCfg->apply(); - } else { - m_displayInter->SwitchMode(static_cast(mode), name).waitForFinished(); - } -} - -void DisplayWorker::onMonitorListChanged(const QList &mons) -{ - QList ops; - for (const auto *mon : m_monitors.keys()) - ops << mon->path(); - - qCDebug(DdcDisplayWorker) << mons.size(); - QList pathList; - for (const auto &op : mons) { - const QString path = op.path(); - pathList << path; - if (!ops.contains(path)) - monitorAdded(path); - } - - for (const auto &op : ops) - if (!pathList.contains(op)) - monitorRemoved(op); -} - -void DisplayWorker::onWlMonitorListChanged() -{ - // Only check new output here, listen OutputHead::finished for remove - auto heads = m_reg->outputManager()->heads(); - - qCDebug(DdcDisplayWorker) << heads.size(); - for (auto *head : heads) { - bool isNew = true; - for (const auto *oldHead : m_wl_monitors.values()) - if (head == oldHead) { - isNew = false; - break; - } - if (isNew) - wlMonitorAdded(head); - } -} - -void DisplayWorker::onMonitorsBrightnessChanged(const BrightnessMap &brightness) -{ - if (brightness.isEmpty()) - return; - - for (auto it = m_monitors.begin(); it != m_monitors.end(); ++it) { - it.key()->setBrightness(brightness[it.key()->name()]); - } -} - -void DisplayWorker::onGetScaleFinished(QDBusPendingCallWatcher *w) -{ - QDBusPendingReply reply = w->reply(); - - m_model->setUIScale(reply); - - w->deleteLater(); -} - -void DisplayWorker::onGetScreenScalesFinished(QDBusPendingCallWatcher *w) -{ - QDBusPendingReply> reply = w->reply(); - QMap rmap = reply; - - for (auto &m : m_model->monitorList()) { - if (rmap.find(m->name()) != rmap.end()) { - m->setScale(rmap.value(m->name()) < 1.0 - ? m_model->uiScale() - : rmap.value(m->name())); - } - } - - w->deleteLater(); -} - -#ifndef DCC_DISABLE_ROTATE - -constexpr static int wlRotate2dcc(int wlRotate) { - switch (wlRotate) { - case WL_OUTPUT_TRANSFORM_NORMAL: - return 1; - case WL_OUTPUT_TRANSFORM_90: - return 2; - case WL_OUTPUT_TRANSFORM_180: - return 4; - case WL_OUTPUT_TRANSFORM_270: - return 8; - default: - qWarning("dcc dont support FLIPPED"); - return 0; - } -} - -constexpr static int dccRotate2wl(int dccRotate) { - switch (dccRotate) { - case 1: - return WL_OUTPUT_TRANSFORM_NORMAL; - case 2: - return WL_OUTPUT_TRANSFORM_90; - case 4: - return WL_OUTPUT_TRANSFORM_180; - case 8: - return WL_OUTPUT_TRANSFORM_270; - default: - qWarning("unkone dccRotate, feedback to normal"); - return WL_OUTPUT_TRANSFORM_NORMAL; - } -} - -void DisplayWorker::setMonitorRotate(Monitor *mon, const quint16 rotate) -{ - if (WQt::Utils::isTreeland()) { - auto *opCfg = m_reg->outputManager()->createConfiguration(); - for (auto it(m_wl_monitors.cbegin()); it != m_wl_monitors.cend(); ++it) { - if (!it.key()->enable()) { - opCfg->disableHead(it.value()); - continue; - } - auto *cfgHead = opCfg->enableHead(it.value()); - if (m_model->displayMode() == MERGE_MODE || it.key() == mon) { - cfgHead->setTransform(dccRotate2wl(rotate)); - } - } - opCfg->apply(); - } else { - if (m_model->displayMode() == MERGE_MODE) { - for (auto *m : m_monitors) { - m->SetRotation(rotate).waitForFinished(); - } - } else { - MonitorDBusProxy *inter = m_monitors.value(mon); - inter->SetRotation(rotate).waitForFinished(); - } - } -} -#endif - -void DisplayWorker::setPrimary(const QString &name) -{ - if (WQt::Utils::isTreeland()) { - m_reg->treeLandOutputManager()->setPrimaryOutput(name.toStdString().c_str());; - } else { - m_displayInter->SetPrimary(name); - } -} - -void DisplayWorker::setMonitorEnable(Monitor *monitor, const bool enable) -{ - if (WQt::Utils::isTreeland()) { - auto *opCfg = m_reg->outputManager()->createConfiguration(); - - for (auto it(m_wl_monitors.cbegin()); it != m_wl_monitors.cend(); ++it) { - if (it.key() == monitor) { - if (enable) { - auto *cfgHead = opCfg->enableHead(it.value()); - WQt::OutputMode *preferMode = nullptr; - for (auto *mode: it.value()->property(WQt::OutputHead::Modes).value>()) { - preferMode = mode; - if (mode->isPreferred()) - break; - } - cfgHead->setMode(preferMode); - } else { - opCfg->disableHead(it.value()); - } - } else { - if (!it.key()->enable()) { - opCfg->disableHead(it.value()); - } else { - opCfg->enableHead(it.value()); - } - } - } - opCfg->apply(); - } else { - MonitorDBusProxy *inter = m_monitors.value(monitor); - inter->Enable(enable).waitForFinished(); - applyChanges(); - } -} - -void DisplayWorker::applyChanges() -{ - if (!m_timer->isActive()) { - m_timer->start(); - } -} - -void DisplayWorker::setColorTemperature(int value) -{ - if (WQt::Utils::isTreeland()) { -#if GAMMA_SUPPORT - auto *gammaEffect = m_wl_gammaEffects->value(mon); - auto *gammaConfig = m_wl_gammaConfig->value(mon); - gammaConfig->temperature = value; - gammaEffect->setConfiguration(*gammaConfig); -#endif - } else { - m_displayInter->SetColorTemperature(value).waitForFinished(); - } -} - -void DisplayWorker::SetMethodAdjustCCT(int mode) -{ - m_displayInter->SetMethodAdjustCCT(mode); -} - -void DisplayWorker::setCurrentFillMode(Monitor *mon,const QString fillMode) -{ - if (WQt::Utils::isTreeland()) { - // TODO: support treeland - } else { - MonitorDBusProxy *inter = m_monitors.value(mon); - Q_ASSERT(inter); - inter->setCurrentFillMode(fillMode); - } -} - -void DisplayWorker::backupConfig() -{ - m_displayConfig = m_displayInter->GetConfig(); -} - -void DisplayWorker::clearBackup() -{ - m_displayConfig.clear(); -} - -void DisplayWorker::resetBackup() -{ - //TODO: can't use in treeland - if (!m_displayConfig.isEmpty()) { - - QJsonDocument doc = QJsonDocument::fromJson(m_displayConfig.toLatin1()); - QJsonObject jsonObj = doc.object(); - - QDateTime time = QDateTime::currentDateTime(); - int offset = time.offsetFromUtc()/60; - bool negative = offset <0; - if (negative) - offset = -offset; - - jsonObj.insert("UpdateAt", QString("%1%2%3:%4").arg(time.toString("yyyy-MM-ddThh:mm:ss.zzz000000")).arg(negative ? '-' : '+').arg(offset / 60, 2, 10, QChar('0')).arg(offset % 60, 2, 10, QChar('0'))); - doc.setObject(jsonObj); - - m_displayInter->SetConfig(doc.toJson(QJsonDocument::Compact)); - clearBackup(); - } -} - -void DisplayWorker::setMonitorResolution(Monitor *mon, const int mode) -{ - if (WQt::Utils::isTreeland()) { - auto *opCfg = m_reg->outputManager()->createConfiguration(); - auto res = mon->getResolutionById(mode); - if (!res.has_value()) - return; - - for (auto it(m_wl_monitors.cbegin()); it != m_wl_monitors.cend(); ++it) { - if (!it.key()->enable()) { - opCfg->disableHead(it.value()); - continue; - } - auto *cfgHead = opCfg->enableHead(it.value()); - if (it.key() == mon) { - for (auto *mode: it.value()->property(WQt::OutputHead::Modes).value>()) { - if (mode->size().width() == res.value().width() - && mode->size().height() == res.value().height() - && qFuzzyCompare(mode->refreshRate()*0.001, res.value().rate())) { - cfgHead->setMode(mode); - break; - } - } - } - } - opCfg->apply(); - } else { - MonitorDBusProxy *inter = m_monitors.value(mon); - if (inter) - inter->SetMode(static_cast(mode)).waitForFinished(); - } -} - -void DisplayWorker::setMonitorBrightness(Monitor *mon, const double brightness) -{ - if (WQt::Utils::isTreeland()) { -#if GAMMA_SUPPORT - auto *gammaEffect = m_wl_gammaEffects->value(mon); - auto *gammaConfig = m_wl_gammaConfig->value(mon); - gammaConfig->brightness = brightness; - gammaEffect->setConfiguration(*gammaConfig); -#endif - } else { - m_displayInter->SetAndSaveBrightness(mon->name(), std::max(brightness, m_model->minimumBrightnessScale())).waitForFinished(); - } -} - -void DisplayWorker::setMonitorPosition(QHash> monitorPosition) -{ - if (WQt::Utils::isTreeland()) { - auto *opCfg = m_reg->outputManager()->createConfiguration(); - for (auto it(monitorPosition.cbegin()); it != monitorPosition.cend(); ++it) { - auto *head = m_wl_monitors.value(it.key()); - Q_ASSERT(head); - if (!it.key()->enable()) { - opCfg->disableHead(head); - continue; - } - auto *cfgHead = opCfg->enableHead(head); - cfgHead->setPosition({ it.value().first, it.value().second }); - } - opCfg->apply(); - } else { - for (auto it(monitorPosition.cbegin()); it != monitorPosition.cend(); ++it) { - MonitorDBusProxy *inter = m_monitors.value(it.key()); - Q_ASSERT(inter); - inter->SetPosition(static_cast(it.value().first), static_cast(it.value().second)).waitForFinished(); - } - applyChanges(); - } -} - -void DisplayWorker::setUiScale(const double value) -{ - double rv = value; - if (rv < 0) - rv = m_model->uiScale(); - for (auto &mm : m_model->monitorList()) { - mm->setScale(-1); - } - - if (WQt::Utils::isTreeland()) { - auto *opCfg = m_reg->outputManager()->createConfiguration(); - for (auto it(m_wl_monitors.cbegin()); it != m_wl_monitors.cend(); ++it) { - if (!it.key()->enable()) { - opCfg->disableHead(it.value()); - continue; - } - auto *cfgHead = opCfg->enableHead(it.value()); - cfgHead->setScale(rv); - } - opCfg->apply(); - connect(opCfg, &WQt::OutputConfiguration::succeeded, this, [ this, rv ]() { - m_model->setUIScale(rv); - }); - } else { - QDBusPendingCall call = m_displayInter->SetScaleFactor(rv); - - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - watcher->waitForFinished(); - if (!watcher->isError()) { - m_model->setUIScale(rv); - } - watcher->deleteLater(); - } -} - -void DisplayWorker::setIndividualScaling(Monitor *m, const double scaling) -{ - if (m && scaling >= 1.0) { - m->setScale(scaling); - } else { - return; - } - - if (WQt::Utils::isTreeland()) { - auto *opCfg = m_reg->outputManager()->createConfiguration(); - for (auto it(m_wl_monitors.cbegin()); it != m_wl_monitors.cend(); ++it) { - if (!it.key()->enable()) { - opCfg->disableHead(it.value()); - continue; - } - auto *cfgHead = opCfg->enableHead(it.value()); - if (it.key() == m) { - cfgHead->setScale(scaling); - } - } - opCfg->apply(); - } else { - QMap scalemap; - for (Monitor *m : m_model->monitorList()) { - scalemap[m->name()] = m_model->monitorScale(m); - } - m_displayInter->SetScreenScaleFactors(scalemap); - } -} - -void DisplayWorker::setNightMode(const bool nightmode) -{ - if (WQt::Utils::isTreeland()) { - // TODO: support treeland - } else { - QProcess *process = new QProcess(this); - - QString cmd; - QString serverCmd; - if (nightmode) { - cmd = "start"; - serverCmd = "enable"; - } else { - cmd = "stop"; - serverCmd = "disable"; - } - - connect(process, static_cast(&QProcess::finished), process, &QProcess::deleteLater); - - process->start("bash", QStringList() << "-c" << QString("systemctl --user %1 redshift.service && systemctl --user %2 redshift.service").arg(serverCmd).arg(cmd)); - } -} - -void DisplayWorker::monitorAdded(const QString &path) -{ - MonitorDBusProxy *inter = new MonitorDBusProxy(path, this); - Monitor *mon = new Monitor(this); - - connect(inter, &MonitorDBusProxy::XChanged, mon, &Monitor::setX); - connect(inter, &MonitorDBusProxy::YChanged, mon, &Monitor::setY); - connect(inter, &MonitorDBusProxy::WidthChanged, mon, &Monitor::setW); - connect(inter, &MonitorDBusProxy::HeightChanged, mon, &Monitor::setH); - connect(inter, &MonitorDBusProxy::MmWidthChanged, mon, &Monitor::setMmWidth); - connect(inter, &MonitorDBusProxy::MmHeightChanged, mon, &Monitor::setMmHeight); - connect(inter, &MonitorDBusProxy::RotationChanged, mon, &Monitor::setRotate); - connect(inter, &MonitorDBusProxy::NameChanged, mon, &Monitor::setName); - connect(inter, &MonitorDBusProxy::CurrentModeChanged, mon, &Monitor::setCurrentMode); - connect(inter, &MonitorDBusProxy::BestModeChanged, mon, &Monitor::setBestMode); - connect(inter, &MonitorDBusProxy::CurrentModeChanged, this, [=](Resolution value) { - if (value.id() == 0) { - return; - } - auto maxWScale = value.width() / 1024.0; - auto maxHScale = value.height() / 768.0; - auto maxScale = maxWScale < maxHScale ? maxWScale : maxHScale; - if ((m_model->uiScale() - maxScale) > 0.01 && maxScale >= 1.0) { - m_currentScale = 1.0; - for (int idx = 0; idx * 0.25 + 1.0 <= maxScale; ++idx) { - m_currentScale = idx * 0.25 + 1.0; - } - m_updateScale = true; - } - }); - - connect(inter, &MonitorDBusProxy::ModesChanged, mon, &Monitor::setModeList); - connect(inter, &MonitorDBusProxy::RotationsChanged, mon, &Monitor::setRotateList); - connect(inter, &MonitorDBusProxy::EnabledChanged, mon, &Monitor::setMonitorEnable); - connect(inter, &MonitorDBusProxy::CurrentRotateModeChanged, mon, &Monitor::setCurrentRotateMode); - connect(inter, &MonitorDBusProxy::AvailableFillModesChanged, mon, &Monitor::setAvailableFillModes); - connect(inter, &MonitorDBusProxy::CurrentFillModeChanged, mon, &Monitor::setCurrentFillMode); - connect(m_displayInter, static_cast(&DisplayDBusProxy::PrimaryChanged), mon, &Monitor::setPrimary); - connect(this, &DisplayWorker::requestUpdateModeList, this, [=] { - mon->setModeList(inter->modes()); - }); - - // NOTE: DO NOT using async dbus call. because we need to have a unique name to distinguish each monitor - mon->setName(inter->name()); - mon->setManufacturer(inter->manufacturer()); - mon->setModel(inter->model()); - QDBusReply reply = m_displayInter->CanSetBrightnessSync(inter->name()); - mon->setCanBrightness(reply.value()); - mon->setMonitorEnable(inter->enabled()); - mon->setCurrentRotateMode(inter->currentRotateMode()); - mon->setMonitorEnable(inter->enabled()); - mon->setCurrentFillMode(inter->currentFillMode()); - mon->setAvailableFillModes(inter->availableFillModes()); - mon->setPath(path); - mon->setX(inter->x()); - mon->setY(inter->y()); - mon->setW(inter->width()); - mon->setH(inter->height()); - mon->setRotate(inter->rotation()); - mon->setCurrentMode(inter->currentMode()); - mon->setBestMode(inter->bestMode()); - mon->setModeList(inter->modes()); - if (m_model->isRefreshRateEnable() == false) { - for (auto resolutionModel : mon->modeList()) { - if (qFuzzyCompare(resolutionModel.rate(), 0.0) == false) { - m_model->setRefreshRateEnable(true); - } - } - } - mon->setRotateList(inter->rotations()); - mon->setPrimary(m_displayInter->primary()); - mon->setMmWidth(inter->mmWidth()); - mon->setMmHeight(inter->mmHeight()); - - if (!m_model->brightnessMap().isEmpty()) { - mon->setBrightness(m_model->brightnessMap()[mon->name()]); - } - - m_model->monitorAdded(mon); - m_monitors.insert(mon, inter); -} - -void DisplayWorker::monitorRemoved(const QString &path) -{ - Monitor *monitor = nullptr; - for (auto it(m_monitors.cbegin()); it != m_monitors.cend(); ++it) { - if (it.key()->path() == path) { - monitor = it.key(); - break; - } - } - if (!monitor) - return; - - m_model->monitorRemoved(monitor); - - m_monitors[monitor]->deleteLater(); - m_monitors.remove(monitor); - - monitor->deleteLater(); -} - -static inline Resolution createResolutionFromMode(WQt::OutputMode *mode) { - static int idcount = 0; - Resolution res; - res.m_id = ++idcount; - res.m_width = mode->size().width(); - res.m_height = mode->size().height(); - res.m_rate = mode->refreshRate() * 0.001; - return res; -} - -void DisplayWorker::wlMonitorAdded(WQt::OutputHead *head) -{ - Monitor *mon = new Monitor(this); - - connect(head, &WQt::OutputHead::finished, this, [head, this]() { - wlMonitorRemoved(head); - }); - - connect(head, &WQt::OutputHead::changed, mon, [mon, head](WQt::OutputHead::Property type) { - switch (type) { - case WQt::OutputHead::Name: - mon->setName(head->property(WQt::OutputHead::Name).toString()); - break; - case WQt::OutputHead::PhysicalSize: { - auto physicalSize = head->property(WQt::OutputHead::PhysicalSize).toSize(); - mon->setMmWidth(physicalSize.width()); - mon->setMmHeight(physicalSize.height()); - break; - } - case WQt::OutputHead::Modes: { - ResolutionList resolutionList; - for (auto *mode: head->property(WQt::OutputHead::Modes).value>()) { - Resolution res = createResolutionFromMode(mode); - resolutionList << res; - if (mode->isPreferred()) { - mon->setBestMode(res); - } - } - mon->setModeList(resolutionList); - break; - } - case WQt::OutputHead::CurrentMode: { - Resolution currentRes = createResolutionFromMode(head->property(WQt::OutputHead::CurrentMode).value()); - mon->setCurrentMode(currentRes); - mon->setW(currentRes.width()); - mon->setH(currentRes.height()); - break; - } - case WQt::OutputHead::Position: - mon->setX(head->property(WQt::OutputHead::Position).toPoint().x()); - mon->setY(head->property(WQt::OutputHead::Position).toPoint().y()); - break; - case WQt::OutputHead::Transform: - mon->setRotate(wlRotate2dcc(head->property(WQt::OutputHead::Transform).toInt())); - break; - case WQt::OutputHead::Scale: - mon->setScale(head->property(WQt::OutputHead::Scale).toFloat()); - break; - case WQt::OutputHead::Make: - mon->setManufacturer(head->property(WQt::OutputHead::Make).toString()); - break; - case WQt::OutputHead::Model: - mon->setModel(head->property(WQt::OutputHead::Model).toString()); - break; - case WQt::OutputHead::Enabled: - case WQt::OutputHead::Description: - case WQt::OutputHead::SerialNumber: - // Not handle - default: - break; - } - }); - - // TODO: where to get UI Scale for model - m_model->setUIScale(head->property(WQt::OutputHead::Scale).toFloat()); - mon->setScale(head->property(WQt::OutputHead::Scale).toFloat()); - - // NOTE: we need to have a unique name to distinguish each monitor - mon->setName(head->property(WQt::OutputHead::Name).toString()); - mon->setManufacturer(head->property(WQt::OutputHead::Make).toString()); - mon->setModel(head->property(WQt::OutputHead::Model).toString()); - mon->setMonitorEnable(head->property(WQt::OutputHead::Enabled).toBool()); - mon->setCanBrightness(true); - - mon->setX(head->property(WQt::OutputHead::Position).toPoint().x()); - mon->setY(head->property(WQt::OutputHead::Position).toPoint().y()); - - mon->setRotateList({1, 2, 4, 8}); - mon->setRotate(wlRotate2dcc(head->property(WQt::OutputHead::Transform).toInt())); - - ResolutionList resolutionList; - for (auto *mode: head->property(WQt::OutputHead::Modes).value>()) { - Resolution res = createResolutionFromMode(mode); - resolutionList << res; - if (mode->isPreferred()) { - mon->setBestMode(res); - } - } - mon->setModeList(resolutionList); - - Resolution currentRes = createResolutionFromMode(head->property(WQt::OutputHead::CurrentMode).value()); - mon->setCurrentMode(currentRes); - mon->setW(currentRes.width()); - mon->setH(currentRes.height()); - - if (m_model->isRefreshRateEnable() == false) { - for (auto resolutionModel : mon->modeList()) { - if (qFuzzyCompare(resolutionModel.rate(), 0.0) == false) { - m_model->setRefreshRateEnable(true); - } - } - } - mon->setPrimary(m_reg->treeLandOutputManager()->mPrimaryOutput); - - auto physicalSize = head->property(WQt::OutputHead::PhysicalSize).toSize(); - mon->setMmWidth(physicalSize.width()); - mon->setMmHeight(physicalSize.height()); - - - m_model->monitorAdded(mon); - m_wl_monitors.insert(mon, head); - -#if GAMMA_SUPPORT - auto *gammaMgr = m_reg->gammaControlManager(); - auto *gammaEffect = new DFL::GammaEffects(gammaMgr->getGammaControl(op->get())); - auto *effectsConfig = new DFL::GammaEffectsConfig; - effectsConfig->mode = 0x8EC945; - effectsConfig->gamma = 0.5; - effectsConfig->brightness = 0.3; - effectsConfig->minTemp = 4000; - effectsConfig->maxTemp = 6500; - effectsConfig->temperature = 6500; - effectsConfig->latitude = 0; // How to get - effectsConfig->longitude = 0; - effectsConfig->sunrise = QTime( 6, 30, 0 ); - effectsConfig->sunset = QTime( 18, 30, 0 ); - effectsConfig->whitepoint = { 0, 0, 0 }; - - // gammaEffect->setConfiguration(config); - m_wl_gammaEffects->insert(mon, gammaEffect); - m_wl_gammaConfig->insert(mon, effectsConfig); -#endif -} - -void DisplayWorker::wlMonitorRemoved(WQt::OutputHead *head) -{ - Monitor *monitor = nullptr; - for (auto it(m_wl_monitors.cbegin()); it != m_wl_monitors.cend(); ++it) { - if (it.value() == head) { - monitor = it.key(); - break; - } - } - if (!monitor) - return; - - m_model->monitorRemoved(monitor); - -#if GAMMA_SUPPORT - //delete m_wl_gammaConfig[monitor]; - //delete m_wl_gammaEffects[monitor]; -#endif - head->deleteLater(); - - m_wl_monitors.remove(monitor); - - monitor->deleteLater(); -} - -void DisplayWorker::setAmbientLightAdjustBrightness(bool able) -{ - m_displayInter->setAmbientLightAdjustBrightness(able); -} - -void DisplayWorker::setTouchScreenAssociation(const QString &monitor, const QString &touchscreenUUID) -{ - m_displayInter->AssociateTouch(monitor, touchscreenUUID); -} - -void DisplayWorker::setMonitorResolutionBySize(Monitor *mon, const int width, const int height) -{ - if (WQt::Utils::isTreeland()) { - auto *opCfg = m_reg->outputManager()->createConfiguration(); - for (auto it(m_wl_monitors.cbegin()); it != m_wl_monitors.cend(); ++it) { - if (!it.key()->enable()) { - opCfg->disableHead(it.value()); - continue; - } - auto *cfgHead = opCfg->enableHead(it.value()); - if (it.key() == mon) - cfgHead->setCustomMode({width, height}, mon->currentMode().rate()); - } - opCfg->apply(); - } else { - MonitorDBusProxy *inter = m_monitors.value(mon); - Q_ASSERT(inter); - - QDBusPendingCall call = inter->SetModeBySize(static_cast(width), static_cast(height)); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - qCDebug(DdcDisplayWorker) << call.error().message(); - } - watcher->deleteLater(); - }); - watcher->waitForFinished(); - } -} diff --git a/dcc-old/src/plugin-display/operation/displayworker.h b/dcc-old/src/plugin-display/operation/displayworker.h deleted file mode 100644 index 26de22988d..0000000000 --- a/dcc-old/src/plugin-display/operation/displayworker.h +++ /dev/null @@ -1,113 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2024 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DISPLAYWORKER_H -#define DISPLAYWORKER_H - -#include "interface/namespace.h" -#include "displaydbusproxy.h" -#include "monitor.h" - -#include - -#include -#include -#include - -#define GAMMA_SUPPORT false -/* - * Disable gamma support for treeland now - * We can't keep GammaTable when dde-control-center close - * We need write a daemon in future - */ - -DCORE_BEGIN_NAMESPACE -class DConfig; -DCORE_END_NAMESPACE - -namespace WQt { - class Output; - class Registry; - class OutputHead; -} - -namespace DCC_NAMESPACE { -class DisplayModel; -class DisplayWorker : public QObject -{ - Q_OBJECT - -public: - explicit DisplayWorker(DisplayModel *model, QObject *parent = nullptr, bool isSync = false); - ~DisplayWorker(); - - void active(); - -public Q_SLOTS: - void saveChanges(); - void switchMode(const int mode, const QString &name); - void setPrimary(const QString &name); - void setMonitorEnable(Monitor *monitor, const bool enable); - void applyChanges(); - void setColorTemperature(int value); - void SetMethodAdjustCCT(int mode); -#ifndef DCC_DISABLE_ROTATE - void setMonitorRotate(Monitor *mon, const quint16 rotate); -#endif - void setMonitorResolution(Monitor *mon, const int mode); - void setMonitorBrightness(Monitor *mon, const double brightness); - void setMonitorPosition(QHash> monitorPosition); - void setUiScale(const double value); - void setIndividualScaling(Monitor *m, const double scaling); - void setNightMode(const bool nightmode); - void setTouchScreenAssociation(const QString &monitor, const QString &touchscreenUUID); - void setMonitorResolutionBySize(Monitor *mon, const int width, const int height); - void setAmbientLightAdjustBrightness(bool); - void setCurrentFillMode(Monitor *mon, const QString fillMode); - - void backupConfig(); - void clearBackup(); - void resetBackup(); - -private Q_SLOTS: - void onMonitorListChanged(const QList &mons); - void onMonitorsBrightnessChanged(const BrightnessMap &brightness); - void onGetScaleFinished(QDBusPendingCallWatcher *w); - void onGetScreenScalesFinished(QDBusPendingCallWatcher *w); - - // for wlroots-based compositors - void onWlMonitorListChanged(); - -private: - void monitorAdded(const QString &path); - void monitorRemoved(const QString &path); - - // for wlroots-based compositors - void wlMonitorAdded(WQt::OutputHead *head); - void wlMonitorRemoved(WQt::OutputHead *head); - -Q_SIGNALS: - void requestUpdateModeList(); - -private: - DisplayModel *m_model; - DisplayDBusProxy *m_displayInter; - QMap m_monitors; - - // for wlroots-based compositors - WQt::Registry *m_reg { nullptr }; - QMap m_wl_monitors; -#if GAMMA_SUPPORT - QMap *m_wl_gammaEffects; - QMap *m_wl_gammaConfig; -#endif - - double m_currentScale; - bool m_updateScale; - QTimer *m_timer; - DTK_CORE_NAMESPACE::DConfig *m_dconfig; - QString m_displayConfig; -}; -} - -#endif // DISPLAYWORKER_H diff --git a/dcc-old/src/plugin-display/operation/monitor.cpp b/dcc-old/src/plugin-display/operation/monitor.cpp deleted file mode 100644 index f0ef7693a0..0000000000 --- a/dcc-old/src/plugin-display/operation/monitor.cpp +++ /dev/null @@ -1,294 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "monitor.h" - -#include -#include - - -using namespace DCC_NAMESPACE; -const double DoubleZero = 0.000001; - -Monitor::Monitor(QObject *parent) - : QObject(parent) - , m_x(0) - , m_y(0) - , m_w(0) - , m_h(0) - , m_mmWidth(0) - , m_mmHeight(0) - , m_scale(-1.0) - , m_rotate(0) - , m_brightness(1.0) - , m_enable(false) - , m_canBrightness(true) - , m_screenSensingMode(RotateMode::Normal) -{ -} - -void Monitor::setX(const int x) -{ - if (m_x == x) - return; - - m_x = x; - - Q_EMIT xChanged(m_x); - Q_EMIT geometryChanged(); -} - -void Monitor::setY(const int y) -{ - if (m_y == y) - return; - - m_y = y; - - Q_EMIT yChanged(m_y); - Q_EMIT geometryChanged(); -} - -void Monitor::setW(const int w) -{ - if (m_w == w) - return; - - m_w = w; - - Q_EMIT wChanged(m_w); -} - -void Monitor::setH(const int h) -{ - if (m_h == h) - return; - - m_h = h; - - Q_EMIT hChanged(m_h); -} - -void Monitor::setMmWidth(const uint mmWidth) -{ - m_mmWidth = mmWidth; -} - -void Monitor::setMmHeight(const uint mmHeight) -{ - m_mmHeight = mmHeight; -} - -void Monitor::setScale(const double scale) -{ - if (fabs(m_scale - scale) < DoubleZero) - return; - - m_scale = scale; - - Q_EMIT scaleChanged(m_scale); -} - -void Monitor::setPrimary(const QString &primaryName) -{ - m_primary = primaryName; -} - -void Monitor::setRotate(const quint16 rotate) -{ - if (m_rotate == rotate) - return; - - m_rotate = rotate; - - Q_EMIT rotateChanged(m_rotate); -} - -void Monitor::setBrightness(const double brightness) -{ - if (fabs(m_brightness - brightness) < DoubleZero) - return; - - m_brightness = brightness; - - Q_EMIT brightnessChanged(m_brightness); -} - -void Monitor::setName(const QString &name) -{ - m_name = name; -} - -void Monitor::setManufacturer(const QString &manufacturer) -{ - m_manufacturer = manufacturer; -} - -void Monitor::setModel(const QString &model) -{ - m_model = model; -} - -void Monitor::setCanBrightness(bool canBrightness) -{ - m_canBrightness = canBrightness; -} - -void Monitor::setPath(const QString &path) -{ - m_path = path; -} - -void Monitor::setRotateList(const QList &rotateList) -{ - m_rotateList = rotateList; -} - -void Monitor::setCurrentMode(const Resolution &resolution) -{ - m_currentMode = resolution; - - Q_EMIT currentModeChanged(m_currentMode); -} - -bool compareResolution(const Resolution &first, const Resolution &second) -{ - long firstSum = long(first.width()) * first.height(); - long secondSum = long(second.width()) * second.height(); - if (firstSum > secondSum - || (firstSum == secondSum && (first.rate() - second.rate()) > 0.000001)) { - return true; - } - - return false; -} - -void Monitor::setModeList(const ResolutionList &modeList) -{ - m_modeList.clear(); - - QList miniMode; - miniMode << 1024 << 768; - - for (auto m : modeList) { - if (m.width() >= miniMode.at(0) && m.height() >= miniMode.at(1)) { - m_modeList.append(m); - } - } - std::sort(m_modeList.begin(), m_modeList.end(), compareResolution); - - Q_EMIT modelListChanged(m_modeList); -} - - -void Monitor::setAvailableFillModes(const QStringList &fillModeList) -{ - if (m_fillModeList == fillModeList) - return; - - m_fillModeList = fillModeList; - Q_EMIT availableFillModesChanged(m_fillModeList); -} - -void Monitor::setCurrentFillMode(const QString currentFillMode) -{ - if (m_currentFillMode == currentFillMode) - return; - - m_currentFillMode = currentFillMode; - Q_EMIT currentFillModeChanged(currentFillMode); -} - -void Monitor::setMonitorEnable(bool enable) -{ - if (m_enable == enable) - return; - - m_enable = enable; - Q_EMIT enableChanged(enable); -} - -void Monitor::setBestMode(const Resolution &mode) -{ - if (m_bestMode == mode) - return; - m_bestMode = mode; - - Q_EMIT bestModeChanged(); -} - -void Monitor::setCurrentRotateMode(const unsigned char mode) -{ - RotateMode screenDate = static_cast(mode); - if (screenDate == RotateMode::Gravity) - Q_EMIT currentRotateModeChanged(); - - if (m_screenSensingMode != screenDate) { - m_screenSensingMode = screenDate; - } -} - -bool Monitor::isSameResolution(const Resolution &r1, const Resolution &r2) -{ - return r1.width() == r2.width() && r1.height() == r2.height(); -} - -bool Monitor::isSameRatefresh(const Resolution &r1, const Resolution &r2) -{ - return fabs(r1.rate() - r2.rate()) < 0.000001; -} - -bool Monitor::hasResolution(const Resolution &r) -{ - for (auto m : m_modeList) { - if (isSameResolution(m, r)) { - return true; - } - } - - return false; -} - -bool Monitor::hasResolutionAndRate(const Resolution &r) -{ - for (auto m : m_modeList) { - if (fabs(m.rate() - r.rate()) < 0.000001 && m.width() == r.width() && m.height() == r.height()) { - return true; - } - } - - return false; -} - -bool Monitor::hasRatefresh(const double r) -{ - for (auto m : m_modeList) { - if (fabs(m.rate() - r) < 0.000001) { - return true; - } - } - - return false; -} - -QScreen *Monitor::getQScreen() -{ - auto screens = QGuiApplication::screens(); - - for(auto screen : screens) { - //x11下,qt获取的名字和后端给的名字一致 wayland下,qt获取的序列号中包含名称 - if(screen->name() == name() || screen->model().contains(name())) - return screen; - } - - return nullptr; -} - -std::optional Monitor::getResolutionById(quint32 id) -{ - for (auto res : m_modeList) { - if (res.id() == id) - return res; - } - return std::nullopt; -} diff --git a/dcc-old/src/plugin-display/operation/monitor.h b/dcc-old/src/plugin-display/operation/monitor.h deleted file mode 100644 index b7e593246a..0000000000 --- a/dcc-old/src/plugin-display/operation/monitor.h +++ /dev/null @@ -1,151 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MONITOR_H -#define MONITOR_H - -#include "interface/namespace.h" -#include "monitordbusproxy.h" - -#include -#include - -#include - -namespace DCC_NAMESPACE { - -class DisplayWorker; -class TouchscreenWorker; -class Monitor : public QObject -{ - Q_OBJECT - friend class DisplayWorker; - friend class TouchscreenWorker; - -public: - enum RotateMode { - Normal, - Gravity, - Rotate - }; - -public: - explicit Monitor(QObject *parent = 0); - - inline int x() const { return m_x; } - inline int y() const { return m_y; } - inline int w() const { return m_w; } - inline int h() const { return m_h; } - inline int mmWidth() const { return m_mmWidth; } - inline int mmHeight() const { return m_mmHeight; } - inline double scale() const { return m_scale; } - inline bool isPrimary() const { return m_primary == m_name; } - inline quint16 rotate() const { return m_rotate; } - inline double brightness() const { return m_brightness; } - inline const QRect rect() const { return QRect(m_x, m_y, m_w, m_h); } - inline const QString name() const - { - Q_ASSERT(!m_name.isEmpty()); - return m_name; - } - inline const QString manufacturer() const - { - Q_ASSERT(!m_manufacturer.isEmpty()); - return m_manufacturer; - } - inline const QString model() const - { - Q_ASSERT(!m_model.isEmpty()); - return m_model; - } - inline bool canBrightness() const { return m_canBrightness; } - inline const QString path() const { return m_path; } - inline const Resolution currentMode() const { return m_currentMode; } - inline const QList rotateList() const { return m_rotateList; } - inline const QList modeList() const { return m_modeList; } - inline bool enable() const { return m_enable; } - inline QStringList availableFillModes() const { return m_fillModeList; } - inline QString currentFillMode() const { return m_currentFillMode; } - inline const Resolution bestMode() const { return m_bestMode; } - inline RotateMode currentRotateMode() const { return m_screenSensingMode; } - -Q_SIGNALS: - void geometryChanged() const; - void xChanged(const int x) const; - void yChanged(const int y) const; - void wChanged(const int w) const; - void hChanged(const int h) const; - void scaleChanged(const double scale) const; - void rotateChanged(const quint16 rotate) const; - void brightnessChanged(const double brightness) const; - void currentModeChanged(const Resolution &resolution) const; - void modelListChanged(const QList &resolution) const; - void enableChanged(bool enable) const; - void bestModeChanged() const; - void availableFillModesChanged(const QStringList &fillModeList); - // TODO: 重力旋转 - void currentRotateModeChanged() const; - void currentFillModeChanged(QString currentFillMode) const; - -public: - static bool isSameResolution(const Resolution &r1, const Resolution &r2); - static bool isSameRatefresh(const Resolution &r1, const Resolution &r2); - bool hasResolution(const Resolution &r); - bool hasResolutionAndRate(const Resolution &r); - bool hasRatefresh(const double r); - QScreen *getQScreen(); - -private Q_SLOTS: - void setX(const int x); - void setY(const int y); - void setW(const int w); - void setH(const int h); - void setMmWidth(const uint mmWidth); - void setMmHeight(const uint mmHeight); - void setScale(const double scale); - void setPrimary(const QString &primaryName); - void setRotate(const quint16 rotate); - void setBrightness(const double brightness); - void setName(const QString &name); - void setManufacturer(const QString &manufacturer); - void setModel(const QString &model); - void setCanBrightness(bool canBrightness); - void setPath(const QString &path); - void setRotateList(const QList &rotateList); - void setCurrentMode(const Resolution &resolution); - void setModeList(const ResolutionList &modeList); - void setMonitorEnable(bool enable); - void setBestMode(const Resolution &mode); - void setCurrentRotateMode(const unsigned char mode); - void setAvailableFillModes(const QStringList &fillModeList); - void setCurrentFillMode(const QString currentFillMode); - std::optional getResolutionById(quint32 id); - -private: - int m_x; - int m_y; - int m_w; - int m_h; - uint m_mmWidth; - uint m_mmHeight; - double m_scale; - quint16 m_rotate; - double m_brightness; - QString m_name; - QString m_manufacturer; - QString m_model; - QString m_path; - QString m_primary; - Resolution m_currentMode; - QList m_rotateList; - QList m_modeList; - bool m_enable; - bool m_canBrightness; - Resolution m_bestMode; - RotateMode m_screenSensingMode; - QStringList m_fillModeList; - QString m_currentFillMode; -}; -} - -#endif // MONITOR_H diff --git a/dcc-old/src/plugin-display/operation/monitordbusproxy.cpp b/dcc-old/src/plugin-display/operation/monitordbusproxy.cpp deleted file mode 100644 index 6a8dc20d4f..0000000000 --- a/dcc-old/src/plugin-display/operation/monitordbusproxy.cpp +++ /dev/null @@ -1,216 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "monitordbusproxy.h" - -#include -#include -#include -#include -#include -#include - -const static QString MonitorService = "org.deepin.dde.Display1"; -const static QString MonitorInterface = "org.deepin.dde.Display1.Monitor"; - -const static QString PropertiesInterface = "org.freedesktop.DBus.Properties"; -const static QString PropertiesChanged = "PropertiesChanged"; - -MonitorDBusProxy::MonitorDBusProxy(QString monitorPath, QObject *parent) - : QObject(parent) - , m_monitorUserPath(monitorPath) -{ - registerResolutionMetaType(); - registerReflectListMetaType(); - registerRotationListMetaType(); - registerResolutionListMetaType(); - - init(); -} - -void MonitorDBusProxy::init() -{ - m_dBusMonitorInter = new QDBusInterface(MonitorService, m_monitorUserPath, MonitorInterface, QDBusConnection::sessionBus(), this); - m_dBusMonitorPropertiesInter = new QDBusInterface(MonitorService, m_monitorUserPath, PropertiesInterface, QDBusConnection::sessionBus(), this); - QDBusConnection dbusConnection = m_dBusMonitorInter->connection(); - dbusConnection.connect(MonitorService, m_monitorUserPath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); -} - -QStringList MonitorDBusProxy::availableFillModes() -{ - return qvariant_cast(m_dBusMonitorInter->property("AvailableFillModes")); -} - -Resolution MonitorDBusProxy::bestMode() -{ - Resolution val; - m_dBusMonitorPropertiesInter->call("Get", MonitorInterface, "BestMode").arguments().at(0).value().variant().value() >> val; - return val; -} - -bool MonitorDBusProxy::connected() -{ - return qvariant_cast(m_dBusMonitorInter->property("Connected")); -} - -QString MonitorDBusProxy::currentFillMode() -{ - return qvariant_cast(m_dBusMonitorInter->property("CurrentFillMode")); -} - -void MonitorDBusProxy::setCurrentFillMode(const QString &value) -{ - m_dBusMonitorInter->setProperty("CurrentFillMode", QVariant::fromValue(value)); -} - -Resolution MonitorDBusProxy::currentMode() -{ - Resolution val; - m_dBusMonitorPropertiesInter->call("Get", MonitorInterface, "CurrentMode").arguments().at(0).value().variant().value() >> val; - return val; -} - -uchar MonitorDBusProxy::currentRotateMode() -{ - return qvariant_cast(m_dBusMonitorInter->property("CurrentRotateMode")); -} - -bool MonitorDBusProxy::enabled() -{ - return qvariant_cast(m_dBusMonitorInter->property("Enabled")); -} - -ushort MonitorDBusProxy::height() -{ - return qvariant_cast(m_dBusMonitorInter->property("Height")); -} - -QString MonitorDBusProxy::manufacturer() -{ - return qvariant_cast(m_dBusMonitorInter->property("Manufacturer")); -} - -uint MonitorDBusProxy::mmHeight() -{ - return qvariant_cast(m_dBusMonitorInter->property("MmHeight")); -} - -uint MonitorDBusProxy::mmWidth() -{ - return qvariant_cast(m_dBusMonitorInter->property("MmWidth")); -} - -QString MonitorDBusProxy::model() -{ - return qvariant_cast(m_dBusMonitorInter->property("Model")); -} - -ResolutionList MonitorDBusProxy::modes() -{ - ResolutionList val; - m_dBusMonitorPropertiesInter->call("Get", MonitorInterface, "Modes").arguments().at(0).value().variant().value() >> val; - return val; -} - -QString MonitorDBusProxy::name() -{ - return qvariant_cast(m_dBusMonitorInter->property("Name")); -} - -ushort MonitorDBusProxy::reflect() -{ - return qvariant_cast(m_dBusMonitorInter->property("Reflect")); -} - -ReflectList MonitorDBusProxy::reflects() -{ - return qvariant_cast(m_dBusMonitorPropertiesInter->call("Get", MonitorInterface, "Reflects").arguments().at(0).value().variant()); -} - -double MonitorDBusProxy::refreshRate() -{ - return qvariant_cast(m_dBusMonitorInter->property("RefreshRate")); -} - -ushort MonitorDBusProxy::rotation() -{ - return qvariant_cast(m_dBusMonitorInter->property("Rotation")); -} - -RotationList MonitorDBusProxy::rotations() -{ - return qvariant_cast(m_dBusMonitorPropertiesInter->call("Get", MonitorInterface, "Rotations").arguments().at(0).value().variant()); -} - -ushort MonitorDBusProxy::width() -{ - return qvariant_cast(m_dBusMonitorInter->property("Width")); -} - -short MonitorDBusProxy::x() -{ - return qvariant_cast(m_dBusMonitorInter->property("X")); -} - -short MonitorDBusProxy::y() -{ - return qvariant_cast(m_dBusMonitorInter->property("Y")); -} - -QDBusPendingReply<> MonitorDBusProxy::Enable(bool in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusMonitorInter->asyncCallWithArgumentList(QStringLiteral("Enable"), argumentList); -} - -QDBusPendingReply<> MonitorDBusProxy::SetMode(uint in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusMonitorInter->asyncCallWithArgumentList(QStringLiteral("SetMode"), argumentList); -} - -QDBusPendingReply<> MonitorDBusProxy::SetModeBySize(ushort in0, ushort in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusMonitorInter->asyncCallWithArgumentList(QStringLiteral("SetModeBySize"), argumentList); -} - -QDBusPendingReply<> MonitorDBusProxy::SetPosition(short in0, short in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusMonitorInter->asyncCallWithArgumentList(QStringLiteral("SetPosition"), argumentList); -} - -QDBusPendingReply<> MonitorDBusProxy::SetReflect(ushort in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusMonitorInter->asyncCallWithArgumentList(QStringLiteral("SetReflect"), argumentList); -} - -QDBusPendingReply<> MonitorDBusProxy::SetRotation(ushort in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusMonitorInter->asyncCallWithArgumentList(QStringLiteral("SetRotation"), argumentList); -} - -void MonitorDBusProxy::onPropertiesChanged(const QDBusMessage &message) -{ - QVariantMap changedProps = qdbus_cast(message.arguments().at(1).value()); - for (QVariantMap::const_iterator it = changedProps.begin(); it != changedProps.end(); ++it) { - if(it.key() =="CurrentMode") { - emit CurrentModeChanged(qdbus_cast(changedProps.value(it.key()))); - } else if(it.key() =="BestMode") { - emit BestModeChanged(qdbus_cast(changedProps.value(it.key()))); - } else if(it.key() =="Modes") { - emit ModesChanged(qdbus_cast(changedProps.value(it.key()))); - } else { - QMetaObject::invokeMethod(this, it.key().toLatin1() + "Changed", Qt::DirectConnection, QGenericArgument(it.value().typeName(), it.value().data())); - } - } -} diff --git a/dcc-old/src/plugin-display/operation/monitordbusproxy.h b/dcc-old/src/plugin-display/operation/monitordbusproxy.h deleted file mode 100644 index e4cdbf118e..0000000000 --- a/dcc-old/src/plugin-display/operation/monitordbusproxy.h +++ /dev/null @@ -1,140 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MONITORDBUSPROXY_H -#define MONITORDBUSPROXY_H - -#include "types/resolutionlist.h" -#include "types/reflectlist.h" -#include "types/rotationlist.h" -#include "types/resolution.h" - - -#include -#include -#include - -class QDBusInterface; -class QDBusMessage; - -class MonitorDBusProxy : public QObject -{ - Q_OBJECT -public: - static inline const char *staticInterfaceName() - { return "org.deepin.dde.Display1.Monitor"; } - -public: - explicit MonitorDBusProxy(QString monitorPath, QObject *parent = nullptr); - Q_PROPERTY(QStringList AvailableFillModes READ availableFillModes NOTIFY AvailableFillModesChanged) - QStringList availableFillModes(); - - Q_PROPERTY(Resolution BestMode READ bestMode NOTIFY BestModeChanged) - Resolution bestMode(); - - Q_PROPERTY(bool Connected READ connected NOTIFY ConnectedChanged) - bool connected(); - - Q_PROPERTY(QString CurrentFillMode READ currentFillMode WRITE setCurrentFillMode NOTIFY CurrentFillModeChanged) - QString currentFillMode(); - void setCurrentFillMode(const QString &value); - - Q_PROPERTY(Resolution CurrentMode READ currentMode NOTIFY CurrentModeChanged) - Resolution currentMode(); - - Q_PROPERTY(uchar CurrentRotateMode READ currentRotateMode NOTIFY CurrentRotateModeChanged) - uchar currentRotateMode(); - - Q_PROPERTY(bool Enabled READ enabled NOTIFY EnabledChanged) - bool enabled(); - - Q_PROPERTY(ushort Height READ height NOTIFY HeightChanged) - ushort height(); - - Q_PROPERTY(QString Manufacturer READ manufacturer NOTIFY ManufacturerChanged) - QString manufacturer(); - - Q_PROPERTY(uint MmHeight READ mmHeight NOTIFY MmHeightChanged) - uint mmHeight(); - - Q_PROPERTY(uint MmWidth READ mmWidth NOTIFY MmWidthChanged) - uint mmWidth(); - - Q_PROPERTY(QString Model READ model NOTIFY ModelChanged) - QString model(); - - Q_PROPERTY(ResolutionList Modes READ modes NOTIFY ModesChanged) - ResolutionList modes(); - - Q_PROPERTY(QString Name READ name NOTIFY NameChanged) - QString name(); - - Q_PROPERTY(ushort Reflect READ reflect NOTIFY ReflectChanged) - ushort reflect(); - - Q_PROPERTY(ReflectList Reflects READ reflects NOTIFY ReflectsChanged) - ReflectList reflects(); - - Q_PROPERTY(double RefreshRate READ refreshRate NOTIFY RefreshRateChanged) - double refreshRate(); - - Q_PROPERTY(ushort Rotation READ rotation NOTIFY RotationChanged) - ushort rotation(); - - Q_PROPERTY(RotationList Rotations READ rotations NOTIFY RotationsChanged) - RotationList rotations(); - - Q_PROPERTY(ushort Width READ width NOTIFY WidthChanged) - ushort width(); - - Q_PROPERTY(short X READ x NOTIFY XChanged) - short x(); - - Q_PROPERTY(short Y READ y NOTIFY YChanged) - short y(); - -private: - void init(); - -public Q_SLOTS: // METHODS - QDBusPendingReply<> Enable(bool in0); - QDBusPendingReply<> SetMode(uint in0); - QDBusPendingReply<> SetModeBySize(ushort in0, ushort in1); - QDBusPendingReply<> SetPosition(short in0, short in1); - QDBusPendingReply<> SetReflect(ushort in0); - QDBusPendingReply<> SetRotation(ushort in0); - - void onPropertiesChanged(const QDBusMessage &message); - -Q_SIGNALS: // SIGNALS - // begin property changed signals - void AvailableFillModesChanged(const QStringList & value) const; - void BestModeChanged(Resolution value) const; - void ConnectedChanged(bool value) const; - void CurrentFillModeChanged(const QString & value) const; - void CurrentModeChanged(Resolution value) const; - void CurrentRotateModeChanged(uchar value) const; - void EnabledChanged(bool value) const; - void HeightChanged(ushort value) const; - void ManufacturerChanged(const QString & value) const; - void MmHeightChanged(uint value) const; - void MmWidthChanged(uint value) const; - void ModelChanged(const QString & value) const; - void ModesChanged(ResolutionList value) const; - void NameChanged(const QString & value) const; - void ReflectChanged(ushort value) const; - void ReflectsChanged(ReflectList value) const; - void RefreshRateChanged(double value) const; - void RotationChanged(ushort value) const; - void RotationsChanged(RotationList value) const; - void WidthChanged(ushort value) const; - void XChanged(short value) const; - void YChanged(short value) const; - -private: - QDBusInterface *m_dBusMonitorInter; - QDBusInterface *m_dBusMonitorPropertiesInter; - QString m_monitorUserPath; -}; - -#endif // MONITORDBUSPROXY_H diff --git a/dcc-old/src/plugin-display/operation/qrc/actions/dcc_break_32px.svg b/dcc-old/src/plugin-display/operation/qrc/actions/dcc_break_32px.svg deleted file mode 100644 index 7dbd04a494..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/actions/dcc_break_32px.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - 断开 - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/actions/dcc_brightnesshigh_32px.svg b/dcc-old/src/plugin-display/operation/qrc/actions/dcc_brightnesshigh_32px.svg deleted file mode 100644 index baeb9afcda..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/actions/dcc_brightnesshigh_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/actions/dcc_brightnesslow_32px.svg b/dcc-old/src/plugin-display/operation/qrc/actions/dcc_brightnesslow_32px.svg deleted file mode 100644 index c5a11a1674..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/actions/dcc_brightnesslow_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_bottom.dci b/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_bottom.dci deleted file mode 100644 index 10c0524ce4..0000000000 Binary files a/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_bottom.dci and /dev/null differ diff --git a/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_left.dci b/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_left.dci deleted file mode 100644 index 213fe1a12b..0000000000 Binary files a/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_left.dci and /dev/null differ diff --git a/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_right.dci b/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_right.dci deleted file mode 100644 index c97e80d9c9..0000000000 Binary files a/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_right.dci and /dev/null differ diff --git a/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_top.dci b/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_top.dci deleted file mode 100644 index 87c8b986c6..0000000000 Binary files a/dcc-old/src/plugin-display/operation/qrc/built-in-icons/dcc_display_top.dci and /dev/null differ diff --git a/dcc-old/src/plugin-display/operation/qrc/display.qrc b/dcc-old/src/plugin-display/operation/qrc/display.qrc deleted file mode 100644 index 076aad6478..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/display.qrc +++ /dev/null @@ -1,45 +0,0 @@ - - - icons/dcc_nav_display_42px.svg - icons/dcc_nav_display_84px.svg - actions/dcc_break_32px.svg - actions/dcc_brightnesslow_32px.svg - actions/dcc_brightnesshigh_32px.svg - - - icons/dark/icons/dark/Center.svg - icons/dark/icons/dark/Fit.svg - icons/dark/icons/dark/Stretch.svg - icons/dark/icons/white/Center.svg - icons/dark/icons/white/Fit.svg - icons/dark/icons/white/Stretch.svg - icons/dark/icons/hover/Center.svg - icons/dark/icons/hover/Fit.svg - icons/dark/icons/hover/Stretch.svg - icons/light/icon/black/Center.svg - icons/light/icon/black/Fit.svg - icons/light/icon/black/Stretch.svg - icons/light/icon/light/Center.svg - icons/light/icon/light/Fit.svg - icons/light/icon/light/Stretch.svg - icons/light/icon/white/Center.svg - icons/light/icon/white/Fit.svg - icons/light/icon/white/Stretch.svg - icons/light/icon/hover/Center.svg - icons/light/icon/hover/Fit.svg - icons/light/icon/hover/Stretch.svg - icons/dark/icons/dark/Default.svg - icons/dark/icons/hover/Default.svg - icons/dark/icons/white/Default.svg - icons/light/icon/black/Default.svg - icons/light/icon/hover/Default.svg - icons/light/icon/light/Default.svg - icons/light/icon/white/Default.svg - - - built-in-icons/dcc_display_bottom.dci - built-in-icons/dcc_display_left.dci - built-in-icons/dcc_display_right.dci - built-in-icons/dcc_display_top.dci - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Center.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Center.svg deleted file mode 100644 index a26a5f8015..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Center.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Default.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Default.svg deleted file mode 100644 index 9886cd675c..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Default.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 默认-深色 - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Fit.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Fit.svg deleted file mode 100644 index 8a49cf9eec..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Fit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Stretch.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Stretch.svg deleted file mode 100644 index 98f4a6cddd..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/dark/Stretch.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Center.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Center.svg deleted file mode 100644 index 31b8413e1d..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Center.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 居中-深色hover - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Default.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Default.svg deleted file mode 100644 index 970f37980a..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Default.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 默认-白色 - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Fit.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Fit.svg deleted file mode 100644 index f1a6186201..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Fit.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 拉伸-深色hover - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Stretch.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Stretch.svg deleted file mode 100644 index 1b8d3478ab..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/hover/Stretch.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 适应-深色hover - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Center.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Center.svg deleted file mode 100644 index ee7248ae17..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Center.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Default.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Default.svg deleted file mode 100644 index 970f37980a..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Default.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 默认-白色 - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Fit.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Fit.svg deleted file mode 100644 index 55daa8d1bb..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Fit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Stretch.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Stretch.svg deleted file mode 100644 index 653155ed39..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dark/icons/white/Stretch.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dcc_nav_display_42px.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dcc_nav_display_42px.svg deleted file mode 100644 index 7e2249293e..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dcc_nav_display_42px.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - dcc_nav_display_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/dcc_nav_display_84px.svg b/dcc-old/src/plugin-display/operation/qrc/icons/dcc_nav_display_84px.svg deleted file mode 100644 index 02a49c9cc5..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/dcc_nav_display_84px.svg +++ /dev/null @@ -1,32 +0,0 @@ - - - dcc_nav_display_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Center.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Center.svg deleted file mode 100644 index 229a2e4463..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Center.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Default.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Default.svg deleted file mode 100644 index 68ac8cfeef..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Default.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 默认-黑色 - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Fit.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Fit.svg deleted file mode 100644 index b460e7f551..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Fit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Stretch.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Stretch.svg deleted file mode 100644 index dcda8ce4f6..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/black/Stretch.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Center.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Center.svg deleted file mode 100644 index 7c34b54ddc..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Center.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 居中-hover - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Default.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Default.svg deleted file mode 100644 index 894cc6b543..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Default.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 默认-浅色-hover - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Fit.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Fit.svg deleted file mode 100644 index 9545c38976..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Fit.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 拉伸-hover - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Stretch.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Stretch.svg deleted file mode 100644 index 7af59c5233..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/hover/Stretch.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 适应-hover - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Center.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Center.svg deleted file mode 100644 index 6d5c2a39ee..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Center.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Default.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Default.svg deleted file mode 100644 index ce4fb0e31c..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Default.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 默认-浅色 - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Fit.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Fit.svg deleted file mode 100644 index 8d08bc68cc..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Fit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Stretch.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Stretch.svg deleted file mode 100644 index a9c200cdfe..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/light/Stretch.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Center.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Center.svg deleted file mode 100644 index ee7248ae17..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Center.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Default.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Default.svg deleted file mode 100644 index 970f37980a..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Default.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - 默认-白色 - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Fit.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Fit.svg deleted file mode 100644 index 55daa8d1bb..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Fit.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Stretch.svg b/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Stretch.svg deleted file mode 100644 index 653155ed39..0000000000 --- a/dcc-old/src/plugin-display/operation/qrc/icons/light/icon/white/Stretch.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-display/operation/types/brightnessmap.cpp b/dcc-old/src/plugin-display/operation/types/brightnessmap.cpp deleted file mode 100644 index 3ac8127794..0000000000 --- a/dcc-old/src/plugin-display/operation/types/brightnessmap.cpp +++ /dev/null @@ -1,10 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "brightnessmap.h" - -void registerBrightnessMapMetaType() -{ - qRegisterMetaType("BrightnessMap"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-display/operation/types/brightnessmap.h b/dcc-old/src/plugin-display/operation/types/brightnessmap.h deleted file mode 100644 index a0ba379252..0000000000 --- a/dcc-old/src/plugin-display/operation/types/brightnessmap.h +++ /dev/null @@ -1,14 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef BRIGHTNESSMAP_H -#define BRIGHTNESSMAP_H - -#include -#include - -typedef QMap BrightnessMap; - -void registerBrightnessMapMetaType(); - -#endif // BRIGHTNESSMAP_H diff --git a/dcc-old/src/plugin-display/operation/types/reflectlist.cpp b/dcc-old/src/plugin-display/operation/types/reflectlist.cpp deleted file mode 100644 index dd2283d1e4..0000000000 --- a/dcc-old/src/plugin-display/operation/types/reflectlist.cpp +++ /dev/null @@ -1,10 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "reflectlist.h" - -void registerReflectListMetaType() -{ - qRegisterMetaType("ReflectList"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-display/operation/types/reflectlist.h b/dcc-old/src/plugin-display/operation/types/reflectlist.h deleted file mode 100644 index 53e592d176..0000000000 --- a/dcc-old/src/plugin-display/operation/types/reflectlist.h +++ /dev/null @@ -1,14 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef REFLECTLIST_H -#define REFLECTLIST_H - -#include -#include - -typedef QList ReflectList; - -void registerReflectListMetaType(); - -#endif // REFLECTLIST_H diff --git a/dcc-old/src/plugin-display/operation/types/resolution.cpp b/dcc-old/src/plugin-display/operation/types/resolution.cpp deleted file mode 100644 index 1afd96299e..0000000000 --- a/dcc-old/src/plugin-display/operation/types/resolution.cpp +++ /dev/null @@ -1,54 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "resolution.h" - -#include - -void registerResolutionMetaType() -{ - qRegisterMetaType("Resolution"); - qDBusRegisterMetaType(); -} - -QDebug operator<<(QDebug debug, const Resolution &resolution) -{ - debug << QString("Resolution(%1, %2, %3, %4)").arg(resolution.m_id) - .arg(resolution.m_width) - .arg(resolution.m_height) - .arg(resolution.m_rate); - - return debug; -} - -Resolution::Resolution() - : m_rate(0.0) -{ -} - -bool Resolution::operator!=(const Resolution &other) const -{ - return m_width != other.m_width || m_height != other.m_height || m_rate != other.m_rate; -} - -bool Resolution::operator==(const Resolution &other) const -{ - return !(other != *this); -} - -QDBusArgument &operator<<(QDBusArgument &arg, const Resolution &value) -{ - arg.beginStructure(); - arg << value.m_id << value.m_width << value.m_height << value.m_rate; - arg.endStructure(); - - return arg; -} - -const QDBusArgument &operator>>(const QDBusArgument &arg, Resolution &value) -{ - arg.beginStructure(); - arg >> value.m_id >> value.m_width >> value.m_height >> value.m_rate; - arg.endStructure(); - return arg; -} diff --git a/dcc-old/src/plugin-display/operation/types/resolution.h b/dcc-old/src/plugin-display/operation/types/resolution.h deleted file mode 100644 index 12abd74ca0..0000000000 --- a/dcc-old/src/plugin-display/operation/types/resolution.h +++ /dev/null @@ -1,38 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef RESOLUTION_H -#define RESOLUTION_H - -#include - -class Resolution -{ -public: - friend QDebug operator<<(QDebug debug, const Resolution &resolution); - friend QDBusArgument &operator<<(QDBusArgument &arg, const Resolution &value); - friend const QDBusArgument &operator>>(const QDBusArgument &arg, Resolution &value); - - explicit Resolution(); - - bool operator!=(const Resolution &other) const; - bool operator==(const Resolution &other) const; - - quint32 id() const { return m_id; } - quint16 width() const { return m_width; } - quint16 height() const { return m_height; } - double rate() const { return m_rate; } - -public: - quint32 m_id; - quint16 m_width; - quint16 m_height; - double m_rate; -}; - - -Q_DECLARE_METATYPE(Resolution) - -void registerResolutionMetaType(); - -#endif // RESOLUTION_H diff --git a/dcc-old/src/plugin-display/operation/types/resolutionlist.cpp b/dcc-old/src/plugin-display/operation/types/resolutionlist.cpp deleted file mode 100644 index 2c9a5af9ab..0000000000 --- a/dcc-old/src/plugin-display/operation/types/resolutionlist.cpp +++ /dev/null @@ -1,12 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "resolutionlist.h" - -void registerResolutionListMetaType() -{ - registerResolutionMetaType(); - - qRegisterMetaType("ResolutionList"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-display/operation/types/resolutionlist.h b/dcc-old/src/plugin-display/operation/types/resolutionlist.h deleted file mode 100644 index fe7600a124..0000000000 --- a/dcc-old/src/plugin-display/operation/types/resolutionlist.h +++ /dev/null @@ -1,15 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef RESOLUTIONLIST_H -#define RESOLUTIONLIST_H - -#include "resolution.h" - -#include - -typedef QList ResolutionList; - -void registerResolutionListMetaType(); - -#endif // RESOLUTIONLIST_H diff --git a/dcc-old/src/plugin-display/operation/types/rotationlist.cpp b/dcc-old/src/plugin-display/operation/types/rotationlist.cpp deleted file mode 100644 index a97a77ba12..0000000000 --- a/dcc-old/src/plugin-display/operation/types/rotationlist.cpp +++ /dev/null @@ -1,10 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "rotationlist.h" - -void registerRotationListMetaType() -{ - qRegisterMetaType("RotationList"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-display/operation/types/rotationlist.h b/dcc-old/src/plugin-display/operation/types/rotationlist.h deleted file mode 100644 index 95d81df0cd..0000000000 --- a/dcc-old/src/plugin-display/operation/types/rotationlist.h +++ /dev/null @@ -1,14 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ROTATIONLIST_H -#define ROTATIONLIST_H - -#include -#include - -typedef QList RotationList; - -void registerRotationListMetaType(); - -#endif // ROTATIONLIST_H diff --git a/dcc-old/src/plugin-display/operation/types/screenrect.cpp b/dcc-old/src/plugin-display/operation/types/screenrect.cpp deleted file mode 100644 index 950a343c4a..0000000000 --- a/dcc-old/src/plugin-display/operation/types/screenrect.cpp +++ /dev/null @@ -1,52 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "screenrect.h" - -ScreenRect::ScreenRect() - : x(0), - y(0), - w(0), - h(0) -{ - -} - -QDebug operator<<(QDebug debug, const ScreenRect &rect) -{ - debug << QString("ScreenRect(%1, %2, %3, %4)").arg(rect.x) - .arg(rect.y) - .arg(rect.w) - .arg(rect.h); - - return debug; -} - -ScreenRect::operator QRect() const -{ - return QRect(x, y, w, h); -} - -QDBusArgument &operator<<(QDBusArgument &arg, const ScreenRect &rect) -{ - arg.beginStructure(); - arg << rect.x << rect.y << rect.w << rect.h; - arg.endStructure(); - - return arg; -} - -const QDBusArgument &operator>>(const QDBusArgument &arg, ScreenRect &rect) -{ - arg.beginStructure(); - arg >> rect.x >> rect.y >> rect.w >> rect.h; - arg.endStructure(); - - return arg; -} - -void registerScreenRectMetaType() -{ - qRegisterMetaType("ScreenRect"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-display/operation/types/screenrect.h b/dcc-old/src/plugin-display/operation/types/screenrect.h deleted file mode 100644 index bd051b8685..0000000000 --- a/dcc-old/src/plugin-display/operation/types/screenrect.h +++ /dev/null @@ -1,33 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SCREENRECT_H -#define SCREENRECT_H - -#include -#include -#include -#include - -struct ScreenRect -{ -public: - ScreenRect(); - operator QRect() const; - - friend QDebug operator<<(QDebug debug, const ScreenRect &rect); - friend const QDBusArgument &operator>>(const QDBusArgument &arg, ScreenRect &rect); - friend QDBusArgument &operator<<(QDBusArgument &arg, const ScreenRect &rect); - -private: - qint16 x; - qint16 y; - quint16 w; - quint16 h; -}; - -Q_DECLARE_METATYPE(ScreenRect) - -void registerScreenRectMetaType(); - -#endif // SCREENRECT_H diff --git a/dcc-old/src/plugin-display/operation/types/touchscreeninfolist.cpp b/dcc-old/src/plugin-display/operation/types/touchscreeninfolist.cpp deleted file mode 100644 index 3573608144..0000000000 --- a/dcc-old/src/plugin-display/operation/types/touchscreeninfolist.cpp +++ /dev/null @@ -1,41 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchscreeninfolist.h" - -QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo &info) -{ - arg.beginStructure(); - arg << info.id << info.name << info.deviceNode << info.serialNumber; - arg.endStructure(); - - return arg; -} - -const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo &info) -{ - arg.beginStructure(); - arg >> info.id >> info.name >> info.deviceNode >> info.serialNumber; - arg.endStructure(); - - return arg; -} - -bool TouchscreenInfo::operator==(const TouchscreenInfo &info) -{ - return id == info.id && name == info.name && deviceNode == info.deviceNode && serialNumber == info.serialNumber; -} - -void registerTouchscreenInfoMetaType() -{ - qRegisterMetaType("TouchscreenInfo"); - qDBusRegisterMetaType(); -} - -void registerTouchscreenInfoListMetaType() -{ - registerTouchscreenInfoMetaType(); - - qRegisterMetaType("TouchscreenInfoList"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-display/operation/types/touchscreeninfolist.h b/dcc-old/src/plugin-display/operation/types/touchscreeninfolist.h deleted file mode 100644 index 4b35e81bd0..0000000000 --- a/dcc-old/src/plugin-display/operation/types/touchscreeninfolist.h +++ /dev/null @@ -1,30 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENINFOLIST_H -#define TOUCHSCREENINFOLIST_H - -#include -#include -#include - -struct TouchscreenInfo { - qint32 id; - QString name; - QString deviceNode; - QString serialNumber; - - bool operator ==(const TouchscreenInfo& info); -}; - -typedef QList TouchscreenInfoList; - -Q_DECLARE_METATYPE(TouchscreenInfo) -Q_DECLARE_METATYPE(TouchscreenInfoList) - -QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo &info); -const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo &info); - -void registerTouchscreenInfoListMetaType(); - -#endif // !TOUCHSCREENINFOLIST_H diff --git a/dcc-old/src/plugin-display/operation/types/touchscreeninfolist_v2.cpp b/dcc-old/src/plugin-display/operation/types/touchscreeninfolist_v2.cpp deleted file mode 100644 index ea0e472b39..0000000000 --- a/dcc-old/src/plugin-display/operation/types/touchscreeninfolist_v2.cpp +++ /dev/null @@ -1,40 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchscreeninfolist_v2.h" - -QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo_V2 &info) -{ - arg.beginStructure(); - arg << info.id << info.name << info.deviceNode << info.serialNumber << info.UUID; - arg.endStructure(); - - return arg; -} - -const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo_V2 &info) -{ - arg.beginStructure(); - arg >> info.id >> info.name >> info.deviceNode >> info.serialNumber >> info.UUID; - arg.endStructure(); - - return arg; -} - -bool operator==(const TouchscreenInfo_V2 &info1, const TouchscreenInfo_V2 &info2) { - return info1.id == info2.id && info1.name == info2.name && info1.deviceNode == info2.deviceNode && info1.serialNumber == info2.serialNumber && info1.UUID == info2.UUID; -} - -void registerTouchscreenInfoV2MetaType() -{ - qRegisterMetaType("TouchscreenInfo_V2"); - qDBusRegisterMetaType(); -} - -void registerTouchscreenInfoList_V2MetaType() -{ - registerTouchscreenInfoV2MetaType(); - - qRegisterMetaType("TouchscreenInfoList_V2"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-display/operation/types/touchscreeninfolist_v2.h b/dcc-old/src/plugin-display/operation/types/touchscreeninfolist_v2.h deleted file mode 100644 index d02eab721e..0000000000 --- a/dcc-old/src/plugin-display/operation/types/touchscreeninfolist_v2.h +++ /dev/null @@ -1,31 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENINFOLISTV2_H -#define TOUCHSCREENINFOLISTV2_H - -#include -#include -#include - -struct TouchscreenInfo_V2 { - qint32 id; - QString name; - QString deviceNode; - QString serialNumber; - QString UUID; -}; - -bool operator==(const TouchscreenInfo_V2 &info1, const TouchscreenInfo_V2 &info2); - -typedef QList TouchscreenInfoList_V2; - -Q_DECLARE_METATYPE(TouchscreenInfo_V2) -Q_DECLARE_METATYPE(TouchscreenInfoList_V2) - -QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo_V2 &info); -const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo_V2 &info); - -void registerTouchscreenInfoList_V2MetaType(); - -#endif // !TOUCHSCREENINFOLISTV2_H diff --git a/dcc-old/src/plugin-display/operation/types/touchscreenmap.cpp b/dcc-old/src/plugin-display/operation/types/touchscreenmap.cpp deleted file mode 100644 index 6f191aa22c..0000000000 --- a/dcc-old/src/plugin-display/operation/types/touchscreenmap.cpp +++ /dev/null @@ -1,10 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchscreenmap.h" - -void registerTouchscreenMapMetaType() -{ - qRegisterMetaType("TouchscreenMap"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-display/operation/types/touchscreenmap.h b/dcc-old/src/plugin-display/operation/types/touchscreenmap.h deleted file mode 100644 index 8a7c4f4345..0000000000 --- a/dcc-old/src/plugin-display/operation/types/touchscreenmap.h +++ /dev/null @@ -1,14 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENMAP_H -#define TOUCHSCREENMAP_H - -#include -#include - -typedef QMap TouchscreenMap; - -void registerTouchscreenMapMetaType(); - -#endif // TOUCHSCREENMAP_H diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/Output.cpp b/dcc-old/src/plugin-display/wayland/libwayqt/Output.cpp deleted file mode 100644 index c7b5f99097..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/Output.cpp +++ /dev/null @@ -1,182 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2021 Marcus Britanicus (https://gitlab.com/marcusbritanicus) - * Copyright (c) 2021 Abrar (https://gitlab.com/s96Abrar) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - -#include "wayland-client-protocol.h" - -#include -#include - -#include -#include -#include -#include -#include - -WQt::Output::Output(wl_output *op) -{ - mObj = op; - - wl_output_add_listener(mObj, &mListener, this); -} - -WQt::Output::~Output() -{ - wl_output_destroy(mObj); -} - -QString WQt::Output::name() -{ - return mName; -} - -QString WQt::Output::description() -{ - return mDescr; -} - -QString WQt::Output::make() -{ - return mMake; -} - -QString WQt::Output::model() -{ - return mModel; -} - -QPoint WQt::Output::position() -{ - return mPos; -} - -QSize WQt::Output::physicalSize() -{ - return mPhysicalSize; -} - -WQt::Output::OutputMode WQt::Output::mode() -{ - return mMode; -} - -WQt::Output::SubpixelGeometry WQt::Output::subpixelGeometry() -{ - return (WQt::Output::SubpixelGeometry)mSubPixel; -} - -WQt::Output::Rotation WQt::Output::transform() -{ - return (WQt::Output::Rotation)mTransform; -} - -int32_t WQt::Output::scale() -{ - return mScale; -} - -void WQt::Output::waitForReady() -{ - if (mDone) { - return; - } - - do { - QThread::usleep(100); - qApp->processEvents(); - } while (not mDone); -} - -wl_output *WQt::Output::get() -{ - return mObj; -} - -void WQt::Output::handleGeometryEvent(void *data, - struct wl_output *, - int32_t x, - int32_t y, - int32_t w, - int32_t h, - int32_t e, - const char *f, - const char *g, - int32_t t) -{ - Output *output = reinterpret_cast(data); - - output->mPos = QPoint(x, y); - output->mPhysicalSize = QSize(w, h); - output->mSubPixel = e; - output->mMake = QString(f); - output->mModel = QString(g); - output->mTransform = t; -} - -void WQt::Output::handleModeEvent(void *data, - struct wl_output *, - uint32_t current, - int32_t xres, - int32_t yres, - int32_t refresh) -{ - Output *output = reinterpret_cast(data); - - if (current) { - output->mMode = { QSize(xres, yres), refresh, true }; - } -} - -void WQt::Output::handleDone(void *data, struct wl_output *) -{ - Output *output = reinterpret_cast(data); - - output->mDone = true; -} - -void WQt::Output::handleScale(void *data, struct wl_output *, int32_t scale) -{ - Output *output = reinterpret_cast(data); - - output->mScale = scale; -} - -void WQt::Output::handleNameEvent(void *data, struct wl_output *, const char *name) -{ - Output *output = reinterpret_cast(data); - - output->mName = QString(name); -} - -void WQt::Output::handleDescriptionEvent(void *data, struct wl_output *, const char *descr) -{ - Output *output = reinterpret_cast(data); - - output->mDescr = descr; -} - -const wl_output_listener WQt::Output::mListener = { - handleGeometryEvent, handleModeEvent, handleDone, - handleScale, handleNameEvent, handleDescriptionEvent, -}; diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/Output.hpp b/dcc-old/src/plugin-display/wayland/libwayqt/Output.hpp deleted file mode 100644 index 649553d5f8..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/Output.hpp +++ /dev/null @@ -1,128 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2021 Marcus Britanicus (https://gitlab.com/marcusbritanicus) - * Copyright (c) 2021 Abrar (https://gitlab.com/s96Abrar) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - -#pragma once - -#include - -#include -#include -#include -#include - -struct wl_output; -struct wl_output_listener; - -namespace WQt { -class Output; -} - -class WQt::Output : public QObject -{ - Q_OBJECT; - -public: - enum SubpixelGeometry { - Unknown = 0x634429, - None, - HorizontalRGB, - HorizontalBGR, - VerticalRGB, - VerticalBGR, - }; - - enum Rotation { - Normal = 0x951893, - Rotate90, - Rotate180, - Rotate270, - Flipped, - Flipped90, - Flipped180, - Flipped270, - }; - - typedef struct output_mode_t - { - QSize resolution; - int32_t refreshRate; - bool current = false; - } OutputMode; - - Output(wl_output *); - ~Output(); - - QString name(); - QString description(); - QString make(); - QString model(); - - QPoint position(); - QSize physicalSize(); - WQt::Output::OutputMode mode(); - SubpixelGeometry subpixelGeometry(); - Rotation transform(); - - int32_t scale(); - - void waitForReady(); - - wl_output *get(); - -private: - static void handleGeometryEvent(void *, - struct wl_output *, - int32_t, - int32_t, - int32_t, - int32_t, - int32_t, - const char *, - const char *, - int32_t); - static void handleModeEvent(void *, struct wl_output *, uint32_t, int32_t, int32_t, int32_t); - static void handleDone(void *, struct wl_output *); - static void handleScale(void *, struct wl_output *, int32_t); - static void handleNameEvent(void *, struct wl_output *, const char *); - static void handleDescriptionEvent(void *, struct wl_output *, const char *); - - wl_output *mObj; - static const wl_output_listener mListener; - - QPoint mPos; - QSize mPhysicalSize; - int32_t mSubPixel; - QString mMake; - QString mModel; - int32_t mTransform; - - WQt::Output::OutputMode mMode; - int32_t mScale; - - QString mName; - QString mDescr; - - bool mDone = false; -}; diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/OutputManager.cpp b/dcc-old/src/plugin-display/wayland/libwayqt/OutputManager.cpp deleted file mode 100644 index 0b5ee21eed..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/OutputManager.cpp +++ /dev/null @@ -1,515 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2021 Marcus Britanicus (https://gitlab.com/marcusbritanicus) - * Copyright (c) 2021 Abrar (https://gitlab.com/s96Abrar) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - -#include "OutputManager.hpp" - -#include "wlr-output-management-unstable-v1-client-protocol.h" - -#include - -#include -#include -#include -#include -#include -#include - -/** - * Output Manager - * This is the beginning of all our operations. - * Obtain a pointer to this object from Wayland Registry - */ - -WQt::OutputManager::OutputManager(zwlr_output_manager_v1 *opMgr) -{ - mObj = opMgr; - zwlr_output_manager_v1_add_listener(mObj, &mListener, this); -} - -WQt::OutputManager::~OutputManager() -{ - zwlr_output_manager_v1_destroy(mObj); -} - -QList WQt::OutputManager::heads() -{ - return mHeads; -} - -void WQt::OutputManager::waitForDone() -{ - while (not mIsDone) { - /** 100 micro-seconds */ - QThread::usleep(100); - - /** Process events */ - qApp->processEvents(); - } -} - -WQt::OutputConfiguration *WQt::OutputManager::createConfiguration() -{ - return new WQt::OutputConfiguration(zwlr_output_manager_v1_create_configuration(mObj, mSerial)); -} - -void WQt::OutputManager::stop() -{ - zwlr_output_manager_v1_stop(mObj); -} - -zwlr_output_manager_v1 *WQt::OutputManager::get() -{ - return mObj; -} - -void WQt::OutputManager::handleHead(void *data, zwlr_output_manager_v1 *, zwlr_output_head_v1 *head) -{ - WQt::OutputManager *mgr = reinterpret_cast(data); - - WQt::OutputHead *opHead = new WQt::OutputHead(head); - - mgr->mHeads << opHead; - - connect(opHead, &WQt::OutputHead::finished, [=]() { - mgr->mHeads.removeAll(opHead); - }); - - emit mgr->headAttached(opHead); -} - -void WQt::OutputManager::handleDone(void *data, zwlr_output_manager_v1 *, uint32_t serial) -{ - WQt::OutputManager *mgr = reinterpret_cast(data); - - mgr->mSerial = serial; - mgr->mIsDone = true; - - emit mgr->done(); -} - -void WQt::OutputManager::handleFinished(void *data, zwlr_output_manager_v1 *) -{ - WQt::OutputManager *mgr = reinterpret_cast(data); - - zwlr_output_manager_v1_destroy(mgr->mObj); - mgr->mObj = nullptr; -} - -const struct zwlr_output_manager_v1_listener WQt::OutputManager::mListener = { - handleHead, - handleDone, - handleFinished, -}; - -/** - * Output Head - * Heads are obtained from OutputManager class, via signals, - * or via OutputManager::heads() function; - */ - -WQt::OutputHead::OutputHead() { } - -WQt::OutputHead::OutputHead(zwlr_output_head_v1 *head) -{ - mObj = head; - zwlr_output_head_v1_add_listener(mObj, &mListener, this); -} - -WQt::OutputHead::OutputHead(const WQt::OutputHead &otherHead) - : QObject() -{ - mObj = otherHead.mObj; - - mPropsMap = otherHead.mPropsMap; - mModes = otherHead.mModes; - mCurrentMode = otherHead.mCurrentMode; -} - -WQt::OutputHead::~OutputHead() -{ - zwlr_output_head_v1_destroy(mObj); -} - -QVariant WQt::OutputHead::property(WQt::OutputHead::Property prop) -{ - if (prop == WQt::OutputHead::Modes) { - return QVariant::fromValue>(mModes); - } - - else if (prop == WQt::OutputHead::CurrentMode) { - return QVariant::fromValue(mCurrentMode); - } - - else { - return mPropsMap.value((int)prop); - } -} - -zwlr_output_head_v1 *WQt::OutputHead::get() -{ - return mObj; -} - -void WQt::OutputHead::handleName(void *data, zwlr_output_head_v1 *, const char *name) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::Name] = name; - - emit opHead->changed(WQt::OutputHead::Name); -} - -void WQt::OutputHead::handleDescription(void *data, zwlr_output_head_v1 *, const char *descr) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::Description] = descr; - - emit opHead->changed(WQt::OutputHead::Description); -} - -void WQt::OutputHead::handlePhysicalSize(void *data, - zwlr_output_head_v1 *, - int32_t width, - int32_t height) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::PhysicalSize] = QSize(width, height); - - emit opHead->changed(WQt::OutputHead::PhysicalSize); -} - -void WQt::OutputHead::handleMode(void *data, zwlr_output_head_v1 *, zwlr_output_mode_v1 *mode) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - if (opHead->mPropsMap.contains(WQt::OutputHead::Modes)) { - opHead->mPropsMap[WQt::OutputHead::Modes] = - QVariant::fromValue>(QList()); - } - - WQt::OutputMode *opMode = new WQt::OutputMode(mode); - - connect(opMode, &WQt::OutputMode::finished, [=]() { - opHead->mModes.removeAll(opMode); - }); - opHead->mModes << opMode; - - emit opHead->changed(WQt::OutputHead::Modes); -} - -void WQt::OutputHead::handleEnabled(void *data, zwlr_output_head_v1 *, int32_t yes) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::Enabled] = (bool)yes; - - emit opHead->changed(WQt::OutputHead::Enabled); -} - -void WQt::OutputHead::handleCurrentMode(void *data, - zwlr_output_head_v1 *, - zwlr_output_mode_v1 *curMode) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - for (auto *mode : opHead->property(WQt::OutputHead::Modes).value>()) { - if (mode->get() == curMode) - opHead->mCurrentMode = mode; - } - - emit opHead->changed(WQt::OutputHead::CurrentMode); -} - -void WQt::OutputHead::handlePosition(void *data, zwlr_output_head_v1 *, int32_t x, int32_t y) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::Position] = QPoint(x, y); - - emit opHead->changed(WQt::OutputHead::Position); -} - -void WQt::OutputHead::handleTransform(void *data, zwlr_output_head_v1 *, int32_t transform) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::Transform] = transform; - - emit opHead->changed(WQt::OutputHead::Transform); -} - -void WQt::OutputHead::handleScale(void *data, zwlr_output_head_v1 *, wl_fixed_t scale) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::Scale] = wl_fixed_to_double(scale); - - emit opHead->changed(WQt::OutputHead::Scale); -} - -void WQt::OutputHead::handleFinished(void *data, zwlr_output_head_v1 *) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - emit opHead->finished(); -} - -void WQt::OutputHead::handleMake(void *data, zwlr_output_head_v1 *, const char *make) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::Make] = make; - - emit opHead->changed(WQt::OutputHead::Make); -} - -void WQt::OutputHead::handleModel(void *data, zwlr_output_head_v1 *, const char *model) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::Model] = model; - - emit opHead->changed(WQt::OutputHead::Model); -} - -void WQt::OutputHead::handleSerialNumber(void *data, zwlr_output_head_v1 *, const char *serialNo) -{ - WQt::OutputHead *opHead = reinterpret_cast(data); - - opHead->mPropsMap[WQt::OutputHead::SerialNumber] = serialNo; - - emit opHead->changed(WQt::OutputHead::SerialNumber); -} - -const struct zwlr_output_head_v1_listener WQt::OutputHead::mListener = { - handleName, handleDescription, handlePhysicalSize, handleMode, handleEnabled, - handleCurrentMode, handlePosition, handleTransform, handleScale, handleFinished, - handleMake, handleModel, handleSerialNumber, -}; - -/** - * Output Mode - * This describes a mode of an output head. - * Obtained from OutputHead::property( Modes ) - * or from OutputHead::property( CurrentMode ) - */ - -WQt::OutputMode::OutputMode() { } - -WQt::OutputMode::OutputMode(zwlr_output_mode_v1 *mode) -{ - mObj = mode; - zwlr_output_mode_v1_add_listener(mObj, &mListener, this); -} - -WQt::OutputMode::OutputMode(const WQt::OutputMode &otherMode) - : QObject() -{ - mObj = otherMode.mObj; - - mSize = otherMode.mSize; - mRefreshRate = otherMode.mRefreshRate; - mIsPreferred = otherMode.mIsPreferred; -} - -WQt::OutputMode::~OutputMode() -{ - zwlr_output_mode_v1_destroy(mObj); -} - -QSize WQt::OutputMode::size() -{ - return mSize; -} - -int32_t WQt::OutputMode::refreshRate() -{ - return mRefreshRate; -} - -bool WQt::OutputMode::isPreferred() -{ - return mIsPreferred; -} - -zwlr_output_mode_v1 *WQt::OutputMode::get() -{ - return mObj; -} - -void WQt::OutputMode::handleSize(void *data, zwlr_output_mode_v1 *, int32_t width, int32_t height) -{ - WQt::OutputMode *opMode = reinterpret_cast(data); - - opMode->mSize = QSize(width, height); - - emit opMode->sizeChanged(opMode->mSize); -} - -void WQt::OutputMode::handleRefreshRate(void *data, zwlr_output_mode_v1 *, int32_t refreshRate) -{ - WQt::OutputMode *opMode = reinterpret_cast(data); - - opMode->mRefreshRate = refreshRate; - - emit opMode->refreshRateChanged(refreshRate); -} - -void WQt::OutputMode::handlePreferred(void *data, zwlr_output_mode_v1 *) -{ - WQt::OutputMode *opMode = reinterpret_cast(data); - - opMode->mIsPreferred = true; - - emit opMode->setAsPreferred(); -} - -void WQt::OutputMode::handleFinished(void *data, zwlr_output_mode_v1 *) -{ - WQt::OutputMode *opMode = reinterpret_cast(data); - - emit opMode->finished(); -} - -const struct zwlr_output_mode_v1_listener WQt::OutputMode::mListener = { - handleSize, - handleRefreshRate, - handlePreferred, - handleFinished, -}; - -/** - * Output Configuration - * We can configure all the outputs using this object - * Obtained from OutputManager::createConfiguration() - */ - -WQt::OutputConfiguration::OutputConfiguration(zwlr_output_configuration_v1 *config) -{ - mObj = config; - zwlr_output_configuration_v1_add_listener(mObj, &mListener, this); -} - -WQt::OutputConfiguration::~OutputConfiguration() -{ - zwlr_output_configuration_v1_destroy(mObj); -} - -WQt::OutputConfigurationHead *WQt::OutputConfiguration::enableHead(WQt::OutputHead *head) -{ - return new WQt::OutputConfigurationHead( - zwlr_output_configuration_v1_enable_head(mObj, head->get())); -} - -void WQt::OutputConfiguration::disableHead(WQt::OutputHead *head) -{ - zwlr_output_configuration_v1_disable_head(mObj, head->get()); -} - -void WQt::OutputConfiguration::apply() -{ - zwlr_output_configuration_v1_apply(mObj); -} - -void WQt::OutputConfiguration::test() -{ - zwlr_output_configuration_v1_test(mObj); -} - -void WQt::OutputConfiguration::handleSucceeded(void *data, zwlr_output_configuration_v1 *) -{ - WQt::OutputConfiguration *config = reinterpret_cast(data); - - emit config->succeeded(); - - zwlr_output_configuration_v1_destroy(config->mObj); -} - -void WQt::OutputConfiguration::handleFailed(void *data, zwlr_output_configuration_v1 *) -{ - WQt::OutputConfiguration *config = reinterpret_cast(data); - - emit config->failed(); - - zwlr_output_configuration_v1_destroy(config->mObj); -} - -void WQt::OutputConfiguration::handleCanceled(void *data, zwlr_output_configuration_v1 *) -{ - WQt::OutputConfiguration *config = reinterpret_cast(data); - - emit config->canceled(); - - zwlr_output_configuration_v1_destroy(config->mObj); // need? -} - -const struct zwlr_output_configuration_v1_listener WQt::OutputConfiguration::mListener = { - handleSucceeded, - handleFailed, - handleCanceled, -}; - -/** - * Output Configuration Head - * We can set the resolution and refresh rate for a given head - * Obtained from OutputConfiguration::enableHead() - */ - -WQt::OutputConfigurationHead::OutputConfigurationHead(zwlr_output_configuration_head_v1 *configHead) -{ - mObj = configHead; -} - -WQt::OutputConfigurationHead::~OutputConfigurationHead() -{ - zwlr_output_configuration_head_v1_destroy(mObj); -} - -void WQt::OutputConfigurationHead::setMode(WQt::OutputMode *mode) -{ - zwlr_output_configuration_head_v1_set_mode(mObj, mode->get()); -} - -void WQt::OutputConfigurationHead::setCustomMode(QSize size, int32_t refresh) -{ - zwlr_output_configuration_head_v1_set_custom_mode(mObj, size.width(), size.height(), refresh); -} - -void WQt::OutputConfigurationHead::setPosition(QPoint pos) -{ - zwlr_output_configuration_head_v1_set_position(mObj, pos.x(), pos.y()); -} - -void WQt::OutputConfigurationHead::setTransform(int32_t transform) -{ - zwlr_output_configuration_head_v1_set_transform(mObj, transform); -} - -void WQt::OutputConfigurationHead::setScale(qreal scale) -{ - zwlr_output_configuration_head_v1_set_scale(mObj, wl_fixed_from_double(scale)); -} diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/OutputManager.hpp b/dcc-old/src/plugin-display/wayland/libwayqt/OutputManager.hpp deleted file mode 100644 index f4339a5e9e..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/OutputManager.hpp +++ /dev/null @@ -1,268 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2021 Marcus Britanicus (https://gitlab.com/marcusbritanicus) - * Copyright (c) 2021 Abrar (https://gitlab.com/s96Abrar) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - -#pragma once - -#include - -#include -#include -#include -#include - -struct wl_buffer; -struct wl_output; - -struct zwlr_output_manager_v1; -struct zwlr_output_head_v1; -struct zwlr_output_mode_v1; -struct zwlr_output_configuration_v1; -struct zwlr_output_configuration_head_v1; - -struct zwlr_output_manager_v1_listener; -struct zwlr_output_head_v1_listener; -struct zwlr_output_mode_v1_listener; -struct zwlr_output_configuration_v1_listener; - -namespace WQt { -class OutputManager; -class OutputHead; -class OutputMode; -class OutputConfiguration; -class OutputConfigurationHead; -} // namespace WQt - -class WQt::OutputManager : public QObject -{ - Q_OBJECT; - -public: - OutputManager(zwlr_output_manager_v1 *); - ~OutputManager(); - - /** Create a configuration object */ - WQt::OutputConfiguration *createConfiguration(); - - QList heads(); - - void waitForDone(); - - /** Stop monitoring the outupts */ - void stop(); - - zwlr_output_manager_v1 *get(); - -private: - static void handleHead(void *, zwlr_output_manager_v1 *, zwlr_output_head_v1 *); - static void handleDone(void *, zwlr_output_manager_v1 *, uint32_t); - static void handleFinished(void *, zwlr_output_manager_v1 *); - - zwlr_output_manager_v1 *mObj; - uint32_t mSerial; - - static const zwlr_output_manager_v1_listener mListener; - - QList mHeads; - bool mIsDone = false; - -Q_SIGNALS: - void headAttached(WQt::OutputHead *); - void done(); -}; - -class WQt::OutputHead : public QObject -{ - Q_OBJECT; - -public: - enum Property { - Name = 0xbf278e, - Description, - PhysicalSize, - Modes, - Enabled, - CurrentMode, - Position, - Transform, - Scale, - Make, - Model, - SerialNumber, - }; - - OutputHead(); - OutputHead(zwlr_output_head_v1 *); - OutputHead(const WQt::OutputHead &); - ~OutputHead(); - - /** Get the suitable property of this head */ - QVariant property(WQt::OutputHead::Property); - - zwlr_output_head_v1 *get(); - -private: - static void handleName(void *, zwlr_output_head_v1 *, const char *); - static void handleDescription(void *, zwlr_output_head_v1 *, const char *); - static void handlePhysicalSize(void *, zwlr_output_head_v1 *, int32_t, int32_t); - static void handleMode(void *, zwlr_output_head_v1 *, zwlr_output_mode_v1 *); - static void handleEnabled(void *, zwlr_output_head_v1 *, int32_t); - static void handleCurrentMode(void *, zwlr_output_head_v1 *, zwlr_output_mode_v1 *); - static void handlePosition(void *, zwlr_output_head_v1 *, int32_t, int32_t); - static void handleTransform(void *, zwlr_output_head_v1 *, int32_t); - static void handleScale(void *, zwlr_output_head_v1 *, wl_fixed_t); - static void handleFinished(void *, zwlr_output_head_v1 *); - static void handleMake(void *, zwlr_output_head_v1 *, const char *); - static void handleModel(void *, zwlr_output_head_v1 *, const char *); - static void handleSerialNumber(void *, zwlr_output_head_v1 *, const char *); - - static const zwlr_output_head_v1_listener mListener; - - zwlr_output_head_v1 *mObj; - - /** Properties map */ - QMap mPropsMap; - QList mModes; - WQt::OutputMode *mCurrentMode; - -Q_SIGNALS: - void changed(WQt::OutputHead::Property); - - void finished(); -}; - -class WQt::OutputMode : public QObject -{ - Q_OBJECT; - -public: - OutputMode(); - OutputMode(zwlr_output_mode_v1 *); - OutputMode(const WQt::OutputMode &); - ~OutputMode(); - - QSize size(); - int32_t refreshRate(); - bool isPreferred(); - - zwlr_output_mode_v1 *get(); - -private: - static void handleSize(void *, zwlr_output_mode_v1 *, int32_t, int32_t); - static void handleRefreshRate(void *, zwlr_output_mode_v1 *, int32_t); - static void handlePreferred(void *, zwlr_output_mode_v1 *); - static void handleFinished(void *, zwlr_output_mode_v1 *); - - static const zwlr_output_mode_v1_listener mListener; - - zwlr_output_mode_v1 *mObj{ nullptr }; - - /** Resolution */ - QSize mSize{ 0, 0 }; - - /** Refresh rate */ - int32_t mRefreshRate{ 0 }; - - /** By default this is false */ - bool mIsPreferred{ false }; - -Q_SIGNALS: - void sizeChanged(QSize); - void refreshRateChanged(int32_t); - void setAsPreferred(); - - void finished(); -}; - -class WQt::OutputConfiguration : public QObject -{ - Q_OBJECT; - -public: - enum Error { - AlreadyConfiguredHead = 1, - UnconfiguredHead = 2, - AlreadyUsed = 3, - }; - - OutputConfiguration(zwlr_output_configuration_v1 *); - ~OutputConfiguration(); - - /** Get the outupt configuration head object for the enabled output head */ - WQt::OutputConfigurationHead *enableHead(WQt::OutputHead *); - - /** Disabled the given head */ - void disableHead(WQt::OutputHead *); - - /** This object is destroyed after calling this function */ - void apply(); - - /** This object is destroyed after calling this function */ - void test(); - -private: - static void handleSucceeded(void *, zwlr_output_configuration_v1 *); - static void handleFailed(void *, zwlr_output_configuration_v1 *); - static void handleCanceled(void *, zwlr_output_configuration_v1 *); - - static const zwlr_output_configuration_v1_listener mListener; - - zwlr_output_configuration_v1 *mObj; - -Q_SIGNALS: - void succeeded(); - void failed(); - void canceled(); -}; - -class WQt::OutputConfigurationHead : public QObject -{ - Q_OBJECT; - -public: - enum Error { - AlreadySet = 1, - InvalidMode = 2, - InvalidCustomMode = 3, - InvalidTransform = 4, - InvalidScale = 5, - }; - - OutputConfigurationHead(zwlr_output_configuration_head_v1 *); - ~OutputConfigurationHead(); - - void setMode(WQt::OutputMode *); - void setCustomMode(QSize, int32_t); - void setPosition(QPoint); - void setTransform(int32_t); - void setScale(qreal); - -private: - zwlr_output_configuration_head_v1 *mObj; -}; - -Q_DECLARE_METATYPE(WQt::OutputHead); -Q_DECLARE_METATYPE(WQt::OutputMode); -Q_DECLARE_METATYPE(QList); -Q_DECLARE_METATYPE(QList); diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/Registry.cpp b/dcc-old/src/plugin-display/wayland/libwayqt/Registry.cpp deleted file mode 100644 index 3560668a48..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/Registry.cpp +++ /dev/null @@ -1,318 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2021 Marcus Britanicus (https://gitlab.com/marcusbritanicus) - * Copyright (c) 2021 Abrar (https://gitlab.com/s96Abrar) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - -#include "treeland-output-management-client-protocol.h" -#include "wayland-client-protocol.h" -#include "wlr-output-management-unstable-v1-client-protocol.h" - -#include -#include -#include -#include - -#include -#include -#include - -/* Convenience functions */ -void WQt::Registry::globalAnnounce( - void *data, struct wl_registry *, uint32_t name, const char *interface, uint32_t version) -{ - auto r = reinterpret_cast(data); - - r->handleAnnounce(name, interface, version); -} - -void WQt::Registry::globalRemove(void *data, struct wl_registry *, uint32_t name) -{ - // who cares :D - // but we will call WQt::Registry::handleRemove just for the heck of it - - auto r = reinterpret_cast(data); - - r->handleRemove(name); -} - -const struct wl_registry_listener WQt::Registry::mRegListener = { - globalAnnounce, - globalRemove, -}; - -WQt::Registry::Registry(wl_display *wlDisplay) -{ - mWlDisplay = wlDisplay; - mObj = wl_display_get_registry(mWlDisplay); - - if (wl_proxy_get_listener((wl_proxy *)mObj) != &mRegListener) { - wl_registry_add_listener(mObj, &mRegListener, this); - } - - wl_display_roundtrip(mWlDisplay); -} - -WQt::Registry::~Registry() -{ - wl_registry_destroy(mObj); - - wl_seat_destroy(mWlSeat); - wl_shm_destroy(mWlShm); - - for (WQt::Output *op : mOutputs) { - delete op; - } - - if (mOutputMgr != nullptr) { - delete mOutputMgr; - } - - if (mTreeLandOutputMgr != nullptr) { - delete mTreeLandOutputMgr; - } -} - -void WQt::Registry::setup() -{ - if (mIsSetup == false) { - mIsSetup = true; - - for (WQt::Registry::ErrorType et : pendingErrors) { - emit errorOccured(et); - } - - for (WQt::Registry::Interface iface : pendingInterfaces) { - emit interfaceRegistered(iface); - } - - for (WQt::Output *op : pendingOutputs) { - emit outputAdded(op); - } - } -} - -wl_registry *WQt::Registry::get() -{ - return mObj; -} - -wl_display *WQt::Registry::waylandDisplay() -{ - return mWlDisplay; -} - -wl_seat *WQt::Registry::waylandSeat() -{ - return mWlSeat; -} - -wl_shm *WQt::Registry::waylandShm() -{ - return mWlShm; -} - -QList WQt::Registry::waylandOutputs() -{ - return mOutputs.values(); -} - -QList WQt::Registry::registeredInterfaces() -{ - return mRegisteredInterfaces; -} - -bool WQt::Registry::waitForInterface(WQt::Registry::Interface id, int timeout) -{ - int t = 0; - - while (t < timeout) { - if (mRegisteredInterfaces.contains(id)) { - return true; - } - - /** We will take 10 ms nap */ - QThread::msleep(10); - - /** Increment the timer */ - t += 10; - - /** Flush the queue */ - QCoreApplication::processEvents(); - } - - return false; -} - -WQt::OutputManager *WQt::Registry::outputManager() -{ - return mOutputMgr; -} - -WQt::TreeLandOutputManager *WQt::Registry::treeLandOutputManager() -{ - return mTreeLandOutputMgr; -} - -void WQt::Registry::handleAnnounce(uint32_t name, const char *interface, uint32_t version) -{ - /** - * We really don't care about wl_seat version right now. - */ - if (strcmp(interface, wl_seat_interface.name) == 0) { - mWlSeat = (wl_seat *)wl_registry_bind(mObj, name, &wl_seat_interface, version); - - if (!mWlSeat) { - emitError(WQt::Registry::EmptySeat); - } - } - - /** - * We really don't care about wl_shm version right now. - */ - if (strcmp(interface, wl_shm_interface.name) == 0) { - mWlShm = (wl_shm *)wl_registry_bind(mObj, name, &wl_shm_interface, version); - - if (!mWlShm) { - emitError(WQt::Registry::EmptyShm); - } - - else { - mRegisteredInterfaces << ShmInterface; - emitInterface(ShmInterface, true); - } - } - - /** - * We really don't care about wl_output version right now. - */ - if (strcmp(interface, wl_output_interface.name) == 0) { - wl_output *op = (wl_output *)wl_registry_bind(mObj, name, &wl_output_interface, version); - - if (op) { - mOutputs[name] = new WQt::Output(op); - emitOutput(mOutputs[name], true); - } - } - - /** - * We've implemented version 2. - * And wlroots 0.15.0 has version 2 available. - */ - else if (strcmp(interface, zwlr_output_manager_v1_interface.name) == 0) { - mWlrOutputMgr = (zwlr_output_manager_v1 *) - wl_registry_bind(mObj, name, &zwlr_output_manager_v1_interface, 2); - - if (!mWlrOutputMgr) { - emitError(WQt::Registry::EmptyOutputManager); - } - - else { - mOutputMgr = new WQt::OutputManager(mWlrOutputMgr); - - mRegisteredInterfaces << OutputManagerInterface; - emitInterface(OutputManagerInterface, true); - } - } - - else if (strcmp(interface, treeland_output_manager_v1_interface.name) == 0) { - m_treeland_output_mgr = (treeland_output_manager_v1 *) - wl_registry_bind(mObj, name, &treeland_output_manager_v1_interface, 1); - if (!m_treeland_output_mgr) { - emitError(WQt::Registry::EmptyTreeLandOuputManager); - } else { - mTreeLandOutputMgr = new WQt::TreeLandOutputManager(m_treeland_output_mgr); - - mRegisteredInterfaces << TreeLandOutputManagerInterface; - emitInterface(TreeLandOutputManagerInterface, true); - } - } -} - -void WQt::Registry::handleRemove(uint32_t name) -{ - /** - * While we do not care about most of the handleRemove, - * we need to worry about the wl_output * objects. - */ - if (mOutputs.keys().contains(name)) { - WQt::Output *output = mOutputs.take(name); - emitOutput(output, false); - } -} - -void WQt::Registry::emitError(ErrorType et) -{ - if (mIsSetup) { - emit errorOccured(et); - } - - else { - pendingErrors << et; - } -} - -void WQt::Registry::emitOutput(WQt::Output *op, bool added) -{ - if (mIsSetup) { - if (added) { - emit outputAdded(op); - } - - else { - emit outputRemoved(op); - } - } - - else { - if (added) { - pendingOutputs << op; - } - - else { - pendingOutputs.removeAll(op); - } - } -} - -void WQt::Registry::emitInterface(WQt::Registry::Interface iface, bool added) -{ - if (mIsSetup) { - if (added) { - emit interfaceRegistered(iface); - } - - else { - emit interfaceDeregistered(iface); - } - } - - else { - if (added) { - pendingInterfaces << iface; - } - - else { - pendingInterfaces.removeAll(iface); - } - } -} diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/Registry.hpp b/dcc-old/src/plugin-display/wayland/libwayqt/Registry.hpp deleted file mode 100644 index b8d0217104..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/Registry.hpp +++ /dev/null @@ -1,197 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2021 Marcus Britanicus (https://gitlab.com/marcusbritanicus) - * Copyright (c) 2021 Abrar (https://gitlab.com/s96Abrar) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - -#pragma once - -#include -#include - -struct wl_registry; -struct wl_display; -struct wl_seat; -struct wl_shm; -struct wl_output; -// struct wl_compositor; - -struct wl_registry_listener; - -struct xdg_wm_base; -struct zwlr_output_manager_v1; -struct zwlr_gamma_control_manager_v1; -struct treeland_output_manager_v1; - -namespace WQt { -class Registry; -class XdgShell; - -class Output; -class OutputManager; -class TreeLandOutputManager; -} // namespace WQt - -class WQt::Registry : public QObject -{ - Q_OBJECT; - -public: - enum ErrorType { - EmptyShm, - EmptyIdle, - EmptySeat, - EmptyXdgWmBase, - EmptyCompositor, - EmptyOutputManager, - EmptyTreeLandOuputManager - }; - - Q_ENUM(ErrorType); - - enum Interface { - ShmInterface, - IdleInterface, - SeatInterface, - WlrIdleInterface, - XdgWmBaseInterface, - CompositorInterface, - OutputManagerInterface, - TreeLandOutputManagerInterface - }; - - Q_ENUM(Interface); - - Registry(wl_display *wlDisplay); - ~Registry(); - - void setup(); - - wl_registry *get(); - - wl_display *waylandDisplay(); - wl_seat *waylandSeat(); - wl_shm *waylandShm(); - - QList waylandOutputs(); - - /** List the already registered interfaces */ - QList registeredInterfaces(); - - /** - * Wait upto @timeout milliseconds for interface @id to become available. - * NOTE: This is a blocking call. - */ - bool waitForInterface(WQt::Registry::Interface id, int timeout = 500); - - /* Ready to use Wayland Classes */ - - /** - * XdgShell - Xdg Shell protocol implementation - */ - WQt::XdgShell *xdgShell(); - - /** - * OutputManager - Output Management protocol implementation - */ - WQt::OutputManager *outputManager(); - - /** - * TreeLandOutputManager - Primary Output Manager - */ - WQt::TreeLandOutputManager *treeLandOutputManager(); - -private: - /** Raw C pointer to this class */ - wl_registry *mObj = nullptr; - - /** wl_display object */ - wl_display *mWlDisplay = nullptr; - - /** wl_seat object */ - wl_seat *mWlSeat = nullptr; - - /** wl_shm object */ - wl_shm *mWlShm = nullptr; - - /** Connected outputs */ - QHash mOutputs; - - /** List of registered interfaces */ - QList mRegisteredInterfaces; - - /** - * Output Manager Objects - */ - zwlr_output_manager_v1 *mWlrOutputMgr = nullptr; - WQt::OutputManager *mOutputMgr = nullptr; - - /** - * Gamma Control Objects - */ - zwlr_gamma_control_manager_v1 *mWlrGammaCtrl = nullptr; - - treeland_output_manager_v1 *m_treeland_output_mgr = nullptr; - WQt::TreeLandOutputManager *mTreeLandOutputMgr = nullptr; - - static const wl_registry_listener mRegListener; - static void globalAnnounce(void *data, - wl_registry *registry, - uint32_t name, - const char *interface, - uint32_t version); - static void globalRemove(void *data, wl_registry *registry, uint32_t name); - - void handleAnnounce(uint32_t name, const char *interface, uint32_t version); - void handleRemove(uint32_t name); - - QList pendingErrors; - QList pendingOutputs; - QList pendingInterfaces; - - /** Flag to ensure setup() is called only once. */ - bool mIsSetup = false; - - /** emit errorOccured or store it in pending */ - void emitError(ErrorType); - - /** - * emit output added/removed or store in pending. - * bool indicates the state: true => added, false => removed. - */ - void emitOutput(WQt::Output *, bool); - - /** - * emit iInterface registered/deregistered, or store in pending. - * bool indicates the state: true => registered, false => deregistered. - */ - void emitInterface(WQt::Registry::Interface, bool); - -signals: - void errorOccured(ErrorType et); - - void outputAdded(WQt::Output *); - void outputRemoved(WQt::Output *); - - void interfaceRegistered(WQt::Registry::Interface); - void interfaceDeregistered(WQt::Registry::Interface); -}; diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/TreeLandOutputManager.cpp b/dcc-old/src/plugin-display/wayland/libwayqt/TreeLandOutputManager.cpp deleted file mode 100644 index f79e039c65..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/TreeLandOutputManager.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2024 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "TreeLandOutputManager.hpp" - -#include "treeland-output-management-client-protocol.h" - -#include - -#include -#include -#include -#include - -WQt::TreeLandOutputManager::TreeLandOutputManager(treeland_output_manager_v1 *opMgr) -{ - mObj = opMgr; - treeland_output_manager_v1_add_listener(mObj, &mListener, this); -} - -WQt::TreeLandOutputManager::~TreeLandOutputManager() -{ - treeland_output_manager_v1_destroy(mObj); -} - -void WQt::TreeLandOutputManager::setPrimaryOutput(const char *name) -{ - treeland_output_manager_v1_set_primary_output(mObj, name); -} - -void WQt::TreeLandOutputManager::handlePrimaryOutput( - void *data, - struct treeland_output_manager_v1 *treeland_output_manager_v1, - const char *output_name) -{ - Q_UNUSED(treeland_output_manager_v1) - WQt::TreeLandOutputManager *manager = reinterpret_cast(data); - manager->mPrimaryOutput = QString::fromLocal8Bit(output_name); - emit manager->primaryOutputChanged(output_name); -} - -const treeland_output_manager_v1_listener WQt::TreeLandOutputManager::mListener = { - handlePrimaryOutput -}; diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/TreeLandOutputManager.hpp b/dcc-old/src/plugin-display/wayland/libwayqt/TreeLandOutputManager.hpp deleted file mode 100644 index aadae0d07e..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/TreeLandOutputManager.hpp +++ /dev/null @@ -1,47 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2024 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include - -#include -#include -#include -#include - -struct wl_buffer; -struct wl_output; -struct treeland_output_manager_v1; -struct treeland_output_manager_v1_listener; - -namespace WQt { -class TreeLandOutputManager; -} - -class WQt::TreeLandOutputManager : public QObject -{ - Q_OBJECT; - -public: - TreeLandOutputManager(treeland_output_manager_v1 *); - ~TreeLandOutputManager(); - - /** Set the primary output */ - void setPrimaryOutput(const char *); - - QString mPrimaryOutput; - -private: - static void handlePrimaryOutput(void *data, - struct treeland_output_manager_v1 *treeland_output_manager_v1, - const char *output_name); - - static const treeland_output_manager_v1_listener mListener; - - treeland_output_manager_v1 *mObj; - -Q_SIGNALS: - void primaryOutputChanged(const char *); -}; diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/WayQtUtils.cpp b/dcc-old/src/plugin-display/wayland/libwayqt/WayQtUtils.cpp deleted file mode 100644 index 34d76c3283..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/WayQtUtils.cpp +++ /dev/null @@ -1,187 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2021 Marcus Britanicus (https://gitlab.com/marcusbritanicus) - * Copyright (c) 2021 Abrar (https://gitlab.com/s96Abrar) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - -#include "WayQtUtils.hpp" - -#include -#include - -#include -#include -#include - -wl_display *WQt::Wayland::display() -{ - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - - if (!native) { - return nullptr; - } - - struct wl_display *display = - reinterpret_cast(native->nativeResourceForIntegration("display")); - - return display; -} - -wl_compositor *WQt::Wayland::compositor() -{ - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - - if (!native) { - return nullptr; - } - - struct wl_compositor *display = - reinterpret_cast(native->nativeResourceForIntegration("compositor")); - - return display; -} - -wl_seat *WQt::Wayland::seat() -{ - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - - if (!native) { - return nullptr; - } - - struct wl_seat *display = - reinterpret_cast(native->nativeResourceForIntegration("wl_seat")); - - return display; -} - -wl_pointer *WQt::Wayland::pointer() -{ - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - - if (!native) { - return nullptr; - } - - struct wl_pointer *display = - reinterpret_cast(native->nativeResourceForIntegration("wl_pointer")); - - return display; -} - -wl_keyboard *WQt::Wayland::keyboard() -{ - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - - if (!native) { - return nullptr; - } - - struct wl_keyboard *display = - reinterpret_cast(native->nativeResourceForIntegration("wl_keyboard")); - - return display; -} - -wl_touch *WQt::Wayland::touch() -{ - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - - if (!native) { - return nullptr; - } - - struct wl_touch *display = - reinterpret_cast(native->nativeResourceForIntegration("wl_touch")); - - return display; -} - -void WQt::Utils::flushDisplay() -{ - wl_display_flush(WQt::Wayland::display()); -} - -void WQt::Utils::displayRoundtrip() -{ - wl_display_roundtrip(WQt::Wayland::display()); -} - -wl_output *WQt::Utils::wlOutputFromQScreen(QScreen *screen) -{ - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - - if (!native) { - return nullptr; - } - - struct wl_output *output = - reinterpret_cast(native->nativeResourceForScreen("output", screen)); - - return output; -} - -wl_surface *WQt::Utils::wlSurfaceFromQWindow(QWindow *window) -{ - window->create(); - QPlatformNativeInterface *native = QGuiApplication::platformNativeInterface(); - - if (!native) { - return nullptr; - } - - struct wl_surface *surface = - reinterpret_cast(native->nativeResourceForWindow("surface", window)); - - return surface; -} - -bool WQt::Utils::isWayland() -{ - /* Check if XDG_SESSION_TYPE is set */ - QString session = qgetenv("XDG_SESSION_TYPE"); - - if (session.toLower() == QStringLiteral("wayland")) { - return true; - } - - /* - * May be XDG_SESSION_TYPE is not set. Try Harder. - * We check if WAYLAND_DISPLAY is set. - */ - QString wlID = qgetenv("WAYLAND_DISPLAY"); - - if (not wlID.isEmpty()) { - return true; - } - - /* It's probably not a wayland session. */ - return false; -} - -bool WQt::Utils::isTreeland() -{ - /** Checking the WAYFIRE_CONFIG_FILE variable is sufficient for our cause */ - static auto diff = qgetenv("DDE_CURRENT_COMPOSITOR").compare("TreeLand", Qt::CaseInsensitive); - - return diff == 0; -} diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/WayQtUtils.hpp b/dcc-old/src/plugin-display/wayland/libwayqt/WayQtUtils.hpp deleted file mode 100644 index a6a7fca988..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/WayQtUtils.hpp +++ /dev/null @@ -1,61 +0,0 @@ -/** - * The MIT License (MIT) - * - * Copyright (c) 2021 Marcus Britanicus (https://gitlab.com/marcusbritanicus) - * Copyright (c) 2021 Abrar (https://gitlab.com/s96Abrar) - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - **/ - -#pragma once - -class QWindow; -class QScreen; - -struct wl_display; -struct wl_compositor; -struct wl_touch; -struct wl_keyboard; -struct wl_seat; -struct wl_pointer; - -struct wl_output; -struct wl_surface; - -namespace WQt { -namespace Wayland { -struct wl_display *display(); -struct wl_compositor *compositor(); -struct wl_seat *seat(); -struct wl_pointer *pointer(); -struct wl_keyboard *keyboard(); -struct wl_touch *touch(); -} // namespace Wayland - -namespace Utils { -struct wl_output *wlOutputFromQScreen(QScreen *screen); -struct wl_surface *wlSurfaceFromQWindow(QWindow *window); - -void flushDisplay(); -void displayRoundtrip(); - -bool isWayland(); -bool isTreeland(); -} // namespace Utils -} // namespace WQt diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/protocols/treeland-output-management.xml b/dcc-old/src/plugin-display/wayland/libwayqt/protocols/treeland-output-management.xml deleted file mode 100644 index de018189ff..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/protocols/treeland-output-management.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - . - SPDX-License-Identifier: MIT - ]]> - - - - Protocol for telling which is the primary display among the selection of enabled outputs. - - - - - - - - - - Specifies which output is the primary one identified by their name. - - - - - - - - - - - diff --git a/dcc-old/src/plugin-display/wayland/libwayqt/protocols/wlr-output-management-unstable-v1.xml b/dcc-old/src/plugin-display/wayland/libwayqt/protocols/wlr-output-management-unstable-v1.xml deleted file mode 100644 index bf0cc9329a..0000000000 --- a/dcc-old/src/plugin-display/wayland/libwayqt/protocols/wlr-output-management-unstable-v1.xml +++ /dev/null @@ -1,554 +0,0 @@ - - - - Copyright © 2019 Purism SPC - - Permission to use, copy, modify, distribute, and sell this - software and its documentation for any purpose is hereby granted - without fee, provided that the above copyright notice appear in - all copies and that both that copyright notice and this permission - notice appear in supporting documentation, and that the name of - the copyright holders not be used in advertising or publicity - pertaining to distribution of the software without specific, - written prior permission. The copyright holders make no - representations about the suitability of this software for any - purpose. It is provided "as is" without express or implied - warranty. - - THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS - SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY - SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN - AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, - ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF - THIS SOFTWARE. - - - - This protocol exposes interfaces to obtain and modify output device - configuration. - - Warning! The protocol described in this file is experimental and - backward incompatible changes may be made. Backward compatible changes - may be added together with the corresponding interface version bump. - Backward incompatible changes are done by bumping the version number in - the protocol and interface names and resetting the interface version. - Once the protocol is to be declared stable, the 'z' prefix and the - version number in the protocol and interface names are removed and the - interface version number is reset. - - - - - This interface is a manager that allows reading and writing the current - output device configuration. - - Output devices that display pixels (e.g. a physical monitor or a virtual - output in a window) are represented as heads. Heads cannot be created nor - destroyed by the client, but they can be enabled or disabled and their - properties can be changed. Each head may have one or more available modes. - - Whenever a head appears (e.g. a monitor is plugged in), it will be - advertised via the head event. Immediately after the output manager is - bound, all current heads are advertised. - - Whenever a head's properties change, the relevant wlr_output_head events - will be sent. Not all head properties will be sent: only properties that - have changed need to. - - Whenever a head disappears (e.g. a monitor is unplugged), a - wlr_output_head.finished event will be sent. - - After one or more heads appear, change or disappear, the done event will - be sent. It carries a serial which can be used in a create_configuration - request to update heads properties. - - The information obtained from this protocol should only be used for output - configuration purposes. This protocol is not designed to be a generic - output property advertisement protocol for regular clients. Instead, - protocols such as xdg-output should be used. - - - - - This event introduces a new head. This happens whenever a new head - appears (e.g. a monitor is plugged in) or after the output manager is - bound. - - - - - - - This event is sent after all information has been sent after binding to - the output manager object and after any subsequent changes. This applies - to child head and mode objects as well. In other words, this event is - sent whenever a head or mode is created or destroyed and whenever one of - their properties has been changed. Not all state is re-sent each time - the current configuration changes: only the actual changes are sent. - - This allows changes to the output configuration to be seen as atomic, - even if they happen via multiple events. - - A serial is sent to be used in a future create_configuration request. - - - - - - - Create a new output configuration object. This allows to update head - properties. - - - - - - - - Indicates the client no longer wishes to receive events for output - configuration changes. However the compositor may emit further events, - until the finished event is emitted. - - The client must not send any more requests after this one. - - - - - - This event indicates that the compositor is done sending manager events. - The compositor will destroy the object immediately after sending this - event, so it will become invalid and the client should release any - resources associated with it. - - - - - - - A head is an output device. The difference between a wl_output object and - a head is that heads are advertised even if they are turned off. A head - object only advertises properties and cannot be used directly to change - them. - - A head has some read-only properties: modes, name, description and - physical_size. These cannot be changed by clients. - - Other properties can be updated via a wlr_output_configuration object. - - Properties sent via this interface are applied atomically via the - wlr_output_manager.done event. No guarantees are made regarding the order - in which properties are sent. - - - - - This event describes the head name. - - The naming convention is compositor defined, but limited to alphanumeric - characters and dashes (-). Each name is unique among all wlr_output_head - objects, but if a wlr_output_head object is destroyed the same name may - be reused later. The names will also remain consistent across sessions - with the same hardware and software configuration. - - Examples of names include 'HDMI-A-1', 'WL-1', 'X11-1', etc. However, do - not assume that the name is a reflection of an underlying DRM - connector, X11 connection, etc. - - If the compositor implements the xdg-output protocol and this head is - enabled, the xdg_output.name event must report the same name. - - The name event is sent after a wlr_output_head object is created. This - event is only sent once per object, and the name does not change over - the lifetime of the wlr_output_head object. - - - - - - - This event describes a human-readable description of the head. - - The description is a UTF-8 string with no convention defined for its - contents. Examples might include 'Foocorp 11" Display' or 'Virtual X11 - output via :1'. However, do not assume that the name is a reflection of - the make, model, serial of the underlying DRM connector or the display - name of the underlying X11 connection, etc. - - If the compositor implements xdg-output and this head is enabled, - the xdg_output.description must report the same description. - - The description event is sent after a wlr_output_head object is created. - This event is only sent once per object, and the description does not - change over the lifetime of the wlr_output_head object. - - - - - - - This event describes the physical size of the head. This event is only - sent if the head has a physical size (e.g. is not a projector or a - virtual device). - - - - - - - - This event introduces a mode for this head. It is sent once per - supported mode. - - - - - - - This event describes whether the head is enabled. A disabled head is not - mapped to a region of the global compositor space. - - When a head is disabled, some properties (current_mode, position, - transform and scale) are irrelevant. - - - - - - - This event describes the mode currently in use for this head. It is only - sent if the output is enabled. - - - - - - - This events describes the position of the head in the global compositor - space. It is only sent if the output is enabled. - - - - - - - - This event describes the transformation currently applied to the head. - It is only sent if the output is enabled. - - - - - - - This events describes the scale of the head in the global compositor - space. It is only sent if the output is enabled. - - - - - - - The compositor will destroy the object immediately after sending this - event, so it will become invalid and the client should release any - resources associated with it. - - - - - - - This event describes the manufacturer of the head. - - This must report the same make as the wl_output interface does in its - geometry event. - - Together with the model and serial_number events the purpose is to - allow clients to recognize heads from previous sessions and for example - load head-specific configurations back. - - It is not guaranteed this event will be ever sent. A reason for that - can be that the compositor does not have information about the make of - the head or the definition of a make is not sensible in the current - setup, for example in a virtual session. Clients can still try to - identify the head by available information from other events but should - be aware that there is an increased risk of false positives. - - It is not recommended to display the make string in UI to users. For - that the string provided by the description event should be preferred. - - - - - - - This event describes the model of the head. - - This must report the same model as the wl_output interface does in its - geometry event. - - Together with the make and serial_number events the purpose is to - allow clients to recognize heads from previous sessions and for example - load head-specific configurations back. - - It is not guaranteed this event will be ever sent. A reason for that - can be that the compositor does not have information about the model of - the head or the definition of a model is not sensible in the current - setup, for example in a virtual session. Clients can still try to - identify the head by available information from other events but should - be aware that there is an increased risk of false positives. - - It is not recommended to display the model string in UI to users. For - that the string provided by the description event should be preferred. - - - - - - - This event describes the serial number of the head. - - Together with the make and model events the purpose is to allow clients - to recognize heads from previous sessions and for example load head- - specific configurations back. - - It is not guaranteed this event will be ever sent. A reason for that - can be that the compositor does not have information about the serial - number of the head or the definition of a serial number is not sensible - in the current setup. Clients can still try to identify the head by - available information from other events but should be aware that there - is an increased risk of false positives. - - It is not recommended to display the serial_number string in UI to - users. For that the string provided by the description event should be - preferred. - - - - - - - - This object describes an output mode. - - Some heads don't support output modes, in which case modes won't be - advertised. - - Properties sent via this interface are applied atomically via the - wlr_output_manager.done event. No guarantees are made regarding the order - in which properties are sent. - - - - - This event describes the mode size. The size is given in physical - hardware units of the output device. This is not necessarily the same as - the output size in the global compositor space. For instance, the output - may be scaled or transformed. - - - - - - - - This event describes the mode's fixed vertical refresh rate. It is only - sent if the mode has a fixed refresh rate. - - - - - - - This event advertises this mode as preferred. - - - - - - The compositor will destroy the object immediately after sending this - event, so it will become invalid and the client should release any - resources associated with it. - - - - - - - This object is used by the client to describe a full output configuration. - - First, the client needs to setup the output configuration. Each head can - be either enabled (and configured) or disabled. It is a protocol error to - send two enable_head or disable_head requests with the same head. It is a - protocol error to omit a head in a configuration. - - Then, the client can apply or test the configuration. The compositor will - then reply with a succeeded, failed or cancelled event. Finally the client - should destroy the configuration object. - - - - - - - - - - - Enable a head. This request creates a head configuration object that can - be used to change the head's properties. - - - - - - - - Disable a head. - - - - - - - Apply the new output configuration. - - In case the configuration is successfully applied, there is no guarantee - that the new output state matches completely the requested - configuration. For instance, a compositor might round the scale if it - doesn't support fractional scaling. - - After this request has been sent, the compositor must respond with an - succeeded, failed or cancelled event. Sending a request that isn't the - destructor is a protocol error. - - - - - - Test the new output configuration. The configuration won't be applied, - but will only be validated. - - Even if the compositor succeeds to test a configuration, applying it may - fail. - - After this request has been sent, the compositor must respond with an - succeeded, failed or cancelled event. Sending a request that isn't the - destructor is a protocol error. - - - - - - Sent after the compositor has successfully applied the changes or - tested them. - - Upon receiving this event, the client should destroy this object. - - If the current configuration has changed, events to describe the changes - will be sent followed by a wlr_output_manager.done event. - - - - - - Sent if the compositor rejects the changes or failed to apply them. The - compositor should revert any changes made by the apply request that - triggered this event. - - Upon receiving this event, the client should destroy this object. - - - - - - Sent if the compositor cancels the configuration because the state of an - output changed and the client has outdated information (e.g. after an - output has been hotplugged). - - The client can create a new configuration with a newer serial and try - again. - - Upon receiving this event, the client should destroy this object. - - - - - - Using this request a client can tell the compositor that it is not going - to use the configuration object anymore. Any changes to the outputs - that have not been applied will be discarded. - - This request also destroys wlr_output_configuration_head objects created - via this object. - - - - - - - This object is used by the client to update a single head's configuration. - - It is a protocol error to set the same property twice. - - - - - - - - - - - - - This request sets the head's mode. - - - - - - - This request assigns a custom mode to the head. The size is given in - physical hardware units of the output device. If set to zero, the - refresh rate is unspecified. - - It is a protocol error to set both a mode and a custom mode. - - - - - - - - - This request sets the head's position in the global compositor space. - - - - - - - - This request sets the head's transform. - - - - - - - This request sets the head's scale. - - - - - diff --git a/dcc-old/src/plugin-display/window/DisplayPlugin.json b/dcc-old/src/plugin-display/window/DisplayPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-display/window/DisplayPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-display/window/brightnesswidget.cpp b/dcc-old/src/plugin-display/window/brightnesswidget.cpp deleted file mode 100644 index ab78edca97..0000000000 --- a/dcc-old/src/plugin-display/window/brightnesswidget.cpp +++ /dev/null @@ -1,344 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "brightnesswidget.h" -#include "operation/displaymodel.h" -#include "operation/monitor.h" - -#include "widgets/dccslider.h" - -#include -#include - -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -const double BrightnessMaxScale = 100.0; -const int PercentageNum = 100; -const double DoubleZero = 0.01; //后端传入的doube指为浮点型,有效位数为2位小数,存在精度丢失 - -BrightnessWidget::BrightnessWidget(QWidget *parent) - : QWidget(parent) - , m_displayModel(nullptr) - , m_centralLayout(new QVBoxLayout(this)) - , m_autoLightSpacerItem(new QSpacerItem(0, 10)) - , m_autoLightMode(new SwitchWidget(this)) - , m_colorSpacerItem(new QSpacerItem(0, 20)) - , m_tempratureColorWidget(new QWidget(this)) - , m_nightShift(new SwitchWidget(this)) - , m_settingsGroup(new SettingsGroup(nullptr, SettingsGroup::GroupBackground)) - , m_nightManual(new SwitchWidget(this)) - , m_cctItem(new TitledSliderItem(QString(), this)) - , m_nightShiftSpacerItem(new QSpacerItem(0, 10)) - , m_nightTipsSpacerItem(new QSpacerItem(0, 6)) - , m_nightManualSpacerItem(new QSpacerItem(0, 20)) -{ - m_centralLayout->setMargin(0); - m_centralLayout->setSpacing(0); - - m_brightnessTitle = new TitleLabel(tr("Brightness"), this); - - m_tempratureColorTitle = new TitleLabel(tr("Color Temperature"), this); - m_centralLayout->addWidget(m_brightnessTitle); - - m_centralLayout->addSpacerItem(m_autoLightSpacerItem); - - m_autoLightMode->setTitle(tr("Auto Brightness")); - m_autoLightMode->addBackground(); - m_autoLightMode->setVisible(false); - m_centralLayout->addWidget(m_autoLightMode); - - m_centralLayout->addSpacerItem(m_colorSpacerItem); - - m_centralLayout->addWidget(m_tempratureColorTitle); - - m_nightShift->setTitle(tr("Night Shift")); - m_nightShift->addBackground(); - m_centralLayout->addSpacerItem(m_nightShiftSpacerItem); - m_centralLayout->addWidget(m_nightShift); - - m_nightTips = new DTipLabel(tr("The screen hue will be auto adjusted according to your location"), m_tempratureColorWidget); - m_tempratureColorWidget->setAccessibleName("BrightnessWidget_tempratureColor"); - m_nightTips->setForegroundRole(DPalette::TextTips); - m_nightTips->setWordWrap(true); - m_nightTips->setAlignment(Qt::AlignTop | Qt::AlignLeft); - m_nightTips->adjustSize(); - m_nightTips->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); - m_nightTips->setContentsMargins(10, 0, 0, 0); - m_centralLayout->addSpacerItem(m_nightTipsSpacerItem); - m_centralLayout->addWidget(m_nightTips); - - m_nightManual->setTitle(tr("Change Color Temperature")); - m_cctItem->setAnnotations({tr("Cool"), "", tr("Warm")}); - m_settingsGroup->appendItem(m_nightManual); - m_settingsGroup->appendItem(m_cctItem); - m_centralLayout->addSpacerItem(m_nightManualSpacerItem); - m_centralLayout->addWidget(m_settingsGroup); - - m_tempratureColorWidget->setLayout(m_centralLayout); - m_centralLayout->addWidget(m_tempratureColorWidget); - setLayout(m_centralLayout); -} - -BrightnessWidget::~BrightnessWidget() -{ -} - -void BrightnessWidget::setMode(DisplayModel *model) -{ - m_displayModel = model; - - connect(m_autoLightMode, &SwitchWidget::checkedChanged, this, &BrightnessWidget::requestAmbientLightAdjustBrightness); - connect(m_displayModel, &DisplayModel::adjustCCTmodeChanged, this, &BrightnessWidget::setAdjustCCTmode); - connect(m_nightManual, &SwitchWidget::checkedChanged, this, [=](const bool enable) { - if (enable) { - Q_EMIT requestSetMethodAdjustCCT(2); - } else { - Q_EMIT requestSetMethodAdjustCCT(0); - } - }); - connect(m_nightShift, &SwitchWidget::checkedChanged, this, [=](const bool enable) { - if (enable) { - Q_EMIT requestSetMethodAdjustCCT(1); - } else { - Q_EMIT requestSetMethodAdjustCCT(0); - } - }); - connect(m_displayModel, &DisplayModel::autoLightAdjustVaildChanged, this, [=](const bool enable) { - m_autoLightSpacerItem->changeSize(0, enable ? 10 : 0); - m_autoLightMode->setVisible(enable); - }); - connect(m_displayModel, &DisplayModel::autoLightAdjustSettingChanged, m_autoLightMode, &SwitchWidget::setChecked); - - m_autoLightSpacerItem->changeSize(0, model->autoLightAdjustIsValid() ? 10 : 0); - m_autoLightMode->setVisible(model->autoLightAdjustIsValid()); - m_autoLightMode->setChecked(model->isAudtoLightAdjust()); - setAdjustCCTmode(model->adjustCCTMode()); //0不调节色温 1 自动调节 2手动调节 - setColorTemperatureVisible(model->redshiftIsValid()); - connect(model, &DisplayModel::redshiftVaildChanged, this, &BrightnessWidget::setColorTemperatureVisible); - - addSlider(); -} - -void BrightnessWidget::setColorTemperatureVisible(bool visible) -{ - m_nightShiftSpacerItem->changeSize(0, visible ? 10 : 0); - m_nightTipsSpacerItem->changeSize(0, visible ? 6 : 0); - m_nightManualSpacerItem->changeSize(0, visible ? 20 : 0); - m_nightShift->setVisible(visible); - m_tempratureColorTitle->setVisible(visible); - m_tempratureColorWidget->setVisible(visible); - m_nightTips->setVisible(visible); - m_nightManual->setVisible(visible); - m_cctItem->setVisible(visible && m_displayModel->adjustCCTMode() == 2); -} - -void BrightnessWidget::setAdjustCCTmode(int mode) -{ - m_nightShift->blockSignals(true); - m_nightManual->blockSignals(true); - m_nightShift->switchButton()->setChecked(mode == 1); - m_nightManual->switchButton()->setChecked(mode == 2); - m_cctItem->blockSignals(true); - //当布局器A中嵌套布局器B时,B中的控件隐藏时,需要先隐藏B再隐藏控件,消除控件闪动问题 - m_settingsGroup->hide(); - m_cctItem->setVisible(m_displayModel->adjustCCTMode() == 2); - m_settingsGroup->show(); - m_cctItem->blockSignals(false); - m_nightShift->blockSignals(false); - m_nightManual->blockSignals(false); -} - -void BrightnessWidget::showBrightness(Monitor *monitor) -{ - bool bTitle(false); - QMap::const_iterator iter; - for (iter = m_monitorBrightnessMap.cbegin(); iter != m_monitorBrightnessMap.cend(); ++iter) { - iter.value()->setVisible(monitor == nullptr || iter.key() == monitor); - if (!bTitle && (monitor == nullptr || iter.key() == monitor)) { - bTitle = true; - } - } - m_brightnessTitle->setVisible(bTitle); - //色温模块不显示的时候 设置空白区域高度为0 - m_colorSpacerItem->changeSize(0, bTitle && m_displayModel->redshiftIsValid() ? 20 : 0); -} - -void BrightnessWidget::addSlider() -{ - auto monList = m_displayModel->monitorList(); - for (auto monitor : monList) { - if (!monitor->canBrightness()) { - monList.removeOne(monitor); - } - } - - for (int i = 0; i < monList.size(); ++i) { - //单独显示每个亮度调节名 - TitledSliderItem *slideritem = new TitledSliderItem(monList[i]->name(), this); - slideritem->setAccessibleName("BrightnessWidget_TitledSliderItem"); - slideritem->addBackground(); - DCCSlider *slider = slideritem->slider(); - int maxBacklight = static_cast(m_displayModel->maxBacklightBrightness()); - if (maxBacklight == 0) { - qDebug() << "MinimumBrightness: " << m_displayModel->minimumBrightnessScale(); - int miniScale = int(m_displayModel->minimumBrightnessScale() * BrightnessMaxScale); - double brightness = monList[i]->brightness(); - slideritem->setValueLiteral(brightnessToTickInterval(brightness)); - slider->setRange(miniScale, int(BrightnessMaxScale)); - slider->setType(DCCSlider::Vernier); - slider->setTickPosition(QSlider::TicksBelow); - slider->setLeftIcon(DIconTheme::findQIcon("dcc_brightnesslow")); - slider->setRightIcon(DIconTheme::findQIcon("dcc_brightnesshigh")); - slider->setIconSize(QSize(24, 24)); - slider->setTickInterval(int((BrightnessMaxScale - miniScale) / 5.0)); - slider->setValue(int(brightness * BrightnessMaxScale)); - slider->setPageStep(1); - - auto onValueChanged = [=](int pos) { - this->requestSetMonitorBrightness(monList[i], pos / BrightnessMaxScale); - this->requestAmbientLightAdjustBrightness(false); - this->m_autoLightMode->setChecked(false); - }; - - connect(slider, &DCCSlider::valueChanged, this, onValueChanged); - connect(slider, &DCCSlider::sliderMoved, this, onValueChanged); - - connect(monList[i], &Monitor::brightnessChanged, this, [=](const double rb) { - slider->blockSignals(true); - if ((rb - m_displayModel->minimumBrightnessScale()) < 0.00001) { - slideritem->setValueLiteral(QString("%1%").arg(int(m_displayModel->minimumBrightnessScale() * BrightnessMaxScale))); - slider->setValue(int(m_displayModel->minimumBrightnessScale() * BrightnessMaxScale)); - } else { - slideritem->setValueLiteral(QString("%1%").arg(int(rb * BrightnessMaxScale))); - slider->setValue(int(rb * BrightnessMaxScale)); - } - slider->blockSignals(false); - }); - - connect(m_displayModel, &DisplayModel::minimumBrightnessScaleChanged, - this, [=](const double ms) { - double rb = monList[i]->brightness(); - int tmini = int(ms * PercentageNum); - slider->setMinimum(tmini); - slider->setTickInterval(int((BrightnessMaxScale - tmini) / 5.0)); - - slider->blockSignals(true); - slideritem->setValueLiteral(brightnessToTickInterval(rb)); - slider->setValue(int(rb * BrightnessMaxScale)); - slider->blockSignals(false); - }); - } else { - qDebug() << "MinimumBrightness: " << m_displayModel->minimumBrightnessScale(); - m_miniScales = int(m_displayModel->minimumBrightnessScale() * maxBacklight); - if (m_miniScales == 0) { - m_miniScales = 1; - } - double brightness = monList[i]->brightness(); - slideritem->setValueLiteral(brightnessToTickInterval(brightness)); - slider->setRange(m_miniScales, maxBacklight); - slider->setType(DCCSlider::Vernier); - slider->setTickPosition(QSlider::TicksBelow); - slider->setLeftIcon(DIconTheme::findQIcon("dcc_brightnesslow")); - slider->setRightIcon(DIconTheme::findQIcon("dcc_brightnesshigh")); - slider->setIconSize(QSize(24, 24)); - slider->setTickInterval(1); - slider->setValue(int((brightness + DoubleZero) * maxBacklight)); - slider->setPageStep(1); - QStringList speedList; - int j = m_miniScales; - for (; j <= maxBacklight; j++) { - speedList << ""; - } - slideritem->setAnnotations(speedList); - - auto onValueChanged = [=](int pos) { - this->requestSetMonitorBrightness(monList[i], pos / double(maxBacklight)); - this->requestAmbientLightAdjustBrightness(false); - this->m_autoLightMode->setChecked(false); - }; - - connect(slider, &DCCSlider::valueChanged, this, onValueChanged); - connect(slider, &DCCSlider::sliderMoved, this, onValueChanged); - - connect(monList[i], &Monitor::brightnessChanged, this, [=](const double rb) { - slider->blockSignals(true); - slideritem->setValueLiteral(brightnessToTickInterval(rb)); - if ((rb - m_displayModel->minimumBrightnessScale()) < 0.00001) { - slider->setValue(int((m_displayModel->minimumBrightnessScale() + DoubleZero) * maxBacklight)); - } else { - slider->setValue(int((rb + DoubleZero) * maxBacklight)); - } - slider->blockSignals(false); - }); - - connect(m_displayModel, &DisplayModel::minimumBrightnessScaleChanged, - this, [=](const double ms) { - double rb = monList[i]->brightness(); - int tmini = int(ms * PercentageNum); - slider->setMinimum(tmini); - slider->setTickInterval(int((BrightnessMaxScale - tmini) / 5.0)); - - slider->blockSignals(true); - slideritem->setValueLiteral(brightnessToTickInterval(rb)); - slider->setValue(int((rb + DoubleZero) * BrightnessMaxScale)); - slider->blockSignals(false); - }); - } - QWidget *brightnessSlideritem = new QWidget(this); - brightnessSlideritem->setAccessibleName("brightnessSlideritem"); - QVBoxLayout *sliderLayout = new QVBoxLayout(brightnessSlideritem); - sliderLayout->setContentsMargins(0, 10, 0, 0); - sliderLayout->addWidget(slideritem); - brightnessSlideritem->setLayout(sliderLayout); - m_centralLayout->insertWidget(1, brightnessSlideritem); - m_monitorBrightnessMap[monList[i]] = brightnessSlideritem; - } - - DCCSlider *cctSlider = m_cctItem->slider(); - cctSlider->setRange(0, 100); - cctSlider->setType(DCCSlider::Vernier); - cctSlider->setTickPosition(QSlider::TicksBelow); - cctSlider->setTickInterval(10); - cctSlider->setPageStep(1); - cctSlider->setValue(colorTemperatureToValue(m_displayModel->colorTemperature())); - connect(m_displayModel, &DisplayModel::colorTemperatureChanged, this, [=](int value) { - cctSlider->blockSignals(true); - cctSlider->setValue(colorTemperatureToValue(value)); - cctSlider->blockSignals(false); - }); - - connect(cctSlider, &DCCSlider::valueChanged, this, [=](int pos) { - int kelvin = pos > 50 ? (6500 - (pos - 50) * 100) : (6500 + (50 - pos) * 300); - this->requestSetColorTemperature(kelvin); - }); - connect(cctSlider, &DCCSlider::sliderMoved, this, [=](int pos) { - int kelvin = pos > 50 ? (6500 - (pos - 50) * 100) : (6500 + (50 - pos) * 300); - this->requestSetColorTemperature(kelvin); - }); -} - -int BrightnessWidget::colorTemperatureToValue(int kelvin) -{ - //色温范围有效值10000-25000 值越大,色温越冷,不开启色温时值为6500,超过18000基本看不出变化,小于1500色温实际效果没法看,无实际价值 - //此处取有效至1500-21500 - if (kelvin >= 6500) - return 50 - (kelvin - 6500) / 300; - else if (kelvin < 6500 && kelvin >= 1000) - return 50 - (kelvin - 6500) / 100; - else - return 0; -} - -QString BrightnessWidget::brightnessToTickInterval(const double tb) const -{ - int tmini = int(m_displayModel->minimumBrightnessScale() * BrightnessMaxScale); - int tnum = int(tb * BrightnessMaxScale); - tnum = tnum > tmini ? tnum : tmini; - return QString::number(int(tnum)) + "%"; -} diff --git a/dcc-old/src/plugin-display/window/brightnesswidget.h b/dcc-old/src/plugin-display/window/brightnesswidget.h deleted file mode 100644 index dd57c81805..0000000000 --- a/dcc-old/src/plugin-display/window/brightnesswidget.h +++ /dev/null @@ -1,81 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef BRIGHTNESSWIDGET_H -#define BRIGHTNESSWIDGET_H - -#include "interface/namespace.h" - -#include "widgets/titlelabel.h" -#include "widgets/settingsgroup.h" -#include "widgets/switchwidget.h" -#include "widgets/titledslideritem.h" - -#include -#include - -#include - -class QLabel; -class QVBoxLayout; -class QSpacerItem; - -namespace DCC_NAMESPACE { - -class TipsLabel; -class SwitchWidget; -class SettingsGroup; -class TitledSliderItem; -class Monitor; -class DisplayModel; - -class BrightnessWidget : public QWidget -{ - Q_OBJECT -public: - explicit BrightnessWidget(QWidget *parent = nullptr); - ~BrightnessWidget(); - -public: - void setMode(DisplayModel *model); - void setAdjustCCTmode(int mode); - void showBrightness(Monitor *monitor = nullptr); - -Q_SIGNALS: - void requestSetMonitorBrightness(Monitor *monitor, const double brightness); - void requestAmbientLightAdjustBrightness(const bool able); - void requestSetColorTemperature(const int value); - void requestSetMethodAdjustCCT(const int mode); - -private: - void addSlider(); - int colorTemperatureToValue(int kelvin); - QString brightnessToTickInterval(const double tb) const; - void setColorTemperatureVisible(bool visible); - -private: - DisplayModel *m_displayModel; - - QVBoxLayout *m_centralLayout; - TitleLabel *m_brightnessTitle; - QSpacerItem *m_autoLightSpacerItem; - SwitchWidget *m_autoLightMode; - QSpacerItem *m_colorSpacerItem; - QWidget *m_tempratureColorWidget; - TitleLabel *m_tempratureColorTitle; - SwitchWidget *m_nightShift; - DTK_WIDGET_NAMESPACE::DTipLabel *m_nightTips; - SettingsGroup *m_settingsGroup; - SwitchWidget *m_nightManual; - TitledSliderItem *m_cctItem; - QSpacerItem *m_nightShiftSpacerItem; - QSpacerItem *m_nightTipsSpacerItem; - QSpacerItem *m_nightManualSpacerItem; - - int m_miniScales = 0; - QMap m_monitorBrightnessMap; -}; - -} - -#endif // BRIGHTNESSWIDGET_H diff --git a/dcc-old/src/plugin-display/window/cooperationsettingsdialog.cpp b/dcc-old/src/plugin-display/window/cooperationsettingsdialog.cpp deleted file mode 100644 index 8effbf2c99..0000000000 --- a/dcc-old/src/plugin-display/window/cooperationsettingsdialog.cpp +++ /dev/null @@ -1,183 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "cooperationsettingsdialog.h" - -#include -#include -#include -#include - -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -CooperationSettingsDialog::CooperationSettingsDialog(QWidget *parent) - : DAbstractDialog(parent) - , m_mainLayout(new QVBoxLayout(this)) - , m_mousekeyboardSwitch(new SwitchWidget(this)) - , m_shearSwitch(new SwitchWidget(this)) - , m_storageItem(new FileChooseWidget(this)) - , m_buttonTuple(new ButtonTuple(ButtonTuple::Save, this)) -{ - initWidget(); - initConnect(); - QWidget::installEventFilter(this); - m_storageItem->edit()->lineEdit()->installEventFilter(this); -} - -CooperationSettingsDialog::~CooperationSettingsDialog() -{ - -} - -void CooperationSettingsDialog::onSetWindowEnabled(const bool isEnabled) -{ - this->setEnabled(isEnabled); -} - -void CooperationSettingsDialog::setOpenSharedDevices(bool on) -{ - m_mousekeyboardSwitch->setChecked(on); -} - -void CooperationSettingsDialog::setOpenSharedClipboard(bool on) -{ - m_shearSwitch->setChecked(on); -} - -void CooperationSettingsDialog::setFilesStoragePath(const QString &path) -{ - m_storagePath = path; - m_storageItem->edit()->setText(path); -} - -void CooperationSettingsDialog::closeEvent(QCloseEvent *event) -{ - QDialog::closeEvent(event); -} - -bool CooperationSettingsDialog::eventFilter(QObject *o, QEvent *e) -{ - // 实现鼠标点击编辑框,确定按钮激活,统一网络模块处理,捕捉FocusIn消息 - if (e->type() == QEvent::FocusIn) { - if (dynamic_cast(o)) { - setButtonEnabled(); - } - } - - if (o == this && QEvent::WindowDeactivate == e->type()) { - clearFocus(); - setFocus(); - return true; - } - return false; -} - -void CooperationSettingsDialog::initWidget() -{ - setFixedSize(QSize(480, 362)); -// m_mainLayout->setAlignment(Qt::AlignVCenter); - - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("Collaboration Settings")); - - // 共享鼠标键盘 - m_mousekeyboardSwitch->setTitle(tr("Share mouse and keyboard")); - m_mousekeyboardSwitch->addBackground(); - m_mousekeyboardSwitch->setContentsMargins(10, 0, 10, 0); - - // 提示信息 - m_mousekeyboardTips = new DTipLabel(tr("Share your mouse and keyboard across devices"), this); - m_mousekeyboardTips->setForegroundRole(DPalette::TextTips); - m_mousekeyboardTips->setWordWrap(true); - m_mousekeyboardTips->setAlignment(Qt::AlignTop | Qt::AlignLeft); - m_mousekeyboardTips->adjustSize(); - m_mousekeyboardTips->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); - m_mousekeyboardTips->setContentsMargins(20, 0, 0, 0); - - // 剪切板共享 - m_shearSwitch->setTitle(tr("Share clipboard")); - m_shearSwitch->addBackground(); - m_shearSwitch->setContentsMargins(10, 0, 10, 0); - - // 共享存储 - m_storageItem->setTitle(tr("Storage path for shared files")); - m_storageItem->edit()->setDialogDisplayPosition(DFileChooserEdit::DialogDisplayPosition::FollowParentWindow); - m_storageItem->setContentsMargins(10, 0, 10, 0); - m_storageTips = new DTipLabel(tr("Share the copied content across devices"), this); - m_storageTips->setForegroundRole(DPalette::TextTips); - m_storageTips->setWordWrap(true); - m_storageTips->setAlignment(Qt::AlignTop | Qt::AlignLeft); - m_storageTips->adjustSize(); - m_storageTips->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); - m_storageTips->setContentsMargins(20, 0, 0, 0); - - // 下方按钮 - QPushButton *cancelBtn = m_buttonTuple->leftButton(); - QPushButton *acceptBtn = m_buttonTuple->rightButton(); - - cancelBtn->setText(tr("Cancel", "button")); - acceptBtn->setText(tr("Confirm", "button")); - setButtonDisabled(); - m_buttonTuple->setContentsMargins(75, 0, 75, 0); - - m_mainLayout->addWidget(titleIcon, Qt::AlignTop); - m_mainLayout->addSpacing(20); - m_mainLayout->addWidget(m_mousekeyboardSwitch, 0, Qt::AlignVCenter); - m_mainLayout->addWidget(m_mousekeyboardTips, 0, Qt::AlignVCenter); - m_mainLayout->addSpacing(15); - - m_mainLayout->addWidget(m_shearSwitch, 0, Qt::AlignVCenter); - m_mainLayout->addSpacing(15); - m_mainLayout->addWidget(m_storageItem, 0, Qt::AlignVCenter); - m_mainLayout->addWidget(m_storageTips, 0, Qt::AlignVCenter); - m_mainLayout->addSpacing(30); - - m_mainLayout->addWidget(m_buttonTuple); - m_mainLayout->addSpacing(10); - - m_mainLayout->setMargin(0); - m_mainLayout->setSpacing(0); - m_mainLayout->setContentsMargins(10, 0, 10, 0); - setLayout(m_mainLayout); - - this->activateWindow(); - this->setFocus(); -} - -void CooperationSettingsDialog::initConnect() -{ - connect(m_storageItem->edit()->lineEdit(), &QLineEdit::textChanged, [this](const QString& filePath){ - if (filePath != m_storagePath) { - setFilesStoragePath(filePath); - } - setButtonTupleState(true); - }); - connect(m_shearSwitch, &SwitchWidget::checkedChanged, this, &CooperationSettingsDialog::setButtonEnabled); - connect(m_mousekeyboardSwitch, &SwitchWidget::checkedChanged, this, &CooperationSettingsDialog::setButtonEnabled); - connect(m_buttonTuple->leftButton(), &QPushButton::clicked, this, &CooperationSettingsDialog::close); - connect(m_buttonTuple->rightButton(), &QPushButton::clicked, this, &CooperationSettingsDialog::accept); -} - -void CooperationSettingsDialog::setButtonTupleState(bool state) -{ - m_buttonTuple->rightButton()->setChecked(state); -} - -void CooperationSettingsDialog::setButtonEnabled() -{ - m_buttonTuple->leftButton()->setEnabled(true); - m_buttonTuple->rightButton()->setEnabled(true); -} - -void CooperationSettingsDialog::setButtonDisabled() -{ - m_buttonTuple->leftButton()->setDisabled(true); - m_buttonTuple->rightButton()->setDisabled(true); -} diff --git a/dcc-old/src/plugin-display/window/cooperationsettingsdialog.h b/dcc-old/src/plugin-display/window/cooperationsettingsdialog.h deleted file mode 100644 index 64bdab5163..0000000000 --- a/dcc-old/src/plugin-display/window/cooperationsettingsdialog.h +++ /dev/null @@ -1,71 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef COOPERATIONSETTINGSDIALOG_H -#define COOPERATIONSETTINGSDIALOG_H - -#include "filechoosewidget.h" - -#include "interface/namespace.h" - -#include "widgets/buttontuple.h" -#include "widgets/switchwidget.h" - -#include -#include -#include - -QT_BEGIN_NAMESPACE -class QDialog; -class QVBoxLayout; -QT_END_NAMESPACE - -// 协同设置 -class CooperationSettingsDialog : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit CooperationSettingsDialog(QWidget *parent = nullptr); - ~CooperationSettingsDialog(); - - void onSetWindowEnabled(const bool isEnabled); - - DCC_NAMESPACE::SwitchWidget *mousekeyboardSwitch() { return m_mousekeyboardSwitch; } - DCC_NAMESPACE::SwitchWidget *shearClipboardSwitch() { return m_shearSwitch; } - DCC_NAMESPACE::ButtonTuple *buttonTuple() { return m_buttonTuple; } - const QString& storagePath() { return m_storagePath; } - -Q_SIGNALS: - void requestFilesStoragePath(const QString &path); - -public Q_SLOTS: - void setOpenSharedDevices(bool on); - void setOpenSharedClipboard(bool on); - void setFilesStoragePath(const QString& path); - void setButtonEnabled(); - void setButtonDisabled(); - -protected: - void closeEvent(QCloseEvent *event) override; - bool eventFilter(QObject *o, QEvent *e) override; - -private: - void initWidget(); - void initConnect(); - void setButtonTupleState(bool state); - -private: - QVBoxLayout *m_mainLayout; - DCC_NAMESPACE::SwitchWidget *m_mousekeyboardSwitch; - DTK_WIDGET_NAMESPACE::DTipLabel *m_mousekeyboardTips; - - DCC_NAMESPACE::SwitchWidget *m_shearSwitch; // 剪切板共享 - - FileChooseWidget *m_storageItem; // 共享存储 - DTK_WIDGET_NAMESPACE::DTipLabel *m_storageTips; - - DCC_NAMESPACE::ButtonTuple *m_buttonTuple; - QString m_storagePath; -}; - -#endif // COOPERATIONSETTINGSDIALOG_H diff --git a/dcc-old/src/plugin-display/window/displaymodule.cpp b/dcc-old/src/plugin-display/window/displaymodule.cpp deleted file mode 100644 index 19777ca7a8..0000000000 --- a/dcc-old/src/plugin-display/window/displaymodule.cpp +++ /dev/null @@ -1,488 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "displaymodule.h" -#include "brightnesswidget.h" -#include "scalingwidget.h" -#include "resolutionwidget.h" -#include "refreshratewidget.h" -#include "rotatewidget.h" -#include "multiscreenwidget.h" -#include "timeoutdialog.h" - -#include "operation/displaymodel.h" -#include "operation/displayworker.h" - -#include -#include - -#include -#include -#include - -DGUI_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -QString DisplayPlugin::name() const -{ - return QStringLiteral("display"); -} - -ModuleObject * DisplayPlugin::module() -{ - //一级菜单--显示 - ModuleObject *moduleInterface = new PageModule(); - moduleInterface->setName("display"); - moduleInterface->setDisplayName(tr("Display")); - moduleInterface->setDescription(tr("Light, resolution, scaling and etc")); - moduleInterface->setIcon(DIconTheme::findQIcon("dcc_nav_display")); - - DisplayModule *displayModule = new DisplayModule(moduleInterface); - moduleInterface->appendChild(displayModule); - return moduleInterface; -} - -QString DisplayPlugin::location() const -{ - return "2"; -} - -QWidget *DisplayModule::page() -{ - m_displayWidget = new QWidget(); - - QVBoxLayout *contentLayout = new QVBoxLayout; - contentLayout->setSpacing(0); - contentLayout->setContentsMargins(0, 0, 0, 0); - m_displayWidget->setLayout(contentLayout); - - pushScreenWidget(); - - return m_displayWidget; -} - -DisplayModule::DisplayModule(QObject *parent) - : ModuleObject(parent) - , m_model(nullptr) - , m_worker(nullptr) - , m_displayWidget(nullptr) -{ - if (m_model) { - delete m_model; - } - m_model = new DisplayModel(this); - m_worker = new DisplayWorker(m_model, this); - - connect(m_model, &DisplayModel::monitorListChanged, this, [=] { - pushScreenWidget(); - }); - - //wayland下没有主屏和副屏之分 所以mainwindow窗体想要居中,直接使用QGuiApplication::primaryScreen()方法 - //获取的主屏的信息是错误的,所以不能直接使用。现在的方法是通过/com/deepin/daemon/Display服务获取主屏的名称 - //然后再在QGuiApplication::screens()中匹配,从而获取主屏的信息。 - connect(m_model, &DisplayModel::monitorListChanged, this, [=] { - for (auto mon : m_model->monitorList()) { - if (mon->isPrimary()) { - setPrimaryScreen(mon->getQScreen()); - } - } - }); - - connect(m_model, &DisplayModel::primaryScreenChanged, this, [=] (QString primary) { - if (!primary.isEmpty()) { - for (auto mon : m_model->monitorList()) { - if (mon->name() == primary) { - setPrimaryScreen(mon->getQScreen()); - } - } - } - }); -} - -DisplayModule::~DisplayModule() -{ -} - -void DisplayModule::active() -{ - m_worker->active(); -} - -void DisplayModule::deactive() -{ - m_displayWidget = nullptr; - m_primaryScreen = nullptr; -} - -void DisplayModule::showSingleScreenWidget() -{ - QWidget *singleScreenWidget = new QWidget(); - - QVBoxLayout *contentLayout = new QVBoxLayout; - contentLayout->setSpacing(0); - contentLayout->setContentsMargins(0, 20, 0, 0); - - BrightnessWidget *brightnessWidget = new BrightnessWidget(singleScreenWidget); - brightnessWidget->setMode(m_model); - contentLayout->addWidget(brightnessWidget); - const bool brightnessIsEnabled = m_model->brightnessEnable() && m_model->primaryMonitor() && m_model->primaryMonitor()->canBrightness(); - brightnessWidget->setVisible(brightnessIsEnabled); - connect(brightnessWidget, &BrightnessWidget::requestSetColorTemperature, m_worker, &DisplayWorker::setColorTemperature); - connect(brightnessWidget, &BrightnessWidget::requestSetMonitorBrightness, m_worker, &DisplayWorker::setMonitorBrightness); - connect(brightnessWidget, &BrightnessWidget::requestAmbientLightAdjustBrightness, m_worker, &DisplayWorker::setAmbientLightAdjustBrightness); - connect(brightnessWidget, &BrightnessWidget::requestSetMethodAdjustCCT, m_worker, &DisplayWorker::SetMethodAdjustCCT); - - QSpacerItem *scalingSpacerItem = new QSpacerItem(0, brightnessIsEnabled? 20 : 0); - contentLayout->addSpacerItem(scalingSpacerItem); - - ScalingWidget *scalingWidget = new ScalingWidget(singleScreenWidget); - scalingWidget->setModel(m_model); - contentLayout->addWidget(scalingWidget); - connect(scalingWidget, &ScalingWidget::requestUiScaleChange, m_worker, &DisplayWorker::setUiScale); - - QSpacerItem *resolutionSpacerItem = new QSpacerItem(0, 30); - contentLayout->addSpacerItem(resolutionSpacerItem); - - ResolutionWidget *resolutionWidget = new ResolutionWidget(300, singleScreenWidget); - resolutionWidget->setModel(m_model, m_model->monitorList().count() ? m_model->monitorList().first() : nullptr); - contentLayout->addWidget(resolutionWidget); - connect(resolutionWidget, &ResolutionWidget::requestSetResolution, this, [=](Monitor *monitor, const int mode) { - onRequestSetResolution(monitor, mode); - updateWinsize(); - }, Qt::QueuedConnection); - - connect(resolutionWidget, &ResolutionWidget::requestSetFillMode, this, [this](Monitor *monitor, const QString fillMode) { - onRequestSetFillMode(monitor, fillMode); - }); - - RefreshRateWidget *refreshRateWidget = new RefreshRateWidget(300, singleScreenWidget); - refreshRateWidget->setModel(m_model, m_model->monitorList().count() ? m_model->monitorList().first() : nullptr); - contentLayout->addSpacing(20); - contentLayout->addWidget(refreshRateWidget); - connect(refreshRateWidget, &RefreshRateWidget::requestSetResolution, this, &DisplayModule::onRequestSetResolution, Qt::QueuedConnection); - - RotateWidget *rotateWidget = new RotateWidget(300, singleScreenWidget); - rotateWidget->setModel(m_model, m_model->monitorList().count() ? m_model->monitorList().first() : nullptr); - contentLayout->addSpacing(20); - contentLayout->addWidget(rotateWidget); - connect(rotateWidget, &RotateWidget::requestSetRotate, this, &DisplayModule::onRequestSetRotate, Qt::QueuedConnection); - - contentLayout->addStretch(); - - singleScreenWidget->setLayout(contentLayout); - - if(m_displayWidget->layout()->count() > 0) { - QWidget * w = m_displayWidget->layout()->itemAt(0)->widget(); - m_displayWidget->layout()->removeWidget(w); - w->setParent(nullptr); - delete w; - } - m_displayWidget->layout()->addWidget(singleScreenWidget); - - auto setBrightnessWidget = [brightnessWidget, scalingSpacerItem, this]() { - const bool visible = m_model->brightnessEnable() && m_model->primaryMonitor() && m_model->primaryMonitor()->canBrightness(); - scalingSpacerItem->changeSize(0, visible ? 20 : 0); - brightnessWidget->setVisible(visible); - }; - - connect(m_model, &DisplayModel::primaryScreenChanged, brightnessWidget ,setBrightnessWidget); - connect(m_model, &DisplayModel::brightnessEnableChanged, brightnessWidget ,setBrightnessWidget); -} - -void DisplayModule::updateWinsize(QRect rect) -{ - if (!m_displayWidget || !m_displayWidget->window()) { - return; - } - - DMainWindow* topWidget = qobject_cast(m_displayWidget->window()); - - if (!qApp->screens().contains(m_primaryScreen)) - return; - - if(!topWidget) - return; - - if(topWidget->isMaximized()) - return; - - int w = m_primaryScreen->geometry().width(); - int h = m_primaryScreen->geometry().height(); - if (rect.width() && rect.height()) { - w = rect.width(); - h = rect.height(); - } - int WidgetMinimumWidth = qMin(w, 800); - int WidgetMinimumHeight = qMin(h, 600); - - topWidget->setMinimumSize(QSize(WidgetMinimumWidth, WidgetMinimumHeight)); - - topWidget->move(QPoint(m_primaryScreen->geometry().left() + (w - topWidget->geometry().width()) / 2, - m_primaryScreen->geometry().top() + (h - topWidget->geometry().height()) / 2)); -} - -void DisplayModule::setPrimaryScreen(QScreen *screen) -{ - if(m_primaryScreen == screen) - return; - - m_primaryScreen = screen; - updateWinsize(); - connect(m_primaryScreen, &QScreen::geometryChanged, this, &DisplayModule::updateWinsize); -} - -void DisplayModule::showMultiScreenWidget() -{ - connect(m_model, &DisplayModel::displayModeChanged, this, [this]() { - onSetFillMode(); - updateWinsize(); - }); - - MultiScreenWidget *multiScreenWidget = new MultiScreenWidget(); - multiScreenWidget->setModel(m_model); - connect(multiScreenWidget, &MultiScreenWidget::requestSwitchMode, m_worker, &DisplayWorker::switchMode); - connect(multiScreenWidget, &MultiScreenWidget::requestSetMonitorPosition, m_worker, &DisplayWorker::setMonitorPosition); - connect(multiScreenWidget, &MultiScreenWidget::requestSetPrimary, m_worker, &DisplayWorker::setPrimary); - connect(multiScreenWidget, &MultiScreenWidget::requestSetColorTemperature, m_worker, &DisplayWorker::setColorTemperature); - connect(multiScreenWidget, &MultiScreenWidget::requestSetMonitorBrightness, m_worker, &DisplayWorker::setMonitorBrightness); - connect(multiScreenWidget, &MultiScreenWidget::requestAmbientLightAdjustBrightness, m_worker, &DisplayWorker::setAmbientLightAdjustBrightness); - connect(multiScreenWidget, &MultiScreenWidget::requestSetMethodAdjustCCT, m_worker, &DisplayWorker::SetMethodAdjustCCT); - connect(multiScreenWidget, &MultiScreenWidget::requestUiScaleChange, m_worker, &DisplayWorker::setUiScale); - - connect(multiScreenWidget, &MultiScreenWidget::requestSetResolution, this, [=](Monitor *monitor, const int mode) { - onRequestSetResolution(monitor, mode); - updateWinsize(); - }, Qt::QueuedConnection); - connect(multiScreenWidget, &MultiScreenWidget::requestSetFillMode, this, [this](Monitor *monitor, const QString fillMode) { - onRequestSetFillMode(monitor, fillMode); - }); - - connect(multiScreenWidget, &MultiScreenWidget::requestCurrFillModeChanged, this, [this](Monitor *monitor, const QString currfillMode) { - if (m_model->displayMode() == MERGE_MODE && monitor->isPrimary()) { - for (auto m : m_model->monitorList()) - m_worker->setCurrentFillMode(m, currfillMode); - } - }); - - connect(multiScreenWidget, &MultiScreenWidget::requestSetRotate, this, &DisplayModule::onRequestSetRotate, Qt::QueuedConnection); - connect(multiScreenWidget, &MultiScreenWidget::requestSetMainwindowRect, this, [=](Monitor *moi, bool isInit) { - Q_UNUSED(moi) - bool stateChanged = false; - //窗口初始化且窗口最大化的时候不需要移动窗口 - if (!m_displayWidget->window()) { - return; - } - - if (m_displayWidget->window()->isMaximized()) { - if(isInit){ - return; - } -// m_pMainWindow->setNeedRememberLastSize(false); -// m_pMainWindow->showNormal(); - -// QSize lastsize = m_pMainWindow->getLastSize(); -// if (!lastsize.isValid() || lastsize == m_pMainWindow->maximumSize()) { -// lastsize.setWidth(m_pMainWindow->minimumWidth()); -// lastsize.setHeight(m_pMainWindow->minimumHeight()); -// } -// m_pMainWindow->resize(lastsize); - stateChanged = true; - } - - if (stateChanged) { - m_displayWidget->window()->showMaximized(); - } - - QScreen *screen = m_model->primaryMonitor()->getQScreen(); - if (qApp->screens().contains(screen)) { - m_displayWidget->window()->setGeometry(QRect(screen->geometry().topLeft(),m_displayWidget->window()->size())); - m_displayWidget->window()->move(QPoint(screen->geometry().left() + (screen->geometry().width() - m_displayWidget->window()->width()) / 2, - screen->geometry().top() + (screen->geometry().height() - m_displayWidget->window()->height()) / 2)); - } - }); - - if(m_displayWidget->layout()->count() > 0) { - QWidget * w = m_displayWidget->layout()->itemAt(0)->widget(); - m_displayWidget->layout()->removeWidget(w); - w->setParent(nullptr); - delete w; - } - m_displayWidget->layout()->addWidget(multiScreenWidget); -} - -void DisplayModule::onRequestSetResolution(Monitor *monitor, const uint mode) -{ - Resolution firstRes; - QString lastFillMode = m_model->primaryMonitor()->currentFillMode(); - - for (auto res : monitor->modeList()) { - if (res.id() == mode) { - firstRes = res; - break; - } - } - - auto tfunc = [this](Monitor *tmon, Resolution tmode) { - if (m_model->displayMode() == MERGE_MODE) { - for (auto monitor : m_model->monitorList()) { - bool bFind = false; - for (auto res : monitor->modeList()) { - if (res == tmode) { - m_worker->setMonitorResolution(monitor, res.id()); - bFind = true; - break; - } - } - if (!bFind) { - m_worker->setMonitorResolutionBySize(monitor, tmode.width(), tmode.height()); - } - } - } else { - m_worker->setMonitorResolution(tmon, tmode.id()); - } - - // 扩展模式调整分辨率时会再次调整显示屏位置,此时会调用两次applyChanges接口, - // 修改分辨率调用applyChanges后任务栏会响应分辨率改变信号,然后调整大小,造成部分界面显示到第二个屏幕 - // 只有一个屏幕时displayMode可能是EXTEND_MODE,同时需要判断显示数量 - if (m_model->displayMode() != EXTEND_MODE || m_model->monitorList().size() < 2) - m_worker->applyChanges(); - }; - m_worker->backupConfig(); - tfunc(monitor, firstRes); - - //此处处理调用applyChanges的200ms延时, TimeoutDialog提前弹出的问题 - QTimer::singleShot(300, monitor, [this, monitor, lastFillMode]{ - if (showTimeoutDialog(monitor) == QDialog::Accepted) { - m_worker->saveChanges(); - } else { - m_worker->resetBackup(); - } - }); -} - -void DisplayModule::onSetFillMode(QString currFullMode) -{ - if (m_model->primaryMonitor() == nullptr) - return; - - if (currFullMode.isEmpty()) - currFullMode = m_model->primaryMonitor()->currentFillMode(); - - //切分辨率时,如果是复制模式下,桌面显示不支持,全部切换为拉伸 否则以主屏为主 - if (m_model->displayMode() == MERGE_MODE) { - for (auto m : m_model->monitorList()) { - if(!m_model->allSupportFillModes()) - m_worker->setCurrentFillMode(m, m_model->defaultFillMode()); - else - m_worker->setCurrentFillMode(m, currFullMode); - } - } -} - -void DisplayModule::onRequestSetFillMode(Monitor *monitor, const QString fillMode) -{ - auto lastFillMode = monitor->currentFillMode(); - if (m_model->displayMode() == MERGE_MODE) { - for (auto m : m_model->monitorList()) { - m_worker->backupConfig(); - m_worker->setCurrentFillMode(m, fillMode); - } - } else { - m_worker->backupConfig(); - m_worker->setCurrentFillMode(monitor, fillMode); - } - //桌面显示增加15秒倒计时功能 - QTimer::singleShot(300, monitor, [this, monitor, lastFillMode]{ - if (showTimeoutDialog(monitor, true) != QDialog::Accepted) { - m_worker->resetBackup(); - } - m_worker->clearBackup(); - }); -} - -void DisplayModule::onRequestSetRotate(Monitor *monitor, const int rotate) -{ - m_worker->backupConfig(); - m_worker->setMonitorRotate(monitor, rotate); - m_worker->applyChanges(); - - //此处处理调用applyChanges的200ms延时, TimeoutDialog提前弹出的问题 - QTimer::singleShot(300, monitor, [this, monitor]{ - if (showTimeoutDialog(monitor) == QDialog::Accepted) { - m_worker->saveChanges(); - } else { - // 若是重力感应 调整后不对数据进行保存 - if (monitor->currentRotateMode() != Monitor::RotateMode::Gravity) { - m_worker->resetBackup(); - } - } - }); -} - -void DisplayModule::pushScreenWidget() -{ - if (!m_displayWidget) - return; - if (m_model->monitorList().size() > 1) { - showMultiScreenWidget(); - } else { - showSingleScreenWidget(); - } -} - -int DisplayModule::showTimeoutDialog(Monitor *monitor, const bool isFillMode) -{ - TimeoutDialog *timeoutDialog = new TimeoutDialog(15); - qreal radio = qApp->devicePixelRatio(); - QRectF rt(monitor->x(), monitor->y(), monitor->w() / radio, monitor->h() / radio); - QTimer::singleShot(1, this, [=] { timeoutDialog->moveToCenterByRect(rt.toRect()); }); - // 若用户切换重力旋转 直接退出对话框 - if (!isFillMode) { - connect(monitor, &Monitor::currentRotateModeChanged, timeoutDialog, &TimeoutDialog::close); - } - - connect(monitor, &Monitor::geometryChanged, timeoutDialog, [=] { - if (timeoutDialog) { - QRectF rt(monitor->x(), monitor->y(), monitor->w() / radio, monitor->h() / radio); - timeoutDialog->moveToCenterByRect(rt.toRect()); - } - }); - connect(m_model, &DisplayModel::monitorListChanged, timeoutDialog, &TimeoutDialog::reject); - - return timeoutDialog->exec(); -} - -void DisplayModule::showDisplayRecognize() -{ - // 复制模式 - if (m_model->displayMode() == MERGE_MODE) { - QString text = m_model->monitorList().first()->name(); - for (int idx = 1; idx < m_model->monitorList().size(); idx++) { - text += QString(" = %1").arg(m_model->monitorList()[idx]->name()); - } - - // 所在显示器不存在显示框 - if (m_recognizeWidget.value(text) == nullptr) { - RecognizeWidget *widget = new RecognizeWidget(m_model->monitorList()[0], text); - QTimer::singleShot(5000, this, [=] { - widget->deleteLater(); - m_recognizeWidget.remove(text); - }); - m_recognizeWidget[text] = widget; - } - } else { // 扩展模式 - for (auto monitor : m_model->monitorList()) { - // 所在显示器不存在显示框 - if (m_recognizeWidget.value(monitor->name()) == nullptr) { - RecognizeWidget *widget = new RecognizeWidget(monitor, monitor->name()); - m_recognizeWidget[monitor->name()] = widget; - QTimer::singleShot(5000, this, [=] { - widget->deleteLater(); - m_recognizeWidget.remove(monitor->name()); - }); - m_recognizeWidget[monitor->name()] = widget; - } - } - } -} diff --git a/dcc-old/src/plugin-display/window/displaymodule.h b/dcc-old/src/plugin-display/window/displaymodule.h deleted file mode 100644 index 34e4e334d2..0000000000 --- a/dcc-old/src/plugin-display/window/displaymodule.h +++ /dev/null @@ -1,67 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DISPLAYMODULE_H -#define DISPLAYMODULE_H - -#include "interface/namespace.h" -#include "interface/pagemodule.h" -#include "interface/plugininterface.h" -#include "window/recognizewidget.h" - -class Resolution; -class QVBoxLayout; - -namespace DCC_NAMESPACE { -class DisplayModel; -class Monitor; -class DisplayWorker; - -class DisplayPlugin : public PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Display" FILE "DisplayPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - virtual QString name() const override; - virtual ModuleObject *module() override; - virtual QString location() const override; -}; - -class DisplayModule : public ModuleObject -{ - Q_OBJECT -public: - explicit DisplayModule(QObject *parent = nullptr); - ~DisplayModule(); - virtual QWidget *page() override; - DisplayWorker *work() { return m_worker; } - DisplayModel *model() { return m_model; } - -protected: - virtual void active() override; - virtual void deactive() override; - -private Q_SLOTS: - void onRequestSetResolution(Monitor *monitor, const uint mode); - void onRequestSetRotate(Monitor *monitor, const int rotate); - void onRequestSetFillMode(Monitor *monitor, const QString fillMode); - void showSingleScreenWidget(); - void showMultiScreenWidget(); - void pushScreenWidget(); - int showTimeoutDialog(Monitor *monitor, const bool isFillMode = false); - void onSetFillMode(QString currFullMode = ""); - void showDisplayRecognize(); - void updateWinsize(QRect rect = QRect(0,0,0,0)); - void setPrimaryScreen(QScreen *screen); - -private: - DisplayModel *m_model; - DisplayWorker *m_worker; - QWidget *m_displayWidget; - QMap m_recognizeWidget; - QScreen *m_primaryScreen; -}; -} - -#endif // DISPLAYMODULE_H diff --git a/dcc-old/src/plugin-display/window/filechoosewidget.cpp b/dcc-old/src/plugin-display/window/filechoosewidget.cpp deleted file mode 100644 index b154dd6ebc..0000000000 --- a/dcc-old/src/plugin-display/window/filechoosewidget.cpp +++ /dev/null @@ -1,41 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "filechoosewidget.h" - -#include - -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -FileChooseWidget::FileChooseWidget(QWidget *parent) - : SettingsItem(parent) - , m_fileChooserEdit(new DFileChooserEdit(this)) - , m_title(new QLabel) -{ - m_title->setFixedWidth(110); - QHBoxLayout *mainLayout = new QHBoxLayout; - mainLayout->addWidget(m_title); - m_fileChooserEdit->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - m_fileChooserEdit->setFileMode(QFileDialog::Directory); - mainLayout->addWidget(m_fileChooserEdit); - setLayout(mainLayout); -} - -void FileChooseWidget::setTitle(const QString &title) -{ - m_title->setText(title); - setAccessibleName(title); - m_title->setWordWrap(true); -} - -void FileChooseWidget::setIsErr(const bool err) -{ - m_fileChooserEdit->setAlert(err); -} diff --git a/dcc-old/src/plugin-display/window/filechoosewidget.h b/dcc-old/src/plugin-display/window/filechoosewidget.h deleted file mode 100644 index f777837d74..0000000000 --- a/dcc-old/src/plugin-display/window/filechoosewidget.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef FILECHOOSEWIDGET_H -#define FILECHOOSEWIDGET_H - -#include "widgets/settingsitem.h" -#include - -QT_BEGIN_NAMESPACE -class QLabel; -QT_END_NAMESPACE - -class FileChooseWidget : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT - -public: - explicit FileChooseWidget(QWidget *parent = nullptr); - - DTK_WIDGET_NAMESPACE::DFileChooserEdit *edit() const { return m_fileChooserEdit; } - void setTitle(const QString &title); - virtual void setIsErr(const bool err = true) override; - -Q_SIGNALS: - void requestFrameKeepAutoHide(const bool autoHide) const; - -private: - DTK_WIDGET_NAMESPACE::DFileChooserEdit *m_fileChooserEdit; - QLabel *m_title; -}; -#endif // FILECHOOSEWIDGET_H diff --git a/dcc-old/src/plugin-display/window/monitorcontrolwidget.cpp b/dcc-old/src/plugin-display/window/monitorcontrolwidget.cpp deleted file mode 100644 index 3d69dc77f0..0000000000 --- a/dcc-old/src/plugin-display/window/monitorcontrolwidget.cpp +++ /dev/null @@ -1,90 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "monitorcontrolwidget.h" -#include "monitorsground.h" -#include "operation/displaymodel.h" - -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -MonitorControlWidget::MonitorControlWidget(int activateHeight, QWidget *parent) - : QFrame(parent) - , m_screensGround(new MonitorsGround(activateHeight,this)) - , m_recognize(new QPushButton(DIconTheme::findQIcon("dcc_recognize"), tr("Identify"))) - , m_gather(new QPushButton(DIconTheme::findQIcon("dcc_gather"), tr("Gather Windows"))) - , m_effectiveReminder(new QLabel(this)) -{ - m_screensGround->setAccessibleName("screensGround"); - - m_recognize->setFocusPolicy(Qt::NoFocus); - m_recognize->setMinimumWidth(106); - m_recognize->setMinimumHeight(36); - m_gather->setFocusPolicy(Qt::NoFocus); - m_gather->setMinimumWidth(106); - m_gather->setMinimumHeight(36); - m_effectiveReminder->setAlignment(Qt::AlignCenter); - - QHBoxLayout *btnsLayout = new QHBoxLayout; - btnsLayout->addStretch(); - btnsLayout->addWidget(m_recognize); - btnsLayout->setSpacing(20); - btnsLayout->addWidget(m_gather); - btnsLayout->addStretch(); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->setMargin(0); - mainLayout->setSpacing(20); - mainLayout->addWidget(m_screensGround); - mainLayout->addWidget(m_effectiveReminder); - mainLayout->addLayout(btnsLayout); - - setLayout(mainLayout); - - connect(m_recognize, &QPushButton::clicked, this, &MonitorControlWidget::requestRecognize); - connect(m_gather, &QPushButton::clicked, this, [=] { - Q_EMIT requestGatherWindows(QCursor::pos()); - }); - connect(m_screensGround, &MonitorsGround::requestApplySettings, this, &MonitorControlWidget::requestSetMonitorPosition); - connect(m_screensGround, &MonitorsGround::showsecondaryScreen, this, &MonitorControlWidget::requestShowsecondaryScreen); - connect(m_screensGround, &MonitorsGround::requestMonitorPress, this, &MonitorControlWidget::requestMonitorPress); - connect(m_screensGround, &MonitorsGround::requestMonitorRelease, this, &MonitorControlWidget::requestMonitorRelease); - connect(m_screensGround, &MonitorsGround::setEffectiveReminderVisible, this, &MonitorControlWidget::onSetEffectiveReminderVisible); -} - -void MonitorControlWidget::setModel(DisplayModel *model, Monitor *moni) -{ - m_screensGround->setModel(model, moni); -} - -void MonitorControlWidget::setMergeMode(bool val) -{ - m_screensGround->setMergeMode(val); -} - -void MonitorControlWidget::setScreensMerged(const int mode) -{ - m_recognize->setVisible(mode != SINGLE_MODE); - m_gather->setVisible(mode == EXTEND_MODE); - m_gather->setEnabled(mode == EXTEND_MODE); -} - -void MonitorControlWidget::onSetEffectiveReminderVisible(bool visible, int nEffectiveTime) -{ - if(visible) - m_effectiveReminder->setText(tr("Screen rearrangement will take effect in %1s after changes").arg(nEffectiveTime)); - else - m_effectiveReminder->setText(""); - -} - -void MonitorControlWidget::onGatherEnabled(const bool enable) -{ - m_gather->setEnabled(enable); -} diff --git a/dcc-old/src/plugin-display/window/monitorcontrolwidget.h b/dcc-old/src/plugin-display/window/monitorcontrolwidget.h deleted file mode 100644 index 230bd09a4f..0000000000 --- a/dcc-old/src/plugin-display/window/monitorcontrolwidget.h +++ /dev/null @@ -1,55 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MONITORCONTROLWIDGET_H -#define MONITORCONTROLWIDGET_H - -#include "interface/namespace.h" - -#include - -QT_BEGIN_NAMESPACE -class QLabel; -class QIcon; -class QVBoxLayout; -class QPushButton; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class Monitor; -class DisplayModel; -class MonitorsGround; -class MonitorControlWidget : public QFrame -{ - Q_OBJECT - -public: - explicit MonitorControlWidget(int activateHeight = 240, QWidget *parent = nullptr); - - void setModel(DisplayModel *model, Monitor *moni = nullptr); - void setScreensMerged(const int mode); - void setMergeMode(bool val); - -Q_SIGNALS: - void requestRecognize() const; - void requestGatherWindows(const QPoint cursor) const; - void requestSetMonitorPosition(QHash> monitorPosition) const; - void requestShowsecondaryScreen() const; - void requestMonitorPress(Monitor *mon); - void requestMonitorRelease(Monitor *mon); - -public Q_SLOTS: - void onGatherEnabled(const bool enable); - void onSetEffectiveReminderVisible(bool visible, int nEffectiveTime); - -private: - MonitorsGround *m_screensGround; - QPushButton *m_recognize; - QPushButton *m_gather; - //多屏设置生效提示 - QLabel *m_effectiveReminder; -}; -} - -#endif // MONITORCONTROLWIDGET_H diff --git a/dcc-old/src/plugin-display/window/monitorindicator.cpp b/dcc-old/src/plugin-display/window/monitorindicator.cpp deleted file mode 100644 index 33aa0ff6d5..0000000000 --- a/dcc-old/src/plugin-display/window/monitorindicator.cpp +++ /dev/null @@ -1,69 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "monitorindicator.h" - -#include -#include -#include - -#define LINE_WIDTH 10 - -using namespace DCC_NAMESPACE; - -MonitorIndicator::MonitorIndicator(QWidget *parent) - : QFrame(nullptr) - , m_topLine(new QFrame(nullptr)) - , m_bottomLine(new QFrame(nullptr)) - , m_leftLine(new QFrame(nullptr)) - , m_rightLine(new QFrame(nullptr)) -{ - Q_UNUSED(parent) - QFrame::setVisible(false); - - QPalette pal = QPalette(); - pal.setColor(QPalette::Window, QColor("#2ca7f8")); - - m_topLine->setWindowFlags(Qt::CoverWindow | Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); - m_topLine->setAutoFillBackground(true); - m_topLine->setPalette(pal); - - m_bottomLine->setWindowFlags(Qt::CoverWindow | Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); - m_bottomLine->setAutoFillBackground(true); - m_bottomLine->setPalette(pal); - - m_leftLine->setWindowFlags(Qt::CoverWindow | Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); - m_leftLine->setAutoFillBackground(true); - m_leftLine->setPalette(pal); - - m_rightLine->setWindowFlags(Qt::CoverWindow | Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint | Qt::X11BypassWindowManagerHint); - m_rightLine->setAutoFillBackground(true); - m_rightLine->setPalette(pal); -} - -MonitorIndicator::~MonitorIndicator() -{ - delete m_topLine; - delete m_bottomLine; - delete m_leftLine; - delete m_rightLine; -} - -void MonitorIndicator::setVisible(bool visible) -{ - updateGeometry(); - m_topLine->setVisible(visible); - m_bottomLine->setVisible(visible); - m_leftLine->setVisible(visible); - m_rightLine->setVisible(visible); -} - -void MonitorIndicator::updateGeometry() -{ - QPoint topLeft = mapToGlobal(QPoint(0,0)); - int lineWidth = static_cast(LINE_WIDTH / qApp->devicePixelRatio()); - m_topLine->setGeometry(topLeft.x(), topLeft.y(), width(), lineWidth); - m_bottomLine->setGeometry(topLeft.x(), topLeft.y() + height() - lineWidth, width(), lineWidth); - m_rightLine->setGeometry(topLeft.x() + width() - lineWidth, topLeft.y(), lineWidth, height()); - m_leftLine->setGeometry(topLeft.x(), topLeft.y(), lineWidth, height()); -} diff --git a/dcc-old/src/plugin-display/window/monitorindicator.h b/dcc-old/src/plugin-display/window/monitorindicator.h deleted file mode 100644 index 29da689275..0000000000 --- a/dcc-old/src/plugin-display/window/monitorindicator.h +++ /dev/null @@ -1,40 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MONITORFULLWIDGET_H -#define MONITORFULLWIDGET_H - -#include "interface/namespace.h" - -#include - -#include - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { - -class MonitorIndicator : public QFrame -{ - Q_OBJECT - -public: - explicit MonitorIndicator(QWidget *parent = 0); - ~MonitorIndicator() override; - -public Q_SLOTS: - - virtual void setVisible(bool visible) override; - -private: - void updateGeometry(); - -private: - QFrame *m_topLine; - QFrame *m_bottomLine; - QFrame *m_leftLine; - QFrame *m_rightLine; -}; -} - -#endif // MONITORFULLWIDGET_H diff --git a/dcc-old/src/plugin-display/window/monitorproxywidget.cpp b/dcc-old/src/plugin-display/window/monitorproxywidget.cpp deleted file mode 100644 index 4fbabb9964..0000000000 --- a/dcc-old/src/plugin-display/window/monitorproxywidget.cpp +++ /dev/null @@ -1,196 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "monitorproxywidget.h" -#include "operation/displaymodel.h" - -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -MonitorProxyWidget::MonitorProxyWidget(Monitor *mon, DisplayModel *model) - : m_monitor(mon) - , m_model(model) - , m_movedX(m_monitor->x()) - , m_movedY(m_monitor->y()) - , m_preCenter(QPointF(0,0)) - , m_selected(false) - , m_isMoving(false) - , m_reSplicing(false) -{ - setFlags(QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsFocusable); -} - -void MonitorProxyWidget::setMovedX(const int x) -{ - m_movedX = x; -} -void MonitorProxyWidget::setMovedY(const int y) -{ - m_movedY = y; -} - - -int MonitorProxyWidget::w() const -{ - //90度和270度 - if (m_monitor->rotate() == 2 || m_monitor->rotate() == 8) { - return m_monitor->currentMode().height(); - } else { - return m_monitor->currentMode().width(); - } -} - -int MonitorProxyWidget::h() const -{ - //90度和270度 - if (m_monitor->rotate() == 2 || m_monitor->rotate() == 8) { - return m_monitor->currentMode().width(); - } else { - return m_monitor->currentMode().height(); - } -} - -const QString MonitorProxyWidget::name() const -{ - return m_monitor->name(); -} - -void MonitorProxyWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) -{ - Q_UNUSED(option); - Q_UNUSED(widget); - - painter->save(); - QRectF r = this->boundingRect(); - painter->setRenderHint(QPainter::Antialiasing, true); - painter->setBrush(QColor("#5f5f5f")); - painter->setPen(QColor("#2e2e2e")); - auto radius = std::max(r.width(), r.height()) / 20; - painter->drawRoundedRect(r, radius, radius); - painter->setClipRect(r); - - QFont font ("Microsoft YaHei", 100, 20); - painter->setFont(font); - const QFontMetrics fm(painter->font()); - - //修复在数字为0的时候,计算的字体宽度偏小导致显示遮挡的问题 - const int width = fm.boundingRect(name()).width() + 100; - const int height = fm.boundingRect(name()).height(); - painter->setPen(Qt::white); - if (m_model->displayMode() != MERGE_MODE) { - if (width > this->w()) { - QString elidedText = fm.elidedText(name(), Qt::ElideRight, this->w() - height); - painter->drawText(QRectF(r.x() + r.width() - width, r.y() + height, width, height), Qt::AlignRight, elidedText); - } else { - painter->drawText(QRectF(r.x() + r.width() - width - height / 2, r.y() + height, width, height), Qt::AlignCenter, name()); - } - } - - // draw dock pattern if it's primary screen - if (m_model->displayMode() == EXTEND_MODE) { - - if(m_monitor->isPrimary()) { - QPen penWhite(Qt::white); - const qreal width = r.width() / 2.0; - const qreal height = r.height() / 2.0; - painter->setBrush(Qt::white); - painter->drawRoundedRect(QRectF(r.x() + r.width() / 4.0, r.y() + r.height() * 9.0 / 10.0,width, height), radius, radius); - } - - //根据是否焦点绘制选中状态 - if (m_selected) { - // draw blue border if the mode is EXTEND_MODE - QPen penWhite(QColor("#2ca7f8")); - penWhite.setWidthF(radius/5.0); - painter->setPen(penWhite); - painter->setBrush(Qt::transparent); - r.adjust(penWhite.width() /2, penWhite.width() / 2, -penWhite.width() /2, -penWhite.width() / 2); - painter->drawRoundedRect(r, radius, radius); - } - } - - painter->restore(); -} - -void MonitorProxyWidget::mousePressEvent(QGraphicsSceneMouseEvent *event) -{ - if (m_model->displayMode() == EXTEND_MODE) { - Q_EMIT requestMonitorPress(m_monitor); - } - QGraphicsItem::mousePressEvent(event); -} - -void MonitorProxyWidget::mouseMoveEvent(QGraphicsSceneMouseEvent *event) -{ - QGraphicsItem::mouseMoveEvent(event); - - if (m_model->displayMode() == EXTEND_MODE) { - m_isMoving = true; - Q_EMIT requestMouseMove(this); - } -} - -void MonitorProxyWidget::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) -{ - if (m_model->displayMode() == EXTEND_MODE) { - - if(m_isMoving) { - Q_EMIT requestMonitorRelease(m_monitor); - m_isMoving = false; - } - } - - QGraphicsItem::mouseReleaseEvent(event); -} - -void MonitorProxyWidget::focusInEvent(QFocusEvent *event) -{ - //增加选中的效果 - m_selected = true; - - QGraphicsItem::focusInEvent(event); -} -void MonitorProxyWidget::focusOutEvent(QFocusEvent *event) -{ - //增加选中的效果 - m_selected = false; - - QGraphicsItem::focusOutEvent(event); -} - -void MonitorProxyWidget::keyPressEvent(QKeyEvent *event) -{ - QGraphicsItem::keyPressEvent(event); - - if (m_model->displayMode() == EXTEND_MODE) { - Q_EMIT requestKeyPress(this, event->key()); - } -} - -QRectF MonitorProxyWidget::boundingRect() const -{ - return QRectF(0, 0, this->w(), this->h()); -} - -QRectF MonitorProxyWidget::bufferboundingRect() const -{ - return boundingRect().adjusted(-200, -200, 200, 200); -} - -QRectF MonitorProxyWidget::justIntersectRect() const -{ - return boundingRect().adjusted(1, 1, -1, -1); -} - -//外扩0.05个像素, 规避由于计算导致精度丢失或者坐标值完全一致的情况下不能判定为相交的情况 -QRectF MonitorProxyWidget::boundingRectEx() const -{ - return boundingRect().adjusted(-0.05, -0.05, 0.05, 0.05); -} diff --git a/dcc-old/src/plugin-display/window/monitorproxywidget.h b/dcc-old/src/plugin-display/window/monitorproxywidget.h deleted file mode 100644 index 9dd3d63aab..0000000000 --- a/dcc-old/src/plugin-display/window/monitorproxywidget.h +++ /dev/null @@ -1,105 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef MONITORPROXYWIDGET_H -#define MONITORPROXYWIDGET_H - -#include "interface/namespace.h" - -#include - -class QScrollArea; -class QKeyEvent; -class QPainter; -class QGraphicsSceneMouseEvent; - -namespace DCC_NAMESPACE { -class DisplayModel; -class Monitor; -class MonitorProxyWidget : public QObject, public QAbstractGraphicsShapeItem -{ - Q_OBJECT -public: - explicit MonitorProxyWidget(Monitor *mon, DisplayModel *model); - - inline int x() const { return m_movedX; } - inline int y() const { return m_movedY; } - - int w() const; - int h() const; - - void setMovedX(const int x); - void setMovedY(const int y); - - const QString name() const; - - inline QPointF getPreCenter() { return m_preCenter; } - inline void setPreCenter(QPointF p) { m_preCenter = p; } - inline bool getReSplicing() { return m_reSplicing; } - inline void setReSplicing(bool value) { m_reSplicing = value; } - - QRectF boundingRect() const override; - QRectF bufferboundingRect() const; - QRectF justIntersectRect() const; - QRectF boundingRectEx() const; - - //自动吸附匹配使用 - //四边区域 左-右-下-上 - inline QRectF bufferboundingRectLeft() const { return QRectF(QPointF(bufferboundingRect().left(), boundingRect().top()), QPointF(boundingRect().left(), boundingRect().bottom())); } - inline QRectF bufferboundingRectRight() const { return QRectF(QPointF(boundingRect().right(), boundingRect().top()), QPointF(bufferboundingRect().right(), boundingRect().bottom())); } - inline QRectF bufferboundingRectBottom() const { return QRectF(QPointF(boundingRect().left(), boundingRect().bottom()), QPointF(boundingRect().right(), bufferboundingRect().bottom())); } - inline QRectF bufferboundingRectTop() const { return QRectF(QPointF(boundingRect().left(), bufferboundingRect().top()), QPointF(boundingRect().right(), boundingRect().top())); } - - //顶点 左上-左下-右上-右下 - inline QRectF bufferboundingRectLeftTop() const { return QRectF(QPointF(bufferboundingRect().left(), bufferboundingRect().top()), QPointF(boundingRect().left(), boundingRect().top())); } - inline QRectF bufferboundingRectLeftBottom() const { return QRectF(QPointF(bufferboundingRect().left(), boundingRect().bottom()), QPointF(boundingRect().left(), bufferboundingRect().bottom())); } - inline QRectF bufferboundingRectRightTop() const { return QRectF(QPointF(boundingRect().right(), bufferboundingRect().top()), QPointF(bufferboundingRect().right(), boundingRect().top())); } - inline QRectF bufferboundingRectRightBottom() const { return QRectF(QPointF(boundingRect().right(), boundingRect().bottom()), QPointF(bufferboundingRect().right(), bufferboundingRect().bottom())); } - - - //刚好相交的边界描述 - //四边区域 左-右-下-上 - inline QRectF justIntersectRectLeft() const { return QRectF(QPointF(boundingRectEx().left(), justIntersectRect().top()), QPointF(justIntersectRect().left(), justIntersectRect().bottom())); } - inline QRectF justIntersectRectRight() const { return QRectF(QPointF(justIntersectRect().right(), justIntersectRect().top()), QPointF(boundingRectEx().right(), justIntersectRect().bottom())); } - inline QRectF justIntersectRectBottom() const { return QRectF(QPointF(justIntersectRect().left(), justIntersectRect().bottom()), QPointF(justIntersectRect().right(), boundingRectEx().bottom())); } - inline QRectF justIntersectRectTop() const { return QRectF(QPointF(justIntersectRect().left(), boundingRectEx().top()), QPointF(justIntersectRect().right(), justIntersectRect().top())); } - - //顶点 左上-左下-右上-右下 - inline QRectF justIntersectRectLeftTop() const { return QRectF(QPointF(boundingRectEx().left(), boundingRectEx().top()), QPointF(justIntersectRect().left(), justIntersectRect().top())); } - inline QRectF justIntersectRectLeftBottom() const { return QRectF(QPointF(boundingRectEx().left(), justIntersectRect().bottom()), QPointF(justIntersectRect().left(), boundingRectEx().bottom())); } - inline QRectF justIntersectRectRightTop() const { return QRectF(QPointF(justIntersectRect().right(), boundingRectEx().top()), QPointF(boundingRectEx().right(), justIntersectRect().top())); } - inline QRectF justIntersectRectRightBottom() const { return QRectF(QPointF(justIntersectRect().right(), justIntersectRect().bottom()), QPointF(boundingRectEx().right(), boundingRectEx().bottom())); } -Q_SIGNALS: - void requestMonitorPress(Monitor *mon); - void requestMonitorRelease(Monitor *mon); - void requestMouseMove(MonitorProxyWidget *self) const; - void requestKeyPress(MonitorProxyWidget *self, int keyValue) const; - -protected: - void mousePressEvent(QGraphicsSceneMouseEvent *event) override; - void mouseMoveEvent(QGraphicsSceneMouseEvent *event) override; - void mouseReleaseEvent(QGraphicsSceneMouseEvent *event) override; - void focusInEvent(QFocusEvent *event) override; - void focusOutEvent(QFocusEvent *event) override; - void keyPressEvent(QKeyEvent *event) override; - void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override; - -private: - Monitor *m_monitor; - DisplayModel *m_model; - - int m_movedX; - int m_movedY; - - QPointF m_preCenter; //记录上一次调整的中心点 - - bool m_selected; - bool m_isMoving; //表示item被移动了 - - bool m_reSplicing; //重新拼接 -}; -} - -#endif // MONITORPROXYWIDGET_H diff --git a/dcc-old/src/plugin-display/window/monitorsground.cpp b/dcc-old/src/plugin-display/window/monitorsground.cpp deleted file mode 100644 index 76c35399e1..0000000000 --- a/dcc-old/src/plugin-display/window/monitorsground.cpp +++ /dev/null @@ -1,1749 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "monitorsground.h" - -#include "monitorproxywidget.h" -#include "operation/displaymodel.h" - -#include - -#include -#include -#include -#include -#include - -#include -#include - -using namespace DCC_NAMESPACE; -constexpr int MIN_W = 484; // 窗口的最小宽度 -constexpr int MAX_W = 726; // 窗口的最大宽度 - -MonitorsGround::MonitorsGround(int activateHeight, QWidget *parent) - : DGraphicsView(parent) - , m_scrollArea(nullptr) - , m_refershTimer(new QTimer(this)) - , m_effectiveTimer(new QTimer(this)) - , m_isSingleDisplay(false) - , m_scale(0.1) - , m_isInit(false) - , m_nEffectiveTime(2) - , m_setMergeMode(false) - -{ - setFixedHeight(activateHeight); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - // 隐藏水平/竖直滚动条 - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - // 反锯齿 - setRenderHints(QPainter::Antialiasing); - - // 自动填色和无边框 - setAutoFillBackground(true); - setStyleSheet("border:0px"); - DPalette pa = DPaletteHelper::instance()->palette(parentWidget()); - QColor curThemeColor = pa.base().color(); - curThemeColor.setAlphaF(0.001); // 设置透明度 - pa.setBrush(QPalette::Base, QBrush(curThemeColor)); - DPaletteHelper::instance()->setPalette(this, pa); - - // 添加场景 - setScene(&m_graphicsScene); - - Q_EMIT setEffectiveReminderVisible(false, m_nEffectiveTime); - - m_effectiveTimer->setInterval(m_nEffectiveTime * 1000); - m_effectiveTimer->setSingleShot(true); - connect(m_effectiveTimer, &QTimer::timeout, this, [=]() { - Q_EMIT setEffectiveReminderVisible(false, m_nEffectiveTime); - for (auto mon : m_model->monitorList()) { - disconnect(mon, &Monitor::geometryChanged, this, &MonitorsGround::onGeometryChanged); - } - - applySettings(); - Q_EMIT requestMonitorRelease(m_monitors[m_movingItem]); - m_effectiveTimer->setInterval(m_nEffectiveTime * 1000); - }); -} - -MonitorsGround::~MonitorsGround() -{ - qDeleteAll(m_monitors.keys()); -} - -void MonitorsGround::setModel(DisplayModel *model, Monitor *moni) -{ - m_setMergeMode = (model->displayMode() == MERGE_MODE); - - Q_EMIT setEffectiveReminderVisible(false, m_nEffectiveTime); - m_effectiveTimer->stop(); - qDeleteAll(m_monitors.keys()); - m_monitors.clear(); - m_lstItems.clear(); - m_mapItemConnectedState.clear(); - m_mapInitItemConnectedState.clear(); - m_lstSortItems.clear(); - m_graphicsScene.clear(); - m_model = model; - - if (!moni) { - m_isSingleDisplay = false; - for (auto mon : model->monitorList()) { - initMonitorProxyWidget(mon); - } - - for (auto pw : m_monitors.keys()) { - if (!m_isSingleDisplay) - pw->moveBy(pw->x(), pw->y()); - } - - for (auto mon : model->monitorList()) { - connect(mon, &Monitor::rotateChanged, this, &MonitorsGround::onRotateChanged); - connect(mon, &Monitor::currentModeChanged, this, &MonitorsGround::onCurrentModeChanged); - connect(mon, &Monitor::geometryChanged, this, &MonitorsGround::onGeometryChanged); - } - - connect(m_model, - &DisplayModel::primaryScreenChanged, - this, - static_cast(&MonitorsGround::update), - Qt::QueuedConnection); - } else { - initMonitorProxyWidget(moni); - connect(moni, &Monitor::geometryChanged, this, &MonitorsGround::onGeometryChanged); - connect(moni, &Monitor::currentModeChanged, this, &MonitorsGround::onCurrentModeChanged); - connect(moni, &Monitor::rotateChanged, this, &MonitorsGround::onRotateChanged); - m_isSingleDisplay = true; - } - setEnabled(!m_isSingleDisplay && m_model->displayMode() == EXTEND_MODE); - QTimer::singleShot(1, this, [=]() { - if (!m_isSingleDisplay) { - updateScale(); - } - resetMonitorsView(); - }); -} - -void MonitorsGround::initMonitorProxyWidget(Monitor *mon) -{ - MonitorProxyWidget *pw = new MonitorProxyWidget(mon, m_model); - - m_graphicsScene.addItem(pw); - m_monitors[pw] = mon; - m_lstItems.append(pw); - m_lstSortItems.append(pw); - - connect(pw, - &MonitorProxyWidget::requestMonitorPress, - this, - &MonitorsGround::requestMonitorPress); - connect(pw, &MonitorProxyWidget::requestMonitorPress, this, [this, pw]() { - for (auto item : m_monitors.keys()) { - item->setZValue(0); - } - m_movingItem = pw; - m_movingItem->setZValue(1); - }); - connect(pw, - &MonitorProxyWidget::requestMonitorRelease, - this, - &MonitorsGround::onRequestMonitorRelease); - connect(pw, &MonitorProxyWidget::requestMouseMove, this, &MonitorsGround::onRequestMouseMove); - connect(pw, &MonitorProxyWidget::requestKeyPress, this, &MonitorsGround::onRequestKeyPress); -} - -void MonitorsGround::onGeometryChanged() -{ - for (auto pw : m_monitors.keys()) { - Monitor *mon = qobject_cast(sender()); - if (mon->name() == m_monitors[pw]->name()) { - m_movingItem = pw; - pw->update(); - break; - } - } - - for (auto pw : m_monitors.keys()) { - pw->setMovedX(m_monitors[pw]->x()); - pw->setMovedY(m_monitors[pw]->y()); - pw->setPos(0, 0); - if (!m_isSingleDisplay) - pw->moveBy(pw->x(), pw->y()); - } - - onResize(); -} - -void MonitorsGround::onRotateChanged() -{ - onCurrentModeChanged(); -} - -// 当方向改变时 当分辨率改变时 -void MonitorsGround::onCurrentModeChanged() -{ - m_nEffectiveTime = 0; - m_effectiveTimer->setInterval(m_nEffectiveTime); - onResize(); - if (m_setMergeMode || m_isSingleDisplay) - return; - - Monitor *mon = qobject_cast(sender()); - for (auto pw : m_monitors.keys()) { - if (mon->name() == m_monitors[pw]->name()) { - m_movingItem = pw; - pw->update(); - break; - } - } - - executemultiScreenAlgo(false); -} - -void MonitorsGround::executemultiScreenAlgo(const bool isRebound) -{ - if (m_isSingleDisplay) - return; - - bool isRestore = false; - multiScreenSortAlgo(isRestore, isRebound); - - // 需要重新拼接 - if (m_movingItem->getReSplicing()) { - m_movingItem->setReSplicing(false); - multiScreenSortAlgo(isRestore, true); - } - - if (isRestore == true) - return; - - multiScreenAutoAdjust(); - onResize(); - updateConnectedState(); - - // 显示设置生效倒计时提示框 - Q_EMIT setEffectiveReminderVisible(true, m_nEffectiveTime); - m_effectiveTimer->start(); -} - -void MonitorsGround::onRequestMonitorRelease() -{ - executemultiScreenAlgo(true); -} - -void MonitorsGround::resetMonitorsView() -{ - if (m_model->displayMode() == MERGE_MODE) { - adjustAll(); - } else { - m_isInit = false; - centeredMonitorsView(); - } -} - -void MonitorsGround::adjustAll() -{ - setEnabled(false); - - const double scaleW = double(width()) / (m_monitors.values().first()->w() * 1.2); - const double scaleH = double(height()) / (m_monitors.values().first()->h() * 1.2); - - const double scale = std::min(scaleW, scaleH); - - int cnt = 0; - int offset = static_cast(10 / scale); - - for (auto pw : m_monitors.keys()) { - pw->setZValue(cnt); - pw->setPos(QPointF(offset * cnt, offset * cnt)); - cnt++; - } - - QPointF dPos = sceneRect().center() - scene()->itemsBoundingRect().center(); - for (auto pw : m_monitors.keys()) { - pw->setPos(pw->pos() + dPos); - } - - resetTransform(); - this->scale(scale, scale); -} - -void MonitorsGround::onResize() -{ - if (!m_isSingleDisplay) { - if (size().width() < MAX_W) { - setSceneRect(QRect(0, 0, width(), 240 + size().width() - MIN_W)); - setFixedHeight(240 + size().width() - MIN_W); - } else { - setSceneRect(QRect(0, 0, width(), 240 + MAX_W - MIN_W)); - setFixedHeight(240 + MAX_W - MIN_W); - } - updateScale(); - } else { - setSceneRect(QRect(0, 0, width(), height())); - } - - resetMonitorsView(); -} - -void MonitorsGround::resizeEvent(QResizeEvent *event) -{ - // 解决最大化view高度设置不能及时生效的问题 - QTimer::singleShot(0, this, [=] { - onResize(); - }); - - QGraphicsView::resizeEvent(event); -} - -void MonitorsGround::enterEvent(QEvent *) -{ - auto p = parentWidget(); - while (p && !m_scrollArea) { - m_scrollArea = qobject_cast(p); - if (m_scrollArea) - break; - p = p->parentWidget(); - } - if (m_scrollArea) - QScroller::ungrabGesture(m_scrollArea->viewport()); -} - -void MonitorsGround::leaveEvent(QEvent *) -{ - if (m_scrollArea) - QScroller::grabGesture(m_scrollArea->viewport(), QScroller::LeftMouseButtonGesture); -} - -void MonitorsGround::paintEvent(QPaintEvent *event) -{ - if (m_isSingleDisplay || m_model->displayMode() != EXTEND_MODE) - this->setEnabled(false); - - QGraphicsView::paintEvent(event); -} - -void MonitorsGround::singleScreenAdjest() -{ - const double scaleW = double(width()) / (m_monitors.keys().last()->w() * 1.5); - const double scaleH = double(height()) / (m_monitors.keys().last()->h() * 1.5); - - const double scale = std::min(scaleW, scaleH); - - QPointF dPos = sceneRect().center() - scene()->itemsBoundingRect().center(); - m_monitors.keys().last()->setPos(m_monitors.keys().last()->pos() + dPos); - resetTransform(); - this->scale(scale, scale); - setEnabled(false); -} - -// 应用设置 -void MonitorsGround::applySettings() -{ - qRegisterMetaType>>("QHash>"); - QHash> monitorPosition; - - QList lstX, lstY; - - for (auto pw : m_monitors.keys()) { - pw->update(); - } - - for (auto pw : m_monitors.keys()) { - lstX.append(pw->pos().x()); - lstY.append(pw->pos().y()); - qDebug() << pw->name() << "pos" << pw->pos(); - } - std::sort(lstX.begin(), lstX.end(), [=](const qreal item1, const qreal item2) { - return item1 < item2; - }); - std::sort(lstY.begin(), lstY.end(), [=](const qreal item1, const qreal item2) { - return item1 < item2; - }); - - for (auto it(m_monitors.cbegin()); it != m_monitors.cend(); ++it) { - monitorPosition.insert(it.value(), - QPair(int(it.key()->pos().x() - lstX.first()), - int(it.key()->pos().y() - lstY.first()))); - qWarning() << "applySettings" << it.value()->name() << monitorPosition[it.value()]; - } - - // 在计算之后再做一次过滤 - // 消除一个像素的重叠 - // 首先获取所以的拼接点到list - QList> lstMonitor; - for (auto iter = m_mapItemConnectedState.begin(); iter != m_mapItemConnectedState.end(); - ++iter) { - for (auto item : iter.value()) { - QList lstMonitorTemp; - lstMonitorTemp << m_monitors[iter.key()] << m_monitors[item]; - lstMonitor.append(lstMonitorTemp); - } - } - - // 依据字符串进行排序 - QMap> mapMonitor; - for (auto m : lstMonitor) { - std::sort(m.begin(), m.end(), [=](const Monitor *m1, const Monitor *m2) { - return m1->name() < m2->name(); - }); - // 去重 - mapMonitor.insert(m.first()->name() + m.last()->name(), m); - qDebug() << "mapMonitor" << m.first()->name() + m.last()->name(); - } - - // 获取到实际相交点的信息 - for (auto m : mapMonitor.values()) { - // 左右坐标 - // 上下坐标 对比 - QRect m1(monitorPosition[m.first()].first, - monitorPosition[m.first()].second, - m.first()->w(), - m.first()->h()); - QRect m2(monitorPosition[m.last()].first, - monitorPosition[m.last()].second, - m.last()->w(), - m.last()->h()); - - qDebug() << "获取实际交点" << mapMonitor.key(m) << "1:" << m1 << "2:" << m2; - - // 左右相接 - if (m1.left() < m2.left() && m1.right() == m2.left()) { - monitorPosition[m.last()] = (QPair(m1.right() + 1, m2.y())); - } else if (m1.left() > m2.left() && m2.right() == m1.left()) { - monitorPosition[m.first()] = (QPair(m2.right() + 1, m1.y())); - } - - // 上下相接 - if (m1.top() < m2.top() && m1.bottom() == m2.top()) { - monitorPosition[m.last()] = (QPair(m2.x(), m1.bottom() + 1)); - } else if (m1.top() > m2.top() && m2.bottom() == m1.top()) { - monitorPosition[m.first()] = (QPair(m1.x(), m2.bottom() + 1)); - } - } - - for (auto it(m_monitors.cbegin()); it != m_monitors.cend(); ++it) { - qWarning() << "applySettings 处理之后:" << it.value()->name() - << monitorPosition[it.value()]; - } - - Q_EMIT requestApplySettings(monitorPosition); -} - -/*1050-5401*/ -// 多屏排序算法 -QPointF MonitorsGround::multiScreenSortAlgo(bool &isRestore, const bool isRebound) -{ - // 排列算法 - // 1、寻找位置变化的屏幕块,确定为被移动的块 - // 2、判断被移动块和其他块之间的位置关系来进行图形拼接移动 - //*根据中心点判定 - - QList lstActivedItemsX; - QList lstActivedItemsY; - QList lstNoMovedItems; - QList lstShelterItems; - - m_lstMoveingItemToCenterPosLen.clear(); - - bool isMove = true; - isRestore = false; - bool isAutoAdsorption = false; - bool isIntersect = false; - qreal g_dx = 0.0; - qreal g_dy = 0.0; - - qreal intersectedArea = 0.0; // 相交的面积 - - QRectF moveItemIntersect, moveItemRect; - - bool g_bXYTogetherMoved = - false; // 标志XY方向是否一起移动,其余情况按哪个方向离得近向哪个方向移动 - - moveItemIntersect = m_movingItem->mapRectToScene(m_movingItem->justIntersectRect()); - moveItemRect = m_movingItem->mapRectToScene(m_movingItem->boundingRect()); - - auto mapToSceneIntersectRect = [=](MonitorProxyWidget *item) { - return item->mapToScene(item->justIntersectRect()); - }; - - auto mapToSceneBoundingRect = [=](MonitorProxyWidget *item) { - return item->mapToScene(item->boundingRect()); - }; - - for (int i = 0; i < m_lstSortItems.size(); i++) { - - if (m_movingItem != m_lstSortItems[i]) { - QRectF rect = moveItemIntersect.intersected( - m_lstSortItems[i]->mapRectToScene(m_lstSortItems[i]->boundingRect())); - intersectedArea += rect.width() * rect.height(); - - // 移动块完全覆盖一个块 - if (moveItemRect.contains( - m_lstSortItems[i]->mapRectToScene(m_lstSortItems[i]->boundingRect()))) { - lstShelterItems.append(m_lstSortItems[i]); - } - - // 要么不相交,要相交就是要点线相交的 - if (!mapToSceneIntersectRect(m_movingItem) - .intersects(mapToSceneBoundingRect(m_lstSortItems[i])) - && mapToSceneBoundingRect(m_movingItem) - .intersects(mapToSceneBoundingRect(m_lstSortItems[i]))) { - isAutoAdsorption = true; - } - // 出现相交的情况 - if (mapToSceneIntersectRect(m_movingItem) - .intersects(mapToSceneBoundingRect(m_lstSortItems[i])) - && mapToSceneBoundingRect(m_movingItem) - .intersects(mapToSceneBoundingRect(m_lstSortItems[i]))) { - isIntersect = true; - } - - lstNoMovedItems.append(m_lstSortItems[i]); - } - } - - // 移动块被完全包含在其他的块 - if (qFuzzyCompare(moveItemIntersect.width() * moveItemIntersect.height(), intersectedArea)) { - qDebug() << "存在包含关系"; - lstShelterItems.append(m_movingItem); - } - - // 移动块到其他块中心点的距离排序 - QPointF movedPos = m_movingItem->mapToScene(m_movingItem->boundingRect().center()); - for (auto item : lstNoMovedItems) { - QPointF tempPos = item->mapToScene(item->boundingRect().center()); - qreal len = sqrt(pow(tempPos.x() - movedPos.x(), 2) + pow(tempPos.y() - movedPos.y(), 2)); - m_lstMoveingItemToCenterPosLen.append(qMakePair(item, len)); - } - - // 获取距离最近的块 - std::sort(m_lstMoveingItemToCenterPosLen.begin(), - m_lstMoveingItemToCenterPosLen.end(), - [=](const QPair &item1, - const QPair &item2) { - return item1.second < item2.second; - }); - - // 自动回弹的触发条件: 1. 一个屏幕完全包含另一个屏的时候 2. 一个屏幕剩下的屏幕集合所包围 - if (lstShelterItems.size() > 0) { - if (isMove) { - - if (isRebound) { - autoRebound(); - qDebug() << "自动回弹流程触发! == " << lstShelterItems.size(); - isRestore = true; - return QPointF(0.0, 0.0); - } else { - // 当改变方向时出现覆盖多个块的情况,会触发自动会弹流程,但是改变方向的上一个操作状态不存在或者说回弹到上一个状态没有意义,会导致屏幕重叠现象 - // 如果是由于方向改变导致的重叠,那就将此块移动到items外接矩形的左下角再重新执行拼接算法。 - m_movingItem->moveBy( - scene()->itemsBoundingRect().right() - - m_movingItem - ->mapToScene(m_movingItem->boundingRect().bottomLeft()) - .x(), - scene()->itemsBoundingRect().bottom() - - m_movingItem->mapToScene(m_movingItem->boundingRect().topLeft()) - .y()); - m_movingItem->setReSplicing(true); - return QPointF(0.0, 0.0); - } - } - } else { // 没有完全重合的情况处理逻辑 - - std::sort(lstNoMovedItems.begin(), - lstNoMovedItems.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).x() - < item2->mapToScene(item2->boundingRect().bottomLeft()).x(); - }); - - // 将MovedItem放入链表中排序,左排 右排,判定覆盖几个块 - lstNoMovedItems.append(m_movingItem); - // 左排序 - std::sort(lstNoMovedItems.begin(), - lstNoMovedItems.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - if (item1 == m_movingItem) { - return item1->mapToScene(item1->boundingRect().bottomRight()).x() - < item2->mapToScene(item2->boundingRect().bottomLeft()).x(); - } else if (item2 == m_movingItem) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).x() - < item2->mapToScene(item2->boundingRect().bottomRight()).x(); - } - return item1->mapToScene(item1->boundingRect().bottomLeft()).x() - < item2->mapToScene(item2->boundingRect().bottomLeft()).x(); - }); - int nBIndexLeft = lstNoMovedItems.indexOf(m_movingItem); - - // 右排序 - std::sort(lstNoMovedItems.begin(), - lstNoMovedItems.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - if (item1 == m_movingItem) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).x() - < item2->mapToScene(item2->boundingRect().bottomRight()).x(); - } else if (item2 == m_movingItem) { - return item1->mapToScene(item1->boundingRect().bottomRight()).x() - < item2->mapToScene(item2->boundingRect().bottomLeft()).x(); - } - return item1->mapToScene(item1->boundingRect().bottomRight()).x() - < item2->mapToScene(item2->boundingRect().bottomRight()).x(); - }); - int nBIndexRight = lstNoMovedItems.indexOf(m_movingItem); - - // 上排序 - std::sort(lstNoMovedItems.begin(), - lstNoMovedItems.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - if (item1 == m_movingItem) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).y() - < item2->mapToScene(item2->boundingRect().topLeft()).y(); - } else if (item2 == m_movingItem) { - return item1->mapToScene(item1->boundingRect().topLeft()).y() - < item2->mapToScene(item2->boundingRect().bottomLeft()).y(); - } - return item1->mapToScene(item1->boundingRect().topLeft()).y() - < item2->mapToScene(item2->boundingRect().topLeft()).y(); - }); - int nBIndexTop = lstNoMovedItems.indexOf(m_movingItem); - - // 下排序 - std::sort(lstNoMovedItems.begin(), - lstNoMovedItems.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - if (item1 == m_movingItem) { - return item1->mapToScene(item1->boundingRect().topLeft()).y() - < item2->mapToScene(item2->boundingRect().bottomLeft()).y(); - } else if (item2 == m_movingItem) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).y() - < item2->mapToScene(item2->boundingRect().topLeft()).y(); - } - return item1->mapToScene(item1->boundingRect().bottomLeft()).y() - < item2->mapToScene(item2->boundingRect().bottomLeft()).y(); - }); - int nBIndexBottom = lstNoMovedItems.indexOf(m_movingItem); - - int nItemSize = lstNoMovedItems.size() - 1; - - // 说明移动块在其他块X坐标有重合 - if (nBIndexLeft != 0 && nBIndexRight != nItemSize) { - - // 移动X - // 将MovedItem放入链表中排序,上排 下排,判定在Y轴移动的方向和距离 - // 处理 - qreal movex1 = m_movingItem->mapToScene(m_movingItem->boundingRect().topLeft()).x(); - qreal movex2 = m_movingItem->mapToScene(m_movingItem->boundingRect().topRight()).x(); - - for (auto pair : m_lstMoveingItemToCenterPosLen) { - qreal x1 = pair.first->mapToScene(pair.first->boundingRect().topLeft()).x(); - qreal x2 = pair.first->mapToScene(pair.first->boundingRect().topRight()).x(); - - if (!((x1 >= movex1 && x1 >= movex2) || (x2 <= movex1 && x2 <= movex2))) { - lstActivedItemsX.append(pair.first); - } - } - - lstActivedItemsX.append(m_movingItem); - // 上排序 - std::sort(lstActivedItemsX.begin(), - lstActivedItemsX.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topLeft()).y() - < item2->mapToScene(item2->boundingRect().topLeft()).y(); - }); - int nIndexTop = lstActivedItemsX.indexOf(m_movingItem); - - // 下排序 - std::sort(lstActivedItemsX.begin(), - lstActivedItemsX.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).y() - < item2->mapToScene(item2->boundingRect().bottomLeft()).y(); - }); - int nIndexBottom = lstActivedItemsX.indexOf(m_movingItem); - - // 先做预移动,如果有重合,把重合块加入激活块重新排序 - if (nIndexTop == nIndexBottom) { - // 移动块在最上面 - if (nIndexTop == 0) { - qreal dy = - lstActivedItemsX.first() - ->mapToScene(lstActivedItemsX.first()->boundingRect().topLeft()) - .y() - - m_movingItem->mapToScene(m_movingItem->boundingRect().bottomLeft()) - .y(); - m_movingItem->moveBy(0, dy); - m_graphicsScene.update(); - - QList lstShelterItemsTemp; - lstNoMovedItems.removeOne(m_movingItem); - for (int i = 0; i < lstNoMovedItems.size(); i++) { - if (m_movingItem->mapToScene(m_movingItem->boundingRect()) - .intersects(lstNoMovedItems[i]->mapToScene( - lstNoMovedItems[i]->boundingRect()))) { - lstShelterItemsTemp.append(lstNoMovedItems[i]); - } - } - - if (lstShelterItemsTemp.size() >= 0) { - m_movingItem->moveBy(0, -dy); // 先移回去 - m_graphicsScene.update(); - - // 下排序 - std::sort( - lstActivedItemsX.begin(), - lstActivedItemsX.end(), - [=](const MonitorProxyWidget *item1, - const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).y() - < item2->mapToScene(item2->boundingRect().bottomLeft()) - .y(); - }); - // int nIndexBottomTemp = lstActivedItemsX.indexOf(m_movingItem); - - // 上排序 - for (auto t : lstShelterItemsTemp) { - if (!lstActivedItemsX.contains(t)) - lstActivedItemsX.append(t); - } - std::sort(lstActivedItemsX.begin(), - lstActivedItemsX.end(), - [=](const MonitorProxyWidget *item1, - const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topLeft()).y() - < item2->mapToScene(item2->boundingRect().topLeft()) - .y(); - }); - int nIndexTopTemp = lstActivedItemsX.indexOf(m_movingItem); - - lstActivedItemsX.removeOne(m_movingItem); - - if (!lstActivedItemsX.isEmpty()) { - if (nIndexTopTemp == 0) { - g_dy = lstActivedItemsX.first() - ->mapToScene(lstActivedItemsX.first() - ->boundingRect() - .topLeft()) - .y() - - m_movingItem - ->mapToScene( - m_movingItem->boundingRect().bottomLeft()) - .y(); - qDebug() << "g_dy" << g_dy; - } else { - g_dy = lstActivedItemsX.last() - ->mapToScene(lstActivedItemsX.last() - ->boundingRect() - .bottomLeft()) - .y() - - m_movingItem - ->mapToScene( - m_movingItem->boundingRect().topLeft()) - .y(); - qDebug() << "g_dy" << g_dy; - } - } - } - } - // 移动块在最下面 - else { - if (!lstActivedItemsX.contains(m_movingItem)) - lstActivedItemsX.append(m_movingItem); - // 下排序 - std::sort( - lstActivedItemsX.begin(), - lstActivedItemsX.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).y() - < item2->mapToScene(item2->boundingRect().bottomLeft()).y(); - }); - - qreal dy = lstActivedItemsX.last() - ->mapToScene( - lstActivedItemsX.last()->boundingRect().bottomLeft()) - .y() - - m_movingItem->mapToScene(m_movingItem->boundingRect().topLeft()).y(); - m_movingItem->moveBy(0, dy); - m_graphicsScene.update(); - - lstNoMovedItems.removeOne(m_movingItem); - QList lstShelterItemsTemp; - for (int i = 0; i < lstNoMovedItems.size(); i++) { - if (m_movingItem->mapToScene(m_movingItem->boundingRect()) - .intersects(lstNoMovedItems[i]->mapToScene( - lstNoMovedItems[i]->boundingRect()))) { - lstShelterItemsTemp.append(lstNoMovedItems[i]); - } - } - - if (lstShelterItemsTemp.size() >= 0) { - m_movingItem->moveBy(0, -dy); // 先移回去 - m_graphicsScene.update(); - - // 上排序 - for (auto t : lstShelterItemsTemp) { - if (!lstActivedItemsX.contains(t)) - lstActivedItemsX.append(t); - } - - std::sort(lstActivedItemsX.begin(), - lstActivedItemsX.end(), - [=](const MonitorProxyWidget *item1, - const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topLeft()).y() - < item2->mapToScene(item2->boundingRect().topLeft()) - .y(); - }); - int nIndexTopTemp = lstActivedItemsX.indexOf(m_movingItem); - - // 下排序 - std::sort( - lstActivedItemsX.begin(), - lstActivedItemsX.end(), - [=](const MonitorProxyWidget *item1, - const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().bottomLeft()).y() - < item2->mapToScene(item2->boundingRect().bottomLeft()) - .y(); - }); - // int nIndexBottomTemp = lstActivedItemsX.indexOf(m_movingItem); - - lstActivedItemsX.removeOne(m_movingItem); - - if (!lstActivedItemsX.isEmpty()) { - if (nIndexTopTemp == 0) { - g_dy = lstActivedItemsX.first() - ->mapToScene(lstActivedItemsX.first() - ->boundingRect() - .topLeft()) - .y() - - m_movingItem - ->mapToScene( - m_movingItem->boundingRect().bottomLeft()) - .y(); - qDebug() << "g_dy" << g_dy; - } else { - g_dy = lstActivedItemsX.last() - ->mapToScene(lstActivedItemsX.last() - ->boundingRect() - .bottomLeft()) - .y() - - m_movingItem - ->mapToScene( - m_movingItem->boundingRect().topLeft()) - .y(); - qDebug() << "g_dy" << g_dy; - } - } - } - } - } - } - - // 说明移动块在其他块Y坐标有重合 - if (nBIndexTop != 0 && nBIndexBottom != nItemSize) { - - // 移动Y - // 处理 - qreal movey1 = m_movingItem->mapToScene(m_movingItem->boundingRect().topLeft()).y(); - qreal movey2 = m_movingItem->mapToScene(m_movingItem->boundingRect().bottomLeft()).y(); - - for (auto pair : m_lstMoveingItemToCenterPosLen) { - qreal y1 = pair.first->mapToScene(pair.first->boundingRect().topLeft()).y(); - qreal y2 = pair.first->mapToScene(pair.first->boundingRect().bottomLeft()).y(); - - if (!((y1 >= movey1 && y1 >= movey2) || (y2 <= movey1 && y2 <= movey2))) { - lstActivedItemsY.append(pair.first); - } - } - - lstActivedItemsY.append(m_movingItem); - // 左排序 - std::sort(lstActivedItemsY.begin(), - lstActivedItemsY.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topLeft()).x() - < item2->mapToScene(item2->boundingRect().topLeft()).x(); - }); - int nIndexLeft = lstActivedItemsY.indexOf(m_movingItem); - - // 右排序 - std::sort(lstActivedItemsY.begin(), - lstActivedItemsY.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topRight()).x() - < item2->mapToScene(item2->boundingRect().topRight()).x(); - }); - int nIndexRight = lstActivedItemsY.indexOf(m_movingItem); - - if (nIndexLeft == nIndexRight) { - // 移动块在最右侧 - if (nIndexLeft == 0) { - qreal dx = - lstActivedItemsY.first() - ->mapToScene(lstActivedItemsY.first()->boundingRect().topLeft()) - .x() - - m_movingItem->mapToScene(m_movingItem->boundingRect().topRight()).x(); - m_movingItem->moveBy(dx, 0); - m_graphicsScene.update(); - - QList lstShelterItemsTemp; - lstNoMovedItems.removeOne(m_movingItem); - for (int i = 0; i < lstNoMovedItems.size(); i++) { - if (m_movingItem->mapToScene(m_movingItem->boundingRect()) - .intersects(lstNoMovedItems[i]->mapToScene( - lstNoMovedItems[i]->boundingRect()))) { - lstShelterItemsTemp.append(lstNoMovedItems[i]); - } - } - - if (lstShelterItemsTemp.size() >= 0) { - m_movingItem->moveBy(-dx, 0); - m_graphicsScene.update(); - - // 下排序 - std::sort(lstActivedItemsY.begin(), - lstActivedItemsY.end(), - [=](const MonitorProxyWidget *item1, - const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topRight()).x() - < item2->mapToScene(item2->boundingRect().topRight()) - .x(); - }); - // int nIndexRightTemp = lstActivedItemsY.indexOf(m_movingItem); - - // 上排序 - for (auto t : lstShelterItemsTemp) { - if (!lstActivedItemsY.contains(t)) - lstActivedItemsY.append(t); - } - std::sort(lstActivedItemsY.begin(), - lstActivedItemsY.end(), - [=](const MonitorProxyWidget *item1, - const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topLeft()).x() - < item2->mapToScene(item2->boundingRect().topLeft()) - .x(); - }); - int nIndexLeftTemp = lstActivedItemsY.indexOf(m_movingItem); - - lstActivedItemsY.removeOne(m_movingItem); - - if (!lstActivedItemsY.isEmpty()) { - if (nIndexLeftTemp == 0) { - g_dx = lstActivedItemsY.first() - ->mapToScene(lstActivedItemsY.first() - ->boundingRect() - .topLeft()) - .x() - - m_movingItem - ->mapToScene( - m_movingItem->boundingRect().topRight()) - .x(); - qDebug() << "g_dx" << g_dx; - } else { - g_dx = lstActivedItemsY.last() - ->mapToScene(lstActivedItemsY.last() - ->boundingRect() - .topRight()) - .x() - - m_movingItem - ->mapToScene( - m_movingItem->boundingRect().topLeft()) - .x(); - qDebug() << "g_dx" << g_dx; - } - } - } - } - // 移动块在最左侧 - else { - if (!lstActivedItemsY.contains(m_movingItem)) - lstActivedItemsY.append(m_movingItem); - // 右排序 - std::sort( - lstActivedItemsY.begin(), - lstActivedItemsY.end(), - [=](const MonitorProxyWidget *item1, const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topRight()).x() - < item2->mapToScene(item2->boundingRect().topRight()).x(); - }); - - qreal dx = - lstActivedItemsY.last() - ->mapToScene(lstActivedItemsY.last()->boundingRect().topRight()) - .x() - - m_movingItem->mapToScene(m_movingItem->boundingRect().topLeft()).x(); - m_movingItem->moveBy(dx, 0); - m_graphicsScene.update(); - - lstNoMovedItems.removeOne(m_movingItem); - QList lstShelterItemsTemp; - for (int i = 0; i < lstNoMovedItems.size(); i++) { - if (m_movingItem->mapToScene(m_movingItem->boundingRect()) - .intersects(lstNoMovedItems[i]->mapToScene( - lstNoMovedItems[i]->boundingRect()))) { - lstShelterItemsTemp.append(lstNoMovedItems[i]); - } - } - - if (lstShelterItemsTemp.size() >= 0) { - m_movingItem->moveBy(-dx, 0); - m_graphicsScene.update(); - - // 上排序 - for (auto t : lstShelterItemsTemp) { - if (!lstActivedItemsY.contains(t)) - lstActivedItemsY.append(t); - } - std::sort(lstActivedItemsY.begin(), - lstActivedItemsY.end(), - [=](const MonitorProxyWidget *item1, - const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topLeft()).x() - < item2->mapToScene(item2->boundingRect().topLeft()) - .x(); - }); - int nIndexLeftTemp = lstActivedItemsY.indexOf(m_movingItem); - - // 下排序 - std::sort(lstActivedItemsY.begin(), - lstActivedItemsY.end(), - [=](const MonitorProxyWidget *item1, - const MonitorProxyWidget *item2) { - return item1->mapToScene(item1->boundingRect().topRight()).x() - < item2->mapToScene(item2->boundingRect().topRight()) - .x(); - }); - // int nIndexRightTemp = lstActivedItemsY.indexOf(m_movingItem); - - lstActivedItemsY.removeOne(m_movingItem); - - if (!lstActivedItemsY.isEmpty()) { - if (nIndexLeftTemp == 0) { - g_dx = lstActivedItemsY.first() - ->mapToScene(lstActivedItemsY.first() - ->boundingRect() - .topLeft()) - .x() - - m_movingItem - ->mapToScene( - m_movingItem->boundingRect().topRight()) - .x(); - qDebug() << "g_dx" << g_dx; - } else { - g_dx = lstActivedItemsY.last() - ->mapToScene(lstActivedItemsY.last() - ->boundingRect() - .topRight()) - .x() - - m_movingItem - ->mapToScene( - m_movingItem->boundingRect().topLeft()) - .x(); - qDebug() << "g_dx" << g_dx; - } - } - } - } - } - } - - // 说明移动块在其他块的四周 - if ((nBIndexLeft == 0 || nBIndexRight == nItemSize) - || (nBIndexTop == 0 || nBIndexBottom == nItemSize)) { - // 表示X方向没有重叠的 - // TODO: - // 找距离他最近的顶点 - // LT 左上 - lstNoMovedItems.removeOne(m_movingItem); - QRectF movedRectF = m_movingItem->mapRectToScene(m_movingItem->boundingRect()); - QList> lstTempLen; - if (nBIndexLeft == 0 && nBIndexTop == 0) { - for (auto item : lstNoMovedItems) { - QPointF tempPos = item->mapToScene(item->boundingRect().topLeft()); - qreal len = sqrt(pow(tempPos.x() - movedRectF.bottomRight().x(), 2) - + pow(tempPos.y() - movedRectF.bottomRight().y(), 2)); - lstTempLen.append(qMakePair(item, len)); - } - // 获取距离最近的块 - std::sort(lstTempLen.begin(), - lstTempLen.end(), - [=](const QPair &item1, - const QPair &item2) { - return item1.second < item2.second; - }); - - QPointF dPos = lstTempLen.first().first->mapToScene( - lstTempLen.first().first->boundingRect().topLeft()) - - m_movingItem->mapToScene(m_movingItem->boundingRect().bottomRight()); - g_dx = dPos.x(); - g_dy = dPos.y(); - qDebug() << "g_dx" << g_dx; - qDebug() << "g_dy" << g_dy; - g_bXYTogetherMoved = true; - } - - // LB 左下 - if (nBIndexLeft == 0 && nBIndexBottom == nItemSize) { - for (auto item : lstNoMovedItems) { - QPointF tempPos = item->mapToScene(item->boundingRect().bottomLeft()); - qreal len = sqrt(pow(tempPos.x() - movedRectF.topRight().x(), 2) - + pow(tempPos.y() - movedRectF.topRight().y(), 2)); - lstTempLen.append(qMakePair(item, len)); - } - // 获取距离最近的块 - std::sort(lstTempLen.begin(), - lstTempLen.end(), - [=](const QPair &item1, - const QPair &item2) { - return item1.second < item2.second; - }); - - QPointF dPos = lstTempLen.first().first->mapToScene( - lstTempLen.first().first->boundingRect().bottomLeft()) - - m_movingItem->mapToScene(m_movingItem->boundingRect().topRight()); - g_dx = dPos.x(); - g_dy = dPos.y(); - g_bXYTogetherMoved = true; - qDebug() << "g_dx" << g_dx; - qDebug() << "g_dy" << g_dy; - } - - // RT 右上 - if (nBIndexRight == nItemSize && nBIndexTop == 0) { - for (auto item : lstNoMovedItems) { - QPointF tempPos = item->mapToScene(item->boundingRect().topRight()); - qreal len = sqrt(pow(tempPos.x() - movedRectF.bottomLeft().x(), 2) - + pow(tempPos.y() - movedRectF.bottomLeft().y(), 2)); - lstTempLen.append(qMakePair(item, len)); - } - // 获取距离最近的块 - std::sort(lstTempLen.begin(), - lstTempLen.end(), - [=](const QPair &item1, - const QPair &item2) { - return item1.second < item2.second; - }); - - QPointF dPos = lstTempLen.first().first->mapToScene( - lstTempLen.first().first->boundingRect().topRight()) - - m_movingItem->mapToScene(m_movingItem->boundingRect().bottomLeft()); - g_dx = dPos.x(); - g_dy = dPos.y(); - g_bXYTogetherMoved = true; - qDebug() << "g_dx" << g_dx; - qDebug() << "g_dy" << g_dy; - } - - // RB 右下 - - if (nBIndexRight == nItemSize && nBIndexBottom == nItemSize) { - for (auto item : lstNoMovedItems) { - QPointF tempPos = item->mapToScene(item->boundingRect().bottomRight()); - qreal len = sqrt(pow(tempPos.x() - movedRectF.topLeft().x(), 2) - + pow(tempPos.y() - movedRectF.topLeft().y(), 2)); - lstTempLen.append(qMakePair(item, len)); - } - // 获取距离最近的块 - std::sort(lstTempLen.begin(), - lstTempLen.end(), - [=](const QPair &item1, - const QPair &item2) { - return item1.second < item2.second; - }); - - QPointF dPos = lstTempLen.first().first->mapToScene( - lstTempLen.first().first->boundingRect().bottomRight()) - - m_movingItem->mapToScene(m_movingItem->boundingRect().topLeft()); - g_dx = dPos.x(); - g_dy = dPos.y(); - qDebug() << "g_dx" << g_dx; - qDebug() << "g_dy" << g_dy; - g_bXYTogetherMoved = true; - } - } - } - - qreal dx = g_dx, dy = g_dy; - - // 是自动吸附并且没有相交的情况,不需要要移动 - if (isAutoAdsorption && !isIntersect) { - if (isMove) - m_movingItem->moveBy(0, 0); - else { - dx = 0.0; - dy = 0.0; - } - } - // 其他情况需要移动 - else { - // 是否XY一起移动 - if (g_bXYTogetherMoved) { - if (isMove) - m_movingItem->moveBy(g_dx, g_dy); - qDebug() << "XY_XY_XY" << g_dx << g_dy; - } else { - // XY其中一个为0的情况, 执行移动 - if (qFuzzyIsNull(g_dx) || qFuzzyIsNull(g_dy)) { - if (isMove) - m_movingItem->moveBy(g_dx, g_dy); - - qDebug() << "DBL_MIN" << g_dx << g_dy; - } - // X和Y都不为0的情况下,哪个移动的绝对值小移动哪一个 - else { - if (isMove) - fabs(g_dx) < fabs(g_dy) ? m_movingItem->moveBy(g_dx, 0) - : m_movingItem->moveBy(0, g_dy); - else { - fabs(g_dx) < fabs(g_dy) ? dy = 0.0 : dx = 0.0; - } - qDebug() << "fabs(g_dx) < fabs(g_dy) ?" << g_dx << g_dy; - } - } - } - for (auto pw : m_monitors.keys()) { - pw->update(); - } - m_graphicsScene.update(); - - if (!isMove) - return QPointF(dx, dy); - else { - return QPointF(g_dx, g_dy); - } -} - -// 多屏自动调整 -void MonitorsGround::multiScreenAutoAdjust() -{ - // 在自动拼接之后已经达成全连通状态,无效执行自动调整 - updateConnectedState(); - - // 判断是否为全连通状态 - if (getConnectedDomain(m_movingItem).size() == m_lstItems.size()) { - updateConnectedState(true); - return; - } - - // 存储移动块到临时变量 - MonitorProxyWidget *m_movingItemTemp = m_movingItem; - QList lstChangedItems = m_lstItems; - - // 处理之前变化的块为空则返回 - if (lstChangedItems.isEmpty()) - return; - - QMap> maplstItems; - QMap mapItemsNeedMove; - QList itemTemp; - - // 这个列表是存放的就是所有移动块相关的块 - // 判断改变连通的块与移动块的剩余联通块是否存在连接 - // 【这种是在移动块初始连接块是两个及以上的情况下触发的,如果是一个连通块的话不会改变连通状态的】 - - // 获取屏幕集群 - for (auto iter : m_lstItems) { - - if (!lstChangedItems.contains(iter)) - continue; - - itemTemp = getConnectedDomain(iter); - for (auto k : itemTemp) { - if (lstChangedItems.contains(k) && k != iter) { - lstChangedItems.removeOne(k); - } - } - } - - for (auto item : lstChangedItems) { - qDebug() << "处理之后变化的块:" << item->name(); - } - - for (auto iter : lstChangedItems) { - maplstItems.insert(iter, getConnectedDomain(iter)); - } - - for (auto iter : maplstItems.keys()) { - qDebug() << "屏幕集群:" << iter->name(); - for (auto k : maplstItems[iter]) { - qDebug() << "val" << k->name(); - } - } - - if (maplstItems.size() > 0) { - // 说明除了移动块剩下的被拆分成了几部分,需要重新向其中一个部分移动了 - // 找到中心屏幕集群(包含移动块) - for (auto iter1 = maplstItems.begin(); iter1 != maplstItems.end(); ++iter1) { - if (iter1.value().contains(m_movingItemTemp)) { - m_lstSortItems = iter1.value(); - break; - } - } - - // 其他屏幕集群依次向中心屏幕集群移动 - for (auto iter = maplstItems.begin(); iter != maplstItems.end(); ++iter) { - if (iter.value().contains(m_movingItemTemp)) - continue; - - QList lstPos; - QList lstX, lstY; - for (auto item : iter.value()) { - m_movingItem = item; - bool isRestore = false; - multiScreenSortAlgo(isRestore); - - if (!m_lstSortItems.contains(item)) - m_lstSortItems.append(item); - } - } - } - m_lstSortItems = m_lstItems; - m_movingItem = m_movingItemTemp; - - // 自动调整完毕后,更新连通域 - updateConnectedState(true); -} - -// 更连通状态 -// 更新上一次拼接完成的值 -bool MonitorsGround::updateConnectedState(bool isInit) -{ - bool isIntersect = false; - QList m_lstItemsTemp; - for (int i = 0; i < m_lstItems.size(); i++) { - m_lstItemsTemp.clear(); - - for (int j = 0; j < m_lstItems.size(); j++) { - if (j != i - && m_lstItems[i] - ->mapRectToScene(m_lstItems[i]->boundingRectEx()) - .intersects(m_lstItems[j]->mapRectToScene(m_lstItems[j]->boundingRect())) - && !m_lstItemsTemp.contains(m_lstItems[j]) - && !m_lstItems[i] - ->mapRectToScene(m_lstItems[i]->justIntersectRect()) - .intersects( - m_lstItems[j]->mapRectToScene(m_lstItems[j]->boundingRect()))) { - m_lstItemsTemp.append(m_lstItems[j]); - } - if (j != i - && m_lstItems[i] - ->mapRectToScene(m_lstItems[i]->justIntersectRect()) - .intersects( - m_lstItems[j]->mapRectToScene(m_lstItems[j]->boundingRect()))) { - isIntersect = true; - } - } - - if (isInit) { - m_mapInitItemConnectedState.insert(m_lstItems[i], m_lstItemsTemp); - } - - m_mapItemConnectedState.insert(m_lstItems[i], m_lstItemsTemp); - } - - return isIntersect; -} - -// 获取连通域 -QList MonitorsGround::getConnectedDomain(MonitorProxyWidget *item) -{ - QList lstTemp1Items; - - QList lstTemp; - QList lstItems; - - lstItems.append(item); - - for (auto iter : m_lstItems) /*标记循环次数*/ { - Q_UNUSED(iter) - - lstTemp.clear(); - // 获取所有的value - for (auto a : lstItems) { - for (auto t : m_mapItemConnectedState[a]) { - if (!lstTemp1Items.contains(t)) - lstTemp.append(t); - } - } - - // 去重插入 - for (auto t : lstTemp) { - if (!lstTemp1Items.contains(t) && t != item) - lstTemp1Items.append(t); - else { - lstTemp.removeOne(t); - } - } - - lstItems.clear(); - lstItems.append(lstTemp); - } - - lstTemp1Items.append(item); - - return lstTemp1Items; -} - -// 响应键盘调整 脱离的需要拉回来,重叠的需要打回去 -// 左右边界相交1个像素的情况下,只能像上下运动; 相反如果上下边界相交1个像素的情况下,只能左右运动. -// 鼠标巡边移动 -void MonitorsGround::onRequestKeyPress(MonitorProxyWidget *pw, int keyValue) -{ - Q_EMIT setEffectiveReminderVisible(false, m_nEffectiveTime); - m_effectiveTimer->stop(); - - // 当鼠标移动的时候开始响应并执行自动吸附的逻辑 - // 保证 bufferboundingRect 相交且 boundingRect - // 不相交,保证移动的块item始终在其他item的外边缘移动 - - // 需要在全连通的情况下开始响应键盘事件 - bool bIntersectsTop = false; - bool bIntersectsBottom = false; - bool bIntersectsRight = false; - bool bIntersectsLeft = false; - - for (auto item : m_lstItems) { - if (item == pw) - continue; - - if (item->mapRectToScene(item->boundingRect()) - .intersects(pw->mapRectToScene(pw->justIntersectRectTop()))) { - // 上相交 - bIntersectsTop = true; - } else if (item->mapRectToScene(item->boundingRect()) - .intersects(pw->mapRectToScene(pw->justIntersectRectBottom()))) { - // 下相交 - bIntersectsBottom = true; - } else if (item->mapRectToScene(item->boundingRect()) - .intersects(pw->mapRectToScene(pw->justIntersectRectLeft()))) { - // 左相交 - bIntersectsLeft = true; - } else if (item->mapRectToScene(item->boundingRect()) - .intersects(pw->mapRectToScene(pw->justIntersectRectRight()))) { - // 右相交 - bIntersectsRight = true; - } - } - - if (!bIntersectsTop && !bIntersectsBottom && !bIntersectsRight && !bIntersectsLeft) { - for (auto item : m_lstItems) { - if (item == pw) - continue; - // 达成顶点相交 - if (item->mapRectToScene(item->boundingRect()) - .intersects(pw->mapRectToScene(pw->justIntersectRectLeftTop()))) { - // 左上相交 - bIntersectsBottom = true; - bIntersectsRight = true; - } else if (item->mapRectToScene(item->boundingRect()) - .intersects(pw->mapRectToScene(pw->justIntersectRectLeftBottom()))) { - // 左下相交 - bIntersectsTop = true; - bIntersectsRight = true; - } else if (item->mapRectToScene(item->boundingRect()) - .intersects(pw->mapRectToScene(pw->justIntersectRectRightTop()))) { - // 右上相交 - bIntersectsBottom = true; - bIntersectsLeft = true; - } else if (item->mapRectToScene(item->boundingRect()) - .intersects( - pw->mapRectToScene(pw->justIntersectRectRightBottom()))) { - // 右下相交 - bIntersectsTop = true; - bIntersectsLeft = true; - } - } - } - - int moveStep = 10; - qreal recision = 0.1; - // 根据按键的方向与当前的相接的边和连通域的变化来综合判定是否执行移动操作 - switch (keyValue) { - case Qt::Key_Left: - if (!bIntersectsLeft && (bIntersectsTop || bIntersectsBottom)) { - // 执行运动 - for (int i = 0; i < moveStep * 10; i++) { - pw->moveBy(-recision, 0); - pw->update(); - // 相交 - if (updateConnectedState()) { - pw->moveBy(1, 0); // 此处为:判定为重叠时,回退距离为内缩的距离 - break; - } - if (getConnectedDomain(m_movingItem).size() != m_lstItems.size()) { - pw->moveBy(recision, 0); - break; - } - } - } - break; - case Qt::Key_Right: - if (!bIntersectsRight && (bIntersectsTop || bIntersectsBottom)) { - // 执行运动 - for (int i = 0; i < moveStep * 10; i++) { - pw->moveBy(recision, 0); - pw->update(); - if (updateConnectedState()) { - pw->moveBy(-1, 0); - break; - } - if (getConnectedDomain(m_movingItem).size() != m_lstItems.size()) { - pw->moveBy(-recision, 0); - break; - } - } - } - break; - case Qt::Key_Up: - if (!bIntersectsTop && (bIntersectsLeft || bIntersectsRight)) { - // 执行运动 - for (int i = 0; i < moveStep * 10; i++) { - pw->moveBy(0, -recision); - pw->update(); - if (updateConnectedState()) { - pw->moveBy(0, 1); - break; - } - if (getConnectedDomain(m_movingItem).size() != m_lstItems.size()) { - pw->moveBy(0, recision); - break; - } - } - } - break; - case Qt::Key_Down: - if (!bIntersectsBottom && (bIntersectsLeft || bIntersectsRight)) { - // 执行运动 - for (int i = 0; i < moveStep * 10; i++) { - pw->moveBy(0, recision); - pw->update(); - if (updateConnectedState()) { - pw->moveBy(0, -1); - break; - } - if (getConnectedDomain(m_movingItem).size() != m_lstItems.size()) { - pw->moveBy(0, -recision); - break; - } - } - } - break; - default: - break; - } - - pw->update(); - updateConnectedState(); - onResize(); - - Q_EMIT setEffectiveReminderVisible(true, m_nEffectiveTime); - m_effectiveTimer->start(); -} - -// 自动吸附实现 -void MonitorsGround::onRequestMouseMove(MonitorProxyWidget *pw) -{ - Q_EMIT setEffectiveReminderVisible(false, m_nEffectiveTime); - m_effectiveTimer->stop(); - - // 当鼠标移动的时候开始响应并执行自动吸附的逻辑 - // 保证 bufferboundingRect 相交且 boundingRect - // 不相交,保证移动的块item始终在其他item的外边缘移动 - - qreal top = 0.0; - qreal bottom = 0.0; - qreal right = 0.0; - qreal left = 0.0; - - qreal topLeft = 0.0; - qreal topRight = 0.0; - qreal bottomLeft = 0.0; - qreal bottomRight = 0.0; - qreal rightTop = 0.0; - qreal rightBottom = 0.0; - qreal leftTop = 0.0; - qreal leftBottom = 0.0; - - int space = 200; - - auto minMoveLen = [=](qreal temp, qreal &len) { - if (fabs(len) > 0.0) { - if (fabs(temp) < fabs(len)) - len = temp; - } else { - len = temp; - } - }; - - for (auto item : m_lstItems) { - if (item == pw) - continue; - - if (pw->mapToScene(pw->boundingRect()).intersects(item->mapToScene(item->boundingRect()))) - return; - - // 与boundingRect 不相交 - if (pw->mapToScene(pw->boundingRect()) - .intersects(item->mapToScene(item->bufferboundingRectTop()))) { - // 上相交 - qreal temp = item->mapToScene(item->boundingRect().topRight()).y() - - pw->mapToScene(pw->boundingRect().bottomLeft()).y(); - minMoveLen(temp, top); - - // 判断边对齐 - temp = item->mapToScene(item->boundingRect().topRight()).x() - - pw->mapToScene(pw->boundingRect().bottomRight()).x(); - minMoveLen(temp, topLeft); - temp = item->mapToScene(item->boundingRect().topLeft()).x() - - pw->mapToScene(pw->boundingRect().bottomLeft()).x(); - minMoveLen(temp, topRight); - } else if (pw->mapToScene(pw->boundingRect()) - .intersects(item->mapToScene(item->bufferboundingRectBottom()))) { - // 下相交 - qreal temp = item->mapToScene(item->boundingRect().bottomLeft()).y() - - pw->mapToScene(pw->boundingRect().topLeft()).y(); - minMoveLen(temp, bottom); - - // 判断边对齐的可能 - temp = item->mapToScene(item->boundingRect().topRight()).x() - - pw->mapToScene(pw->boundingRect().bottomRight()).x(); - minMoveLen(temp, bottomLeft); - temp = item->mapToScene(item->boundingRect().topLeft()).x() - - pw->mapToScene(pw->boundingRect().bottomLeft()).x(); - minMoveLen(temp, bottomRight); - } else if (pw->mapToScene(pw->boundingRect()) - .intersects(item->mapToScene(item->bufferboundingRectLeft()))) { - // 左相交 - qreal temp = item->mapToScene(item->boundingRect().bottomLeft()).x() - - pw->mapToScene(pw->boundingRect().bottomRight()).x(); - minMoveLen(temp, left); - - // 判断边对齐的可能 - temp = item->mapToScene(item->boundingRect().topRight()).y() - - pw->mapToScene(pw->boundingRect().topRight()).y(); - minMoveLen(temp, leftTop); - temp = item->mapToScene(item->boundingRect().bottomLeft()).y() - - pw->mapToScene(pw->boundingRect().bottomLeft()).y(); - minMoveLen(temp, leftBottom); - } else if (pw->mapToScene(pw->boundingRect()) - .intersects(item->mapToScene(item->bufferboundingRectRight()))) { - // 右相交 - qreal temp = item->mapToScene(item->boundingRect().bottomRight()).x() - - pw->mapToScene(pw->boundingRect().bottomLeft()).x(); - minMoveLen(temp, right); - - // 判断边对齐的可能 - temp = item->mapToScene(item->boundingRect().topRight()).y() - - pw->mapToScene(pw->boundingRect().topRight()).y(); - minMoveLen(temp, rightTop); - temp = item->mapToScene(item->boundingRect().bottomLeft()).y() - - pw->mapToScene(pw->boundingRect().bottomLeft()).y(); - minMoveLen(temp, rightBottom); - } - } - - auto edgeAlignment = [=](qreal x1, qreal x2) { - if (fabs(x1) > fabs(x2)) - return fabs(x2) < space ? x2 : 0; - else - return fabs(x1) < space ? x1 : 0; - }; - - QPointF autoAdsorptionPos(0.0, 0.0), edgeAlignmentPos(0.0, 0.0); - - if (qFuzzyIsNull(top)) { - edgeAlignmentPos.setX(edgeAlignment(bottomRight, bottomLeft)); - autoAdsorptionPos.setY(bottom); - } else if (qFuzzyIsNull(bottom)) { - edgeAlignmentPos.setX(edgeAlignment(topRight, topLeft)); - autoAdsorptionPos.setY(top); - } else { - autoAdsorptionPos.setY((fabs(top) < fabs(bottom)) ? top : bottom); - edgeAlignmentPos.setX((fabs(top) < fabs(bottom)) ? edgeAlignment(topRight, topLeft) - : edgeAlignment(bottomRight, bottomLeft)); - } - - if (qFuzzyIsNull(left)) { - autoAdsorptionPos.setX(right); - edgeAlignmentPos.setY(edgeAlignment(rightTop, rightBottom)); - } else if (qFuzzyIsNull(right)) { - autoAdsorptionPos.setX(left); - edgeAlignmentPos.setY(edgeAlignment(leftTop, leftBottom)); - } else { - autoAdsorptionPos.setX((fabs(left) < fabs(right)) ? left : right); - edgeAlignmentPos.setY((fabs(left) < fabs(right)) ? edgeAlignment(leftTop, leftBottom) - : edgeAlignment(rightTop, rightBottom)); - } - - if (!qFuzzyIsNull(autoAdsorptionPos.x())) { - edgeAlignmentPos.setX(0.0); - } - - if (!qFuzzyIsNull(autoAdsorptionPos.y())) { - edgeAlignmentPos.setY(0.0); - } - - pw->moveBy(edgeAlignmentPos.x() + autoAdsorptionPos.x(), - edgeAlignmentPos.y() + autoAdsorptionPos.y()); -} - -// 更新缩放比例 -void MonitorsGround::updateScale() -{ - QRectF rectView = rect(); - QRectF rect = m_graphicsScene.itemsBoundingRect(); - - double screenWidth = rect.width(); - double screenHeight = rect.height(); - - // 计算缩放比例 1.2,是指活动区域和调节区域 - double hScale = ((rectView.width() > MAX_W) ? MAX_W : rectView.width()) / 1.2 / screenWidth; - double wScale = rectView.height() / 1.2 / screenHeight; - m_scale = std::min(hScale, wScale); - - resetTransform(); - scale(m_scale, m_scale); -} - -void MonitorsGround::autoRebound() -{ - - for (auto pw : m_monitors.keys()) { - // 设置位置 - pw->setPos(pw->getPreCenter()); - pw->update(); - } -} - -// 屏幕示意图平移居中 -void MonitorsGround::centeredMonitorsView() -{ - if (m_monitors.size() == 1) { - singleScreenAdjest(); - } else { - QPointF dPos = sceneRect().center() - scene()->itemsBoundingRect().center(); - for (auto pw : m_monitors.keys()) { - // 保存上一次调整的数据,用与在不满足调整条件的时候自动恢复的功能. - pw->setPreCenter(pw->pos()); - pw->setPos(pw->pos() + dPos); - } - - if (!m_isInit) - updateConnectedState(true); // 更新初始化连接数据 - } - - for (auto pw : m_monitors.keys()) { - pw->update(); - } - - m_isInit = true; -} diff --git a/dcc-old/src/plugin-display/window/monitorsground.h b/dcc-old/src/plugin-display/window/monitorsground.h deleted file mode 100644 index 7d0cc2f7a7..0000000000 --- a/dcc-old/src/plugin-display/window/monitorsground.h +++ /dev/null @@ -1,102 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef MONITORSGROUND_H -#define MONITORSGROUND_H - -#include "interface/namespace.h" -#include "operation/monitor.h" - -#include -#include - -#include - -class QGraphicsScene; -class QTimer; -class QScroller; -class QScrollArea; - -DWIDGET_USE_NAMESPACE -namespace DCC_NAMESPACE { - -class DisplayModel; -class MonitorProxyWidget; -class MonitorsGround : public DGraphicsView -{ - Q_OBJECT - -public: - explicit MonitorsGround(int activateHeight, QWidget *parent = nullptr); - ~MonitorsGround(); - - inline void setMergeMode(bool val) { m_setMergeMode = val; } - void setModel(DisplayModel *model, Monitor *moni = nullptr); -Q_SIGNALS: - void requestApplySettings(QHash> monitorposition); - void requestMonitorPress(Monitor *mon); - void requestMonitorRelease(Monitor *mon); - void showsecondaryScreen(); - void setEffectiveReminderVisible(bool visible, int nEffectiveTime); - -private Q_SLOTS: - void onRequestMouseMove(MonitorProxyWidget *pw); - void onRequestKeyPress(MonitorProxyWidget *pw, int keyValue); - void onRequestMonitorRelease(); - void onGeometryChanged(); - void onCurrentModeChanged(); - void onRotateChanged(); - -protected: - void resizeEvent(QResizeEvent *event) override; - void enterEvent(QEvent *) override; - void leaveEvent(QEvent *) override; - void paintEvent(QPaintEvent *event) override; - -private: - void applySettings(); - void adjustAll(); - void onResize(); - void resetMonitorsView(); - void centeredMonitorsView(); - void executemultiScreenAlgo(const bool isRebound); - - /*1050-5401*/ - QPointF multiScreenSortAlgo(bool &isRestore, const bool isRebound = true);//排序算法 返回值为计算之后需要移动的XY值 - void multiScreenAutoAdjust(); // 手动调整完如果出现没有完全连通的情况,需要启动自动调整算法 - bool updateConnectedState(bool isInit = false); //更新连通状态 - QList getConnectedDomain(MonitorProxyWidget *item); //获取每个屏幕的连通域 - void updateScale(); - void singleScreenAdjest();//单屏幕调整 - void autoRebound(); //自动回弹流程 - void initMonitorProxyWidget(Monitor *mon); - -private: - DisplayModel *m_model; - QGraphicsScene m_graphicsScene; //场景 - QScrollArea *m_scrollArea; - - QMap m_monitors; - - /*1050-5401*/ - QList m_lstItems; - QList m_lstSortItems; - MonitorProxyWidget * m_movingItem; //正在移动的块 - QList> m_lstMoveingItemToCenterPosLen; //所有块的中心点到移动点的距离 - QMap> m_mapItemConnectedState; //所有块的实时连通状态 - QMap> m_mapInitItemConnectedState; //所有块的初始连通状态 - - QTimer *m_refershTimer; - QTimer *m_effectiveTimer; - - int m_isSingleDisplay; //当前界面只显示单个屏幕 - double m_scale; //缩放比例 - bool m_isInit; //初始化完成 - int m_nEffectiveTime; //多屏设置生效时间 - bool m_setMergeMode; -}; -} - -#endif // MONITORSGROUND_H diff --git a/dcc-old/src/plugin-display/window/multiscreenwidget.cpp b/dcc-old/src/plugin-display/window/multiscreenwidget.cpp deleted file mode 100644 index 39d9ba309d..0000000000 --- a/dcc-old/src/plugin-display/window/multiscreenwidget.cpp +++ /dev/null @@ -1,493 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "multiscreenwidget.h" -#include "brightnesswidget.h" -#include "scalingwidget.h" -#include "resolutionwidget.h" -#include "refreshratewidget.h" -#include "rotatewidget.h" -#include "secondaryscreendialog.h" -#include "widgets/settingsitem.h" -#include "monitorcontrolwidget.h" -#include "monitorindicator.h" -#include "recognizewidget.h" -#include "operation/displaymodel.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -const int ComboxWidth = 300; - -MultiScreenWidget::MultiScreenWidget(QWidget *parent) - : QWidget(parent) - , m_contentLayout(new QVBoxLayout(this)) - , m_monitorControlWidget(new MonitorControlWidget(240, this)) //根据产品设计更改出事高度为240 - , m_fullIndication(new MonitorIndicator(this)) - , m_modeSettingsItem(new SettingsItem(this)) - , m_modeCombox(new QComboBox(this)) - , m_primarySettingsItem(new SettingsItem(this)) - , m_primaryCombox(new QComboBox(this)) - , m_brightnessWidget(new BrightnessWidget(this)) - , m_scalingWidget(new ScalingWidget(this)) - , m_resolutionWidget(new ResolutionWidget(300, this)) - , m_refreshRateWidget(new RefreshRateWidget(300, this)) - , m_rotateWidget(new RotateWidget(300, this)) - , m_model(nullptr) - , m_resetSecondaryScreenDlgTimer(new QTimer(this)) -{ - //初始化列表无法进行静态翻译 - //~ contents_path /display/Multiple Displays - m_multiSettingLabel = new TitleLabel(tr("Multiple Displays"), this); - //~ contents_path /display/Mode - m_modeLabel = new QLabel(tr("Mode"), this); - //~ contents_path /display/Main Scree - m_primaryLabel = new QLabel(tr("Main Screen"), this); - - m_monitorControlWidget->setAccessibleName("MultiScreenWidget_monitorControl"); - m_fullIndication->setAccessibleName("fullIndication"); - - m_contentLayout->setSpacing(Dtk::Widget::DSizeModeHelper::element(6, 10)); - m_contentLayout->setContentsMargins(0, 20, 0, 0); - m_contentLayout->addWidget(m_monitorControlWidget); - m_contentLayout->addSpacing(20); - m_contentLayout->addWidget(m_multiSettingLabel); - QHBoxLayout *modeLayout = new QHBoxLayout(m_modeSettingsItem); - modeLayout->setContentsMargins(10, 0, 10, 0); - modeLayout->addWidget(m_modeLabel); - modeLayout->addWidget(m_modeCombox); - m_modeCombox->setFocusPolicy(Qt::NoFocus); - m_modeCombox->setMinimumWidth(ComboxWidth); - m_modeCombox->setMinimumHeight(36); - m_modeSettingsItem->addBackground(); - m_modeSettingsItem->setMinimumHeight(48); - m_modeSettingsItem->setLayout(modeLayout); - m_contentLayout->addWidget(m_modeSettingsItem); - - QHBoxLayout *primaryLayout = new QHBoxLayout(m_primarySettingsItem); - primaryLayout->setContentsMargins(10, 0, 10, 0); - primaryLayout->addWidget(m_primaryLabel); - primaryLayout->addWidget(m_primaryCombox); - m_primaryCombox->setFocusPolicy(Qt::NoFocus); - m_primaryCombox->setMinimumWidth(ComboxWidth); - m_primaryCombox->setMinimumHeight(36); - m_primarySettingsItem->addBackground(); - m_primarySettingsItem->setMinimumHeight(48); - m_primarySettingsItem->setLayout(primaryLayout); - m_contentLayout->addWidget(m_primarySettingsItem); - - m_contentLayout->addWidget(m_brightnessWidget); - m_contentLayout->addWidget(m_scalingWidget); - m_contentLayout->addWidget(m_resolutionWidget); - m_contentLayout->addWidget(m_refreshRateWidget); - m_contentLayout->addWidget(m_rotateWidget); - m_contentLayout->addStretch(); - - setLayout(m_contentLayout); - - QDesktopWidget *desktopwidget = QApplication::desktop(); - connect(desktopwidget,SIGNAL(workAreaResized(int)),this,SLOT(onResetSecondaryScreenDlg())); - - m_resetSecondaryScreenDlgTimer->setSingleShot(true); - m_resetSecondaryScreenDlgTimer->setInterval(100); - connect(m_resetSecondaryScreenDlgTimer, &QTimer::timeout, this, &MultiScreenWidget::onResetSecondaryScreenDlgTimerOut); -} - -MultiScreenWidget::~MultiScreenWidget() -{ - for (auto dlg : m_secondaryScreenDlgList) { - dlg->deleteLater(); - } - m_secondaryScreenDlgList.clear(); - - for(auto widget : m_recognizeWidget) { - widget->deleteLater(); - } - m_recognizeWidget.clear(); - delete m_fullIndication; -} - -void MultiScreenWidget::setModel(DisplayModel *model) -{ - m_model = model; - - initModeList(); - initPrimaryList(); - - connect(m_model, &DisplayModel::displayModeChanged, m_monitorControlWidget, &MonitorControlWidget::setScreensMerged); - connect(m_model, &DisplayModel::displayModeChanged, this, [=](const int mode) { - if (mode == MERGE_MODE) { - m_modeCombox->setCurrentIndex(0); - m_primarySettingsItem->setVisible(false); - m_brightnessWidget->showBrightness(); - m_monitorControlWidget->setModel(m_model); - for (auto dlg : m_secondaryScreenDlgList) { - dlg->deleteLater(); - } - m_secondaryScreenDlgList.clear(); - } else if (mode == EXTEND_MODE) { - m_modeCombox->setCurrentIndex(1); - m_primarySettingsItem->setVisible(true); - m_brightnessWidget->showBrightness(m_model->primaryMonitor()); - m_monitorControlWidget->setModel(m_model); - initSecondaryScreenDialog(); - } else if (m_model->displayMode() == SINGLE_MODE) { - auto monitorList = m_model->monitorList(); - for (int idx = 0; idx < monitorList.size(); ++idx) { - auto monitor = monitorList[idx]; - if (monitor->enable()) { - m_modeCombox->setCurrentIndex(idx + 2); - m_monitorControlWidget->setModel(m_model, monitor); - break; - } - } - - m_primarySettingsItem->setVisible(false); - m_brightnessWidget->showBrightness(m_model->primaryMonitor()); - - for (auto dlg : m_secondaryScreenDlgList) { - dlg->deleteLater(); - } - m_secondaryScreenDlgList.clear(); - } - }); - connect(m_model, &DisplayModel::primaryScreenChanged, this, [=](const QString &name) { - for (int idx = 0; idx < m_primaryCombox->count(); ++idx) { - if (name == m_primaryCombox->itemText(idx)) { - m_primaryCombox->blockSignals(true); - m_primaryCombox->setCurrentIndex(idx); - m_primaryCombox->blockSignals(false); - break; - } - } - - if (m_model->displayMode() == MERGE_MODE) { - m_brightnessWidget->showBrightness(); - } else if (m_model->displayMode() == EXTEND_MODE) { - m_brightnessWidget->showBrightness(m_model->primaryMonitor()); - } else if (m_model->displayMode() == SINGLE_MODE) { - m_monitorControlWidget->setModel(m_model, m_model->primaryMonitor()); - m_brightnessWidget->showBrightness(m_model->primaryMonitor()); - auto monitorList = m_model->monitorList(); - for (int idx = 0; idx < monitorList.size(); ++idx) { - auto monitor = monitorList[idx]; - if (monitor->enable()) { - m_modeCombox->setCurrentIndex(idx + 2); - break; - } - } - } - - m_resolutionWidget->setMonitor(m_model->primaryMonitor()); - m_refreshRateWidget->setMonitor(m_model->primaryMonitor()); - m_rotateWidget->setMonitor(m_model->primaryMonitor()); - - for (const auto &monitor : m_model->monitorList()) { - if (name == monitor->name()) { - for (auto screen : QGuiApplication::screens()) { - disconnect(screen, &QScreen::geometryChanged, this, &MultiScreenWidget::onResetFullIndication); - } - QScreen *screen = m_model->primaryMonitor()->getQScreen(); - if(!screen) - continue; - - connect(screen, &QScreen::geometryChanged, this, &MultiScreenWidget::onResetFullIndication); - - m_fullIndication->setGeometry(screen->geometry()); - m_fullIndication->move(screen->geometry().topLeft()); - m_fullIndication->setVisible(true); - QTimer::singleShot(1000, this, [=] { m_fullIndication->setVisible(false); }); - m_brightnessWidget->setVisible(monitor->canBrightness()); - break; - } - } - - Q_EMIT requestGatherEnabled(true); - initSecondaryScreenDialog(); - }); - connect(m_model, &DisplayModel::brightnessEnableChanged, this, [=](const bool enable) { - const bool visible = enable && m_model->primaryMonitor() && m_model->primaryMonitor()->canBrightness(); - m_brightnessWidget->setVisible(visible); - }); - - connect(m_monitorControlWidget, &MonitorControlWidget::requestMonitorPress, this, &MultiScreenWidget::onMonitorPress); - connect(m_monitorControlWidget, &MonitorControlWidget::requestMonitorRelease, this, &MultiScreenWidget::onMonitorRelease); - connect(m_monitorControlWidget, &MonitorControlWidget::requestRecognize, this, &MultiScreenWidget::requestRecognize); - connect(m_monitorControlWidget, &MonitorControlWidget::requestSetMonitorPosition, this, &MultiScreenWidget::onRequestSetMonitorPosition); - connect(m_monitorControlWidget, &MonitorControlWidget::requestGatherWindows, this, &MultiScreenWidget::onGatherWindows); - connect(this, &MultiScreenWidget::requestGatherEnabled, m_monitorControlWidget, &MonitorControlWidget::onGatherEnabled); - - connect(m_modeCombox, static_cast(&QComboBox::currentIndexChanged), this, [=](int idx) { - if (idx <= 1 && m_model->displayMode() != idx + 1) { - m_monitorControlWidget->setMergeMode((idx == 0)? true: false); - Q_EMIT requestSwitchMode(idx + 1); - } else if (idx > 1 && (m_model->displayMode() != SINGLE_MODE || (m_model->monitorList()[idx - 2]->name() != m_model->primary() && !m_model->primary().isEmpty()))) { - m_monitorControlWidget->setMergeMode(false); - Q_EMIT requestSwitchMode(SINGLE_MODE, m_model->monitorList()[idx - 2]->name()); - } - }); - connect(m_primaryCombox, static_cast(&QComboBox::currentIndexChanged), this, [=](int idx) { - Q_EMIT requestSetPrimary(m_primaryCombox->itemText(idx)); - }); - - connect(m_brightnessWidget, &BrightnessWidget::requestSetColorTemperature, this, &MultiScreenWidget::requestSetColorTemperature); - connect(m_brightnessWidget, &BrightnessWidget::requestSetMonitorBrightness, this, &MultiScreenWidget::requestSetMonitorBrightness); - connect(m_brightnessWidget, &BrightnessWidget::requestAmbientLightAdjustBrightness, this, &MultiScreenWidget::requestAmbientLightAdjustBrightness); - connect(m_brightnessWidget, &BrightnessWidget::requestSetMethodAdjustCCT, this, &MultiScreenWidget::requestSetMethodAdjustCCT); - connect(m_scalingWidget, &ScalingWidget::requestUiScaleChange, this, &MultiScreenWidget::requestUiScaleChange); - connect(m_resolutionWidget, &ResolutionWidget::requestSetResolution, this, &MultiScreenWidget::requestSetResolution); - connect(m_resolutionWidget, &ResolutionWidget::requestSetFillMode, this, &MultiScreenWidget::requestSetFillMode); - connect(m_resolutionWidget, &ResolutionWidget::requestCurrFillModeChanged, this, &MultiScreenWidget::requestCurrFillModeChanged); - connect(m_refreshRateWidget, &RefreshRateWidget::requestSetResolution, this, &MultiScreenWidget::requestSetResolution); - connect(m_rotateWidget, &RotateWidget::requestSetRotate, this, &MultiScreenWidget::requestSetRotate); - - connect(this, &MultiScreenWidget::requestRecognize, this, &MultiScreenWidget::onRequestRecognize); - - m_monitorControlWidget->setScreensMerged(m_model->displayMode()); - m_monitorControlWidget->setModel(m_model, m_model->displayMode() == SINGLE_MODE ? m_model->primaryMonitor() : nullptr); - - m_brightnessWidget->setMode(m_model); - m_brightnessWidget->showBrightness(m_model->displayMode() == MERGE_MODE ? nullptr : m_model->primaryMonitor()); - const bool brightnessIsEnabled = m_model->brightnessEnable() && m_model->primaryMonitor() && m_model->primaryMonitor()->canBrightness(); - m_brightnessWidget->setVisible(brightnessIsEnabled); - m_scalingWidget->setModel(m_model); - m_resolutionWidget->setModel(m_model, m_model->primaryMonitor()); - m_refreshRateWidget->setModel(m_model, m_model->primaryMonitor()); - m_rotateWidget->setModel(m_model, m_model->primaryMonitor()); - m_primarySettingsItem->setVisible(m_model->displayMode() == EXTEND_MODE); - - initSecondaryScreenDialog(); -} - -void MultiScreenWidget::initModeList() -{ - m_modeCombox->addItem(tr("Duplicate")); - m_modeCombox->addItem(tr("Extend")); - - auto monitorList = m_model->monitorList(); - for (int idx = 0; idx < monitorList.size(); ++idx) { - auto monitor = monitorList[idx]; - if(monitorList.size() <= 2) - m_modeCombox->addItem(tr("Only on %1").arg(monitor->name())); - - if (m_model->displayMode() == MERGE_MODE) { - m_modeCombox->setCurrentIndex(0); - } else if (m_model->displayMode() == EXTEND_MODE) { - m_modeCombox->setCurrentIndex(1); - } else if (m_model->displayMode() == SINGLE_MODE && monitor->enable()) { - m_modeCombox->setCurrentIndex(idx + 2); - } - } -} - -void MultiScreenWidget::initPrimaryList() -{ - for (const auto &monitor : m_model->monitorList()) { - m_primaryCombox->addItem(monitor->name()); - if (monitor->name() == m_model->primary()) { - m_primaryCombox->setCurrentText(m_model->primary()); - } - } -} - -void MultiScreenWidget::initSecondaryScreenDialog() -{ - if (WQt::Utils::isTreeland()) { - // FIXME(treeland): why this will break treeland - return; - } - if (m_model->displayMode() == EXTEND_MODE) { - m_resetSecondaryScreenDlgTimer->stop(); - for (auto dlg : m_secondaryScreenDlgList) { - dlg->deleteLater(); - } - m_secondaryScreenDlgList.clear(); - - for (const auto &monitor : m_model->monitorList()) { - if (monitor == m_model->primaryMonitor()) { - QTimer::singleShot(0, this, [=] { requestSetMainwindowRect(m_model->primaryMonitor(), true); }); - continue; - } - - SecondaryScreenDialog *dlg = new SecondaryScreenDialog(this); - dlg->setAttribute(Qt::WA_WState_WindowOpacitySet); - dlg->setModel(m_model, monitor); - connect(dlg, &SecondaryScreenDialog::requestRecognize, this, &MultiScreenWidget::requestRecognize); - connect(dlg, &SecondaryScreenDialog::requestSetMonitorBrightness, this, &MultiScreenWidget::requestSetMonitorBrightness); - connect(dlg, &SecondaryScreenDialog::requestAmbientLightAdjustBrightness, this, &MultiScreenWidget::requestAmbientLightAdjustBrightness); - connect(dlg, &SecondaryScreenDialog::requestSetResolution, this, &MultiScreenWidget::requestSetResolution); - connect(dlg, &SecondaryScreenDialog::requestSetFillMode, this, &MultiScreenWidget::requestSetFillMode); - connect(dlg, &SecondaryScreenDialog::requestCurrFillModeChanged, this, &MultiScreenWidget::requestCurrFillModeChanged); - connect(dlg, &SecondaryScreenDialog::requestSetRotate, this, &MultiScreenWidget::requestSetRotate); - connect(dlg, &SecondaryScreenDialog::requestGatherWindows, this, &MultiScreenWidget::onGatherWindows); - connect(dlg, &SecondaryScreenDialog::requestCloseRecognize, this, &MultiScreenWidget::onRequestCloseRecognize); - connect(this, &MultiScreenWidget::requestGatherEnabled, dlg, &SecondaryScreenDialog::requestGatherEnabled); - m_secondaryScreenDlgList.append(dlg); - - dlg->show(); - } - activateWindow(); - - if (!qgetenv("WAYLAND_DISPLAY").isEmpty()) { - m_resetSecondaryScreenDlgTimer->start(); - } else { - onResetSecondaryScreenDlgTimerOut(); - } - } -} - -void MultiScreenWidget::onGatherWindows(const QPoint cursor) -{ - Q_EMIT requestGatherEnabled(false); - for (const auto &monitor : m_model->monitorList()) { - auto screen = monitor->getQScreen(); - auto mrt = screen->geometry(); - - if (mrt.contains(cursor.x(), cursor.y())) { - for (QWidget *w : qApp->topLevelWidgets()) { - if (DMainWindow *mainWin = qobject_cast(w)) { - auto rt = mainWin->rect(); - if (rt.width() > screen->geometry().width()) - rt.setWidth(screen->geometry().width()); - - if (rt.height() > screen->geometry().height()) - rt.setHeight(screen->geometry().height()); - - auto tsize = (mrt.size() - rt.size()) / 2; - rt.moveTo(screen->geometry().topLeft().x() + tsize.width(), screen->geometry().topLeft().y() + tsize.height()); - mainWin->setGeometry(rt); - } - } - - for (auto dlg : m_secondaryScreenDlgList) { - auto rt = dlg->rect(); - if (rt.width() > screen->geometry().width()) - rt.setWidth(screen->geometry().width()); - - if (rt.height() > screen->geometry().height()) - rt.setHeight(screen->geometry().height()); - - auto tsize = (mrt.size() - rt.size()) / 2; - rt.moveTo(screen->geometry().topLeft().x() + tsize.width(), screen->geometry().topLeft().y() + tsize.height()); - dlg->QDialog::setGeometry(rt); - // 将副窗口置顶 - dlg->activateWindow(); - } - break; - } - } -} - -void MultiScreenWidget::onMonitorPress(Monitor *monitor) -{ - QScreen *screen = monitor->getQScreen(); - if(!screen) - return; - - m_fullIndication->setGeometry(screen->geometry()); - m_fullIndication->move(screen->geometry().topLeft()); - m_fullIndication->setVisible(true); - - QTimer::singleShot(1000, this, [=] { m_fullIndication->setVisible(false); }); -} - -void MultiScreenWidget::onMonitorRelease(Monitor *monitor) -{ - Q_UNUSED(monitor) - m_fullIndication->setVisible(false); - QTimer::singleShot(2500, this, [=] { requestSetMainwindowRect(m_model->primaryMonitor(), false); }); -} - -void MultiScreenWidget::onRequestSetMonitorPosition(QHash> monitorPosition) -{ - Q_EMIT requestSetMonitorPosition(monitorPosition); -} - -void MultiScreenWidget::onResetFullIndication(const QRect &geometry) -{ - m_fullIndication->setGeometry(geometry); - m_fullIndication->move(geometry.topLeft()); -} - -void MultiScreenWidget::onResetSecondaryScreenDlgTimerOut() -{ - for (auto dlg : m_secondaryScreenDlgList) { - dlg->resetDialog(); - } -} - -void MultiScreenWidget::onResetSecondaryScreenDlg() -{ - for (int i = 0; i < m_secondaryScreenDlgList.count(); ++i) { - SecondaryScreenDialog *screenDialog = m_secondaryScreenDlgList.at(i); - Q_ASSERT(screenDialog); - screenDialog->setWindowOpacity(1); - screenDialog->resetDialog(); - } -} - -void MultiScreenWidget::onRequestRecognize() -{ - for(auto widget : m_recognizeWidget) { - widget->deleteLater(); - } - m_recognizeWidget.clear(); - - // 复制模式 - if (m_model->displayMode() == MERGE_MODE) { - QString text = m_model->monitorList().first()->name(); - for (int idx = 1; idx < m_model->monitorList().size(); idx++) { - text += QString(" = %1").arg(m_model->monitorList()[idx]->name()); - } - - // 所在显示器不存在显示框 - if (m_recognizeWidget.value(text) == nullptr) { - RecognizeWidget *widget = new RecognizeWidget(m_model->monitorList()[0], text); - m_recognizeWidget[text] = widget; - } - } else { // 扩展模式 - for (auto monitor : m_model->monitorList()) { - // 所在显示器不存在显示框 - if (m_recognizeWidget.value(monitor->name()) == nullptr) { - RecognizeWidget *widget = new RecognizeWidget(monitor, monitor->name()); - m_recognizeWidget[monitor->name()] = widget; - } - } - } - - this->setFocus(); //获取焦点响应键盘事件 -} - -void MultiScreenWidget::onRequestCloseRecognize() -{ - disconnect(this, &MultiScreenWidget::requestRecognize, this, &MultiScreenWidget::onRequestRecognize); - - for(auto widget : m_recognizeWidget) { - widget->deleteLater(); - } - m_recognizeWidget.clear(); - - connect(this, &MultiScreenWidget::requestRecognize, this, &MultiScreenWidget::onRequestRecognize); -} - -void MultiScreenWidget::keyPressEvent(QKeyEvent *e) -{ - if(e->key() == Qt::Key_Escape) { - onRequestCloseRecognize(); - } - - QWidget::keyPressEvent(e); -} diff --git a/dcc-old/src/plugin-display/window/multiscreenwidget.h b/dcc-old/src/plugin-display/window/multiscreenwidget.h deleted file mode 100644 index d3d9d56b5a..0000000000 --- a/dcc-old/src/plugin-display/window/multiscreenwidget.h +++ /dev/null @@ -1,115 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef MULTISCREENWIDGET_H -#define MULTISCREENWIDGET_H - -#include "interface/namespace.h" -#include "widgets/titlelabel.h" - -class Resolution; - -QT_BEGIN_NAMESPACE -class QLabel; -class QComboBox; -class QSpacerItem; -class QHBoxLayout; -class QVBoxLayout; -class QKeyEvent; -class QTimer; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class SettingsItem; -class Monitor; -class Machine; -class DisplayModel; -class MonitorControlWidget; -class MonitorIndicator; -class RecognizeWidget; -class BrightnessWidget; -class ScalingWidget; -class ResolutionWidget; -class RefreshRateWidget; -class RotateWidget; -class SecondaryScreenDialog; -class CollaborativeLinkWidget; -class MultiScreenWidget : public QWidget -{ - Q_OBJECT -public: - explicit MultiScreenWidget(QWidget *parent = nullptr); - ~MultiScreenWidget(); - -public: - void setModel(DisplayModel *model); - -Q_SIGNALS: - void requestRecognize(); - void requestSwitchMode(const int mode, const QString &name = QString()); - void requestSetMonitorPosition(QHash> monitorPosition); - void requestSetPrimary(const QString &name); - void requestSetColorTemperature(const int value); - void requestSetMonitorBrightness(Monitor *monitor, const double brightness); - void requestAmbientLightAdjustBrightness(const bool able); - void requestSetMethodAdjustCCT(const int mode); - void requestUiScaleChange(const double scale); - void requestSetResolution(Monitor *monitor, const int mode); - void requestSetRotate(Monitor *monitor, const int rotate); - void requestGatherEnabled(const bool enable); - void requestSetMainwindowRect(Monitor *monitor, bool isInit); - void requestSetFillMode(Monitor *monitor, const QString fillMode); - void requestCurrFillModeChanged(Monitor *monitor, const QString fillMode); - -private: - void initModeList(); - void initPrimaryList(); - void initSecondaryScreenDialog(); - -private Q_SLOTS: - void onGatherWindows(const QPoint cursor); - void onMonitorPress(Monitor *monitor); - void onMonitorRelease(Monitor *monitor); - void onRequestSetMonitorPosition(QHash> monitorPosition); - void onRequestRecognize(); - void onRequestCloseRecognize(); - void onResetSecondaryScreenDlg(); - void onResetFullIndication(const QRect &geometry); - void onResetSecondaryScreenDlgTimerOut(); - -protected: - void keyPressEvent(QKeyEvent *event) override; - -private: - QVBoxLayout *m_contentLayout; - MonitorControlWidget *m_monitorControlWidget; - MonitorIndicator *m_fullIndication; - TitleLabel *m_multiSettingLabel; - SettingsItem *m_modeSettingsItem; - QLabel *m_modeLabel; - QComboBox *m_modeCombox; - SettingsItem *m_primarySettingsItem; - QLabel *m_primaryLabel; - QComboBox *m_primaryCombox; - - //协同链接 - CollaborativeLinkWidget *m_linkWidget; - BrightnessWidget *m_brightnessWidget; - ScalingWidget *m_scalingWidget; - ResolutionWidget *m_resolutionWidget; - RefreshRateWidget *m_refreshRateWidget; - RotateWidget *m_rotateWidget; - - DisplayModel *m_model; - - QList m_secondaryScreenDlgList; - QMap m_recognizeWidget; - - bool isReleaseMonitor = false; - QTimer *m_resetSecondaryScreenDlgTimer; -}; -} - -#endif // MULTISCREENWIDGET_H diff --git a/dcc-old/src/plugin-display/window/recognizewidget.cpp b/dcc-old/src/plugin-display/window/recognizewidget.cpp deleted file mode 100644 index cb59a060d8..0000000000 --- a/dcc-old/src/plugin-display/window/recognizewidget.cpp +++ /dev/null @@ -1,82 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "recognizewidget.h" -#include "operation/displaymodel.h" - -#include -#include - -const int FontSize = 20; -const int Radius = 18; -const int MiniWidth = 200; -const int VerticalMargin = 12; -const int HorizentalMargin = 22; -const int yoffset = 220; - -using namespace DCC_NAMESPACE; -RecognizeWidget::RecognizeWidget(Monitor *monitor, QString text, QWidget *parent) - : DBlurEffectWidget(parent), m_monitor(monitor), m_text(text) -{ - connect(m_monitor, &Monitor::geometryChanged, this, &RecognizeWidget::onScreenRectChanged); - - setAttribute(Qt::WA_TranslucentBackground); - setWindowFlags(Qt::X11BypassWindowManagerHint | Qt::Tool | Qt::WindowStaysOnTopHint); - setRadius(Radius); - setMinimumWidth(MiniWidth); - onScreenRectChanged(); - show(); - startTimer(5000); -} - -void RecognizeWidget::paintEvent(QPaintEvent *event) -{ - DBlurEffectWidget::paintEvent(event); - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing); - - QFont font; - font.setStyle(QFont::StyleNormal); - font.setPixelSize(FontSize); - const QFontMetrics fm(font); - - QPainterPath path; - path.addText((m_rect.width() - fm.horizontalAdvance(m_text)) / 2, m_rect.height() - VerticalMargin - fm.height() / 4, font, m_text); - - QPalette palette; - QColor brushCorlor; - brushCorlor = palette.color(QPalette::BrightText); - - painter.setPen(Qt::NoPen); - painter.setBrush(brushCorlor); - painter.drawPath(path); -} - -void RecognizeWidget::onScreenRectChanged() -{ - const auto ratio = devicePixelRatioF(); - QRect displayRect(m_monitor->x(), m_monitor->y(), m_monitor->w(), m_monitor->h()); - displayRect = QRect(displayRect.topLeft(), displayRect.size() / ratio); - - QFont font; - font.setStyle(QFont::StyleNormal); - font.setPixelSize(FontSize); - const QFontMetrics fm(font); - int width = fm.horizontalAdvance(m_text) + 2 * HorizentalMargin > MiniWidth ? fm.horizontalAdvance(m_text) + 2 * HorizentalMargin : MiniWidth; - int height = fm.height() + 2 * VerticalMargin; - - const int x = displayRect.center().x() - width / 2; - const int y = displayRect.y() + displayRect.height() - height - yoffset; - m_rect = QRect(x, y, width, height); - - setGeometry(m_rect); - update(); -} - -void RecognizeWidget::timerEvent(QTimerEvent *event) -{ - Q_UNUSED(event) - hide(); -} diff --git a/dcc-old/src/plugin-display/window/recognizewidget.h b/dcc-old/src/plugin-display/window/recognizewidget.h deleted file mode 100644 index e35d256da2..0000000000 --- a/dcc-old/src/plugin-display/window/recognizewidget.h +++ /dev/null @@ -1,43 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef RECOGNIZEWIDGET_H -#define RECOGNIZEWIDGET_H - -#include "interface/namespace.h" - -#include - -class QPainter; -class QPainterPath; - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { - -class Monitor; -class DisplayModel; -class RecognizeWidget : public DBlurEffectWidget -{ - Q_OBJECT - -public: - explicit RecognizeWidget(Monitor *monitor, QString name, QWidget *parent = nullptr); - -protected: - void paintEvent(QPaintEvent *) override; - void timerEvent(QTimerEvent *event) override; - -private Q_SLOTS: - void onScreenRectChanged(); - -private: - Monitor *m_monitor; - QRect m_rect; - QString m_text; -}; -} - -#endif // RECOGNIZEWIDGET_H diff --git a/dcc-old/src/plugin-display/window/refreshratewidget.cpp b/dcc-old/src/plugin-display/window/refreshratewidget.cpp deleted file mode 100644 index 7c84c991ca..0000000000 --- a/dcc-old/src/plugin-display/window/refreshratewidget.cpp +++ /dev/null @@ -1,167 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "refreshratewidget.h" -#include "operation/displaymodel.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -RefreshRateWidget::RefreshRateWidget(int comboxWidth, QWidget *parent) - : SettingsItem(parent) - , m_contentLayout(new QHBoxLayout(this)) - , m_refreshCombox(new QComboBox(this)) - , m_model(nullptr) - , m_monitor(nullptr) - , m_refreshItemModel(new QStandardItemModel(this)) -{ - m_refreshLabel = new QLabel(tr("Refresh Rate"), this); - - addBackground(); - setMinimumHeight(48); - m_contentLayout->setContentsMargins(10, 0, 10, 0); - m_contentLayout->addWidget(m_refreshLabel); - m_contentLayout->addWidget(m_refreshCombox); - m_refreshCombox->setFocusPolicy(Qt::NoFocus); - m_refreshCombox->setMinimumWidth(comboxWidth); - m_refreshCombox->setMinimumHeight(36); - m_refreshCombox->setModel(m_refreshItemModel); - setLayout(m_contentLayout); -} - -void RefreshRateWidget::setModel(DisplayModel *model, Monitor *monitor) -{ - m_model = model; - m_refreshCombox->setEnabled(m_model->resolutionRefreshEnable()); - - connect(m_model, &DisplayModel::monitorListChanged, this, &RefreshRateWidget::initRefreshRate); - connect(m_model, &DisplayModel::displayModeChanged, this, &RefreshRateWidget::initRefreshRate); - connect(m_model, &DisplayModel::resolutionRefreshEnableChanged, m_refreshCombox, &QComboBox::setEnabled); - - setMonitor(monitor); -} - -void RefreshRateWidget::setMonitor(Monitor *monitor) -{ - if (monitor == nullptr || m_monitor == monitor) { - return; - } - - // 先断开信号,设置数据再连接信号 - if (m_monitor != nullptr) { - disconnect(m_monitor, &Monitor::modelListChanged, this, &RefreshRateWidget::initRefreshRate); - disconnect(m_monitor, &Monitor::currentModeChanged, this, &RefreshRateWidget::OnCurrentModeChanged); - } - - m_monitor = monitor; - - initRefreshRate(); - - connect(m_monitor, &Monitor::modelListChanged, this, &RefreshRateWidget::initRefreshRate); - connect(m_monitor, &Monitor::currentModeChanged, this, &RefreshRateWidget::OnCurrentModeChanged); -} - -void RefreshRateWidget::OnCurrentModeChanged(const Resolution &mode) -{ - // 按主线逻辑,当mode=0时,在x11环境下需要特殊处理 - // 在wayland环境下,直接跳过 - if (qEnvironmentVariable("XDG_SESSION_TYPE").contains("x11")) { - // 规避mode == 0 - if (mode.id() == 0) { - return; - } - } - - auto w = 0; - auto h = 0; - // 当前分辨率宽度和高度 - if (m_refreshCombox->currentIndex() >= 0 && m_refreshItemModel->rowCount() >= 0) { - auto item = m_refreshItemModel->item(m_refreshCombox->currentIndex()); - w = item->data(WidthRole).toInt(); - h = item->data(HeightRole).toInt(); - } - - // 无刷新率,分辨率宽度或高度改变则重新加载刷新率 - if (m_refreshCombox->currentIndex() < 0 || m_refreshItemModel->rowCount() < 0 || w != mode.width() || h != mode.height()) { - initRefreshRate(); - } - - for (int idx = 0; idx < m_refreshItemModel->rowCount(); ++idx) { - auto item = m_refreshItemModel->item(idx); - if (item->data(IdRole).toUInt() == mode.id()) { - m_refreshCombox->setCurrentIndex(item->row()); - break; - } - } -} - -void RefreshRateWidget::initRefreshRate() -{ - if (m_monitor == nullptr) { - return; - } - - // 先断开信号,设置数据再连接信号 - if (m_refreshItemModel != nullptr) { - disconnect(m_refreshCombox, static_cast(&QComboBox::currentIndexChanged), this, nullptr); - m_refreshItemModel->clear(); - } - - auto modeList = m_monitor->modeList(); - bool first = true; - for (auto mode : modeList) { - if (!Monitor::isSameResolution(mode, m_monitor->currentMode())) - continue; - - if (m_model->displayMode() == MERGE_MODE) { - bool isComm = true; - for (auto monitor : m_model->monitorList()) { - if (!monitor->hasResolutionAndRate(mode)) { - isComm = false; - break; - } - } - - if (!isComm) { - continue; - } - } - - auto rate = mode.rate(); - DStandardItem *item = new DStandardItem; - auto ref = QString::number(rate, 'g', 4) + tr("Hz"); - if (Monitor::isSameResolution(mode, m_monitor->bestMode())) { - if (Monitor::isSameRatefresh(mode, m_monitor->bestMode())) { - ref += QString(" (%1)").arg(tr("Recommended")); - } - } else if (first) { - ref += QString(" (%1)").arg(tr("Recommended")); - first = false; - } - - item->setText(ref); - item->setData(QVariant(mode.id()), IdRole); - item->setData(QVariant(mode.rate()), RateRole); - item->setData(QVariant(mode.width()), WidthRole); - item->setData(QVariant(mode.height()), HeightRole); - m_refreshItemModel->appendRow(item); - - if (mode == m_monitor->currentMode()) { - m_refreshCombox->setCurrentIndex(item->row()); - } - } - - connect(m_refreshCombox, static_cast(&QComboBox::currentIndexChanged), this, [=](int idx) { - auto item = m_refreshItemModel->item(idx); - auto r = item->data(IdRole).toUInt(); - if (m_monitor->currentMode().id() != r) { - Q_EMIT requestSetResolution(m_monitor, r); - } - }); -} diff --git a/dcc-old/src/plugin-display/window/refreshratewidget.h b/dcc-old/src/plugin-display/window/refreshratewidget.h deleted file mode 100644 index 1975dff47e..0000000000 --- a/dcc-old/src/plugin-display/window/refreshratewidget.h +++ /dev/null @@ -1,67 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef REFRESHRATEWIDGET_H -#define REFRESHRATEWIDGET_H - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -#include - -class Resolution; - -QT_BEGIN_NAMESPACE -class QLabel; -class QComboBox; -class QHBoxLayout; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DStandardItem; -DWIDGET_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class Monitor; -class DisplayModel; - -class RefreshRateWidget : public SettingsItem -{ - Q_OBJECT -public: - RefreshRateWidget(int comboxWidth = 300, QWidget *parent = nullptr); - - enum ResolutionRole { - IdRole = Dtk::UserRole, - WidthRole, - HeightRole, - RateRole - }; - -public: - void setModel(DisplayModel *model, Monitor *monitor); - void setMonitor(Monitor *monitor); - -Q_SIGNALS: - void requestSetResolution(Monitor *monitor, const int mode); - -public Q_SLOTS: - void OnCurrentModeChanged(const Resolution &mode); - -private: - void initRefreshRate(); - -private: - QHBoxLayout *m_contentLayout; - QLabel *m_refreshLabel; - QComboBox *m_refreshCombox; - - DisplayModel *m_model; - Monitor *m_monitor; - QStandardItemModel *m_refreshItemModel; -}; -} -#endif // REFRESHRATEWIDGET_H diff --git a/dcc-old/src/plugin-display/window/resolutionwidget.cpp b/dcc-old/src/plugin-display/window/resolutionwidget.cpp deleted file mode 100644 index 79e2e25f9c..0000000000 --- a/dcc-old/src/plugin-display/window/resolutionwidget.cpp +++ /dev/null @@ -1,512 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "resolutionwidget.h" -#include "operation/displaymodel.h" - -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -fillModeCombox::fillModeCombox(QWidget *parent) - : QComboBox(parent) -{ - connect(this, QOverload::of(&QComboBox::highlighted), this, &fillModeCombox::OnHighlighted); - - connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [=](DGuiApplicationHelper::ColorType themeType){ - //在切换主题的时候,combox无法获取当前是hidepopup还是showpopup, 所以需要设置为hidepopup来达到更新图标的目的 - Q_UNUSED(themeType) - hidePopup(); - }); - -} - -void fillModeCombox::OnHighlighted(int index) -{ - if(DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - for(int i = 0; i < this->count(); i++) { - if(i == index) - this->setItemIcon(i, QPixmap(this->itemData(i, LightHighlightIconRole).toString())); - else - this->setItemIcon(i, QPixmap(this->itemData(i, LightItemIconRole).toString())); - } - } - else if(DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType) { - for(int i = 0; i < this->count(); i++) { - if(i == index) - this->setItemIcon(i, QPixmap(this->itemData(i, DarkHighlightIconRole).toString())); - else - this->setItemIcon(i, QPixmap(this->itemData(i, DarkItemIconRole).toString())); - } - } -} - -void fillModeCombox::showPopup() -{ - QComboBox::showPopup(); - setItemRoleIcon(); -} - -void fillModeCombox::hidePopup() -{ - QComboBox::hidePopup(); - setDefaultRoleIcon(); -} - -void fillModeCombox:: setDefaultRoleIcon() -{ - //获取当前主题 - if(DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - for(int i = 0; i < this->count(); i++) { - this->setItemIcon(i, QPixmap(this->itemData(i, LightDefaultIconRole).toString())); - } - } else if(DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType) { - for(int i = 0; i < this->count(); i++) { - this->setItemIcon(i, QPixmap(this->itemData(i, DarkDefaultIconRole).toString())); - } - } -} - -void fillModeCombox:: setItemRoleIcon() -{ - //获取当前主题 - if(DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - for(int i = 0; i < this->count(); i++) { - this->setItemIcon(i, QPixmap(this->itemData(i, LightItemIconRole).toString())); - } - } else if(DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType) { - for(int i = 0; i < this->count(); i++) { - this->setItemIcon(i, QPixmap(this->itemData(i, DarkItemIconRole).toString())); - } - } -} - -void fillModeCombox:: setHoverRoleIcon() -{qInfo()<itemData(0, LightHoverIconRole).toString()<itemData(0, DarkHoverIconRole).toString(); - qInfo()<itemData(0, LightHoverIconRole).toString())<itemData(0, DarkHoverIconRole).toString()); - //获取当前主题 - if(DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - for(int i = 0; i < this->count(); i++) { - this->setItemIcon(i, QPixmap(this->itemData(i, LightHoverIconRole).toString())); - } - } else if(DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType) { - for(int i = 0; i < this->count(); i++) { - this->setItemIcon(i, QPixmap(this->itemData(i, DarkHoverIconRole).toString())); - } - } -} - -bool fillModeCombox::event(QEvent *e) -{ - switch (e->type()) { - case QEvent::HoverEnter: - setHoverRoleIcon(); - break; - case QEvent::HoverLeave: - setDefaultRoleIcon(); - break; - default: - break; - } - return QComboBox::event(e); -} - -ResolutionWidget::ResolutionWidget(int comboxWidth, QWidget *parent) - : SettingsItem(parent) - , m_resolutionLayout(new QHBoxLayout()) - , m_resizeDesktopLayout(new QHBoxLayout()) - , m_contentLayout(new QVBoxLayout()) - , m_resolutionCombox(new QComboBox(this)) - , m_resizeDesktopCombox(new fillModeCombox(this)) - , m_resizeDesktopItem(new SettingsItem) - , m_model(nullptr) - , m_monitor(nullptr) - , m_resoItemModel(new QStandardItemModel(this)) - , m_resizeItemModel(new QStandardItemModel(this)) -{ - //~ contents_path /display/Resolution - m_resolutionLabel = new QLabel(tr("Resolution"), this); - //~ contents_path /display/Resize Desktop - m_resizeDesktopLabel = new QLabel(tr("Resize Desktop"), this); - - setMinimumHeight(48); - SettingsItem *resolutionItem = new SettingsItem; - m_resolutionLayout->setContentsMargins(10, 10, 10, 10); - m_resolutionLayout->addWidget(m_resolutionLabel); - m_resolutionLayout->addWidget(m_resolutionCombox); - m_resolutionCombox->setFocusPolicy(Qt::NoFocus); - m_resolutionCombox->setMinimumWidth(comboxWidth); - m_resolutionCombox->setMinimumHeight(36); - m_resolutionCombox->setModel(m_resoItemModel); - resolutionItem->setLayout(m_resolutionLayout); - //"Resize Desktop" - m_resizeDesktopLayout->setContentsMargins(10, 10, 10, 10); - m_resizeDesktopLayout->addWidget(m_resizeDesktopLabel); - m_resizeDesktopLayout->addWidget(m_resizeDesktopCombox); - m_resizeDesktopCombox->setFocusPolicy(Qt::NoFocus); - m_resizeDesktopCombox->setMinimumWidth(comboxWidth); - m_resizeDesktopCombox->setMinimumHeight(36); - m_resizeDesktopCombox->setModel(m_resizeItemModel); - m_resizeDesktopItem->setLayout(m_resizeDesktopLayout); - m_resizeDesktopItem->installEventFilter(this); - - SettingsGroup *grp = new SettingsGroup(nullptr, SettingsGroup::GroupBackground); - grp->getLayout()->setContentsMargins(0, 0, 0, 0); - grp->setContentsMargins(0, 0, 0, 0); - grp->layout()->setMargin(0); - grp->appendItem(resolutionItem); - grp->appendItem(m_resizeDesktopItem); - - m_contentLayout->setSpacing(0); - m_contentLayout->setContentsMargins(0, 0, 0, 0); - setLayout(m_contentLayout); - m_contentLayout->addWidget(grp); -} - -ResolutionWidget::~ResolutionWidget() -{ - m_resizeItemModel->deleteLater(); -} - -void ResolutionWidget::setModel(DisplayModel *model, Monitor *monitor) -{ - m_model = model; - m_resolutionCombox->setEnabled(m_model->resolutionRefreshEnable()); - m_resizeDesktopCombox->setEnabled(m_model->resolutionRefreshEnable()); - connect(m_model, &DisplayModel::monitorListChanged, this, &ResolutionWidget::initResolution); - connect(m_model, &DisplayModel::displayModeChanged, this, &ResolutionWidget::initResolution); - connect(m_model, &DisplayModel::resolutionRefreshEnableChanged, m_resolutionCombox, &QComboBox::setEnabled); - - setMonitor(monitor); -} - -void ResolutionWidget::setMonitor(Monitor *monitor) -{ - if (monitor == nullptr || m_monitor == monitor) { - return; - } - - // 先断开信号,设置数据再连接信号 - if (m_monitor != nullptr) { - disconnect(m_monitor, &Monitor::currentFillModeChanged, this, nullptr); - disconnect(m_monitor, &Monitor::availableFillModesChanged, this, &ResolutionWidget::OnAvailableFillModesChanged); - disconnect(m_monitor, &Monitor::modelListChanged, this, &ResolutionWidget::initResolution); - disconnect(m_monitor, &Monitor::bestModeChanged, this, &ResolutionWidget::initResolution); - disconnect(m_monitor, &Monitor::currentModeChanged, this, &ResolutionWidget::OnCurrentModeChanged); - } - - m_monitor = monitor; - - initResolution(); - OnAvailableFillModesChanged(m_monitor->availableFillModes()); - initResizeDesktop(); - - connect(m_monitor, &Monitor::availableFillModesChanged, this, &ResolutionWidget::OnAvailableFillModesChanged); - connect(m_monitor, &Monitor::currentFillModeChanged, this, &ResolutionWidget::initResizeDesktop); - connect(m_monitor, &Monitor::currentFillModeChanged, this, [this] (QString currFillMode) { - Q_EMIT requestCurrFillModeChanged(m_monitor,currFillMode); - }); - - connect(m_monitor, &Monitor::modelListChanged, this, &ResolutionWidget::initResolution); - connect(m_monitor, &Monitor::bestModeChanged, this, &ResolutionWidget::initResolution); - connect(m_monitor, &Monitor::currentModeChanged, this, &ResolutionWidget::OnCurrentModeChanged); -} - -void ResolutionWidget::OnCurrentModeChanged(const Resolution &mode) -{ - // 按主线逻辑,当mode=0时,在x11环境下需要特殊处理 - // 在wayland环境下,直接跳过 - if (qEnvironmentVariable("XDG_SESSION_TYPE").contains("x11")) { - // 规避mode == 0 - if (mode.id() == 0) { - return; - } - } - - for (int idx = 0; idx < m_resoItemModel->rowCount(); ++idx) { - auto item = m_resoItemModel->item(idx); - auto w = item->data(WidthRole).toInt(); - auto h = item->data(HeightRole).toInt(); - if (w == mode.width() && h == mode.height() && m_resolutionCombox->currentIndex() != item->row()) { - m_resolutionCombox->setCurrentIndex(item->row()); - break; - } - } -} - -Dtk::Widget::DStandardItem *ResolutionWidget::getItemIcon(const QString &key) -{ - Dtk::Widget::DStandardItem *item = nullptr; - if (key == "None") { // 默认 - item = new Dtk::Widget::DStandardItem(tr("Default")); - //深色 - item->setData("None", FillModeRole); - item->setData(":/display/icons/dark/icons/dark/Default.svg", DarkItemIconRole); - item->setData(":/display/icons/dark/icons/dark/Default.svg", DarkDefaultIconRole); - item->setData(":/display/icons/dark/icons/white/Default.svg", DarkHighlightIconRole); - item->setData(":/display/icons/dark/icons/hover/Default.svg", DarkHoverIconRole); - //浅色 - item->setData(":/display/icons/light/icon/black/Default.svg", LightItemIconRole); - item->setData(":/display/icons/light/icon/light/Default.svg", LightDefaultIconRole); - item->setData(":/display/icons/light/icon/white/Default.svg", LightHighlightIconRole); - item->setData(":/display/icons/light/icon/hover/Default.svg", LightHoverIconRole); - } else if (key == "Full aspect") { // 适应 - item = new Dtk::Widget::DStandardItem(tr("Fit")); - //深色 - item->setData("Full aspect", FillModeRole); - item->setData(":/display/icons/dark/icons/dark/Fit.svg", DarkItemIconRole); - item->setData(":/display/icons/dark/icons/dark/Fit.svg", DarkDefaultIconRole); - item->setData(":/display/icons/dark/icons/white/Fit.svg", DarkHighlightIconRole); - item->setData(":/display/icons/dark/icons/hover/Fit.svg", DarkHoverIconRole); - //浅色 - item->setData(":/display/icons/light/icon/black/Fit.svg", LightItemIconRole); - item->setData(":/display/icons/light/icon/light/Fit.svg", LightDefaultIconRole); - item->setData(":/display/icons/light/icon/white/Fit.svg", LightHighlightIconRole); - item->setData(":/display/icons/light/icon/hover/Fit.svg", LightHoverIconRole); - } else if (key == "Full") { // 铺满 - item = new Dtk::Widget::DStandardItem(tr("Stretch")); - //深色 - item->setData("Full", FillModeRole); - item->setData(":/display/icons/dark/icons/dark/Stretch.svg", DarkItemIconRole); - item->setData(":/display/icons/dark/icons/dark/Stretch.svg", DarkDefaultIconRole); - item->setData(":/display/icons/dark/icons/white/Stretch.svg", DarkHighlightIconRole); - item->setData(":/display/icons/dark/icons/hover/Stretch.svg", DarkHoverIconRole); - //浅色 - item->setData(":/display/icons/light/icon/black/Stretch.svg", LightItemIconRole); - item->setData(":/display/icons/light/icon/light/Stretch.svg", LightDefaultIconRole); - item->setData(":/display/icons/light/icon/white/Stretch.svg", LightHighlightIconRole); - item->setData(":/display/icons/light/icon/hover/Stretch.svg", LightHoverIconRole); - } else if (key == "Center") { // 居中 - item = new Dtk::Widget::DStandardItem(tr("Center")); - //深色 - item->setData("Center", FillModeRole); - item->setData(":/display/icons/dark/icons/dark/Center.svg", DarkItemIconRole); - item->setData(":/display/icons/dark/icons/dark/Center.svg", DarkDefaultIconRole); - item->setData(":/display/icons/dark/icons/white/Center.svg", DarkHighlightIconRole); - item->setData(":/display/icons/dark/icons/hover/Center.svg", DarkHoverIconRole); - //浅色 - item->setData(":/display/icons/light/icon/black/Center.svg", LightItemIconRole); - item->setData(":/display/icons/light/icon/light/Center.svg", LightDefaultIconRole); - item->setData(":/display/icons/light/icon/white/Center.svg", LightHighlightIconRole); - item->setData(":/display/icons/light/icon/hover/Center.svg", LightHoverIconRole); - } - return item; -} - -void ResolutionWidget::initResizeDesktop() -{ - - if (m_monitor == nullptr) { - return; - } - // 先断开信号,设置数据再连接信号 - disconnect(m_resizeDesktopCombox, static_cast(&QComboBox::currentIndexChanged), this, nullptr); - - QStringList lstFillMode = m_monitor->availableFillModes(); - //获取最新的铺面方式 - QString fillMode = m_monitor->currentFillMode(); - if(fillMode.isEmpty()) - fillMode = "None"; - int index = lstFillMode.indexOf(fillMode); - if(index >= 0) - m_resizeDesktopCombox->setCurrentIndex(index); - //用户手动选择铺满方式时发送信号 - connect(m_resizeDesktopCombox, static_cast(&QComboBox::currentIndexChanged), this, [=](int idx) { - Q_EMIT requestSetFillMode(m_monitor, this->m_resizeDesktopCombox->itemData(idx,FillModeRole).toString()); - }); -} - -void ResolutionWidget::OnAvailableFillModesChanged(const QStringList &lstFillMode) -{ - disconnect(m_resizeDesktopCombox, static_cast(&QComboBox::currentIndexChanged), this, nullptr); - - m_resizeItemModel->clear(); - for(auto str : lstFillMode) { - Dtk::Widget::DStandardItem *item = getItemIcon(str); - if(item) - m_resizeItemModel->appendRow(item); - } - m_resizeDesktopCombox->setDefaultRoleIcon(); - - updateResizeDesktopVisible(); -} - -void ResolutionWidget::setResizeDesktopVisible(bool visible) -{ - if (m_model->displayMode() == MERGE_MODE && visible) { - visible = m_model->allSupportFillModes(); - } - - m_resizeDesktopItem->setVisible(visible); -} - -bool ResolutionWidget::eventFilter(QObject *obj, QEvent *event) -{ - if (obj == m_resizeDesktopItem) { - switch (event->type()) { - case QEvent::Hide: - setMinimumHeight(48); - Q_EMIT requestResizeDesktopVisibleChanged(false); - break; - case QEvent::Show: - setMinimumHeight(48 * 2); - Q_EMIT requestResizeDesktopVisibleChanged(true); - break; - default: - break; - } - } - return SettingsItem::eventFilter(obj, event); -} - -void ResolutionWidget::updateResizeDesktopVisible() -{ - //推荐分辨率下隐藏铺满方式 - if (m_resolutionCombox->currentText().contains(tr("Recommended"))) { - setResizeDesktopVisible(false); - } else { - setResizeDesktopVisible(!m_monitor->availableFillModes().isEmpty()); - } -} - -void ResolutionWidget::initResolution() -{ - if (m_monitor == nullptr) { - return; - } - - // 先断开信号,设置数据再连接信号 - if (m_resoItemModel != nullptr) { - disconnect(m_resolutionCombox, static_cast(&QComboBox::currentIndexChanged), this, nullptr); - m_resoItemModel->clear(); - } - - auto modeList = m_monitor->modeList(); - auto curMode = m_monitor->currentMode(); - - Resolution preMode; - if (qgetenv("WAYLAND_DISPLAY").isEmpty() ) { - for (auto mode : modeList) { - if (Monitor::isSameResolution(preMode, mode)) { - continue; - } - - preMode = mode; - if (m_model->displayMode() == MERGE_MODE) { - bool isComm = true; - for (auto monitor : m_model->monitorList()) { - if (!monitor->hasResolution(mode)) { - isComm = false; - break; - } - } - - if (!isComm) { - continue; - } - } - - auto *item = new Dtk::Widget::DStandardItem; - item->setData(QVariant(mode.id()), IdRole); - item->setData(QVariant(mode.rate()), RateRole); - item->setData(QVariant(mode.width()), WidthRole); - item->setData(QVariant(mode.height()), HeightRole); - - auto res = QString::number(mode.width()) + "×" + QString::number(mode.height()); - if (Monitor::isSameResolution(mode, m_monitor->bestMode())) { - item->setText(res + QString(" (%1)").arg(tr("Recommended"))); - m_resoItemModel->insertRow(0, item); - } else { - item->setText(res); - m_resoItemModel->appendRow(item); - } - - if (Monitor::isSameResolution(curMode, mode)) { - m_resolutionCombox->setCurrentIndex(item->row()); - } - } - } else { - bool first = true; - for (auto mode : modeList) { - if (Monitor::isSameResolution(preMode, mode)) { - continue; - } - - preMode = mode; - if (m_model->displayMode() == MERGE_MODE) { - bool isComm = true; - for (auto monitor : m_model->monitorList()) { - if (!monitor->hasResolution(mode)) { - isComm = false; - break; - } - } - - if (!isComm) { - continue; - } - } - - auto *item = new Dtk::Widget::DStandardItem; - item->setData(QVariant(mode.id()), IdRole); - item->setData(QVariant(mode.rate()), RateRole); - item->setData(QVariant(mode.width()), WidthRole); - item->setData(QVariant(mode.height()), HeightRole); - - auto res = QString::number(mode.width()) + "×" + QString::number(mode.height()); - if (first) { - first = false; - item->setText(res + QString(" (%1)").arg(tr("Recommended"))); - m_resoItemModel->insertRow(0, item); - } else { - item->setText(res); - m_resoItemModel->appendRow(item); - } - - if (Monitor::isSameResolution(curMode, mode)) { - m_resolutionCombox->setCurrentIndex(item->row()); - } - } - } - - //推荐分辨率下隐藏铺满方式并改变高度 - updateResizeDesktopVisible(); - - connect(m_resolutionCombox, static_cast(&QComboBox::currentIndexChanged), this, [=](int idx) { - auto item = m_resoItemModel->item(idx); - auto r = item->data(IdRole).toInt(); - auto w = item->data(WidthRole).toInt(); - auto h = item->data(HeightRole).toInt(); - - //推荐分辨率下隐藏铺满方式并改变高度 - updateResizeDesktopVisible(); - - // 选中分辨率和当前分别率相同 - if (m_monitor->currentMode().width() == w && m_monitor->currentMode().height() == h) { - return; - } - - // 优先设置最好模式 - if (m_monitor->bestMode().width() == w && m_monitor->bestMode().height() == h) { - Q_EMIT requestSetResolution(m_monitor, m_monitor->bestMode().id()); - return; - } - - for (auto mode : m_monitor->modeList()) { - if (mode.width() == w && mode.height() == h) { - Q_EMIT requestSetResolution(m_monitor, mode.id()); - return; - } - } - Q_EMIT requestSetResolution(m_monitor, r); - }); -} diff --git a/dcc-old/src/plugin-display/window/resolutionwidget.h b/dcc-old/src/plugin-display/window/resolutionwidget.h deleted file mode 100644 index 55b3fd5474..0000000000 --- a/dcc-old/src/plugin-display/window/resolutionwidget.h +++ /dev/null @@ -1,115 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef RESOLUTIONWIDGET_H -#define RESOLUTIONWIDGET_H - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" -#include "widgets/settingsgroup.h" - -#include - -#include - -class Resolution; -class DStandardItem; - -QT_BEGIN_NAMESPACE -class QLabel; -class QComboBox; -class QHBoxLayout; -class QVBoxLayout; -class QStandardItemModel; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class Monitor; -class DisplayModel; - -enum ResizeDesktopRole { - FillModeRole = Dtk::UserRole, - DarkDefaultIconRole, - DarkHighlightIconRole, - DarkItemIconRole, - DarkHoverIconRole, - LightDefaultIconRole, - LightHighlightIconRole, - LightItemIconRole, - LightHoverIconRole -}; - -class fillModeCombox : public QComboBox -{ - Q_OBJECT -public: - explicit fillModeCombox(QWidget *parent = nullptr); - virtual void showPopup() override; //显示下拉框 - virtual void hidePopup() override; //隐藏下拉框 - - void setDefaultRoleIcon(); - void setItemRoleIcon(); - void setHoverRoleIcon(); - -public Q_SLOTS: - void OnHighlighted(int index); -protected: - bool event(QEvent *e) override; -}; - -class ResolutionWidget : public SettingsItem -{ - Q_OBJECT -public: - explicit ResolutionWidget(int comboxWidth = 300, QWidget *parent = nullptr); - ~ResolutionWidget(); - enum ResolutionRole { - IdRole = Dtk::UserRole, - WidthRole, - HeightRole, - RateRole - }; - -public: - void setModel(DisplayModel *model, Monitor *monitor); - void setMonitor(Monitor *monitor); - -Q_SIGNALS: - void requestSetResolution(Monitor *monitor, const int mode); - void requestSetFillMode(Monitor *monitor, const QString fillMode); - void requestResizeDesktopVisibleChanged(bool visible); - void requestCurrFillModeChanged(Monitor *monitor, const QString fillMode); //用于复制模式下用主屏去更新其他屏幕铺满方式使用 - - -public Q_SLOTS: - void OnAvailableFillModesChanged(const QStringList &lstFillMode); - void OnCurrentModeChanged(const Resolution &mode); - -private: - void initResolution(); - void initResizeDesktop(); - Dtk::Widget::DStandardItem *getItemIcon(const QString &key); - void setResizeDesktopVisible(bool visible); - void updateResizeDesktopVisible(); - bool eventFilter(QObject *obj, QEvent *event) override; - -private: - QHBoxLayout *m_resolutionLayout; - QHBoxLayout *m_resizeDesktopLayout; - QVBoxLayout *m_contentLayout; - QLabel *m_resolutionLabel; - QComboBox *m_resolutionCombox; - QLabel *m_resizeDesktopLabel; //屏幕显示方式 - fillModeCombox *m_resizeDesktopCombox; //拉伸-居中-适应 - SettingsItem *m_resizeDesktopItem; - - DisplayModel *m_model; - Monitor *m_monitor; - QStandardItemModel *m_resoItemModel; - QStandardItemModel *m_resizeItemModel; -}; -} -#endif // RESOLUTIONWIDGET_H diff --git a/dcc-old/src/plugin-display/window/rotatewidget.cpp b/dcc-old/src/plugin-display/window/rotatewidget.cpp deleted file mode 100644 index 34c5ef6c70..0000000000 --- a/dcc-old/src/plugin-display/window/rotatewidget.cpp +++ /dev/null @@ -1,87 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include - -#include "rotatewidget.h" -#include "operation/displaymodel.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; -RotateWidget::RotateWidget(int comboxWidth, QWidget *parent) - : SettingsItem(parent) - , m_contentLayout(new QHBoxLayout(this)) - , m_rotateCombox(new QComboBox(this)) - , m_model(nullptr) - , m_monitor(nullptr) -{ - //初始化列表无法进行静态翻译 - //~ contents_path /display/Rotation - m_rotateLabel = new QLabel(tr("Rotation"), this); - - setAccessibleName("RotateWidget"); - addBackground(); - setMinimumHeight(48); - m_contentLayout->setContentsMargins(10, 0, 10, 0); - m_contentLayout->addWidget(m_rotateLabel); - m_contentLayout->addWidget(m_rotateCombox); - m_rotateCombox->setFocusPolicy(Qt::NoFocus); - m_rotateCombox->setMinimumWidth(comboxWidth); - m_rotateCombox->setMinimumHeight(36); - setLayout(m_contentLayout); - - QStringList rotateList {tr("Standard"), tr("90°"), tr("180°"), tr("270°")}; - for (int idx = 0; idx < rotateList.size(); ++idx) { - m_rotateCombox->addItem(rotateList[idx], qPow(2, idx)); - } -} - -void RotateWidget::setModel(DisplayModel *model, Monitor *monitor) -{ - m_model = model; - - connect(m_model, &DisplayModel::displayModeChanged, this, &RotateWidget::initRotate); - - setMonitor(monitor); -} - -void RotateWidget::setMonitor(Monitor *monitor) -{ - if (monitor == nullptr || m_monitor == monitor) { - return; - } - - // 先断开信号,设置数据再连接信号 - if (m_monitor != nullptr) { - disconnect(m_monitor, &Monitor::rotateChanged, this, &RotateWidget::initRotate); - } - - m_monitor = monitor; - - initRotate(); - - connect(m_monitor, &Monitor::rotateChanged, this, &RotateWidget::initRotate); -} - -void RotateWidget::initRotate() -{ - if (m_monitor == nullptr) { - return; - } - - // 先断开信号,设置数据再连接信号 - disconnect(m_rotateCombox, static_cast(&QComboBox::currentIndexChanged), this, nullptr); - - auto rotate = m_monitor->rotate(); - m_rotateCombox->setCurrentIndex(m_rotateCombox->findData(rotate)); - - connect(m_rotateCombox, static_cast(&QComboBox::currentIndexChanged), this, [=](int idx) { - Q_UNUSED(idx) - Q_EMIT requestSetRotate(m_monitor, m_rotateCombox->currentData().value()); - }); -} diff --git a/dcc-old/src/plugin-display/window/rotatewidget.h b/dcc-old/src/plugin-display/window/rotatewidget.h deleted file mode 100644 index 7aa95f7408..0000000000 --- a/dcc-old/src/plugin-display/window/rotatewidget.h +++ /dev/null @@ -1,49 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef ROTATEWIDGET_H -#define ROTATEWIDGET_H - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -QT_BEGIN_NAMESPACE -class QLabel; -class QComboBox; -class QHBoxLayout; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class Monitor; -class DisplayModel; - -class RotateWidget : public SettingsItem -{ - Q_OBJECT -public: - explicit RotateWidget(int comboxWidth = 300, QWidget *parent = nullptr); - -public: - void setModel(DisplayModel *model, Monitor *monitor); - void setMonitor(Monitor *monitor); - -Q_SIGNALS: - void requestSetRotate(Monitor *monitor, const int rotate); - -private: - void initRotate(); - -private: - QHBoxLayout *m_contentLayout; - QLabel *m_rotateLabel; - QComboBox *m_rotateCombox; - - DisplayModel *m_model; - Monitor *m_monitor; -}; -} - -#endif // ROTATEWIDGET_H diff --git a/dcc-old/src/plugin-display/window/scalingwidget.cpp b/dcc-old/src/plugin-display/window/scalingwidget.cpp deleted file mode 100644 index 53dfeaa3bb..0000000000 --- a/dcc-old/src/plugin-display/window/scalingwidget.cpp +++ /dev/null @@ -1,144 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "scalingwidget.h" - -#include "operation/displaymodel.h" -#include "operation/monitor.h" - -#include - -const float MinScreenWidth = 1024.0f; -const float MinScreenHeight = 768.0f; - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -ScalingWidget::ScalingWidget(QWidget *parent) - : QWidget(parent) - , m_centralLayout(new QVBoxLayout(this)) - , m_tipWidget(new QWidget(this)) - , m_tipLabel(new DTipLabel(tr("The monitor only supports 100% display scaling"), this)) - , m_slider(new TitledSliderItem(QString(), this)) -{ - // 初始化列表无法进行静态翻译 - m_title = new TitleLabel(tr("Display Scaling"), this); - m_title->setText(tr("Display Scaling")); - - m_tipWidget->setAccessibleName("ScalingWidget_tipWidget"); - m_centralLayout->setMargin(0); - m_centralLayout->setSpacing(8); - m_centralLayout->addWidget(m_title); - - m_tipLabel->setForegroundRole(DPalette::TextTips); - m_tipLabel->setAlignment(Qt::AlignTop | Qt::AlignLeft); - QVBoxLayout *tipLayout = new QVBoxLayout(m_tipWidget); - tipLayout->setContentsMargins(10, 0, 0, 0); - tipLayout->addWidget(m_tipLabel); - m_tipWidget->setLayout(tipLayout); - m_centralLayout->addWidget(m_tipWidget); - - m_slider->addBackground(); - m_centralLayout->addWidget(m_slider); - setLayout(m_centralLayout); -} - -ScalingWidget::~ScalingWidget() { } - -void ScalingWidget::setModel(DisplayModel *model) -{ - m_displayModel = model; - - addSlider(); -} - -void ScalingWidget::addSlider() -{ - if (m_displayModel->monitorList().size() == 0) - return; - - onResolutionChanged(); - DCCSlider *slider = m_slider->slider(); - connect(slider, &DCCSlider::valueChanged, this, [=](const int value) { - if (value > 0 && value <= m_scaleList.size() - && m_displayModel->uiScale() != m_scaleList[value - 1].toFloat()) { - m_slider->setValueLiteral(QString("%1").arg(m_scaleList[value - 1].toFloat())); - Q_EMIT requestUiScaleChange(m_scaleList[value - 1].toFloat()); - } - }); - connect(m_displayModel, &DisplayModel::uiScaleChanged, this, [=](const double scale) { - slider->blockSignals(true); - qDebug() << "monitor scaleChanged ,scale :" << convertToSlider(scale); - slider->setValue(convertToSlider(scale)); - slider->blockSignals(false); - }); - - for (auto moni : m_displayModel->monitorList()) { - connect(moni, &Monitor::currentModeChanged, this, &ScalingWidget::onResolutionChanged); - connect(moni, &Monitor::enableChanged, this, &ScalingWidget::onResolutionChanged); - } -} - -void ScalingWidget::onResolutionChanged() -{ - QStringList fscaleList = { "1.0", "1.25", "1.5", "1.75", "2.0", "2.25", "2.5", "2.75", "3.0" }; - for (auto moni : m_displayModel->monitorList()) { - if (!moni->enable()) { - continue; - } - auto tmode = moni->currentMode(); - // 后端传入currentMode值可能为0 - if (tmode.width() == 0 || tmode.height() == 0) { - fscaleList.clear(); - break; - } - auto ts = getScaleList(tmode); - fscaleList = ts.size() < fscaleList.size() ? ts : fscaleList; - } - - // 如果仅一个缩放值可用 - if (fscaleList.size() <= 1) { - fscaleList.clear(); - fscaleList.append(QStringList() << "1.0" - << "1.0"); - m_tipWidget->setVisible(true); - } else { - m_tipWidget->setVisible(false); - } - - m_scaleList = fscaleList; - m_slider->setAnnotations(m_scaleList); - DCCSlider *slider = m_slider->slider(); - slider->blockSignals(true); - slider->setRange(1, m_scaleList.size()); - slider->setPageStep(1); - slider->setValue( - convertToSlider(m_displayModel->uiScale() > 1.0 ? m_displayModel->uiScale() : 1.0)); - slider->update(); - slider->blockSignals(false); -}; - -QStringList ScalingWidget::getScaleList(const Resolution &r) -{ - const QStringList tvstring = { - "1.0", "1.25", "1.5", "1.75", "2.0", "2.25", "2.5", "2.75", "3.0" - }; - QStringList fscaleList; - auto maxWScale = r.width() / MinScreenWidth; - auto maxHScale = r.height() / MinScreenHeight; - auto maxScale = maxWScale < maxHScale ? maxWScale : maxHScale; - maxScale = maxScale < 3.0f ? maxScale : 3.0f; - for (int idx = 0; idx * 0.25f + 1.0f <= maxScale; ++idx) { - fscaleList << tvstring[idx]; - } - - return fscaleList; -} - -int ScalingWidget::convertToSlider(const double value) -{ - // remove base scale (100), then convert to 1-based value - // with a stepping of 25 - return int(round(double(value * 100 - 100) / 25)) + 1; -} diff --git a/dcc-old/src/plugin-display/window/scalingwidget.h b/dcc-old/src/plugin-display/window/scalingwidget.h deleted file mode 100644 index d41dce9825..0000000000 --- a/dcc-old/src/plugin-display/window/scalingwidget.h +++ /dev/null @@ -1,61 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef SCALINGWIDGET_H -#define SCALINGWIDGET_H - -#include "interface/namespace.h" -#include "widgets/dccslider.h" -#include "widgets/switchwidget.h" -#include "widgets/titledslideritem.h" -#include "widgets/titlelabel.h" - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -QT_END_NAMESPACE - -class Resolution; - -namespace DCC_NAMESPACE { - -class Monitor; -class DisplayModel; - -class ScalingWidget : public QWidget -{ - Q_OBJECT - -public: - explicit ScalingWidget(QWidget *parent = nullptr); - ~ScalingWidget(); - -public: - void setModel(DisplayModel *model); - -Q_SIGNALS: - void requestUiScaleChange(const double scale); - -private Q_SLOTS: - void onResolutionChanged(); - -private: - void addSlider(); - QStringList getScaleList(const Resolution &r); - int convertToSlider(const double value); - -private: - DisplayModel *m_displayModel; - QVBoxLayout *m_centralLayout; - TitleLabel *m_title; - QWidget *m_tipWidget; - DTK_WIDGET_NAMESPACE::DTipLabel *m_tipLabel; - TitledSliderItem *m_slider; - QStringList m_scaleList; -}; -} - -#endif // SCALINGWIDGET_H diff --git a/dcc-old/src/plugin-display/window/secondaryscreendialog.cpp b/dcc-old/src/plugin-display/window/secondaryscreendialog.cpp deleted file mode 100644 index 2c1202e0c1..0000000000 --- a/dcc-old/src/plugin-display/window/secondaryscreendialog.cpp +++ /dev/null @@ -1,275 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "secondaryscreendialog.h" -#include "widgets/dccslider.h" -#include "widgets/titlelabel.h" -#include "widgets/titledslideritem.h" -#include "resolutionwidget.h" -#include "refreshratewidget.h" -#include "rotatewidget.h" -#include "monitorcontrolwidget.h" -#include "operation/displaymodel.h" - -#include -#include - -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -const int ComboxWidth = 200; -const int PercentageNum = 100; -const double BrightnessMaxScale = 100.0; -const double DoubleZero = 0.01; //后端传入的doube指为浮点型,有效位数为2位小数,存在精度丢失 - -SecondaryScreenDialog::SecondaryScreenDialog(QWidget *parent) - : DAbstractDialog(parent) - , m_contentLayout(new QVBoxLayout(this)) - , m_monitorControlWidget(new MonitorControlWidget(180, this)) - , m_resolutionWidget(new ResolutionWidget(ComboxWidth, this)) - , m_refreshRateWidget(new RefreshRateWidget(ComboxWidth, this)) - , m_rotateWidget(new RotateWidget(ComboxWidth, this)) - , m_model(nullptr) - , m_monitor(nullptr) -{ - setFixedWidth(410); - setMinimumHeight(480); - - //WAYLAND下需要CoverWindow属性才能保证激活父窗口时,此窗口置顶的效果,而x11下则不需要 - if (!qgetenv("WAYLAND_DISPLAY").isEmpty()) { - setWindowFlags(Qt::CoverWindow); - } - - setWindowState((this->windowState() & ~Qt::WindowMinimized)); - setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); - - m_monitorControlWidget->setAccessibleName("monitorControlWidget"); - - m_contentLayout->setSpacing(10); - m_contentLayout->setContentsMargins(35, 20, 35, 40); - m_contentLayout->addWidget(m_monitorControlWidget); - m_contentLayout->addSpacing(10); - m_contentLayout->addWidget(m_resolutionWidget); - m_contentLayout->addWidget(m_refreshRateWidget); - m_contentLayout->addWidget(m_rotateWidget); - m_contentLayout->addStretch(); - - setLayout(m_contentLayout); -} - -SecondaryScreenDialog::~SecondaryScreenDialog() -{ -} - -void SecondaryScreenDialog::OnRequestResizeDesktopVisibleChanged(bool visible) -{ - if (visible) - setMinimumHeight(m_model->brightnessEnable() ? 610+48 : 480+48); - else - setMinimumHeight(m_model->brightnessEnable() ? 610 : 480); -} - -void SecondaryScreenDialog::setModel(DisplayModel *model, Monitor *monitor) -{ - m_model = model; - m_monitor = monitor; - - // 缩放大于1时,adjustSize()后对话框高度错误,设置最小高度 - setMinimumHeight(m_model->brightnessEnable() ? 610 : 480); - m_monitorControlWidget->setScreensMerged(m_model->displayMode()); - m_monitorControlWidget->setModel(m_model, m_monitor); - m_resolutionWidget->setModel(m_model, m_monitor); - m_refreshRateWidget->setModel(m_model, m_monitor); - m_rotateWidget->setModel(m_model, m_monitor); - - connect(m_monitorControlWidget, &MonitorControlWidget::requestRecognize, this, &SecondaryScreenDialog::requestRecognize); - connect(m_monitorControlWidget, &MonitorControlWidget::requestGatherWindows, this, &SecondaryScreenDialog::requestGatherWindows); - connect(this, &SecondaryScreenDialog::requestGatherEnabled, m_monitorControlWidget, &MonitorControlWidget::onGatherEnabled); - connect(m_resolutionWidget, &ResolutionWidget::requestSetResolution, this, &SecondaryScreenDialog::requestSetResolution); - connect(m_resolutionWidget, &ResolutionWidget::requestSetFillMode, this, &SecondaryScreenDialog::requestSetFillMode); - connect(m_resolutionWidget, &ResolutionWidget::requestCurrFillModeChanged, this, &SecondaryScreenDialog::requestCurrFillModeChanged); - connect(m_resolutionWidget, &ResolutionWidget::requestResizeDesktopVisibleChanged, this, &SecondaryScreenDialog::OnRequestResizeDesktopVisibleChanged); - connect(m_refreshRateWidget, &RefreshRateWidget::requestSetResolution, this, &SecondaryScreenDialog::requestSetResolution); - connect(m_rotateWidget, &RotateWidget::requestSetRotate, this, &SecondaryScreenDialog::requestSetRotate); - - auto tfunc = [this](const double tb) { - int tmini = int(m_model->minimumBrightnessScale() * BrightnessMaxScale); - int tnum = int(tb * BrightnessMaxScale); - tnum = tnum > tmini ? tnum : tmini; - return QString::number(int(tnum)) + "%"; - }; - - if (m_monitor->canBrightness()) { - TitleLabel *headTitle = new TitleLabel(tr("Brightness"), this); //亮度 - DFontSizeManager::instance()->bind(headTitle, DFontSizeManager::T7, QFont::Normal); - - //单独显示每个亮度调节名 - TitledSliderItem *slideritem = new TitledSliderItem(m_monitor->name(), this); - slideritem->addBackground(); - DCCSlider *slider = slideritem->slider(); - int maxBacklight = static_cast(m_model->maxBacklightBrightness()); - if (maxBacklight == 0) { - int miniScale = int(m_model->minimumBrightnessScale() * BrightnessMaxScale); - double brightness = m_monitor->brightness(); - slideritem->setValueLiteral(tfunc(brightness)); - slider->setRange(miniScale, int(BrightnessMaxScale)); - slider->setType(DCCSlider::Vernier); - slider->setTickPosition(QSlider::TicksBelow); - slider->setLeftIcon(DIconTheme::findQIcon("dcc_brightnesslow")); - slider->setRightIcon(DIconTheme::findQIcon("dcc_brightnesshigh")); - slider->setIconSize(QSize(24, 24)); - slider->setTickInterval(int((BrightnessMaxScale - miniScale) / 5.0)); - slider->setValue(int(brightness * BrightnessMaxScale)); - slider->setPageStep(1); - - auto onValueChanged = [=](int pos) { - Q_EMIT requestSetMonitorBrightness(m_monitor, pos / BrightnessMaxScale); - Q_EMIT requestAmbientLightAdjustBrightness(false); - }; - - connect(slider, &DCCSlider::valueChanged, this, onValueChanged); - connect(slider, &DCCSlider::sliderMoved, this, onValueChanged); - - connect(m_monitor, &Monitor::brightnessChanged, this, [=](const double rb) { - slider->blockSignals(true); - if ((rb - m_model->minimumBrightnessScale()) < 0.00001) { - slideritem->setValueLiteral(QString("%1%").arg(int(m_model->minimumBrightnessScale() * BrightnessMaxScale))); - slider->setValue(int(m_model->minimumBrightnessScale() * BrightnessMaxScale)); - } else { - slideritem->setValueLiteral(QString("%1%").arg(int(rb * BrightnessMaxScale))); - slider->setValue(int(rb * BrightnessMaxScale)); - } - slider->blockSignals(false); - }); - - connect(m_model, &DisplayModel::minimumBrightnessScaleChanged, - this, [=](const double ms) { - double rb = m_monitor->brightness(); - int tmini = int(ms * PercentageNum); - slider->setMinimum(tmini); - slider->setTickInterval(int((BrightnessMaxScale - tmini) / 5.0)); - - slider->blockSignals(true); - slideritem->setValueLiteral(tfunc(rb)); - slider->setValue(int(rb * BrightnessMaxScale)); - slider->blockSignals(false); - }); - } else { - int m_miniScales = int(m_model->minimumBrightnessScale() * maxBacklight); - if (m_miniScales == 0) { - m_miniScales = 1; - } - double brightness = m_monitor->brightness(); - slider->setRange(m_miniScales, maxBacklight); - slider->setType(DCCSlider::Vernier); - slider->setTickPosition(QSlider::TicksBelow); - slider->setLeftIcon(DIconTheme::findQIcon("dcc_brightnesslow")); - slider->setRightIcon(DIconTheme::findQIcon("dcc_brightnesshigh")); - slider->setIconSize(QSize(24, 24)); - slider->setTickInterval(1); - slider->setValue(int((brightness + DoubleZero) * maxBacklight)); - slider->setPageStep(1); - QStringList speedList; - int j = m_miniScales; - for (; j <= maxBacklight; j++) { - speedList << ""; - } - slideritem->setAnnotations(speedList); - - auto onValueChanged = [=](int pos) { - Q_EMIT requestSetMonitorBrightness(m_monitor, pos / double(maxBacklight)); - Q_EMIT requestAmbientLightAdjustBrightness(false); - }; - - connect(slider, &DCCSlider::valueChanged, this, onValueChanged); - connect(slider, &DCCSlider::sliderMoved, this, onValueChanged); - - connect(m_monitor, &Monitor::brightnessChanged, this, [=](const double rb) { - slider->blockSignals(true); - if ((rb - m_model->minimumBrightnessScale()) < 0.00001) { - slider->setValue(int((m_model->minimumBrightnessScale() + DoubleZero) * maxBacklight)); - } else { - slider->setValue(int((rb + DoubleZero) * maxBacklight)); - } - slider->blockSignals(false); - }); - - connect(m_model, &DisplayModel::minimumBrightnessScaleChanged, - this, [=](const double ms) { - double rb = m_monitor->brightness(); - int tmini = int(ms * PercentageNum); - slider->setMinimum(tmini); - slider->setTickInterval(int((BrightnessMaxScale - tmini) / 5.0)); - - slider->blockSignals(true); - slideritem->setValueLiteral(tfunc(rb)); - slider->setValue(int((rb + DoubleZero) * BrightnessMaxScale)); - slider->blockSignals(false); - }); - } - QWidget *brightnessWidget = new QWidget(this); - brightnessWidget->setAccessibleName("SecondaryScreenDialog_brightnessWidget"); - QVBoxLayout *brightnessLayout = new QVBoxLayout(brightnessWidget); - brightnessLayout->setContentsMargins(0, 10, 0, 0); - brightnessLayout->addWidget(headTitle); - brightnessLayout->setSpacing(10); - brightnessLayout->addWidget(slideritem); - brightnessWidget->setLayout(brightnessLayout); - m_contentLayout->insertWidget(1, brightnessWidget); - brightnessWidget->setVisible(m_model->brightnessEnable()); - connect(m_model, &DisplayModel::brightnessEnableChanged, this, [this, brightnessWidget](const bool enable) { - brightnessWidget->setVisible(enable); - resetDialog(); - }); - } -} - -void SecondaryScreenDialog::resetDialog() -{ - adjustSize(); - - auto rt = rect(); - if (rt.width() > m_monitor->w()) - rt.setWidth(m_monitor->w()); - - if (rt.height() > m_monitor->h()) - rt.setHeight(m_monitor->h()); - - QScreen *screen = m_monitor->getQScreen(); - if(!screen) - return; - - setGeometry(QRect(screen->geometry().topLeft(),rt.size())); - move(QPoint(screen->geometry().left() + (screen->geometry().width() - rt.width()) / 2, - screen->geometry().top() + (screen->geometry().height() - rt.height()) / 2)); - - for (auto screen : QGuiApplication::screens()) { - screen->disconnect(this); - } - - connect(screen, &QScreen::geometryChanged, this, [=](const QRect &geometry) { - move(QPoint(geometry.left() + (geometry.width() - rt.width()) / 2, - geometry.top() + (geometry.height() - rt.height()) / 2)); - }); - show(); -} - -void SecondaryScreenDialog::keyPressEvent(QKeyEvent *event) -{ - switch (event->key()) { - case Qt::Key_Escape: - Q_EMIT requestCloseRecognize(); - break; - default: - QDialog::keyPressEvent(event); - break; - } -} diff --git a/dcc-old/src/plugin-display/window/secondaryscreendialog.h b/dcc-old/src/plugin-display/window/secondaryscreendialog.h deleted file mode 100644 index 1bda7eb474..0000000000 --- a/dcc-old/src/plugin-display/window/secondaryscreendialog.h +++ /dev/null @@ -1,68 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef SECONDARYSCREENDIALOG_H -#define SECONDARYSCREENDIALOG_H - -#include "interface/namespace.h" - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QKeyEvent; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class ResolutionWidget; -class RefreshRateWidget; -class RotateWidget; -class DisplayModel; -class Monitor; -class MonitorControlWidget; - -class SecondaryScreenDialog : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit SecondaryScreenDialog(QWidget *parent = nullptr); - ~SecondaryScreenDialog(); - -public: - void setModel(DisplayModel *model, Monitor *monitor); - void resetDialog(); - -protected: - void keyPressEvent(QKeyEvent *event) override; - -Q_SIGNALS: - void requestRecognize(); - void requestSetMonitorBrightness(Monitor *monitor, const double brightness); - void requestAmbientLightAdjustBrightness(const bool able); - void requestSetResolution(Monitor *monitor, const int mode); - void requestSetFillMode(Monitor *monitor, const QString fillMode); - void requestSetRotate(Monitor *monitor, const int rotate); - void requestGatherWindows(const QPoint cursor); - void requestGatherEnabled(const bool enable); - void requestCloseRecognize(); - void requestCurrFillModeChanged(Monitor *monitor, const QString fillMode); - -public Q_SLOTS: - void OnRequestResizeDesktopVisibleChanged(bool visible); - -private: - QVBoxLayout *m_contentLayout; - MonitorControlWidget *m_monitorControlWidget; - ResolutionWidget *m_resolutionWidget; - RefreshRateWidget *m_refreshRateWidget; - RotateWidget *m_rotateWidget; - - DisplayModel *m_model; - Monitor *m_monitor; -}; -} - -#endif // SECONDARYSCREENDIALOG_H diff --git a/dcc-old/src/plugin-display/window/timeoutdialog.cpp b/dcc-old/src/plugin-display/window/timeoutdialog.cpp deleted file mode 100644 index 65a22f312f..0000000000 --- a/dcc-old/src/plugin-display/window/timeoutdialog.cpp +++ /dev/null @@ -1,75 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "timeoutdialog.h" -#include -DGUI_USE_NAMESPACE - -TimeoutDialog::TimeoutDialog(const int timeout, QString messageModel, QWidget *parent) - : DDialog(parent) - , m_timeoutRefreshTimer(new QTimer(this)) - , m_timeout(timeout) - , m_messageModel(messageModel) -{ - setWindowFlags(Qt::WindowStaysOnTopHint | (windowFlags()&~Qt::WindowMinMaxButtonsHint)); - // set default title, message icon - setTitle(tr("Save the display settings?")); - if (messageModel.isEmpty()) { - m_messageModel = tr("Settings will be reverted in %1s."); - } - setMessage(m_messageModel.arg(m_timeout)); - setIcon(DIconTheme::findQIcon("preferences-system")); - - addButton(tr("Revert"), true, DDialog::ButtonRecommend); - addButton(tr("Save")); - - m_timeoutRefreshTimer->setInterval(1000); - - connect(m_timeoutRefreshTimer, &QTimer::timeout, this, &TimeoutDialog::onRefreshTimeout); - setAttribute(Qt::WA_DeleteOnClose); -} - -int TimeoutDialog::exec() -{ - m_timeoutRefreshTimer->start(); - - return DDialog::exec(); -} - -void TimeoutDialog::open() -{ - if (!isVisible()) { - m_timeoutRefreshTimer->start(); - } - - DDialog::open(); -} - -void TimeoutDialog::onRefreshTimeout() -{ - m_timeout--; - setMessage(m_messageModel.arg(m_timeout)); - - if (m_timeout < 1) { - reject(); - } -} - -QString TimeoutDialog::messageModel() const -{ - return m_messageModel; -} - -void TimeoutDialog::setMessageModel(const QString &messageModel) -{ - m_messageModel = messageModel; - setMessage(m_messageModel.arg(m_timeout)); -} - -void TimeoutDialog::mouseMoveEvent(QMouseEvent *event) -{ - Q_UNUSED(event) - return; -} diff --git a/dcc-old/src/plugin-display/window/timeoutdialog.h b/dcc-old/src/plugin-display/window/timeoutdialog.h deleted file mode 100644 index fa5b12dab8..0000000000 --- a/dcc-old/src/plugin-display/window/timeoutdialog.h +++ /dev/null @@ -1,39 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef TIMEOUTDIALOG_H -#define TIMEOUTDIALOG_H - -#include -#include - -DWIDGET_USE_NAMESPACE - -class TimeoutDialog : public DDialog -{ - Q_OBJECT -public: - explicit TimeoutDialog(const int timeout, QString messageModel = QString(), QWidget *parent = 0); - - QString messageModel() const; - void setMessageModel(const QString &messageModel); - -public Q_SLOTS: - int exec() override; - void open() override; - -private Q_SLOTS: - void onRefreshTimeout(); - -protected: - void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; - -private: - QTimer *m_timeoutRefreshTimer; - - int m_timeout; - QString m_messageModel; -}; - -#endif // TIMEOUTDIALOG_H diff --git a/dcc-old/src/plugin-display/window/treecombox.cpp b/dcc-old/src/plugin-display/window/treecombox.cpp deleted file mode 100644 index f0fe571433..0000000000 --- a/dcc-old/src/plugin-display/window/treecombox.cpp +++ /dev/null @@ -1,130 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "cooperationsettingsdialog.h" -#include "treecombox.h" - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -TreeCombox::TreeCombox(QStandardItemModel *model, QWidget *parent) - : DComboBox(parent) - , m_deviceItemsListView(new DListView(this)) - , m_itemsmodel(model) -{ - initUI(); - initConnect(); -} - -TreeCombox::~TreeCombox() -{ - -} - -void TreeCombox::initUI() -{ - this->setMaxVisibleItems(16); - TreeComboxDelegate *delegate = new TreeComboxDelegate(m_deviceItemsListView); - delegate->setMargins(QMargins(0, 0, 0, 0)); - m_deviceItemsListView->setItemDelegate(delegate); - - m_deviceItemsListView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_deviceItemsListView->setFrameShape(QFrame::WinPanel); - m_deviceItemsListView->setViewportMargins(10, 0, 10, 0); - m_deviceItemsListView->setItemSpacing(0); - m_deviceItemsListView->setMouseTracking(true); - m_deviceItemsListView->setItemMargins(QMargins(10, 0, 10, 0)); - m_deviceItemsListView->setItemRadius(30); - m_deviceItemsListView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); - m_deviceItemsListView->setItemRadius(0); - m_deviceItemsListView->setBackgroundType(DStyledItemDelegate::BackgroundType::NoBackground); - - this->setModel(m_itemsmodel); - this->setView(m_deviceItemsListView); -} - -void TreeCombox::initConnect() -{ - connect(m_deviceItemsListView, &DListView::pressed, this, &TreeCombox::viewItemPressed); -} - -void TreeCombox::addDivicesTitel(const QString &devTitel) -{ - QLabel *devLabel = new QLabel(devTitel, m_deviceItemsListView->viewport()); - DStandardItem *item = new DStandardItem; - DViewItemAction *action = new DViewItemAction; - action->setWidget(devLabel); - - item->setActionList(Qt::Edge::LeftEdge,{action}); - item->setFontSize(DFontSizeManager::SizeType::T6); - item->setFlags(Qt::ItemIsUserCheckable); - m_itemsmodel->appendRow(item); -} - -void TreeCombox::addDevicesSettingsItem() -{ - DStandardItem *pi = new DStandardItem; - pi->setText(tr("Collaboration Settings")); - pi->setTextColorRole(DPalette::ColorType::TextTitle); - pi->setFontSize(DFontSizeManager::SizeType::T5); - - QSize size(14, 14); - auto rightAction = new DViewItemAction(Qt::AlignVCenter, size, size, true); - pi->setActionList(Qt::Edge::LeftEdge, {rightAction}); - m_itemsmodel->appendRow(pi); -} - -void TreeCombox::addDeviceCheckedIcon(Dtk::Widget::DStandardItem *pi, bool initChecked) -{ - QSize size(14, 14); - auto rightAction = new DViewItemAction(Qt::AlignVCenter, size, size, true); - auto checkoutState = initChecked ? DStyle::SP_MarkElement : DStyle::SP_CustomBase; - auto checkIcon = qobject_cast(style())->standardIcon(checkoutState); - rightAction->setIcon(checkIcon); - pi->setActionList(Qt::Edge::LeftEdge, {rightAction}); -} - -void TreeCombox::updateItemCheckStatus(const QString &name, bool visible) -{ - for (int i = 0; i < m_itemsmodel->rowCount(); ++i) { - auto item = static_cast(m_itemsmodel->item(i)); - if (item->text() != name) - continue; - - auto action = item->actionList(Qt::Edge::LeftEdge).first(); - qDebug() << "updateItemCheckStatus : " << name << visible; - auto checkstatus = visible ? DStyle::SP_MarkElement : DStyle::SP_CustomBase; - auto icon = qobject_cast(style())->standardIcon(checkstatus); - action->setIcon(icon); - m_deviceItemsListView->update(item->index()); - break; - } -} - -TreeComboxDelegate::TreeComboxDelegate(QAbstractItemView *parent) - : Dtk::Widget::DStyledItemDelegate(parent) - , m_parentWidget(parent) -{ - m_parentWidget->update(); -} - -TreeComboxDelegate::~TreeComboxDelegate() -{ - -} - -void TreeComboxDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - if (index.row() == m_parentWidget->model()->rowCount() - 2) { - // 绘制间隔线 - QRect rct = option.rect; - rct.setY(rct.top() + rct.height() - 1); - rct.setHeight(2); - painter->fillRect(rct, QColor(0, 0, 0, static_cast(0.1 * 255))); - } - DStyledItemDelegate::paint(painter, option, index); -} diff --git a/dcc-old/src/plugin-display/window/treecombox.h b/dcc-old/src/plugin-display/window/treecombox.h deleted file mode 100644 index 9a45d78ffe..0000000000 --- a/dcc-old/src/plugin-display/window/treecombox.h +++ /dev/null @@ -1,63 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include -#include -#include - -QT_BEGIN_NAMESPACE -class QStandardItem; -class QComboBox; -class QPushButton; -QT_END_NAMESPACE - -enum DevViewItemType { - DeviceViewItem = 0, - MoreSettingsItem -}; - -Q_DECLARE_METATYPE(DevViewItemType) - -class TreeComboxDelegate : public DTK_WIDGET_NAMESPACE::DStyledItemDelegate -{ -public: - explicit TreeComboxDelegate(QAbstractItemView *parent = Q_NULLPTR); - ~TreeComboxDelegate() ; -protected: - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const Q_DECL_OVERRIDE; - -private: - QAbstractItemView *m_parentWidget; -}; - -class Machine; -class DisplayModel; -class TreeCombox : public DTK_WIDGET_NAMESPACE::DComboBox -{ - Q_OBJECT -public: - explicit TreeCombox(QStandardItemModel *model, QWidget *parent = nullptr); - ~TreeCombox(); - void addDivicesTitel(const QString& devTitel); - void addDevicesSettingsItem(); - - void addDeviceCheckedIcon(DTK_WIDGET_NAMESPACE::DStandardItem *pi, bool initChecked); - void updateItemCheckStatus(const QString &name, bool visible); - -private: - void initUI(); - void initConnect(); - -signals: - void viewItemPressed(const QModelIndex &index); - -private: - DTK_WIDGET_NAMESPACE::DListView *m_deviceItemsListView; - QStandardItemModel *m_itemsmodel; - - QList m_historyDeviceItems; - QList m_MoreDeviceItems; -}; - diff --git a/dcc-old/src/plugin-keyboard/operation/keyboarddbusproxy.cpp b/dcc-old/src/plugin-keyboard/operation/keyboarddbusproxy.cpp deleted file mode 100644 index 02416993e9..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/keyboarddbusproxy.cpp +++ /dev/null @@ -1,349 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "keyboarddbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include -#include -#include -#include - -const static QString LangSelectorService = "org.deepin.dde.LangSelector1"; -const static QString LangSelectorPath = "/org/deepin/dde/LangSelector1"; -const static QString LangSelectorInterface = "org.deepin.dde.LangSelector1"; - -const static QString KeyboardService = "org.deepin.dde.InputDevices1"; -const static QString KeyboardPath = "/org/deepin/dde/InputDevice1/Keyboard"; -const static QString KeyboardInterface = "org.deepin.dde.InputDevice1.Keyboard"; - -const static QString KeybingdingService = "org.deepin.dde.Keybinding1"; -const static QString KeybingdingPath = "/org/deepin/dde/Keybinding1"; -const static QString KeybingdingInterface = "org.deepin.dde.Keybinding1"; - -const static QString WMService = "com.deepin.wm"; -const static QString WMPath = "/com/deepin/wm"; -const static QString WMInterface = "com.deepin.wm"; - -KeyboardDBusProxy::KeyboardDBusProxy(QObject *parent) - : QObject(parent) -{ - qRegisterMetaType("KeyboardLayoutList"); - qDBusRegisterMetaType(); - - qRegisterMetaType("LocaleInfo"); - qDBusRegisterMetaType(); - - qRegisterMetaType("LocaleList"); - qDBusRegisterMetaType(); - - init(); -} - -void KeyboardDBusProxy::init() -{ - m_dBusLangSelectorInter = new DDBusInterface(LangSelectorService, LangSelectorPath, LangSelectorInterface, QDBusConnection::sessionBus(), this); - m_dBusKeyboardInter = new DDBusInterface(KeyboardService, KeyboardPath, KeyboardInterface, QDBusConnection::sessionBus(), this); - m_dBusKeybingdingInter = new DDBusInterface(KeybingdingService, KeybingdingPath, KeybingdingInterface, QDBusConnection::sessionBus(), this); - m_dBusWMInter = new DDBusInterface(WMService, WMPath, WMInterface, QDBusConnection::sessionBus(), this); -} - -void KeyboardDBusProxy::langSelectorStartServiceProcess() -{ - if (m_dBusLangSelectorInter->isValid()) - { - qWarning() << "Service" << LangSelectorService << "is already started."; - return; - } - - QDBusInterface freedesktopInter = QDBusInterface("org.freedesktop.DBus", "/", "org.freedesktop.DBus", QDBusConnection::systemBus(), this); - QDBusMessage msg = QDBusMessage::createMethodCall("org.freedesktop.DBus", "/", "org.freedesktop.DBus", QStringLiteral("StartServiceByName")); - msg << LangSelectorService << quint32(0); - QDBusPendingReply async = freedesktopInter.connection().asyncCall(msg); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(async, this); - - connect(watcher, &QDBusPendingCallWatcher::finished, this, &KeyboardDBusProxy::onLangSelectorStartServiceProcessFinished); -} - -void KeyboardDBusProxy::onLangSelectorStartServiceProcessFinished(QDBusPendingCallWatcher *w) -{ - - QDBusPendingReply reply = *w; - Q_EMIT langSelectorServiceStartFinished(reply.value()); - w->deleteLater(); -} - -//Keyboard -bool KeyboardDBusProxy::capslockToggle() -{ - return qvariant_cast(m_dBusKeyboardInter->property("CapslockToggle")); -} - -void KeyboardDBusProxy::setCapslockToggle(bool value) -{ - m_dBusKeyboardInter->setProperty("CapslockToggle", QVariant::fromValue(value)); -} - -QString KeyboardDBusProxy::currentLayout() -{ - return qvariant_cast(m_dBusKeyboardInter->property("CurrentLayout")); -} - -void KeyboardDBusProxy::setCurrentLayout(const QString &value) -{ - m_dBusKeyboardInter->setProperty("CurrentLayout", QVariant::fromValue(value)); -} - -int KeyboardDBusProxy::cursorBlink() -{ - return qvariant_cast(m_dBusKeyboardInter->property("CursorBlink")); -} - -void KeyboardDBusProxy::setCursorBlink(int value) -{ - m_dBusKeyboardInter->setProperty("CursorBlink", QVariant::fromValue(value)); -} - -int KeyboardDBusProxy::layoutScope() -{ - return qvariant_cast(m_dBusKeyboardInter->property("LayoutScope")); -} - -void KeyboardDBusProxy::setLayoutScope(int value) -{ - m_dBusKeyboardInter->setProperty("LayoutScope", QVariant::fromValue(value)); -} - - -uint KeyboardDBusProxy::repeatDelay() -{ - return qvariant_cast(m_dBusKeyboardInter->property("RepeatDelay")); -} - -void KeyboardDBusProxy::setRepeatDelay(uint value) -{ - m_dBusKeyboardInter->setProperty("RepeatDelay", QVariant::fromValue(value)); -} - - -bool KeyboardDBusProxy::repeatEnabled() -{ - return qvariant_cast(m_dBusKeyboardInter->property("RepeatEnabled")); -} - -void KeyboardDBusProxy::setRepeatEnabled(bool value) -{ - m_dBusKeyboardInter->setProperty("RepeatEnabled", QVariant::fromValue(value)); -} - - -uint KeyboardDBusProxy::repeatInterval() -{ - return qvariant_cast(m_dBusKeyboardInter->property("RepeatInterval")); -} - -void KeyboardDBusProxy::setRepeatInterval(uint value) -{ - m_dBusKeyboardInter->setProperty("RepeatInterval", QVariant::fromValue(value)); -} - - -QStringList KeyboardDBusProxy::userLayoutList() -{ - return qvariant_cast(m_dBusKeyboardInter->property("UserLayoutList")); -} - - -QStringList KeyboardDBusProxy::userOptionList() -{ - return qvariant_cast(m_dBusKeyboardInter->property("UserOptionList")); -} - -//LangSelector -QString KeyboardDBusProxy::currentLocale() -{ - return qvariant_cast(m_dBusLangSelectorInter->property("CurrentLocale")); -} - -int KeyboardDBusProxy::localeState() -{ - return qvariant_cast(m_dBusLangSelectorInter->property("LocaleState")); -} - -QStringList KeyboardDBusProxy::locales() -{ - return qvariant_cast(m_dBusLangSelectorInter->property("Locales")); -} - -//Keybinding -int KeyboardDBusProxy::numLockState() -{ - return qvariant_cast(m_dBusKeybingdingInter->property("NumLockState")); -} - -uint KeyboardDBusProxy::shortcutSwitchLayout() -{ - return qvariant_cast(m_dBusKeybingdingInter->property("ShortcutSwitchLayout")); -} - -void KeyboardDBusProxy::setShortcutSwitchLayout(uint value) -{ - m_dBusKeybingdingInter->setProperty("ShortcutSwitchLayout", QVariant::fromValue(value)); -} - -bool KeyboardDBusProxy::langSelectorIsValid() -{ - return m_dBusLangSelectorInter->isValid(); -} - -QDBusPendingReply<> KeyboardDBusProxy::KeybindingReset() -{ - QList argumentList; - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("Reset"), argumentList); -} - -QDBusPendingReply KeyboardDBusProxy::ListAllShortcuts() -{ - QList argumentList; - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("ListAllShortcuts"), argumentList); -} - -QString KeyboardDBusProxy::LookupConflictingShortcut(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return QDBusPendingReply(m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("LookupConflictingShortcut"), argumentList)); -} - -QDBusPendingReply<> KeyboardDBusProxy::ClearShortcutKeystrokes(const QString &in0, int in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("ClearShortcutKeystrokes"), argumentList); -} - -QDBusPendingReply<> KeyboardDBusProxy::AddShortcutKeystroke(const QString &in0, int in1, const QString &in2) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2); - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("AddShortcutKeystroke"), argumentList); -} - -QDBusPendingReply<> KeyboardDBusProxy::AddCustomShortcut(const QString &in0, const QString &in1, const QString &in2) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2); - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("AddCustomShortcut"), argumentList); -} - -QDBusPendingReply<> KeyboardDBusProxy::ModifyCustomShortcut(const QString &in0, const QString &in1, const QString &in2, const QString &in3) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3); - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("ModifyCustomShortcut"), argumentList); -} - -QDBusPendingReply<> KeyboardDBusProxy::DeleteCustomShortcut(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("DeleteCustomShortcut"), argumentList); -} - -QDBusPendingReply<> KeyboardDBusProxy::GrabScreen() -{ - QList argumentList; - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("GrabScreen"), argumentList); -} - -void KeyboardDBusProxy::SetNumLockState(int in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("SetNumLockState"), argumentList); -} - -QDBusPendingReply KeyboardDBusProxy::GetShortcut(const QString &in0, int in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("GetShortcut"), argumentList); -} - -QDBusPendingReply KeyboardDBusProxy::SearchShortcuts(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("SearchShortcuts"), argumentList); -} - -QDBusPendingReply KeyboardDBusProxy::Query(const QString &in0, int in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("Query"), argumentList); -} - -void KeyboardDBusProxy::SelectKeystroke() -{ - QList argumentList; - m_dBusKeybingdingInter->asyncCallWithArgumentList(QStringLiteral("SelectKeystroke"), argumentList); -} - -//keyBoard -QDBusPendingReply KeyboardDBusProxy::LayoutList() -{ - QList argumentList; - return m_dBusKeyboardInter->asyncCallWithArgumentList(QStringLiteral("LayoutList"), argumentList); -} - -void KeyboardDBusProxy::AddUserLayout(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_dBusKeyboardInter->asyncCallWithArgumentList(QStringLiteral("AddUserLayout"), argumentList); -} - -void KeyboardDBusProxy::DeleteUserLayout(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_dBusKeyboardInter->asyncCallWithArgumentList(QStringLiteral("DeleteUserLayout"), argumentList); -} - -QDBusPendingReply KeyboardDBusProxy::GetLayoutDesc(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusKeyboardInter->asyncCallWithArgumentList(QStringLiteral("GetLayoutDesc"), argumentList); -} - -QDBusPendingReply<> KeyboardDBusProxy::AddLocale(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusLangSelectorInter->asyncCallWithArgumentList(QStringLiteral("AddLocale"), argumentList); -} - -QDBusPendingReply<> KeyboardDBusProxy::DeleteLocale(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusLangSelectorInter->asyncCallWithArgumentList(QStringLiteral("DeleteLocale"), argumentList); -} - -QDBusPendingReply<> KeyboardDBusProxy::SetLocale(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusLangSelectorInter->asyncCallWithArgumentList(QStringLiteral("SetLocale"), argumentList); -} - -QDBusPendingReply KeyboardDBusProxy::GetLocaleList() -{ - QList argumentList; - return m_dBusLangSelectorInter->asyncCallWithArgumentList(QStringLiteral("GetLocaleList"), argumentList); -} diff --git a/dcc-old/src/plugin-keyboard/operation/keyboarddbusproxy.h b/dcc-old/src/plugin-keyboard/operation/keyboarddbusproxy.h deleted file mode 100644 index 37baa90225..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/keyboarddbusproxy.h +++ /dev/null @@ -1,207 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef KEYBOARDDBUSPROXY_H -#define KEYBOARDDBUSPROXY_H - -#include "interface/namespace.h" - -#include - -#include -#include - -class QDBusInterface; -class QDBusMessage; - -using Dtk::Core::DDBusInterface; - -typedef QMap KeyboardLayoutList; - -class LocaleInfo -{ -public: - LocaleInfo(){} - - friend QDBusArgument &operator<<(QDBusArgument &arg, const LocaleInfo &info) - { - arg.beginStructure(); - arg << info.id << info.name; - arg.endStructure(); - - return arg; - } - - friend const QDBusArgument &operator>>(const QDBusArgument &arg, LocaleInfo &info) - { - arg.beginStructure(); - arg >> info.id >> info.name; - arg.endStructure(); - - return arg; - } - - friend QDataStream &operator<<(QDataStream &ds, const LocaleInfo &info) - { - return ds << info.id << info.name; - } - - friend const QDataStream &operator>>(QDataStream &ds, LocaleInfo &info) - { - return ds >> info.id >> info.name; - } - - bool operator ==(const LocaleInfo &info) - { - return id==info.id && name==info.name; - } - -public: - QString id{""}; - QString name{""}; -}; - -typedef QList LocaleList; -namespace DCC_NAMESPACE { -class DCCDBusInterface; -} - -class KeyboardDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit KeyboardDBusProxy(QObject *parent = nullptr); - - //Keyboard - Q_PROPERTY(bool CapslockToggle READ capslockToggle WRITE setCapslockToggle NOTIFY CapslockToggleChanged) - bool capslockToggle(); - void setCapslockToggle(bool value); - - Q_PROPERTY(QString CurrentLayout READ currentLayout WRITE setCurrentLayout NOTIFY CurrentLayoutChanged) - QString currentLayout(); - void setCurrentLayout(const QString &value); - - Q_PROPERTY(int CursorBlink READ cursorBlink WRITE setCursorBlink NOTIFY CursorBlinkChanged) - int cursorBlink(); - void setCursorBlink(int value); - - Q_PROPERTY(int LayoutScope READ layoutScope WRITE setLayoutScope NOTIFY LayoutScopeChanged) - int layoutScope(); - void setLayoutScope(int value); - - Q_PROPERTY(uint RepeatDelay READ repeatDelay WRITE setRepeatDelay NOTIFY RepeatDelayChanged) - uint repeatDelay(); - void setRepeatDelay(uint value); - - Q_PROPERTY(bool RepeatEnabled READ repeatEnabled WRITE setRepeatEnabled NOTIFY RepeatEnabledChanged) - bool repeatEnabled(); - void setRepeatEnabled(bool value); - - Q_PROPERTY(uint RepeatInterval READ repeatInterval WRITE setRepeatInterval NOTIFY RepeatIntervalChanged) - uint repeatInterval(); - void setRepeatInterval(uint value); - - Q_PROPERTY(QStringList UserLayoutList READ userLayoutList NOTIFY UserLayoutListChanged) - QStringList userLayoutList(); - - Q_PROPERTY(QStringList UserOptionList READ userOptionList NOTIFY UserOptionListChanged) - QStringList userOptionList(); - - //LangSelector - Q_PROPERTY(QString CurrentLocale READ currentLocale NOTIFY CurrentLocaleChanged) - QString currentLocale(); - - Q_PROPERTY(int LocaleState READ localeState NOTIFY LocaleStateChanged) - int localeState(); - - Q_PROPERTY(QStringList Locales READ locales NOTIFY LocalesChanged) - QStringList locales(); - - //Keybinding - Q_PROPERTY(int NumLockState READ numLockState NOTIFY NumLockStateChanged) - int numLockState(); - - Q_PROPERTY(uint ShortcutSwitchLayout READ shortcutSwitchLayout WRITE setShortcutSwitchLayout NOTIFY ShortcutSwitchLayoutChanged) - uint shortcutSwitchLayout(); - void setShortcutSwitchLayout(uint value); - - bool langSelectorIsValid(); - void langSelectorStartServiceProcess(); - -signals: - // Keyboard property - void CapslockToggleChanged(bool value) const; - void CurrentLayoutChanged(const QString & value) const; - void CursorBlinkChanged(int value) const; - void LayoutScopeChanged(int value) const; - void RepeatDelayChanged(uint value) const; - void RepeatEnabledChanged(bool value) const; - void RepeatIntervalChanged(uint value) const; - void UserLayoutListChanged(const QStringList & value) const; - void UserOptionListChanged(const QStringList & value) const; - - // LangSelector property - void CurrentLocaleChanged(const QString & value) const; - void LocaleStateChanged(int value) const; - void LocalesChanged(const QStringList & value) const; - - // Keybinding property - void NumLockStateChanged(int value) const; - void ShortcutSwitchLayoutChanged(uint value) const; - // Keybinding - void Added(const QString &in0, int in1); - void Changed(const QString &in0, int in1); - void Deleted(const QString &in0, int in1); - void KeyEvent(bool in0, const QString &in1); - - //wm - void compositingEnabledChanged(bool enabled); - - void langSelectorServiceStartFinished(const quint32 ret) const; - -public slots: - // Keybinding - QDBusPendingReply<> KeybindingReset(); - QDBusPendingReply ListAllShortcuts(); - QString LookupConflictingShortcut(const QString &in0); - QDBusPendingReply<> ClearShortcutKeystrokes(const QString &in0, int in1); - QDBusPendingReply<> AddShortcutKeystroke(const QString &in0, int in1, const QString &in2); - QDBusPendingReply<> AddCustomShortcut(const QString &in0, const QString &in1, const QString &in2); - QDBusPendingReply<> ModifyCustomShortcut(const QString &in0, const QString &in1, const QString &in2, const QString &in3); - QDBusPendingReply<> DeleteCustomShortcut(const QString &in0); - QDBusPendingReply<> GrabScreen(); - void SetNumLockState(int in0); - QDBusPendingReply GetShortcut(const QString &in0, int in1); - QDBusPendingReply SearchShortcuts(const QString &in0); - QDBusPendingReply Query(const QString &in0, int in1); - void SelectKeystroke(); - - //KeyBoard - QDBusPendingReply LayoutList(); - void AddUserLayout(const QString &in0); - void DeleteUserLayout(const QString &in0); - QDBusPendingReply GetLayoutDesc(const QString &in0); - - QDBusPendingReply<> AddLocale(const QString &in0); - QDBusPendingReply<> DeleteLocale(const QString &in0); - QDBusPendingReply<> SetLocale(const QString &in0); - QDBusPendingReply GetLocaleList(); - -private slots: - void onLangSelectorStartServiceProcessFinished(QDBusPendingCallWatcher *w); -private: - void init(); - -private: - DDBusInterface *m_dBusLangSelectorInter; - DDBusInterface *m_dBusKeyboardInter; - DDBusInterface *m_dBusKeybingdingInter; - DDBusInterface *m_dBusWMInter; -}; - -Q_DECLARE_METATYPE(KeyboardLayoutList) -Q_DECLARE_METATYPE(LocaleInfo) -Q_DECLARE_METATYPE(LocaleList) - -#endif // KeyboardDBusProxy_H diff --git a/dcc-old/src/plugin-keyboard/operation/keyboardmodel.cpp b/dcc-old/src/plugin-keyboard/operation/keyboardmodel.cpp deleted file mode 100644 index 8eb0036b49..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/keyboardmodel.cpp +++ /dev/null @@ -1,222 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "keyboardmodel.h" -#include - -using namespace DCC_NAMESPACE; -KeyboardModel::KeyboardModel(QObject *parent) - : QObject(parent) - , m_capsLock(true) - , m_numLock(true) - , m_repeatInterval(1) - , m_repeatDelay(1) -{ -} - -void KeyboardModel::setLangChangedState(const int state) -{ - if (m_status != state) { - m_status = state; - Q_EMIT onSetCurLangFinish(state); - } -} - -void KeyboardModel::setLayoutLists(QMap lists) -{ - m_layouts = lists; -} - -QString KeyboardModel::langByKey(const QString &key) const -{ - auto res = std::find_if(m_langList.cbegin(), m_langList.end(), [key] (const MetaData &data)->bool{ - return data.key() == key; - }); - - if (res != m_langList.cend()) { - return res->text(); - } - - return QString(); -} - -QString KeyboardModel::langFromText(const QString &text) const -{ - auto res = std::find_if(m_langList.cbegin(), m_langList.end(), [text] (const MetaData &data)->bool{ - return data.text() == text; - }); - - if (res != m_langList.cend()) { - return res->key(); - } - - return QString(); -} - -void KeyboardModel::setLayout(const QString &key) -{ - if (key.isEmpty()) - return; - - if (m_layout == key) - return ; - - m_layout = key; - - Q_EMIT curLayoutChanged(m_layout); -} - -QString KeyboardModel::curLayout() const -{ - return m_layout; -} - -void KeyboardModel::setLang(const QString &value) -{ - qDebug() << "old key is " << m_currentLangKey << " new is " << value; - if (m_currentLangKey != value && !value.isEmpty()) { - m_currentLangKey = value; - const QString &langName = langByKey(value); - qDebug() << "value is " << value << " langName is " << langName; - if (!langName.isEmpty()) - Q_EMIT curLangChanged(langName); - } -} - -QStringList KeyboardModel::convertLang(const QStringList &langList) -{ - QStringList realLangList; - for (int i = 0; i < langList.size(); ++i) { - QString lang = langByKey(langList[i]); - if (!lang.isEmpty()) { - realLangList << lang; - } - } - return realLangList; -} - -void KeyboardModel::setLocaleLang(const QStringList &localLangList) -{ - QStringList langList = convertLang(localLangList); - if (m_localLangList != langList && !langList.isEmpty()) { - m_localLangList = langList; - - Q_EMIT curLocalLangChanged(m_localLangList); - } -} - -void KeyboardModel::setLocaleList(const QList &langList) -{ - if (langList.isEmpty()) - return; - - m_langList = langList; - Q_EMIT langChanged(langList); - - const QString ¤tLang = langByKey(m_currentLangKey); - if (!currentLang.isEmpty()) - Q_EMIT curLangChanged(currentLang); -} - -void KeyboardModel::setCapsLock(bool value) -{ - if (m_capsLock != value) { - m_capsLock = value; - Q_EMIT capsLockChanged(value); - } -} - -uint KeyboardModel::repeatDelay() const -{ - return m_repeatDelay; -} - -void KeyboardModel::setRepeatDelay(const uint &repeatDelay) -{ - if (m_repeatDelay != repeatDelay) { - m_repeatDelay = repeatDelay; - Q_EMIT repeatDelayChanged(repeatDelay); - } -} - -uint KeyboardModel::repeatInterval() const -{ - return m_repeatInterval; -} - -void KeyboardModel::setRepeatInterval(const uint &repeatInterval) -{ - if (m_repeatInterval != repeatInterval) { - m_repeatInterval = repeatInterval; - Q_EMIT repeatIntervalChanged(repeatInterval); - } -} - -void KeyboardModel::setAllShortcut(const QMap &map) -{ - m_shortcutMap = map; -} - -bool KeyboardModel::numLock() const -{ - return m_numLock; -} - -void KeyboardModel::setNumLock(bool numLock) -{ - if (m_numLock != numLock) { - m_numLock = numLock; - Q_EMIT numLockChanged(m_numLock); - } -} - -void KeyboardModel::cleanUserLayout() -{ - m_userLayout.clear(); -} - -QString KeyboardModel::curLang() const -{ - qDebug() << "curLang key is " << m_currentLangKey; - return langByKey(m_currentLangKey); -} - -QMap KeyboardModel::userLayout() const -{ - return m_userLayout; -} - -QMap KeyboardModel::kbLayout() const -{ - return m_layouts; -} - -QStringList KeyboardModel::localLang() const -{ - return m_localLangList; -} - -void KeyboardModel::addUserLayout(const QString &id, const QString &value) -{ - if (!m_userLayout.contains(id)) { - m_userLayout.insert(id, value); - Q_EMIT userLayoutChanged(id, value); - } -} - -QList KeyboardModel::langLists() const -{ - return m_langList; -} - -bool KeyboardModel::capsLock() const -{ - return m_capsLock; -} - -QMap KeyboardModel::allShortcut() const -{ - return m_shortcutMap; -} diff --git a/dcc-old/src/plugin-keyboard/operation/keyboardmodel.h b/dcc-old/src/plugin-keyboard/operation/keyboardmodel.h deleted file mode 100644 index 72db946bb6..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/keyboardmodel.h +++ /dev/null @@ -1,100 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef KEYBOARDMODEL_H -#define KEYBOARDMODEL_H - -#include "interface/namespace.h" -#include "metadata.h" - -#include -#include -#include - -namespace DCC_NAMESPACE { - -class KeyboardModel : public QObject -{ - Q_OBJECT -public: - explicit KeyboardModel(QObject *parent = nullptr); - enum KBLayoutScope { - system = 0, - application = 1 - }; -#ifndef DCC_DISABLE_KBLAYOUT - void setLayoutLists(QMap lists); -#endif - QString langByKey(const QString &key) const; - QString langFromText(const QString &text) const; - - QString curLayout() const; - QString curLang() const; - QMap userLayout() const; - QMap kbLayout() const; - QStringList localLang() const; - QList langLists() const; - bool capsLock() const; - QMap allShortcut() const; - - uint repeatInterval() const; - void setRepeatInterval(const uint &repeatInterval); - - uint repeatDelay() const; - void setRepeatDelay(const uint &repeatDelay); - - bool numLock() const; - void setNumLock(bool numLock); - - void cleanUserLayout(); - - inline int getLangChangedState() const { return m_status; } - void setLangChangedState(const int state); - inline QStringList &getUserLayoutList() { return m_userLaylist; } - -Q_SIGNALS: -#ifndef DCC_DISABLE_KBLAYOUT - void curLayoutChanged(const QString &layout); -#endif - void curLangChanged(const QString &lang); - void capsLockChanged(bool value); - void numLockChanged(bool value); - void repeatDelayChanged(const uint value); - void repeatIntervalChanged(const uint value); - void userLayoutChanged(const QString &id, const QString &value); - void langChanged(const QList &data); - - void curLocalLangChanged(const QStringList &localLangList); - void onSetCurLangFinish(const int value); - -public Q_SLOTS: -#ifndef DCC_DISABLE_KBLAYOUT - void setLayout(const QString &key); -#endif - void setLang(const QString &value); - void setLocaleLang(const QStringList &localLangList); - void addUserLayout(const QString &id, const QString &value); - void setLocaleList(const QList &langList); - void setCapsLock(bool value); - void setAllShortcut(const QMap &map); -private: - QStringList convertLang(const QStringList &langList); -private: - bool m_capsLock; - bool m_numLock; - uint m_repeatInterval; - uint m_repeatDelay; - QString m_layout; - QString m_currentLangKey; - QStringList m_localLangList; - QStringList m_userLaylist; - QMap m_userLayout; - QMap m_layouts; - QList m_langList; - QMap m_shortcutMap; - int m_status{0}; -}; -} -#endif // KEYBOARDMODEL_H diff --git a/dcc-old/src/plugin-keyboard/operation/keyboardwork.cpp b/dcc-old/src/plugin-keyboard/operation/keyboardwork.cpp deleted file mode 100644 index d192bc8de2..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/keyboardwork.cpp +++ /dev/null @@ -1,812 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#include "keyboardwork.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -bool caseInsensitiveLessThan(const MetaData &s1, const MetaData &s2); - -const QMap &ModelKeycode = {{"minus", "-"}, {"equal", "="}, {"backslash", "\\"}, {"question", "?/"}, {"exclam", "1"}, {"numbersign", "3"}, - {"semicolon", ";"}, {"apostrophe", "'"}, {"less", ",<"}, {"period", ">."}, {"slash", "?/"}, {"parenleft", "9"}, {"bracketleft", "["}, - {"parenright", "0"}, {"bracketright", "]"}, {"quotedbl", "'"}, {"space", " "}, {"dollar", "$"}, {"plus", "+"}, {"asterisk", "*"}, - {"underscore", "_"}, {"bar", "|"}, {"grave", "`"}, {"at", "2"}, {"percent", "5"}, {"greater", ">."}, {"asciicircum", "6"}, - {"braceleft", "["}, {"colon", ":"}, {"comma", ",<"}, {"asciitilde", "~"}, {"ampersand", "7"}, {"braceright", "]"}, {"Escape", "Esc"} -}; - - -KeyboardWorker::KeyboardWorker(KeyboardModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_keyboardDBusProxy(new KeyboardDBusProxy(this)) - , m_translatorLanguage(nullptr) -{ - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::compositingEnabledChanged, this, &KeyboardWorker::onGetWindowWM); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::Added, this, &KeyboardWorker::onAdded); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::Deleted, this, &KeyboardWorker::removed); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::UserLayoutListChanged, this, &KeyboardWorker::onUserLayout); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::CurrentLayoutChanged, this, &KeyboardWorker::onCurrentLayout); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::CapslockToggleChanged, m_model, &KeyboardModel::setCapsLock); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::NumLockStateChanged, m_model, &KeyboardModel::setNumLock); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::langSelectorServiceStartFinished, this, [=] { - QTimer::singleShot(100, this, &KeyboardWorker::onLangSelectorServiceFinished); - }); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::RepeatDelayChanged, this, &KeyboardWorker::setModelRepeatDelay); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::RepeatIntervalChanged, this, &KeyboardWorker::setModelRepeatInterval); - - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::Changed, this, &KeyboardWorker::onShortcutChanged); - - m_model->setLangChangedState(m_keyboardDBusProxy->localeState()); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::LocaleStateChanged, m_model, &KeyboardModel::setLangChangedState); -} - -void KeyboardWorker::resetAll() { - QDBusPendingCallWatcher* watcher = new QDBusPendingCallWatcher(m_keyboardDBusProxy->KeybindingReset(), this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] (QDBusPendingCallWatcher *reply) { - watcher->deleteLater(); - - if (reply->isError()) { - qDebug() << Q_FUNC_INFO << reply->error(); - } - - Q_EMIT onResetFinished(); - }); -} - -void KeyboardWorker::onGetWindowWM(bool value) -{ - if (m_shortcutModel) - m_shortcutModel->onWindowSwitchChanged(value); -} - -void KeyboardWorker::setShortcutModel(ShortcutModel *model) -{ - m_shortcutModel = model; - - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::KeyEvent, model, &ShortcutModel::keyEvent); -} - -void KeyboardWorker::refreshShortcut() -{ - QDBusPendingCallWatcher *result = new QDBusPendingCallWatcher(m_keyboardDBusProxy->ListAllShortcuts(), this); - connect(result, SIGNAL(finished(QDBusPendingCallWatcher*)), this, - SLOT(onRequestShortcut(QDBusPendingCallWatcher*))); -} - -void KeyboardWorker::refreshLang() -{ - m_keyboardDBusProxy->blockSignals(false); - if (!m_keyboardDBusProxy->langSelectorIsValid()) - m_keyboardDBusProxy->langSelectorStartServiceProcess(); - else - onLangSelectorServiceFinished(); -} - -void KeyboardWorker::windowSwitch() -{ - QDBusInterface licenseInfo("com.deepin.wm", - "/com/deepin/wm", - "com.deepin.wm", - QDBusConnection::sessionBus()); - if (!licenseInfo.isValid()) { - qDebug() << "com.deepin.license error ," << licenseInfo.lastError().name(); - return; - } - - if (m_shortcutModel) - m_shortcutModel->onWindowSwitchChanged(licenseInfo.property("compositingEnabled").toBool()); -} - -void KeyboardWorker::active() -{ - if (!m_translatorLanguage) { - m_translatorLanguage = new QTranslator(this); - m_translatorLanguage->load("/usr/share/dde-control-center/translations/keyboard_language_" + QLocale::system().name()); - qApp->installTranslator(m_translatorLanguage); - } - - m_keyboardDBusProxy->blockSignals(false); - - setModelRepeatDelay(m_keyboardDBusProxy->repeatDelay()); - setModelRepeatInterval(m_keyboardDBusProxy->repeatInterval()); - - m_metaDatas.clear(); - m_letters.clear(); - - Q_EMIT onDatasChanged(m_metaDatas); - Q_EMIT onLettersChanged(m_letters); - - m_model->setCapsLock(m_keyboardDBusProxy->capslockToggle()); - m_model->setNumLock(m_keyboardDBusProxy->numLockState()); - - onRefreshKBLayout(); - refreshLang(); - windowSwitch(); -} - -void KeyboardWorker::deactive() -{ - m_keyboardDBusProxy->blockSignals(true); -} - -bool KeyboardWorker::keyOccupy(const QStringList &list) -{ - int bit = 0; - for (QString t : list) { - if (t == "Control") - bit += Modifier::control; - else if (t == "Alt") - bit += Modifier::alt; - else if (t == "Super") - bit += Modifier::super; - else if (t == "Shift") - bit += Modifier::shift; - else - continue; - } - - QMap keylist = m_model->allShortcut(); - QMap::iterator i; - for (i = keylist.begin(); i != keylist.end(); ++i) { - if (bit == i.value() && i.key().last() == list.last()) { - return false; - } - } - - return true; -} - -#ifndef DCC_DISABLE_KBLAYOUT -void KeyboardWorker::onRefreshKBLayout() -{ - QDBusPendingCallWatcher *layoutResult = new QDBusPendingCallWatcher(m_keyboardDBusProxy->LayoutList(), this); - connect(layoutResult, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onLayoutListsFinished); - - onCurrentLayout(m_keyboardDBusProxy->currentLayout()); - onUserLayout(m_keyboardDBusProxy->userLayoutList()); -} -#endif - -void KeyboardWorker::modifyShortcutEditAux(ShortcutInfo *info, bool isKPDelete) -{ - if (!info) - return; - - if (info->replace) { - onDisableShortcut(info->replace); - } - - QString shortcut = info->accels; - if (!isKPDelete) { - shortcut = shortcut.replace("KP_Delete", "Delete"); - } - - const QString &result = m_keyboardDBusProxy->LookupConflictingShortcut(shortcut); - - if (!result.isEmpty()) { - const QJsonObject obj = QJsonDocument::fromJson(result.toLatin1()).object(); - QDBusPendingCall call = m_keyboardDBusProxy->ClearShortcutKeystrokes(obj["Id"].toString(), obj["Type"].toInt()); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - - watcher->setProperty("id", info->id); - watcher->setProperty("type", info->type); - watcher->setProperty("shortcut", shortcut); - watcher->setProperty("clean", !isKPDelete); - - connect(watcher, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onConflictShortcutCleanFinished); - } else { - if (isKPDelete) { - m_keyboardDBusProxy->AddShortcutKeystroke(info->id, static_cast(info->type), shortcut); - } else { - cleanShortcutSlef(info->id, static_cast(info->type), shortcut); - } - } -} - -void KeyboardWorker::modifyShortcutEdit(ShortcutInfo *info) { - modifyShortcutEditAux(info); -} - -void KeyboardWorker::addCustomShortcut(const QString &name, const QString &command, const QString &accels) -{ - m_keyboardDBusProxy->AddCustomShortcut(name, command, accels); -} - -void KeyboardWorker::modifyCustomShortcut(ShortcutInfo *info) -{ - if (info->replace) { - onDisableShortcut(info->replace); - } - - // reset replace shortcut - info->replace = nullptr; - - const QString &result = m_keyboardDBusProxy->LookupConflictingShortcut(info->accels); - - if (!result.isEmpty()) { - const QJsonObject obj = QJsonDocument::fromJson(result.toUtf8()).object(); - QDBusPendingCall call = m_keyboardDBusProxy->ClearShortcutKeystrokes(obj["Id"].toString(), obj["Type"].toInt()); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - - watcher->setProperty("id", info->id); - watcher->setProperty("name", info->name); - watcher->setProperty("command", info->command); - watcher->setProperty("shortcut", info->accels); - - connect(watcher, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onCustomConflictCleanFinished); - } else { - m_keyboardDBusProxy->ModifyCustomShortcut(info->id, info->name, info->command, info->accels); - } -} - -void KeyboardWorker::grabScreen() -{ - m_keyboardDBusProxy->GrabScreen(); -} - -bool KeyboardWorker::checkAvaliable(const QString &key) -{ - const QString &value = m_keyboardDBusProxy->LookupConflictingShortcut(key); - - return value.isEmpty(); -} - -void KeyboardWorker::delShortcut(ShortcutInfo* info) -{ - m_keyboardDBusProxy->DeleteCustomShortcut(info->id); - if (m_shortcutModel) - m_shortcutModel->delInfo(info); -} - -void KeyboardWorker::setRepeatDelay(uint value) -{ - m_keyboardDBusProxy->setRepeatDelay(converToDBusDelay(value)); -} - -void KeyboardWorker::setRepeatInterval(uint value) -{ - m_keyboardDBusProxy->setRepeatInterval(static_cast(converToDBusInterval(value))); -} - -void KeyboardWorker::setModelRepeatDelay(uint value) -{ - m_model->setRepeatDelay(converToModelDelay(value)); -} - -void KeyboardWorker::setModelRepeatInterval(uint value) -{ - m_model->setRepeatInterval(converToModelInterval(value)); -} - -void KeyboardWorker::setNumLock(bool value) -{ - m_keyboardDBusProxy->SetNumLockState(value); -} - -void KeyboardWorker::setCapsLock(bool value) -{ - m_keyboardDBusProxy->setCapslockToggle(value); -} - -void KeyboardWorker::addUserLayout(const QString &value) -{ - m_keyboardDBusProxy->AddUserLayout(m_model->kbLayout().key(value)); -} - -void KeyboardWorker::delUserLayout(const QString &value) -{ - m_keyboardDBusProxy->DeleteUserLayout(m_model->userLayout().key(value)); -} - -bool caseInsensitiveLessThan(const MetaData &s1, const MetaData &s2) -{ - QCollator qc; - int i = qc.compare(s1.text(), s2.text()); - if (i < 0) - return true; - else - return false; -} - -void KeyboardWorker::onRequestShortcut(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - if(reply.isError()) - { - watch->deleteLater(); - return; - } - - QString info = reply.value(); - - QMap map; - QJsonArray array = QJsonDocument::fromJson(info.toStdString().c_str()).array(); - Q_FOREACH(QJsonValue value, array) { - QJsonObject obj = value.toObject(); - if (obj.isEmpty()) - continue; - if (obj["Accels"].toArray().isEmpty()) - continue; - QString accels = obj["Accels"].toArray().at(0).toString(); - accels.replace("<", ""); - accels.replace(">", "-"); - //转换为list - QStringList key; - key = accels.split("-"); - int bit = 0; - for (QString &t : key) { - if (t == "Control") - bit += Modifier::control; - else if (t == "Alt") - bit += Modifier::alt; - else if (t == "Super") - bit += Modifier::super; - else if (t == "Shift") - bit += Modifier::shift; - else { - QString s = t; - s = ModelKeycode.value(s); - if (!s.isEmpty()) - t = s; - } - } - if (bit == 0) - continue; - - map.insert(key, bit); - } - m_model->setAllShortcut(map); - if (m_shortcutModel) - m_shortcutModel->onParseInfo(info); - watch->deleteLater(); -} - -void KeyboardWorker::onAdded(const QString &in0, int in1) -{ - QDBusPendingReply reply = m_keyboardDBusProxy->GetShortcut(in0, in1); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onAddedFinished); -} - -void KeyboardWorker::onDisableShortcut(ShortcutInfo *info) -{ - // disable shortcut need wait! - m_keyboardDBusProxy->ClearShortcutKeystrokes(info->id, static_cast(info->type)).waitForFinished(); - info->accels.clear(); -} - -void KeyboardWorker::onAddedFinished(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - - if (m_shortcutModel && !watch->isError()) - m_shortcutModel->onCustomInfo(reply.value()); - - watch->deleteLater(); -} - -void KeyboardWorker::onLayoutListsFinished(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - - KeyboardLayoutList tmp_map = reply.value(); - m_model->setLayoutLists(tmp_map); - - watch->deleteLater(); -} - -void KeyboardWorker::onLocalListsFinished(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - - m_datas.clear(); - - LocaleList list = reply.value(); - - QStringList languageCodes; - QList metaDatas; - for (int i = 0; i != list.size(); ++i) { - MetaData md; - md.setKey(list.at(i).id); - languageCodes << list.at(i).id; - metaDatas << md; - } - QStringList dialectNames = DCCLocale::dialectNames(languageCodes); - for (int i = 0; i != metaDatas.size(); ++i) { - metaDatas[i].setText(QString("%1 - %2").arg(list.at(i).name).arg(dialectNames.at(i))); - } - m_datas.append(metaDatas); - - std::sort(m_datas.begin(), m_datas.end(), caseInsensitiveLessThan); - - m_model->setLocaleList(m_datas); - - watch->deleteLater(); - - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::CurrentLocaleChanged, m_model, &KeyboardModel::setLang); - connect(m_keyboardDBusProxy, &KeyboardDBusProxy::LocalesChanged, m_model, &KeyboardModel::setLocaleLang); - m_model->setLocaleLang(m_keyboardDBusProxy->locales()); - m_model->setLang(m_keyboardDBusProxy->currentLocale()); -} - -void KeyboardWorker::onUserLayout(const QStringList &list) -{ - m_model->cleanUserLayout(); - m_model->getUserLayoutList() = list; - - for (const QString &data : list) { - QDBusPendingCallWatcher *layoutResult = new QDBusPendingCallWatcher(m_keyboardDBusProxy->GetLayoutDesc(data), this); - layoutResult->setProperty("id", data); - connect(layoutResult, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onUserLayoutFinished); - } -} - -void KeyboardWorker::onUserLayoutFinished(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - - m_model->addUserLayout(watch->property("id").toString(), reply.value()); - - watch->deleteLater(); -} - -void KeyboardWorker::onCurrentLayout(const QString &value) -{ - QDBusPendingCallWatcher *layoutResult = new QDBusPendingCallWatcher(m_keyboardDBusProxy->GetLayoutDesc(value), this); - connect(layoutResult, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onCurrentLayoutFinished); -} - -void KeyboardWorker::onSearchShortcuts(const QString &searchKey) -{ - qDebug() << "onSearchShortcuts: " << searchKey; - QDBusPendingReply reply = m_keyboardDBusProxy->SearchShortcuts(searchKey); - QDBusPendingCallWatcher *searchResult = new QDBusPendingCallWatcher(reply, this); - connect(searchResult, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onSearchFinished); -} - -void KeyboardWorker::onCurrentLayoutFinished(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - - m_model->setLayout(reply.value()); - - watch->deleteLater(); -} - -void KeyboardWorker::onSearchFinished(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - if (m_shortcutModel && !watch->isError()) { - m_shortcutModel->setSearchResult(reply.value()); - } else { - qDebug() << "search finished error." << watch->error(); - } - watch->deleteLater(); -} - -void KeyboardWorker::onPinyin() -{ - m_letters.clear(); - m_metaDatas.clear(); - QDBusInterface dbus_pinyin("org.deepin.dde.Pinyin1", "/org/deepin/dde/Pinyin1", - "org.deepin.dde.Pinyin1"); - - Q_FOREACH(const QString &str, m_model->kbLayout().keys()) { - MetaData md; - QString title = m_model->kbLayout()[str]; - md.setText(title); - md.setKey(str); - QChar letterFirst = title[0]; - QStringList letterFirstList; - if (letterFirst.isLower() || letterFirst.isUpper()) { - letterFirstList << QString(letterFirst); - md.setPinyin(title); - } else { - QDBusMessage message = dbus_pinyin.call("Query", title); - letterFirstList = message.arguments()[0].toStringList(); - md.setPinyin(letterFirstList.at(0)); - } - - append(md); - } - - QLocale locale; - - if (locale.language() == QLocale::Chinese) { - QChar ch = '\0'; - for (int i(0); i != m_metaDatas.size(); ++i) - { - const QChar flag = m_metaDatas[i].pinyin().at(0).toUpper(); - if (flag == ch) - continue; - ch = flag; - - m_letters.append(ch); - m_metaDatas.insert(i, MetaData(ch, true)); - } - } else { - std::sort(m_metaDatas.begin(), m_metaDatas.end(), caseInsensitiveLessThan); - } - - Q_EMIT onDatasChanged(m_metaDatas); - Q_EMIT onLettersChanged(m_letters); -} - -void KeyboardWorker::append(const MetaData &md) -{ - if(m_metaDatas.count() == 0) - { - m_metaDatas.append(md); - return; - } - - int index = 0; - for (int i = 0; i != m_metaDatas.size(); ++i) { - if(m_metaDatas.at(i) > md) - { - m_metaDatas.insert(index,md); - return; - } - index++; - } - - m_metaDatas.append(md); -} - -void KeyboardWorker::onLangSelectorServiceFinished() -{ - QDBusPendingCallWatcher *localResult = new QDBusPendingCallWatcher(m_keyboardDBusProxy->GetLocaleList(), this); - connect(localResult, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onLocalListsFinished); - m_keyboardDBusProxy->currentLocale(); -} - -void KeyboardWorker::onShortcutChanged(const QString &id, int type) -{ - QDBusPendingCallWatcher *result = new QDBusPendingCallWatcher(m_keyboardDBusProxy->Query(id, type)); - connect(result, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onGetShortcutFinished); -} - -void KeyboardWorker::onGetShortcutFinished(QDBusPendingCallWatcher *watch) -{ - QDBusPendingReply reply = *watch; - - if (m_shortcutModel && !watch->isError()) - m_shortcutModel->onKeyBindingChanged(reply.value()); - - watch->deleteLater(); -} - -void KeyboardWorker::updateKey(ShortcutInfo *info) -{ - if (m_shortcutModel) - m_shortcutModel->setCurrentInfo(info); - - m_keyboardDBusProxy->SelectKeystroke(); -} - -void KeyboardWorker::cleanShortcutSlef(const QString &id, const int type, const QString &shortcut) -{ - QDBusPendingCall call = m_keyboardDBusProxy->ClearShortcutKeystrokes(id, type); - - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - - watcher->setProperty("id", id); - watcher->setProperty("type", type); - watcher->setProperty("shortcut", shortcut); - - connect(watcher, &QDBusPendingCallWatcher::finished, this, &KeyboardWorker::onShortcutCleanFinished); -} - -void KeyboardWorker::setNewCustomShortcut(const QString &id, const QString &name, const QString &command, const QString &accles) -{ - m_keyboardDBusProxy->ModifyCustomShortcut(id, name, command, accles); -} - -void KeyboardWorker::onConflictShortcutCleanFinished(QDBusPendingCallWatcher *watch) -{ - if (!watch->isError()) { - const QString &id = watch->property("id").toString(); - const int type = watch->property("type").toInt(); - const QString &shortcut = watch->property("shortcut").toString(); - const bool clean = watch->property("clean").toBool(); - - if (clean) { - cleanShortcutSlef(id, type, shortcut); - } else { - m_keyboardDBusProxy->AddShortcutKeystroke(id, type, shortcut); - } - } - - watch->deleteLater(); -} - -void KeyboardWorker::onShortcutCleanFinished(QDBusPendingCallWatcher *watch) -{ - if (!watch->isError()) { - const QString &id = watch->property("id").toString(); - const int type = watch->property("type").toInt(); - const QString &shortcut = watch->property("shortcut").toString(); - - m_keyboardDBusProxy->AddShortcutKeystroke(id, type, shortcut); - - if (shortcut.contains("Delete") && !shortcut.contains("KP_Delete")) { - ShortcutInfo si; - si.id = id; - si.type = static_cast(type); - si.accels = shortcut; - si.accels = si.accels.replace("Delete", "KP_Delete"); - modifyShortcutEditAux(&si, true); - } - } else { - qDebug() << watch->error(); - } - - watch->deleteLater(); -} - -void KeyboardWorker::onCustomConflictCleanFinished(QDBusPendingCallWatcher *w) -{ - if (!w->isError()) { - const QString &id = w->property("id").toString(); - const QString name = w->property("name").toString(); - const QString &command = w->property("command").toString(); - const QString &accles = w->property("shortcut").toString(); - - setNewCustomShortcut(id, name, command, accles); - } - - w->deleteLater(); -} - -uint KeyboardWorker::converToDBusDelay(uint value) -{ - switch (value) { - case 1: - return 20; - case 2: - return 80; - case 3: - return 150; - case 4: - return 250; - case 5: - return 360; - case 6: - return 480; - case 7: - return 600; - default: - return 4; - } -} - -uint KeyboardWorker::converToModelDelay(uint value) -{ - if (value <= 20) - return 1; - else if (value <= 80) - return 2; - else if (value <= 150) - return 3; - else if (value <= 250) - return 4; - else if (value <= 360) - return 5; - else if (value <= 480) - return 6; - else - return 7; -} - -int KeyboardWorker::converToDBusInterval(int value) -{ - switch (value) { - case 1: - return 100; - case 2: - return 80; - case 3: - return 65; - case 4: - return 50; - case 5: - return 35; - case 6: - return 25; - case 7: - return 20; - default: - return 4; - } -} - -uint KeyboardWorker::converToModelInterval(uint value) -{ - if (value <= 20) - return 7; - else if (value <= 25) - return 6; - else if (value <= 35) - return 5; - else if (value <= 50) - return 4; - else if (value <= 65) - return 3; - else if (value <= 80) - return 2; - else - return 1; -} - -void KeyboardWorker::setLayout(const QString &value) -{ - m_keyboardDBusProxy->setCurrentLayout(value); -} - -void KeyboardWorker::setLang(const QString &value) -{ - Q_EMIT requestSetAutoHide(false); - - QDBusPendingCall call = m_keyboardDBusProxy->SetLocale(value); - qDebug() << "setLang is " << value; - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - qDebug() << "setLang error: " << call.error().type(); - m_model->setLang(m_keyboardDBusProxy->currentLocale()); - } - - qDebug() << "setLang success"; - Q_EMIT requestSetAutoHide(true); - watcher->deleteLater(); - }); -} - -void KeyboardWorker::addLang(const QString &value) -{ - Q_EMIT requestSetAutoHide(false); - - QDBusPendingCall call = m_keyboardDBusProxy->AddLocale(value); - - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - qDebug() << "add Locale language error: " << call.error().type(); - } - - Q_EMIT requestSetAutoHide(true); - watcher->deleteLater(); - }); -} - -void KeyboardWorker::deleteLang(const QString &value) -{ - Q_EMIT requestSetAutoHide(false); - - QString lang = m_model->langFromText(value); - QDBusPendingCall call = m_keyboardDBusProxy->DeleteLocale(lang); - - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [=] { - if (call.isError()) { - qDebug() << "delete Locale language error: " << call.error().type(); - } - - Q_EMIT requestSetAutoHide(true); - watcher->deleteLater(); - }); -} diff --git a/dcc-old/src/plugin-keyboard/operation/keyboardwork.h b/dcc-old/src/plugin-keyboard/operation/keyboardwork.h deleted file mode 100644 index b9ac657a4c..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/keyboardwork.h +++ /dev/null @@ -1,124 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - - -#ifndef KEYBOARDWORK_H -#define KEYBOARDWORK_H - -#include "interface/namespace.h" -#include "operation/metadata.h" -#include "shortcutmodel.h" -#include "keyboardmodel.h" -#include "keyboarddbusproxy.h" - -#include - -class QDBusPendingCallWatcher; -class QTranslator; - -namespace DCC_NAMESPACE { -class KeyboardWorker : public QObject -{ - Q_OBJECT -public: - explicit KeyboardWorker(KeyboardModel* model, QObject *parent = nullptr); - enum Modifier { - control = 1, - super = 2, - alt = 4, - shift = 8 - }; - - void resetAll(); - - void setShortcutModel(ShortcutModel * model); - void refreshShortcut(); - void refreshLang(); - void windowSwitch(); - - inline QList getDatas() {return m_metaDatas;} - inline QList getLetters() {return m_letters;} - - void modifyShortcutEditAux(ShortcutInfo* info, bool isKPDelete = false); - void modifyShortcutEdit(ShortcutInfo* info); - void addCustomShortcut(const QString& name, const QString& command, const QString& accels); - void modifyCustomShortcut(ShortcutInfo *info); - - void grabScreen(); - bool checkAvaliable(const QString& key); - void delShortcut(ShortcutInfo *info); - - void setRepeatDelay(uint value); - void setRepeatInterval(uint value); - void setModelRepeatDelay(uint value); - void setModelRepeatInterval(uint value); - - void setNumLock(bool value); - void setCapsLock(bool value); - void active(); - void deactive(); - bool keyOccupy(const QStringList &list); - void onRefreshKBLayout(); - -Q_SIGNALS: - void KeyEvent(bool in0, const QString &in1); - void searchChangd(ShortcutInfo* info, const QString& key); - void removed(const QString &id, int type); - void requestSetAutoHide(const bool visible); - void onDatasChanged(QList datas); - void onLettersChanged(QList letters); - // 快捷键恢复默认完成 - void onResetFinished(); - -public Q_SLOTS: - void setLang(const QString &value); - void addLang(const QString &value); - void deleteLang(const QString& value); - void setLayout(const QString& value); - void addUserLayout(const QString& value); - void delUserLayout(const QString& value); - void onRequestShortcut(QDBusPendingCallWatcher* watch); - void onAdded(const QString&in0, int in1); - void onDisableShortcut(ShortcutInfo* info); - void onAddedFinished(QDBusPendingCallWatcher *watch); - void onLocalListsFinished(QDBusPendingCallWatcher *watch); - void onGetWindowWM(bool value); - void onLayoutListsFinished(QDBusPendingCallWatcher *watch); - void onUserLayout(const QStringList &list); - void onUserLayoutFinished(QDBusPendingCallWatcher *watch); - void onCurrentLayout(const QString &value); - void onCurrentLayoutFinished(QDBusPendingCallWatcher *watch); - void onPinyin(); - void onSearchShortcuts(const QString &searchKey); - void onSearchFinished(QDBusPendingCallWatcher *watch); - void append(const MetaData& md); - void onLangSelectorServiceFinished(); - void onShortcutChanged(const QString &id, int type); - void onGetShortcutFinished(QDBusPendingCallWatcher *watch); - void updateKey(ShortcutInfo *info); - void cleanShortcutSlef(const QString &id, const int type, const QString &shortcut); - void setNewCustomShortcut(const QString &id, const QString &name, const QString &command, const QString &accles); - void onConflictShortcutCleanFinished(QDBusPendingCallWatcher *watch); - void onShortcutCleanFinished(QDBusPendingCallWatcher *watch); - void onCustomConflictCleanFinished(QDBusPendingCallWatcher *w); - -private: - uint converToDBusDelay(uint value); - uint converToModelDelay(uint value); - int converToDBusInterval(int value); - uint converToModelInterval(uint value); - -private: - QList m_datas; - QList m_metaDatas; - QList m_letters; - int m_delayValue; - int m_speedValue; - KeyboardModel* m_model; - KeyboardDBusProxy *m_keyboardDBusProxy; - ShortcutModel *m_shortcutModel = nullptr; - QTranslator *m_translatorLanguage; -}; -} -#endif // KEYBOARDWORK_H diff --git a/dcc-old/src/plugin-keyboard/operation/metadata.cpp b/dcc-old/src/plugin-keyboard/operation/metadata.cpp deleted file mode 100644 index 35f63000d8..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/metadata.cpp +++ /dev/null @@ -1,84 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "metadata.h" -#include - -using namespace DCC_NAMESPACE; - -MetaData::MetaData(const QString &text, bool section) - : m_text(text) - , m_pinyin(QString()) - , m_section(section) - , m_selected(false) -{ - -} - -void MetaData::setPinyin(const QString &py) -{ - m_pinyin = py; -} - -QString MetaData::pinyin() const -{ - return m_pinyin == QString() ? m_text : m_pinyin; -} - -void MetaData::setText(const QString &text) -{ - m_text = text; -} - -QString MetaData::text() const -{ - return m_text; -} - -void MetaData::setKey(const QString &key) -{ - m_key = key; -} - -QString MetaData::key() const -{ - return m_key; -} - -void MetaData::setSection(bool section) -{ - m_section = section; -} - -bool MetaData::section() const -{ - return m_section; -} - -void MetaData::setSelected(bool selected) -{ - m_selected = selected; -} - -bool MetaData::selected() const -{ - return m_selected; -} - -bool MetaData::operator ==(const MetaData &md) const -{ - return m_text == md.m_text; -} - -bool MetaData::operator >(const MetaData &md) const -{ - int x = QString::compare(m_pinyin, md.m_pinyin, Qt::CaseInsensitive); - return x > 0; -} - -QDebug &operator<<(QDebug dbg, const MetaData &md) -{ - dbg.nospace() << QString("key: %1, text: %2").arg(md.key(), md.text()); - return dbg.maybeSpace(); -} diff --git a/dcc-old/src/plugin-keyboard/operation/metadata.h b/dcc-old/src/plugin-keyboard/operation/metadata.h deleted file mode 100644 index b8ad6a472e..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/metadata.h +++ /dev/null @@ -1,46 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include - -namespace DCC_NAMESPACE { - -class MetaData -{ -public: - MetaData(const QString &text = QString(), bool section = false); - - void setPinyin(const QString &py); - QString pinyin() const; - - void setText(const QString &text); - QString text() const; - - void setKey(const QString &key); - QString key() const; - - void setSection(bool section); - bool section() const; - - void setSelected(bool selected); - bool selected() const; - - bool operator ==(const MetaData &md) const; - bool operator >(const MetaData &md) const; -private: - QString m_key; - QString m_text; - QString m_pinyin; - bool m_section; - bool m_selected; - friend QDebug &operator<<(QDebug dbg, const MetaData &md); -}; - -QDebug &operator<<(QDebug dbg, const MetaData &md); - -} -Q_DECLARE_METATYPE(DCC_NAMESPACE::MetaData) diff --git a/dcc-old/src/plugin-keyboard/operation/qrc/icons/dcc_nav_keyboard_42px.svg b/dcc-old/src/plugin-keyboard/operation/qrc/icons/dcc_nav_keyboard_42px.svg deleted file mode 100644 index 28b7034307..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/qrc/icons/dcc_nav_keyboard_42px.svg +++ /dev/null @@ -1,63 +0,0 @@ - - - dcc_nav_keyboard_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-keyboard/operation/qrc/icons/dcc_nav_keyboard_84px.svg b/dcc-old/src/plugin-keyboard/operation/qrc/icons/dcc_nav_keyboard_84px.svg deleted file mode 100644 index 3d11c7e13e..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/qrc/icons/dcc_nav_keyboard_84px.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - dcc_nav_keyboard_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-keyboard/operation/qrc/icons/list_select.png b/dcc-old/src/plugin-keyboard/operation/qrc/icons/list_select.png deleted file mode 100644 index 886736105d..0000000000 Binary files a/dcc-old/src/plugin-keyboard/operation/qrc/icons/list_select.png and /dev/null differ diff --git a/dcc-old/src/plugin-keyboard/operation/qrc/icons/list_select@2x.png b/dcc-old/src/plugin-keyboard/operation/qrc/icons/list_select@2x.png deleted file mode 100644 index a04e6e4d5f..0000000000 Binary files a/dcc-old/src/plugin-keyboard/operation/qrc/icons/list_select@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-keyboard/operation/qrc/keyboard.qrc b/dcc-old/src/plugin-keyboard/operation/qrc/keyboard.qrc deleted file mode 100644 index 4ec5196bed..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/qrc/keyboard.qrc +++ /dev/null @@ -1,10 +0,0 @@ - - - icons/dcc_nav_keyboard_42px.svg - icons/dcc_nav_keyboard_84px.svg - - - icons/list_select@2x.png - icons/list_select.png - - diff --git a/dcc-old/src/plugin-keyboard/operation/shortcutmodel.cpp b/dcc-old/src/plugin-keyboard/operation/shortcutmodel.cpp deleted file mode 100644 index 5facfaeac1..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/shortcutmodel.cpp +++ /dev/null @@ -1,367 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "shortcutmodel.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -QStringList systemFilter = {"terminal", - "terminal-quake", - "global-search", - "screenshot", - "screenshot-delayed", - "screenshot-fullscreen", - "screenshot-window", - "screenshot-scroll", - "screenshot-ocr", - "deepin-screen-recorder", - "switch-group", - "switch-group-backward", - "preview-workspace", - "launcher", - "switch-applications", - "switch-applications-backward", - "show-desktop", - "file-manager", - "lock-screen", - "logout", - "wm-switcher", - "system-monitor", - "color-picker", - "clipboard", - "view-zoom-in", - "view-zoom-out", - "view-actual-size", -}; - -const QStringList &windowFilter = {"maximize", - "unmaximize", - "minimize", - "begin-move", - "begin-resize", - "close", - "toggle-to-left", - "toggle-to-right" -}; - -const QStringList &workspaceFilter = {"switch-to-workspace-left", - "switch-to-workspace-right", - "move-to-workspace-left", - "move-to-workspace-right"}; - -const QStringList &assistiveToolsFilter = {"ai-assistant", - "text-to-speech", - "speech-to-text", - "translation"}; - -using namespace DCC_NAMESPACE; -DCORE_USE_NAMESPACE -ShortcutModel::ShortcutModel(QObject *parent) - : QObject(parent) - , m_windowSwitchState(false) -{ - if (qApp->screens().count() > 1) { - systemFilter.append("switch-monitors"); - } -} - -ShortcutModel::~ShortcutModel() -{ - qDeleteAll(m_infos); - - m_infos.clear(); - m_systemInfos.clear(); - m_windowInfos.clear(); - m_workspaceInfos.clear(); - m_customInfos.clear(); - qDeleteAll(m_searchList); - m_searchList.clear(); -} - -QList ShortcutModel::systemInfo() const -{ - return m_systemInfos; -} - -QList ShortcutModel::windowInfo() const -{ - return m_windowInfos; -} - -QList ShortcutModel::workspaceInfo() const -{ - return m_workspaceInfos; -} - -QList ShortcutModel::assistiveToolsInfo() const -{ - return m_assistiveToolsInfos; -} - -QList ShortcutModel::customInfo() const -{ - return m_customInfos; -} - -QList ShortcutModel::infos() const -{ - return m_infos; -} - -void ShortcutModel::delInfo(ShortcutInfo *info) -{ - if (m_infos.contains(info)) { - m_infos.removeOne(info); - } - if (m_customInfos.contains(info)) { - m_customInfos.removeOne(info); - } - - delete info; - info = nullptr; -} - -void ShortcutModel::onParseInfo(const QString &info) -{ - QStringList systemShortKeys; - if (DSysInfo::UosServer == DSysInfo::uosType()) { - QStringList systemFilterServer = systemFilter; - systemFilterServer.removeOne("wm-switcher"); - systemFilterServer.removeOne("preview-workspace"); - systemShortKeys = systemFilterServer; - } else if (false == m_windowSwitchState) { - QStringList systemFilterServer = systemFilter; - systemFilterServer.removeOne("preview-workspace"); - systemShortKeys = systemFilterServer; - } else { - systemShortKeys = systemFilter; - } -#ifdef DISABLE_SCREEN_RECORDING - QStringList systemFilterServer = systemShortKeys; - systemFilterServer.removeOne("deepin-screen-recorder"); - systemShortKeys = systemFilterServer; -#endif - qDeleteAll(m_infos); - - m_infos.clear(); - m_systemInfos.clear(); - m_windowInfos.clear(); - m_workspaceInfos.clear(); - m_assistiveToolsInfos.clear(); - m_customInfos.clear(); - - QJsonArray array = QJsonDocument::fromJson(info.toStdString().c_str()).array(); - - Q_FOREACH (QJsonValue value, array) { - QJsonObject obj = value.toObject(); - int type = obj["Type"].toInt(); - - ShortcutInfo *info = new ShortcutInfo(); - info->type = type; - info->accels = obj["Accels"].toArray().first().toString(); - info->name = obj["Name"].toString(); - info->id = obj["Id"].toString(); - info->command = obj["Exec"].toString(); - - m_infos << info; - - if (type != MEDIAKEY) { - if (systemShortKeys.contains(info->id)) { - m_systemInfos << info; - continue; - } - if (windowFilter.contains(info->id)) { - m_windowInfos << info; - continue; - } - if (workspaceFilter.contains(info->id)) { - m_workspaceInfos << info; - continue; - } - if (assistiveToolsFilter.contains(info->id)) { - m_assistiveToolsInfos << info; - continue; - } - if (type == 1) { - m_customInfos << info; - } - } - } - - std::sort(m_systemInfos.begin(), m_systemInfos.end(), [ = ](ShortcutInfo *s1, ShortcutInfo *s2) { - return systemShortKeys.indexOf(s1->id) < systemShortKeys.indexOf(s2->id); - }); - - std::sort(m_windowInfos.begin(), m_windowInfos.end(), [ = ](ShortcutInfo *s1, ShortcutInfo *s2) { - return windowFilter.indexOf(s1->id) < windowFilter.indexOf(s2->id); - }); - - std::sort(m_workspaceInfos.begin(), m_workspaceInfos.end(), [ = ](ShortcutInfo *s1, ShortcutInfo *s2) { - return workspaceFilter.indexOf(s1->id) < workspaceFilter.indexOf(s2->id); - }); - - std::sort(m_assistiveToolsInfos.begin(), m_assistiveToolsInfos.end(), [ = ](ShortcutInfo *s1, ShortcutInfo *s2) { - return assistiveToolsFilter.indexOf(s1->id) < assistiveToolsFilter.indexOf(s2->id); - }); - - Q_EMIT listChanged(m_systemInfos, InfoType::System); - Q_EMIT listChanged(m_windowInfos, InfoType::Window); - Q_EMIT listChanged(m_workspaceInfos, InfoType::Workspace); - Q_EMIT listChanged(m_assistiveToolsInfos, InfoType::AssistiveTools); - Q_EMIT listChanged(m_customInfos, InfoType::Custom); -} - -void ShortcutModel::onCustomInfo(const QString &json) -{ - QJsonObject obj = QJsonDocument::fromJson(json.toStdString().c_str()).object(); - ShortcutInfo *info = new ShortcutInfo(); - info->type = obj["Type"].toInt(); - QString accels = obj["Accels"].toArray().at(0).toString(); - - info->accels = accels; - - info->name = obj["Name"].toString(); - info->id = obj["Id"].toString(); - info->command = obj["Exec"].toString(); - m_infos.append(info); - m_customInfos.append(info); - Q_EMIT addCustomInfo(info); -} - -void ShortcutModel::onKeyBindingChanged(const QString &value) -{ - const QJsonObject &obj = QJsonDocument::fromJson(value.toStdString().c_str()).object(); - const QString &update_id = obj["Id"].toString(); - auto res = std::find_if(m_infos.begin(), m_infos.end(), [ = ] (const ShortcutInfo *info)->bool{ - return info->id == update_id; - }); - - if (res != m_infos.end()) { - (*res)->type = obj["Type"].toInt(); - (*res)->accels = obj["Accels"].toArray().first().toString(); - (*res)->name = obj["Name"].toString(); - (*res)->command = obj["Exec"].toString(); - - Q_EMIT shortcutChanged((*res)); - } -} - -void ShortcutModel::onWindowSwitchChanged(bool value) -{ - if (m_windowSwitchState != value) { - m_windowSwitchState = value; - } -} - - bool ShortcutModel::getWindowSwitch() - { - return m_windowSwitchState; - } - -ShortcutInfo *ShortcutModel::currentInfo() const -{ - return m_currentInfo; -} - -void ShortcutModel::setCurrentInfo(ShortcutInfo *currentInfo) -{ - m_currentInfo = currentInfo; -} - -ShortcutInfo *ShortcutModel::getInfo(const QString &shortcut) -{ - auto res = std::find_if(m_infos.begin(), m_infos.end(), [ = ] (const ShortcutInfo *info)->bool{ - return !QString::compare(info->accels, shortcut, Qt::CaseInsensitive); //判断是否相等,相等则返回0 - }); - - if (res != m_infos.end()) { - return *res; - } - - return nullptr; -} - -void ShortcutModel::setSearchResult(const QString &searchResult) -{ - qDeleteAll(m_searchList); - m_searchList.clear(); - - QList systemInfoList; - QList windowInfoList; - QList workspaceInfoList; - QList customInfoList; - QList speechInfoList; - - QJsonArray array = QJsonDocument::fromJson(searchResult.toStdString().c_str()).array(); - for (auto value : array) { - QJsonObject obj = value.toObject(); - int type = obj["Type"].toInt(); - ShortcutInfo *info = new ShortcutInfo(); - info->type = type; - info->accels = obj["Accels"].toArray().first().toString(); - info->name = obj["Name"].toString(); - info->id = obj["Id"].toString(); - info->command = obj["Exec"].toString(); - - if (type != MEDIAKEY) { - if (systemFilter.contains(info->id)) { - systemInfoList << info; - continue; - } - if (windowFilter.contains(info->id)) { - windowInfoList << info; - continue; - } - if (workspaceFilter.contains(info->id)) { - workspaceInfoList << info; - continue; - } - if (assistiveToolsFilter.contains(info->id)) { - speechInfoList << info; - continue; - } - - if (type == 1) { - customInfoList << info; - }else{ - delete info; - info = nullptr; - } - - } else { - qDebug() << "not search is:" << info->name; - delete info; - info = nullptr; - } - } - - std::sort(systemInfoList.begin(), systemInfoList.end(), [ = ](ShortcutInfo *s1, ShortcutInfo *s2) { - return systemFilter.indexOf(s1->id) < systemFilter.indexOf(s2->id); - }); - std::sort(windowInfoList.begin(), windowInfoList.end(), [ = ](ShortcutInfo *s1, ShortcutInfo *s2) { - return windowFilter.indexOf(s1->id) < windowFilter.indexOf(s2->id); - }); - std::sort(workspaceInfoList.begin(), workspaceInfoList.end(), [ = ](ShortcutInfo *s1, ShortcutInfo *s2) { - return workspaceFilter.indexOf(s1->id) < workspaceFilter.indexOf(s2->id); - }); - m_searchList.append(systemInfoList); - m_searchList.append(windowInfoList); - m_searchList.append(workspaceInfoList); - m_searchList.append(speechInfoList); - m_searchList.append(customInfoList); - int i = 0; - for (auto search : m_searchList) { - qDebug() << "search" << ++i << " is: " << search->name; - } - - Q_EMIT searchFinished(m_searchList); -} diff --git a/dcc-old/src/plugin-keyboard/operation/shortcutmodel.h b/dcc-old/src/plugin-keyboard/operation/shortcutmodel.h deleted file mode 100644 index 75d6027a85..0000000000 --- a/dcc-old/src/plugin-keyboard/operation/shortcutmodel.h +++ /dev/null @@ -1,104 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef SHORTCUTMODEL_H -#define SHORTCUTMODEL_H - -#define MEDIAKEY 2 - -#include "interface/namespace.h" -#include - -namespace DCC_NAMESPACE { - -class ShortcutItem; -struct ShortcutInfo -{ - QString accels; - QString id; - QString name; - QString command; - int type; - ShortcutInfo *replace = nullptr; - ShortcutItem *item = nullptr; - - ShortcutInfo() - : type(0) - , replace(nullptr) - , item(nullptr) - { - } - bool operator==(const ShortcutInfo &info) const - { - return id == info.id && type == info.type; - } - - QString toString() - { - return name + accels + command + id + QString::number(type); - } -}; - -typedef QList ShortcutInfoList; - -class ShortcutModel : public QObject -{ - Q_OBJECT -public: - explicit ShortcutModel(QObject *parent = nullptr); - ~ShortcutModel(); - enum InfoType { - System, - Custom, - Media, - Window, - Workspace, - AssistiveTools, - }; - - QList systemInfo() const; - QList windowInfo() const; - QList workspaceInfo() const; - QList assistiveToolsInfo() const; - QList customInfo() const; - QList infos() const; - - void delInfo(ShortcutInfo *info); - - ShortcutInfo *currentInfo() const; - void setCurrentInfo(ShortcutInfo *currentInfo); - - ShortcutInfo *getInfo(const QString &shortcut); - void setSearchResult(const QString &searchResult); - bool getWindowSwitch(); -Q_SIGNALS: - void listChanged(QList, InfoType); - void addCustomInfo(ShortcutInfo *info); - void shortcutChanged(ShortcutInfo *info); - void keyEvent(bool press, const QString &shortcut); - void searchFinished(const QList searchResult); - void windowSwitchChanged(bool value); - -public Q_SLOTS: - void onParseInfo(const QString &info); - void onCustomInfo(const QString &json); - void onKeyBindingChanged(const QString &value); - void onWindowSwitchChanged(bool value); - -private: - QString m_info; - QList m_infos; - QList m_systemInfos; - QList m_windowInfos; - QList m_workspaceInfos; - QList m_assistiveToolsInfos; - QList m_customInfos; - QList m_searchList; - ShortcutInfo *m_currentInfo = nullptr; - bool m_windowSwitchState; - //dcc::display::DisplayModel m_dis; -}; - -} -#endif // SHORTCUTMODEL_H diff --git a/dcc-old/src/plugin-keyboard/window/KeyboardPlugin.json b/dcc-old/src/plugin-keyboard/window/KeyboardPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-keyboard/window/KeyboardPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-keyboard/window/customcontentdialog.cpp b/dcc-old/src/plugin-keyboard/window/customcontentdialog.cpp deleted file mode 100644 index c7cb7c4f5b..0000000000 --- a/dcc-old/src/plugin-keyboard/window/customcontentdialog.cpp +++ /dev/null @@ -1,216 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "customcontentdialog.h" -#include "operation/keyboardwork.h" -#include "operation/shortcutmodel.h" -#include "operation/keyboardmodel.h" -#include "customitem.h" -#include "widgets/buttontuple.h" -#include "widgets/lineeditwidget.h" -#include "widgets/settingsgroup.h" - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -CustomContentDialog::CustomContentDialog(ShortcutModel *model, QWidget *parent) - : DAbstractDialog(parent) - , m_shortCutNameEdit(new DLineEdit(this)) - , m_shortCutCmdEdit(new DFileChooserEdit(this)) - , m_conflict(nullptr) - , m_model(model) - , m_buttonTuple(new ButtonTuple(ButtonTuple::Save, this)) -{ - setFixedSize(QSize(400, 388)); - QVBoxLayout *mainVLayout = new QVBoxLayout(); - mainVLayout->setContentsMargins(0, 0, 0, 5); - mainVLayout->setSpacing(0); - - QVBoxLayout *listVLayout = new QVBoxLayout(); - listVLayout->setAlignment(Qt::AlignHCenter); - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("")); - - mainVLayout->addWidget(titleIcon); - - QLabel *shortCutTitle = new QLabel(tr("Add Custom Shortcut")); - DFontSizeManager::instance()->bind(shortCutTitle, DFontSizeManager::T5, QFont::DemiBold); // 设置label字体 - shortCutTitle->setAlignment(Qt::AlignCenter); - listVLayout->addWidget(shortCutTitle); - listVLayout->addSpacing(30); - - QLabel *shortCutName = new QLabel(tr("Name")); - QHBoxLayout *shortCutNameLayout = new QHBoxLayout; - shortCutNameLayout->addWidget(shortCutName); - shortCutNameLayout->setContentsMargins(10, 0, 0, 0); - listVLayout->addLayout(shortCutNameLayout); - - m_shortCutNameEdit->lineEdit()->setPlaceholderText(tr("Required")); - connect(m_shortCutNameEdit, &DLineEdit::textChanged, this, [this] { - if (!m_shortCutNameEdit->text().isEmpty()) { - m_shortCutNameEdit->setAlert(false); - } - }); - - listVLayout->addWidget(m_shortCutNameEdit); - listVLayout->addSpacing(4); - - QLabel *shortCutCmd = new QLabel(tr("Command")); - QHBoxLayout *shortCutCmdLayout = new QHBoxLayout; - shortCutCmdLayout->addWidget(shortCutCmd); - shortCutCmdLayout->setContentsMargins(10, 0, 0, 0); - listVLayout->addLayout(shortCutCmdLayout); - - // TODO: DFileChooserEdit控件包含有button按钮,点击触发QFileDialog文件弹窗,其为exec模态显示。 - // 该显示方式方式会触发程序异常崩溃,具体详情为当控制中心存在exec()模态显示的对话框界面时,若通过dbus调用切换菜单时,会导致程序崩溃。 - // 模态对话框处于事件监听阻塞状态没有被主动关闭,此时触发切换其他界面则会使阻塞的模态对话框关闭异常而导致程序崩溃。 - // 目前该DFileChooserEdit控件类会触发上诉所描述问题,暂时未解决,待后续完善。。 - m_shortCutCmdEdit->lineEdit()->setPlaceholderText(tr("Required")); - m_shortCutNameEdit->setAccessibleName("SHORTCUT_NAME_EDIT"); - m_shortCutCmdEdit->setAccessibleName("SHORTCUT_CMD_EDIT"); - - connect(m_shortCutCmdEdit, &DFileChooserEdit::textChanged, this, [this] { - if (!m_shortCutCmdEdit->text().isEmpty()) { - m_shortCutCmdEdit->setAlert(false); - } - }); - - connect(m_shortCutNameEdit, &DFileChooserEdit::textChanged, this, [this] { - bool exist = false; - QList lstInfo; - lstInfo.append(m_model->customInfo()); - lstInfo.append(m_model->assistiveToolsInfo()); - lstInfo.append(m_model->systemInfo()); - lstInfo.append(m_model->workspaceInfo()); - for (auto info : lstInfo) { - if (!info->name.compare(m_shortCutNameEdit->text(),Qt::CaseSensitive)) { - exist = true; - break; - } - } - m_buttonTuple->rightButton()->setEnabled(!exist); - }); - - listVLayout->addWidget(m_shortCutCmdEdit); - listVLayout->addSpacing(15); - - m_shortcut = new CustomItem; - m_shortcut->setShortcut(""); - m_shortcut->addBackground(); - - listVLayout->addWidget(m_shortcut); - - QPushButton *cancel = m_buttonTuple->leftButton(); - cancel->setText(tr("Cancel")); - QPushButton *ok = m_buttonTuple->rightButton(); - ok->setText(tr("Add")); - - m_bottomTip = new QLabel(); - m_bottomTip->setWordWrap(true); - m_bottomTip->hide(); - - listVLayout->addStretch(); - listVLayout->addWidget(m_buttonTuple); - listVLayout->addWidget(m_bottomTip); - listVLayout->setContentsMargins(20, 10, 20, 10); - - mainVLayout->addLayout(listVLayout); - setLayout(mainVLayout); - setContentsMargins(0, 0, 0, 0); - - connect(cancel, &QPushButton::clicked, this, &CustomContentDialog::close); - connect(ok, &QPushButton::clicked, this, &CustomContentDialog::onShortcut); - connect(m_shortcut, &CustomItem::requestUpdateKey, this, &CustomContentDialog::updateKey); - connect(model, &ShortcutModel::keyEvent, this, &CustomContentDialog::keyEvent); - connect(m_shortcut, &CustomItem::changeAlert, this, [this] { - m_shortcut->setAlert(false); - }); -} - -void CustomContentDialog::keyPressEvent(QKeyEvent *e) { - switch (e->key()) { - case Qt::Key_Enter: - case Qt::Key_Return: { - m_buttonTuple->rightButton()->click(); - return; - } - } - - DAbstractDialog::keyReleaseEvent(e); -} - -void CustomContentDialog::setBottomTip(ShortcutInfo *conflict) -{ - m_conflict = conflict; - if (conflict) { - QString accels = conflict->accels; - accels = accels.replace("<", ""); - accels = accels.replace(">", "+"); - accels = accels.replace("_L", ""); - accels = accels.replace("_R", ""); - accels = accels.replace("Control", "Ctrl"); - - QString str = tr("This shortcut conflicts with %1, click on Add to make this shortcut effective immediately") - .arg(QString("%1 %2").arg(conflict->name).arg(QString("[%1]").arg(accels))); - m_bottomTip->setText(str); - m_bottomTip->show(); - } else { - m_bottomTip->clear(); - m_bottomTip->hide(); - } -} - -void CustomContentDialog::onShortcut() -{ - m_shortCutNameEdit->setAlert(m_shortCutNameEdit->text().isEmpty()); - m_shortCutCmdEdit->setAlert(m_shortCutCmdEdit->lineEdit()->text().isEmpty()); - m_shortcut->setAlert(m_shortcut->text().isEmpty()); - - if (m_shortcut->text().isEmpty() || m_shortCutCmdEdit->lineEdit()->text().isEmpty() || m_shortCutNameEdit->text().isEmpty()) { - return; - } - - if (m_conflict) - Q_EMIT requestForceSubs(m_conflict); - - Q_EMIT requestAddKey(m_shortCutNameEdit->text(), m_shortCutCmdEdit->text(), m_shortcut->text()); - accept(); -} - -void CustomContentDialog::keyEvent(bool press, const QString &shortcut) -{ - if (!press) { - if (shortcut.isEmpty() || shortcut == "BackSpace" || shortcut == "Delete") { - m_shortcut->setShortcut(""); - setBottomTip(nullptr); - return; - } - - // check conflict - ShortcutInfo *conflict = m_model->getInfo(shortcut); - setBottomTip(conflict); - } - - m_shortcut->setShortcut(shortcut); -} - -void CustomContentDialog::updateKey() -{ - Q_EMIT requestUpdateKey(nullptr); -} diff --git a/dcc-old/src/plugin-keyboard/window/customcontentdialog.h b/dcc-old/src/plugin-keyboard/window/customcontentdialog.h deleted file mode 100644 index f2872d303b..0000000000 --- a/dcc-old/src/plugin-keyboard/window/customcontentdialog.h +++ /dev/null @@ -1,55 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once -#include "interface/namespace.h" - -#include -#include -#include - -class QLabel; -DWIDGET_USE_NAMESPACE -namespace DCC_NAMESPACE { -class ShortcutModel; -struct ShortcutInfo; -class KeyboardWorker; -class CustomItem; - -class SettingsGroup; -class LineEditWidget; -class ButtonTuple; - -class CustomContentDialog : public DAbstractDialog -{ - Q_OBJECT -public: - explicit CustomContentDialog(ShortcutModel *model, QWidget *parent = nullptr); - void setBottomTip(ShortcutInfo *conflict); - -protected: - void keyPressEvent(QKeyEvent *e) override; - -Q_SIGNALS: - void requestAddKey(const QString &name, const QString &command, const QString &accels); - void requestUpdateKey(ShortcutInfo *info); - void requestForceSubs(ShortcutInfo *info); - void requestFrameAutoHide(const bool autoHide) const; - -public Q_SLOTS: - void onShortcut(); - void keyEvent(bool press, const QString &shortcut); - void updateKey(); - -private: - KeyboardWorker *m_work; - CustomItem *m_shortcut; - DTK_WIDGET_NAMESPACE::DLineEdit *m_shortCutNameEdit; - DTK_WIDGET_NAMESPACE::DFileChooserEdit *m_shortCutCmdEdit; - QLabel *m_bottomTip; - ShortcutInfo *m_conflict; - ShortcutModel *m_model; - ButtonTuple *m_buttonTuple; -}; -} diff --git a/dcc-old/src/plugin-keyboard/window/customedit.cpp b/dcc-old/src/plugin-keyboard/window/customedit.cpp deleted file mode 100644 index dab9657ae3..0000000000 --- a/dcc-old/src/plugin-keyboard/window/customedit.cpp +++ /dev/null @@ -1,179 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "customedit.h" -#include "customitem.h" -#include -#include -#include -#include - -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -CustomEdit::CustomEdit(ShortcutModel *model, QWidget *parent): - DAbstractDialog(parent), - m_model(model), - m_commandGroup(new SettingsGroup), - m_name(new LineEditWidget), - m_command(new LineEditWidget), - m_short(new CustomItem()), - m_tip(new QLabel), - m_conflict(nullptr) -{ - setFixedSize(QSize(400, 388)); - m_tip->setVisible(false); - m_tip->setWordWrap(true); - - QVBoxLayout *mainlayout = new QVBoxLayout; - QHBoxLayout *buttonlayout = new QHBoxLayout; - - mainlayout->setMargin(0); - buttonlayout->setMargin(0); - mainlayout->setSpacing(0); - buttonlayout->setSpacing(1); - - m_command->setPlaceholderText(tr("Required")); - DIconButton *pushbutton = new DIconButton(this); - pushbutton->setIcon(DStyleHelper(style()).standardIcon(DStyle::SP_SelectElement, nullptr)); - pushbutton->setBackgroundRole(QPalette::ColorRole::Highlight); - pushbutton->setIconSize(QSize(24, 24)); - m_command->addRightWidget(pushbutton); - - m_commandGroup->appendItem(m_name); - m_commandGroup->appendItem(m_command); - m_commandGroup->appendItem(m_short); - - QPushButton *cancelButton = new QPushButton(tr("Cancel")); - QPushButton *okButton = new QPushButton(tr("Save")); - - buttonlayout->addWidget(cancelButton); - buttonlayout->addWidget(okButton); - - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("")); - - mainlayout->addWidget(titleIcon); - mainlayout->addSpacing(10); - mainlayout->addWidget(m_commandGroup); - mainlayout->addWidget(m_tip); - mainlayout->addStretch(); - mainlayout->addLayout(buttonlayout); - mainlayout->setContentsMargins(20, 10, 20, 10); - - setLayout(mainlayout); - - connect(cancelButton, &QPushButton::clicked, this, &CustomEdit::reject); - connect(pushbutton, &DIconButton::clicked, this, &CustomEdit::onOpenFile); - connect(m_short, &CustomItem::requestUpdateKey, this, &CustomEdit::onUpdateKey); - connect(okButton, &QPushButton::clicked, this, &CustomEdit::onSaveAccels); - - connect(model, &ShortcutModel::keyEvent, this, &CustomEdit::keyEvent); -} - -void CustomEdit::setShortcut(ShortcutInfo *info) -{ - m_info = info; - - m_short->setTitle(tr("Shortcut")); - m_short->setShortcut(info->accels); - - m_name->setTitle(tr("Name")); - m_command->setTitle(tr("Command")); - - m_name->setText(m_info->name); - m_command->setText(m_info->command); -} - -void CustomEdit::setBottomTip(ShortcutInfo *conflict) -{ - m_conflict = conflict; - if (conflict) { - QString accels = conflict->accels; - accels = accels.replace("<", "["); - accels = accels.replace(">", "+"); - accels = accels.replace("_L",""); - accels = accels.replace("_R", ""); - accels = accels.replace("Control", "Ctrl"); - - QString str = tr("This shortcut conflicts with %1, click on Add to make this shortcut effective immediately") - .arg(QString("%1 %2").arg(conflict->name).arg(QString("[%1]").arg(accels))); - m_tip->setText(str); - m_tip->setVisible(true); - } else { - m_tip->setVisible(false); - } -} - -void CustomEdit::keyEvent(bool press, const QString &shortcut) -{ - m_short->setShortcut(shortcut); - - if (!press) { - - if (shortcut.isEmpty()) { - m_short->setShortcut(m_info->accels); - setBottomTip(nullptr); - return; - } - - if (shortcut == "BackSpace" || shortcut == "Delete") { - m_short->setShortcut(""); - setBottomTip(nullptr); - return; - } - - // check conflict - ShortcutInfo *info = m_model->getInfo(shortcut); - if (info && info != m_info && info->accels != m_info->accels) { - setBottomTip(info); - return; - } - setBottomTip(nullptr); - } -} - -void CustomEdit::onOpenFile() -{ - Q_EMIT requestFrameAutoHide(false); - - QString file = QFileDialog::getOpenFileName(this, "", "/usr/bin"); - m_command->setText(file); - - Q_EMIT requestFrameAutoHide(true); -} - -void CustomEdit::onSaveAccels() -{ - if (m_name->text().isEmpty()) - m_name->setIsErr(true); - - if (m_command->text().isEmpty()) - m_command->setIsErr(true); - - if (m_name->text().isEmpty() || m_command->text().isEmpty() || m_short->text().isEmpty()) - return; - - if (m_conflict) { - m_info->replace = m_conflict; - } - - m_info->name = m_name->text(); - m_info->command = m_command->text(); - m_info->accels = m_short->text(); - - Q_EMIT requestSaveShortcut(m_info); - - accept(); -} - -void CustomEdit::onUpdateKey() -{ - Q_EMIT requestUpdateKey(nullptr); -} diff --git a/dcc-old/src/plugin-keyboard/window/customedit.h b/dcc-old/src/plugin-keyboard/window/customedit.h deleted file mode 100644 index 11f59df334..0000000000 --- a/dcc-old/src/plugin-keyboard/window/customedit.h +++ /dev/null @@ -1,51 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef CUSTOMEDIT_H -#define CUSTOMEDIT_H - -#include "interface/namespace.h" -#include "widgets/settingsgroup.h" -#include "widgets/lineeditwidget.h" -#include "shortcutitem.h" -#include "operation/shortcutmodel.h" -#include -#include - -namespace DCC_NAMESPACE { -struct ShortcutInfo; -class CustomItem; -class CustomEdit : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit CustomEdit(ShortcutModel *model, QWidget *parent = nullptr); - void setShortcut(ShortcutInfo* info); - -Q_SIGNALS: - void requestUpdateKey(ShortcutInfo *info); - void requestSaveShortcut(ShortcutInfo *info); - void requestFrameAutoHide(const bool autoHide) const; - -public Q_SLOTS: - void setBottomTip(ShortcutInfo *conflict); - void keyEvent(bool press, const QString &shortcut); - -private Q_SLOTS: - void onOpenFile(); - void onSaveAccels(); - void onUpdateKey(); - -private: - ShortcutModel *m_model; - SettingsGroup *m_commandGroup; - LineEditWidget *m_name; - LineEditWidget *m_command; - CustomItem *m_short; - ShortcutInfo *m_info; - QLabel *m_tip; - ShortcutInfo *m_conflict; -}; -} - -#endif // CUSTOMEDIT_H diff --git a/dcc-old/src/plugin-keyboard/window/customitem.cpp b/dcc-old/src/plugin-keyboard/window/customitem.cpp deleted file mode 100644 index cd2035a83b..0000000000 --- a/dcc-old/src/plugin-keyboard/window/customitem.cpp +++ /dev/null @@ -1,110 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "customitem.h" - -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -CustomItem::CustomItem(QWidget *parent) - : SettingsItem(parent) - , isAlert(false) -{ - setMouseTracking(true); - QHBoxLayout *layout = new QHBoxLayout(); - layout->setContentsMargins(4, 4, 4, 4); - layout->setSpacing(2); - - m_title = new QLabel(); - m_title->setText(tr("Shortcut")); - m_title->setAlignment(Qt::AlignCenter); - - layout->addWidget(m_title); - layout->setAlignment(m_title, Qt::AlignLeft); - layout->addStretch(); - - m_shortKey = new ShortcutKey; - m_shortKey->setAccessibleName("SHORTCUT_KEY"); - layout->addWidget(m_shortKey); - m_shortKey->setTextList(QStringList()); - - m_shortcutEdit = new QLineEdit(this); - m_shortcutEdit->setReadOnly(true); - m_shortcutEdit->hide(); - m_shortcutEdit->installEventFilter(this); - m_shortcutEdit->setAccessibleName("SHORTCUT_EDIT"); - layout->addWidget(m_shortcutEdit); - - setLayout(layout); - setFixedHeight(36); - -} - -void CustomItem::setTitle(const QString &title) -{ - m_title->setText(title); -} - -void CustomItem::setShortcut(const QString &shortcut) -{ - m_accels = shortcut; - - QString list = shortcut; - list = list.replace("<", ""); - list = list.replace(">", "-"); - list = list.replace("_L", ""); - list = list.replace("_R", ""); - list = list.replace("Control", "Ctrl"); - - m_shortKey->setTextList(list.split("-")); - m_shortcutEdit->hide(); - m_shortKey->show(); - Q_EMIT changeAlert(); -} - -QString CustomItem::text() const -{ - return m_accels; -} - -void CustomItem::setAlert(bool isAlert) -{ - this->isAlert = isAlert; - update(); -} - -void CustomItem::mouseReleaseEvent(QMouseEvent *e) -{ - if (!m_shortcutEdit->isVisible() && m_shortKey->rect().contains(m_shortKey->mapFromParent(e->pos()))) { - m_shortKey->hide(); - m_shortcutEdit->clear(); - m_shortcutEdit->setFocus(); - m_shortcutEdit->show(); - m_shortcutEdit->setPlaceholderText(tr("Please enter a shortcut")); - - Q_EMIT requestUpdateKey(); - } else { - m_shortKey->show(); - m_shortcutEdit->hide(); - } -} - -void CustomItem::paintEvent(QPaintEvent *event) -{ - QPainter p(this); - if (isAlert) { - p.setPen(Qt::NoPen); - p.setBrush(QColor(241, 57, 50, qRound(0.15 * 255))); - const float Radius = 15.0f; - p.drawRoundedRect(rect(), int(Radius / rect().width() * 100), int(Radius / rect().height() * 100)); - } - QWidget::paintEvent(event); -} - diff --git a/dcc-old/src/plugin-keyboard/window/customitem.h b/dcc-old/src/plugin-keyboard/window/customitem.h deleted file mode 100644 index 5fb783ee09..0000000000 --- a/dcc-old/src/plugin-keyboard/window/customitem.h +++ /dev/null @@ -1,47 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef CUSTOMITEM_H -#define CUSTOMITEM_H - -#include -#include -#include - -#include "interface/namespace.h" -#include "shortcutitem.h" -#include "widgets/settingsitem.h" - -class ShortcutKey; - -namespace DCC_NAMESPACE { -class CustomItem : public SettingsItem -{ - Q_OBJECT -public: - explicit CustomItem(QWidget *parent = nullptr); - - void setTitle(const QString &title); - void setShortcut(const QString &shortcut); - void setAlert(bool isAlert); - QString text() const; - -Q_SIGNALS: - void requestUpdateKey(); - void changeAlert(); - -protected: - void mouseReleaseEvent(QMouseEvent *e) override; - void paintEvent(QPaintEvent *event) override; - -private: - QLabel *m_title; - QLineEdit *m_shortcutEdit; - QString m_accels; - ShortcutKey *m_shortKey; - bool isAlert; -}; -} - -#endif // CUSTOMITEM_H diff --git a/dcc-old/src/plugin-keyboard/window/generalkbsettingwidget.cpp b/dcc-old/src/plugin-keyboard/window/generalkbsettingwidget.cpp deleted file mode 100644 index 9c55546ef6..0000000000 --- a/dcc-old/src/plugin-keyboard/window/generalkbsettingwidget.cpp +++ /dev/null @@ -1,131 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "generalkbsettingwidget.h" -#include "widgets/dccslider.h" -#include "widgets/settingsgroup.h" -#include "widgets/titledslideritem.h" -#include "widgets/switchwidget.h" -#include "widgets/settingshead.h" -#include "widgets/settingsheaderitem.h" -#include "src/plugin-keyboard/operation/keyboardmodel.h" - -#include -#include -#include - - -#define GSETTINGS_NUMLOCK_ENABLE "keyboardGeneralNumlockEnable" -using namespace DCC_NAMESPACE; - -GeneralKBSettingWidget::GeneralKBSettingWidget(KeyboardModel *model, QWidget *parent) - : QWidget(parent) - , m_model(model) -{ - SettingsHead *systemHead = new SettingsHead(); - systemHead->setEditEnable(false); - systemHead->setTitle(tr("Keyboard Settings")); - systemHead->layout()->setContentsMargins(10, 0, 10, 0); - m_generalSettingsGrp = new SettingsGroup(); - m_generalSettingsGrp->appendItem(systemHead, SettingsGroup::NoneBackground); - TitledSliderItem *delayItem = new TitledSliderItem(tr("Repeat Delay")); - delayItem->setObjectName("RepeatDelay"); - m_delaySlider = delayItem->slider(); - m_delaySlider->setType(DCCSlider::Vernier); - m_delaySlider->setOrientation(Qt::Horizontal); - m_delaySlider->setRange(1, 7); - m_delaySlider->setTickInterval(1); - m_delaySlider->setPageStep(1); - m_delaySlider->setTickPosition(QSlider::TicksBelow); - QStringList delays; - delays << tr("Short") << "" << "" << "" << "" << ""; - delays << tr("Long"); - delayItem->setAnnotations(delays); - m_generalSettingsGrp->appendItem(delayItem); - TitledSliderItem *speedItem = new TitledSliderItem(tr("Repeat Rate")); - speedItem->setObjectName("RepeatRate"); - speedItem->setFocusPolicy(Qt::ClickFocus); - m_speedSlider = speedItem->slider(); - m_speedSlider->setType(DCCSlider::Vernier); - m_speedSlider->setOrientation(Qt::Horizontal); - m_speedSlider->setRange(1, 7); - m_speedSlider->setTickInterval(1); - m_speedSlider->setPageStep(1); - m_speedSlider->setTickPosition(QSlider::TicksBelow); - QStringList speeds; - speeds << tr("Slow") << "" << "" << "" << "" << ""; - speeds << tr("Fast"); - speedItem->setAnnotations(speeds); - - m_testArea = new DLineEdit(); - m_testArea->setFixedWidth(200); - m_testArea->lineEdit()->setPlaceholderText(tr("Test here")); - m_testArea->lineEdit()->setAlignment(Qt::AlignCenter); - m_testArea->setClearButtonEnabled(false); - DStyle::setFocusRectVisible(m_testArea->lineEdit(), false); - - auto pa = DPaletteHelper::instance()->palette(m_testArea); - pa.setColor(DPalette::Button, Qt::transparent); - DPaletteHelper::instance()->setPalette(m_testArea, pa); - - // adding extra stuff to speedItem - QVBoxLayout *speedItemLayout = qobject_cast(speedItem->layout()); - speedItemLayout->addSpacing(10); - speedItemLayout->addWidget(m_testArea); - speedItemLayout->setAlignment(m_testArea, Qt::AlignHCenter); - speedItemLayout->addSpacing(10); - speedItem->setFixedHeight(speedItemLayout->sizeHint().height()); - - m_generalSettingsGrp->appendItem(speedItem); - - m_numLock = new SwitchWidget; - m_numLock->setTitle(tr("Numeric Keypad")); - m_numLock->setObjectName("NumLock"); - m_generalSettingsGrp->appendItem(m_numLock); - - m_upper = new SwitchWidget(); - m_upper->setTitle(tr("Caps Lock Prompt")); - m_upper->setObjectName("Upper"); - m_generalSettingsGrp->appendItem(m_upper); - - m_contentLayout = new QVBoxLayout(); - m_contentLayout->setMargin(0); - m_contentLayout->addWidget(m_generalSettingsGrp); - m_contentLayout->addStretch(); - - setLayout(m_contentLayout); - setContentsMargins(0, 10, 0, 10); - - connect(m_delaySlider, &DCCSlider::valueChanged, this, &GeneralKBSettingWidget::requestKBDelayChanged); - connect(m_speedSlider, &DCCSlider::valueChanged, this, &GeneralKBSettingWidget::requestKBSpeedChanged); - connect(m_numLock, &SwitchWidget::checkedChanged, this, &GeneralKBSettingWidget::requestNumLockChanged); - connect(m_upper, &SwitchWidget::checkedChanged, this, &GeneralKBSettingWidget::requestCapsLockChanged); - - connect(m_model, &KeyboardModel::repeatDelayChanged, this, &GeneralKBSettingWidget::setDelayValue); - connect(m_model, &KeyboardModel::repeatIntervalChanged, this, &GeneralKBSettingWidget::setSpeedValue); - connect(m_model, &KeyboardModel::capsLockChanged, m_upper, &SwitchWidget::setChecked); - connect(m_model, &KeyboardModel::numLockChanged, m_numLock, &SwitchWidget::setChecked); - connect(m_testArea, &DLineEdit::focusChanged, this, [ = ] { - m_testArea->clear(); - m_testArea->update(); - }); - - setDelayValue(m_model->repeatDelay()); - setSpeedValue(m_model->repeatInterval()); - m_upper->setChecked(m_model->capsLock()); - m_numLock->setChecked(m_model->numLock()); -} - -void GeneralKBSettingWidget::setDelayValue(uint value) -{ - m_delaySlider->blockSignals(true); - m_delaySlider->setValue(static_cast(value)); - m_delaySlider->blockSignals(false); -} - -void GeneralKBSettingWidget::setSpeedValue(uint value) -{ - m_speedSlider->blockSignals(true); - m_speedSlider->setValue(static_cast(value)); - m_speedSlider->blockSignals(false); -} diff --git a/dcc-old/src/plugin-keyboard/window/generalkbsettingwidget.h b/dcc-old/src/plugin-keyboard/window/generalkbsettingwidget.h deleted file mode 100644 index 499a119725..0000000000 --- a/dcc-old/src/plugin-keyboard/window/generalkbsettingwidget.h +++ /dev/null @@ -1,48 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef GENERALKBSETTINGWIDGET_H -#define GENERALKBSETTINGWIDGET_H - -#include "interface/namespace.h" -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -namespace DCC_NAMESPACE { -class KeyboardModel; - -class SettingsGroup; -class SwitchWidget; -class DCCSlider; -class GLineEdit; - -class GeneralKBSettingWidget : public QWidget -{ - Q_OBJECT -public: - explicit GeneralKBSettingWidget(KeyboardModel *model, QWidget *parent = nullptr); -Q_SIGNALS: - void requestKBDelayChanged(const int value); - void requestKBSpeedChanged(const int value); - void requestNumLockChanged(const bool state); - void requestCapsLockChanged(const bool state); -private Q_SLOTS: - void setDelayValue(uint value); - void setSpeedValue(uint value); -private: - DCCSlider *m_delaySlider; - DCCSlider *m_speedSlider; - SwitchWidget *m_upper; - SwitchWidget *m_numLock; - SettingsGroup *m_generalSettingsGrp; - KeyboardModel *m_model; - QVBoxLayout *m_contentLayout; - DLineEdit *m_testArea; -}; -} -#endif // GENERALKBSETTINGWIDGET_H diff --git a/dcc-old/src/plugin-keyboard/window/indexmodel.cpp b/dcc-old/src/plugin-keyboard/window/indexmodel.cpp deleted file mode 100644 index d2cbdf1271..0000000000 --- a/dcc-old/src/plugin-keyboard/window/indexmodel.cpp +++ /dev/null @@ -1,66 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "indexmodel.h" -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -IndexModel::IndexModel(QObject *parent) - : QStandardItemModel(parent) -{ -} - -void IndexModel::setMetaData(const QList &datas) -{ - beginResetModel(); - m_datas = datas; - for (int i = 0; i < m_datas.size(); ++i) { - DStandardItem *item = new DStandardItem(m_datas[i].text()); - item->setData(QVariant::fromValue(m_datas[i]), KBLayoutRole); - appendRow(item); - } - endResetModel(); -} - -QList IndexModel::metaData() const -{ - return m_datas; -} - -int IndexModel::indexOf(const MetaData &md) -{ - int index = 0; - QList::iterator it = m_datas.begin(); - for (; it != m_datas.end(); ++it) { - if ((*it) == md && (*it).section()) { - return index; - } - index++; - } - - return -1; -} - -void IndexModel::setLetters(QList &letters) -{ - m_letters = letters; -} - -QList IndexModel::letters() const -{ - return m_letters; -} - -int IndexModel::rowCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - - return m_datas.count(); -} - -int IndexModel::getModelCount() -{ - return m_datas.count(); -} diff --git a/dcc-old/src/plugin-keyboard/window/indexmodel.h b/dcc-old/src/plugin-keyboard/window/indexmodel.h deleted file mode 100644 index 911dd57cca..0000000000 --- a/dcc-old/src/plugin-keyboard/window/indexmodel.h +++ /dev/null @@ -1,47 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INDEXMODEL_H -#define INDEXMODEL_H -#include "interface/namespace.h" -#include "operation/metadata.h" - -#include - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { - -class IndexModel : public QStandardItemModel -{ - Q_OBJECT - -public: - explicit IndexModel(QObject *parent = nullptr); - - void setMetaData(const QList &datas); - QList metaData() const; - int indexOf(const MetaData &md); - - void setLetters(QList &letters); - QList letters() const; - int getModelCount(); - -protected: - int rowCount(const QModelIndex &parent) const; -private: - QList m_datas; - QList m_letters; -public: - enum { - KBLayoutRole = Dtk::UserRole + 1, - }; -}; - -} -#endif // INDEXMODEL_H diff --git a/dcc-old/src/plugin-keyboard/window/indexview.cpp b/dcc-old/src/plugin-keyboard/window/indexview.cpp deleted file mode 100644 index 9679da70bd..0000000000 --- a/dcc-old/src/plugin-keyboard/window/indexview.cpp +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "indexview.h" -#include "indexmodel.h" -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -IndexView::IndexView(QWidget *parent) - :DListView(parent) -{ - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollMode(ScrollPerPixel); -} - -void IndexView::onClick(const QString &ch) -{ - IndexModel * model = qobject_cast(this->model()); - MetaData md; - md.setText(ch); - - int index = model->indexOf(md); - if(index != -1) { - scrollTo(model->index(index,0),QAbstractItemView::PositionAtTop); - } -} - -void IndexView::showEvent(QShowEvent *e) -{ - QVariant var = indexAt(QPoint(5,10)).data(); - MetaData md = var.value(); - if(md.pinyin().count() > 0) - m_section = md.pinyin().at(0).toUpper(); - - QListView::showEvent(e); -} - -void IndexView::scrollContentsBy(int dx, int dy) -{ - QVariant var = indexAt(QPoint(5,10)).data(); - MetaData md = var.value(); - if(md.pinyin().count() > 0) - m_section = md.pinyin().at(0).toUpper(); - - QListView::scrollContentsBy(dx,dy); -} diff --git a/dcc-old/src/plugin-keyboard/window/indexview.h b/dcc-old/src/plugin-keyboard/window/indexview.h deleted file mode 100644 index 738d07f334..0000000000 --- a/dcc-old/src/plugin-keyboard/window/indexview.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef INDEXVIEW_H -#define INDEXVIEW_H -#include "interface/namespace.h" -#include -#include - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE{ -class IndexView : public DListView -{ - Q_OBJECT - -public: - explicit IndexView(QWidget* parent = nullptr); - -public Q_SLOTS: - void onClick(const QString& ch); - -protected: - void showEvent(QShowEvent* e); - void scrollContentsBy(int dx, int dy); - -private: - QString m_section; - QLabel* m_label; -}; -} -#endif // INDEXVIEW_H diff --git a/dcc-old/src/plugin-keyboard/window/kblayoutsettingwidget.cpp b/dcc-old/src/plugin-keyboard/window/kblayoutsettingwidget.cpp deleted file mode 100644 index b9e61e6983..0000000000 --- a/dcc-old/src/plugin-keyboard/window/kblayoutsettingwidget.cpp +++ /dev/null @@ -1,263 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "kblayoutsettingwidget.h" - -#include "src/plugin-keyboard/operation/keyboardmodel.h" -#include "src/plugin-keyboard/window/keylabel.h" -#include "widgets/comboxwidget.h" -#include "widgets/settingsgroup.h" -#include "widgets/settingsitem.h" - -#include - -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; - -KBLayoutSettingWidget::KBLayoutSettingWidget(QWidget *parent) - : QWidget(parent) - , m_bEdit(false) - , m_kbLayoutListView(new KBLayoutListView(this)) - , m_addLayoutAction(nullptr) -{ - QVBoxLayout *mainLayout = new QVBoxLayout(); - QHBoxLayout *headLayout = new QHBoxLayout(); - - TitleLabel *headTitle = new TitleLabel(tr("Keyboard Layout")); - DFontSizeManager::instance()->bind(headTitle, - DFontSizeManager::T5, - QFont::DemiBold); // 设置label字体 - headLayout->addWidget(headTitle); - headTitle->setContentsMargins(10, 0, 0, 0); - - m_editKBLayout = new DCommandLinkButton(tr("Edit")); - m_editKBLayout->setObjectName("Edit"); - headLayout->addStretch(); - headLayout->addWidget(m_editKBLayout); - mainLayout->addLayout(headLayout); - - m_kbLayoutModel = new QStandardItemModel(m_kbLayoutListView); - m_kbLayoutModel->setObjectName("KbLayoutModel"); - m_kbLayoutListView->setAccessibleName("List_kblayoutlist"); - m_kbLayoutListView->setObjectName("KbLayoutListView"); - m_kbLayoutListView->setModel(m_kbLayoutModel); - - DStandardItem *footItem = new DStandardItem(tr("Add Keyboard Layout") + "..."); - footItem->setTextColorRole(DPalette::Highlight); - m_kbLayoutModel->appendRow(footItem); - - QMargins itemMargins(m_kbLayoutListView->itemMargins()); - itemMargins.setLeft(10); - m_kbLayoutListView->setItemMargins(itemMargins); - m_kbLayoutListView->setContentsMargins(0, 0, 0, 0); - mainLayout->addWidget(m_kbLayoutListView); - mainLayout->setAlignment(Qt::AlignTop); - mainLayout->setSpacing(10); - mainLayout->setContentsMargins(0, 0, 0, 0); - setLayout(mainLayout); - - connect(m_editKBLayout, &QPushButton::clicked, this, &KBLayoutSettingWidget::onEditClicked); - connect(m_kbLayoutListView, - &DListView::clicked, - this, - &KBLayoutSettingWidget::onKBLayoutChanged); - connect(m_kbLayoutListView, - &KBLayoutListView::currentChangedSignal, - this, - &KBLayoutSettingWidget::onKBCurrentChanged); -} - -void KBLayoutSettingWidget::setModel(KeyboardModel *model) -{ - m_model = model; - - connect(model, &KeyboardModel::userLayoutChanged, this, &KBLayoutSettingWidget::onAddKeyboard); - connect(model, &KeyboardModel::curLayoutChanged, this, &KBLayoutSettingWidget::onDefault); - - QMap map = model->userLayout(); - - for (auto i(map.begin()); i != map.end(); ++i) { - onAddKeyboard(i.key(), i.value()); - } -} - -void KBLayoutSettingWidget::onUpdateKBLayoutList() -{ - QMap map = m_model->userLayout(); - - for (auto i(map.begin()); i != map.end(); ++i) { - onAddKeyboard(i.key(), i.value()); - } - - m_bEdit = true; - onEditClicked(); -} - -void KBLayoutSettingWidget::onAddKeyboard(const QString &id, const QString &value) -{ - if (m_kbLangList.contains(id)) - return; - DStandardItem *kbLayoutItem = new DStandardItem(value); - kbLayoutItem->setData(id, KBLangIdRole); - // 去除最后一个item - DStandardItem *endItem = nullptr; - if (m_kbLayoutModel->rowCount() > 0) { - endItem = dynamic_cast( - m_kbLayoutModel->takeItem(m_kbLayoutModel->rowCount() - 1, 0)); - m_kbLayoutModel->removeRow(m_kbLayoutModel->rowCount() - 1); - } - - // 按用户键盘布局列表顺序显示 - int index = 0; - for (int i = m_kbLayoutModel->rowCount() - 1; i >= 0; --i) { - DStandardItem *item = dynamic_cast(m_kbLayoutModel->item(i, 0)); - if (item == nullptr) { - return; - } - if (m_model->getUserLayoutList().indexOf(id) - > m_model->getUserLayoutList().indexOf(item->data(KBLangIdRole).toString())) { - index = i + 1; - break; - } - } - m_kbLayoutModel->insertRow(index, kbLayoutItem); - m_kbLangList << id; - - // 添加最后一个item - if (endItem != nullptr) { - m_kbLayoutModel->appendRow(endItem); - } - - m_editKBLayout->setVisible(m_kbLangList.size() > 1); - - onDefault(m_model->curLayout()); - m_kbLayoutListView->adjustSize(); - m_kbLayoutListView->update(); -} - -void KBLayoutSettingWidget::onEditClicked() -{ - if (m_kbLangList.count() < 2) { - return; - } - m_bEdit = !m_bEdit; - if (m_bEdit) { - m_editKBLayout->setText(tr("Done")); - int row_count = m_kbLayoutModel->rowCount(); - for (int i = 0; i < row_count - 1; ++i) { - DStandardItem *item = dynamic_cast(m_kbLayoutModel->item(i, 0)); - if (item && (item->checkState() == Qt::Unchecked)) { - creatDelIconAction(item); - } - } - } else { - m_editKBLayout->setText(tr("Edit")); - int row_count = m_kbLayoutModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - DStandardItem *item = dynamic_cast(m_kbLayoutModel->item(i, 0)); - if (item && (item->checkState() == Qt::Unchecked)) { - item->setActionList(Qt::RightEdge, {}); - } - } - } -} - -void KBLayoutSettingWidget::onDefault(const QString &value) -{ - int row_count = m_kbLayoutModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - DStandardItem *item = dynamic_cast(m_kbLayoutModel->item(i, 0)); - if (item && (item->text() == value)) { - item->setCheckState(Qt::Checked); - if (m_bEdit) { - item->setActionList(Qt::RightEdge, {}); - } - // 滚动到当前选中项 - onKBCurrentChanged(m_kbLayoutModel->index(i, 0)); - } else { - item->setCheckState(Qt::Unchecked); - if (m_bEdit) { - creatDelIconAction(item); - } - } - } -} - -void KBLayoutSettingWidget::creatDelIconAction(DStandardItem *item) -{ - DViewItemAction *iconAction = - new DViewItemAction(Qt::AlignCenter | Qt::AlignRight, QSize(), QSize(), true); - iconAction->setIcon(DStyle::standardIcon(style(), DStyle::SP_DeleteButton)); - item->setActionList(Qt::RightEdge, { iconAction }); - connect(iconAction, &DViewItemAction::triggered, this, [this, item] { - m_kbLangList.removeOne(item->data(KBLangIdRole).toString()); - int idx = m_kbLayoutModel->indexFromItem(item).row(); - Q_EMIT delUserLayout(item->text()); - m_kbLayoutModel->removeRow(idx); - m_kbLayoutListView->adjustSize(); - m_kbLayoutListView->update(); - m_editKBLayout->setVisible(m_kbLangList.size() > 1); - }); -} - -void KBLayoutSettingWidget::onKBLayoutChanged(const QModelIndex &index) -{ - if (index.row() == m_kbLayoutListView->count() - 1) { - onLayoutAdded(); - return; - } - if (m_bEdit) { - return; - } - int row_count = m_kbLayoutModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - QStandardItem *item = m_kbLayoutModel->item(i, 0); - if (item && (index.row() == i)) { - item->setCheckState(Qt::Checked); - Q_EMIT requestCurLayoutAdded(item->text()); - } else if (item) { - item->setCheckState(Qt::Unchecked); - } - } -} - -void KBLayoutSettingWidget::onKBCurrentChanged(const QModelIndex ¤t) -{ - if (current.row() == m_kbLayoutListView->count() - 1) { - return; - } - QSize itemSize = m_kbLayoutListView->itemDelegate()->sizeHint(QStyleOptionViewItem(), current); - int top = current.row() * (itemSize.height() + m_kbLayoutModel->span(current).height()); - - QRect visibleRect = m_kbLayoutListView->visibleRegion().boundingRect(); - QRect itemRect(0, top, visibleRect.width(), itemSize.height()); - - if (!visibleRect.contains(itemRect)) { - if (visibleRect.bottom() < itemRect.bottom()) { - // m_contentWidget->scrollTo(itemRect.bottom() - visibleRect.bottom()); - } else { - // m_contentWidget->scrollTo(itemRect.top() - visibleRect.top()); - } - } -} - -void KBLayoutSettingWidget::onLayoutAdded() -{ - m_bEdit = false; - - m_editKBLayout->setText(tr("Edit")); - int row_count = m_kbLayoutModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - DStandardItem *item = dynamic_cast(m_kbLayoutModel->item(i, 0)); - if (item && (item->checkState() == Qt::Unchecked)) { - item->setActionList(Qt::RightEdge, {}); - } - } - - Q_EMIT layoutAdded(m_kbLangList); -} diff --git a/dcc-old/src/plugin-keyboard/window/kblayoutsettingwidget.h b/dcc-old/src/plugin-keyboard/window/kblayoutsettingwidget.h deleted file mode 100644 index 75971462d0..0000000000 --- a/dcc-old/src/plugin-keyboard/window/kblayoutsettingwidget.h +++ /dev/null @@ -1,83 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef KBLAYOUTSETTINGWIDGET_H -#define KBLAYOUTSETTINGWIDGET_H - -#include "dcclistview.h" -#include "interface/namespace.h" -#include "widgets/titlelabel.h" - -#include -#include -#include -#include - -#include -#include - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { -class KeyboardModel; -class SearchInput; -class ComboxWidget; - -class KBLayoutListView : public DCCListView -{ - Q_OBJECT -public: - explicit KBLayoutListView(QWidget *parent = nullptr) - : DCCListView(parent) - { - setSpacing(0); - } - -Q_SIGNALS: - void currentChangedSignal(const QModelIndex ¤t); - -protected: - void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override - { - DListView::currentChanged(current, previous); - Q_EMIT currentChangedSignal(current); - } -}; - -class KBLayoutSettingWidget : public QWidget -{ - Q_OBJECT -public: - explicit KBLayoutSettingWidget(QWidget *parent = nullptr); - void setModel(KeyboardModel *model); - void creatDelIconAction(DStandardItem *item); - -Q_SIGNALS: - void layoutAdded(const QStringList &kblist); - void requestCurLayoutAdded(const QString &value); - void curLang(const QString &value); - void delUserLayout(const QString &value); - -public Q_SLOTS: - void onAddKeyboard(const QString &id, const QString &value); - void onEditClicked(); - void onDefault(const QString &value); - void onKBLayoutChanged(const QModelIndex &index); - void onKBCurrentChanged(const QModelIndex ¤t); - void onLayoutAdded(); - void onUpdateKBLayoutList(); - -private: - bool m_bEdit = false; - QStringList m_kbLangList; - KeyboardModel *m_model; - KBLayoutListView *m_kbLayoutListView; - DCommandLinkButton *m_editKBLayout; - QStandardItemModel *m_kbLayoutModel; - DViewItemAction *m_addLayoutAction; - -private: - enum { SwitchValueRole = Dtk::UserRole + 1, KBLangIdRole }; -}; -} // namespace DCC_NAMESPACE -#endif // KBLAYOUTSETTINGWIDGET_H diff --git a/dcc-old/src/plugin-keyboard/window/keyboardlayoutdialog.cpp b/dcc-old/src/plugin-keyboard/window/keyboardlayoutdialog.cpp deleted file mode 100644 index 26d00d90dc..0000000000 --- a/dcc-old/src/plugin-keyboard/window/keyboardlayoutdialog.cpp +++ /dev/null @@ -1,229 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "keyboardlayoutdialog.h" -#include "widgets/settingsgroup.h" -#include "widgets/settingsitem.h" - -#include -#include -#include -#include -#include - -#include -#include - -using namespace DCC_NAMESPACE; -KeyboardLayoutDialog::KeyboardLayoutDialog(QWidget *parent) - : DAbstractDialog(parent) - , textLength(0) - , searchStatus(false) - , m_buttonTuple(new ButtonTuple(ButtonTuple::Save)) -{ - setFixedSize(QSize(500, 644)); - QHBoxLayout *hlayout = new QHBoxLayout(); - hlayout->setMargin(0); - hlayout->setSpacing(0); - - m_searchModel = new IndexModel(); - m_model = new IndexModel(); - m_view = new IndexView(); - - m_view->setAccessibleName("List_keyboardmenulist"); - m_view->setEditTriggers(QAbstractItemView::NoEditTriggers); - m_view->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - m_view->setSizeAdjustPolicy(QAbstractScrollArea::AdjustToContents); - m_view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_view->setSelectionMode(QAbstractItemView::NoSelection); - - QPushButton *cancel = m_buttonTuple->leftButton(); - cancel->setText(tr("Cancel")); - QPushButton *ok = m_buttonTuple->rightButton(); - ok->setText(tr("Add")); - ok->setEnabled(false); - - hlayout->addWidget(m_view); - - QLabel *headTitle = new QLabel(tr("Add Keyboard Layout")); - DFontSizeManager::instance()->bind(headTitle, DFontSizeManager::T5, QFont::DemiBold); // 设置label字体 - headTitle->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - headTitle->setAlignment(Qt::AlignCenter); - - m_search = new SearchInput(); - QVBoxLayout *mainVLayout = new QVBoxLayout(this); - QVBoxLayout *listVLayout = new QVBoxLayout(); - listVLayout->setAlignment(Qt::AlignHCenter); - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("")); - - listVLayout->addSpacing(10); - listVLayout->addWidget(m_search, Qt::AlignCenter); - listVLayout->addSpacing(10); - listVLayout->addLayout(hlayout); - listVLayout->addSpacing(10); - listVLayout->addWidget(m_buttonTuple, 0, Qt::AlignBottom); - listVLayout->setContentsMargins(20, 10, 20, 10); - - mainVLayout->setMargin(0); - mainVLayout->addWidget(titleIcon, Qt::AlignTop | Qt::AlignRight); - mainVLayout->addWidget(headTitle, Qt::AlignCenter); - mainVLayout->addLayout(listVLayout); - setLayout(mainVLayout); - setContentsMargins(0, 0, 0, 0); - installEventFilter(this); - - connect(m_search, SIGNAL(textChanged(QString)), this, SLOT(onSearch(QString))); - connect(cancel, &QPushButton::clicked, this, &KeyboardLayoutDialog::close); - connect(ok, &QPushButton::clicked, this, &KeyboardLayoutDialog::onAddKBLayout); - connect(m_view, &IndexView::clicked, this, &KeyboardLayoutDialog::onKBLayoutSelect); -} - -KeyboardLayoutDialog::~KeyboardLayoutDialog() -{ - m_searchModel->deleteLater(); - m_model->deleteLater(); -} - -void KeyboardLayoutDialog::onAddKBLayout() -{ - QVariant var; - MetaData md; - - if (searchStatus) { - var = m_selectSearchIndex.data(IndexModel::KBLayoutRole); - md = var.value(); - if (m_searchModel->letters().contains(md.text())) { - return; - } - } else { - var = m_selectIndex.data(IndexModel::KBLayoutRole); - md = var.value(); - if (m_model->letters().contains(md.text())) { - return; - } - } - - Q_EMIT layoutSelected(md.text()); - accept(); -} - -void KeyboardLayoutDialog::onKBLayoutSelect(const QModelIndex &index) -{ - if (searchStatus) { - setDataModel(m_searchModel, m_selectSearchIndex, index); - } else{ - setDataModel(m_model, m_selectIndex, index); - } -} - -void KeyboardLayoutDialog::setDataModel(IndexModel *model, QModelIndex &selectedIndex, const QModelIndex &index) { - - if (selectedIndex.isValid()) { - model->itemFromIndex(selectedIndex)->setCheckState(Qt::Unchecked); - } - - QStandardItem *selectItem = model->itemFromIndex(index); - - if (selectItem) { - bool addBtnEnabled = true; - QVariant var = index.data(IndexModel::KBLayoutRole); - MetaData md = var.value(); - if (md.text().isEmpty() || model->letters().contains(md.text())) { - addBtnEnabled = false; - } else { - selectItem->setCheckState(Qt::Checked); - selectedIndex = index; - } - m_buttonTuple->rightButton()->setEnabled(addBtnEnabled); - } -} - -void KeyboardLayoutDialog::setMetaData(const QList &datas) -{ - int count = datas.count(); - m_data.clear(); - for (int i = 0; i < count; i++) { - //当前key不为空,直接添加到list - if ("" != datas[i].key()) { - m_data.append(datas[i]); - } else { - //当前key为空,但是下一个key不为空(表示这是一个字母,如"H"),需要添加到list - //添加前要进行list数量判断, 需要满足 : i < count -1 - if ((i < count - 1) && ("" != datas[i + 1].key())) { - m_data.append(datas[i]); - } - } - } - - m_model->setMetaData(m_data); - m_view->setModel(m_model); -} - -void KeyboardLayoutDialog::setLetters(QList letters) -{ - QLocale locale; - if (locale.language() == QLocale::Chinese) { - //根据有效list,决定显示右边的索引 - QList validLetters; - //遍历有效list和letters list,遇到相同的就添加到新的valid letters list - for (auto value : m_data) { - for (auto letter : letters) { - if (value.text() == letter) { - validLetters.append(letter); - break; - } - } - } - m_model->setLetters(validLetters); - bool bVisible = m_model->getModelCount() > 1; - m_view->setVisible(bVisible); - } -} - -void KeyboardLayoutDialog::onSearch(const QString &text) -{ - if (text.length() == 0) { - searchStatus = false; - m_view->setModel(m_model); - } else { - searchStatus = true; - QList datas = m_model->metaData(); - QList::iterator it = datas.begin(); - QList sdatas; - for (; it != datas.end(); ++it) { - if ((*it).text().contains(text, Qt::CaseInsensitive)) { - if (!(*it).key().isEmpty()) { - sdatas.append(*it); - } - } - } - m_searchModel->clear(); - m_searchModel->setMetaData(sdatas); - m_view->setModel(m_searchModel); - m_buttonTuple->rightButton()->setEnabled(false); - } -} - -bool KeyboardLayoutDialog::eventFilter(QObject *watched, QEvent *event) -{ - Q_UNUSED(watched) - - if (event->type() != QEvent::Move && event->type() != QEvent::Resize) - return false; - - QRect rect = this->rect(); - - rect.moveTopLeft(-pos()); - rect.setHeight(window()->height() - mapTo(window(), rect.topLeft()).y()); - - QPainterPath path; - path.addRoundedRect(rect, 5, 5); - - return false; -} diff --git a/dcc-old/src/plugin-keyboard/window/keyboardlayoutdialog.h b/dcc-old/src/plugin-keyboard/window/keyboardlayoutdialog.h deleted file mode 100644 index 4d4ba96cdc..0000000000 --- a/dcc-old/src/plugin-keyboard/window/keyboardlayoutdialog.h +++ /dev/null @@ -1,60 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef KEYBOARDLAYOUTDIALOG_H -#define KEYBOARDLAYOUTDIALOG_H - -#include "interface/namespace.h" -#include "widgets/buttontuple.h" -#include "indexmodel.h" -#include "indexview.h" -#include "searchinput.h" - -#include -#include -#include - -#include - -class QLineEdit; - -DWIDGET_USE_NAMESPACE -namespace DCC_NAMESPACE{ - -class KeyboardLayoutDialog : public DAbstractDialog -{ - Q_OBJECT - -public: - explicit KeyboardLayoutDialog(QWidget *parent = nullptr); - ~KeyboardLayoutDialog(); - - void setDataModel(IndexModel *model, QModelIndex &selectedIndex, const QModelIndex &index); - void setMetaData(const QList& datas); - void setLetters(QList letters); - -protected: - bool eventFilter(QObject *watched, QEvent *event) override; - -Q_SIGNALS: - void layoutSelected(const QString &value); - -public Q_SLOTS: - void onSearch(const QString& text); - void onKBLayoutSelect(const QModelIndex &index); - void onAddKBLayout(); -private: - int textLength; - bool searchStatus; - SearchInput *m_search; - ButtonTuple *m_buttonTuple; - IndexView *m_view; - IndexModel *m_model; - IndexModel *m_searchModel; - DGraphicsClipEffect *m_clipEffectWidget; - QList m_data; - QModelIndex m_selectIndex; - QModelIndex m_selectSearchIndex; -}; -} -#endif // KEYBOARDLAYOUTDIALOG_H diff --git a/dcc-old/src/plugin-keyboard/window/keyboardmodule.cpp b/dcc-old/src/plugin-keyboard/window/keyboardmodule.cpp deleted file mode 100644 index bd5a707790..0000000000 --- a/dcc-old/src/plugin-keyboard/window/keyboardmodule.cpp +++ /dev/null @@ -1,281 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "keyboardmodule.h" -#include "customcontentdialog.h" -#include "generalkbsettingwidget.h" -#include "kblayoutsettingwidget.h" -#include "keyboardlayoutdialog.h" -#include "shortcutsettingwidget.h" -#ifndef DCC_DISABLE_LANUGAGE -#include "systemlanguagewidget.h" -#include "systemlanguagesettingdialog.h" -#endif -#include "widgets/settingshead.h" -#include "operation/keyboardwork.h" -#include "operation/keyboardmodel.h" -#include "operation/shortcutmodel.h" -#include "customedit.h" -#include "shortcutcontentdialog.h" -#include "widgets/widgetmodule.h" -#include "interface/pagemodule.h" - -#include -#include - -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -class KeyboardFloatingButton : public DFloatingButton -{ -public: - explicit KeyboardFloatingButton() - : DFloatingButton(nullptr) {} -}; - -QString KeyboardPlugin::name() const -{ - return QStringLiteral("keyboard"); -} - -ModuleObject *KeyboardPlugin::module() -{ - //一级菜单--键盘与语言 - KeyboardModule *moduleInterface = new KeyboardModule(); - moduleInterface->setName("keyboard"); - moduleInterface->setDisplayName(tr("Keyboard and Language")); - moduleInterface->setIcon(DIconTheme::findQIcon("dcc_nav_keyboard")); - - //二级菜单--键盘 - ModuleObject *moduleKeyBoard = new PageModule("keyboardGeneral", tr("Keyboard")); - - //为二级菜单-键盘添加children - GeneralSettingModule *generalSettingModule = new GeneralSettingModule(moduleInterface->model(), moduleInterface->worker()); - generalSettingModule->setName("keyboardSetting"); - generalSettingModule->setDescription(tr("Keyboard Settings")); - generalSettingModule->addContentText(tr("Keyboard Settings")); - moduleKeyBoard->appendChild(generalSettingModule); - //键盘布局 - KBLayoutSettingModule *kBLayoutSettingModule = new KBLayoutSettingModule(moduleInterface->model(), moduleInterface->worker()); - kBLayoutSettingModule->setName("keyboardLayout"); - kBLayoutSettingModule->setDisplayName(tr("keyboard Layout")); - kBLayoutSettingModule->setDescription(tr("Keyboard Layout")); - kBLayoutSettingModule->addContentText(tr("Keyboard Layout")); - - moduleKeyBoard->appendChild(kBLayoutSettingModule); - moduleInterface->appendChild(moduleKeyBoard); - -#ifndef DCC_DISABLE_LANUGAGE - //二级菜单--系统语言 - ModuleObject *moduleSystemLanguageSetting = new PageModule("keyboardLanguage", tr("Language")); - SystemLanguageSettingModule *systemLanguageSettingModule = new SystemLanguageSettingModule(moduleInterface->model(), moduleInterface->worker()); - moduleSystemLanguageSetting->appendChild(systemLanguageSettingModule); - moduleInterface->appendChild(moduleSystemLanguageSetting); -#endif - - //二级菜单--快捷键 - ShortCutSettingMenuModule *moduleShortCutSetting = new ShortCutSettingMenuModule("keyboardShortcuts", tr("Shortcuts")); - ShortCutSettingModule *shortCutSettingModule = new ShortCutSettingModule(moduleInterface->model(), moduleInterface->worker(), moduleInterface->shortcutModel()); - moduleShortCutSetting->appendChild(shortCutSettingModule); - ModuleObject *customShortcutModule = new WidgetModule("AddCustomShortCut","AddCustomShortCut",[shortCutSettingModule](KeyboardFloatingButton *customShortcut){ - customShortcut->setIcon(DStyle::SP_IncreaseElement); - customShortcut->setObjectName("AddCustomShortCut"); - connect(customShortcut, &DFloatingButton::clicked, shortCutSettingModule, &ShortCutSettingModule::onPushCustomShortcut); - }); - customShortcutModule->setExtra(); - moduleShortCutSetting->appendChild(customShortcutModule); - moduleInterface->appendChild(moduleShortCutSetting); - - return moduleInterface; -} - -QString KeyboardPlugin::location() const -{ - return "15"; -} - -KeyboardModule::KeyboardModule(QObject *parent) - : HListModule(parent) - , m_model(nullptr) - , m_shortcutModel(nullptr) - , m_work(nullptr) -{ - //公共功能可能泄露。在分配指针“m_model”之前未释放它,因此加了这个处理 - if (m_model) { - delete m_model; - } - m_model = new KeyboardModel(this); - m_shortcutModel = new ShortcutModel(this); - m_work = new KeyboardWorker(m_model,this); - - //注意初始化的顺序和时机 - m_work->setShortcutModel(m_shortcutModel); -} - -KeyboardModule::~KeyboardModule() -{ - delete m_shortcutModel; - m_model->deleteLater(); - m_work->deleteLater(); - - m_shortcutModel = nullptr; - m_model = nullptr; - m_work = nullptr; -} - -void KeyboardModule::active() -{ - m_work->active(); -} - -//page -QWidget *GeneralSettingModule::page() -{ - GeneralKBSettingWidget *w = new GeneralKBSettingWidget(m_model); - connect(w, &GeneralKBSettingWidget::requestKBDelayChanged, m_worker, &KeyboardWorker::setRepeatDelay); - connect(w, &GeneralKBSettingWidget::requestKBSpeedChanged, m_worker, &KeyboardWorker::setRepeatInterval); - connect(w, &GeneralKBSettingWidget::requestNumLockChanged, m_worker, &KeyboardWorker::setNumLock); - connect(w, &GeneralKBSettingWidget::requestCapsLockChanged, m_worker, &KeyboardWorker::setCapsLock); - return w; -} - -void KBLayoutSettingModule::onPushKeyboard(const QStringList &kblist) -{ - m_worker->onPinyin(); - KeyboardLayoutDialog *kbLayoutDialog = new KeyboardLayoutDialog(); - auto dataControll = [ = ](QList datas) { - for (auto it(datas.begin()); it != datas.end();) { - const MetaData &data = *it; - if (kblist.contains(data.key())) - it = datas.erase(it); - else - ++it; - } - - kbLayoutDialog->setMetaData(datas); - }; - - connect(m_worker, &KeyboardWorker::onDatasChanged, kbLayoutDialog, dataControll); - connect(m_worker, &KeyboardWorker::onLettersChanged, kbLayoutDialog, &KeyboardLayoutDialog::setLetters); - - dataControll(m_worker->getDatas()); - kbLayoutDialog->setLetters(m_worker->getLetters()); - - connect(kbLayoutDialog, &KeyboardLayoutDialog::layoutSelected, m_worker, &KeyboardWorker::addUserLayout); - kbLayoutDialog->setAttribute(Qt::WA_DeleteOnClose); - kbLayoutDialog->exec(); - -} - -void KBLayoutSettingModule::setCurrentLayout(const QString &value) -{ - m_worker->setLayout(m_model->userLayout().key(value)); -} - -QWidget *KBLayoutSettingModule::page() -{ - m_worker->onRefreshKBLayout(); - KBLayoutSettingWidget *w = new KBLayoutSettingWidget; - w->setModel(m_model); - connect(w, &KBLayoutSettingWidget::layoutAdded, this, &KBLayoutSettingModule::onPushKeyboard); - connect(w, &KBLayoutSettingWidget::requestCurLayoutAdded, this, &KBLayoutSettingModule::setCurrentLayout); - connect(w, &KBLayoutSettingWidget::delUserLayout, m_worker, &KeyboardWorker::delUserLayout); - w->setFocus(); - return w; -} - -#ifndef DCC_DISABLE_LANUGAGE -QWidget *SystemLanguageSettingModule::page() -{ - m_worker->refreshLang(); - SystemLanguageWidget *w = new SystemLanguageWidget(m_model); - w->setVisible(false); - connect(w, &SystemLanguageWidget::onSystemLanguageAdded, this, &SystemLanguageSettingModule::onPushSystemLanguageSetting); - connect(w, &SystemLanguageWidget::delLocalLang, m_worker, &KeyboardWorker::deleteLang); - connect(w, &SystemLanguageWidget::setCurLang, m_worker, &KeyboardWorker::setLang); - connect(m_model, &KeyboardModel::onSetCurLangFinish, w, &SystemLanguageWidget::onSetCurLang); - w->setVisible(true); - return w; -} - -void SystemLanguageSettingModule::onPushSystemLanguageSetting() -{ - SystemLanguageSettingDialog *systemLanguageSettingDialog = new SystemLanguageSettingDialog(m_model); - connect(systemLanguageSettingDialog, &SystemLanguageSettingDialog::click, this, &SystemLanguageSettingModule::onAddLocale); - systemLanguageSettingDialog->setAttribute(Qt::WA_DeleteOnClose); - systemLanguageSettingDialog->exec(); -} - -void SystemLanguageSettingModule::onAddLocale(const QModelIndex &index) -{ - QVariant var = index.data(SystemLanguageSettingDialog::KeyRole); - m_worker->addLang(var.toString()); -} -#endif - -QWidget *ShortCutSettingModule::page() -{ - m_worker->refreshShortcut(); - ShortCutSettingWidget *w = new ShortCutSettingWidget(m_shortcutModel); - connect(w, &ShortCutSettingWidget::delShortcutInfo, m_worker, &KeyboardWorker::delShortcut); - connect(w, &ShortCutSettingWidget::requestUpdateKey, m_worker, &KeyboardWorker::updateKey); - connect(w, &ShortCutSettingWidget::requestShowConflict, this, &ShortCutSettingModule::onPushConflict); - connect(w, &ShortCutSettingWidget::requestSaveShortcut, m_worker, &KeyboardWorker::modifyShortcutEdit); - connect(w, &ShortCutSettingWidget::requestDisableShortcut, m_worker, &KeyboardWorker::onDisableShortcut); - connect(w, &ShortCutSettingWidget::shortcutEditChanged, this, &ShortCutSettingModule::onShortcutEdit); - connect(w, &ShortCutSettingWidget::requestReset, m_worker, &KeyboardWorker::resetAll); - connect(w, &ShortCutSettingWidget::requestSearch, m_worker, &KeyboardWorker::onSearchShortcuts); - connect(m_worker, &KeyboardWorker::removed, w, &ShortCutSettingWidget::onRemoveItem); - connect(m_worker, &KeyboardWorker::searchChangd, w, &ShortCutSettingWidget::onSearchInfo); - connect(m_worker, &KeyboardWorker::onResetFinished, w, &ShortCutSettingWidget::onResetFinished); - w->setFocus(); - return w; -} - -void ShortCutSettingModule::onPushCustomShortcut() -{ - CustomContentDialog *content = new CustomContentDialog(m_shortcutModel, qobject_cast(sender())); - connect(content, &CustomContentDialog::requestUpdateKey, m_worker, &KeyboardWorker::updateKey); - connect(content, &CustomContentDialog::requestAddKey, m_worker, &KeyboardWorker::addCustomShortcut); - connect(content, &CustomContentDialog::requestForceSubs, m_worker, &KeyboardWorker::onDisableShortcut); - content->setAttribute(Qt::WA_DeleteOnClose); - content->exec(); -} - -void ShortCutSettingModule::onPushConflict(ShortcutInfo *info, const QString &shortcut) -{ - ShortcutContentDialog *scContentDialog = new ShortcutContentDialog(m_shortcutModel); - - scContentDialog->setInfo(info); - scContentDialog->setShortcut(shortcut); - scContentDialog->setBottomTip(m_shortcutModel->getInfo(shortcut)); - - connect(scContentDialog, &ShortcutContentDialog::requestSaveShortcut, m_worker, &KeyboardWorker::modifyShortcutEdit); - connect(scContentDialog, &ShortcutContentDialog::requestUpdateKey, m_worker, &KeyboardWorker::updateKey); - connect(scContentDialog, &ShortcutContentDialog::requestDisableShortcut, m_worker, &KeyboardWorker::onDisableShortcut); - - scContentDialog->setAttribute(Qt::WA_DeleteOnClose); - scContentDialog->exec(); -} - -void ShortCutSettingModule::onShortcutEdit(ShortcutInfo *info) -{ - CustomEdit *customEdit = new CustomEdit(m_shortcutModel, qobject_cast(sender())); - customEdit->setVisible(false); - customEdit->setShortcut(info); - - ShortCutSettingWidget *shortcutWidget = qobject_cast(sender()); - SettingsHead *head = shortcutWidget->getHead(); - - connect(customEdit, &CustomEdit::requestUpdateKey, m_worker, &KeyboardWorker::updateKey); - connect(customEdit, &CustomEdit::requestSaveShortcut, head, &SettingsHead::toCancel); - connect(customEdit, &CustomEdit::requestSaveShortcut, m_worker, &KeyboardWorker::modifyCustomShortcut); - - customEdit->setFocus(); - customEdit->exec(); - head->toCancel(); -} - diff --git a/dcc-old/src/plugin-keyboard/window/keyboardmodule.h b/dcc-old/src/plugin-keyboard/window/keyboardmodule.h deleted file mode 100644 index e6a4c146c4..0000000000 --- a/dcc-old/src/plugin-keyboard/window/keyboardmodule.h +++ /dev/null @@ -1,135 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "interface/plugininterface.h" -#include "interface/hlistmodule.h" -#include "interface/pagemodule.h" - -#include - -namespace DCC_NAMESPACE { -class KeyboardWidget; -class GeneralKBSettingWidget; -class KBLayoutSettingWidget; -class SystemLanguageWidget; -class SystemLanguageSettingWidget; -class ShortCutSettingWidget; -class CustomContent; - -class KeyboardModel; -class ShortcutModel; -class KeyboardWorker; -class KeyboardLayoutWidget; -struct ShortcutInfo; -class CustomEdit; -class ShortcutContent; - -class KeyboardPlugin : public PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Keyboard" FILE "KeyboardPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - virtual QString name() const override; - virtual ModuleObject *module() override; - virtual QString location() const override; -}; - -class KeyboardModule : public HListModule -{ - Q_OBJECT - -public: - explicit KeyboardModule(QObject *parent = nullptr); - ~KeyboardModule(); - KeyboardModel *model() { return m_model; } - ShortcutModel *shortcutModel() { return m_shortcutModel; } - KeyboardWorker *worker() { return m_work; } -protected: - virtual void active() override; - -private: - KeyboardModel *m_model; - ShortcutModel *m_shortcutModel; - KeyboardWorker *m_work; -}; - -class GeneralSettingModule : public ModuleObject -{ - Q_OBJECT -public: - explicit GeneralSettingModule(KeyboardModel *model, KeyboardWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker){} - virtual QWidget *page() override; - -private: - KeyboardModel *m_model; - KeyboardWorker *m_worker; -}; - -class KBLayoutSettingModule : public ModuleObject -{ - Q_OBJECT -public: - explicit KBLayoutSettingModule(KeyboardModel *model, KeyboardWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker){} - virtual QWidget *page() override; - -public Q_SLOTS: - void onPushKeyboard(const QStringList &kblist); - void setCurrentLayout(const QString &value); - -private: - KeyboardModel *m_model; - KeyboardWorker *m_worker; -}; - -#ifndef DCC_DISABLE_LANUGAGE -class SystemLanguageSettingModule : public ModuleObject -{ - Q_OBJECT -public: - explicit SystemLanguageSettingModule(KeyboardModel *model, KeyboardWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker){} - virtual QWidget *page() override; - -public Q_SLOTS: - void onPushSystemLanguageSetting(); - void onAddLocale(const QModelIndex &index); - -private: - KeyboardModel *m_model; - KeyboardWorker *m_worker; -}; -#endif - -class ShortCutSettingMenuModule : public PageModule -{ - Q_OBJECT -public: - explicit ShortCutSettingMenuModule(const QString &name, const QString &displayName = {}, QObject *parent = nullptr) - : PageModule(name, displayName, parent) {} -}; - -class ShortCutSettingModule : public ModuleObject -{ - Q_OBJECT -public: - explicit ShortCutSettingModule(KeyboardModel *model, KeyboardWorker *worker, ShortcutModel *shortcutModel, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker), m_shortcutModel(shortcutModel){} - virtual QWidget *page() override; - -public Q_SLOTS: - void onPushCustomShortcut(); - void onPushConflict(ShortcutInfo *info, const QString &shortcut); - void onShortcutEdit(ShortcutInfo *info); - -private: - KeyboardModel *m_model; - KeyboardWorker *m_worker; - ShortcutModel *m_shortcutModel; -}; -} diff --git a/dcc-old/src/plugin-keyboard/window/keylabel.cpp b/dcc-old/src/plugin-keyboard/window/keylabel.cpp deleted file mode 100644 index bca83a1e4d..0000000000 --- a/dcc-old/src/plugin-keyboard/window/keylabel.cpp +++ /dev/null @@ -1,63 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "keylabel.h" - -#include -#include -#include -#include -#include - -const QMap &DisplaykeyMap = { {"exclam", "!"}, {"at", "@"}, {"numbersign", "#"}, {"dollar", "$"}, {"percent", "%"}, - {"asciicircum", "^"}, {"ampersand", "&"}, {"asterisk", "*"}, {"parenleft", "("}, - {"parenright", ")"}, {"underscore", "_"}, {"plus", "+"}, {"braceleft", "{"}, {"braceright", "}"}, - {"bar", "|"}, {"colon", ":"}, {"quotedbl", "\""}, {"less", "<"}, {"greater", ">"}, {"question", "?"}, - {"minus", "-"}, {"equal", "="}, {"brackertleft", "["}, {"breckertright", "]"}, {"backslash", "\\"}, - {"semicolon", ";"}, {"apostrophe", "'"}, {"comma", ","}, {"period", "."}, {"slash", "/"}, {"Up", "↑"}, - {"Left", "←"}, {"Down", "↓"}, {"Right", "→"}, {"asciitilde", "~"}, {"grave", "`"}, {"Control", "Ctrl"}, - {"Super_L", "Super"}, {"Super_R", "Super"} -}; - -KeyLabel::KeyLabel(const QString &text, QWidget *parent) - : QWidget(parent) - , m_isEnter(false) - , m_text("") -{ - QString t; - - if (text.isEmpty()) { - t = tr("None"); - } else { - const QString &value = DisplaykeyMap[text]; - t = value.isEmpty() ? text : value; - } - - m_text = t; - - QFont font = qApp->font(); - QFontMetrics fm(font); - - setMinimumWidth(fm.horizontalAdvance(t) + 18); -} - -void KeyLabel::setEnter(const bool enter) -{ - m_isEnter = enter; - - update(); -} - -void KeyLabel::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event); - QStylePainter stylePainter(this); - QStyleOptionButton option; - option.rect = rect(); - option.text = m_text; - option.palette.setBrush(QPalette::Light, option.palette.base()); - option.palette.setBrush(QPalette::Dark, option.palette.base()); - option.palette.setBrush(QPalette::ButtonText, option.palette.highlight()); - option.palette.setBrush(QPalette::Shadow, Qt::transparent); - stylePainter.drawControl(QStyle::CE_PushButton, option); -} diff --git a/dcc-old/src/plugin-keyboard/window/keylabel.h b/dcc-old/src/plugin-keyboard/window/keylabel.h deleted file mode 100644 index 0c90985db9..0000000000 --- a/dcc-old/src/plugin-keyboard/window/keylabel.h +++ /dev/null @@ -1,26 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef KEYLABEL_H -#define KEYLABEL_H - -#include - -class KeyLabel : public QWidget -{ - Q_OBJECT -public: - explicit KeyLabel(const QString &text, QWidget *parent = nullptr); - - void setEnter(const bool enter); - -protected: - void paintEvent(QPaintEvent *event) Q_DECL_OVERRIDE; - -private: - bool m_isEnter; - QString m_text; -}; - - -#endif // KEYLABEL_H diff --git a/dcc-old/src/plugin-keyboard/window/searchinput.cpp b/dcc-old/src/plugin-keyboard/window/searchinput.cpp deleted file mode 100644 index 7f88fa60b6..0000000000 --- a/dcc-old/src/plugin-keyboard/window/searchinput.cpp +++ /dev/null @@ -1,96 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "searchinput.h" - -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; - -QPixmap loadPixmap(const QString &path) -{ - qreal ratio = 1.0; - QPixmap pixmap; - - const qreal devicePixelRatio = qApp->devicePixelRatio(); - - if (!qFuzzyCompare(ratio, devicePixelRatio)) { - QImageReader reader; - reader.setFileName(qt_findAtNxFile(path, devicePixelRatio, &ratio)); - if (reader.canRead()) { - reader.setScaledSize(reader.size() * (devicePixelRatio / ratio)); - pixmap = QPixmap::fromImage(reader.read()); - pixmap.setDevicePixelRatio(devicePixelRatio); - } - } else { - pixmap.load(path); - } - - return pixmap; -} - - -SearchInput::SearchInput(QWidget* parent) - :QLineEdit(parent), - m_iconVisible(true) -{ - setContextMenuPolicy(Qt::NoContextMenu); - setFocusPolicy(Qt::ClickFocus); - m_search = tr("Search"); -} - -void SearchInput::setSearchText(const QString &text) -{ - m_search = text; -} - -void SearchInput::setIconVisible(bool visible) -{ - m_iconVisible = visible; -} - -QString SearchInput::iconPath() const -{ - return m_iconPath; -} - -void SearchInput::setIcon(const QString &filepath) -{ - m_iconPath = filepath; - - m_icon = loadPixmap(filepath); -} - -void SearchInput::paintEvent(QPaintEvent *e) -{ - QLineEdit::paintEvent(e); - - if(!hasFocus() && text().isEmpty()) - { - QRect rect = this->rect(); - QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing); - painter.setOpacity(0.5); - if(m_iconVisible) - { - QFontMetrics fm(qApp->font()); - int w = fm.horizontalAdvance(m_search); - int iw = m_icon.width(); - int x = (rect.width() - w - iw -8)/2; - QRect iconRect(x, 0, iw, rect.height()); - QRect tmp(QPoint(0,0),m_icon.size() / devicePixelRatioF()); - tmp.moveCenter(iconRect.center()); - QRect searchRect(iconRect.right() + 2, 0, w, rect.height()); - painter.drawPixmap(tmp, m_icon); - painter.drawText(searchRect, Qt::AlignCenter, m_search); - } - else - { - painter.drawText(rect, Qt::AlignCenter, m_search); - } - } -} diff --git a/dcc-old/src/plugin-keyboard/window/searchinput.h b/dcc-old/src/plugin-keyboard/window/searchinput.h deleted file mode 100644 index c21d00d4ac..0000000000 --- a/dcc-old/src/plugin-keyboard/window/searchinput.h +++ /dev/null @@ -1,35 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SEARCHINPUT_H -#define SEARCHINPUT_H - -#include "interface/namespace.h" -#include - -namespace DCC_NAMESPACE { - -class SearchInput : public QLineEdit -{ - Q_OBJECT - Q_PROPERTY(QString icon READ iconPath WRITE setIcon) -public: - explicit SearchInput(QWidget* parent = 0); - void setSearchText(const QString& text); - void setIconVisible(bool visible); - QString iconPath() const; - void setIcon(const QString &filepath); - -protected: - void paintEvent(QPaintEvent *); - -private: - bool m_iconVisible; - QString m_search; - QPixmap m_icon; - QString m_iconPath; -}; - -} - -#endif // SEARCHINPUT_H diff --git a/dcc-old/src/plugin-keyboard/window/shortcutcontentdialog.cpp b/dcc-old/src/plugin-keyboard/window/shortcutcontentdialog.cpp deleted file mode 100644 index fb6e5323eb..0000000000 --- a/dcc-old/src/plugin-keyboard/window/shortcutcontentdialog.cpp +++ /dev/null @@ -1,159 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "shortcutcontentdialog.h" -#include "operation/shortcutmodel.h" -#include "shortcutitem.h" - -#include - -#include - -using namespace DCC_NAMESPACE; -ShortcutContentDialog::ShortcutContentDialog(ShortcutModel *model, QWidget *parent) - : DAbstractDialog(parent) - , m_model(model) - , m_conflict(nullptr) - , m_info(nullptr) - , m_shortcutItem(new ShortcutItem) - , m_buttonTuple(new ButtonTuple(ButtonTuple::Save)) -{ - setFixedSize(QSize(400, 300)); - QVBoxLayout *mainVLayout = new QVBoxLayout(); - mainVLayout->setContentsMargins(0, 0, 0, 0); - mainVLayout->setSpacing(0); - - QVBoxLayout *listVLayout = new QVBoxLayout(); - listVLayout->setAlignment(Qt::AlignHCenter); - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("")); - - mainVLayout->addWidget(titleIcon); - - m_shortcutItem->setShortcut(tr("Please Reset Shortcut")); - m_shortcutItem->addBackground(); - listVLayout->addWidget(m_shortcutItem, 0, Qt::AlignTop); - - listVLayout->addSpacing(10); - QPushButton *cancel = m_buttonTuple->leftButton(); - QPushButton *ok = m_buttonTuple->rightButton(); - if (m_buttonTuple->layout()) { - //第二个控件为space - if (m_buttonTuple->layout()->itemAt(1) != nullptr && m_buttonTuple->layout()->itemAt(1)->spacerItem() != nullptr) { - int height = m_buttonTuple->layout()->itemAt(1)->spacerItem()->sizeHint().height(); - m_buttonTuple->layout()->itemAt(1)->spacerItem()->changeSize(20, height); - } - } - - cancel->setText(tr("Cancel")); - ok->setText(tr("Replace")); - - m_bottomTip = new QLabel(); - m_bottomTip->setWordWrap(true); - - listVLayout->addSpacing(10); - listVLayout->addWidget(m_bottomTip); - listVLayout->addStretch(); - listVLayout->addWidget(m_buttonTuple, 0, Qt::AlignBottom); - listVLayout->setContentsMargins(20, 10, 20, 10); - - mainVLayout->addLayout(listVLayout); - setLayout(mainVLayout); - setContentsMargins(0, 0, 0, 0); - - connect(ok, &QPushButton::clicked, this, &ShortcutContentDialog::onReplace); - connect(cancel, &QPushButton::clicked, this, &ShortcutContentDialog::close); - connect(m_shortcutItem, &ShortcutItem::requestUpdateKey, this, &ShortcutContentDialog::onUpdateKey); - connect(m_model, &ShortcutModel::keyEvent, this, &ShortcutContentDialog::keyEvent); -} - -void ShortcutContentDialog::setBottomTip(ShortcutInfo *conflict) -{ - m_conflict = conflict; - - m_info->replace = conflict; - - if (conflict) { - QString accels = conflict->accels; - accels = accels.replace("<", ""); - accels = accels.replace(">", "+"); - accels = accels.replace("_L", ""); - accels = accels.replace("_R", ""); - accels = accels.replace("Control", "Ctrl"); - - QString str = tr("This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately") - .arg(QString("%1 %2").arg(conflict->name).arg(QString("[%1]").arg(accels))); - m_bottomTip->setText(str); - m_bottomTip->show(); - } else { - m_bottomTip->clear(); - m_bottomTip->hide(); - } -} - -void ShortcutContentDialog::setInfo(ShortcutInfo *info) -{ - m_info = info; - m_shortcutItem->setShortcutInfo(info); -} - -void ShortcutContentDialog::setShortcut(const QString &shortcut) -{ - m_shortcut = shortcut; - m_shortcutItem->setShortcut(shortcut); -} - -void ShortcutContentDialog::keyEvent(bool press, const QString &shortcut) -{ - if (!press) { - - if (shortcut.isEmpty()) { - setBottomTip(nullptr); - return; - } - - if (shortcut == "BackSpace" || shortcut == "Delete") { - m_shortcut.clear(); - setBottomTip(nullptr); - return; - } - - m_shortcut = shortcut; - - // check conflict - ShortcutInfo *info = m_model->getInfo(shortcut); - - qInfo() << info; - qInfo() << m_info; - - if (info && info != m_info && info->accels != m_info->accels) { - m_shortcutItem->setShortcut(info->accels); - setBottomTip(info); - return; - } - setBottomTip(nullptr); - m_shortcutItem->setShortcut(shortcut); - } -} - -void ShortcutContentDialog::onReplace() -{ - if (m_info->accels != m_shortcut) { - if (m_shortcut.isEmpty()) { - Q_EMIT requestDisableShortcut(m_info); - } else { - m_info->accels = m_shortcut; - Q_EMIT requestSaveShortcut(m_info); - } - } - accept(); -} - -void ShortcutContentDialog::onUpdateKey() -{ - Q_EMIT requestUpdateKey(nullptr); -} - diff --git a/dcc-old/src/plugin-keyboard/window/shortcutcontentdialog.h b/dcc-old/src/plugin-keyboard/window/shortcutcontentdialog.h deleted file mode 100644 index 64e24d6223..0000000000 --- a/dcc-old/src/plugin-keyboard/window/shortcutcontentdialog.h +++ /dev/null @@ -1,52 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SHORTCUTCONTENTDIALOG_H -#define SHORTCUTCONTENTDIALOG_H - -#include "interface/namespace.h" -#include "widgets/settingsgroup.h" -#include "widgets/buttontuple.h" -#include "titlebuttonItem.h" - -#include - -#include - -DWIDGET_USE_NAMESPACE -namespace DCC_NAMESPACE { -class ShortcutModel; -struct ShortcutInfo; -class KeyboardControl; -class ShortcutItem; -class ShortcutContentDialog : public DAbstractDialog -{ - Q_OBJECT -public: - explicit ShortcutContentDialog(ShortcutModel *model, QWidget *parent = nullptr); - void setBottomTip(ShortcutInfo *conflict); - void setInfo(ShortcutInfo *info); - void setShortcut(const QString &shortcut); - -Q_SIGNALS: - void requestUpdateKey(ShortcutInfo *conflict); - void requestSaveShortcut(ShortcutInfo *info); - void requestDisableShortcut(ShortcutInfo *info); - -public Q_SLOTS: - void keyEvent(bool press, const QString &shortcut); - void onReplace(); - void onUpdateKey(); - -private: - ShortcutModel *m_model; - QLabel* m_bottomTip; - ShortcutInfo* m_conflict; - ShortcutInfo* m_info; - ShortcutItem *m_shortcutItem; - ButtonTuple *m_buttonTuple; - TitleButtonItem* m_item; - QString m_shortcut; -}; -} -#endif // SHORTCUTCONTENTDIALOG_H diff --git a/dcc-old/src/plugin-keyboard/window/shortcutitem.cpp b/dcc-old/src/plugin-keyboard/window/shortcutitem.cpp deleted file mode 100644 index 8ffc490ef7..0000000000 --- a/dcc-old/src/plugin-keyboard/window/shortcutitem.cpp +++ /dev/null @@ -1,230 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "shortcutitem.h" -#include "operation/shortcutmodel.h" -#include "keylabel.h" - -#include -#include - -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE - -ShortcutItem::ShortcutItem(QFrame *parent) - : SettingsItem(parent) - , m_info(nullptr) -{ - installEventFilter(this); - setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Expanding); - setFocusPolicy(Qt::FocusPolicy::StrongFocus); - setMinimumHeight(36); - - setMouseTracking(true); - QHBoxLayout *layout = new QHBoxLayout(); - layout->setContentsMargins(10, 2, 10, 2); - layout->setSpacing(2); - - m_title = new QLabel(); - m_title->setText(""); - m_title->setAlignment(Qt::AlignLeft | Qt::AlignVCenter); - m_title->setWordWrap(false); - m_title->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding); - - layout->addWidget(m_title); - layout->setAlignment(m_title, Qt::AlignLeft); - - m_editBtn = new DIconButton(this); - m_editBtn->setIcon(DIconTheme::findQIcon("dcc_edit")); - m_editBtn->hide(); - m_editBtn->setFixedSize(16, 16); - m_editBtn->setAccessibleName("EDIT_SHORTCUT_BUTTON"); - layout->addWidget(m_editBtn, Qt::AlignLeft); - - layout->addStretch(); - - m_delBtn = new DIconButton(this); - m_delBtn->setIcon(DStyle::StandardPixmap::SP_DeleteButton); - m_delBtn->hide(); - m_delBtn->setFixedSize(16, 16); - m_delBtn->setAccessibleName("DEL_SHORTCUT_BUTTON"); - layout->addWidget(m_delBtn, Qt::AlignLeft); - - m_key = new ShortcutKey; - layout->addWidget(m_key); - - m_shortcutEdit = new QLineEdit; - m_shortcutEdit->setReadOnly(true); - layout->addWidget(m_shortcutEdit, 0, Qt::AlignVCenter | Qt::AlignRight); - - m_shortcutEdit->setPlaceholderText(tr("Enter a new shortcut")); - QFontMetrics fm = m_shortcutEdit->fontMetrics(); - QRect strRect = fm.boundingRect(m_shortcutEdit->placeholderText()); - QStyleOptionFrame opt; - initStyleOption(&opt); - int strWidth = (style()->sizeFromContents(QStyle::CT_LineEdit, &opt, strRect.size(). - expandedTo(QApplication::globalStrut()), m_shortcutEdit)).width(); - int borderWidth = m_shortcutEdit->minimumSizeHint().width() - fm.maxWidth(); - - m_shortcutEdit->setMinimumWidth(strWidth + borderWidth + 8); //始终有些误差 - m_shortcutEdit->hide(); - - setLayout(layout); - - connect(m_editBtn, &DIconButton::clicked, this, &ShortcutItem::onShortcutEdit); - connect(m_delBtn, &DIconButton::clicked, this, &ShortcutItem::onRemoveClick); -} - -ShortcutItem::~ShortcutItem() -{ -// GSettingWatcher::instance()->erase(configName(), this); -} - -void ShortcutItem::setShortcutInfo(ShortcutInfo *info) -{ - m_info = info; - setTitle(m_info->name); - setShortcut(info->accels); - - if (info->type != ShortcutModel::Custom) { - setConfigName(info->id + "Config"); -// GSettingWatcher::instance()->bind(configName(), this); - } -} - -void ShortcutItem::setTitle(const QString &title) -{ - m_title->setText(title); - QTimer::singleShot(0, this, &ShortcutItem::updateTitleSize); -} - -void ShortcutItem::setShortcut(const QString &shortcut) -{ - m_shortcutEdit->hide(); - m_key->show(); - - QString accels = shortcut; - accels = accels.replace("<", ""); - accels = accels.replace(">", "-"); - accels = accels.replace("_L", ""); - accels = accels.replace("_R", ""); - accels = accels.replace("Control", "Ctrl"); - - m_key->setTextList(accels.split("-")); - QTimer::singleShot(0, this, &ShortcutItem::updateTitleSize); -} - -void ShortcutItem::onEditMode(bool value) -{ - if (value) { - m_delBtn->show(); - m_editBtn->show(); - m_key->hide(); - } else { - m_delBtn->hide(); - m_editBtn->hide(); - m_key->show(); - } - update(); -} - -void ShortcutItem::onRemoveClick() -{ - Q_EMIT requestRemove(m_info); -} - -void ShortcutItem::onShortcutEdit() -{ - Q_EMIT shortcutEditChanged(m_info); -} - -void ShortcutItem::updateTitleSize() -{ - show(); - if (m_info->name.isEmpty()) return; - int v = 0; - if(m_shortcutEdit->isHidden()) - v = width() - m_key->width() - 32; - else - v = width() - m_shortcutEdit->width() - 32; - if (m_title->fontMetrics().horizontalAdvance(m_info->name) > v) { - QFontMetrics fontWidth(m_title->font()); - QString elideNote = fontWidth.elidedText(m_info->name, Qt::ElideRight, v); - m_title->setText(elideNote); - } - else { - m_title->setText(m_info->name); - } -} - -void ShortcutItem::mouseReleaseEvent(QMouseEvent *e) -{ - if (m_delBtn->isVisible()) - return; - - if (!m_shortcutEdit->isVisible() && m_key->rect().contains(m_key->mapFromParent(e->pos()))) { - m_key->hide(); - m_shortcutEdit->show(); - m_info->item = this; - m_shortcutEdit->setFocus(); - - Q_EMIT requestUpdateKey(m_info); - - } else { - m_shortcutEdit->hide(); - m_key->show(); - } - updateTitleSize(); -} - -void ShortcutItem::resizeEvent(QResizeEvent *event) -{ - SettingsItem::resizeEvent(event); - - int v = width() - m_key->width() - 32; - // 参与计算的是实际文本长度 - if (m_title->fontMetrics().horizontalAdvance(m_info->name) <= v) { - m_title->setText(m_info->name); - m_title->setToolTip(""); - } else { - m_title->setToolTip(m_info->name); - QTimer::singleShot(0, this, &ShortcutItem::updateTitleSize); - } - -} - -bool ShortcutItem::eventFilter(QObject *watched, QEvent *event) -{ - if (event->type() == QEvent::Show) { - if (m_info->type != ShortcutModel::Custom) { -// setVisible("Hidden" != GSettingWatcher::instance()->getStatus(configName())); - } - } - - return QObject::eventFilter(watched, event); -} - -QString ShortcutItem::configName() const -{ - QString configName = m_configName; - for (int i = 0; i < configName.size(); i++) { - if (configName[i] == "-") { - QChar upperChar = configName.at(i + 1).toUpper(); - configName.remove(i, 2); - configName.insert(i, upperChar); - } - } - return configName; -} - -void ShortcutItem::setConfigName(const QString &configName) -{ - m_configName = configName; -} diff --git a/dcc-old/src/plugin-keyboard/window/shortcutitem.h b/dcc-old/src/plugin-keyboard/window/shortcutitem.h deleted file mode 100644 index decb6eca4f..0000000000 --- a/dcc-old/src/plugin-keyboard/window/shortcutitem.h +++ /dev/null @@ -1,67 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SHORTCUTITEM_H -#define SHORTCUTITEM_H - -#include"interface/namespace.h" -#include "widgets/settingsitem.h" -#include "shortcutkey.h" - -#include - -#include -#include -#include - -namespace DCC_NAMESPACE { - -struct ShortcutInfo; - -class ShortcutItem : public SettingsItem -{ - Q_OBJECT - -public: - explicit ShortcutItem(QFrame *parent = nullptr); - ~ShortcutItem(); - - void setShortcutInfo(ShortcutInfo *info); - inline ShortcutInfo *curInfo() { return m_info; } - - void setChecked(bool checked); - void setTitle(const QString &title); - void setShortcut(const QString &shortcut); - - QString configName() const; - void setConfigName(const QString &configName); - -Q_SIGNALS: - void shortcutEditChanged(ShortcutInfo *info); - void requestUpdateKey(ShortcutInfo *info); - void requestRemove(ShortcutInfo *info); - -public Q_SLOTS: - void onEditMode(bool value); - void onRemoveClick(); - -private: - void onShortcutEdit(); - void updateTitleSize(); - -protected: - void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; - void resizeEvent(QResizeEvent *event) Q_DECL_OVERRIDE; - bool eventFilter(QObject *watched, QEvent *event) Q_DECL_OVERRIDE; - -private: - QLineEdit *m_shortcutEdit; - QLabel *m_title; - ShortcutInfo *m_info; - DTK_WIDGET_NAMESPACE::DIconButton *m_delBtn; - DTK_WIDGET_NAMESPACE::DIconButton *m_editBtn; - ShortcutKey *m_key; - QString m_configName; -}; -} -#endif // SHORTCUTITEM_H diff --git a/dcc-old/src/plugin-keyboard/window/shortcutkey.cpp b/dcc-old/src/plugin-keyboard/window/shortcutkey.cpp deleted file mode 100644 index 9c98041707..0000000000 --- a/dcc-old/src/plugin-keyboard/window/shortcutkey.cpp +++ /dev/null @@ -1,53 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "shortcutkey.h" -#include "keylabel.h" - -#include -#include - -ShortcutKey::ShortcutKey(QWidget *parent) : QWidget(parent) -{ - setAccessibleName("ShortcutKey"); - m_mainLayout = new QHBoxLayout; - m_mainLayout->setMargin(0); - m_mainLayout->setSpacing(5); - - setLayout(m_mainLayout); -} - -void ShortcutKey::setTextList(const QStringList &list) -{ - for (KeyLabel *label : m_list) { - m_mainLayout->removeWidget(label); - label->deleteLater(); - } - - m_list.clear(); - - for (const QString &key : list) { - KeyLabel *label = new KeyLabel(key); - label->setAccessibleName("LABEL"); - m_list << label; - m_mainLayout->addWidget(label); - } - - adjustSize(); -} - -void ShortcutKey::enterEvent(QEvent *event) -{ - QWidget::enterEvent(event); - - for (KeyLabel *label : m_list) - label->setEnter(true); -} - -void ShortcutKey::leaveEvent(QEvent *event) -{ - QWidget::leaveEvent(event); - - for (KeyLabel *label : m_list) - label->setEnter(false); -} diff --git a/dcc-old/src/plugin-keyboard/window/shortcutkey.h b/dcc-old/src/plugin-keyboard/window/shortcutkey.h deleted file mode 100644 index 5ebdeed821..0000000000 --- a/dcc-old/src/plugin-keyboard/window/shortcutkey.h +++ /dev/null @@ -1,30 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef SHORTCUTKEY_H -#define SHORTCUTKEY_H - -#include -#include -#include - -class KeyLabel; - -class ShortcutKey : public QWidget -{ - Q_OBJECT -public: - explicit ShortcutKey(QWidget *parent = nullptr); - void setTextList(const QStringList &list); - -protected: - void enterEvent(QEvent *event) override; - void leaveEvent(QEvent *event) override; - -private: - QHBoxLayout *m_mainLayout; - QList m_list; -}; - -#endif // SHORTCUTKEY_H diff --git a/dcc-old/src/plugin-keyboard/window/shortcutsettingwidget.cpp b/dcc-old/src/plugin-keyboard/window/shortcutsettingwidget.cpp deleted file mode 100644 index 3a10103746..0000000000 --- a/dcc-old/src/plugin-keyboard/window/shortcutsettingwidget.cpp +++ /dev/null @@ -1,475 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "shortcutsettingwidget.h" -#include "operation/shortcutmodel.h" -#include "shortcutitem.h" -#include "widgets/settingshead.h" -#include "widgets/settingsheaderitem.h" -#include "widgets/settingsgroup.h" -#include "searchinput.h" - -#include -#include - -#include -#include -#include - -DCORE_USE_NAMESPACE -using namespace DCC_NAMESPACE; -ShortCutSettingWidget::ShortCutSettingWidget(ShortcutModel *model, QWidget *parent) - : QWidget(parent) - , m_workspaceGroup(nullptr) - , m_assistiveToolsGroup(nullptr) - , m_model(model) -{ - setAccessibleName("ShortCutSettingWidget"); - m_searchDelayTimer = new QTimer(this); - m_searchDelayTimer->setInterval(300); - m_searchDelayTimer->setSingleShot(true); - - m_searchText = QString(); - SettingsHead *systemHead = new SettingsHead(); - systemHead->setEditEnable(false); - systemHead->setTitle(tr("System Management")); - systemHead->layout()->setContentsMargins(10, 0, 10, 0); - m_systemGroup = new SettingsGroup(); - m_systemGroup->getLayout()->setMargin(0); - m_systemGroup->appendItem(systemHead, SettingsGroup::NoneBackground); - - SettingsHead *windowHead = new SettingsHead(); - windowHead->setEditEnable(false); - windowHead->setTitle(tr("Window")); - windowHead->layout()->setContentsMargins(10, 0, 10, 0); - m_windowGroup = new SettingsGroup(); - m_windowGroup->getLayout()->setMargin(0); - m_windowGroup->appendItem(windowHead, SettingsGroup::NoneBackground); - - if (DSysInfo::UosServer != DSysInfo::uosType()) { - m_workspaceHead = new SettingsHead(); - m_workspaceHead->setEditEnable(false); - m_workspaceHead->setTitle(tr("Workspace")); - m_workspaceHead->layout()->setContentsMargins(10, 0, 10, 0); - m_workspaceGroup = new SettingsGroup(); - m_workspaceGroup->appendItem(m_workspaceHead, SettingsGroup::NoneBackground); - } - - if (DSysInfo::UosServer != DSysInfo::uosType() && DSysInfo::UosCommunity != DSysInfo::uosEditionType()) { - SettingsHead *speechHead = new SettingsHead(); - speechHead->setTitle(tr("Assistive Tools")); - speechHead->setEditEnable(false); - speechHead->layout()->setContentsMargins(10, 0, 10, 0); - m_assistiveToolsGroup = new SettingsGroup(); - m_assistiveToolsGroup->appendItem(speechHead, SettingsGroup::NoneBackground); - } - - m_customGroup = new SettingsGroup(); - m_searchGroup = new SettingsGroup(); - m_searchInput = new SearchInput(); - m_searchInput->setAccessibleName("KEYBOARD_LINEEDIT"); - m_searchInput->setObjectName("KeyboardLineEdit"); - - m_head = new SettingsHead(); - m_head->setEditEnable(true); - m_head->setVisible(false); - m_head->setTitle(tr("Custom Shortcut")); - m_head->layout()->setContentsMargins(10, 0, 10, 0); - m_customGroup->appendItem(m_head, SettingsGroup::NoneBackground); - - QVBoxLayout *vlayout = new QVBoxLayout(); - QHBoxLayout *topLayout = new QHBoxLayout; - topLayout->setMargin(0); - topLayout->setAlignment(Qt::AlignTop); - topLayout->addWidget(m_searchInput); - vlayout->addLayout(topLayout); - - vlayout->setMargin(0); - vlayout->setSpacing(10); - //vlayout->addSpacing(10); - - m_layout = new QVBoxLayout; - m_layout->setContentsMargins(0, 0, 0, 0); - m_layout->addSpacing(3); - m_layout->addWidget(m_systemGroup); - m_layout->addSpacing(10); - m_layout->addWidget(m_windowGroup); - if (m_workspaceGroup) { - m_layout->addSpacing(10); - m_layout->addWidget(m_workspaceGroup); - } - - if (m_assistiveToolsGroup) { - m_layout->addSpacing(10); - m_layout->addWidget(m_assistiveToolsGroup); - } - m_layout->addSpacing(10); - m_layout->addWidget(m_customGroup); - - m_resetBtn = new QPushButton(tr("Restore Defaults")); - //m_layout->setMargin(10); - m_layout->addWidget(m_resetBtn); - m_layout->addSpacing(10); - m_layout->addStretch(); - - QWidget *widget = new QWidget(this); - widget->setAccessibleName("ShortCutSettingWidget_widget"); - widget->setContentsMargins(0, 0, 0, 0); - widget->setLayout(m_layout); - vlayout->addWidget(widget); - - widget->hide(); - m_searchInput->hide(); - - vlayout->setContentsMargins(0, 10, 0, 5); - setLayout(vlayout); - - connect(m_resetBtn, &QPushButton::clicked, this, [ = ] { - if (!m_bIsResting) { - m_bIsResting = true; - Q_EMIT requestReset(); - } - }); - - connect(m_searchInput, &QLineEdit::textChanged, this, &ShortCutSettingWidget::onSearchTextChanged); - connect(m_searchDelayTimer, &QTimer::timeout, this, &ShortCutSettingWidget::prepareSearchKeys); - setWindowTitle(tr("Shortcut")); - - connect(m_model, &ShortcutModel::addCustomInfo, this, &ShortCutSettingWidget::onCustomAdded); - //每次页面点击时会通过m_work->refreshShortcut()时,model会发出listChanged信号,对界面进行初始化 - connect(m_model, &ShortcutModel::listChanged, this, &ShortCutSettingWidget::addShortcut); - connect(m_model, &ShortcutModel::shortcutChanged, this, &ShortCutSettingWidget::onShortcutChanged); - connect(m_model, &ShortcutModel::keyEvent, this, &ShortCutSettingWidget::onKeyEvent); - connect(m_model, &ShortcutModel::searchFinished, this, &ShortCutSettingWidget::onSearchStringFinish); - - QTimer::singleShot(10, this, [=] { - widget->show(); - m_searchInput->show(); - }); -} - -void ShortCutSettingWidget::addShortcut(QList list, ShortcutModel::InfoType type) -{ - if ((m_assistiveToolsGroup == nullptr) && (type == ShortcutModel::AssistiveTools)) { - m_assistiveToolsIdList.clear(); - QList::iterator it = list.begin(); - for (; it != list.end(); ++it) { - ShortcutInfo *assistiveToolsinfo = *it; - m_assistiveToolsIdList << assistiveToolsinfo->id; - } - return; - } - - if ((m_workspaceGroup == nullptr) && (type == ShortcutModel::Workspace)) { - m_workspaceIdList.clear(); - QList::iterator it = list.begin(); - for (; it != list.end(); ++it) { - ShortcutInfo *workspaceIdListlsinfo = *it; - m_workspaceIdList << workspaceIdListlsinfo->id; - } - return; - } - QMap*> InfoMap { - {ShortcutModel::System, &m_systemList}, - {ShortcutModel::Window, &m_windowList}, - {ShortcutModel::Workspace, &m_workspaceList}, - {ShortcutModel::AssistiveTools, &m_assistiveToolsList}, - {ShortcutModel::Custom, &m_customList} - }; - - QMap GroupMap { - {ShortcutModel::System, m_systemGroup}, - {ShortcutModel::Window, m_windowGroup}, - {ShortcutModel::Workspace, m_workspaceGroup}, - {ShortcutModel::AssistiveTools, m_assistiveToolsGroup}, - {ShortcutModel::Custom, m_customGroup} - }; - - QList *itemList{ InfoMap[type] }; - auto group = GroupMap[type]; - for (auto it = itemList->begin(); it != itemList->end();) { - ShortcutItem *item = *it; - - group->removeItem(item); - m_allList.removeOne(item); - it = itemList->erase(it); - item->deleteLater(); - } - - QList::iterator it = list.begin(); - for (; it != list.end(); ++it) { - ShortcutInfo *info = *it; - ShortcutItem *item = new ShortcutItem(); - item->setAccessibleName(info->name); - connect(item, &ShortcutItem::requestUpdateKey, this, &ShortCutSettingWidget::requestUpdateKey); - item->setShortcutInfo(info); - item->setTitle(info->name); - info->item = item; - m_searchInfos[info->toString()] = info; - - m_allList << item; - switch (type) { - case ShortcutModel::System: - m_systemGroup->appendItem(item); - m_systemList.append(item); - break; - case ShortcutModel::Window: - m_windowGroup->appendItem(item); - m_windowList.append(item); - break; - case ShortcutModel::Workspace: - m_workspaceGroup->appendItem(item); - m_workspaceList.append(item); - - if (m_workspaceGroup->itemCount() > 1) - m_workspaceHead->setVisible(true); - break; - case ShortcutModel::AssistiveTools: - m_assistiveToolsGroup->appendItem(item); - m_assistiveToolsList.append(item); - break; - case ShortcutModel::Custom: - connect(m_head, &SettingsHead::editChanged, item, &ShortcutItem::onEditMode); - m_customGroup->appendItem(item); - m_customList.append(item); - - if (m_customGroup->itemCount() > 1) - m_head->setVisible(true); - - connect(item, &ShortcutItem::requestRemove, this, &ShortCutSettingWidget::onDestroyItem); - connect(item, &ShortcutItem::shortcutEditChanged, this, &ShortCutSettingWidget::shortcutEditChanged); - break; - default: - break; - } - } -} - -SettingsHead *ShortCutSettingWidget::getHead() const -{ - return m_head; -} - -void ShortCutSettingWidget::modifyStatus(bool status) -{ - if (status) { - m_customGroup->hide(); - if (m_assistiveToolsGroup) { - m_assistiveToolsGroup->hide(); - } - if (m_workspaceGroup) { - m_workspaceGroup->hide(); - } - - m_windowGroup->hide(); - m_systemGroup->hide(); - m_resetBtn->hide(); - m_searchGroup->show(); - m_layout->removeWidget(m_customGroup); - if (m_assistiveToolsGroup) { - m_layout->removeWidget(m_assistiveToolsGroup); - } - if (m_workspaceGroup) { - m_layout->removeWidget(m_workspaceGroup); - } - - m_layout->removeWidget(m_windowGroup); - m_layout->removeWidget(m_systemGroup); - m_layout->insertWidget(0, m_searchGroup, 0, Qt::AlignTop); - } else { - m_customGroup->show(); - if (m_assistiveToolsGroup) { - m_assistiveToolsGroup->show(); - } - if (m_workspaceGroup) { - m_workspaceGroup->show(); - } - - m_windowGroup->show(); - m_systemGroup->show(); - m_resetBtn->show(); - m_searchGroup->hide(); - m_layout->removeWidget(m_searchGroup); - m_layout->insertWidget(0, m_systemGroup); - m_layout->insertWidget(2, m_windowGroup); - - if (m_workspaceGroup) { - m_layout->insertWidget(4, m_workspaceGroup); - if (m_assistiveToolsGroup) { - m_layout->insertWidget(6, m_assistiveToolsGroup); - m_layout->insertWidget(8, m_customGroup); - } else { - m_layout->insertWidget(6, m_customGroup); - } - } else { - if (m_assistiveToolsGroup) { - m_layout->insertWidget(4, m_assistiveToolsGroup); - m_layout->insertWidget(6, m_customGroup); - } else { - m_layout->insertWidget(4, m_customGroup); - } - } - - } -} - -void ShortCutSettingWidget::onSearchTextChanged(const QString &text) -{ - if (m_searchText.length() == 0 || text.length() == 0) { - modifyStatus(text.length() > 0); - } - m_searchText = text; - qDebug() << "search text is " << m_searchText; - if (text.length() > 0) { - m_searchDelayTimer->start(); - } -} - -void ShortCutSettingWidget::onCustomAdded(ShortcutInfo *info) -{ - if (info) { - ShortcutItem *item = new ShortcutItem(); - connect(item, &ShortcutItem::requestUpdateKey, this, &ShortCutSettingWidget::requestUpdateKey); - item->setShortcutInfo(info); - item->setTitle(info->name); - info->item = item; - - m_searchInfos[info->toString()] = info; - - m_allList << item; - - m_head->setVisible(true); - connect(m_head, &SettingsHead::editChanged, item, &ShortcutItem::onEditMode); - m_customGroup->appendItem(item); - m_customList.append(item); - - connect(item, &ShortcutItem::requestRemove, this, &ShortCutSettingWidget::onDestroyItem); - connect(item, &ShortcutItem::shortcutEditChanged, this, &ShortCutSettingWidget::shortcutEditChanged); - } -} - -void ShortCutSettingWidget::onDestroyItem(ShortcutInfo *info) -{ - m_head->toCancel(); - ShortcutItem *item = info->item; - m_customGroup->removeItem(item); - if (m_customGroup->itemCount() == 1) { - m_head->setVisible(false); - } - m_searchInfos.remove(item->curInfo()->toString()); - m_customList.removeOne(item); - m_allList.removeOne(item); - Q_EMIT delShortcutInfo(item->curInfo()); - item->deleteLater(); -} - -void ShortCutSettingWidget::onSearchInfo(ShortcutInfo *info, const QString &key) -{ - if (m_searchInfos.keys().contains(key)) { - m_searchInfos.remove(key); - m_searchInfos[info->toString()] = info; - } -} - -void ShortCutSettingWidget::onSearchStringFinish(const QList searchList) -{ - for (int i = 0; i != m_searchGroup->itemCount(); ++i) { - m_searchGroup->getItem(i)->deleteLater(); - } - m_searchGroup->clear(); - QList list = searchList; - qDebug() << "searchList count is " << searchList.count(); - for (int i = 0; i < list.count(); i++) { - if (m_assistiveToolsGroup == nullptr && m_assistiveToolsIdList.contains(list[i]->id)) - continue; - - if (m_workspaceGroup == nullptr && m_workspaceIdList.contains(list[i]->id)) - continue; - - ShortcutItem *item = new ShortcutItem; - connect(item, &ShortcutItem::requestUpdateKey, this, &ShortCutSettingWidget::requestUpdateKey); - item->setShortcutInfo(list[i]); - item->setTitle(list[i]->name); - item->setFixedHeight(36); - m_searchGroup->appendItem(item); - } -} - -void ShortCutSettingWidget::prepareSearchKeys() -{ - Q_EMIT requestSearch(m_searchText); -} - -void ShortCutSettingWidget::onRemoveItem(const QString &id, int type) -{ - Q_UNUSED(type) - - for (auto item(m_customList.begin()); item != m_customList.end(); ++item) { - ShortcutItem *it = *item; - Q_ASSERT(it); - if (it->curInfo()->id == id) { - m_customGroup->removeItem(it); - m_customList.removeOne(it); - m_allList.removeOne(it); - it->deleteLater(); - return; - } - } -} - -void ShortCutSettingWidget::onShortcutChanged(ShortcutInfo *info) -{ - for (ShortcutItem *item : m_allList) { - if (item->curInfo()->id == info->id) { - item->setShortcutInfo(info); - break; - } - } -} - -void ShortCutSettingWidget::onKeyEvent(bool press, const QString &shortcut) -{ - ShortcutInfo *current = m_model->currentInfo(); - - if (!current) - return; - - ShortcutInfo *conflict = m_model->getInfo(shortcut); - - if (conflict == current && conflict->accels == current->accels) { - current->item->setShortcut(current->accels); - return; - } - - if (!press) { - if (shortcut.isEmpty()) { - current->item->setShortcut(current->accels); - return; - } - - if (shortcut == "BackSpace" || shortcut == "Delete") { - current->item->setShortcut(""); - Q_EMIT requestDisableShortcut(current); - } else { - if (conflict) { - // have conflict - Q_EMIT requestShowConflict(current, shortcut); - current->item->setShortcut(current->accels); - } else { - // save - current->accels = shortcut; - Q_EMIT requestSaveShortcut(current); - } - } - return; - } - - // update shortcut to item - current->item->setShortcut(shortcut); -} - -void ShortCutSettingWidget::onResetFinished() -{ - m_bIsResting = false; -} - diff --git a/dcc-old/src/plugin-keyboard/window/shortcutsettingwidget.h b/dcc-old/src/plugin-keyboard/window/shortcutsettingwidget.h deleted file mode 100644 index 6b0ebfedc3..0000000000 --- a/dcc-old/src/plugin-keyboard/window/shortcutsettingwidget.h +++ /dev/null @@ -1,99 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SHORTCUTSETTINGWIDGET_H -#define SHORTCUTSETTINGWIDGET_H - -#include "interface/namespace.h" -#include "operation/shortcutmodel.h" - -#include - -#include - -class QLineEdit; -class QPushButton; -class QVBoxLayout; - -DWIDGET_USE_NAMESPACE -namespace DCC_NAMESPACE { - -class ShortcutModel; -class ShortcutItem; - -class SettingsHead; -class SettingsGroup; - -class ShortCutSettingWidget : public QWidget -{ - Q_OBJECT -public: - explicit ShortCutSettingWidget(ShortcutModel *model, QWidget *parent = nullptr); - void addShortcut(QList list, ShortcutModel::InfoType type); - SettingsHead *getHead() const; - -protected: - void modifyStatus(bool status); - void wheelEvent(QWheelEvent *event) override - { - Q_UNUSED(event) - update(); - } - -Q_SIGNALS: - void delShortcutInfo(ShortcutInfo *info); - void requestDisableShortcut(ShortcutInfo *info); - void shortcutEditChanged(ShortcutInfo *info); - void requestUpdateKey(ShortcutInfo *info); - void requestShowConflict(ShortcutInfo *info, const QString &shortcut); - void requestSaveShortcut(ShortcutInfo *info); - void requestReset(); - void requestSearch(const QString &key); - -public Q_SLOTS: - void onSearchTextChanged(const QString &text); - void onCustomAdded(ShortcutInfo *info); - void onDestroyItem(ShortcutInfo *info); - void onSearchInfo(ShortcutInfo *info, const QString &key); - void onSearchStringFinish(const QList searchList); - void prepareSearchKeys(); - void onRemoveItem(const QString &id, int type); - void onShortcutChanged(ShortcutInfo *info); - void onKeyEvent(bool press, const QString &shortcut); - void onResetFinished(); - -private: - QWidget *m_searchWidget; - QWidget *m_widget; - QPushButton *m_resetBtn; - QLineEdit *m_searchInput; - QString m_searchText; - QVBoxLayout *m_layout; - QVBoxLayout *m_searchLayout; - - // 正在恢复默认快捷键,不能用禁用按钮,因为会导致焦点切换,体验不好 - bool m_bIsResting = false; - - SettingsHead *m_head; - SettingsHead *m_workspaceHead; - SettingsGroup *m_systemGroup; - SettingsGroup *m_windowGroup; - SettingsGroup *m_workspaceGroup; - SettingsGroup *m_assistiveToolsGroup; - SettingsGroup *m_customGroup; - SettingsGroup *m_searchGroup; - QMap m_searchInfos; - // 预留,如果用户太快,可以等带用户输入完成后才搜索 - QTimer *m_searchDelayTimer; - ShortcutModel *m_model; - QList m_allList; - QList m_systemList; - QList m_windowList; - QList m_workspaceList; - QList m_assistiveToolsList; - QList m_customList; - QStringList m_assistiveToolsIdList; - QStringList m_workspaceIdList; -}; -} -#endif // SHORTCUTSETTINGWIDGET_H diff --git a/dcc-old/src/plugin-keyboard/window/systemlanguagesettingdialog.cpp b/dcc-old/src/plugin-keyboard/window/systemlanguagesettingdialog.cpp deleted file mode 100644 index d5a086b3b3..0000000000 --- a/dcc-old/src/plugin-keyboard/window/systemlanguagesettingdialog.cpp +++ /dev/null @@ -1,179 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "systemlanguagesettingdialog.h" -#include "src/plugin-keyboard/operation/keyboardmodel.h" -#include "src/plugin-keyboard/window/indexview.h" - -#include - -using namespace DCC_NAMESPACE; -SystemLanguageSettingDialog::SystemLanguageSettingDialog(KeyboardModel *model, QWidget *parent) - : DAbstractDialog(parent) - , m_searchStatus(false) - , m_keyboardModel(model) - , m_buttonTuple(new ButtonTuple(ButtonTuple::Save)) -{ - setFixedSize(QSize(500, 644)); - QVBoxLayout *mainVLayout = new QVBoxLayout(); - mainVLayout->setContentsMargins(0, 0, 0, 5); - mainVLayout->setSpacing(0); - - m_model = new QStandardItemModel(this); - m_view = new DListView(); - m_view->setAccessibleName("List_languagelist"); - m_view->setFrameShape(QFrame::NoFrame); - m_view->setEditTriggers(QAbstractItemView::NoEditTriggers); - m_view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_view->setBackgroundType(DStyledItemDelegate::ClipCornerBackground); - m_view->setSelectionMode(QAbstractItemView::NoSelection); - m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - - QPushButton *cancel = m_buttonTuple->leftButton(); - cancel->setText(tr("Cancel")); - cancel->setObjectName("Cancel"); - QPushButton *ok = m_buttonTuple->rightButton(); - ok->setText(tr("Add")); - ok->setEnabled(false); - ok->setObjectName("Ok"); - - m_search = new SearchInput(); - QVBoxLayout *listVLayout = new QVBoxLayout(); - listVLayout->setAlignment(Qt::AlignHCenter); - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setTitle(tr("")); - - QLabel *headTitle = new QLabel(tr("Add System Language")); - DFontSizeManager::instance()->bind(headTitle, DFontSizeManager::T5, QFont::DemiBold); // 设置label字体 - headTitle->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - headTitle->setAlignment(Qt::AlignCenter); - - listVLayout->addSpacing(10); - listVLayout->addWidget(m_search); - listVLayout->addSpacing(10); - listVLayout->addWidget(m_view); - listVLayout->addSpacing(10); - listVLayout->addWidget(m_buttonTuple, 0, Qt::AlignBottom); - listVLayout->setContentsMargins(20, 10, 20, 10); - - mainVLayout->setMargin(0); - mainVLayout->addWidget(titleIcon, Qt::AlignTop | Qt::AlignRight); - mainVLayout->addWidget(headTitle, Qt::AlignCenter); - mainVLayout->addLayout(listVLayout); - setLayout(mainVLayout); - setContentsMargins(0, 0, 0, 0); - - installEventFilter(this); - - connect(m_search, &SearchInput::textChanged, this, &SystemLanguageSettingDialog::onSearch); - connect(m_keyboardModel, &KeyboardModel::langChanged, this, &SystemLanguageSettingDialog::setModelData); - connect(cancel, &QPushButton::clicked, this, &SystemLanguageSettingDialog::close); - connect(ok, &QPushButton::clicked, this, &SystemLanguageSettingDialog::onAddLanguage); - connect(m_view, &DListView::clicked, this, &SystemLanguageSettingDialog::onLangSelect); - - setModelData(m_keyboardModel->langLists()); -} - -SystemLanguageSettingDialog::~SystemLanguageSettingDialog() -{ -} - -void SystemLanguageSettingDialog::onSearch(const QString &text) -{ - if (text.length() == 0) { - m_searchStatus = false; - m_view->setModel(m_model); - } else { - m_searchStatus = true; - m_searchModelIndex = QModelIndex(); - m_searchModel = new QStandardItemModel(this); - - for (auto md : m_datas) { - if (md.text().contains(text, Qt::CaseInsensitive)) { - auto item = new DStandardItem(md.text()); - item->setText(md.text()); - item->setData(md.key(),KeyRole); - item->setData(md.pinyin(),PingYinRole); - m_searchModel->appendRow(item); - } - } - m_view->setModel(m_searchModel); - } -} - -void SystemLanguageSettingDialog::onAddLanguage() -{ - if(m_searchStatus) { - Q_EMIT click(m_searchModelIndex); - } else{ - Q_EMIT click(m_modelIndex); - } - - accept(); -} - -void SystemLanguageSettingDialog::onLangSelect(const QModelIndex &index) -{ - if(m_searchStatus) { - updateDataModel(m_searchModel, m_searchModelIndex, index); - } else { - updateDataModel(m_model, m_modelIndex, index); - } -} - -void SystemLanguageSettingDialog::updateDataModel(QStandardItemModel *model, QModelIndex &selectedIndex, const QModelIndex &index) { - - if (selectedIndex.isValid()) { - model->itemFromIndex(selectedIndex)->setCheckState(Qt::Unchecked); - } - - QStandardItem *selectedItem = model->itemFromIndex(index); - if (selectedItem) { - selectedItem->setCheckState(Qt::Checked); - selectedIndex = index; - m_buttonTuple->rightButton()->setEnabled(true); - } -} - -void SystemLanguageSettingDialog::setModelData(const QList &datas) -{ - m_datas = datas; - QStringList removeLangList = m_keyboardModel->localLang(); - for (QList::iterator iter = m_datas.begin(); iter != m_datas.end();) { - if (removeLangList.contains(iter->text())) { - iter = m_datas.erase(iter); - continue; - } - ++iter; - } - - for (auto md : m_datas) { - auto item = new DStandardItem(); - item->setText(md.text()); - item->setData(md.key(),KeyRole); - item->setData(md.pinyin(),PingYinRole); - m_model->appendRow(item); - } - m_view->setModel(m_model); -} - -bool SystemLanguageSettingDialog::eventFilter(QObject *watched, QEvent *event) -{ - Q_UNUSED(watched) - - if (event->type() != QEvent::Move && event->type() != QEvent::Resize) - return false; - - QRect rect = this->rect(); - - rect.moveTopLeft(-pos()); - rect.setHeight(window()->height() - mapTo(window(), rect.topLeft()).y()); - - QPainterPath path; - path.addRoundedRect(rect, 5, 5); - - return false; -} diff --git a/dcc-old/src/plugin-keyboard/window/systemlanguagesettingdialog.h b/dcc-old/src/plugin-keyboard/window/systemlanguagesettingdialog.h deleted file mode 100644 index 8ac555fa37..0000000000 --- a/dcc-old/src/plugin-keyboard/window/systemlanguagesettingdialog.h +++ /dev/null @@ -1,69 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SYSTEMLANGUAGESETTINGDIALOG_H -#define SYSTEMLANGUAGESETTINGDIALOG_H - -#include "interface/namespace.h" -#include "widgets/buttontuple.h" -#include "src/plugin-keyboard/window/searchinput.h" - -#include -#include -#include - -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -namespace DCC_NAMESPACE { -class ButtonTuple; - -class KeyboardModel; -class MetaData; -class IndexModel; -class IndexView; - -class SystemLanguageSettingDialog : public DAbstractDialog -{ - Q_OBJECT -public: - explicit SystemLanguageSettingDialog(KeyboardModel *model, QWidget *parent = nullptr); - ~SystemLanguageSettingDialog(); - - void updateDataModel(QStandardItemModel *model, QModelIndex &selectedIndex, const QModelIndex &index); - - enum LanguageRole{ - TextRole = DTK_NAMESPACE::UserRole + 1, - KeyRole, - PingYinRole - }; - -Q_SIGNALS: - void click(const QModelIndex &index); - -public Q_SLOTS: - void setModelData(const QList &datas); - void onSearch(const QString &text); - void onAddLanguage(); - void onLangSelect(const QModelIndex &index); -protected: - bool eventFilter(QObject *watched, QEvent *event) override; - -private: - bool m_searchStatus; - SearchInput *m_search; - KeyboardModel *m_keyboardModel; - ButtonTuple *m_buttonTuple; - Dtk::Widget::DListView *m_view; - QStandardItemModel *m_model; - QStandardItemModel *m_searchModel; - QList m_datas; - QModelIndex m_modelIndex; - QModelIndex m_searchModelIndex; -}; -} -#endif // SYSTEMLANGUAGESETTINGDIALOG_H diff --git a/dcc-old/src/plugin-keyboard/window/systemlanguagewidget.cpp b/dcc-old/src/plugin-keyboard/window/systemlanguagewidget.cpp deleted file mode 100644 index 2c97855301..0000000000 --- a/dcc-old/src/plugin-keyboard/window/systemlanguagewidget.cpp +++ /dev/null @@ -1,209 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "systemlanguagewidget.h" - -#include "src/plugin-keyboard/operation/keyboardmodel.h" -#include "src/plugin-keyboard/window/keylabel.h" -#include "systemlanguagesettingdialog.h" -#include "widgets/comboxwidget.h" -#include "widgets/settingsgroup.h" -#include "widgets/settingshead.h" -#include "widgets/titlelabel.h" - -#include -#include - -#include -#include -#include -#include -#include - -#include - -DCORE_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -SystemLanguageWidget::SystemLanguageWidget(KeyboardModel *model, QWidget *parent) - : QWidget(parent) - , m_model(model) - , m_langItemModel(new QStandardItemModel(this)) - , m_langListview(std::visit([this]() -> SystemLanguageListView * { - auto langListview = new SystemLanguageListView(this); - langListview->setAccessibleName("SystemLanguageWidget_langListview"); - langListview->setContentsMargins(10, 0, 10, 0); - return langListview; - })) - , m_editSystemLang(std::visit([this]() -> DCommandLinkButton * { - auto editSystemLang = new DCommandLinkButton(tr("Edit"), this); - editSystemLang->setObjectName("Edit"); - return editSystemLang; - })) - , m_settingWidget(nullptr) -{ - QVBoxLayout *layout = new QVBoxLayout(); - layout->setSpacing(10); - - QHBoxLayout *headLayout = new QHBoxLayout(); - TitleLabel *headTitle = new TitleLabel(tr("Language List")); - DFontSizeManager::instance()->bind(headTitle, - DFontSizeManager::T5, - QFont::DemiBold); // 设置label字体 - headLayout->addWidget(headTitle); - headTitle->setContentsMargins(10, 0, 0, 0); - headLayout->addStretch(); - headLayout->addWidget(m_editSystemLang); - - m_langListview->setModel(m_langItemModel); - - DStandardItem *footItem = new DStandardItem(tr("Add Language") + "..."); - footItem->setTextColorRole(DPalette::Highlight); - m_langItemModel->appendRow(footItem); - - layout->addLayout(headLayout); - layout->addWidget(m_langListview); - layout->setContentsMargins(0, 0, 0, 0); - setLayout(layout); - - connect(m_langListview, &DListView::clicked, this, &SystemLanguageWidget::setCurLangChecked); - connect(m_editSystemLang, &QPushButton::clicked, this, &SystemLanguageWidget::onEditClicked); - - connect(m_model, - &KeyboardModel::curLocalLangChanged, - this, - [this](const QStringList &curLocalLang) { - for (int i = 0; i < curLocalLang.size(); i++) { - onAddLanguage(curLocalLang[i]); - } - }); - connect(m_model, &KeyboardModel::curLangChanged, this, &SystemLanguageWidget::onDefault); - QStringList localLangList = m_model->localLang(); - for (int i = 0; i < localLangList.size(); i++) { - onAddLanguage(localLangList[i]); - } - onDefault(m_model->curLang()); - onSetCurLang(m_model->getLangChangedState()); -} - -void SystemLanguageWidget::onEditClicked() -{ - m_bEdit = !m_bEdit; - if (m_bEdit) { - m_editSystemLang->setText(tr("Done")); - int row_count = m_langItemModel->rowCount(); - for (int i = 0; i < row_count - 1; ++i) { - DStandardItem *item = dynamic_cast(m_langItemModel->item(i, 0)); - if (item && (item->checkState() == Qt::Unchecked)) { - DViewItemAction *iconAction = new DViewItemAction(Qt::AlignCenter | Qt::AlignRight, - QSize(), - QSize(), - true); - iconAction->setIcon(DStyle::standardIcon(style(), DStyle::SP_DeleteButton)); - item->setActionList(Qt::RightEdge, { iconAction }); - connect(iconAction, &DViewItemAction::triggered, this, [this, item] { - m_sysLanglist.removeOne(item->text()); - int idx = m_langItemModel->indexFromItem(item).row(); - Q_EMIT delLocalLang(item->text()); - m_langItemModel->removeRow(idx); - m_langListview->adjustSize(); - m_langListview->update(); - m_editSystemLang->setVisible(m_sysLanglist.size() > 1); - }); - } - } - } else { - m_editSystemLang->setText(tr("Edit")); - int row_count = m_langItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - DStandardItem *item = dynamic_cast(m_langItemModel->item(i, 0)); - if (item && (item->checkState() == Qt::Unchecked)) { - item->setActionList(Qt::RightEdge, {}); - } - } - } -} - -void SystemLanguageWidget::onAddLanguage(const QString &localeLang) -{ - if (m_sysLanglist.contains(localeLang)) - return; - - // 去除最后一个item - DStandardItem *endItem = nullptr; - if (m_langItemModel->rowCount() > 0) { - endItem = dynamic_cast( - m_langItemModel->takeItem(m_langItemModel->rowCount() - 1, 0)); - m_langItemModel->removeRow(m_langItemModel->rowCount() - 1); - } - - DStandardItem *item = new DStandardItem(localeLang); - m_langItemModel->appendRow(item); - - // 添加最后一个item - if (endItem != nullptr) { - m_langItemModel->appendRow(endItem); - } - - m_langListview->adjustSize(); - m_langListview->update(); - m_sysLanglist << localeLang; - m_editSystemLang->setVisible(m_sysLanglist.size() > 1); -} - -void SystemLanguageWidget::setCurLangChecked(const QModelIndex &index) -{ - if (index.row() == m_langListview->count() - 1) { - addSystemLanguage(); - return; - } - if (m_bEdit) { - return; - } - int row_count = m_langItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - QStandardItem *item = m_langItemModel->item(i, 0); - if (item && (index.row() == i)) { - item->setCheckState(Qt::Checked); - QString langKey = m_model->langFromText(item->text()); - Q_EMIT setCurLang(langKey); - } else if (item) { // 如果不加此判断,item会出现空指针 - item->setCheckState(Qt::Unchecked); - } - } -} - -void SystemLanguageWidget::onDefault(const QString &curLang) -{ - qDebug() << "curLang is " << curLang; - int row_count = m_langItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - QStandardItem *item = m_langItemModel->item(i, 0); - if (item && (item->text() == curLang)) { - item->setCheckState(Qt::Checked); - } else { - item->setCheckState(Qt::Unchecked); - } - } -} - -void SystemLanguageWidget::onSetCurLang(int value) -{ - qDebug() << "m_langListview & m_editSystemLang" << value; - setEnabled(!value); -} - -void SystemLanguageWidget::addSystemLanguage() -{ - m_bEdit = false; - m_editSystemLang->setText(tr("Edit")); - int row_count = m_langItemModel->rowCount(); - for (int i = 0; i < row_count; ++i) { - DStandardItem *item = dynamic_cast(m_langItemModel->item(i, 0)); - if (item && (item->checkState() == Qt::Unchecked)) { - item->setActionList(Qt::RightEdge, {}); - } - } - emit onSystemLanguageAdded(); -} diff --git a/dcc-old/src/plugin-keyboard/window/systemlanguagewidget.h b/dcc-old/src/plugin-keyboard/window/systemlanguagewidget.h deleted file mode 100644 index 9c711091cb..0000000000 --- a/dcc-old/src/plugin-keyboard/window/systemlanguagewidget.h +++ /dev/null @@ -1,66 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SYSTEMLANGUAGEWIDGET_H -#define SYSTEMLANGUAGEWIDGET_H - -#include "dcclistview.h" -#include "interface/namespace.h" - -#include -#include -#include -#include - -#include -#include - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { -class SystemLanguageSettingWidget; -class KeyboardModel; - -class SystemLanguageListView : public DCCListView -{ - Q_OBJECT -public: - explicit SystemLanguageListView(QWidget *parent = nullptr) - : DCCListView(parent) - { - setSpacing(0); - } -}; - -class SystemLanguageWidget : public QWidget -{ - Q_OBJECT -public: - explicit SystemLanguageWidget(KeyboardModel *model, QWidget *parent = nullptr); -Q_SIGNALS: - void languageAdded(); - void onSystemLanguageAdded(); - void delLocalLang(const QString &localLang); - void setCurLang(const QString &curLang); -public Q_SLOTS: - void onEditClicked(); - void onAddLanguage(const QString &localeLang); - void onDefault(const QString &curLang); - void setCurLangChecked(const QModelIndex &index); - void onSetCurLang(int value); - -private: - void addSystemLanguage(); - -private: - KeyboardModel *m_model; - QStringList m_sysLanglist; - QStandardItemModel *m_langItemModel; - SystemLanguageListView *m_langListview; - DCommandLinkButton *m_editSystemLang; - SystemLanguageSettingWidget *m_settingWidget; - bool m_bEdit{ false }; - DViewItemAction *m_addLayoutAction; -}; -} // namespace DCC_NAMESPACE -#endif // SYSTEMLANGUAGEWIDGET_H diff --git a/dcc-old/src/plugin-keyboard/window/titlebuttonItem.cpp b/dcc-old/src/plugin-keyboard/window/titlebuttonItem.cpp deleted file mode 100644 index d9e0a93312..0000000000 --- a/dcc-old/src/plugin-keyboard/window/titlebuttonItem.cpp +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "titlebuttonItem.h" -#include -#include -#include -#include -using namespace DCC_NAMESPACE; -TitleButtonItem::TitleButtonItem(QFrame *parent) - :SettingsItem(parent) -{ - QHBoxLayout* layout =new QHBoxLayout(); - m_title = new QLabel(); - m_button = new QPushButton(); - - m_title->setWordWrap(true); - - layout->addWidget(m_title); - layout->addStretch(); - layout->addWidget(m_button); - - setLayout(layout); - - connect(m_button, SIGNAL(clicked()), this, SIGNAL(click())); -} - -void TitleButtonItem::setTitle(const QString &title) -{ - m_title->setText(title); - - QTimer::singleShot(1, this, &TitleButtonItem::updateTitleSize); -} - -void TitleButtonItem::setValue(const QString &value) -{ - m_button->setText(value); -} - -void TitleButtonItem::updateTitleSize() -{ - int v = width() - m_button->width() - 32; - if (m_title->fontMetrics().horizontalAdvance(m_title->text()) > v) - m_title->setFixedWidth(v); -} diff --git a/dcc-old/src/plugin-keyboard/window/titlebuttonItem.h b/dcc-old/src/plugin-keyboard/window/titlebuttonItem.h deleted file mode 100644 index f9ac79851a..0000000000 --- a/dcc-old/src/plugin-keyboard/window/titlebuttonItem.h +++ /dev/null @@ -1,33 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TITLEBUTTONITEM_H -#define TITLEBUTTONITEM_H - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -#include -#include -#include - -class TitleButtonItem : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT -public: - explicit TitleButtonItem(QFrame* parent = nullptr); - void setTitle(const QString& title); - void setValue(const QString& value); - -Q_SIGNALS: - void click(); - -private: - void updateTitleSize(); - -private: - QLabel *m_title; - QPushButton *m_button; -}; - -#endif // TITLEBUTTONITEM_H diff --git a/dcc-old/src/plugin-mouse/operation/mousedbusproxy.cpp b/dcc-old/src/plugin-mouse/operation/mousedbusproxy.cpp deleted file mode 100644 index e7c6b875f1..0000000000 --- a/dcc-old/src/plugin-mouse/operation/mousedbusproxy.cpp +++ /dev/null @@ -1,353 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "mousedbusproxy.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; - -const QString Service = "org.deepin.dde.InputDevices1"; -const QString MousePath = "/org/deepin/dde/InputDevice1/Mouse"; -const QString TouchpadPath = "/org/deepin/dde/InputDevice1/TouchPad"; -const QString TrackpointPath = "/org/deepin/dde/InputDevice1/Mouse"; -const QString InputDevicesPath = "/org/deepin/dde/InputDevices1"; -const QString PropertiesInterface = "org.freedesktop.DBus.Properties"; -const QString MouseInterface = "org.deepin.dde.InputDevice1.Mouse"; -const QString TouchpadInterface = "org.deepin.dde.InputDevice1.TouchPad"; -const QString TrackpointInterface = "org.deepin.dde.InputDevice1.TrackPoint"; -const QString InputDevicesInterface = "org.deepin.dde.InputDevices1"; - -MouseDBusProxy::MouseDBusProxy(MouseWorker *worker, QObject *parent) - : QObject(parent) - , m_worker(worker) -{ - init(); -} - -void MouseDBusProxy::active() -{ - // initial mouse settingss - bool exist = m_dbusMouseProperties->call("Get", MouseInterface, "Exist").arguments().at(0).value().variant().toBool(); - bool leftHanded = m_dbusMouseProperties->call("Get", MouseInterface, "LeftHanded").arguments().at(0).value().variant().toBool(); - bool naturalScroll = m_dbusMouseProperties->call("Get", MouseInterface, "NaturalScroll").arguments().at(0).value().variant().toBool(); - int doubleClick = m_dbusMouseProperties->call("Get", MouseInterface, "DoubleClick").arguments().at(0).value().variant().toInt(); - bool disableTpad = m_dbusMouseProperties->call("Get", MouseInterface, "DisableTpad").arguments().at(0).value().variant().toBool(); - bool adaptiveAccelProfile = m_dbusMouseProperties->call("Get", MouseInterface, "AdaptiveAccelProfile").arguments().at(0).value().variant().toBool(); - double motionAcceleration = m_dbusMouseProperties->call("Get", MouseInterface, "MotionAcceleration").arguments().at(0).value().variant().toDouble(); - - m_worker->setMouseExist(exist); - m_worker->setLeftHandState(leftHanded); - m_worker->setMouseNaturalScrollState(naturalScroll); - m_worker->setDouClick(doubleClick); - m_worker->setDisTouchPad(disableTpad); - m_worker->setAccelProfile(adaptiveAccelProfile); - m_worker->setMouseMotionAcceleration(motionAcceleration); - - // initial touchpad settings - motionAcceleration = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "MotionAcceleration").arguments().at(0).value().variant().toDouble(); - bool tapClick = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "TapClick").arguments().at(0).value().variant().toBool(); - exist = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "Exist").arguments().at(0).value().variant().toBool(); - bool touchpadEnabled = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "TPadEnable").arguments().at(0).value().variant().toBool(); - naturalScroll = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "NaturalScroll").arguments().at(0).value().variant().toBool(); - bool disableIfTyping = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "DisableIfTyping").arguments().at(0).value().variant().toBool(); - bool palmDetect = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "PalmDetect").arguments().at(0).value().variant().toInt(); - int palmMinWidth = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "PalmMinWidth").arguments().at(0).value().variant().toInt(); - bool palmMinZ = m_dbusTouchPadProperties->call("Get", TouchpadInterface, "PalmMinZ").arguments().at(0).value().variant().toBool(); - - m_worker->setTouchpadMotionAcceleration(motionAcceleration); - m_worker->setTpadEnabled(touchpadEnabled); - m_worker->setTapClick(tapClick); - m_worker->setTpadExist(exist); - m_worker->setTouchNaturalScrollState(naturalScroll); - m_worker->setDisTyping(disableIfTyping); - m_worker->setPalmDetect(palmDetect); - m_worker->setPalmMinWidth(palmMinWidth); - m_worker->setPalmMinz(palmMinZ); - - // initial redpoint settings - motionAcceleration = m_dbusTrackPointProperties->call("Get", TrackpointInterface, "MotionAcceleration").arguments().at(0).value().variant().toDouble(); - exist = m_dbusTouchPadProperties->call("Get", TrackpointInterface, "Exist").arguments().at(0).value().variant().toBool(); - - m_worker->setTrackPointMotionAcceleration(motionAcceleration); - m_worker->setRedPointExist(exist); - - // initial device properties - uint wheelSpeed = m_dbusDevicesProperties->call("Get", InputDevicesInterface, "WheelSpeed").arguments().at(0).value().variant().toUInt(); - - m_worker->setScrollSpeed(wheelSpeed); -} - -void MouseDBusProxy::deactive() -{ -} - -void MouseDBusProxy::init() -{ - //监控dbus上的属性改变信号 - QDBusConnection::sessionBus().connect(Service, MousePath, PropertiesInterface, "PropertiesChanged", "sa{sv}as", - this, SLOT(onMousePathPropertiesChanged(QDBusMessage))); - - QDBusConnection::sessionBus().connect(Service, TouchpadPath, PropertiesInterface, "PropertiesChanged", "sa{sv}as", - this, SLOT(onTouchpadPathPropertiesChanged(QDBusMessage))); - - QDBusConnection::sessionBus().connect(Service, TrackpointPath, PropertiesInterface, "PropertiesChanged", "sa{sv}as", - this, SLOT(onTrackpointPathPropertiesChanged(QDBusMessage))); - - QDBusConnection::sessionBus().connect(Service, InputDevicesPath, PropertiesInterface, "PropertiesChanged", "sa{sv}as", - this, SLOT(onInputDevicesPathPropertiesChanged(QDBusMessage))); - - //初始化dbus接口 - m_dbusMouseProperties = new QDBusInterface(Service, MousePath, PropertiesInterface, QDBusConnection::sessionBus()); - m_dbusTouchPadProperties = new QDBusInterface(Service, TouchpadPath, PropertiesInterface, QDBusConnection::sessionBus()); - m_dbusTrackPointProperties = new QDBusInterface(Service, TrackpointPath, PropertiesInterface, QDBusConnection::sessionBus()); - m_dbusDevicesProperties = new QDBusInterface(Service, InputDevicesPath, PropertiesInterface, QDBusConnection::sessionBus()); - - m_dbusMouse = new QDBusInterface(Service, MousePath, MouseInterface, QDBusConnection::sessionBus()); - m_dbusTouchPad = new QDBusInterface(Service, TouchpadPath, TouchpadInterface, QDBusConnection::sessionBus()); - m_dbusTrackPoint = new QDBusInterface(Service, TrackpointPath, TrackpointInterface, QDBusConnection::sessionBus()); - m_dbusDevices = new QDBusInterface(Service, InputDevicesPath, InputDevicesInterface, QDBusConnection::sessionBus()); - - - // set Mouse settings from dde-control-center - connect(m_worker, &MouseWorker::requestSetLeftHandState, this, &MouseDBusProxy::setLeftHandState); - connect(m_worker, &MouseWorker::requestSetMouseNaturalScrollState, this, &MouseDBusProxy::setMouseNaturalScrollState); - connect(m_worker, &MouseWorker::requestSetDouClick, this, &MouseDBusProxy::setDouClick); - connect(m_worker, &MouseWorker::requestSetDisTouchPad, this, &MouseDBusProxy::setDisableTouchPadWhenMouseExist); - connect(m_worker, &MouseWorker::requestSetAccelProfile, this, &MouseDBusProxy::setAccelProfile); - connect(m_worker, &MouseWorker::requestSetMouseMotionAcceleration, this, &MouseDBusProxy::setMouseMotionAcceleration); - - // set Touchpad settings from dde-control-center - connect(m_worker, &MouseWorker::requestSetTouchNaturalScrollState, this, &MouseDBusProxy::setTouchNaturalScrollState); - connect(m_worker, &MouseWorker::requestSetDisTyping, this, &MouseDBusProxy::setDisTyping); - connect(m_worker, &MouseWorker::requestSetTouchpadMotionAcceleration, this, &MouseDBusProxy::setTouchpadMotionAcceleration); - connect(m_worker, &MouseWorker::requestSetTapClick, this, &MouseDBusProxy::setTapClick); - connect(m_worker, &MouseWorker::requestSetPalmDetect, this, &MouseDBusProxy::setPalmDetect); - connect(m_worker, &MouseWorker::requestSetPalmMinWidth, this, &MouseDBusProxy::setPalmMinWidth); - connect(m_worker, &MouseWorker::requestSetPalmMinz, this, &MouseDBusProxy::setPalmMinz); - - // set Redpoint settings from dde-control-center - connect(m_worker, &MouseWorker::requestSetTrackPointMotionAcceleration, this, &MouseDBusProxy::setTrackPointMotionAcceleration); - - // set Device properties from dde-control-center - connect(m_worker, &MouseWorker::requestSetScrollSpeed, this, &MouseDBusProxy::setScrollSpeed); - connect(m_worker, &MouseWorker::requestSetTouchpadEnabled, this, &MouseDBusProxy::setTouchpadEnabled); -} - -void MouseDBusProxy::onDefaultReset() -{ - QDBusPendingCallWatcher *watcherMouse = new QDBusPendingCallWatcher(m_dbusMouse->asyncCall("Reset"), this); - QObject::connect(watcherMouse, &QDBusPendingCallWatcher::finished, this, [=](){ - watcherMouse->deleteLater(); - }); - - QDBusPendingCallWatcher *watcherTouchPad = new QDBusPendingCallWatcher(m_dbusTouchPad->asyncCall("Reset"), this); - QObject::connect(watcherTouchPad, &QDBusPendingCallWatcher::finished, this, [=](){ - watcherTouchPad->deleteLater(); - }); - - QDBusPendingCallWatcher *watcherTrackPoint = new QDBusPendingCallWatcher(m_dbusTrackPoint->asyncCall("Reset"), this); - QObject::connect(watcherTrackPoint, &QDBusPendingCallWatcher::finished, this, [=](){ - watcherTrackPoint->deleteLater(); - }); - - QDBusPendingCallWatcher *watcherDevices = new QDBusPendingCallWatcher(m_dbusDevices->asyncCall("Reset"), this); - QObject::connect(watcherDevices, &QDBusPendingCallWatcher::finished, this, [=](){ - watcherDevices->deleteLater(); - }); -} - -void MouseDBusProxy::setLeftHandState(const bool state) -{ - m_dbusMouseProperties->call("Set", MouseInterface, "LeftHanded", state); - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "LeftHanded", state); - m_dbusTrackPointProperties->call("Set", TrackpointInterface, "LeftHanded", state); -} - -void MouseDBusProxy::setDouClick(const int &value) -{ - m_dbusMouseProperties->call("Set", MouseInterface, "DoubleClick", value); - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "DoubleClick", value); -} - -void MouseDBusProxy::setMouseNaturalScrollState(const bool state) -{ - m_dbusMouseProperties->call("Set", MouseInterface, "NaturalScroll", state); -} - -void MouseDBusProxy::setDisableTouchPadWhenMouseExist(const bool state) -{ - m_dbusMouseProperties->call("Set", MouseInterface, "DisableTpad", state); -} - -void MouseDBusProxy::setAccelProfile(const bool state) -{ - m_dbusMouseProperties->call("Set", MouseInterface, "AdaptiveAccelProfile", state); -} - -void MouseDBusProxy::setMouseMotionAcceleration(const double &value) -{ - m_dbusMouseProperties->call("Set", MouseInterface, "MotionAcceleration", value); -} - -void MouseDBusProxy::setTouchNaturalScrollState(const bool state) -{ - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "NaturalScroll", state); -} - -void MouseDBusProxy::setDisTyping(const bool state) -{ - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "DisableIfTyping", state); -} - -void MouseDBusProxy::setTouchpadMotionAcceleration(const double &value) -{ - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "MotionAcceleration", value); -} - -void MouseDBusProxy::setTapClick(const bool state) -{ - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "TapClick", state); -} - -void MouseDBusProxy::setPalmDetect(bool palmDetect) -{ - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "PalmDetect", palmDetect); -} - -void MouseDBusProxy::setPalmMinWidth(int palmMinWidth) -{ - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "PalmMinWidth", palmMinWidth); -} - -void MouseDBusProxy::setPalmMinz(int palmMinz) -{ - m_dbusTouchPadProperties->call("Set", TouchpadInterface, "PalmMinZ", palmMinz); -} - -void MouseDBusProxy::setTouchpadEnabled(bool state) -{ - m_dbusTouchPad->asyncCallWithArgumentList("Enable", { state }); -} - -void MouseDBusProxy::setTrackPointMotionAcceleration(const double &value) -{ - m_dbusTrackPointProperties->call("Set", TrackpointInterface, "MotionAcceleration", value); -} - -void MouseDBusProxy::setScrollSpeed(uint speed) -{ - m_dbusDevicesProperties->call("Set", InputDevicesInterface, "WheelSpeed", speed); -} - - -void MouseDBusProxy::onMousePathPropertiesChanged(QDBusMessage msg) -{ - QList arguments = msg.arguments(); - if (3 != arguments.count()) { - return; - } - QString interfaceName = msg.arguments().at(0).toString(); - if (interfaceName == MouseInterface) { - QVariantMap changedProps = qdbus_cast(arguments.at(1).value()); - QStringList keys = changedProps.keys(); - for (int i = 0; i < keys.size(); i++) { - if (keys.at(i) == "Exist") { - m_worker->setMouseExist(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "LeftHanded") { - m_worker->setLeftHandState(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "NaturalScroll") { - m_worker->setMouseNaturalScrollState(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "DoubleClick") { - m_worker->setDouClick(changedProps.value(keys.at(i)).toInt()); - } else if(keys.at(i) == "DisableTpad") { - m_worker->setDisTouchPad(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "AdaptiveAccelProfile") { - m_worker->setAccelProfile(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "MotionAcceleration") { - m_worker->setMouseMotionAcceleration(changedProps.value(keys.at(i)).toDouble()); - } - } - } -} - -void MouseDBusProxy::onTouchpadPathPropertiesChanged(QDBusMessage msg) -{ - QList arguments = msg.arguments(); - if (3 != arguments.count()) { - return; - } - QString interfaceName = msg.arguments().at(0).toString(); - if (interfaceName == TouchpadInterface) { - QVariantMap changedProps = qdbus_cast(arguments.at(1).value()); - QStringList keys = changedProps.keys(); - for (int i = 0; i < keys.size(); i++) { - if (keys.at(i) == "Exist") { - m_worker->setTpadExist(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "TPadEnable") { - m_worker->setTpadEnabled(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "NaturalScroll") { - m_worker->setTouchNaturalScrollState(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "DisableIfTyping") { - m_worker->setDisTyping(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "DoubleClick") { - m_worker->setDouClick(changedProps.value(keys.at(i)).toInt()); - } else if(keys.at(i) == "MotionAcceleration") { - m_worker->setTouchpadMotionAcceleration(changedProps.value(keys.at(i)).toDouble()); - } else if(keys.at(i) == "TapClick") { - m_worker->setTapClick(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "PalmDetect") { - m_worker->setPalmDetect(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "PalmMinWidth") { - m_worker->setPalmMinWidth(changedProps.value(keys.at(i)).toInt()); - } else if(keys.at(i) == "PalmMinZ") { - m_worker->setPalmMinz(changedProps.value(keys.at(i)).toInt()); - } - } - } -} - -void MouseDBusProxy::onTrackpointPathPropertiesChanged(QDBusMessage msg) -{ - QList arguments = msg.arguments(); - if (3 != arguments.count()) { - return; - } - QString interfaceName = msg.arguments().at(0).toString(); - if (interfaceName == TrackpointInterface) { - QVariantMap changedProps = qdbus_cast(arguments.at(1).value()); - QStringList keys = changedProps.keys(); - for (int i = 0; i < keys.size(); i++) { - if (keys.at(i) == "Exist") { - m_worker->setRedPointExist(changedProps.value(keys.at(i)).toBool()); - } else if(keys.at(i) == "MotionAcceleration") { - m_worker->setTrackPointMotionAcceleration(changedProps.value(keys.at(i)).toDouble()); - } - } - } -} - -void MouseDBusProxy::onInputDevicesPathPropertiesChanged(QDBusMessage msg) -{ - QList arguments = msg.arguments(); - if (3 != arguments.count()) { - return; - } - QString interfaceName = msg.arguments().at(0).toString(); - if (interfaceName == InputDevicesInterface) { - QVariantMap changedProps = qdbus_cast(arguments.at(1).value()); - QStringList keys = changedProps.keys(); - for (int i = 0; i < keys.size(); i++) { - if (keys.at(i) == "WheelSpeed") { - m_worker->setScrollSpeed(changedProps.value(keys.at(i)).toUInt()); - } - } - } -} diff --git a/dcc-old/src/plugin-mouse/operation/mousedbusproxy.h b/dcc-old/src/plugin-mouse/operation/mousedbusproxy.h deleted file mode 100644 index f43df873a8..0000000000 --- a/dcc-old/src/plugin-mouse/operation/mousedbusproxy.h +++ /dev/null @@ -1,73 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MOUSEDBUSPROXY_H -#define MOUSEDBUSPROXY_H - -#include "mouseworker.h" - -#include -#include - -class QDBusInterface; - -namespace DCC_NAMESPACE { -class MouseDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit MouseDBusProxy(MouseWorker *worker, QObject *parent = nullptr); - void active(); - void deactive(); - void init(); - -public Q_SLOTS: - void onDefaultReset(); - void setLeftHandState(const bool state); - void setDouClick(const int &value); - - // mouse settings - void setMouseNaturalScrollState(const bool state); - void setDisableTouchPadWhenMouseExist(const bool state); - void setAccelProfile(const bool state); - void setMouseMotionAcceleration(const double &value); - - // touchpad settings - void setTouchNaturalScrollState(const bool state); - void setDisTyping(const bool state); - void setTouchpadMotionAcceleration(const double &value); - void setTapClick(const bool state); - void setPalmDetect(bool palmDetect); - void setPalmMinWidth(int palmMinWidth); - void setPalmMinz(int palmMinz); - void setTouchpadEnabled(bool state); - - // redpoint settings - void setTrackPointMotionAcceleration(const double &value); - - // device properties - void setScrollSpeed(uint speed); - - void onMousePathPropertiesChanged(QDBusMessage msg); - void onTouchpadPathPropertiesChanged(QDBusMessage msg); - void onTrackpointPathPropertiesChanged(QDBusMessage msg); - void onInputDevicesPathPropertiesChanged(QDBusMessage msg); - -private: - MouseWorker *m_worker; - QDBusInterface *m_dbusMouseProperties; - QDBusInterface *m_dbusTouchPadProperties; - QDBusInterface *m_dbusTrackPointProperties; - QDBusInterface *m_dbusDevicesProperties; - - QDBusInterface *m_dbusMouse; - QDBusInterface *m_dbusTouchPad; - QDBusInterface *m_dbusTrackPoint; - QDBusInterface *m_dbusDevices; - -}; -} - - - -#endif // MOUSEWORKER_H diff --git a/dcc-old/src/plugin-mouse/operation/mousemodel.cpp b/dcc-old/src/plugin-mouse/operation/mousemodel.cpp deleted file mode 100644 index 203b8383ee..0000000000 --- a/dcc-old/src/plugin-mouse/operation/mousemodel.cpp +++ /dev/null @@ -1,224 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "mousemodel.h" - -using namespace DCC_NAMESPACE; -MouseModel::MouseModel(QObject *parent) - : QObject(parent) - , m_leftHandState(false) - , m_disIfTyping(false) - , m_tpadExist(false) - , m_mouseExist(true) - , m_redPointExist(false) - , m_mouseNaturalScroll(false) - , m_tpadNaturalScroll(false) - , m_accelProfile(true) - , m_disTpad(false) - , m_palmDetect(false) - , m_tapclick(false) - , m_touchpadEnabled(true) - , m_doubleSpeed(1) - , m_mouseMoveSpeed(1) - , m_tpadMoveSpeed(1) - , m_redPointMoveSpeed(1) - , m_palmMinWidth(1) - , m_palmMinz(100) - , m_scrollSpeed(1) -{ -} - -MouseModel::~MouseModel() -{ - -} - -void MouseModel::setLeftHandState(const bool state) -{ - if (m_leftHandState == state) - return; - - m_leftHandState = state; - - Q_EMIT leftHandStateChanged(state); -} - -void MouseModel::setDisIfTyping(const bool state) -{ - if (m_disIfTyping == state) - return; - - m_disIfTyping = state; - - Q_EMIT disIfTypingStateChanged(state); -} - -void MouseModel::setTpadExist(bool tpadExist) -{ - if (m_tpadExist == tpadExist) - return; - - m_tpadExist = tpadExist; - - Q_EMIT tpadExistChanged(tpadExist); -} - -void MouseModel::setMouseExist(bool mouseExist) -{ - if (m_mouseExist == mouseExist) - return; - - m_mouseExist = mouseExist; - - Q_EMIT mouseExistChanged(mouseExist); -} - -void MouseModel::setRedPointExist(bool redPointExist) -{ - if (m_redPointExist == redPointExist) - return; - - m_redPointExist = redPointExist; - - Q_EMIT redPointExistChanged(redPointExist); -} - -void MouseModel::setDoubleSpeed(int doubleSpeed) -{ - if (m_doubleSpeed == doubleSpeed) - return; - - m_doubleSpeed = doubleSpeed; - - Q_EMIT doubleSpeedChanged(doubleSpeed); -} - -void MouseModel::setMouseNaturalScroll(bool mouseNaturalScroll) -{ - if (m_mouseNaturalScroll == mouseNaturalScroll) - return; - - m_mouseNaturalScroll = mouseNaturalScroll; - - Q_EMIT mouseNaturalScrollChanged(mouseNaturalScroll); -} - -void MouseModel::setTpadNaturalScroll(bool tpadNaturalScroll) -{ - if (m_tpadNaturalScroll == tpadNaturalScroll) - return; - - m_tpadNaturalScroll = tpadNaturalScroll; - - Q_EMIT tpadNaturalScrollChanged(tpadNaturalScroll); -} - -void MouseModel::setMouseMoveSpeed(int mouseMoveSpeed) -{ - if (m_mouseMoveSpeed == mouseMoveSpeed) - return; - - m_mouseMoveSpeed = mouseMoveSpeed; - - Q_EMIT mouseMoveSpeedChanged(mouseMoveSpeed); -} - -void MouseModel::setTpadMoveSpeed(int tpadMoveSpeed) -{ - if (m_tpadMoveSpeed == tpadMoveSpeed) - return; - - m_tpadMoveSpeed = tpadMoveSpeed; - - Q_EMIT tpadMoveSpeedChanged(tpadMoveSpeed); -} - -void MouseModel::setAccelProfile(bool useAdaptiveProfile) -{ - if (m_accelProfile == useAdaptiveProfile) - return; - - m_accelProfile = useAdaptiveProfile; - - Q_EMIT accelProfileChanged(useAdaptiveProfile); -} - -void MouseModel::setDisTpad(bool disTpad) -{ - if (m_disTpad == disTpad) - return; - - m_disTpad = disTpad; - - Q_EMIT disTpadChanged(disTpad); -} - -void MouseModel::setRedPointMoveSpeed(int redPointMoveSpeed) -{ - if (m_redPointMoveSpeed == redPointMoveSpeed) - return; - - m_redPointMoveSpeed = redPointMoveSpeed; - - Q_EMIT redPointMoveSpeedChanged(redPointMoveSpeed); -} - -void MouseModel::setPalmDetect(bool palmDetect) -{ - if (m_palmDetect == palmDetect) - return; - - m_palmDetect = palmDetect; - - Q_EMIT palmDetectChanged(palmDetect); -} - -void MouseModel::setPalmMinWidth(int palmMinWidth) -{ - if (m_palmMinWidth == palmMinWidth) - return; - - m_palmMinWidth = palmMinWidth; - - Q_EMIT palmMinWidthChanged(palmMinWidth); -} - -void MouseModel::setPalmMinz(int palmMinz) -{ - if (m_palmMinz == palmMinz) - return; - - m_palmMinz = palmMinz; - - Q_EMIT palmMinzChanged(palmMinz); -} - -void MouseModel::setTapClick(bool tapclick) -{ - if (m_tapclick == tapclick) - return; - - m_tapclick = tapclick; - - Q_EMIT tapClickChanged(tapclick); -} - -void MouseModel::setTapEnabled(bool tabEnabled) -{ - if (m_touchpadEnabled == tabEnabled) - return; - - m_touchpadEnabled = tabEnabled; - - Q_EMIT tapEnabledChanged(tabEnabled); -} - -void MouseModel::setScrollSpeed(uint speed) -{ - if (m_scrollSpeed == speed) - return; - - m_scrollSpeed = speed; - - Q_EMIT scrollSpeedChanged(speed); -} diff --git a/dcc-old/src/plugin-mouse/operation/mousemodel.h b/dcc-old/src/plugin-mouse/operation/mousemodel.h deleted file mode 100644 index 885e7053de..0000000000 --- a/dcc-old/src/plugin-mouse/operation/mousemodel.h +++ /dev/null @@ -1,125 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MOUSEMODEL_H -#define MOUSEMODEL_H - -#include "interface/namespace.h" - -#include -#include - -namespace DCC_NAMESPACE { -class MouseModel : public QObject -{ - Q_OBJECT - friend class MouseWorker; -public: - explicit MouseModel(QObject *parent = nullptr); - ~MouseModel(); - - inline bool leftHandState() const { return m_leftHandState; } - void setLeftHandState(const bool state); - - void setDisIfTyping(const bool state); - inline bool disIfTyping() const { return m_disIfTyping; } - - inline bool tpadExist() const { return m_tpadExist; } - void setTpadExist(bool tpadExist); - - inline bool mouseExist() const { return m_mouseExist; } - void setMouseExist(bool mouseExist); - - inline bool redPointExist() const { return m_redPointExist; } - void setRedPointExist(bool redPointExist); - - inline int doubleSpeed() const { return m_doubleSpeed; } - void setDoubleSpeed(int doubleSpeed); - - inline bool mouseNaturalScroll() const { return m_mouseNaturalScroll; } - void setMouseNaturalScroll(bool mouseNaturalScroll); - - inline bool tpadNaturalScroll() const { return m_tpadNaturalScroll; } - void setTpadNaturalScroll(bool tpadNaturalScroll); - - inline int mouseMoveSpeed() const { return m_mouseMoveSpeed; } - void setMouseMoveSpeed(int mouseMoveSpeed); - - inline int tpadMoveSpeed() const { return m_tpadMoveSpeed; } - void setTpadMoveSpeed(int tpadMoveSpeed); - - inline bool accelProfile() const { return m_accelProfile; } - void setAccelProfile(bool useAdaptiveProfile); - - inline bool disTpad() const { return m_disTpad; } - void setDisTpad(bool disTpad); - - inline int redPointMoveSpeed() const { return m_redPointMoveSpeed; } - void setRedPointMoveSpeed(int redPointMoveSpeed); - - inline bool palmDetect() const { return m_palmDetect; } - void setPalmDetect(bool palmDetect); - - inline int palmMinWidth() const { return m_palmMinWidth; } - void setPalmMinWidth(int palmMinWidth); - - inline int palmMinz() const { return m_palmMinz; } - void setPalmMinz(int palmMinz); - - bool tapclick() const { return m_tapclick; } - void setTapClick(bool tapclick); - - bool tapEnabled() const { return m_touchpadEnabled; } - void setTapEnabled(bool tapEnabled); - - uint scrollSpeed() const { return m_scrollSpeed; } - void setScrollSpeed(uint speed); - -Q_SIGNALS: - void leftHandStateChanged(bool state); - void disIfTypingStateChanged(bool state); - void tpadExistChanged(bool tpadExist); - void mouseExistChanged(bool mouseExist); - void redPointExistChanged(bool rPointExist); - void doubleSpeedChanged(int speed); - void mouseNaturalScrollChanged(bool natural); - void tpadNaturalScrollChanged(bool natural); - void mouseMoveSpeedChanged(int speed); - void tpadMoveSpeedChanged(int speed); - void accelProfileChanged(bool useAdaptiveProfile); - void redPointMoveSpeedChanged(int speed); - void disTpadChanged(bool disable); - void palmDetectChanged(bool detect); - void palmMinWidthChanged(int palmMinWidth); - void palmMinzChanged(int palmMinz); - void tapClickChanged(bool tapclick); - void tapEnabledChanged(bool tapclick); - void scrollSpeedChanged(uint speed); - -private: - bool m_leftHandState; - bool m_disIfTyping; - bool m_tpadExist; - bool m_mouseExist; - bool m_redPointExist; - bool m_mouseNaturalScroll; - bool m_tpadNaturalScroll; - bool m_accelProfile; - bool m_disTpad; - bool m_palmDetect; - bool m_tapclick; - bool m_touchpadEnabled; - int m_doubleSpeed; - int m_mouseMoveSpeed; - int m_tpadMoveSpeed; - int m_redPointMoveSpeed; - int m_palmMinWidth; - int m_palmMinz; - uint m_scrollSpeed; -}; - -} - - - -#endif // MOUSEMODEL_H diff --git a/dcc-old/src/plugin-mouse/operation/mouseworker.cpp b/dcc-old/src/plugin-mouse/operation/mouseworker.cpp deleted file mode 100644 index 51bfa66815..0000000000 --- a/dcc-old/src/plugin-mouse/operation/mouseworker.cpp +++ /dev/null @@ -1,243 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "mouseworker.h" - -using namespace DCC_NAMESPACE; -const QString Service = "org.deepin.dde.InputDevices1"; - -MouseWorker::MouseWorker(MouseModel *model, QObject *parent) - : QObject(parent) - , m_model(model) -{ - -} - -void MouseWorker::setMouseExist(bool exist) -{ - m_model->setMouseExist(exist); -} - -void MouseWorker::setTpadExist(bool exist) -{ - m_model->setTpadExist(exist); -} - -void MouseWorker::setTpadEnabled(bool enabled) -{ - m_model->setTapEnabled(enabled); -} - -void MouseWorker::setRedPointExist(bool exist) -{ - m_model->setRedPointExist(exist); -} - -void MouseWorker::setLeftHandState(const bool state) -{ - m_model->setLeftHandState(state); -} - -void MouseWorker::setMouseNaturalScrollState(const bool state) -{ - m_model->setMouseNaturalScroll(state); -} - -void MouseWorker::setTouchNaturalScrollState(const bool state) -{ - m_model->setTpadNaturalScroll(state); -} - -void MouseWorker::setDisTyping(const bool state) -{ - m_model->setDisIfTyping(state); -} - -void MouseWorker::setDisTouchPad(const bool state) -{ - m_model->setDisTpad(state); -} - -void MouseWorker::setTapClick(const bool state) -{ - m_model->setTapClick(state); -} - -void MouseWorker::setDouClick(const int &value) -{ - m_model->setDoubleSpeed(converToDoubleModel(value)); -} - -void MouseWorker::setMouseMotionAcceleration(const double &value) -{ - m_model->setMouseMoveSpeed(converToModelMotionAcceleration(value)); -} - -void MouseWorker::setAccelProfile(const bool state) -{ - m_model->setAccelProfile(state); -} - -void MouseWorker::setTouchpadMotionAcceleration(const double &value) -{ - m_model->setTpadMoveSpeed(converToModelMotionAcceleration(value)); -} - -void MouseWorker::setTrackPointMotionAcceleration(const double &value) -{ - m_model->setRedPointMoveSpeed(converToModelMotionAcceleration(value)); -} - -void MouseWorker::setPalmDetect(bool palmDetect) -{ - m_model->setPalmDetect(palmDetect); -} - -void MouseWorker::setPalmMinWidth(int palmMinWidth) -{ - m_model->setPalmMinWidth(palmMinWidth); -} - -void MouseWorker::setPalmMinz(int palmMinz) -{ - m_model->setPalmMinz(palmMinz); -} - -void MouseWorker::setScrollSpeed(uint speed) -{ - m_model->setScrollSpeed(speed); -} - - -void MouseWorker::onPalmDetectChanged(bool palmDetect) -{ - Q_EMIT requestSetPalmDetect(palmDetect); -} - -void MouseWorker::onPalmMinWidthChanged(int palmMinWidth) -{ - Q_EMIT requestSetPalmMinWidth(palmMinWidth); -} - -void MouseWorker::onPalmMinzChanged(int palmMinz) -{ - Q_EMIT requestSetPalmMinz(palmMinz); -} - -void MouseWorker::onScrollSpeedChanged(int speed) -{ - Q_EMIT requestSetScrollSpeed(static_cast(speed)); -} - -void MouseWorker::onTouchpadEnabledChanged(const bool state) -{ - Q_EMIT requestSetTouchpadEnabled(state); -} - -void MouseWorker::onLeftHandStateChanged(const bool state) -{ - Q_EMIT requestSetLeftHandState(state); -} - -void MouseWorker::onMouseNaturalScrollStateChanged(const bool state) -{ - Q_EMIT requestSetMouseNaturalScrollState(state); -} - -void MouseWorker::onTouchNaturalScrollStateChanged(const bool state) -{ - Q_EMIT requestSetTouchNaturalScrollState(state); -} - -void MouseWorker::onDisTypingChanged(const bool state) -{ - Q_EMIT requestSetDisTyping(state); -} - -void MouseWorker::onDisTouchPadChanged(const bool state) -{ - Q_EMIT requestSetDisTouchPad(state); -} - -void MouseWorker::onTapClick(const bool state) -{ - Q_EMIT requestSetTapClick(state); -} - -void MouseWorker::onDouClickChanged(const int &value) -{ - Q_EMIT requestSetDouClick(converToDouble(value)); -} - -void MouseWorker::onMouseMotionAccelerationChanged(const int &value) -{ - Q_EMIT requestSetMouseMotionAcceleration(converToMotionAcceleration(value)); -} - -void MouseWorker::onAccelProfileChanged(const bool state) -{ - Q_EMIT requestSetAccelProfile(state); -} - -void MouseWorker::onTouchpadMotionAccelerationChanged(const int &value) -{ - Q_EMIT requestSetTouchpadMotionAcceleration(converToMotionAcceleration(value)); -} - -void MouseWorker::onTrackPointMotionAccelerationChanged(const int &value) -{ - Q_EMIT requestSetTrackPointMotionAcceleration(converToMotionAcceleration(value)); -} - -int MouseWorker::converToDouble(int value) -{ - return 800 - value * 100; -} - -int MouseWorker::converToDoubleModel(int value) -{ - return (800 - value) / 100; -} -//conver slider value to real value -double MouseWorker::converToMotionAcceleration(int value) -{ - switch (value) { - case 0: - return 3.2; - case 1: - return 2.3; - case 2: - return 1.6; - case 3: - return 1.0; - case 4: - return 0.6; - case 5: - return 0.3; - case 6: - return 0.2; - default: - return 1.0; - } -} -//conver real value to slider value -int MouseWorker::converToModelMotionAcceleration(double value) -{ - if (value <= 0.2) { - return 6; - } else if (value <= 0.3) { - return 5; - } else if (value <= 0.6) { - return 4; - } else if (value <= 1.0) { - return 3; - } else if (value <= 1.6) { - return 2; - } else if (value <= 2.3) { - return 1; - } else if (value <= 3.2) { - return 0; - } else { - return 3; - } -} diff --git a/dcc-old/src/plugin-mouse/operation/mouseworker.h b/dcc-old/src/plugin-mouse/operation/mouseworker.h deleted file mode 100644 index 46562dc8d6..0000000000 --- a/dcc-old/src/plugin-mouse/operation/mouseworker.h +++ /dev/null @@ -1,92 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MOUSEWORKER_H -#define MOUSEWORKER_H - -#include "interface/namespace.h" -#include "mousemodel.h" - -#include - - -namespace DCC_NAMESPACE { -class MouseWorker : public QObject -{ - Q_OBJECT -public: - explicit MouseWorker(MouseModel *model, QObject *parent = nullptr); - void active(); - void deactive(); - void init(); - -public Q_SLOTS: - void setMouseExist(bool exist); - void setTpadExist(bool exist); - void setTpadEnabled(bool enabled); - void setRedPointExist(bool exist); - void setLeftHandState(const bool state); - void setMouseNaturalScrollState(const bool state); - void setTouchNaturalScrollState(const bool state); - void setDisTyping(const bool state); - void setDisTouchPad(const bool state); - void setTapClick(const bool state); - void setDouClick(const int &value); - void setMouseMotionAcceleration(const double &value); - void setAccelProfile(const bool state); - void setTouchpadMotionAcceleration(const double &value); - void setTrackPointMotionAcceleration(const double &value); - void setPalmDetect(bool palmDetect); - void setPalmMinWidth(int palmMinWidth); - void setPalmMinz(int palmMinz); - void setScrollSpeed(uint speed); - - void onLeftHandStateChanged(const bool state); - void onMouseNaturalScrollStateChanged(const bool state); - void onTouchNaturalScrollStateChanged(const bool state); - void onDisTypingChanged(const bool state); - void onDisTouchPadChanged(const bool state); - void onTapClick(const bool state); - void onDouClickChanged(const int &value); - void onMouseMotionAccelerationChanged(const int &value); - void onAccelProfileChanged(const bool state); - void onTouchpadMotionAccelerationChanged(const int &value); - void onTrackPointMotionAccelerationChanged(const int &value); - void onPalmDetectChanged(bool palmDetect); - void onPalmMinWidthChanged(int palmMinWidth); - void onPalmMinzChanged(int palmMinz); - void onScrollSpeedChanged(int speed); - void onTouchpadEnabledChanged(const bool state); - -Q_SIGNALS: - void requestSetPalmDetect(bool palmDetect); - void requestSetPalmMinWidth(int palmMinWidth); - void requestSetPalmMinz(int palmMinz); - void requestSetScrollSpeed(uint speed); - void requestSetLeftHandState(const bool state); - void requestSetMouseNaturalScrollState(const bool state); - void requestSetTouchNaturalScrollState(const bool state); - void requestSetDisTyping(const bool state); - void requestSetDisTouchPad(const bool state); - void requestSetTapClick(const bool state); - void requestSetDouClick(const int &value); - void requestSetMouseMotionAcceleration(const double &value); - void requestSetAccelProfile(const bool state); - void requestSetTouchpadMotionAcceleration(const double &value); - void requestSetTrackPointMotionAcceleration(const double &value); - void requestSetTouchpadEnabled(const bool state); - -private: - int converToDouble(int value); - int converToDoubleModel(int value); - double converToMotionAcceleration(int value); - int converToModelMotionAcceleration(double value); - -private: - MouseModel *m_model; -}; -} - - - -#endif // MOUSEWORKER_H diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00001.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00001.png deleted file mode 100644 index f0805ed4f7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00001.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00001@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00001@2x.png deleted file mode 100644 index c83768ebab..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00001@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00002.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00002.png deleted file mode 100644 index 9c3f539f7c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00002.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00002@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00002@2x.png deleted file mode 100644 index fb5c5d313a..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00002@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00003.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00003.png deleted file mode 100644 index f1b2ba1a26..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00003.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00003@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00003@2x.png deleted file mode 100644 index 7b3494b46e..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00003@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00004.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00004.png deleted file mode 100644 index 3c3dc210d7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00004.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00004@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00004@2x.png deleted file mode 100644 index aa8befb0b7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00004@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00005.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00005.png deleted file mode 100644 index fa03b52742..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00005.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00005@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00005@2x.png deleted file mode 100644 index e065ae39f6..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00005@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00006.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00006.png deleted file mode 100644 index e255a97d93..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00006.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00006@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00006@2x.png deleted file mode 100644 index 20b220d922..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00006@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00007.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00007.png deleted file mode 100644 index 522cc11ba4..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00007.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00007@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00007@2x.png deleted file mode 100644 index 7f7ad963e7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00007@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00008.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00008.png deleted file mode 100644 index 280d61d87c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00008.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00008@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00008@2x.png deleted file mode 100644 index 82b366b9df..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00008@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00009.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00009.png deleted file mode 100644 index 0f82bae041..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00009.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00009@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00009@2x.png deleted file mode 100644 index 5a37f7d116..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00009@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00010.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00010.png deleted file mode 100644 index 698fcd1f0e..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00010.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00010@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00010@2x.png deleted file mode 100644 index bab30d1b82..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00010@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00011.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00011.png deleted file mode 100644 index 369ad1987f..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00011.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00011@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00011@2x.png deleted file mode 100644 index b3e71bc07c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00011@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00012.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00012.png deleted file mode 100644 index 9f09b05d26..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00012.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00012@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00012@2x.png deleted file mode 100644 index fa21780928..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00012@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00013.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00013.png deleted file mode 100644 index 6dc1bce809..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00013.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00013@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00013@2x.png deleted file mode 100644 index 88e4521715..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00013@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00014.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00014.png deleted file mode 100644 index 1e03a10715..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00014.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00014@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00014@2x.png deleted file mode 100644 index 2fad8bdb93..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00014@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00015.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00015.png deleted file mode 100644 index b6a2cc7252..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00015.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00015@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00015@2x.png deleted file mode 100644 index cfd25ac343..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00015@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00016.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00016.png deleted file mode 100644 index d36cc9cc16..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00016.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00016@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00016@2x.png deleted file mode 100644 index 64f2c9c62a..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00016@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00017.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00017.png deleted file mode 100644 index b5398195a8..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00017.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00017@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00017@2x.png deleted file mode 100644 index 389488f2d5..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00017@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00018.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00018.png deleted file mode 100644 index cb75c011e9..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00018.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00018@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00018@2x.png deleted file mode 100644 index 6be32797eb..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00018@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00019.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00019.png deleted file mode 100644 index c2919203a3..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00019.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00019@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00019@2x.png deleted file mode 100644 index 2f64c91899..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head/bow_head_00019@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00001.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00001.png deleted file mode 100644 index 0d6dd467bf..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00001.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00001@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00001@2x.png deleted file mode 100644 index c8ecf93dbd..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00001@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00002.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00002.png deleted file mode 100644 index c791fd1cce..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00002.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00002@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00002@2x.png deleted file mode 100644 index 0c2f5a8867..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00002@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00003.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00003.png deleted file mode 100644 index 8be6a2db43..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00003.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00003@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00003@2x.png deleted file mode 100644 index 2dca7b5d95..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00003@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00004.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00004.png deleted file mode 100644 index 0f0dbab4fe..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00004.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00004@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00004@2x.png deleted file mode 100644 index 853b65febd..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00004@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00005.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00005.png deleted file mode 100644 index ae5fe65f35..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00005.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00005@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00005@2x.png deleted file mode 100644 index a2e11529e2..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00005@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00006.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00006.png deleted file mode 100644 index f7733bef80..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00006.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00006@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00006@2x.png deleted file mode 100644 index ecea9a1c05..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00006@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00007.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00007.png deleted file mode 100644 index 12888ffd6a..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00007.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00007@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00007@2x.png deleted file mode 100644 index aed3ea59e7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00007@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00008.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00008.png deleted file mode 100644 index e6ed4b36ac..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00008.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00008@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00008@2x.png deleted file mode 100644 index ae1c7643f8..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00008@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00009.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00009.png deleted file mode 100644 index c2919203a3..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00009.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00009@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00009@2x.png deleted file mode 100644 index 2f64c91899..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/bow_head_ears/bow_head_ears_00009@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00001.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00001.png deleted file mode 100644 index c2919203a3..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00001.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00001@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00001@2x.png deleted file mode 100644 index 2f64c91899..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00001@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00002.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00002.png deleted file mode 100644 index adbadb8401..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00002.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00002@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00002@2x.png deleted file mode 100644 index 02bcf1ad52..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00002@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00003.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00003.png deleted file mode 100644 index 5b3208a66c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00003.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00003@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00003@2x.png deleted file mode 100644 index 07f3efe838..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00003@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00004.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00004.png deleted file mode 100644 index 57f4ed267e..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00004.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00004@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00004@2x.png deleted file mode 100644 index 83ded84d5b..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00004@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00005.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00005.png deleted file mode 100644 index fc159c668c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00005.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00005@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00005@2x.png deleted file mode 100644 index bbde7f291d..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00005@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00006.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00006.png deleted file mode 100644 index 96e382904d..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00006.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00006@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00006@2x.png deleted file mode 100644 index 500458e26a..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00006@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00007.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00007.png deleted file mode 100644 index 455485c0f7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00007.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00007@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00007@2x.png deleted file mode 100644 index d64fc87898..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00007@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00008.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00008.png deleted file mode 100644 index d5b3ef4491..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00008.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00008@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00008@2x.png deleted file mode 100644 index e3c1d810dc..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00008@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00009.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00009.png deleted file mode 100644 index 2f1dcb4a69..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00009.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00009@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00009@2x.png deleted file mode 100644 index 58f16e63db..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00009@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00010.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00010.png deleted file mode 100644 index 858acbf8f8..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00010.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00010@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00010@2x.png deleted file mode 100644 index 5b9c25e93b..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00010@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00011.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00011.png deleted file mode 100644 index 1515f396e6..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00011.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00011@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00011@2x.png deleted file mode 100644 index 6cefe8f083..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00011@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00012.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00012.png deleted file mode 100644 index 10e9ff71d6..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00012.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00012@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00012@2x.png deleted file mode 100644 index 2bb864b4de..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00012@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00013.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00013.png deleted file mode 100644 index 19f48169cc..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00013.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00013@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00013@2x.png deleted file mode 100644 index 45d00a8372..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00013@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00014.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00014.png deleted file mode 100644 index 19f48169cc..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00014.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00014@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00014@2x.png deleted file mode 100644 index 45d00a8372..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00014@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00015.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00015.png deleted file mode 100644 index 19f48169cc..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00015.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00015@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00015@2x.png deleted file mode 100644 index 45d00a8372..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00015@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00016.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00016.png deleted file mode 100644 index 19f48169cc..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00016.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00016@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00016@2x.png deleted file mode 100644 index 45d00a8372..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00016@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00017.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00017.png deleted file mode 100644 index fea0460e9f..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00017.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00017@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00017@2x.png deleted file mode 100644 index 669d341eed..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00017@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00018.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00018.png deleted file mode 100644 index b9bc23c8ad..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00018.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00018@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00018@2x.png deleted file mode 100644 index 07558a24a8..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00018@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00019.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00019.png deleted file mode 100644 index 69312d81ed..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00019.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00019@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00019@2x.png deleted file mode 100644 index 739f04783b..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00019@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00020.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00020.png deleted file mode 100644 index 2441747b32..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00020.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00020@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00020@2x.png deleted file mode 100644 index ebe9d27ef7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00020@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00021.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00021.png deleted file mode 100644 index f647a357b2..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00021.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00021@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00021@2x.png deleted file mode 100644 index 8cf331454c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00021@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00022.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00022.png deleted file mode 100644 index f647a357b2..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00022.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00022@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00022@2x.png deleted file mode 100644 index 8cf331454c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00022@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00023.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00023.png deleted file mode 100644 index f647a357b2..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00023.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00023@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00023@2x.png deleted file mode 100644 index 8cf331454c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00023@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00024.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00024.png deleted file mode 100644 index f647a357b2..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00024.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00024@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00024@2x.png deleted file mode 100644 index 8cf331454c..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00024@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00025.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00025.png deleted file mode 100644 index ae9ef3affc..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00025.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00025@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00025@2x.png deleted file mode 100644 index d243438737..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00025@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00026.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00026.png deleted file mode 100644 index 6dbda039ae..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00026.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00026@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00026@2x.png deleted file mode 100644 index 908fed09b4..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00026@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00027.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00027.png deleted file mode 100644 index 179c043d61..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00027.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00027@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00027@2x.png deleted file mode 100644 index 4b24f19c68..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00027@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00028.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00028.png deleted file mode 100644 index 77fe2ef724..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00028.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00028@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00028@2x.png deleted file mode 100644 index 7364c67ed1..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00028@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00029.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00029.png deleted file mode 100644 index 08a266d6bb..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00029.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00029@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00029@2x.png deleted file mode 100644 index 3787481133..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00029@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00030.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00030.png deleted file mode 100644 index a4ce89232d..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00030.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00030@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00030@2x.png deleted file mode 100644 index 7ff7370bb0..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00030@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00031.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00031.png deleted file mode 100644 index aea697a526..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00031.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00031@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00031@2x.png deleted file mode 100644 index b8b300e69a..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00031@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00032.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00032.png deleted file mode 100644 index 5f2475e5ab..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00032.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00032@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00032@2x.png deleted file mode 100644 index 02d1692516..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00032@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00033.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00033.png deleted file mode 100644 index aceb101ee6..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00033.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00033@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00033@2x.png deleted file mode 100644 index e0603e4605..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00033@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00034.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00034.png deleted file mode 100644 index 196e0b3127..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00034.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00034@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00034@2x.png deleted file mode 100644 index f93575681a..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00034@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00035.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00035.png deleted file mode 100644 index 8172bacf93..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00035.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00035@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00035@2x.png deleted file mode 100644 index d1c68d9551..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00035@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00036.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00036.png deleted file mode 100644 index d114851f35..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00036.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00036@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00036@2x.png deleted file mode 100644 index 8d91e3e5d1..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00036@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00037.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00037.png deleted file mode 100644 index f0805ed4f7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00037.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00037@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00037@2x.png deleted file mode 100644 index c83768ebab..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head/raise_head_00037@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00001.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00001.png deleted file mode 100644 index 8f10b86017..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00001.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00001@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00001@2x.png deleted file mode 100644 index 20f37c6ab0..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00001@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00002.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00002.png deleted file mode 100644 index fdaa9d4722..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00002.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00002@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00002@2x.png deleted file mode 100644 index be68cc3bb1..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00002@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00003.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00003.png deleted file mode 100644 index a77543cca3..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00003.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00003@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00003@2x.png deleted file mode 100644 index 5a60105240..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00003@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00004.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00004.png deleted file mode 100644 index 39a4e1ce88..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00004.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00004@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00004@2x.png deleted file mode 100644 index e72c0f7ca2..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00004@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00005.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00005.png deleted file mode 100644 index e801730c71..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00005.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00005@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00005@2x.png deleted file mode 100644 index 72a6c68dd3..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00005@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00006.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00006.png deleted file mode 100644 index 509484caef..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00006.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00006@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00006@2x.png deleted file mode 100644 index 60adf58124..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00006@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00007.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00007.png deleted file mode 100644 index 0954214b2e..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00007.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00007@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00007@2x.png deleted file mode 100644 index 72e2e3bc4e..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00007@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00008.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00008.png deleted file mode 100644 index 8d95d5308b..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00008.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00008@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00008@2x.png deleted file mode 100644 index 93d6d09566..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00008@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00009.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00009.png deleted file mode 100644 index f0805ed4f7..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00009.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00009@2x.png b/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00009@2x.png deleted file mode 100644 index c83768ebab..0000000000 Binary files a/dcc-old/src/plugin-mouse/operation/qrc/double_test/raise_head_ears/raise_head_ears_00009@2x.png and /dev/null differ diff --git a/dcc-old/src/plugin-mouse/operation/qrc/icons/dcc_nav_mouse_42px.svg b/dcc-old/src/plugin-mouse/operation/qrc/icons/dcc_nav_mouse_42px.svg deleted file mode 100644 index 5bc7c30c0c..0000000000 --- a/dcc-old/src/plugin-mouse/operation/qrc/icons/dcc_nav_mouse_42px.svg +++ /dev/null @@ -1,52 +0,0 @@ - - - dcc_nav_mouse_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-mouse/operation/qrc/icons/dcc_nav_mouse_84px.svg b/dcc-old/src/plugin-mouse/operation/qrc/icons/dcc_nav_mouse_84px.svg deleted file mode 100644 index 46993801c4..0000000000 --- a/dcc-old/src/plugin-mouse/operation/qrc/icons/dcc_nav_mouse_84px.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - dcc_nav_mouse_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-mouse/operation/qrc/mouse.qrc b/dcc-old/src/plugin-mouse/operation/qrc/mouse.qrc deleted file mode 100644 index cdea5c8325..0000000000 --- a/dcc-old/src/plugin-mouse/operation/qrc/mouse.qrc +++ /dev/null @@ -1,156 +0,0 @@ - - - icons/dcc_nav_mouse_42px.svg - icons/dcc_nav_mouse_84px.svg - - - double_test/bow_head/bow_head_00001.png - double_test/bow_head/bow_head_00002.png - double_test/bow_head/bow_head_00003.png - double_test/bow_head/bow_head_00004.png - double_test/bow_head/bow_head_00005.png - double_test/bow_head/bow_head_00006.png - double_test/bow_head/bow_head_00007.png - double_test/bow_head/bow_head_00008.png - double_test/bow_head/bow_head_00009.png - double_test/bow_head/bow_head_00010.png - double_test/bow_head/bow_head_00011.png - double_test/bow_head/bow_head_00012.png - double_test/bow_head/bow_head_00013.png - double_test/bow_head/bow_head_00014.png - double_test/bow_head/bow_head_00015.png - double_test/bow_head/bow_head_00016.png - double_test/bow_head/bow_head_00017.png - double_test/bow_head_ears/bow_head_ears_00001.png - double_test/bow_head_ears/bow_head_ears_00002.png - double_test/bow_head_ears/bow_head_ears_00003.png - double_test/bow_head_ears/bow_head_ears_00004.png - double_test/bow_head_ears/bow_head_ears_00005.png - double_test/bow_head_ears/bow_head_ears_00006.png - double_test/bow_head_ears/bow_head_ears_00007.png - double_test/bow_head_ears/bow_head_ears_00008.png - double_test/bow_head_ears/bow_head_ears_00009.png - double_test/raise_head/raise_head_00001.png - double_test/raise_head/raise_head_00002.png - double_test/raise_head/raise_head_00003.png - double_test/raise_head/raise_head_00004.png - double_test/raise_head/raise_head_00005.png - double_test/raise_head/raise_head_00006.png - double_test/raise_head/raise_head_00007.png - double_test/raise_head/raise_head_00008.png - double_test/raise_head/raise_head_00009.png - double_test/raise_head/raise_head_00010.png - double_test/raise_head/raise_head_00011.png - double_test/raise_head/raise_head_00012.png - double_test/raise_head/raise_head_00013.png - double_test/raise_head/raise_head_00014.png - double_test/raise_head/raise_head_00015.png - double_test/raise_head/raise_head_00016.png - double_test/raise_head/raise_head_00017.png - double_test/raise_head/raise_head_00018.png - double_test/raise_head/raise_head_00019.png - double_test/raise_head/raise_head_00020.png - double_test/raise_head/raise_head_00021.png - double_test/raise_head/raise_head_00022.png - double_test/raise_head/raise_head_00023.png - double_test/raise_head/raise_head_00024.png - double_test/raise_head/raise_head_00025.png - double_test/raise_head/raise_head_00026.png - double_test/raise_head/raise_head_00027.png - double_test/raise_head/raise_head_00028.png - double_test/raise_head/raise_head_00029.png - double_test/raise_head/raise_head_00030.png - double_test/raise_head/raise_head_00031.png - double_test/raise_head/raise_head_00032.png - double_test/raise_head/raise_head_00033.png - double_test/raise_head/raise_head_00034.png - double_test/raise_head/raise_head_00035.png - double_test/raise_head/raise_head_00036.png - double_test/raise_head/raise_head_00037.png - double_test/raise_head_ears/raise_head_ears_00001.png - double_test/raise_head_ears/raise_head_ears_00002.png - double_test/raise_head_ears/raise_head_ears_00003.png - double_test/raise_head_ears/raise_head_ears_00004.png - double_test/raise_head_ears/raise_head_ears_00005.png - double_test/raise_head_ears/raise_head_ears_00006.png - double_test/raise_head_ears/raise_head_ears_00007.png - double_test/raise_head_ears/raise_head_ears_00008.png - double_test/raise_head_ears/raise_head_ears_00009.png - double_test/bow_head/bow_head_00001@2x.png - double_test/bow_head/bow_head_00002@2x.png - double_test/bow_head/bow_head_00003@2x.png - double_test/bow_head/bow_head_00004@2x.png - double_test/bow_head/bow_head_00005@2x.png - double_test/bow_head/bow_head_00006@2x.png - double_test/bow_head/bow_head_00007@2x.png - double_test/bow_head/bow_head_00008@2x.png - double_test/bow_head/bow_head_00009@2x.png - double_test/bow_head/bow_head_00010@2x.png - double_test/bow_head/bow_head_00011@2x.png - double_test/bow_head/bow_head_00012@2x.png - double_test/bow_head/bow_head_00013@2x.png - double_test/bow_head/bow_head_00014@2x.png - double_test/bow_head/bow_head_00015@2x.png - double_test/bow_head/bow_head_00016@2x.png - double_test/bow_head/bow_head_00017@2x.png - double_test/bow_head/bow_head_00018.png - double_test/bow_head/bow_head_00018@2x.png - double_test/bow_head/bow_head_00019.png - double_test/bow_head/bow_head_00019@2x.png - double_test/bow_head_ears/bow_head_ears_00001@2x.png - double_test/bow_head_ears/bow_head_ears_00002@2x.png - double_test/bow_head_ears/bow_head_ears_00003@2x.png - double_test/bow_head_ears/bow_head_ears_00004@2x.png - double_test/bow_head_ears/bow_head_ears_00005@2x.png - double_test/bow_head_ears/bow_head_ears_00006@2x.png - double_test/bow_head_ears/bow_head_ears_00007@2x.png - double_test/bow_head_ears/bow_head_ears_00008@2x.png - double_test/bow_head_ears/bow_head_ears_00009@2x.png - double_test/raise_head/raise_head_00001@2x.png - double_test/raise_head/raise_head_00002@2x.png - double_test/raise_head/raise_head_00003@2x.png - double_test/raise_head/raise_head_00004@2x.png - double_test/raise_head/raise_head_00005@2x.png - double_test/raise_head/raise_head_00006@2x.png - double_test/raise_head/raise_head_00007@2x.png - double_test/raise_head/raise_head_00008@2x.png - double_test/raise_head/raise_head_00009@2x.png - double_test/raise_head/raise_head_00010@2x.png - double_test/raise_head/raise_head_00011@2x.png - double_test/raise_head/raise_head_00012@2x.png - double_test/raise_head/raise_head_00013@2x.png - double_test/raise_head/raise_head_00014@2x.png - double_test/raise_head/raise_head_00015@2x.png - double_test/raise_head/raise_head_00016@2x.png - double_test/raise_head/raise_head_00017@2x.png - double_test/raise_head/raise_head_00018@2x.png - double_test/raise_head/raise_head_00019@2x.png - double_test/raise_head/raise_head_00020@2x.png - double_test/raise_head/raise_head_00021@2x.png - double_test/raise_head/raise_head_00022@2x.png - double_test/raise_head/raise_head_00023@2x.png - double_test/raise_head/raise_head_00024@2x.png - double_test/raise_head/raise_head_00025@2x.png - double_test/raise_head/raise_head_00026@2x.png - double_test/raise_head/raise_head_00027@2x.png - double_test/raise_head/raise_head_00028@2x.png - double_test/raise_head/raise_head_00029@2x.png - double_test/raise_head/raise_head_00030@2x.png - double_test/raise_head/raise_head_00031@2x.png - double_test/raise_head/raise_head_00032@2x.png - double_test/raise_head/raise_head_00033@2x.png - double_test/raise_head/raise_head_00034@2x.png - double_test/raise_head/raise_head_00035@2x.png - double_test/raise_head/raise_head_00036@2x.png - double_test/raise_head/raise_head_00037@2x.png - double_test/raise_head_ears/raise_head_ears_00001@2x.png - double_test/raise_head_ears/raise_head_ears_00002@2x.png - double_test/raise_head_ears/raise_head_ears_00003@2x.png - double_test/raise_head_ears/raise_head_ears_00004@2x.png - double_test/raise_head_ears/raise_head_ears_00005@2x.png - double_test/raise_head_ears/raise_head_ears_00006@2x.png - double_test/raise_head_ears/raise_head_ears_00007@2x.png - double_test/raise_head_ears/raise_head_ears_00008@2x.png - double_test/raise_head_ears/raise_head_ears_00009@2x.png - - diff --git a/dcc-old/src/plugin-mouse/window/MousePlugin.json b/dcc-old/src/plugin-mouse/window/MousePlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-mouse/window/MousePlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-mouse/window/doutestwidget.cpp b/dcc-old/src/plugin-mouse/window/doutestwidget.cpp deleted file mode 100644 index 2fb9626903..0000000000 --- a/dcc-old/src/plugin-mouse/window/doutestwidget.cpp +++ /dev/null @@ -1,106 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "doutestwidget.h" - -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -using namespace DCC_NAMESPACE; - -DouTestWidget::DouTestWidget(QWidget *parent) - : SettingsItem(parent) - , m_mainlayout(nullptr) - , m_testWidget(nullptr) - , m_state(State::BOW) -{ - m_mainlayout = new QVBoxLayout; - QLabel *title = new QLabel(tr("Double-click Test")); -// m_mainlayout->setContentsMargins(20, 10, 10, 10); - m_mainlayout->addWidget(title, 0, Qt::AlignLeft); - m_testWidget = new DPictureSequenceView; - m_testWidget->setAccessibleName("DouTestWidget_testWidget"); - m_testWidget->setFixedSize(128, 76); - m_testWidget->setSingleShot(true); - m_mainlayout->addWidget(m_testWidget, 0, Qt::AlignCenter); - setLayout(m_mainlayout); - - //raise head - for (int i = 1; i < 38; i++) { - QString arg = QString::asprintf("%5.d", i).replace(' ', '0'); - QString path = QString(":/mouse/double_test/raise_head/raise_head_%1.png").arg(arg); - m_doubleTest.double_1 << path; - } - - //bow head - for (int i = 1; i < 18; i++) { - QString arg = QString::asprintf("%5.d", i).replace(' ', '0'); - QString path = QString(":/mouse/double_test/bow_head/bow_head_%1.png").arg(arg); - m_doubleTest.double_2 << path; - } - //raise head ears - for (int i = 1; i < 10; i++) { - QString arg = QString::asprintf("%5.d", i).replace(' ', '0'); - QString path = QString(":/mouse/double_test/raise_head_ears/raise_head_ears_%1.png").arg(arg); - m_doubleTest.click_2 << path; - } - //bow head ears - for (int i = 1; i < 10; i++) { - QString arg = QString::asprintf("%5.d", i).replace(' ', '0'); - QString path = QString(":/mouse/double_test/bow_head_ears/bow_head_ears_%1.png").arg(arg); - m_doubleTest.click_1 << path; - } - - m_state = State::BOW; - m_testWidget->setPictureSequence(m_doubleTest.click_1); - - connect(m_testWidget, &DPictureSequenceView::playEnd, [ = ] { - switch (m_state) - { - case BOW: - m_testWidget->setPictureSequence(m_doubleTest.double_1); - return; - case RAISE: - m_testWidget->setPictureSequence(m_doubleTest.double_2); - return; - } - }); - -} - -void DouTestWidget::mousePressEvent(QMouseEvent *) -{ - switch (m_state) { - case BOW: - m_testWidget->setPictureSequence(m_doubleTest.click_1); - m_testWidget->play(); - return; - case RAISE: - m_testWidget->setPictureSequence(m_doubleTest.click_2); - m_testWidget->play(); - return; - } -} - -void DouTestWidget::mouseDoubleClickEvent(QMouseEvent *) -{ - switch (m_state) { - case BOW: - m_testWidget->setPictureSequence(m_doubleTest.double_1); - m_state = State::RAISE; - m_testWidget->play(); - return; - case RAISE: - m_testWidget->setPictureSequence(m_doubleTest.double_2); - m_state = State::BOW; - m_testWidget->play(); - return; - } -} - - diff --git a/dcc-old/src/plugin-mouse/window/doutestwidget.h b/dcc-old/src/plugin-mouse/window/doutestwidget.h deleted file mode 100644 index 697c7f2ab0..0000000000 --- a/dcc-old/src/plugin-mouse/window/doutestwidget.h +++ /dev/null @@ -1,48 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DOUTESTWIDGET_H -#define DOUTESTWIDGET_H - -#include "widgets/settingsitem.h" -#include -#include - -DWIDGET_USE_NAMESPACE -class QMouseEvent; -class QVBoxLayout; - -namespace DCC_NAMESPACE -{ -class SettingsItem; -class DouTestWidget : public SettingsItem -{ - Q_OBJECT -public: - explicit DouTestWidget(QWidget *parent = nullptr); - - enum State { - BOW,RAISE - }; - - struct DoubleTestPic { - QStringList double_1; - QStringList double_2; - QStringList click_1; - QStringList click_2; - }; - -protected: - void mousePressEvent(QMouseEvent *event); - void mouseDoubleClickEvent(QMouseEvent *event); - -private: - QVBoxLayout *m_mainlayout; - DPictureSequenceView *m_testWidget; - State m_state; - DoubleTestPic m_doubleTest; -}; -} - - -#endif // DOUTESTWIDGET_H diff --git a/dcc-old/src/plugin-mouse/window/generalsettingwidget.cpp b/dcc-old/src/plugin-mouse/window/generalsettingwidget.cpp deleted file mode 100644 index 876831bdb2..0000000000 --- a/dcc-old/src/plugin-mouse/window/generalsettingwidget.cpp +++ /dev/null @@ -1,144 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "generalsettingwidget.h" - -#include "doutestwidget.h" -#include "palmdetectsetting.h" -#include "src/plugin-mouse/operation/mousemodel.h" -#include "src/plugin-mouse/operation/mouseworker.h" -#include "widgets/dccslider.h" -#include "widgets/settingsgroup.h" -#include "widgets/switchwidget.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; - -GeneralSettingWidget::GeneralSettingWidget(QWidget *parent) - : QWidget(parent) - , m_mouseModel(nullptr) - , m_generalSettingsGrp(nullptr) -{ - QFrame *frame = new QFrame(this); - frame->setAccessibleName("GeneralSettingWidget_frame"); - m_generalSettingsGrp = new SettingsGroup(frame); - - m_leftHand = new SwitchWidget(tr("Left Hand"), frame); - m_leftHand->setObjectName("leftHand"); - - m_disInTyping = new SwitchWidget(tr("Disable touchpad while typing"), frame); - m_disInTyping->setObjectName("disInTyping"); - - m_scrollSpeedSlider = new TitledSliderItem(tr("Scrolling Speed"), frame); - m_scrollSpeedSlider->setObjectName("scrollSpeed"); - - m_doubleSlider = new TitledSliderItem(tr("Double-click Speed"), frame); - m_doubleSlider->setObjectName("doubleClicked"); - - m_doubleTest = new DouTestWidget(this); - - DCCSlider *speedSlider = m_scrollSpeedSlider->slider(); - speedSlider->setType(DCCSlider::Vernier); - speedSlider->setTickPosition(QSlider::TicksBelow); - speedSlider->setRange(1, 10); - speedSlider->setTickInterval(1); - speedSlider->setPageStep(1); - QStringList speedList; - speedList << tr("Slow") << "" - << "" - << "" - << "" - << "" - << "" - << "" - << "" << tr("Fast"); - m_scrollSpeedSlider->setAnnotations(speedList); - - QStringList doublelist; - doublelist << tr("Slow") << "" - << "" - << "" - << "" - << ""; - doublelist << tr("Fast"); - DCCSlider *doubleSlider = m_doubleSlider->slider(); - doubleSlider->setType(DCCSlider::Vernier); - doubleSlider->setTickPosition(QSlider::TicksBelow); - doubleSlider->setRange(0, 6); - doubleSlider->setTickInterval(1); - doubleSlider->setPageStep(1); - m_doubleSlider->setAnnotations(doublelist); - - m_generalSettingsGrp->setSpacing(10); - m_generalSettingsGrp->appendItem(m_leftHand); - m_generalSettingsGrp->appendItem(m_disInTyping); - m_generalSettingsGrp->appendItem(m_scrollSpeedSlider); - m_generalSettingsGrp->appendItem(m_doubleSlider); - m_generalSettingsGrp->appendItem(m_doubleTest); - - m_contentLayout = new QVBoxLayout(this); - m_contentLayout->addWidget(m_generalSettingsGrp); - m_contentLayout->setAlignment(Qt::AlignTop); - m_contentLayout->setSpacing(10); - m_contentLayout->setContentsMargins(0, 10, 0, 5); // 右侧间距为10 补下面的 8 - setLayout(m_contentLayout); - - connect(m_leftHand, - &SwitchWidget::checkedChanged, - this, - &GeneralSettingWidget::requestSetLeftHand); - connect(m_disInTyping, - &SwitchWidget::checkedChanged, - this, - &GeneralSettingWidget::requestSetDisTyping); - connect(m_scrollSpeedSlider->slider(), - &DCCSlider::valueChanged, - this, - &GeneralSettingWidget::requestScrollSpeed); - connect(m_doubleSlider->slider(), - &DCCSlider::valueChanged, - this, - &GeneralSettingWidget::requestSetDouClick); -} - -GeneralSettingWidget::~GeneralSettingWidget() { } - -void GeneralSettingWidget::setModel(MouseModel *const model) -{ - m_mouseModel = model; - - connect(model, &MouseModel::tpadExistChanged, m_disInTyping, &SwitchWidget::setVisible); - connect(model, &MouseModel::leftHandStateChanged, m_leftHand, &SwitchWidget::setChecked); - connect(model, &MouseModel::disIfTypingStateChanged, m_disInTyping, &SwitchWidget::setChecked); - connect(model, - &MouseModel::doubleSpeedChanged, - this, - &GeneralSettingWidget::onDoubleClickSpeedChanged); - connect(model, - &MouseModel::scrollSpeedChanged, - this, - &GeneralSettingWidget::onScrollSpeedChanged); - m_leftHand->setChecked(model->leftHandState()); - m_disInTyping->setChecked(model->disIfTyping()); - m_disInTyping->setVisible(model->tpadExist()); - onDoubleClickSpeedChanged(model->doubleSpeed()); - onScrollSpeedChanged(model->scrollSpeed()); -} - -void GeneralSettingWidget::onDoubleClickSpeedChanged(int speed) -{ - speed = qBound(0, speed, 6); - m_doubleSlider->slider()->blockSignals(true); - m_doubleSlider->slider()->setValue(speed); - m_doubleSlider->slider()->blockSignals(false); -} - -void GeneralSettingWidget::onScrollSpeedChanged(uint speed) -{ - m_scrollSpeedSlider->slider()->blockSignals(true); - m_scrollSpeedSlider->slider()->setValue(static_cast(speed)); - m_scrollSpeedSlider->slider()->blockSignals(false); -} diff --git a/dcc-old/src/plugin-mouse/window/generalsettingwidget.h b/dcc-old/src/plugin-mouse/window/generalsettingwidget.h deleted file mode 100644 index 07194ac0ed..0000000000 --- a/dcc-old/src/plugin-mouse/window/generalsettingwidget.h +++ /dev/null @@ -1,52 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef GENERALSETTINGWIDGET_H -#define GENERALSETTINGWIDGET_H - -#include "interface/namespace.h" -#include "src/plugin-mouse/operation/mousemodel.h" -#include "src/plugin-mouse/operation/mouseworker.h" - -#include - -class QVBoxLayout; - -namespace DCC_NAMESPACE { -class DouTestWidget; - -class SettingsGroup; -class SwitchWidget; -class TitledSliderItem; -} - -namespace DCC_NAMESPACE { -class GeneralSettingWidget : public QWidget -{ - Q_OBJECT -public: - explicit GeneralSettingWidget(QWidget *parent = nullptr); - ~GeneralSettingWidget(); - - void setModel(MouseModel *const model); -Q_SIGNALS: - void requestSetLeftHand(const bool state); - void requestSetDisTyping(const bool state); - void requestScrollSpeed(const int speed); - void requestSetDouClick(const int value); -private: - void onDoubleClickSpeedChanged(int speed); - void onScrollSpeedChanged(uint speed); -private: - MouseModel *m_mouseModel; - SettingsGroup *m_generalSettingsGrp; - - SwitchWidget *m_leftHand; - SwitchWidget *m_disInTyping; - TitledSliderItem *m_doubleSlider; - TitledSliderItem *m_scrollSpeedSlider; - DouTestWidget *m_doubleTest; - QVBoxLayout *m_contentLayout; -}; -} -#endif // GENERALSETTINGWIDGET_H diff --git a/dcc-old/src/plugin-mouse/window/mousemodule.cpp b/dcc-old/src/plugin-mouse/window/mousemodule.cpp deleted file mode 100644 index f9a53b44ae..0000000000 --- a/dcc-old/src/plugin-mouse/window/mousemodule.cpp +++ /dev/null @@ -1,143 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "mousemodule.h" -#include "generalsettingwidget.h" -#include "mousesettingwidget.h" -#include "touchpadsettingwidget.h" -#include "trackpointsettingwidget.h" -#include "interface/pagemodule.h" - -#include "src/plugin-mouse/operation/mousemodel.h" -#include "src/plugin-mouse/operation/mouseworker.h" -#include "src/plugin-mouse/operation/mousedbusproxy.h" - -#include -#include -#include -DGUI_USE_NAMESPACE - -using namespace DCC_NAMESPACE; - -MouseModule::MouseModule(QObject *parent) - : HListModule(parent) - , m_model(nullptr) - , m_worker(nullptr) -{ - m_model = new MouseModel(this); - m_worker = new MouseWorker(m_model, this); - m_dbusProxy = new MouseDBusProxy(m_worker, this); - m_dbusProxy->active(); -} - -MouseModule::~MouseModule() -{ - m_model->deleteLater(); - m_worker->deleteLater(); -} - -QString MousePlugin::name() const -{ - return QStringLiteral("mouse"); -} - -ModuleObject *MousePlugin::module() -{ - //一级菜单--鼠标与触摸板 - MouseModule *moduleInterface = new MouseModule(); - moduleInterface->setName("mouse"); - moduleInterface->setDisplayName(tr("Mouse")); - moduleInterface->setIcon(DIconTheme::findQIcon("dcc_nav_mouse")); - - //二级菜单--通用 - ModuleObject *moduleGeneral = new PageModule("mouseGeneral", tr("General")); - GeneralSettingModule *generalSettingModule = new GeneralSettingModule(moduleInterface->model(), moduleInterface->work(), moduleGeneral); - moduleGeneral->appendChild(generalSettingModule); - moduleInterface->appendChild(moduleGeneral); - - - //二级菜单--鼠标 - ModuleObject *moduleMouse = new PageModule("mouseMouse", tr("Mouse")); - MouseSettingModule *mouseSettingModule = new MouseSettingModule(moduleInterface->model(), moduleInterface->work(), moduleMouse); - moduleMouse->appendChild(mouseSettingModule); - moduleInterface->appendChild(moduleMouse); - - //二级菜单--触摸板 - ModuleObject *moduleTouchpad = new PageModule("mouseTouch", tr("Touchpad")); - TouchPadSettingModule *touchPadSettingModule = new TouchPadSettingModule(moduleInterface->model(), moduleInterface->work(), moduleTouchpad); - moduleTouchpad->appendChild(touchPadSettingModule); - moduleInterface->appendChild(moduleTouchpad); - - //二级菜单--指点杆 - ModuleObject *moduleTrackPoint = new PageModule("mouseTrackpoint", tr("TrackPoint")); - TrackPointSettingModule *trackPointSettingModule = new TrackPointSettingModule(moduleInterface->model(), moduleInterface->work(), moduleTrackPoint); - moduleTrackPoint->appendChild(trackPointSettingModule); - moduleInterface->appendChild(moduleTrackPoint); - - return moduleInterface; -} - -QString MousePlugin::location() const -{ - return "11"; -} - -//三级菜单 -QWidget *GeneralSettingModule::page() -{ - GeneralSettingWidget *w = new GeneralSettingWidget; - w->setModel(m_model); - connect(w, &GeneralSettingWidget::requestSetLeftHand, m_worker, &MouseWorker::onLeftHandStateChanged); - connect(w, &GeneralSettingWidget::requestSetDisTyping, m_worker, &MouseWorker::onDisTypingChanged); - connect(w, &GeneralSettingWidget::requestScrollSpeed, m_worker, &MouseWorker::onScrollSpeedChanged); - connect(w, &GeneralSettingWidget::requestSetDouClick, m_worker, &MouseWorker::onDouClickChanged); - return w; -} - -TouchPadSettingModule::TouchPadSettingModule(MouseModel *model, MouseWorker *worker, ModuleObject *parent) - : ModuleObject(parent), m_model(model), m_worker(worker) -{ - parent->setHidden(!m_model->tpadExist()); - connect(m_model, &MouseModel::tpadExistChanged, parent, [parent](bool tpadExist) { parent->setHidden(!tpadExist); }); -} - -QWidget *TouchPadSettingModule::page() -{ - TouchpadSettingWidget *w = new TouchpadSettingWidget; - connect(w, &TouchpadSettingWidget::requestSetTouchpadMotionAcceleration, m_worker, &MouseWorker::onTouchpadMotionAccelerationChanged); - connect(w, &TouchpadSettingWidget::requestSetTapClick, m_worker, &MouseWorker::onTapClick); - connect(w, &TouchpadSettingWidget::requestSetTouchpadEnabled, m_worker, &MouseWorker::onTouchpadEnabledChanged); - connect(w, &TouchpadSettingWidget::requestSetTouchNaturalScroll, m_worker, &MouseWorker::onTouchNaturalScrollStateChanged); - connect(w, &TouchpadSettingWidget::requestDetectState, m_worker, &MouseWorker::onPalmDetectChanged); - connect(w, &TouchpadSettingWidget::requestContact, m_worker, &MouseWorker::onPalmMinWidthChanged); - connect(w, &TouchpadSettingWidget::requestPressure, m_worker, &MouseWorker::onPalmMinzChanged); - w->setModel(this->m_model); - - return w; -} - -TrackPointSettingModule::TrackPointSettingModule(MouseModel *model, MouseWorker *worker, ModuleObject *parent) - : ModuleObject(parent), m_model(model), m_worker(worker) -{ - parent->setHidden(!m_model->redPointExist()); - connect(m_model, &MouseModel::redPointExistChanged, parent, [parent](bool rPointExist) { parent->setHidden(!rPointExist); }); -} - -QWidget *TrackPointSettingModule::page() -{ - TrackPointSettingWidget *w = new TrackPointSettingWidget; - connect(w, &TrackPointSettingWidget::requestSetTrackPointMotionAcceleration, m_worker, &MouseWorker::onTrackPointMotionAccelerationChanged); - w->setModel(m_model); - return w; -} - -QWidget *MouseSettingModule::page() -{ - MouseSettingWidget *w = new MouseSettingWidget; - w->setModel(m_model); - connect(w, &MouseSettingWidget::requestSetMouseMotionAcceleration, m_worker, &MouseWorker::onMouseMotionAccelerationChanged); - connect(w, &MouseSettingWidget::requestSetAccelProfile, m_worker, &MouseWorker::onAccelProfileChanged); - connect(w, &MouseSettingWidget::requestSetDisTouchPad, m_worker, &MouseWorker::onDisTouchPadChanged); - connect(w, &MouseSettingWidget::requestSetMouseNaturalScroll, m_worker, &MouseWorker::onMouseNaturalScrollStateChanged); - return w; -} diff --git a/dcc-old/src/plugin-mouse/window/mousemodule.h b/dcc-old/src/plugin-mouse/window/mousemodule.h deleted file mode 100644 index 40f187e157..0000000000 --- a/dcc-old/src/plugin-mouse/window/mousemodule.h +++ /dev/null @@ -1,100 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "interface/hlistmodule.h" -#include "interface/plugininterface.h" - -#include - -namespace DCC_NAMESPACE { -class MouseWidget; -class GeneralSettingWidget; -class MouseSettingWidget; -class TouchpadSettingWidget; -class TrackPointSettingWidget; - -class MouseModel; -class MouseWorker; -class MouseDBusProxy; - -class MousePlugin : public PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Mouse" FILE "MousePlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - virtual QString name() const override; - virtual ModuleObject *module() override; - virtual QString location() const override; -}; - -//一级菜单 -class MouseModule : public HListModule -{ - Q_OBJECT -public: - explicit MouseModule(QObject *parent = nullptr); - ~MouseModule(); - MouseWorker *work() { return m_worker; } - MouseModel *model() { return m_model; } - -private: - MouseModel *m_model; - MouseWorker *m_worker; - MouseDBusProxy *m_dbusProxy; -}; - -class GeneralSettingModule : public ModuleObject -{ - Q_OBJECT -public: - explicit GeneralSettingModule(MouseModel *model, MouseWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - virtual QWidget *page() override; - -private: - MouseModel *m_model; - MouseWorker *m_worker; -}; - -class TouchPadSettingModule : public ModuleObject -{ - Q_OBJECT -public: - explicit TouchPadSettingModule(MouseModel *model, MouseWorker *worker, ModuleObject *parent); - virtual QWidget *page() override; - -private: - MouseModel *m_model; - MouseWorker *m_worker; -}; - -class TrackPointSettingModule : public ModuleObject -{ - Q_OBJECT -public: - explicit TrackPointSettingModule(MouseModel *model, MouseWorker *worker, ModuleObject *parent); - virtual QWidget *page() override; - -private: - MouseModel *m_model; - MouseWorker *m_worker; -}; - -class MouseSettingModule : public ModuleObject -{ - Q_OBJECT -public: - explicit MouseSettingModule(MouseModel *model, MouseWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - virtual QWidget *page() override; - -private: - MouseModel *m_model; - MouseWorker *m_worker; -}; - -} diff --git a/dcc-old/src/plugin-mouse/window/mousesettingwidget.cpp b/dcc-old/src/plugin-mouse/window/mousesettingwidget.cpp deleted file mode 100644 index 2787896f76..0000000000 --- a/dcc-old/src/plugin-mouse/window/mousesettingwidget.cpp +++ /dev/null @@ -1,87 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "mousesettingwidget.h" -#include "widgets/switchwidget.h" -#include "widgets/settingsgroup.h" -#include "widgets/dccslider.h" -#include "palmdetectsetting.h" -#include "doutestwidget.h" - -#include - -using namespace DCC_NAMESPACE; - -MouseSettingWidget::MouseSettingWidget(QWidget *parent) - : QWidget(parent) -{ - m_mouseSettingsGrp = new SettingsGroup; - m_mouseMoveSlider = new TitledSliderItem(tr("Pointer Speed")); - m_adaptiveAccelProfile = new SwitchWidget(tr("Mouse Acceleration")); - m_adaptiveAccelProfile->setAccessibleName(tr("Mouse Acceleration")); - m_adaptiveAccelProfile->setObjectName("adaptiveAccelProfile"); - m_disTchStn = new SwitchWidget(tr("Disable touchpad when a mouse is connected")); - m_disTchStn->setAccessibleName(tr("Disable touchpad when a mouse is connected")); - m_disTchStn->setObjectName("disableTouchPad"); - m_mouseNaturalScroll = new SwitchWidget(tr("Natural Scrolling")); - m_mouseNaturalScroll->setAccessibleName(tr("Natural Scrolling")); - m_mouseNaturalScroll->setObjectName("mouseNaturalScroll"); - - QStringList speedList; - speedList << tr("Slow") << "" << "" << "" << "" << "" ; - speedList << tr("Fast"); - DCCSlider *speedSlider = m_mouseMoveSlider->slider(); - speedSlider->setType(DCCSlider::Vernier); - speedSlider->setTickPosition(QSlider::TicksBelow); - speedSlider->setRange(0, 6); - speedSlider->setTickInterval(1); - speedSlider->setPageStep(1); - m_mouseMoveSlider->setAnnotations(speedList); - - m_mouseSettingsGrp->setSpacing(10); - m_mouseSettingsGrp->appendItem(m_mouseMoveSlider); - m_mouseSettingsGrp->appendItem(m_adaptiveAccelProfile); - m_mouseSettingsGrp->appendItem(m_disTchStn); - m_mouseSettingsGrp->appendItem(m_mouseNaturalScroll); - - m_contentLayout = new QVBoxLayout(); - m_contentLayout->addWidget(m_mouseSettingsGrp); - m_contentLayout->setAlignment(Qt::AlignTop); - m_contentLayout->setSpacing(10); - m_contentLayout->setContentsMargins(0, 10, 0, 5); - - setLayout(m_contentLayout); - - connect(m_mouseMoveSlider->slider(), &DCCSlider::valueChanged, this, &MouseSettingWidget::requestSetMouseMotionAcceleration); - connect(m_adaptiveAccelProfile, &SwitchWidget::checkedChanged, this, &MouseSettingWidget::requestSetAccelProfile); - connect(m_disTchStn, &SwitchWidget::checkedChanged, this, &MouseSettingWidget::requestSetDisTouchPad); - connect(m_mouseNaturalScroll, &SwitchWidget::checkedChanged, this, &MouseSettingWidget::requestSetMouseNaturalScroll); -} - -MouseSettingWidget::~MouseSettingWidget() -{ -} - -void MouseSettingWidget::setModel(MouseModel *const model) -{ - m_mouseModel = model; - - connect(model, &MouseModel::tpadExistChanged, m_disTchStn, &SwitchWidget::setVisible); - connect(model, &MouseModel::mouseMoveSpeedChanged, this, &MouseSettingWidget::onMouseMoveSpeedChanged); - connect(model, &MouseModel::accelProfileChanged, m_adaptiveAccelProfile, &SwitchWidget::setChecked); - connect(model, &MouseModel::disTpadChanged, m_disTchStn, &SwitchWidget::setChecked); - connect(model, &MouseModel::mouseNaturalScrollChanged, m_mouseNaturalScroll, &SwitchWidget::setChecked); - - onMouseMoveSpeedChanged(model->mouseMoveSpeed()); - m_adaptiveAccelProfile->setChecked(model->accelProfile()); - m_disTchStn->setChecked(model->disTpad()); - m_disTchStn->setVisible(model->tpadExist()); - m_mouseNaturalScroll->setChecked(model->mouseNaturalScroll()); -} - -void MouseSettingWidget::onMouseMoveSpeedChanged(int speed) -{ - m_mouseMoveSlider->slider()->blockSignals(true); - m_mouseMoveSlider->slider()->setValue(speed); - m_mouseMoveSlider->slider()->blockSignals(false); -} diff --git a/dcc-old/src/plugin-mouse/window/mousesettingwidget.h b/dcc-old/src/plugin-mouse/window/mousesettingwidget.h deleted file mode 100644 index f5c1fa881f..0000000000 --- a/dcc-old/src/plugin-mouse/window/mousesettingwidget.h +++ /dev/null @@ -1,47 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MOUSESETTINGWIDGET_H -#define MOUSESETTINGWIDGET_H - -#include "interface/namespace.h" -#include "src/plugin-mouse/operation/mousemodel.h" -#include "src/plugin-mouse/operation/mouseworker.h" - -#include - -class QVBoxLayout; - -namespace DCC_NAMESPACE { -class SettingsGroup; -class SwitchWidget; -class TitledSliderItem; -class MouseSettingWidget : public QWidget -{ - Q_OBJECT -public: - explicit MouseSettingWidget(QWidget *parent = nullptr); - ~MouseSettingWidget(); - - void setModel(MouseModel *const model); - -Q_SIGNALS: - void requestSetMouseMotionAcceleration(const int value); - void requestSetAccelProfile(const bool state); - void requestSetDisTouchPad(const bool state); - void requestSetMouseNaturalScroll(const bool state); - -private Q_SLOTS: - void onMouseMoveSpeedChanged(int speed); - -private: - MouseModel *m_mouseModel; - SettingsGroup *m_mouseSettingsGrp; - TitledSliderItem *m_mouseMoveSlider; - SwitchWidget *m_adaptiveAccelProfile; - SwitchWidget *m_disTchStn; - SwitchWidget *m_mouseNaturalScroll; - QVBoxLayout *m_contentLayout; -}; -} -#endif // MOUSESETTINGWIDGET_H diff --git a/dcc-old/src/plugin-mouse/window/palmdetectsetting.cpp b/dcc-old/src/plugin-mouse/window/palmdetectsetting.cpp deleted file mode 100644 index 82a1557c79..0000000000 --- a/dcc-old/src/plugin-mouse/window/palmdetectsetting.cpp +++ /dev/null @@ -1,120 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "palmdetectsetting.h" -#include "src/plugin-mouse/operation/mousemodel.h" -#include "widgets/settingsgroup.h" -#include - -using namespace DCC_NAMESPACE; - -PalmDetectSetting::PalmDetectSetting(QWidget *parent) - : QFrame(parent) - , m_detectSwitchBtn(new SwitchWidget(tr("Palm Detection"), this)) - , m_contactSlider(new TitledSliderItem(tr("Minimum Contact Surface"), this)) - , m_pressureSlider(new TitledSliderItem(tr("Minimum Pressure Value"), this)) -{ - m_detectSwitchBtn->setTitle(tr("Palm Detection")); - m_contactSlider->setToolTip(tr("Minimum Contact Surface")); - m_contactSlider->addBackground(); - m_contactSlider->setObjectName("contact"); - m_pressureSlider->setToolTip(tr("Minimum Pressure Value")); - m_pressureSlider->addBackground(); - m_pressureSlider->setObjectName("pressure"); - - QStringList contactList; - for (int i(1); i <= 10; ++i) { - contactList << QString::number(i); - } - - // NOTE(kirigaya): The contact is only between 1 and 10. - DCCSlider *contactSlider = m_contactSlider->slider(); - contactSlider->setType(DCCSlider::Vernier); - contactSlider->setTickPosition(QSlider::TicksBelow); - contactSlider->setRange(1, 10); - contactSlider->setTickInterval(1); - contactSlider->setPageStep(1); - - m_contactSlider->setAnnotations(contactList); - - // NOTE(kirigaya): The range of pressure is between 100 and 200 - DCCSlider *pressureSlider = m_pressureSlider->slider(); - pressureSlider->setType(DCCSlider::Vernier); - pressureSlider->setTickPosition(QSlider::TicksBelow); - pressureSlider->setRange(0, 10); - pressureSlider->setTickInterval(1); - pressureSlider->setPageStep(1); - - QStringList pressureList; - - int i = 100; - while (i <= 200) { - pressureList << QString::number(i); - i += 10; - } - - m_pressureSlider->setAnnotations(pressureList); - - SettingsGroup *detectSwitchGrp = new SettingsGroup; - detectSwitchGrp->appendItem(m_detectSwitchBtn); - - QLabel *tip = new QLabel(tr("Disable the option if touchpad doesn't work after enabled"), this); - tip->setWordWrap(true); - tip->setContentsMargins(16, 5, 10, 5); - - SettingsGroup *sliderGrp = new SettingsGroup; - - sliderGrp->appendItem(m_contactSlider); - sliderGrp->appendItem(m_pressureSlider); - - QVBoxLayout *layout = new QVBoxLayout; - layout->setMargin(0); - layout->setSpacing(0); - - layout->addWidget(detectSwitchGrp); - layout->addWidget(tip); - layout->addWidget(sliderGrp); - - setLayout(layout); - - connect(m_detectSwitchBtn, &SwitchWidget::checkedChanged, this, &PalmDetectSetting::requestDetectState); - connect(contactSlider, &DCCSlider::valueChanged, this, &PalmDetectSetting::requestContact); - connect(pressureSlider, &DCCSlider::valueChanged, this, [=](int value) { - // the valid value is 100-200 and step should be 20 - requestPressure(value * 20 + 100); - }); -} - -void PalmDetectSetting::setModel(MouseModel * const model) -{ - connect(model, &MouseModel::palmDetectChanged, this, &PalmDetectSetting::setDetectState); - connect(model, &MouseModel::palmMinWidthChanged, this, &PalmDetectSetting::setContactValue); - connect(model, &MouseModel::palmMinzChanged, this, &PalmDetectSetting::setPressureValue); - - setDetectState(model->palmDetect()); - setContactValue(model->palmMinWidth()); - setPressureValue(model->palmMinz()); -} - -void PalmDetectSetting::setDetectState(bool enable) -{ - m_detectSwitchBtn->setChecked(enable); - m_contactSlider->setVisible(enable); - m_pressureSlider->setVisible(enable); -} - -void PalmDetectSetting::setContactValue(int value) -{ - DCCSlider *contactSlider = m_contactSlider->slider(); - contactSlider->blockSignals(true); - contactSlider->setValue(value); - contactSlider->blockSignals(false); -} - -void PalmDetectSetting::setPressureValue(int value) -{ - DCCSlider *pressureSlider = m_pressureSlider->slider(); - pressureSlider->blockSignals(true); - pressureSlider->setValue((value - 100) / 20); - pressureSlider->blockSignals(false); -} diff --git a/dcc-old/src/plugin-mouse/window/palmdetectsetting.h b/dcc-old/src/plugin-mouse/window/palmdetectsetting.h deleted file mode 100644 index 754928547e..0000000000 --- a/dcc-old/src/plugin-mouse/window/palmdetectsetting.h +++ /dev/null @@ -1,42 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PALMDETECTSETTING_H -#define PALMDETECTSETTING_H - -#include "widgets/switchwidget.h" -#include "widgets/titledslideritem.h" -#include "widgets/dccslider.h" - -#include - -class QVBoxLayout; - -namespace DCC_NAMESPACE { -class MouseModel; -class PalmDetectSetting : public QFrame -{ - Q_OBJECT -public: - explicit PalmDetectSetting(QWidget *parent = nullptr); - - void setModel(MouseModel * const model); - -Q_SIGNALS: - void requestDetectState(bool enable); - void requestContact(int value); - void requestPressure(int value); - -private Q_SLOTS: - void setDetectState(bool enable); - void setContactValue(int value); - void setPressureValue(int value); - -private: - SwitchWidget *m_detectSwitchBtn; - TitledSliderItem *m_contactSlider; - TitledSliderItem *m_pressureSlider; -}; -} - -#endif // PALMDETECTSETTING_H diff --git a/dcc-old/src/plugin-mouse/window/touchpadsettingwidget.cpp b/dcc-old/src/plugin-mouse/window/touchpadsettingwidget.cpp deleted file mode 100644 index 8ed3b22ea5..0000000000 --- a/dcc-old/src/plugin-mouse/window/touchpadsettingwidget.cpp +++ /dev/null @@ -1,95 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchpadsettingwidget.h" -#include "widgets/switchwidget.h" -#include "widgets/settingsgroup.h" -#include "widgets/dccslider.h" -#include "palmdetectsetting.h" -#include "doutestwidget.h" -#include "src/plugin-mouse/operation/mousemodel.h" - -#include -#include - -const QMargins ThirdPageContentsMargins(0, 10, 0, 10); - -using namespace DCC_NAMESPACE; -TouchpadSettingWidget::TouchpadSettingWidget(QWidget *parent) - : QWidget(parent) -{ - m_touchMoveSlider = new TitledSliderItem(tr("Pointer Speed")); - - m_touchpadEnableBtn = new SwitchWidget(tr("Enable TouchPad")); - m_touchpadEnableBtn->setObjectName("touchPadEnabled"); - m_touchpadEnableBtn->addBackground(); - - m_touchClickStn = new SwitchWidget(tr("Tap to Click")); - m_touchClickStn->setObjectName("touchClicked"); - m_touchClickStn->addBackground(); - m_touchNaturalScroll = new SwitchWidget(tr("Natural Scrolling")); - m_touchNaturalScroll->setObjectName("touchNaturalScroll"); - m_touchNaturalScroll->addBackground(); - - m_palmDetectSetting = new PalmDetectSetting; - m_palmDetectSetting->setVisible(false); - - QStringList touchMoveList; - touchMoveList << tr("Slow") << "" << "" << "" << "" << ""; - touchMoveList << tr("Fast"); - - DCCSlider *touchSlider = m_touchMoveSlider->slider(); - touchSlider->setType(DCCSlider::Vernier); - touchSlider->setTickPosition(QSlider::TicksBelow); - touchSlider->setRange(0, 6); - touchSlider->setTickInterval(1); - touchSlider->setPageStep(1); - m_touchMoveSlider->setAnnotations(touchMoveList); - m_touchMoveSlider->addBackground(); - - m_contentLayout = new QVBoxLayout(); - m_contentLayout->setSpacing(10); - m_contentLayout->setContentsMargins(ThirdPageContentsMargins); - m_contentLayout->addWidget(m_touchMoveSlider); - m_contentLayout->addWidget(m_touchpadEnableBtn); - m_contentLayout->addWidget(m_touchClickStn); - m_contentLayout->addWidget(m_touchNaturalScroll); - m_contentLayout->addWidget(m_palmDetectSetting); - m_contentLayout->addStretch(); - setLayout(m_contentLayout); - - connect(m_touchMoveSlider->slider(), &DCCSlider::valueChanged, [this](int value) { - requestSetTouchpadMotionAcceleration(value); - }); - connect(m_touchpadEnableBtn, &SwitchWidget::checkedChanged, this, &TouchpadSettingWidget::requestSetTouchpadEnabled); - connect(m_touchClickStn, &SwitchWidget::checkedChanged, this, &TouchpadSettingWidget::requestSetTapClick); - connect(m_touchNaturalScroll, &SwitchWidget::checkedChanged, this, &TouchpadSettingWidget::requestSetTouchNaturalScroll); -} - -void TouchpadSettingWidget::setModel(MouseModel *const model) -{ - m_mouseModel = model; - connect(model, &MouseModel::tpadMoveSpeedChanged, this, [this] (int value) { - onTouchMoveSpeedChanged(value); - }); - connect(model, &MouseModel::tapClickChanged, m_touchClickStn, &SwitchWidget::setChecked); - connect(model, &MouseModel::tapEnabledChanged, m_touchpadEnableBtn, &SwitchWidget::setChecked); - connect(model, &MouseModel::tpadNaturalScrollChanged, m_touchNaturalScroll, &SwitchWidget::setChecked); - - m_palmDetectSetting->setModel(model); - connect(m_palmDetectSetting, &PalmDetectSetting::requestContact, this, &TouchpadSettingWidget::requestContact); - connect(m_palmDetectSetting, &PalmDetectSetting::requestDetectState, this, &TouchpadSettingWidget::requestDetectState); - connect(m_palmDetectSetting, &PalmDetectSetting::requestPressure, this, &TouchpadSettingWidget::requestPressure); - - onTouchMoveSpeedChanged(m_mouseModel->tpadMoveSpeed()); - m_touchpadEnableBtn->setChecked(m_mouseModel->tapEnabled()); - m_touchClickStn->setChecked(m_mouseModel->tapclick()); - m_touchNaturalScroll->setChecked(m_mouseModel->tpadNaturalScroll()); -} - -void TouchpadSettingWidget::onTouchMoveSpeedChanged(int speed) -{ - m_touchMoveSlider->slider()->blockSignals(true); - m_touchMoveSlider->slider()->setValue(speed); - m_touchMoveSlider->slider()->blockSignals(false); -} diff --git a/dcc-old/src/plugin-mouse/window/touchpadsettingwidget.h b/dcc-old/src/plugin-mouse/window/touchpadsettingwidget.h deleted file mode 100644 index 196cf249a3..0000000000 --- a/dcc-old/src/plugin-mouse/window/touchpadsettingwidget.h +++ /dev/null @@ -1,53 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHPADSETTINGWIDGET_H -#define TOUCHPADSETTINGWIDGET_H - -#include "interface/namespace.h" -#include - -class QVBoxLayout; - -namespace DCC_NAMESPACE { -class MouseModel; -class MouseWorker; -class DouTestWidget; -class PalmDetectSetting; - -class SettingsGroup; -class SwitchWidget; -class TitledSliderItem; -} - -namespace DCC_NAMESPACE { -class TouchpadSettingWidget : public QWidget -{ - Q_OBJECT -public: - explicit TouchpadSettingWidget(QWidget *parent = nullptr); - void setModel(MouseModel *const model); - -Q_SIGNALS: - void requestSetTouchpadMotionAcceleration(const int value); - void requestSetTouchpadEnabled(const bool enabled); - void requestSetTapClick(const bool state); - void requestSetTouchNaturalScroll(const bool state); - void requestDetectState(bool enable); - void requestContact(int value); - void requestPressure(int value); - -private Q_SLOTS: - void onTouchMoveSpeedChanged(int speed); - -private: - MouseModel *m_mouseModel; - PalmDetectSetting *m_palmDetectSetting; - TitledSliderItem *m_touchMoveSlider; - SwitchWidget *m_touchpadEnableBtn; - SwitchWidget *m_touchClickStn; - SwitchWidget *m_touchNaturalScroll; - QVBoxLayout *m_contentLayout; -}; -} -#endif // TOUCHPADSETTINGWIDGET_H diff --git a/dcc-old/src/plugin-mouse/window/trackpointsettingwidget.cpp b/dcc-old/src/plugin-mouse/window/trackpointsettingwidget.cpp deleted file mode 100644 index 95f5f75085..0000000000 --- a/dcc-old/src/plugin-mouse/window/trackpointsettingwidget.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "trackpointsettingwidget.h" -#include "widgets/settingsgroup.h" -#include "widgets/dccslider.h" -#include "widgets/titledslideritem.h" -#include "src/plugin-mouse/operation/mousemodel.h" - -#include - -using namespace DCC_NAMESPACE; -TrackPointSettingWidget::TrackPointSettingWidget(QWidget *parent) : QWidget(parent) -{ - m_trackPointSettingsGrp = new SettingsGroup; - m_trackMoveSlider = new TitledSliderItem(tr("Pointer Speed")); - QStringList trackPointlist; - trackPointlist << tr("Slow") << "" << "" << "" << "" << ""; - trackPointlist << tr("Fast"); - DCCSlider *pointSlider = m_trackMoveSlider->slider(); - pointSlider->setType(DCCSlider::Vernier); - pointSlider->setTickPosition(QSlider::TicksBelow); - pointSlider->setRange(0, 6); - pointSlider->setTickInterval(1); - pointSlider->setPageStep(1); - m_trackMoveSlider->setAnnotations(trackPointlist); - m_trackPointSettingsGrp->appendItem(m_trackMoveSlider); - - m_contentLayout = new QVBoxLayout(); - m_contentLayout->setMargin(0); - m_contentLayout->addWidget(m_trackPointSettingsGrp); - m_contentLayout->addStretch(); - - setLayout(m_contentLayout); - setContentsMargins(0, 10, 0, 10); - connect(m_trackMoveSlider->slider(), &DCCSlider::valueChanged, this, &TrackPointSettingWidget::requestSetTrackPointMotionAcceleration); -} - -void TrackPointSettingWidget::setModel(MouseModel *const model) -{ - m_mouseModel = model; - connect(m_mouseModel, &MouseModel::redPointMoveSpeedChanged, this, &TrackPointSettingWidget::onRedPointMoveSpeedChanged); - onRedPointMoveSpeedChanged(m_mouseModel->redPointMoveSpeed()); -} - -void TrackPointSettingWidget::onRedPointMoveSpeedChanged(int speed) -{ - m_trackMoveSlider->slider()->blockSignals(true); - m_trackMoveSlider->slider()->setValue(speed); - m_trackMoveSlider->slider()->blockSignals(false); -} diff --git a/dcc-old/src/plugin-mouse/window/trackpointsettingwidget.h b/dcc-old/src/plugin-mouse/window/trackpointsettingwidget.h deleted file mode 100644 index d3c2df7b4c..0000000000 --- a/dcc-old/src/plugin-mouse/window/trackpointsettingwidget.h +++ /dev/null @@ -1,38 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TRACKPOINTSETTINGWIDGET_H -#define TRACKPOINTSETTINGWIDGET_H - -#include "interface/namespace.h" -#include - -class QVBoxLayout; - -namespace DCC_NAMESPACE { -class MouseModel; -class SettingsGroup; -class SwitchWidget; -class TitledSliderItem; - -class TrackPointSettingWidget : public QWidget -{ - Q_OBJECT -public: - explicit TrackPointSettingWidget(QWidget *parent = nullptr); - void setModel(MouseModel *const model); - -Q_SIGNALS: - void requestSetTrackPointMotionAcceleration(const int value); - -private Q_SLOTS: - void onRedPointMoveSpeedChanged(int speed); - -private: - MouseModel *m_mouseModel; - SettingsGroup *m_trackPointSettingsGrp; - TitledSliderItem *m_trackMoveSlider; - QVBoxLayout *m_contentLayout; -}; -} -#endif // TRACKPOINTSETTINGWIDGET_H diff --git a/dcc-old/src/plugin-notification/operation/model/appitemmodel.cpp b/dcc-old/src/plugin-notification/operation/model/appitemmodel.cpp deleted file mode 100644 index f2675960d5..0000000000 --- a/dcc-old/src/plugin-notification/operation/model/appitemmodel.cpp +++ /dev/null @@ -1,112 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "appitemmodel.h" - -#include - -using namespace DCC_NAMESPACE; - -AppItemModel::AppItemModel(QObject *parent) - : QObject(parent) - , m_softName(QString()) - , m_isAllowNotify(false) - , m_isNotifySound(false) - , m_isLockShowNotify(false) - , m_isShowInNotifyCenter(false) - , m_isShowNotifyPreview(false) -{ - -} - -void AppItemModel::setActName(const QString &name) -{ - if (m_actName != name) { - m_actName = name; - } -} - -void AppItemModel::onSettingChanged(const QString &id, const uint &item, QDBusVariant var) -{ - if (id != m_actName) - return; - switch (item) { - case APPNAME: - setSoftName(var.variant().toString()); - break; - case APPICON: - setIcon(var.variant().toString()); - break; - case ENABELNOTIFICATION: - setAllowNotify(var.variant().toBool()); - break; - case ENABELPREVIEW: - setShowNotifyPreview(var.variant().toBool()); - break; - case ENABELSOUND: - setNotifySound(var.variant().toBool()); - break; - case SHOWINNOTIFICATIONCENTER: - setShowInNotifyCenter(var.variant().toBool()); - break; - case LOCKSCREENSHOWNOTIFICATION: - setLockShowNotify(var.variant().toBool()); - break; - } -} - -void AppItemModel::setSoftName(const QString &name) { - if (m_softName == name) - return; - m_softName = name; - Q_EMIT softNameChanged(name); -} - -void AppItemModel::setIcon(const QString &icon) -{ - if (m_icon == icon) - return; - m_icon = icon; - Q_EMIT iconChanged(icon); -} - -void AppItemModel::setAllowNotify(const bool &state) -{ - if (m_isAllowNotify == state) - return; - m_isAllowNotify = state; - Q_EMIT allowNotifyChanged(state); - -} - -void AppItemModel::setNotifySound(const bool &state) -{ - if (m_isNotifySound == state) - return; - m_isNotifySound = state; - Q_EMIT notifySoundChanged(state); -} - -void AppItemModel::setLockShowNotify(const bool &state) -{ - if (m_isLockShowNotify == state) - return; - m_isLockShowNotify = state; - Q_EMIT lockShowNotifyChanged(state); -} - -void AppItemModel::setShowInNotifyCenter(const bool &state) -{ - if (m_isShowInNotifyCenter == state) - return; - m_isShowInNotifyCenter = state; - Q_EMIT showInNotifyCenterChanged(state); -} - -void AppItemModel::setShowNotifyPreview(const bool &state) -{ - if (m_isShowNotifyPreview == state) - return; - m_isShowNotifyPreview = state; - Q_EMIT showNotifyPreviewChanged(state); -} diff --git a/dcc-old/src/plugin-notification/operation/model/appitemmodel.h b/dcc-old/src/plugin-notification/operation/model/appitemmodel.h deleted file mode 100644 index 7bc55d7bf9..0000000000 --- a/dcc-old/src/plugin-notification/operation/model/appitemmodel.h +++ /dev/null @@ -1,79 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include - -QT_BEGIN_NAMESPACE -class QJsonObject; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE{ - -class AppItemModel : public QObject -{ - Q_OBJECT -public: - typedef enum { - APPNAME, - APPICON, - ENABELNOTIFICATION, - ENABELPREVIEW, - ENABELSOUND, - SHOWINNOTIFICATIONCENTER, - LOCKSCREENSHOWNOTIFICATION - } AppConfigurationItem; - - explicit AppItemModel(QObject *parent = nullptr); - - inline QString getAppName()const {return m_softName;} - void setSoftName(const QString &name); - - inline QString getIcon()const {return m_icon;} - void setIcon(const QString &icon); - - inline bool isAllowNotify()const {return m_isAllowNotify;} - void setAllowNotify(const bool &state); - - inline bool isNotifySound()const {return m_isNotifySound;} - void setNotifySound(const bool &state); - - inline bool isLockShowNotify()const {return m_isLockShowNotify;} - void setLockShowNotify(const bool &state); - - inline bool isShowInNotifyCenter()const {return m_isShowInNotifyCenter;} - void setShowInNotifyCenter(const bool &state); - - inline bool isShowNotifyPreview()const {return m_isShowNotifyPreview;} - void setShowNotifyPreview(const bool &state); - - inline QString getActName()const {return m_actName;} - void setActName(const QString &name); - -public Q_SLOTS: - void onSettingChanged(const QString &id, const uint &item, QDBusVariant var); - -Q_SIGNALS: - void softNameChanged(QString name); - void iconChanged(QString icon); - void allowNotifyChanged(bool state); - void notifySoundChanged(bool state); - void lockShowNotifyChanged(bool state); - void showInNotifyCenterChanged(bool state); - void showNotifyPreviewChanged(bool state); - -private: - QString m_softName;//应用程序名 - QString m_icon;//应用系统图表 - QString m_actName;//传入后端应用名 - bool m_isAllowNotify;//允许应用通知 - bool m_isNotifySound;//是否有通知声音 - bool m_isLockShowNotify;//锁屏显示通知 - bool m_isShowInNotifyCenter;//通知仅在通知中心显示 - bool m_isShowNotifyPreview;//显示消息预览 -}; -} diff --git a/dcc-old/src/plugin-notification/operation/model/sysitemmodel.cpp b/dcc-old/src/plugin-notification/operation/model/sysitemmodel.cpp deleted file mode 100644 index 50e024a53d..0000000000 --- a/dcc-old/src/plugin-notification/operation/model/sysitemmodel.cpp +++ /dev/null @@ -1,78 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "sysitemmodel.h" - -using namespace DCC_NAMESPACE; - -SysItemModel::SysItemModel(QObject *parent) - : QObject(parent) - , m_isDisturbMode(false) - , m_isTimeSlot(false) - , m_isLockScreen(false) - , m_timeStart("22:00") - , m_timeEnd("07:00") -{ -} - -void SysItemModel::setDisturbMode(const bool disturbMode) -{ - if (m_isDisturbMode == disturbMode) - return; - m_isDisturbMode = disturbMode; - Q_EMIT disturbModeChanged(disturbMode); -} - -void SysItemModel::setTimeSlot(const bool timeSlot) -{ - if (m_isTimeSlot == timeSlot) - return; - m_isTimeSlot = timeSlot; - Q_EMIT timeSlotChanged(timeSlot); -} - -void SysItemModel::setLockScreen(const bool lockScreen) -{ - if (m_isLockScreen == lockScreen) - return; - m_isLockScreen = lockScreen; - Q_EMIT lockScreenChanged(lockScreen); -} - -void SysItemModel::setTimeStart(const QString &timeStart) -{ - if (m_timeStart == timeStart) - return; - m_timeStart = timeStart; - Q_EMIT timeStartChanged(timeStart); -} - -void SysItemModel::setTimeEnd(const QString &timeEnd) -{ - if (m_timeEnd == timeEnd) - return; - m_timeEnd = timeEnd; - Q_EMIT timeEndChanged(timeEnd); -} - -void SysItemModel::onSettingChanged(uint item, const QDBusVariant &var) -{ - switch (item) { - case DNDMODE: - setDisturbMode(var.variant().toBool()); - break; - case LOCKSCREENOPENDNDMODE: - setLockScreen(var.variant().toBool()); - break; - case OPENBYTIMEINTERVAL: - setTimeSlot(var.variant().toBool()); - break; - case STARTTIME: - setTimeStart(var.variant().toString()); - break; - case ENDTIME: - setTimeEnd(var.variant().toString()); - break; - } -} - diff --git a/dcc-old/src/plugin-notification/operation/model/sysitemmodel.h b/dcc-old/src/plugin-notification/operation/model/sysitemmodel.h deleted file mode 100644 index 5062a6bd3a..0000000000 --- a/dcc-old/src/plugin-notification/operation/model/sysitemmodel.h +++ /dev/null @@ -1,65 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include -#include - -QT_BEGIN_NAMESPACE -class QJsonObject; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class SysItemModel : public QObject -{ - Q_OBJECT -public: - typedef enum { - DNDMODE, - LOCKSCREENOPENDNDMODE, - OPENBYTIMEINTERVAL, - STARTTIME, - ENDTIME, - SHOWICON - } SystemConfigurationItem; - - explicit SysItemModel(QObject *parent = nullptr); - - inline bool isDisturbMode() const {return m_isDisturbMode;} - void setDisturbMode(const bool disturbMode); - - inline bool isTimeSlot()const {return m_isTimeSlot;} - void setTimeSlot(const bool timeSlot); - - inline bool isLockScreen()const {return m_isLockScreen;} - void setLockScreen(const bool lockScreen); - - inline QString timeStart()const {return m_timeStart;} - void setTimeStart(const QString &timeStart); - - inline QString timeEnd()const {return m_timeEnd;} - void setTimeEnd(const QString &timeEnd); - - void onSettingChanged(uint item, const QDBusVariant &var); - -Q_SIGNALS: - void disturbModeChanged(bool isDisturbMode); - void timeSlotChanged(bool isTimeSlot); - void lockScreenChanged(bool isLockScreen); - void timeStartChanged(const QString &timeStart); - void timeEndChanged(const QString &timeEnd); - -private: - bool m_isDisturbMode;//勿扰模式 - bool m_isTimeSlot;//时间段 - bool m_isLockScreen;//锁屏显示 - QString m_timeStart;//开始时间 - QString m_timeEnd;//结束时间 -}; - -} diff --git a/dcc-old/src/plugin-notification/operation/notificationdbusproxy.cpp b/dcc-old/src/plugin-notification/operation/notificationdbusproxy.cpp deleted file mode 100644 index 018ccdd956..0000000000 --- a/dcc-old/src/plugin-notification/operation/notificationdbusproxy.cpp +++ /dev/null @@ -1,233 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "notificationdbusproxy.h" - -#include -#include -#include -#include -#include -#include - -const static QString NotificationService = "org.deepin.dde.Notification1"; -const static QString NotificationPath = "/org/deepin/dde/Notification1"; -const static QString NotificationInterface = "org.deepin.dde.Notification1"; - -const static QString PropertiesInterface = "org.freedesktop.DBus.Properties"; -const static QString PropertiesChanged = "PropertiesChanged"; - -NotificationDBusProxy::NotificationDBusProxy(QObject *parent) - : QObject(parent) -{ - init(); -} - -void NotificationDBusProxy::init() -{ - m_dBusNotificationPropertiesInter = new QDBusInterface(NotificationService, NotificationPath, PropertiesInterface, QDBusConnection::sessionBus(), this); - m_dBusNotificationInter = new QDBusInterface(NotificationService, NotificationPath, NotificationInterface, QDBusConnection::sessionBus(), this); - - QDBusConnection dbusConnection = m_dBusNotificationInter->connection(); - dbusConnection.connect(NotificationService, NotificationPath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "ActionInvoked", this, SIGNAL(ActionInvoked(uint, QString))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "AppAddedSignal", this, SIGNAL(AppAddedSignal(QString))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "AppInfoChanged", this, SIGNAL(AppInfoChanged(QString, uint, QDBusVariant))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "AppRemovedSignal", this, SIGNAL(AppRemovedSignal(QString))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "NotificationClosed", this, SIGNAL(NotificationClosed(uint, uint))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "RecordAdded", this, SIGNAL(RecordAdded(QString))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "SystemInfoChanged", this, SIGNAL(SystemInfoChanged(uint, QDBusVariant))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "appAdded", this, SIGNAL(appAdded(QString))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "appRemoved", this, SIGNAL(appRemoved(QString))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "appSettingChanged", this, SIGNAL(appSettingChanged(QString))); - dbusConnection.connect(NotificationService, NotificationPath, NotificationInterface, "systemSettingChanged", this, SIGNAL(systemSettingChanged(QString))); -} - -QString NotificationDBusProxy::allSetting() -{ - return qvariant_cast(m_dBusNotificationInter->property("allSetting")); -} - -void NotificationDBusProxy::setAllSetting(const QString &value) -{ - m_dBusNotificationInter->setProperty("allSetting", QVariant::fromValue(value)); -} - -QString NotificationDBusProxy::systemSetting() -{ - return qvariant_cast(m_dBusNotificationInter->property("systemSetting")); -} - -void NotificationDBusProxy::setSystemSetting(const QString &value) -{ - m_dBusNotificationInter->setProperty("systemSetting", QVariant::fromValue(value)); -} - - -QDBusPendingReply<> NotificationDBusProxy::ClearRecords() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("ClearRecords"), argumentList); -} - - -QDBusPendingReply<> NotificationDBusProxy::CloseNotification(uint in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("CloseNotification"), argumentList); -} - -QDBusPendingReply NotificationDBusProxy::GetAllRecords() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("GetAllRecords"), argumentList); -} - - - -QDBusPendingReply NotificationDBusProxy::GetAppInfo(const QString &in0, uint in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("GetAppInfo"), argumentList); -} - - - -QDBusPendingReply NotificationDBusProxy::GetAppList() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("GetAppList"), argumentList); -} - - - -QDBusPendingReply NotificationDBusProxy::GetCapbilities() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("GetCapbilities"), argumentList); -} - - - -QDBusPendingReply NotificationDBusProxy::GetRecordById(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("GetRecordById"), argumentList); -} - - - -QDBusPendingReply NotificationDBusProxy::GetRecordsFromId(int in0, const QString &in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("GetRecordsFromId"), argumentList); -} - - - -QDBusPendingReply NotificationDBusProxy::GetServerInformation() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("GetServerInformation"), argumentList); -} - - -QDBusReply NotificationDBusProxy::GetServerInformation(QString &out1, QString &out2, QString &out3) -{ - QList argumentList; - QDBusMessage reply = m_dBusNotificationInter->callWithArgumentList(QDBus::Block, QStringLiteral("GetServerInformation"), argumentList); - if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 4) { - out1 = qdbus_cast(reply.arguments().at(1)); - out2 = qdbus_cast(reply.arguments().at(2)); - out3 = qdbus_cast(reply.arguments().at(3)); - } - return reply; -} - -QDBusPendingReply NotificationDBusProxy::GetSystemInfo(uint in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("GetSystemInfo"), argumentList); -} - -QDBusPendingReply<> NotificationDBusProxy::Hide() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("Hide"), argumentList); -} - -QDBusPendingReply NotificationDBusProxy::Notify(const QString &in0, uint in1, const QString &in2, const QString &in3, const QString &in4, const QStringList &in5, const QVariantMap &in6, int in7) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5) << QVariant::fromValue(in6) << QVariant::fromValue(in7); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("Notify"), argumentList); -} - -QDBusPendingReply<> NotificationDBusProxy::RemoveRecord(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("RemoveRecord"), argumentList); -} - -QDBusPendingReply<> NotificationDBusProxy::SetAppInfo(const QString &in0, uint in1, const QDBusVariant &in2) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("SetAppInfo"), argumentList); -} - -QDBusPendingReply<> NotificationDBusProxy::SetSystemInfo(uint in0, const QDBusVariant &in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("SetSystemInfo"), argumentList); -} - -QDBusPendingReply<> NotificationDBusProxy::Show() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("Show"), argumentList); -} - -QDBusPendingReply<> NotificationDBusProxy::Toggle() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("Toggle"), argumentList); -} - -QDBusPendingReply NotificationDBusProxy::getAppSetting(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("getAppSetting"), argumentList); -} - -QDBusPendingReply NotificationDBusProxy::recordCount() -{ - QList argumentList; - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("recordCount"), argumentList); -} - - - -QDBusPendingReply<> NotificationDBusProxy::setAppSetting(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_dBusNotificationInter->asyncCallWithArgumentList(QStringLiteral("setAppSetting"), argumentList); -} - - -void NotificationDBusProxy::onPropertiesChanged(const QDBusMessage &message) -{ - QVariantMap changedProps = qdbus_cast(message.arguments().at(1).value()); - for (QVariantMap::const_iterator it = changedProps.begin(); it != changedProps.end(); ++it) { - QMetaObject::invokeMethod(this, it.key().toLatin1() + "Changed", Qt::DirectConnection, QGenericArgument(it.value().typeName(), it.value().data())); - } -} diff --git a/dcc-old/src/plugin-notification/operation/notificationdbusproxy.h b/dcc-old/src/plugin-notification/operation/notificationdbusproxy.h deleted file mode 100644 index 5f0c6fc5da..0000000000 --- a/dcc-old/src/plugin-notification/operation/notificationdbusproxy.h +++ /dev/null @@ -1,79 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef NotificationDBusProxy_H -#define NotificationDBusProxy_H - -#include -#include -#include - -class QDBusInterface; -class QDBusMessage; - -class NotificationDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit NotificationDBusProxy(QObject *parent = nullptr); - - Q_PROPERTY(QString allSetting READ allSetting WRITE setAllSetting NOTIFY allSettingChanged) - QString allSetting(); - void setAllSetting(const QString &value); - - Q_PROPERTY(QString systemSetting READ systemSetting WRITE setSystemSetting NOTIFY systemSettingChanged) - QString systemSetting(); - void setSystemSetting(const QString &value); - -private: - void init(); - -public Q_SLOTS: // METHODS - //Notification - QDBusPendingReply<> ClearRecords(); - QDBusPendingReply<> CloseNotification(uint in0); - QDBusPendingReply GetAllRecords(); - QDBusPendingReply GetAppInfo(const QString &in0, uint in1); - QDBusPendingReply GetAppList(); - QDBusPendingReply GetCapbilities(); - QDBusPendingReply GetRecordById(const QString &in0); - QDBusPendingReply GetRecordsFromId(int in0, const QString &in1); - QDBusPendingReply GetServerInformation(); - QDBusReply GetServerInformation(QString &out1, QString &out2, QString &out3); - QDBusPendingReply GetSystemInfo(uint in0); - QDBusPendingReply<> Hide(); - QDBusPendingReply Notify(const QString &in0, uint in1, const QString &in2, const QString &in3, const QString &in4, const QStringList &in5, const QVariantMap &in6, int in7); - QDBusPendingReply<> RemoveRecord(const QString &in0); - QDBusPendingReply<> SetAppInfo(const QString &in0, uint in1, const QDBusVariant &in2); - QDBusPendingReply<> SetSystemInfo(uint in0, const QDBusVariant &in1); - QDBusPendingReply<> Show(); - QDBusPendingReply<> Toggle(); - QDBusPendingReply getAppSetting(const QString &in0); - QDBusPendingReply recordCount(); - QDBusPendingReply<> setAppSetting(const QString &in0); - - void onPropertiesChanged(const QDBusMessage &message); - -Q_SIGNALS: // SIGNALS - // begin property changed signals - void ActionInvoked(uint in0, const QString &in1); - void AppAddedSignal(const QString &in0); - void AppInfoChanged(const QString &in0, uint in1, const QDBusVariant &in2); - void AppRemovedSignal(const QString &in0); - void NotificationClosed(uint in0, uint in1); - void RecordAdded(const QString &in0); - void SystemInfoChanged(uint in0, const QDBusVariant &in1); - void appAdded(const QString &in0); - void appRemoved(const QString &in0); - void appSettingChanged(const QString &in0); - void systemSettingChanged(const QString &in0); - // begin property changed signals - void allSettingChanged(const QString & value) const; - void systemSettingChanged(const QString & value) const; - -private: - QDBusInterface *m_dBusNotificationInter; - QDBusInterface *m_dBusNotificationPropertiesInter; -}; - -#endif // NotificationDBusProxy_H diff --git a/dcc-old/src/plugin-notification/operation/notificationmodel.cpp b/dcc-old/src/plugin-notification/operation/notificationmodel.cpp deleted file mode 100644 index a4a160575f..0000000000 --- a/dcc-old/src/plugin-notification/operation/notificationmodel.cpp +++ /dev/null @@ -1,54 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "notificationmodel.h" -#include "model/sysitemmodel.h" -#include "model/appitemmodel.h" - -using namespace DCC_NAMESPACE; - -#define SYSTEMNOTIFY_NAME "SystemNotify" - -NotificationModel::NotificationModel(QObject *parent) - : QObject(parent) - , m_sysItemModel(new SysItemModel(this)) -{ - -} - -void NotificationModel::setSysSetting(SysItemModel *item) -{ - m_sysItemModel = item; -} - -void NotificationModel::clearModel() -{ - m_sysItemModel->deleteLater(); - m_sysItemModel = nullptr; - qDeleteAll(m_appItemModels); - m_appItemModels.clear(); -} - -void NotificationModel::appAdded(AppItemModel *item) -{ - m_appItemModels.append(item); - Q_EMIT appListChanged(); - Q_EMIT appListAdded(item); -} - -void NotificationModel::appRemoved(const QString &appName) -{ - for (int i = 0; i < m_appItemModels.size(); i++) { - if (m_appItemModels[i]->getActName() == appName) { - Q_EMIT appListRemoved(m_appItemModels[i]); - m_appItemModels[i]->deleteLater(); - m_appItemModels[i] = nullptr; - m_appItemModels.removeAt(i); - break; - } - } - - Q_EMIT appListChanged(); -} - - diff --git a/dcc-old/src/plugin-notification/operation/notificationmodel.h b/dcc-old/src/plugin-notification/operation/notificationmodel.h deleted file mode 100644 index 86f35f9be2..0000000000 --- a/dcc-old/src/plugin-notification/operation/notificationmodel.h +++ /dev/null @@ -1,44 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" - -#include -#include - -QT_BEGIN_NAMESPACE -class QJsonArray; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class SysItemModel; -class AppItemModel; - -class NotificationModel : public QObject -{ - Q_OBJECT -public: - explicit NotificationModel(QObject *parent = nullptr); - void setSysSetting(SysItemModel* item); - inline int getAppSize()const {return m_appItemModels.size();} - inline SysItemModel *getSystemModel()const {return m_sysItemModel;} - inline AppItemModel *getAppModel(const int &index) {return m_appItemModels[index];} - void clearModel(); - -public Q_SLOTS: - void appAdded(AppItemModel* item); - void appRemoved(const QString &appName); - -Q_SIGNALS: - void appListChanged(); - void appListAdded(AppItemModel* item); - void appListRemoved(AppItemModel* item); - -private: - SysItemModel *m_sysItemModel; - QList m_appItemModels; - QString m_theme; -}; -} diff --git a/dcc-old/src/plugin-notification/operation/notificationworker.cpp b/dcc-old/src/plugin-notification/operation/notificationworker.cpp deleted file mode 100644 index 7e73df3ef7..0000000000 --- a/dcc-old/src/plugin-notification/operation/notificationworker.cpp +++ /dev/null @@ -1,98 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "notificationworker.h" -#include "model/appitemmodel.h" -#include "model/sysitemmodel.h" - -#include - -const QString Path = "/org/deepin/dde/Notification1"; - -using namespace DCC_NAMESPACE; -NotificationWorker::NotificationWorker(NotificationModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_dbus(new NotificationDBusProxy(this)) -{ - connect(m_dbus, &NotificationDBusProxy::AppAddedSignal, this, &NotificationWorker::onAppAdded); - connect(m_dbus, &NotificationDBusProxy::AppRemovedSignal, this, &NotificationWorker::onAppRemoved); -} - -void NotificationWorker::active(bool sync) -{ - if (sync) { - m_model->clearModel(); - initAllSetting(); - } -} - -void NotificationWorker::deactive() -{ - -} - -void NotificationWorker::initAllSetting() -{ - initSystemSetting(); - initAppSetting(); -} - -void NotificationWorker::initSystemSetting() -{ - SysItemModel *item = new SysItemModel(this); - item->setTimeStart(m_dbus->GetSystemInfo(SysItemModel::STARTTIME).value().variant().toString()); - item->setTimeEnd(m_dbus->GetSystemInfo(SysItemModel::ENDTIME).value().variant().toString()); - item->setDisturbMode(m_dbus->GetSystemInfo(SysItemModel::DNDMODE).value().variant().toBool()); - item->setLockScreen(m_dbus->GetSystemInfo(SysItemModel::LOCKSCREENOPENDNDMODE).value().variant().toBool()); - item->setTimeSlot(m_dbus->GetSystemInfo(SysItemModel::OPENBYTIMEINTERVAL).value().variant().toBool()); - connect(m_dbus, &NotificationDBusProxy::SystemInfoChanged, item, &SysItemModel::onSettingChanged); - m_model->setSysSetting(item); -} - -void NotificationWorker::initAppSetting() -{ - QStringList *appList = new QStringList(m_dbus->GetAppList()); - QTimer *timer = new QTimer(this); - connect(timer, &QTimer::timeout, [this, appList, timer]() { - if (appList->isEmpty()) { - delete appList; - timer->stop(); - timer->deleteLater(); - } else { - onAppAdded(appList->takeFirst()); - } - }); - timer->start(10); -} - -void NotificationWorker::onAppAdded(const QString &id) -{ - AppItemModel *item = new AppItemModel(this); - item->setActName(id); - item->setSoftName(m_dbus->GetAppInfo(id, AppItemModel::APPNAME).value().variant().toString()); - item->setIcon(m_dbus->GetAppInfo(id, AppItemModel::APPICON).value().variant().toString()); - item->setAllowNotify(m_dbus->GetAppInfo(id, AppItemModel::ENABELNOTIFICATION).value().variant().toBool()); - item->setShowNotifyPreview(m_dbus->GetAppInfo(id, AppItemModel::ENABELPREVIEW).value().variant().toBool()); - item->setNotifySound(m_dbus->GetAppInfo(id, AppItemModel::ENABELSOUND).value().variant().toBool()); - item->setShowInNotifyCenter(m_dbus->GetAppInfo(id, AppItemModel::SHOWINNOTIFICATIONCENTER).value().variant().toBool()); - item->setLockShowNotify(m_dbus->GetAppInfo(id, AppItemModel::LOCKSCREENSHOWNOTIFICATION).value().variant().toBool()); - - connect(m_dbus, &NotificationDBusProxy::AppInfoChanged, item, &AppItemModel::onSettingChanged); - m_model->appAdded(item); -} - -void NotificationWorker::onAppRemoved(const QString &id) -{ - m_model->appRemoved(id); -} - -void NotificationWorker::setAppSetting(const QString &id, uint item, QVariant var) -{ - m_dbus->SetAppInfo(id, item, QDBusVariant(var)); -} - -void NotificationWorker::setSystemSetting(uint item, QVariant var) -{ - m_dbus->SetSystemInfo(item, QDBusVariant(var)); -} diff --git a/dcc-old/src/plugin-notification/operation/notificationworker.h b/dcc-old/src/plugin-notification/operation/notificationworker.h deleted file mode 100644 index 29e110f44f..0000000000 --- a/dcc-old/src/plugin-notification/operation/notificationworker.h +++ /dev/null @@ -1,37 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "notificationmodel.h" -#include "notificationdbusproxy.h" - -#include - -namespace DCC_NAMESPACE { - -class NotificationModel; -class NotificationWorker : public QObject -{ - Q_OBJECT -public: - explicit NotificationWorker(NotificationModel *model, QObject *parent = nullptr); - void active(bool sync); - void deactive(); - NotificationDBusProxy *getDbusObject() { return m_dbus; } - -public Q_SLOTS: - void initAllSetting(); - void initSystemSetting(); - void initAppSetting(); - void onAppAdded(const QString &id); - void onAppRemoved(const QString &id); - void setAppSetting(const QString &id, uint item, QVariant var); - void setSystemSetting(uint item, QVariant var); - -private: - NotificationModel *m_model; - NotificationDBusProxy *m_dbus; -}; -} diff --git a/dcc-old/src/plugin-notification/operation/qrc/icons/dcc_nav_notification_42px.svg b/dcc-old/src/plugin-notification/operation/qrc/icons/dcc_nav_notification_42px.svg deleted file mode 100644 index 89f87ae615..0000000000 --- a/dcc-old/src/plugin-notification/operation/qrc/icons/dcc_nav_notification_42px.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - dcc_nav_notification_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-notification/operation/qrc/icons/dcc_nav_notification_84px.svg b/dcc-old/src/plugin-notification/operation/qrc/icons/dcc_nav_notification_84px.svg deleted file mode 100644 index 54f8a7d8a6..0000000000 --- a/dcc-old/src/plugin-notification/operation/qrc/icons/dcc_nav_notification_84px.svg +++ /dev/null @@ -1,77 +0,0 @@ - - - dcc_nav_notification_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-notification/operation/qrc/notification.qrc b/dcc-old/src/plugin-notification/operation/qrc/notification.qrc deleted file mode 100644 index 7b614ff57b..0000000000 --- a/dcc-old/src/plugin-notification/operation/qrc/notification.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - icons/dcc_nav_notification_42px.svg - icons/dcc_nav_notification_84px.svg - - diff --git a/dcc-old/src/plugin-notification/window/NotificationPlugin.json b/dcc-old/src/plugin-notification/window/NotificationPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-notification/window/NotificationPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-notification/window/appnotifywidget.cpp b/dcc-old/src/plugin-notification/window/appnotifywidget.cpp deleted file mode 100644 index 8b8e4bdaec..0000000000 --- a/dcc-old/src/plugin-notification/window/appnotifywidget.cpp +++ /dev/null @@ -1,141 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "appnotifywidget.h" -#include "notificationitem.h" -#include "widgets/settingsgroup.h" -#include "src/plugin-notification/operation/notificationmodel.h" -#include "src/plugin-notification/operation/model/appitemmodel.h" - -#include -#include -#include - -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -AppNotifyWidget::AppNotifyWidget(AppItemModel *model, QWidget *parent) - : QWidget(parent) - , m_model(model) - , m_btnAllowNotify(new DSwitchButton) - , m_itemNotifySound(new NotificationItem) - , m_itemLockShowNotify(new NotificationItem) - , m_itemShowInNotifyCenter(new NotificationItem) - , m_itemShowNotifyPreview(new NotificationItem) -{ - initUI(); - initConnect(); -} - -void AppNotifyWidget::setModel(AppItemModel *model) -{ - m_model = model; -} - -void AppNotifyWidget::initUI() -{ - this->setAccessibleName("AppNotifyWidget"); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - mainLayout->setMargin(0); - mainLayout->setContentsMargins(10, 10, 10, 10); - - setLayout(mainLayout); - setFocusPolicy(Qt::FocusPolicy::ClickFocus); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - QHBoxLayout *hLayoutAllowNotify = new QHBoxLayout; - DLabel *lblAllowNotify = new DLabel(m_model->getAppName()); - DFontSizeManager::instance()->bind(lblAllowNotify, DFontSizeManager::T5, QFont::DemiBold); - hLayoutAllowNotify->addWidget(lblAllowNotify, Qt::AlignLeft); - hLayoutAllowNotify->addWidget(m_btnAllowNotify, Qt::AlignRight); - hLayoutAllowNotify->setContentsMargins(10, 0, 0 ,0); - mainLayout->addLayout(hLayoutAllowNotify); - - m_lblTip = new DLabel(tr("Show notifications from %1 on desktop and in the notification center.") - .arg(m_model->getAppName())); - DFontSizeManager::instance()->bind(m_lblTip, DFontSizeManager::T8); - m_lblTip->adjustSize(); - m_lblTip->setWordWrap(true); - m_lblTip->setContentsMargins(10, 5, 10, 5); - mainLayout->addWidget(m_lblTip); - - m_settingsGrp = new SettingsGroup(nullptr, SettingsGroup::GroupBackground); - m_settingsGrp->setContentsMargins(0, 0, 0, 0); - m_settingsGrp->layout()->setMargin(0); - m_settingsGrp->setSpacing(1); - - m_itemNotifySound = new NotificationItem; - m_itemNotifySound->setObjectName("NotifySound"); - m_itemNotifySound->setTitle(tr("Play a sound")); - m_settingsGrp->appendItem(m_itemNotifySound); - m_itemLockShowNotify = new NotificationItem; - m_itemLockShowNotify->setObjectName("LockShowNotify"); - m_itemLockShowNotify->setTitle(tr("Show messages on lockscreen")); - m_settingsGrp->appendItem(m_itemLockShowNotify); - m_itemShowInNotifyCenter = new NotificationItem; - m_itemShowInNotifyCenter->setObjectName("ShowInNotifyCenter"); - m_itemShowInNotifyCenter->setTitle(tr("Show in notification center")); - m_settingsGrp->appendItem(m_itemShowInNotifyCenter); - m_itemShowNotifyPreview = new NotificationItem; - m_itemShowNotifyPreview->setObjectName("ShowNotifyPreview"); - m_itemShowNotifyPreview->setTitle(tr("Show message preview")); - m_settingsGrp->appendItem(m_itemShowNotifyPreview); - mainLayout->addWidget(m_settingsGrp); - mainLayout->addStretch(); - - m_settingsGrp->setVisible(m_model->isAllowNotify()); - m_lblTip->setVisible(m_model->isAllowNotify()); -} - -void AppNotifyWidget::initConnect() -{ - //set connects: model to this - connect(m_model, &AppItemModel::allowNotifyChanged, this, [this](bool state) { - m_btnAllowNotify->setChecked(state); - }); - m_btnAllowNotify->setChecked(m_model->isAllowNotify()); - connect(m_model, &AppItemModel::lockShowNotifyChanged, this, [this](bool state) { - m_itemLockShowNotify->setState(state); - }); - m_itemLockShowNotify->setState(m_model->isLockShowNotify()); - connect(m_model, &AppItemModel::notifySoundChanged, this, [this](bool state) { - m_itemNotifySound->setState(state); - }); - m_itemNotifySound->setState(m_model->isNotifySound()); - connect(m_model, &AppItemModel::showNotifyPreviewChanged, this, [this](bool state) { - m_itemShowNotifyPreview->setState(state); - }); - m_itemShowNotifyPreview->setState(m_model->isShowNotifyPreview()); - connect(m_model, &AppItemModel::showInNotifyCenterChanged, this, [this](bool state) { - m_itemShowInNotifyCenter->setState(state); - }); - m_itemShowInNotifyCenter->setState(m_model->isShowInNotifyCenter()); - - //set connects: this to module - connect(m_btnAllowNotify, &DSwitchButton::checkedChanged, this, [ = ](bool state) { - m_model->setAllowNotify(state); - m_lblTip->setVisible(state); - m_settingsGrp->setVisible(state); - Q_EMIT requestSetAppSetting(m_model->getActName(), AppItemModel::ENABELNOTIFICATION, state); - }); - connect(m_itemLockShowNotify, &NotificationItem::stateChanged, this, [ = ](bool state) { - m_model->setLockShowNotify(state); - Q_EMIT requestSetAppSetting(m_model->getActName(), AppItemModel::LOCKSCREENSHOWNOTIFICATION, state); - }); - connect(m_itemNotifySound, &NotificationItem::stateChanged, this, [ = ](bool state) { - m_model->setNotifySound(state); - Q_EMIT requestSetAppSetting(m_model->getActName(), AppItemModel::ENABELSOUND, state); - }); - connect(m_itemShowNotifyPreview, &NotificationItem::stateChanged, this, [ = ](bool state) { - m_model->setShowNotifyPreview(state); - Q_EMIT requestSetAppSetting(m_model->getActName(), AppItemModel::ENABELPREVIEW, state); - }); - connect(m_itemShowInNotifyCenter, &NotificationItem::stateChanged, this, [ = ](bool state) { - m_model->setShowInNotifyCenter(state); - Q_EMIT requestSetAppSetting(m_model->getActName(), AppItemModel::SHOWINNOTIFICATIONCENTER, state); - }); -} diff --git a/dcc-old/src/plugin-notification/window/appnotifywidget.h b/dcc-old/src/plugin-notification/window/appnotifywidget.h deleted file mode 100644 index aa151a98cb..0000000000 --- a/dcc-old/src/plugin-notification/window/appnotifywidget.h +++ /dev/null @@ -1,47 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include - -#include -#include -#include - -namespace DCC_NAMESPACE { -class SwitchWidget; -class NormalLabel; -class SettingsGroup; - -class AppItemModel; -class NotificationItem; - -class AppNotifyWidget : public QWidget -{ - Q_OBJECT -public: - explicit AppNotifyWidget(AppItemModel *model, QWidget *parent = nullptr); - void setModel(AppItemModel *model); - -Q_SIGNALS: - void requestSetAppSetting(const QString &appName, uint item, QVariant var); - -private: - void initUI(); - void initConnect(); - -private: - AppItemModel *m_model; - Dtk::Widget::DSwitchButton *m_btnAllowNotify;//是否允许通知 - NotificationItem *m_itemNotifySound;//播放声音 - NotificationItem *m_itemLockShowNotify;//锁屏通知 - NotificationItem *m_itemShowInNotifyCenter;//仅通知中心显示 - NotificationItem *m_itemShowNotifyPreview;//显示预览 - Dtk::Widget::DLabel *m_lblTip; - SettingsGroup *m_settingsGrp; -}; -} diff --git a/dcc-old/src/plugin-notification/window/multiselectlistview.cpp b/dcc-old/src/plugin-notification/window/multiselectlistview.cpp deleted file mode 100644 index f47158cdb4..0000000000 --- a/dcc-old/src/plugin-notification/window/multiselectlistview.cpp +++ /dev/null @@ -1,70 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "multiselectlistview.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; - -MultiSelectListView::MultiSelectListView(QWidget *parent): DListView(parent) { - setAccessibleName("MultiSelectListView"); - // 禁用横向滚动条,防止内容被截断 - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); -} - -void MultiSelectListView::resetStatus(const QModelIndex &index) { - m_currentIndex = index.row(); - DListView::clearSelection(); - DListView::setSelectionMode(DListView::SingleSelection); - DListView::setCurrentIndex(index); -} - -void MultiSelectListView::currentChanged(const QModelIndex ¤t, const QModelIndex &previous) { - DListView::setSelectionMode(DListView::SingleSelection); - DListView::currentChanged(current, previous); -} - -QModelIndex MultiSelectListView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) { - DListView::setSelectionMode(DListView::MultiSelection); - return DListView::moveCursor(cursorAction, modifiers); -} - -void MultiSelectListView::keyPressEvent(QKeyEvent *event) -{ - - if (event->key() == Qt::Key_Up) { - QModelIndex nextIndex = model()->index(m_currentIndex - 1, 0); - if (nextIndex.isValid() ) { - if (isRowHidden(m_currentIndex - 1)) { - if ( m_currentIndex -1 <= 0) { - return; - } - m_currentIndex--; - keyPressEvent(event); - return; - } - setCurrentIndex(nextIndex); - Q_EMIT clicked(nextIndex); - } - return; - } else if (event->key() == Qt::Key_Down) { - QModelIndex nextIndex = model()->index(m_currentIndex + 1, 0); - if (nextIndex.isValid()) { - if (isRowHidden(m_currentIndex + 1)) { - if (model()->rowCount()-1 <= m_currentIndex + 1) { - return; - } - m_currentIndex++; - keyPressEvent(event); - return; - } - setCurrentIndex(nextIndex); - Q_EMIT clicked(nextIndex); - } - return; - } - return DListView::keyPressEvent(event); -} diff --git a/dcc-old/src/plugin-notification/window/multiselectlistview.h b/dcc-old/src/plugin-notification/window/multiselectlistview.h deleted file mode 100644 index 1ade985f98..0000000000 --- a/dcc-old/src/plugin-notification/window/multiselectlistview.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MULTISELECTLISTVIEW_H -#define MULTISELECTLISTVIEW_H - -#include "interface/namespace.h" -#include - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { - -class MultiSelectListView : public DListView -{ - Q_OBJECT -public: - explicit MultiSelectListView(QWidget *parent = nullptr); - void resetStatus(const QModelIndex &index); - -protected: - void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override; - QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override; - void keyPressEvent(QKeyEvent *event) override; - -private: - int m_currentIndex; -}; - -} - -#endif // MULTISELECTLISTVIEW_H diff --git a/dcc-old/src/plugin-notification/window/notificationitem.cpp b/dcc-old/src/plugin-notification/window/notificationitem.cpp deleted file mode 100644 index 4b74088bac..0000000000 --- a/dcc-old/src/plugin-notification/window/notificationitem.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "notificationitem.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; - -NotificationItem::NotificationItem(QWidget *parent) - : SettingsItem(parent) - , m_layout(new QHBoxLayout) - , m_chkState(new QCheckBox) -{ - setFixedHeight(38); - - m_chkState->setAccessibleName("QCheckBox"); - m_layout->setContentsMargins(10, 0, 10, 0); - m_layout->addWidget(m_chkState); - m_layout->addStretch(); - - setLayout(m_layout); - - connect(m_chkState, &QCheckBox::stateChanged, [this]() { - Q_EMIT stateChanged(getState()); - }); -} - -void NotificationItem::setTitle(const QString &title) -{ - if (title.isEmpty()) { - m_chkState->setText(nullptr); - } else { - m_chkState->setText(title); - } -} - -bool NotificationItem::getState() const -{ - return m_chkState->isChecked(); -} - -void NotificationItem::setState(const bool &state) -{ - if (state != getState()) { - m_chkState->setChecked(state); - Q_EMIT stateChanged(state); - } -} diff --git a/dcc-old/src/plugin-notification/window/notificationitem.h b/dcc-old/src/plugin-notification/window/notificationitem.h deleted file mode 100644 index b5b051c5e4..0000000000 --- a/dcc-old/src/plugin-notification/window/notificationitem.h +++ /dev/null @@ -1,35 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -QT_BEGIN_NAMESPACE -class QCheckBox; -class QLabel; -class QHBoxLayout; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -//消息通知选择项 -class NotificationItem: public SettingsItem -{ - Q_OBJECT -public: - explicit NotificationItem(QWidget *parent = nullptr); - void setTitle(const QString &title); - - bool getState() const; - void setState(const bool &state); -Q_SIGNALS: - void stateChanged(bool state); - -private: - QHBoxLayout *m_layout; - QCheckBox *m_chkState; -}; - -} diff --git a/dcc-old/src/plugin-notification/window/notificationmodule.cpp b/dcc-old/src/plugin-notification/window/notificationmodule.cpp deleted file mode 100644 index 6227519bb8..0000000000 --- a/dcc-old/src/plugin-notification/window/notificationmodule.cpp +++ /dev/null @@ -1,130 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "notificationmodule.h" - -#include "appnotifywidget.h" -#include "interface/pagemodule.h" -#include "itemmodule.h" -#include "src/plugin-notification/operation/model/appitemmodel.h" -#include "src/plugin-notification/operation/notificationmodel.h" -#include "src/plugin-notification/operation/notificationworker.h" -#include "systemnotifywidget.h" -#include "vlistmodule.h" - -#include - -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DccNotifyModule, "dcc-notify-module"); - -Q_DECLARE_METATYPE(QMargins) -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE - -QString NotificationPlugin::name() const -{ - return QStringLiteral("notification"); -} - -ModuleObject *NotificationPlugin::module() -{ - return new NotificationModule; -} - -QString NotificationPlugin::location() const -{ - return "7"; -} - -NotificationModule::NotificationModule(QObject *parent) - : HListModule(parent) - , m_model(nullptr) - , m_worker(nullptr) - , m_appNotify(new VListModule("AppNotify", tr("AppNotify"), this)) - , m_appNameList{} -{ - setName("notification"); - setDisplayName(tr("Notification")); - setIcon(DIconTheme::findQIcon("dcc_nav_notification")); - if (m_model) { - delete m_model; - } - m_model = new NotificationModel(this); - m_worker = new NotificationWorker(m_model, this); - connect(m_model, &NotificationModel::appListAdded, this, &NotificationModule::onAppListAdded); - // clang-format off - connect(m_model, &NotificationModel::appListRemoved, - this, &NotificationModule::onAppListRemoved); - // clang-format on - initUi(); -} - -void NotificationModule::active() -{ - if (m_model->getAppSize() == 0) - m_worker->active(true); -} - -void NotificationModule::initUi() -{ - ModuleObject *systemNotify = new PageModule("SystemNotify", tr("SystemNotify"), this); - systemNotify->appendChild(new ItemModule( - "SystemNotify", - "SystemNotify", - [this](ModuleObject *module) { - Q_UNUSED(module) - auto sysNotifyWidget = new SystemNotifyWidget(m_model->getSystemModel()); - connect(sysNotifyWidget, - &SystemNotifyWidget::requestSetSysSetting, - m_worker, - &NotificationWorker::setSystemSetting); - return sysNotifyWidget; - }, - false)); - appendChild(systemNotify); - - appendChild(m_appNotify); -} - -void NotificationModule::onAppListAdded(AppItemModel *item) -{ - QString softName = item->getAppName(); - qCInfo(DccNotifyModule) << "App" << softName << "added"; - QIcon icon = DIconTheme::findQIcon(item->getIcon()); - m_appNameList.append(softName); - PageModule *newpage = new PageModule(softName, softName, icon, nullptr); - newpage->appendChild(new ItemModule( - softName, - softName, - [item, this](ModuleObject *module) { - Q_UNUSED(module) - auto notifyWidget = new AppNotifyWidget(item); - notifyWidget->setSizePolicy(QSizePolicy::Expanding, - QSizePolicy::Expanding); - connect(notifyWidget, - &AppNotifyWidget::requestSetAppSetting, - m_worker, - &NotificationWorker::setAppSetting); - return notifyWidget; - }, - false), - false); - m_appNotify->appendChild(newpage); -} - -void NotificationModule::onAppListRemoved(AppItemModel *item) -{ - - int index = m_appNameList.indexOf(item->getAppName()); - qCInfo(DccNotifyModule) << "App" << item->getAppName() << "removed"; - if (index >= 0) { - m_appNameList.removeAt(index); - m_appNotify->removeChild(index); - } -} diff --git a/dcc-old/src/plugin-notification/window/notificationmodule.h b/dcc-old/src/plugin-notification/window/notificationmodule.h deleted file mode 100644 index e7206011b0..0000000000 --- a/dcc-old/src/plugin-notification/window/notificationmodule.h +++ /dev/null @@ -1,54 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "interface/moduleobject.h" -#include "interface/plugininterface.h" -#include "interface/hlistmodule.h" - -#include -#include - -class QHBoxLayout; -class QStandardItemModel; - -namespace DCC_NAMESPACE { - -class NotificationWorker; -class NotificationModel; -class NotificationWidget; -class AppNotifyWidget; -class SystemNotifyWidget; -class AppItemModel; -class VListModule; -class NotificationPlugin : public PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Notification" FILE "NotificationPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - virtual QString name() const override; - virtual ModuleObject *module() override; - virtual QString location() const override; -}; - -class NotificationModule : public DCC_NAMESPACE::HListModule { - Q_OBJECT -public: - explicit NotificationModule(QObject *parent = nullptr); - virtual void active() override; -private Q_SLOTS: - void initUi(); - NotificationWorker *work() { return m_worker; } - NotificationModel *model() { return m_model; } - void onAppListAdded(AppItemModel *item); - void onAppListRemoved(AppItemModel *item); -private: - NotificationModel *m_model; - NotificationWorker *m_worker; - VListModule *m_appNotify; - QStringList m_appNameList; -}; -} diff --git a/dcc-old/src/plugin-notification/window/systemnotifywidget.cpp b/dcc-old/src/plugin-notification/window/systemnotifywidget.cpp deleted file mode 100644 index 59fe0653d7..0000000000 --- a/dcc-old/src/plugin-notification/window/systemnotifywidget.cpp +++ /dev/null @@ -1,133 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "systemnotifywidget.h" -#include "notificationitem.h" -#include "timeslotitem.h" -#include "widgets/switchwidget.h" -#include "widgets/settingsgroup.h" -#include "src/plugin-notification/operation/notificationmodel.h" -#include "src/plugin-notification/operation/model/sysitemmodel.h" - -#include -#include -#include -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -SystemNotifyWidget::SystemNotifyWidget(SysItemModel *model, QWidget *parent) - : QWidget(parent) - , m_model(model) - , m_btnDisturbMode(new DSwitchButton) - , m_itemTimeSlot(new TimeSlotItem) - , m_itemLockScreen(new NotificationItem) -{ - initUI(); - initConnect(); -} - -void SystemNotifyWidget::setModel(SysItemModel *model) -{ - m_model = model; -} - -void SystemNotifyWidget::initUI() -{ - this->setAccessibleName("SystemNotifyWidget"); - - QVBoxLayout *mainLayout = new QVBoxLayout; - mainLayout->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - mainLayout->setMargin(0); - mainLayout->setSpacing(10); - mainLayout->setContentsMargins(10, 10, 10, 10); - - setLayout(mainLayout); - setFocusPolicy(Qt::FocusPolicy::ClickFocus); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - QHBoxLayout *hLayoutDisturbMode = new QHBoxLayout; - hLayoutDisturbMode->setContentsMargins(8, 0, 10, 0); - //~ contents_path /notification/System Notifications - //~ child_page System Notifications - DLabel *lblDisturbMode = new DLabel(tr("Do Not Disturb")); - DFontSizeManager::instance()->bind(lblDisturbMode, DFontSizeManager::T5, QFont::DemiBold); - hLayoutDisturbMode->addWidget(lblDisturbMode, Qt::AlignLeft); - hLayoutDisturbMode->addWidget(m_btnDisturbMode, Qt::AlignRight); - mainLayout->addLayout(hLayoutDisturbMode); - - DTipLabel *lblTip = new DTipLabel(tr("App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center.")); - DFontSizeManager::instance()->bind(lblTip, DFontSizeManager::T8); - lblTip->adjustSize(); - lblTip->setWordWrap(true); - lblTip->setContentsMargins(10, 5, 10, 5); - lblTip->setAlignment(Qt::AlignLeft); - mainLayout->addWidget(lblTip); - - m_settingsGrp = new SettingsGroup(nullptr, SettingsGroup::GroupBackground); - m_settingsGrp->setContentsMargins(0, 0, 0, 0); - m_settingsGrp->layout()->setMargin(0); - m_settingsGrp->setSpacing(1); - - m_itemTimeSlot = new TimeSlotItem; - m_settingsGrp->appendItem(m_itemTimeSlot); - m_itemTimeSlot->setFixedHeight(48); - - m_itemLockScreen = new NotificationItem; - m_itemLockScreen->setTitle(tr("When the screen is locked")); - m_settingsGrp->appendItem(m_itemLockScreen); - mainLayout->addWidget(m_settingsGrp); - mainLayout->addStretch(); - - m_settingsGrp->setVisible(m_btnDisturbMode->isChecked()); -} - -void SystemNotifyWidget::initConnect() -{ - connect(m_model, &SysItemModel::disturbModeChanged, this, [this](bool state) { - m_btnDisturbMode->setChecked(state); - m_settingsGrp->setVisible(state); - }); - m_btnDisturbMode->setChecked(m_model->isDisturbMode()); - m_settingsGrp->setVisible(m_model->isDisturbMode()); - connect(m_model, &SysItemModel::timeSlotChanged, this, [this](bool state) { - m_itemTimeSlot->setState(state); - }); - m_itemTimeSlot->setState(m_model->isTimeSlot()); - connect(m_model, &SysItemModel::timeStartChanged, this, [this](QString time) { - m_itemTimeSlot->setTimeStart(QTime::fromString(time, "hh:mm")); - }); - m_itemTimeSlot->setTimeStart(QTime::fromString(m_model->timeStart(), "hh:mm")); - connect(m_model, &SysItemModel::timeEndChanged, this, [this](QString time) { - m_itemTimeSlot->setTimeEnd(QTime::fromString(time, "hh:mm")); - }); - m_itemTimeSlot->setTimeEnd(QTime::fromString(m_model->timeEnd(), "hh:mm")); - connect(m_model, &SysItemModel::lockScreenChanged, this, [this](bool state) { - m_itemLockScreen->setState(state); - }); - m_itemLockScreen->setState(m_model->isLockScreen()); - - //set connects: this to module - connect(m_btnDisturbMode, &DSwitchButton::checkedChanged, this, [ = ](bool state) { - m_settingsGrp->setVisible(state); - Q_EMIT requestSetSysSetting(SysItemModel::DNDMODE, state); - }); - connect(m_itemTimeSlot, &TimeSlotItem::stateChanged, this, [ = ](bool state) { - Q_EMIT requestSetSysSetting(SysItemModel::OPENBYTIMEINTERVAL, state); - }); - connect(m_itemTimeSlot, &TimeSlotItem::timeStartChanged, this, [ = ](QTime time) { - Q_EMIT requestSetSysSetting(SysItemModel::STARTTIME, time.toString("hh:mm")); - }); - connect(m_itemTimeSlot, &TimeSlotItem::timeEndChanged, this, [ = ](QTime time) { - Q_EMIT requestSetSysSetting(SysItemModel::ENDTIME, time.toString("hh:mm")); - }); - connect(m_itemLockScreen, &NotificationItem::stateChanged, this, [ = ](bool state) { - Q_EMIT requestSetSysSetting(SysItemModel::LOCKSCREENOPENDNDMODE, state); - }); -} diff --git a/dcc-old/src/plugin-notification/window/systemnotifywidget.h b/dcc-old/src/plugin-notification/window/systemnotifywidget.h deleted file mode 100644 index e3cd744156..0000000000 --- a/dcc-old/src/plugin-notification/window/systemnotifywidget.h +++ /dev/null @@ -1,55 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include - -#include -#include - -DWIDGET_BEGIN_NAMESPACE -class DLineEdit; -class DSwitchButton; -DWIDGET_END_NAMESPACE - -QT_BEGIN_NAMESPACE -class QCheckBox; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class SwitchWidget; -class NormalLabel; -class SettingsGroup; - -class SysItemModel; - -class NotificationItem; -class TimeSlotItem; - -class SystemNotifyWidget : public QWidget -{ - Q_OBJECT -public: - explicit SystemNotifyWidget(SysItemModel *model, QWidget *parent = nullptr); - void setModel(SysItemModel *model); - -Q_SIGNALS: - void requestSetSysSetting(uint item, QVariant var); - -private: - void initUI(); - void initConnect(); - -private: - SysItemModel *m_model; - Dtk::Widget::DSwitchButton *m_btnDisturbMode;//勿扰模式 - TimeSlotItem *m_itemTimeSlot;//时间段 - NotificationItem *m_itemLockScreen; - SettingsGroup *m_settingsGrp;//自选项 - Dtk::Widget::DLineEdit *m_editTimeStart;//时间段开始 - Dtk::Widget::DLineEdit *m_editTimeEnd;//时间段结束 -}; -} diff --git a/dcc-old/src/plugin-notification/window/timeslotitem.cpp b/dcc-old/src/plugin-notification/window/timeslotitem.cpp deleted file mode 100644 index 9f9fed53a1..0000000000 --- a/dcc-old/src/plugin-notification/window/timeslotitem.cpp +++ /dev/null @@ -1,92 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "timeslotitem.h" - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -//消息通知时间段项 -TimeSlotItem::TimeSlotItem(QWidget *parent) - : SettingsItem(parent) - , m_chkState(new QCheckBox) - , m_editStart(new DTimeEdit) - , m_editEnd(new DTimeEdit) -{ - m_editStart->setDisplayFormat("h:mm"); - m_editStart->setAlignment(Qt::AlignCenter); - m_editStart->setAccessibleName("Start_Time_Edit"); - m_editStart->setProperty("_d_dtk_spinBox", true); - m_editEnd->setDisplayFormat("h:mm"); - m_editEnd->setAlignment(Qt::AlignCenter); - m_editEnd->setAccessibleName("End_Time_Edit"); - m_editEnd->setProperty("_d_dtk_spinBox", true); - m_chkState->setAccessibleName("Time_CheckBox"); - m_chkState->setMinimumHeight(40); - - QLabel *lblFrom = new QLabel(tr("From")); - lblFrom->adjustSize(); - QLabel *lblTo = new QLabel(tr("To")); - lblTo->adjustSize(); - - auto layout = new QHBoxLayout; - layout->setContentsMargins(10, 0, 10, 0); - layout->addWidget(m_chkState); - layout->addWidget(lblFrom); - layout->addWidget(m_editStart); - layout->addWidget(lblTo); - layout->addWidget(m_editEnd); - layout->addStretch(); - - setLayout(layout); - - connect(m_chkState, &QCheckBox::stateChanged, this, [ = ]() { - Q_EMIT stateChanged(getState()); - }); - connect(m_editStart, &DTimeEdit::timeChanged, this, &TimeSlotItem::timeStartChanged); - connect(m_editEnd, &DTimeEdit::timeChanged, this, &TimeSlotItem::timeEndChanged); -} - -bool TimeSlotItem::getState() const -{ - return m_chkState->isChecked(); -} - -void TimeSlotItem::setState(const bool &state) -{ - if (getState() != state) { - m_chkState->setChecked(state); - } - Q_EMIT stateChanged(state); -} - -QTime TimeSlotItem::getTimeStart() const -{ - return m_editStart->time(); -} - -void TimeSlotItem::setTimeStart(const QTime &time) -{ - if (QTime::fromString(m_editStart->text()) != time) { - m_editStart->setTime(time); - Q_EMIT timeStartChanged(time); - } -} - -QTime TimeSlotItem::getTimeEnd() const -{ - return m_editEnd->time(); -} - -void TimeSlotItem::setTimeEnd(const QTime &time) -{ - if (QTime::fromString(m_editEnd->text()) != time) { - m_editEnd->setTime(time); - Q_EMIT timeEndChanged(time); - } -} diff --git a/dcc-old/src/plugin-notification/window/timeslotitem.h b/dcc-old/src/plugin-notification/window/timeslotitem.h deleted file mode 100644 index 170491c2f4..0000000000 --- a/dcc-old/src/plugin-notification/window/timeslotitem.h +++ /dev/null @@ -1,43 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -#include - -QT_BEGIN_NAMESPACE -class QTime; -class QCheckBox; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class TimeSlotItem: public SettingsItem -{ - Q_OBJECT -public: - explicit TimeSlotItem(QWidget *parent = nullptr); - - bool getState()const; - void setState(const bool &state); - - QTime getTimeStart()const; - void setTimeStart(const QTime &time); - - QTime getTimeEnd()const; - void setTimeEnd(const QTime &time); - -Q_SIGNALS: - void stateChanged(bool state); - void timeStartChanged(QTime time); - void timeEndChanged(QTime time); - -private: - QCheckBox *m_chkState; - Dtk::Widget::DTimeEdit *m_editStart; - Dtk::Widget::DTimeEdit *m_editEnd; -}; -} diff --git a/dcc-old/src/plugin-personalization-dock/operation/dockdbusproxy.cpp b/dcc-old/src/plugin-personalization-dock/operation/dockdbusproxy.cpp deleted file mode 100644 index 4d8aa2a539..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/dockdbusproxy.cpp +++ /dev/null @@ -1,187 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "dockdbusproxy.h" - -#include -#include -#include -#include -#include -#include - -const static QString DaemonDockService = "org.deepin.dde.daemon.Dock1"; -const static QString DaemonDockPath = "/org/deepin/dde/daemon/Dock1"; -const static QString DaemonDockInterface = "org.deepin.dde.daemon.Dock1"; -const static QString DockService = "org.deepin.dde.Dock1"; -const static QString DockPath = "/org/deepin/dde/Dock1"; -const static QString DockInterface = "org.deepin.dde.Dock1"; - -const static QString PropertiesInterface = "org.freedesktop.DBus.Properties"; -const static QString PropertiesChanged = "PropertiesChanged"; - -QDBusArgument &operator<<(QDBusArgument &arg, const DockItemInfo &info) -{ - arg.beginStructure(); - arg << info.name << info.displayName << info.itemKey << info.settingKey << info.dcc_icon << info.visible; - arg.endStructure(); - return arg; -} - -const QDBusArgument &operator>>(const QDBusArgument &arg, DockItemInfo &info) -{ - arg.beginStructure(); - arg >> info.name >> info.displayName >> info.itemKey >> info.settingKey >> info.dcc_icon >> info.visible; - arg.endStructure(); - return arg; -} - -DockDBusProxy::DockDBusProxy(QObject *parent) - : QObject(parent) - , m_daemonDockInter(new QDBusInterface(DaemonDockService, DaemonDockPath, DaemonDockInterface, QDBusConnection::sessionBus(), this)) - , m_dockInter(new QDBusInterface(DockService, DockPath, DockInterface, QDBusConnection::sessionBus(), this)) -{ - QDBusConnection::sessionBus().connect(DaemonDockService, DaemonDockPath, DaemonDockInterface, "DisplayModeChanged", this, SIGNAL(DisplayModeChanged(int))); - QDBusConnection::sessionBus().connect(DaemonDockService, DaemonDockPath, DaemonDockInterface, "PositionChanged", this, SIGNAL(PositionChanged(int))); - QDBusConnection::sessionBus().connect(DaemonDockService, DaemonDockPath, DaemonDockInterface, "HideModeChanged", this, SIGNAL(HideModeChanged(int))); - QDBusConnection::sessionBus().connect(DaemonDockService, DaemonDockPath, DaemonDockInterface, "WindowSizeEfficientChanged", this, SIGNAL(WindowSizeEfficientChanged(uint))); - QDBusConnection::sessionBus().connect(DaemonDockService, DaemonDockPath, DaemonDockInterface, "WindowSizeFashionChanged", this, SIGNAL(WindowSizeFashionChanged(uint))); - QDBusConnection::sessionBus().connect(DaemonDockService, DaemonDockPath, DaemonDockInterface, "showRecentChanged", this, SIGNAL(showRecentChanged(bool))); - - QDBusConnection::sessionBus().connect(DockService, DockPath, DockInterface, "showInPrimaryChanged", this, SLOT(ShowInPrimaryChanged(bool))); - QDBusConnection::sessionBus().connect(DockService, DockPath, DockInterface, "pluginVisibleChanged", this, SLOT(pluginVisibleChanged(const QString &, bool))); - - regiestDockItemType(); -} - -int DockDBusProxy::displayMode() -{ - return qvariant_cast(m_daemonDockInter->property("DisplayMode")); -} - -void DockDBusProxy::setDisplayMode(int mode) -{ - m_daemonDockInter->setProperty("DisplayMode", QVariant::fromValue(mode)); -} - -int DockDBusProxy::position() -{ - return qvariant_cast(m_daemonDockInter->property("Position")); -} - -void DockDBusProxy::setPosition(int value) -{ - m_daemonDockInter->setProperty("Position", QVariant::fromValue(value)); -} - -int DockDBusProxy::hideMode() -{ - return qvariant_cast(m_daemonDockInter->property("HideMode")); -} - -void DockDBusProxy::setHideMode(int value) -{ - m_daemonDockInter->setProperty("HideMode", QVariant::fromValue(value)); -} - -uint DockDBusProxy::windowSizeEfficient() -{ - return qvariant_cast(m_daemonDockInter->property("WindowSizeEfficient")); -} - -void DockDBusProxy::setWindowSizeEfficient(uint value) -{ - m_daemonDockInter->setProperty("WindowSizeEfficient", QVariant::fromValue(value)); -} - -uint DockDBusProxy::windowSizeFashion() -{ - return qvariant_cast(m_daemonDockInter->property("WindowSizeFashion")); -} - -void DockDBusProxy::setWindowSizeFashion(uint value) -{ - m_daemonDockInter->setProperty("WindowSizeFashion", QVariant::fromValue(value)); -} - -bool DockDBusProxy::showInPrimary() -{ - return qvariant_cast(m_dockInter->property("showInPrimary")); -} - -void DockDBusProxy::setShowInPrimary(bool value) -{ - m_dockInter->setProperty("showInPrimary", QVariant::fromValue(value)); -} - -bool DockDBusProxy::showRecent() -{ - return qvariant_cast(m_daemonDockInter->property("ShowRecent")); -} - -void DockDBusProxy::regiestDockItemType() -{ - static bool isRegister = false; - if (isRegister) - return; - - qRegisterMetaType("DockItemInfo"); - qDBusRegisterMetaType(); - qRegisterMetaType("DockItemInfos"); - qDBusRegisterMetaType(); - isRegister = true; -} - -void DockDBusProxy::resizeDock(int offset, bool dragging) -{ - m_dockInter->call(QDBus::CallMode::Block, QStringLiteral("resizeDock"), QVariant::fromValue(offset), QVariant::fromValue(dragging)); -} - -QDBusPendingReply DockDBusProxy::GetLoadedPlugins() -{ - QDBusPendingReply reply = m_dockInter->asyncCall(QStringLiteral("GetLoadedPlugins")); - reply.waitForFinished(); - return reply; -} - -QDBusPendingReply DockDBusProxy::getPluginKey(const QString &pluginName) -{ - QList argumentList; - argumentList << QVariant::fromValue(pluginName); - return m_dockInter->asyncCallWithArgumentList(QStringLiteral("getPluginKey"), argumentList); -} - -QDBusPendingReply DockDBusProxy::getPluginVisible(const QString &pluginName) -{ - QList argumentList; - argumentList << QVariant::fromValue(pluginName); - return m_dockInter->asyncCallWithArgumentList(QStringLiteral("getPluginVisible"), argumentList); -} - -QDBusPendingReply<> DockDBusProxy::setPluginVisible(const QString &pluginName, bool visible) -{ - QList argumentList; - argumentList << QVariant::fromValue(pluginName) << QVariant::fromValue(visible); - return m_dockInter->asyncCallWithArgumentList(QStringLiteral("setPluginVisible"), argumentList); -} - -QDBusPendingReply<> DockDBusProxy::SetShowRecent(bool visible) -{ - QList argumengList; - argumengList << QVariant::fromValue(visible); - return m_daemonDockInter->asyncCallWithArgumentList(QStringLiteral("SetShowRecent"), argumengList); -} - -QDBusPendingReply DockDBusProxy::plugins() -{ - QDBusPendingReply reply = m_dockInter->asyncCall(QStringLiteral("plugins")); - reply.waitForFinished(); - return reply; -} - -QDBusPendingReply<> DockDBusProxy::setItemOnDock(const QString settingKey, const QString &itemKey, bool visible) -{ - QList argumengList; - argumengList << settingKey << itemKey << QVariant::fromValue(visible); - return m_dockInter->asyncCallWithArgumentList("setItemOnDock", argumengList); -} diff --git a/dcc-old/src/plugin-personalization-dock/operation/dockdbusproxy.h b/dcc-old/src/plugin-personalization-dock/operation/dockdbusproxy.h deleted file mode 100644 index 771df05119..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/dockdbusproxy.h +++ /dev/null @@ -1,96 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DOCKDBUSPROXY_H -#define DOCKDBUSPROXY_H - -#include -#include - -class QDBusInterface; -class QDBusMessage; - -struct DockItemInfo -{ - QString name; - QString displayName; - QString itemKey; - QString settingKey; - QString dcc_icon; - bool visible; -}; - -QDBusArgument &operator<<(QDBusArgument &arg, const DockItemInfo &info); -const QDBusArgument &operator>>(const QDBusArgument &arg, DockItemInfo &info); - -Q_DECLARE_METATYPE(DockItemInfo) - -typedef QList DockItemInfos; - -Q_DECLARE_METATYPE(DockItemInfos) - -class DockDBusProxy : public QObject -{ - Q_OBJECT - -public: - explicit DockDBusProxy(QObject *parent = nullptr); - - Q_PROPERTY(int DisplayMode READ displayMode WRITE setDisplayMode NOTIFY DisplayModeChanged) - int displayMode(); - void setDisplayMode(int mode); - - Q_PROPERTY(int Position READ position WRITE setPosition NOTIFY PositionChanged) - int position(); - void setPosition(int value); - - Q_PROPERTY(int HideMode READ hideMode WRITE setHideMode NOTIFY HideModeChanged) - int hideMode(); - void setHideMode(int value); - - Q_PROPERTY(uint WindowSizeEfficient READ windowSizeEfficient WRITE setWindowSizeEfficient NOTIFY WindowSizeEfficientChanged) - uint windowSizeEfficient(); - void setWindowSizeEfficient(uint value); - - Q_PROPERTY(uint WindowSizeFashion READ windowSizeFashion WRITE setWindowSizeFashion NOTIFY WindowSizeFashionChanged) - uint windowSizeFashion(); - void setWindowSizeFashion(uint value); - - Q_PROPERTY(bool showInPrimary READ showInPrimary WRITE setShowInPrimary NOTIFY ShowInPrimaryChanged) - bool showInPrimary(); - void setShowInPrimary(bool value); - - Q_PROPERTY(bool ShowRecent READ showRecent NOTIFY showRecentChanged) - bool showRecent(); - - static void regiestDockItemType(); - -public Q_SLOTS: - void resizeDock(int offset, bool dragging); - QDBusPendingReply GetLoadedPlugins(); - QDBusPendingReply getPluginKey(const QString &pluginName); - QDBusPendingReply getPluginVisible(const QString &pluginName); - QDBusPendingReply<> setPluginVisible(const QString &pluginName, bool visible); - QDBusPendingReply<> SetShowRecent(bool visible); - QDBusPendingReply plugins(); - QDBusPendingReply<> setItemOnDock(const QString settingKey, const QString &itemKey, bool visible); - -Q_SIGNALS: - // property changed signals - void DisplayModeChanged(int displayMode) const; - void PositionChanged(int position) const; - void HideModeChanged(int hideMode) const; - void WindowSizeEfficientChanged(uint windowSizeEfficient) const; - void WindowSizeFashionChanged(uint windowSizeFashion) const; - void ShowInPrimaryChanged(bool showInPrimary) const; - - // real singals - void pluginVisibleChanged(const QString &pluginName, bool visible) const; - void showRecentChanged(bool) const; - -private: - QDBusInterface *m_daemonDockInter; - QDBusInterface *m_dockInter; -}; - -#endif // DOCKDBUSPROXY_H diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/resources.qrc b/dcc-old/src/plugin-personalization-dock/operation/qrc/resources.qrc deleted file mode 100644 index 792f345b84..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/resources.qrc +++ /dev/null @@ -1,16 +0,0 @@ - - - texts/dcc_dock_time_16px.svg - texts/dcc_dock_assistant_16px.svg - texts/dcc_dock_desktop_16px.svg - texts/dcc_dock_keyboard_16px.svg - texts/dcc_dock_notify_16px.svg - texts/dcc_dock_plug_in_16px.svg - texts/dcc_dock_power_16px.svg - texts/dcc_dock_task_16px.svg - texts/dcc_dock_trash_16px.svg - texts/dcc_dock_grandsearch_16px.svg - texts/dcc_dock_systemmonitor_16px.svg - texts/dcc_dock_shot_start_plugin_16px.svg - - diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_assistant_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_assistant_16px.svg deleted file mode 100644 index 7c2010bf1a..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_assistant_16px.svg +++ /dev/null @@ -1,15 +0,0 @@ - - - icon/dock/assistant - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_desktop_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_desktop_16px.svg deleted file mode 100644 index c0fa9ab19a..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_desktop_16px.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - icon/dock/desktop - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_grandsearch_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_grandsearch_16px.svg deleted file mode 100644 index b1e0e65bad..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_grandsearch_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - icon/dock-set/search - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_keyboard_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_keyboard_16px.svg deleted file mode 100644 index d9c5718b2d..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_keyboard_16px.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - icon/dock/keyboard - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_notify_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_notify_16px.svg deleted file mode 100644 index fba7599214..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_notify_16px.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - icon/dock/notify - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_plug_in_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_plug_in_16px.svg deleted file mode 100644 index 5ab6bf7fd1..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_plug_in_16px.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - icon/dock/plug-in2 - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_power_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_power_16px.svg deleted file mode 100644 index 66aea8e7c8..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_power_16px.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - icon/dock-set/power - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_shot_start_plugin_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_shot_start_plugin_16px.svg deleted file mode 100644 index 9a53f3b4ba..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_shot_start_plugin_16px.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - screenshot-dark - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_systemmonitor_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_systemmonitor_16px.svg deleted file mode 100644 index 50ee6bb28b..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_systemmonitor_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - icon/dock-set/monitor - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_task_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_task_16px.svg deleted file mode 100644 index 0537c2347b..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_task_16px.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - icon/dock/task - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_time_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_time_16px.svg deleted file mode 100644 index da813d6f9d..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_time_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - icon/dock/time - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_trash_16px.svg b/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_trash_16px.svg deleted file mode 100644 index 05ce6decf8..0000000000 --- a/dcc-old/src/plugin-personalization-dock/operation/qrc/texts/dcc_dock_trash_16px.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - icon/dock/trash - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization-dock/window/dockplugin.cpp b/dcc-old/src/plugin-personalization-dock/window/dockplugin.cpp deleted file mode 100644 index 1f5c30ccf0..0000000000 --- a/dcc-old/src/plugin-personalization-dock/window/dockplugin.cpp +++ /dev/null @@ -1,513 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "dockplugin.h" -#include "dockdbusproxy.h" - -#include "widgets/itemmodule.h" -#include "widgets/widgetmodule.h" -#include "widgets/comboxwidget.h" -#include "widgets/titledslideritem.h" -#include "widgets/dccslider.h" -#include "widgets/titlelabel.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -using namespace DCC_NAMESPACE; - -const int ICON_SIZE = 16; - -enum DisplayMode -{ - AlignCenter = 0, // 时尚模式 - AlignLeft = 1, // 高效模式 -}; - -enum Position -{ - Top = 0, // 上 - Right = 1, // 右 - Bottom = 2, // 下 - Left = 3, // 左 -}; - -enum HideMode -{ - KeepShowing = 0, // 一直显示 - KeepHidden = 1, // 一直隐藏 - SmartHide = 2, // 智能隐藏 -}; - -static const QMap &pluginIconMap = {{"AiAssistant", "dcc_dock_assistant"} - , {"show-desktop", "dcc_dock_desktop"} - , {"onboard", "dcc_dock_keyboard"} - , {"notifications", "dcc_dock_notify"} - , {"shutdown", "dcc_dock_power"} - , {"multitasking", "dcc_dock_task"} - , {"datetime", "dcc_dock_time"} - , {"system-monitor", "dcc_dock_systemmonitor"} - , {"grand-search", "dcc_dock_grandsearch"} - , {"trash", "dcc_dock_trash"} - , {"shot-start-plugin", "dcc_dock_shot_start_plugin"}}; - -DockPlugin::DockPlugin(QObject *parent) - : PluginInterface(parent) -{ -} - -QString DockPlugin::name() const -{ - return QString("dock"); -} - -ModuleObject *DockPlugin::module() -{ - return new DockModuleObject(); -} - -QString DockPlugin::follow() const -{ - // 插入到个性化/桌面模块中,作为三级模块 - return QStringLiteral("personalization/desktop"); -} - -QString DockPlugin::location() const -{ - // 桌面的第一个模块 - return "0"; -} - -DockModuleObject::DockModuleObject() - : PageModule("dock", tr("Dock"), QString(), nullptr), m_screenTitle(new ItemModule("screenTitle", tr("Multiple Displays"))), m_screen(new ItemModule("screen", tr("Show Dock"), this, &DockModuleObject::initScreen)) -{ - setNoScroll(); - setNoStretch(); - setContentsMargins(0, 0, 0, 0); - - appendChild(new ItemModule("title", tr("Dock"))); - appendChild(new WidgetModule("alignment", tr("Alignment"), this, &DockModuleObject::initMode)); - appendChild(new WidgetModule("position", tr("Position"), this, &DockModuleObject::initPosition)); - appendChild(new WidgetModule("status", tr("Status"), this, &DockModuleObject::initStatus)); - appendChild(new WidgetModule("size", tr("Size"), this, &DockModuleObject::initSizeSlider)); - - m_screenTitle->setTitleItem(true); - m_screen->setBackground(true); - appendChild(m_screenTitle); - appendChild(m_screen); - - m_displayProxy.reset(new QDBusInterface("org.deepin.dde.Display1", "/org/deepin/dde/Display1", - "org.deepin.dde.Display1", QDBusConnection::sessionBus(), this)); - // 当任务栏服务未注册或当前只有一个屏幕或当前有多个屏幕但设置为复制模式时均不显示多屏设置项 - connect(qApp, &QApplication::screenAdded, this, &DockModuleObject::updateScreenVisible); - connect(qApp, &QApplication::screenRemoved, this, &DockModuleObject::updateScreenVisible); - QDBusConnection::sessionBus().connect("org.deepin.dde.Display1", "/org/deepin/dde/Display1", - "org.freedesktop.DBus.Properties", "PropertiesChanged", "sa{sv}as", - this, SLOT(onDisplayPropertiesChanged(const QDBusMessage &))); - updateScreenVisible(); - - DockDBusProxy::regiestDockItemType(); - // @note 不使用m_dbusProxy的原因在于module函数的调用和m_dbusProxy指针的初始化分别在不同的线程中 - QDBusInterface dockInter("org.deepin.dde.Dock1", "/org/deepin/dde/Dock1", "org.deepin.dde.Dock1", QDBusConnection::sessionBus(), this); - QDBusPendingReply reply = dockInter.asyncCall(QStringLiteral("plugins")); - reply.waitForFinished(); - DockItemInfos plugins = reply.value(); - // 当対应服务异常或插件为空时,不显示对应模块信息 - if (reply.error().type() == QDBusError::ErrorType::NoError && plugins.size() > 0) - { - appendChild(new WidgetModule("pluginTitle", tr("Plugin Area"), this, &DockModuleObject::initPluginTitle)); - appendChild(new WidgetModule("pluginTip", tr("Select which icons appear in the Dock"), this, &DockModuleObject::initPluginTips)); - appendChild(new WidgetModule("pluginArea", QString(), this, &DockModuleObject::initPluginView)); - } else { - qWarning() << "dock plugins dbus call failed: " << reply.error().name(); - } -} - -QIcon DockModuleObject::getIcon(const QString &dccIcon, bool isDeactivate, QString itemKey) const -{ - auto originPixmap = QIcon(dccIcon).pixmap(ICON_SIZE, ICON_SIZE); - auto pm = originPixmap.copy(); - QPainter pa(&pm); - QColor color; - pa.setCompositionMode(QPainter::CompositionMode_SourceIn); - auto palette = qApp->palette(); - color = palette.color(!isDeactivate ? QPalette::Active : QPalette::Inactive, QPalette::WindowText); - pa.fillRect(pm.rect(), color); - - QIcon pluginIcon; - if (!pm.isNull()) { - pluginIcon = QIcon(pm); - } else if (pluginIconMap.contains(itemKey)) { - pluginIcon = QIcon::fromTheme(pluginIconMap.value(itemKey)); - } else { - pluginIcon = QIcon::fromTheme(itemKey); - } - // 如果获取不到图标则使用默认图标 - if (pluginIcon.isNull()) { - pluginIcon = QIcon::fromTheme("dcc_dock_plug_in"); - } - - return pluginIcon; -} - -bool DockModuleObject::eventFilter(QObject *watched, QEvent *event) -{ - if (watched == m_view) { - if (event->type() == QEvent::Show || event->type() == QEvent::WindowDeactivate || event->type() == QEvent::WindowActivate) { - updateIcons(); - } else if (event->type() == QEvent::Move) { - // 固定大小,防止滚动 - int lineHeight = m_view->visualRect(m_view->indexAt(QPoint(0, 0))).height(); - m_view->setMinimumHeight(lineHeight * m_view->model()->rowCount()); - } - } - return DCC_NAMESPACE::PageModule::eventFilter(watched, event); -} - -void DockModuleObject::initMode(ComboxWidget *widget) -{ - if (m_dbusProxy.isNull()) - m_dbusProxy.reset(new DockDBusProxy); - - static QMap g_modeMap = {{tr("Align center"), AlignCenter}, {tr("Align left"), AlignLeft}}; - widget->setAccessibleName("Alignment"); - widget->comboBox()->setAccessibleName("AlignmentCombox"); - widget->addBackground(); - - widget->setTitle(tr("Alignment")); - widget->setComboxOption(QStringList() << tr("Align center") << tr("Align left")); - widget->setCurrentText(g_modeMap.key(m_dbusProxy->displayMode())); - connect(widget, &ComboxWidget::onSelectChanged, m_dbusProxy.get(), [=](const QString &text) - { m_dbusProxy->setDisplayMode(g_modeMap.value(text)); }); - - connect(m_dbusProxy.get(), &DockDBusProxy::DisplayModeChanged, widget, [=](int value) - { - DisplayMode mode = static_cast(value); - if (g_modeMap.key(mode) == widget->comboBox()->currentText()) - return; - - widget->setCurrentText(g_modeMap.key(mode)); }); -} - -void DockModuleObject::initPosition(ComboxWidget *widget) -{ - if (m_dbusProxy.isNull()) - m_dbusProxy.reset(new DockDBusProxy); - - const QMap g_positionMap = {{tr("Top"), Top}, {tr("Bottom"), Bottom}, {tr("Left"), Left}, {tr("Right"), Right}}; - widget->setAccessibleName("Location"); - widget->comboBox()->setAccessibleName("LocationCombox"); - widget->addBackground(); - widget->setTitle(tr("Location")); - widget->setComboxOption(QStringList() << tr("Top") << tr("Bottom") << tr("Left") << tr("Right")); - widget->setCurrentText(g_positionMap.key(m_dbusProxy->position())); - connect(widget, &ComboxWidget::onSelectChanged, m_dbusProxy.get(), [=](const QString &text) - { m_dbusProxy->setPosition(g_positionMap.value(text)); }); - - connect(m_dbusProxy.get(), &DockDBusProxy::PositionChanged, widget, [=](int position) - { - if (g_positionMap.key(position) == widget->comboBox()->currentText()) - return; - - widget->setCurrentText(g_positionMap.key(position)); }); -} - -void DockModuleObject::initStatus(ComboxWidget *widget) -{ - if (m_dbusProxy.isNull()) - m_dbusProxy.reset(new DockDBusProxy); - - const QMap g_stateMap = {{tr("Keep shown"), KeepShowing}, {tr("Keep hidden"), KeepHidden}, {tr("Smart hide"), SmartHide}}; - widget->setAccessibleName("Status"); - widget->comboBox()->setAccessibleName("StatusCombox"); - widget->addBackground(); - widget->setTitle(tr("Status")); - widget->setComboxOption(QStringList() << tr("Keep shown") << tr("Keep hidden") << tr("Smart hide")); - - widget->setCurrentText(g_stateMap.key(m_dbusProxy->hideMode())); - connect(widget, &ComboxWidget::onSelectChanged, m_dbusProxy.get(), [=](const QString &text) - { m_dbusProxy->setHideMode(g_stateMap.value(text)); }); - - connect(m_dbusProxy.get(), &DockDBusProxy::HideModeChanged, widget, [=](int hideMode) - { - if (g_stateMap.key(hideMode) == widget->comboBox()->currentText()) - return; - - widget->setCurrentText(g_stateMap.key(hideMode)); }); -} - -void DockModuleObject::initSizeSlider(TitledSliderItem *slider) -{ - if (m_dbusProxy.isNull()) - m_dbusProxy.reset(new DockDBusProxy); - - slider->setAccessibleName("Slider"); - slider->addBackground(); - // dde-shell dock panel min size:37 - slider->slider()->setRange(37, 100); - QStringList ranges; - ranges << tr("Small") << "" << tr("Large"); - slider->setAnnotations(ranges); - - auto updateSliderValue = [=] - { - auto displayMode = m_dbusProxy->displayMode(); - - slider->slider()->blockSignals(true); - if (displayMode == DisplayMode::AlignCenter) - { - if (int(m_dbusProxy->windowSizeFashion()) != slider->slider()->value()) - slider->slider()->setValue(int(m_dbusProxy->windowSizeFashion())); - } - else if (displayMode == DisplayMode::AlignLeft) - { - if (int(m_dbusProxy->windowSizeEfficient()) != slider->slider()->value()) - slider->slider()->setValue(int(m_dbusProxy->windowSizeEfficient())); - } - slider->slider()->blockSignals(false); - }; - - connect(m_dbusProxy.get(), &DockDBusProxy::DisplayModeChanged, slider, [=] - { updateSliderValue(); }); - connect(m_dbusProxy.get(), &DockDBusProxy::WindowSizeFashionChanged, slider, [=] - { updateSliderValue(); }); - connect(m_dbusProxy.get(), &DockDBusProxy::WindowSizeEfficientChanged, slider, [=] - { updateSliderValue(); }); - connect(slider->slider(), &DSlider::sliderMoved, slider->slider(), &DSlider::valueChanged); - connect(slider->slider(), &DSlider::valueChanged, m_dbusProxy.get(), [=](int value) - { m_dbusProxy->resizeDock(value, true); }); - connect(slider->slider(), &DSlider::sliderPressed, m_dbusProxy.get(), [=] - { m_dbusProxy->blockSignals(true); }); - connect(slider->slider(), &DSlider::sliderReleased, m_dbusProxy.get(), [=] - { - m_dbusProxy->blockSignals(false); - - // 松开手后通知dock拖拽状态解除 - QMetaObject::invokeMethod(this, [ = ] { - int offset = slider->slider()->value(); - m_dbusProxy->resizeDock(offset, false); - }, Qt::QueuedConnection); }); - - updateSliderValue(); -} - -void DockModuleObject::initScreenTitle(TitleLabel *label) -{ - label->setAccessibleName("MultipleDisplays"); - label->setText(tr("Multiple Displays")); - - connect(qApp, &QApplication::screenAdded, label, [=] - { label->setVisible(qApp->screens().count() > 1); }); - connect(qApp, &QApplication::screenRemoved, label, [=] - { label->setVisible(qApp->screens().count() > 1); }); -} - -QWidget *DockModuleObject::initScreen(DCC_NAMESPACE::ModuleObject *module) -{ - Q_UNUSED(module) - if (m_dbusProxy.isNull()) - m_dbusProxy.reset(new DockDBusProxy); - - const QMap g_screenSettingMap = {{tr("On screen where the cursor is"), false}, {tr("Only on main screen"), true}}; - - QComboBox *widget = new QComboBox(); - widget->setAccessibleName("ShowDock"); - widget->setAccessibleName("ShowDockCombox"); - widget->addItems(QStringList() << tr("On screen where the cursor is") << tr("Only on main screen")); - widget->setCurrentText(g_screenSettingMap.key(m_dbusProxy->showInPrimary())); - connect(widget, static_cast(&QComboBox::currentIndexChanged), m_dbusProxy.get(), [=](int index) - { - const QString &text = widget->itemText(index); - m_dbusProxy->setShowInPrimary(g_screenSettingMap.value(text)); }); - connect(qApp, &QApplication::screenAdded, widget, [widget] - { widget->setVisible(qApp->screens().count() > 1); }); - connect(qApp, &QApplication::screenRemoved, widget, [widget] - { widget->setVisible(qApp->screens().count() > 1); }); - - // 这里不会生效,但实际场景中也不存在有其他可配置的地方,暂时不用处理 - connect(m_dbusProxy.get(), &DockDBusProxy::ShowInPrimaryChanged, widget, [widget, g_screenSettingMap](bool showInPrimary) - { - if (widget->currentText() == g_screenSettingMap.key(showInPrimary)) - return; - - widget->blockSignals(true); - widget->setCurrentText(g_screenSettingMap.key(showInPrimary)); - widget->blockSignals(false); }); - return widget; -} - -void DockModuleObject::initPluginTitle(TitleLabel *label) -{ - label->setAccessibleName("PluginArea"); - label->setText(tr("Plugin Area")); -} - -void DockModuleObject::initPluginTips(DTipLabel *label) -{ - label->setAccessibleName("PluginTips"); - label->setText(tr("Select which icons appear in the Dock")); - label->adjustSize(); - label->setWordWrap(true); - label->setContentsMargins(10, 5, 10, 5); - label->setAlignment(Qt::AlignLeft); -} - -void DockModuleObject::initPluginView(DListView *view) -{ - if (m_dbusProxy.isNull()) - m_dbusProxy.reset(new DockDBusProxy); - - QDBusPendingReply reply = m_dbusProxy->plugins(); - DockItemInfos plugins = reply.value(); - m_view = view; - view->setAccessibleName("PluginList"); - view->setAccessibleName("pluginList"); - view->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - view->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - view->setSelectionMode(QListView::SelectionMode::NoSelection); - view->setEditTriggers(DListView::NoEditTriggers); - view->setFrameShape(DListView::NoFrame); - view->setViewportMargins(0, 0, 0, 0); - view->setItemSpacing(1); - view->installEventFilter(this); - - QMargins itemMargins(view->itemMargins()); - itemMargins.setLeft(14); - view->setItemMargins(itemMargins); - - view->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); - - QScroller *scroller = QScroller::scroller(view->viewport()); - QScrollerProperties sp; - sp.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, QScrollerProperties::OvershootAlwaysOff); - scroller->setScrollerProperties(sp); - - m_pluginModel = new QStandardItemModel(this); - view->setModel(m_pluginModel); - - auto updateItemCheckStatus = [=](const QString &itemKey, bool visible) - { - for (int i = 0; i < m_pluginModel->rowCount(); ++i) - { - auto item = static_cast(m_pluginModel->item(i)); - auto key = item->data(Dtk::UserRole + 3 ).toString(); - if (key != itemKey || item->actionList(Qt::Edge::RightEdge).size() < 1) - continue; - - auto action = item->actionList(Qt::Edge::RightEdge).first(); - auto checkstatus = visible ? DStyle::SP_IndicatorChecked : DStyle::SP_IndicatorUnchecked; - auto icon = qobject_cast(qApp->style())->standardIcon(checkstatus); - action->setIcon(icon); - view->update(item->index()); - item->setData(visible, Dtk::UserRole + 1); - break; - } - }; - auto initPluginModel = [=] (DockItemInfos plugins) { - for (DockItemInfo dockItem : plugins) - { - DStandardItem *item = new DStandardItem(dockItem.displayName); - item->setFontSize(DFontSizeManager::T8); - QSize size(16, 16); - - // 插件图标 - auto leftAction = new DViewItemAction(Qt::AlignVCenter, size, size, true); - leftAction->setIcon(getIcon(dockItem.dcc_icon, !view->isActiveWindow(), dockItem.itemKey)); - item->setActionList(Qt::Edge::LeftEdge, {leftAction}); - - auto rightAction = new DViewItemAction(Qt::AlignVCenter, size, size, true); - auto checkstatus = dockItem.visible ? DStyle::SP_IndicatorChecked : DStyle::SP_IndicatorUnchecked; - auto checkIcon = qobject_cast(qApp->style())->standardIcon(checkstatus); - rightAction->setIcon(checkIcon); - item->setActionList(Qt::Edge::RightEdge, {rightAction}); - m_pluginModel->appendRow(item); - - item->setData(dockItem.visible, Dtk::UserRole + 1); - item->setData(dockItem.dcc_icon, Dtk::UserRole + 2); - item->setData(dockItem.itemKey, Dtk::UserRole + 3); - - connect(rightAction, &DViewItemAction::triggered, view, [=] - { - bool visible = !item->data(Dtk::UserRole + 1).toBool(); - m_dbusProxy->setItemOnDock(dockItem.settingKey, dockItem.itemKey, visible); - updateItemCheckStatus(dockItem.itemKey, visible); - item->setData(visible, Dtk::UserRole + 1); }); - // 主题发生变化触发的信号 - connect(Dtk::Gui::DGuiApplicationHelper::instance(), &Dtk::Gui::DGuiApplicationHelper::themeTypeChanged, view, [leftAction, this, dockItem, view]() - { leftAction->setIcon(getIcon(dockItem.dcc_icon, !view->isActiveWindow(),dockItem.itemKey)); }); - } - }; - initPluginModel(plugins); - - // 固定大小,防止滚动 - int lineHeight = view->visualRect(view->indexAt(QPoint(0, 0))).height(); - view->setMinimumHeight(lineHeight * plugins.size() + 10); - - connect(m_dbusProxy.get(), &DockDBusProxy::pluginVisibleChanged, view, std::bind(updateItemCheckStatus, std::placeholders::_1, std::placeholders::_2)); - // 开关窗口特效时刷新插件列表 - connect(DWindowManagerHelper::instance(), &DWindowManagerHelper::hasCompositeChanged, this, [=] { - m_pluginModel->clear(); - if (m_dbusProxy.isNull()) - m_dbusProxy.reset(new DockDBusProxy); - - QDBusPendingReply reply = m_dbusProxy->plugins(); - DockItemInfos plugins = reply.value(); - initPluginModel(plugins); - }); -} - -void DockModuleObject::onDisplayPropertiesChanged(const QDBusMessage &dbusMessage) -{ - QList arguments = dbusMessage.arguments(); - // 参数固定长度 - if (3 != arguments.count()) - return; - - QString interfaceName = arguments.first().toString(); - if (interfaceName != "org.deepin.dde.Display1") - return; - - QVariantMap changedProps = qdbus_cast(arguments.at(1).value()); - QStringList keys = changedProps.keys(); - if (keys.contains("DisplayMode")) - updateScreenVisible(); -} - -void DockModuleObject::updateScreenVisible() -{ - uint displayMode = m_displayProxy->property("DisplayMode").toUInt(); - bool screenIsShow = (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.deepin.dde.Dock1") && QApplication::screens().size() > 1 && displayMode == 2); - - m_screenTitle->setHidden(!screenIsShow); - m_screen->setHidden(!screenIsShow); -} - -void DockModuleObject::updateIcons() -{ - for (int i = 0; i < m_pluginModel->rowCount(); i++) { - auto item = dynamic_cast(m_pluginModel->item(i)); - if (!item || item->data(Dtk::UserRole + 2).toString().isEmpty()) - continue; - for (auto action : item->actionList(Qt::Edge::LeftEdge)) { - action->setIcon(getIcon(item->data(Dtk::UserRole + 2).toString(), !m_view->isActiveWindow(), item->data(Dtk::UserRole + 3).toString())); - } - } -} diff --git a/dcc-old/src/plugin-personalization-dock/window/dockplugin.h b/dcc-old/src/plugin-personalization-dock/window/dockplugin.h deleted file mode 100644 index 2fd98d3d85..0000000000 --- a/dcc-old/src/plugin-personalization-dock/window/dockplugin.h +++ /dev/null @@ -1,84 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DOCKPLUGIN_H -#define DOCKPLUGIN_H - -#include "interface/pagemodule.h" -#include "interface/plugininterface.h" - -#include "dtkwidget_global.h" - -#include - -namespace DCC_NAMESPACE { -class ComboxWidget; -class TitledSliderItem; -class TitleLabel; -class ItemModule; -} - -DWIDGET_BEGIN_NAMESPACE -class DTipLabel; -class DListView; -DWIDGET_END_NAMESPACE - -DWIDGET_USE_NAMESPACE - -class DockDBusProxy; -class QCheckBox; -class QDBusMessage; -class DockItemInfo; -class QStandardItemModel; -class DockPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Dock" FILE "plugin-dock.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) - -public: - explicit DockPlugin(QObject *parent = nullptr); - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString follow() const override; - virtual QString location() const override; -}; - -class DockModuleObject : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT - -public: - explicit DockModuleObject(); - -protected: - bool eventFilter(QObject *watched, QEvent *event); - -private: - QIcon getIcon(const QString &dccIcon, bool isDeactivate, QString itemKey) const; - void updateIcons(); - -private Q_SLOTS: - void initMode(DCC_NAMESPACE::ComboxWidget *widget); - void initPosition(DCC_NAMESPACE::ComboxWidget *widget); - void initStatus(DCC_NAMESPACE::ComboxWidget *widget); - void initSizeSlider(DCC_NAMESPACE::TitledSliderItem *slider); - void initScreenTitle(DCC_NAMESPACE::TitleLabel *label); - QWidget *initScreen(DCC_NAMESPACE::ModuleObject *module); - void initPluginTitle(DCC_NAMESPACE::TitleLabel *label); - void initPluginTips(DTipLabel *label); - void initPluginView(DListView *view); - void onDisplayPropertiesChanged(const QDBusMessage &dbusMessage); - void updateScreenVisible(); - -private: - QScopedPointer m_dbusProxy; - QScopedPointer m_displayProxy; - DCC_NAMESPACE::ItemModule *m_screenTitle; - DCC_NAMESPACE::ItemModule *m_screen; - QStandardItemModel *m_pluginModel; - DListView *m_view; -}; - -#endif // DOCKPLUGIN_H diff --git a/dcc-old/src/plugin-personalization-dock/window/plugin-dock.json b/dcc-old/src/plugin-personalization-dock/window/plugin-dock.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-personalization-dock/window/plugin-dock.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/operation/model/fontmodel.cpp b/dcc-old/src/plugin-personalization/operation/model/fontmodel.cpp deleted file mode 100644 index 85d85ccbe1..0000000000 --- a/dcc-old/src/plugin-personalization/operation/model/fontmodel.cpp +++ /dev/null @@ -1,24 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "fontmodel.h" - -FontModel::FontModel(QObject *parent) : QObject(parent) -{ - -} - -void FontModel::setFontList(const QList &list) -{ - if (m_list != list) { - m_list = list; - Q_EMIT listChanged(list); - } -} -void FontModel::setFontName(const QString &name) -{ - if (m_fontName != name) { - m_fontName = name; - Q_EMIT defaultFontChanged(name); - } -} diff --git a/dcc-old/src/plugin-personalization/operation/model/fontmodel.h b/dcc-old/src/plugin-personalization/operation/model/fontmodel.h deleted file mode 100644 index 654c910830..0000000000 --- a/dcc-old/src/plugin-personalization/operation/model/fontmodel.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef FONTMODEL_H -#define FONTMODEL_H - -#include -#include -#include - - -class FontModel : public QObject -{ - Q_OBJECT -public: - explicit FontModel(QObject *parent = 0); - void setFontList(const QList &list); - void setFontName(const QString &name); - inline const QList getFontList() const {return m_list;} - inline const QString getFontName() const {return m_fontName;} - -Q_SIGNALS: - void listChanged(const QList &list); - void defaultFontChanged(const QString &name); - -private: - QList m_list; - QString m_fontName; -}; - -Q_DECLARE_METATYPE(FontModel*) -#endif // FONTMODEL_H diff --git a/dcc-old/src/plugin-personalization/operation/model/fontsizemodel.cpp b/dcc-old/src/plugin-personalization/operation/model/fontsizemodel.cpp deleted file mode 100644 index 23a6d64cbd..0000000000 --- a/dcc-old/src/plugin-personalization/operation/model/fontsizemodel.cpp +++ /dev/null @@ -1,20 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "fontsizemodel.h" - - -FontSizeModel::FontSizeModel(QObject *parent) - : QObject(parent) - , m_size(0) -{ - -} - -void FontSizeModel::setFontSize(const int size) -{ - if (m_size!=size) { - m_size = size; - Q_EMIT sizeChanged(size); - } -} diff --git a/dcc-old/src/plugin-personalization/operation/model/fontsizemodel.h b/dcc-old/src/plugin-personalization/operation/model/fontsizemodel.h deleted file mode 100644 index 708d526930..0000000000 --- a/dcc-old/src/plugin-personalization/operation/model/fontsizemodel.h +++ /dev/null @@ -1,24 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef FONTSIZEMODEL_H -#define FONTSIZEMODEL_H - -#include - -class FontSizeModel : public QObject -{ - Q_OBJECT -public: - explicit FontSizeModel(QObject *parent = 0); - void setFontSize(const int size); - inline int getFontSize() const {return m_size;} - -Q_SIGNALS: - void sizeChanged(int size); - -private: - int m_size; -}; - -#endif // FONTSIZEMODEL_H diff --git a/dcc-old/src/plugin-personalization/operation/model/thememodel.cpp b/dcc-old/src/plugin-personalization/operation/model/thememodel.cpp deleted file mode 100644 index bd013bec5e..0000000000 --- a/dcc-old/src/plugin-personalization/operation/model/thememodel.cpp +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "thememodel.h" - -ThemeModel::ThemeModel(QObject *parent) - : QObject(parent) -{ -} - -QStringList ThemeModel::keys() -{ - return m_keys; -} - -void ThemeModel::addItem(const QString &id, const QJsonObject &json) -{ - if (m_list.contains(id)) { - m_keys.removeOne(id); - m_keys.append(id); - return; - } - m_keys.append(id); - m_list.insert(id, json); - Q_EMIT itemAdded(json); -} - -void ThemeModel::setDefault(const QString &value) -{ - m_default = value; - Q_EMIT defaultChanged(value); -} - -QMap ThemeModel::getPicList() const -{ - return m_picList; -} - -void ThemeModel::addPic(const QString &id, const QString &picPath) -{ - m_picList.insert(id, picPath); - Q_EMIT picAdded(id, picPath); -} - -void ThemeModel::removeItem(const QString &id) -{ - m_list.remove(id); - m_keys.removeOne(id); - Q_EMIT itemRemoved(id); -} diff --git a/dcc-old/src/plugin-personalization/operation/model/thememodel.h b/dcc-old/src/plugin-personalization/operation/model/thememodel.h deleted file mode 100644 index 7f07f29f2f..0000000000 --- a/dcc-old/src/plugin-personalization/operation/model/thememodel.h +++ /dev/null @@ -1,43 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef THEMEMODEL_H -#define THEMEMODEL_H - -#include -#include -#include -#include - -class ThemeModel : public QObject -{ - Q_OBJECT -public: - explicit ThemeModel(QObject *parent = 0); - - QStringList keys(); - void addItem(const QString &id, const QJsonObject &json); - QMap getList() { return m_list; } - - void setDefault(const QString &value); - inline QString getDefault() { return m_default; } - - QMap getPicList() const; - void addPic(const QString &id, const QString &picPath); - - void removeItem(const QString &id); - -Q_SIGNALS: - void itemAdded(const QJsonObject &json); - void defaultChanged(const QString &value); - void picAdded(const QString &id, const QString &picPath); - void itemRemoved(const QString &id); - -private: - QMap m_list; - QString m_default; - QMap m_picList; - QStringList m_keys; -}; - -#endif // THEMEMODEL_H diff --git a/dcc-old/src/plugin-personalization/operation/personalizationdbusproxy.cpp b/dcc-old/src/plugin-personalization/operation/personalizationdbusproxy.cpp deleted file mode 100644 index 930c4fe13d..0000000000 --- a/dcc-old/src/plugin-personalization/operation/personalizationdbusproxy.cpp +++ /dev/null @@ -1,293 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "personalizationdbusproxy.h" - -#include -#include -#include -#include - -const QString AppearanceService = QStringLiteral("org.deepin.dde.Appearance1"); -const QString AppearancePath = QStringLiteral("/org/deepin/dde/Appearance1"); -const QString AppearanceInterface = QStringLiteral("org.deepin.dde.Appearance1"); - -const QString WMSwitcherService = QStringLiteral("org.deepin.dde.WMSwitcher1"); -const QString WMSwitcherPath = QStringLiteral("/org/deepin/dde/WMSwitcher1"); -const QString WMSwitcherInterface = QStringLiteral("org.deepin.dde.WMSwitcher1"); - -const QString WMService = QStringLiteral("com.deepin.wm"); -const QString WMPath = QStringLiteral("/com/deepin/wm"); -const QString WMInterface = QStringLiteral("com.deepin.wm"); - -const QString EffectsService = QStringLiteral("org.kde.KWin"); -const QString EffectsPath = QStringLiteral("/Effects"); -const QString EffectsInterface = QStringLiteral("org.kde.kwin.Effects"); - -const QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); -const QString PropertiesChanged = QStringLiteral("PropertiesChanged"); - -PersonalizationDBusProxy::PersonalizationDBusProxy(QObject *parent) - : QObject(parent) - , m_AppearanceInter(new QDBusInterface(AppearanceService, AppearancePath, AppearanceInterface, QDBusConnection::sessionBus(), this)) - , m_WMSwitcherInter(new QDBusInterface(WMSwitcherService, WMSwitcherPath, WMSwitcherInterface, QDBusConnection::sessionBus(), this)) - , m_WMInter(new QDBusInterface(WMService, WMPath, WMInterface, QDBusConnection::sessionBus(), this)) - , m_EffectsInter(new QDBusInterface(EffectsService, EffectsPath, EffectsInterface, QDBusConnection::sessionBus(), this)) - -{ - QDBusConnection::sessionBus().connect(AppearanceService, AppearancePath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); - QDBusConnection::sessionBus().connect(WMService, WMPath, PropertiesInterface, PropertiesChanged, this, SLOT(onPropertiesChanged(QDBusMessage))); - - connect(m_AppearanceInter, SIGNAL(Changed(const QString &, const QString &)), this, SIGNAL(Changed(const QString &, const QString &))); - connect(m_AppearanceInter, SIGNAL(Refreshed(const QString &)), this, SIGNAL(Refreshed(const QString &))); - connect(m_WMSwitcherInter, SIGNAL(WMChanged(const QString &)), this, SIGNAL(WMChanged(const QString &))); - connect(m_WMInter, SIGNAL(compositingEnabledChanged(bool)), this, SIGNAL(compositingEnabledChanged(bool))); -} - -// Appearance -QString PersonalizationDBusProxy::background() -{ - return qvariant_cast(m_AppearanceInter->property("Background")); -} -void PersonalizationDBusProxy::setBackground(const QString &value) -{ - m_AppearanceInter->setProperty("Background", QVariant::fromValue(value)); -} - -QString PersonalizationDBusProxy::cursorTheme() -{ - return qvariant_cast(m_AppearanceInter->property("CursorTheme")); -} -void PersonalizationDBusProxy::setCursorTheme(const QString &value) -{ - m_AppearanceInter->setProperty("CursorTheme", QVariant::fromValue(value)); -} - -QString PersonalizationDBusProxy::globalTheme() -{ - return qvariant_cast(m_AppearanceInter->property("GlobalTheme")); -} - -void PersonalizationDBusProxy::setGlobalTheme(const QString &value) -{ - m_AppearanceInter->setProperty("GlobalTheme", QVariant::fromValue(value)); -} - -double PersonalizationDBusProxy::fontSize() -{ - return qvariant_cast(m_AppearanceInter->property("FontSize")); -} -void PersonalizationDBusProxy::setFontSize(double value) -{ - m_AppearanceInter->setProperty("FontSize", QVariant::fromValue(value)); -} - -QString PersonalizationDBusProxy::gtkTheme() -{ - return qvariant_cast(m_AppearanceInter->property("GtkTheme")); -} -void PersonalizationDBusProxy::setGtkTheme(const QString &value) -{ - m_AppearanceInter->setProperty("GtkTheme", QVariant::fromValue(value)); -} - -QString PersonalizationDBusProxy::iconTheme() -{ - return qvariant_cast(m_AppearanceInter->property("IconTheme")); -} -void PersonalizationDBusProxy::setIconTheme(const QString &value) -{ - m_AppearanceInter->setProperty("IconTheme", QVariant::fromValue(value)); -} - -QString PersonalizationDBusProxy::monospaceFont() -{ - return qvariant_cast(m_AppearanceInter->property("MonospaceFont")); -} -void PersonalizationDBusProxy::setMonospaceFont(const QString &value) -{ - m_AppearanceInter->setProperty("MonospaceFont", QVariant::fromValue(value)); -} - -double PersonalizationDBusProxy::opacity() -{ - return qvariant_cast(m_AppearanceInter->property("Opacity")); -} -void PersonalizationDBusProxy::setOpacity(double value) -{ - m_AppearanceInter->setProperty("Opacity", QVariant::fromValue(value)); -} - -QString PersonalizationDBusProxy::qtActiveColor() -{ - return qvariant_cast(m_AppearanceInter->property("QtActiveColor")); -} -void PersonalizationDBusProxy::setQtActiveColor(const QString &value) -{ - m_AppearanceInter->setProperty("QtActiveColor", QVariant::fromValue(value)); -} - -QString PersonalizationDBusProxy::standardFont() -{ - return qvariant_cast(m_AppearanceInter->property("StandardFont")); -} -void PersonalizationDBusProxy::setStandardFont(const QString &value) -{ - m_AppearanceInter->setProperty("StandardFont", QVariant::fromValue(value)); -} - -QString PersonalizationDBusProxy::wallpaperSlideShow() -{ - return qvariant_cast(m_AppearanceInter->property("WallpaperSlideShow")); -} -void PersonalizationDBusProxy::setWallpaperSlideShow(const QString &value) -{ - m_AppearanceInter->setProperty("WallpaperSlideShow", QVariant::fromValue(value)); -} - -int PersonalizationDBusProxy::windowRadius() -{ - return qvariant_cast(m_AppearanceInter->property("WindowRadius")); -} -void PersonalizationDBusProxy::setWindowRadius(int value) -{ - m_AppearanceInter->setProperty("WindowRadius", QVariant::fromValue(value)); -} -// Appearance slot -QString PersonalizationDBusProxy::List(const QString &ty) -{ - return QDBusPendingReply(m_AppearanceInter->asyncCall(QStringLiteral("List"), QVariant::fromValue(ty))); -} - -bool PersonalizationDBusProxy::List(const QString &ty, QObject *receiver, const char *member, const char *errorSlot) -{ - QList args; - args << QVariant::fromValue(ty); - return m_AppearanceInter->callWithCallback(QStringLiteral("List"), args, receiver, member, errorSlot); -} -void PersonalizationDBusProxy::Set(const QString &ty, const QString &value) -{ - m_AppearanceInter->asyncCall(QStringLiteral("Set"), QVariant::fromValue(ty), QVariant::fromValue(value)); -} -QString PersonalizationDBusProxy::Show(const QString &ty, const QStringList &names) -{ - return QDBusPendingReply(m_AppearanceInter->asyncCall(QStringLiteral("Show"), QVariant::fromValue(ty), QVariant::fromValue(names))); -} -bool PersonalizationDBusProxy::Show(const QString &ty, const QStringList &names, QObject *receiver, const char *member) -{ - QList args; - args << QVariant::fromValue(ty) << QVariant::fromValue(names); - return m_AppearanceInter->callWithCallback(QStringLiteral("Show"), args, receiver, member); -} -QString PersonalizationDBusProxy::Thumbnail(const QString &ty, const QString &name) -{ - return QDBusPendingReply(m_AppearanceInter->asyncCall(QStringLiteral("Thumbnail"), QVariant::fromValue(ty), QVariant::fromValue(name))); -} -bool PersonalizationDBusProxy::Thumbnail(const QString &ty, const QString &name, QObject *receiver, const char *member, const char *errorSlot) -{ - QList args; - args << QVariant::fromValue(ty) << QVariant::fromValue(name); - return m_AppearanceInter->callWithCallback(QStringLiteral("Thumbnail"), args, receiver, member, errorSlot); -} -int PersonalizationDBusProxy::getDTKSizeMode() -{ - return qvariant_cast(m_AppearanceInter->property("DTKSizeMode")); -} -void PersonalizationDBusProxy::setDTKSizeMode(int value) -{ - m_AppearanceInter->setProperty("DTKSizeMode", QVariant::fromValue(value)); -} -// WMSwitcher -bool PersonalizationDBusProxy::AllowSwitch() -{ - return QDBusPendingReply(m_WMSwitcherInter->asyncCall(QStringLiteral("AllowSwitch"))); -} - -QString PersonalizationDBusProxy::CurrentWM() -{ - return QDBusPendingReply(m_WMSwitcherInter->asyncCall(QStringLiteral("CurrentWM"))); -} -bool PersonalizationDBusProxy::CurrentWM(QObject *receiver, const char *member) -{ - QList args; - return m_WMSwitcherInter->callWithCallback(QStringLiteral("CurrentWM"), args, receiver, member); -} - -void PersonalizationDBusProxy::RequestSwitchWM() -{ - m_WMSwitcherInter->asyncCall(QStringLiteral("RequestSwitchWM")); -} -// WM -bool PersonalizationDBusProxy::compositingAllowSwitch() -{ - return qvariant_cast(m_WMInter->property("compositingAllowSwitch")); -} - -bool PersonalizationDBusProxy::compositingEnabled() -{ - return qvariant_cast(m_WMInter->property("compositingEnabled")); -} -void PersonalizationDBusProxy::setCompositingEnabled(bool value) -{ - m_WMInter->setProperty("compositingEnabled", QVariant::fromValue(value)); -} - -bool PersonalizationDBusProxy::compositingPossible() -{ - return qvariant_cast(m_WMInter->property("compositingPossible")); -} - -int PersonalizationDBusProxy::cursorSize() -{ - return qvariant_cast(m_WMInter->property("cursorSize")); -} -void PersonalizationDBusProxy::setCursorSize(int value) -{ - m_WMInter->setProperty("cursorSize", QVariant::fromValue(value)); -} - -bool PersonalizationDBusProxy::zoneEnabled() -{ - return qvariant_cast(m_WMInter->property("zoneEnabled")); -} -void PersonalizationDBusProxy::setZoneEnabled(bool value) -{ - m_WMInter->setProperty("zoneEnabled", QVariant::fromValue(value)); -} -// Effects -bool PersonalizationDBusProxy::loadEffect(const QString &name) -{ - return QDBusPendingReply(m_EffectsInter->asyncCall(QStringLiteral("loadEffect"), QVariant::fromValue(name))); -} -void PersonalizationDBusProxy::unloadEffect(const QString &name) -{ - m_EffectsInter->asyncCall(QStringLiteral("unloadEffect"), QVariant::fromValue(name)); -} -bool PersonalizationDBusProxy::isEffectLoaded(const QString &name) -{ - return QDBusPendingReply(m_EffectsInter->asyncCall(QStringLiteral("isEffectLoaded"), QVariant::fromValue(name))); -} -bool PersonalizationDBusProxy::isEffectLoaded(const QString &name, QObject *receiver, const char *member) -{ - QList args; - args << QVariant::fromValue(name); - return m_EffectsInter->callWithCallback(QStringLiteral("isEffectLoaded"), args, receiver, member); -} - -QString PersonalizationDBusProxy::activeColors() -{ - return QDBusPendingReply(m_AppearanceInter->asyncCall(QStringLiteral("GetActiveColors"))); -} - -void PersonalizationDBusProxy::setActiveColors(const QString &activeColors) -{ - m_AppearanceInter->asyncCall(QStringLiteral("SetActiveColors"), QVariant::fromValue(activeColors)); -} -// -void PersonalizationDBusProxy::onPropertiesChanged(const QDBusMessage &message) -{ - QVariantMap changedProps = qdbus_cast(message.arguments().at(1).value()); - for (QVariantMap::const_iterator it = changedProps.cbegin(); it != changedProps.cend(); ++it) { - QMetaObject::invokeMethod(this, it.key().toLatin1() + "Changed", Qt::DirectConnection, QGenericArgument(it.value().typeName(), it.value().data())); - } -} diff --git a/dcc-old/src/plugin-personalization/operation/personalizationdbusproxy.h b/dcc-old/src/plugin-personalization/operation/personalizationdbusproxy.h deleted file mode 100644 index 29af342cf4..0000000000 --- a/dcc-old/src/plugin-personalization/operation/personalizationdbusproxy.h +++ /dev/null @@ -1,138 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PERSONALIZATIONDBUSPROXY_H -#define PERSONALIZATIONDBUSPROXY_H - -#include -class QDBusInterface; -class QDBusMessage; - -class PersonalizationDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit PersonalizationDBusProxy(QObject *parent = nullptr); - - // Appearance - Q_PROPERTY(QString Background READ background WRITE setBackground NOTIFY BackgroundChanged) - QString background(); - void setBackground(const QString &value); - Q_PROPERTY(QString CursorTheme READ cursorTheme WRITE setCursorTheme NOTIFY CursorThemeChanged) - QString cursorTheme(); - void setCursorTheme(const QString &value); - Q_PROPERTY(QString GlobalTheme READ globalTheme WRITE setGlobalTheme NOTIFY GlobalThemeChanged) - QString globalTheme(); - void setGlobalTheme(const QString &value); - Q_PROPERTY(double FontSize READ fontSize WRITE setFontSize NOTIFY FontSizeChanged) - double fontSize(); - void setFontSize(double value); - Q_PROPERTY(QString GtkTheme READ gtkTheme WRITE setGtkTheme NOTIFY GtkThemeChanged) - QString gtkTheme(); - void setGtkTheme(const QString &value); - Q_PROPERTY(QString IconTheme READ iconTheme WRITE setIconTheme NOTIFY IconThemeChanged) - QString iconTheme(); - void setIconTheme(const QString &value); - Q_PROPERTY(QString MonospaceFont READ monospaceFont WRITE setMonospaceFont NOTIFY MonospaceFontChanged) - QString monospaceFont(); - void setMonospaceFont(const QString &value); - Q_PROPERTY(double Opacity READ opacity WRITE setOpacity NOTIFY OpacityChanged) - double opacity(); - void setOpacity(double value); - Q_PROPERTY(QString QtActiveColor READ qtActiveColor WRITE setQtActiveColor NOTIFY QtActiveColorChanged) - QString qtActiveColor(); - void setQtActiveColor(const QString &value); - Q_PROPERTY(QString StandardFont READ standardFont WRITE setStandardFont NOTIFY StandardFontChanged) - QString standardFont(); - void setStandardFont(const QString &value); - Q_PROPERTY(QString WallpaperSlideShow READ wallpaperSlideShow WRITE setWallpaperSlideShow NOTIFY WallpaperSlideShowChanged) - QString wallpaperSlideShow(); - void setWallpaperSlideShow(const QString &value); - Q_PROPERTY(int WindowRadius READ windowRadius WRITE setWindowRadius NOTIFY WindowRadiusChanged) - int windowRadius(); - void setWindowRadius(int value); - // SystemPersonalization - // WM - Q_PROPERTY(bool compositingAllowSwitch READ compositingAllowSwitch NOTIFY compositingAllowSwitchChanged) - bool compositingAllowSwitch(); - Q_PROPERTY(bool compositingEnabled READ compositingEnabled WRITE setCompositingEnabled NOTIFY compositingEnabledChanged) - bool compositingEnabled(); - void setCompositingEnabled(bool value); - Q_PROPERTY(bool compositingPossible READ compositingPossible NOTIFY compositingPossibleChanged) - bool compositingPossible(); - Q_PROPERTY(int cursorSize READ cursorSize WRITE setCursorSize NOTIFY cursorSizeChanged) - int cursorSize(); - void setCursorSize(int value); - // Q_PROPERTY(QString cursorTheme READ cursorTheme WRITE setCursorTheme NOTIFY CursorThemeChanged) - // QString cursorTheme(); - // void setCursorTheme(const QString &value); - Q_PROPERTY(bool zoneEnabled READ zoneEnabled WRITE setZoneEnabled NOTIFY ZoneEnabledChanged) - bool zoneEnabled(); - void setZoneEnabled(bool value); - - Q_PROPERTY(int DTKSizeMode READ getDTKSizeMode WRITE setDTKSizeMode NOTIFY DTKSizeModeChanged) - int getDTKSizeMode(); - void setDTKSizeMode(int value); - -signals: - // Appearance - void Changed(const QString &in0, const QString &in1); - void Refreshed(const QString &in0); - // begin property changed signals - void BackgroundChanged(const QString &value) const; - void CursorThemeChanged(const QString &value) const; - void FontSizeChanged(double value) const; - void GtkThemeChanged(const QString &value) const; - void IconThemeChanged(const QString &value) const; - void GlobalThemeChanged(const QString &value) const; - void MonospaceFontChanged(const QString &value) const; - void OpacityChanged(double value) const; - void QtActiveColorChanged(const QString &value) const; - void StandardFontChanged(const QString &value) const; - void WallpaperSlideShowChanged(const QString &value) const; - void WindowRadiusChanged(int value) const; - // WMSwitcher - void WMChanged(const QString &wm); - // WM - // begin property changed signals - void compositingAllowSwitchChanged(bool value) const; - void compositingEnabledChanged(bool value) const; - void compositingPossibleChanged(bool value) const; - void cursorSizeChanged(int value) const; - // void CursorThemeChanged(const QString & value) const; - void ZoneEnabledChanged(bool value) const; - void DTKSizeModeChanged(int value) const; - -public slots: - // Appearance - QString List(const QString &ty); - bool List(const QString &ty, QObject *receiver, const char *member, const char *errorSlot); - void Set(const QString &ty, const QString &value); - QString Show(const QString &ty, const QStringList &names); - bool Show(const QString &ty, const QStringList &names, QObject *receiver, const char *member); - QString Thumbnail(const QString &ty, const QString &name); - bool Thumbnail(const QString &ty, const QString &name, QObject *receiver, const char *member, const char *errorSlot); - // WMSwitcher - bool AllowSwitch(); - QString CurrentWM(); - bool CurrentWM(QObject *receiver, const char *member); - void RequestSwitchWM(); - // Effects - bool loadEffect(const QString &name); - void unloadEffect(const QString &name); - bool isEffectLoaded(const QString &name); - bool isEffectLoaded(const QString &name, QObject *receiver, const char *member); - QString activeColors(); - void setActiveColors(const QString &activeColors); - -private slots: - void onPropertiesChanged(const QDBusMessage &message); - -private: - QDBusInterface *m_AppearanceInter; - QDBusInterface *m_WMSwitcherInter; - QDBusInterface *m_WMInter; - QDBusInterface *m_EffectsInter; -}; - -#endif // PERSONALIZATIONDBUSPROXY_H diff --git a/dcc-old/src/plugin-personalization/operation/personalizationmodel.cpp b/dcc-old/src/plugin-personalization/operation/personalizationmodel.cpp deleted file mode 100644 index 12f0f00078..0000000000 --- a/dcc-old/src/plugin-personalization/operation/personalizationmodel.cpp +++ /dev/null @@ -1,101 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "personalizationmodel.h" -#include "model/thememodel.h" -#include "model/fontmodel.h" -#include "model/fontsizemodel.h" - - -PersonalizationModel::PersonalizationModel(QObject *parent) - : QObject(parent) - , m_opacity(std::pair(2, 0.4f)) - , m_allowSwitch(false) -{ - m_windowModel = new ThemeModel(this); - m_iconModel = new ThemeModel(this); - m_mouseModel = new ThemeModel(this); - m_globalThemeModel = new ThemeModel(this); - m_standFontModel = new FontModel(this); - m_monoFontModel = new FontModel(this); - m_fontSizeModel = new FontSizeModel(this); - m_is3DWm = true; - m_miniEffect = 0; -} - -PersonalizationModel::~PersonalizationModel() -{ - -} - -void PersonalizationModel::setIs3DWm(const bool is3d) -{ - if (is3d != m_is3DWm) { - m_is3DWm = is3d; - Q_EMIT wmChanged(is3d); - } -} - -bool PersonalizationModel::is3DWm() const -{ - return m_is3DWm; -} - -void PersonalizationModel::setWindowRadius(int radius) -{ - if (m_windowRadius != radius) - m_windowRadius = radius; - - Q_EMIT onWindowRadiusChanged(radius); -} - -int PersonalizationModel::windowRadius() -{ - return m_windowRadius; -} - -void PersonalizationModel::setOpacity(std::pair opacity) -{ - if (m_opacity == opacity) return; - - m_opacity = opacity; - - Q_EMIT onOpacityChanged(opacity); -} - -void PersonalizationModel::setMiniEffect(const int &effect) -{ - if(m_miniEffect == effect) return; - - m_miniEffect=effect; - - Q_EMIT onMiniEffectChanged(effect); -} - -void PersonalizationModel::setActiveColor(const QString &color) -{ - if (m_activeColor == color) - return; - - m_activeColor = color; - - Q_EMIT onActiveColorChanged(color); -} - -void PersonalizationModel::setCompositingAllowSwitch(bool value) -{ - if (m_allowSwitch == value) - return; - m_allowSwitch = value; - - Q_EMIT onCompositingAllowSwitch(value); -} - -void PersonalizationModel::setCompactDisplay(bool value) -{ - if (m_compactDisplay == value) - return; - m_compactDisplay = value; - - Q_EMIT compactDisplayChanged(value); -} \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/operation/personalizationmodel.h b/dcc-old/src/plugin-personalization/operation/personalizationmodel.h deleted file mode 100644 index efb1000732..0000000000 --- a/dcc-old/src/plugin-personalization/operation/personalizationmodel.h +++ /dev/null @@ -1,75 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PERSONALIZATIONMODEL_H -#define PERSONALIZATIONMODEL_H - -#include -#include - -class ThemeModel; -class FontModel; -class FontSizeModel; -class PersonalizationModel : public QObject -{ - Q_OBJECT - friend class MouseWorker; - -public: - explicit PersonalizationModel(QObject *parent = nullptr); - ~PersonalizationModel(); - inline ThemeModel *getWindowModel() const { return m_windowModel; } - inline ThemeModel *getIconModel() const { return m_iconModel; } - inline ThemeModel *getMouseModel() const { return m_mouseModel; } - inline ThemeModel *getGlobalThemeModel() const { return m_globalThemeModel; } - inline FontModel *getStandFontModel() const { return m_standFontModel; } - inline FontModel *getMonoFontModel() const { return m_monoFontModel; } - inline FontSizeModel *getFontSizeModel() const { return m_fontSizeModel; } - void setIs3DWm(const bool is3d); - bool is3DWm() const; - - void setWindowRadius(int radius); - int windowRadius(); - - inline std::pair opacity() const { return m_opacity; } - void setOpacity(std::pair opacity); - - inline int miniEffect() const { return m_miniEffect; } - void setMiniEffect(const int &effect); - - inline QString getActiveColor() { return m_activeColor; } - void setActiveColor(const QString &color); - - inline bool getAllowSwitch() { return m_allowSwitch; } - void setCompositingAllowSwitch(bool value); - - inline bool getCompactDisplay() { return m_compactDisplay; } - void setCompactDisplay(bool value); - -Q_SIGNALS: - void wmChanged(const bool is3d); - void onOpacityChanged(std::pair opacity); - void onMiniEffectChanged(int effect); - void onActiveColorChanged(const QString &color); - void onCompositingAllowSwitch(bool value); - void onWindowRadiusChanged(int radius); - void onSaveWindowRadiusChanged(int radius); - void compactDisplayChanged(bool value); - -private: - ThemeModel *m_windowModel; - ThemeModel *m_iconModel; - ThemeModel *m_mouseModel; - ThemeModel *m_globalThemeModel; - FontModel *m_standFontModel; - FontModel *m_monoFontModel; - FontSizeModel *m_fontSizeModel; - bool m_is3DWm; - std::pair m_opacity; - int m_miniEffect; - QString m_activeColor; - bool m_allowSwitch; - int m_windowRadius; - bool m_compactDisplay; -}; -#endif // PERSONALIZATIONMODEL_H diff --git a/dcc-old/src/plugin-personalization/operation/personalizationworker.cpp b/dcc-old/src/plugin-personalization/operation/personalizationworker.cpp deleted file mode 100644 index 5a4a8263e6..0000000000 --- a/dcc-old/src/plugin-personalization/operation/personalizationworker.cpp +++ /dev/null @@ -1,443 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "personalizationworker.h" -#include "personalizationdbusproxy.h" -#include "model/thememodel.h" -#include "model/fontmodel.h" -#include "model/fontsizemodel.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -DCORE_USE_NAMESPACE -Q_LOGGING_CATEGORY(DdcPersonalWorker, "dcc-personal-workder") - -static const std::vector OPACITY_SLIDER{ 0, 25, 40, 55, 70, 85, 100 }; - -const QList FontSizeList{ 11, 12, 13, 14, 15, 16, 18, 20 }; - -PersonalizationWorker::PersonalizationWorker(PersonalizationModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_personalizationDBusProxy(new PersonalizationDBusProxy(this)) -{ - ThemeModel *cursorTheme = m_model->getMouseModel(); - ThemeModel *windowTheme = m_model->getWindowModel(); - ThemeModel *iconTheme = m_model->getIconModel(); - ThemeModel *globalTheme = m_model->getGlobalThemeModel(); - FontModel *fontMono = m_model->getMonoFontModel(); - FontModel *fontStand = m_model->getStandFontModel(); - - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::GtkThemeChanged, windowTheme, &ThemeModel::setDefault); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::CursorThemeChanged, cursorTheme, &ThemeModel::setDefault); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::IconThemeChanged, iconTheme, &ThemeModel::setDefault); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::GlobalThemeChanged, globalTheme, &ThemeModel::setDefault); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::MonospaceFontChanged, fontMono, &FontModel::setFontName); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::StandardFontChanged, fontStand, &FontModel::setFontName); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::FontSizeChanged, this, &PersonalizationWorker::FontSizeChanged); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::Refreshed, this, &PersonalizationWorker::onRefreshedChanged); - - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::WMChanged, this, &PersonalizationWorker::onToggleWM); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::OpacityChanged, this, &PersonalizationWorker::refreshOpacity); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::QtActiveColorChanged, this, &PersonalizationWorker::refreshActiveColor); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::compositingAllowSwitchChanged, this, &PersonalizationWorker::onCompositingAllowSwitch); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::compositingEnabledChanged, this, &PersonalizationWorker::onWindowWM); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::WindowRadiusChanged, this, &PersonalizationWorker::onWindowRadiusChanged); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::DTKSizeModeChanged, this, &PersonalizationWorker::onCompactDisplayChanged); - connect(m_personalizationDBusProxy, &PersonalizationDBusProxy::Changed, this, [this](const QString &propertyName, const QString &value) { - qCDebug(DdcPersonalWorker) << "ChangeProperty is " << propertyName << "; value is" << value; - if (propertyName == "globaltheme") { - refreshTheme(); - } - }); - m_personalizationDBusProxy->isEffectLoaded("magiclamp", this, SLOT(onMiniEffectChanged(bool))); - - m_themeModels["gtk"] = windowTheme; - m_themeModels["icon"] = iconTheme; - m_themeModels["cursor"] = cursorTheme; - m_themeModels["globaltheme"] = globalTheme; - m_fontModels["standardfont"] = fontStand; - m_fontModels["monospacefont"] = fontMono; -} - -void PersonalizationWorker::active() -{ - m_personalizationDBusProxy->blockSignals(false); - - refreshWMState(); - refreshOpacity(m_personalizationDBusProxy->opacity()); - refreshActiveColor(m_personalizationDBusProxy->qtActiveColor()); - onCompositingAllowSwitch(m_personalizationDBusProxy->compositingAllowSwitch()); - - m_model->getWindowModel()->setDefault(m_personalizationDBusProxy->gtkTheme()); - m_model->getIconModel()->setDefault(m_personalizationDBusProxy->iconTheme()); - m_model->getMouseModel()->setDefault(m_personalizationDBusProxy->cursorTheme()); - m_model->getGlobalThemeModel()->setDefault(m_personalizationDBusProxy->globalTheme()); - m_model->getMonoFontModel()->setFontName(m_personalizationDBusProxy->monospaceFont()); - m_model->getStandFontModel()->setFontName(m_personalizationDBusProxy->standardFont()); - m_model->setWindowRadius(m_personalizationDBusProxy->windowRadius()); - m_model->setCompactDisplay(m_personalizationDBusProxy->getDTKSizeMode()); -} - -void PersonalizationWorker::deactive() -{ - m_personalizationDBusProxy->blockSignals(true); -} - -QList PersonalizationWorker::converToList(const QString &type, const QJsonArray &array) -{ - QList list; - for (int i = 0; i != array.size(); i++) { - QJsonObject object = array.at(i).toObject(); - object.insert("type", QJsonValue(type)); - list.append(object); - } - return list; -} - -void PersonalizationWorker::addList(ThemeModel *model, const QString &type, const QJsonArray &array) -{ - QList list; - QList objList; - QScopedPointer personalizationConfig(DConfig::create("org.deepin.dde.control-center", QStringLiteral("org.deepin.dde.control-center.personalization"), QString(), this)); - auto hideIconThemeList = personalizationConfig->value("hideIconThemes").toStringList(); - for (int i = 0; i != array.size(); i++) { - QJsonObject object = array.at(i).toObject(); - if (type == "icon" && hideIconThemeList.contains(object["Name"].toString())) { - continue; - } - object.insert("type", QJsonValue(type)); - if (object["Name"].toString() == "Custom") { - object["Name"] = tr("Custom"); - } - objList << object; - list.append(object["Id"].toString()); - - PersonalizationWatcher *watcher = new PersonalizationWatcher(this); - watcher->setProperty("category", type); - watcher->setProperty("id", object["Id"].toString()); - m_personalizationDBusProxy->Thumbnail(type, object["Id"].toString(), watcher, SLOT(onThumbnail(const QString &)), SLOT(errorSlot(const QDBusError &))); - } - - for (const QJsonObject &obj : objList) { - model->addItem(obj["Id"].toString(), obj); - } - - for (const QString &id : model->getList().keys()) { - if (!list.contains(id)) { - model->removeItem(id); - } - } -} - -void PersonalizationWorker::refreshWMState() -{ - m_personalizationDBusProxy->CurrentWM(this, SLOT(onToggleWM(const QString &))); -} - -void PersonalizationWorker::FontSizeChanged(const double value) const -{ - FontSizeModel *fontSizeModel = m_model->getFontSizeModel(); - fontSizeModel->setFontSize(sizeToSliderValue(value)); -} - -void PersonalizationWorker::onGetFontFinished(const QString &category, const QString &json) -{ - setFontList(m_fontModels[category], category, json); -} - -void PersonalizationWorker::onGetThemeFinished(const QString &category, const QString &json) -{ - const QJsonArray &array = QJsonDocument::fromJson(json.toUtf8()).array(); - addList(m_themeModels[category], category, array); -} - -void PersonalizationWorker::onGetPicFinished(const QString &category, const QString &id, const QString &json) -{ - m_themeModels[category]->addPic(id, json); -} - -void PersonalizationWorker::onRefreshedChanged(const QString &type) -{ - if (m_themeModels.keys().contains(type)) { - refreshThemeByType(type); - } - - if (m_fontModels.keys().contains(type)) { - refreshFontByType(type); - } -} - -void PersonalizationWorker::onToggleWM(const QString &wm) -{ - qCDebug(DdcPersonalWorker) << "onToggleWM: " << wm; - m_model->setIs3DWm(wm == "deepin wm"); -} - -void PersonalizationWorker::onWindowWM(bool value) -{ - qDebug() << "onWindowWM: " << value; - m_model->setIs3DWm(value); -} - -void PersonalizationWorker::onMiniEffectChanged(bool value) -{ - m_model->setMiniEffect(value ? 1 : 0); -} - -void PersonalizationWorker::onWindowRadiusChanged(int value) -{ - m_model->setWindowRadius(value); -} - -void PersonalizationWorker::onCompositingAllowSwitch(bool value) -{ - m_model->setCompositingAllowSwitch(value); -} - -void PersonalizationWorker::onCompactDisplayChanged(int value) -{ - m_model->setCompactDisplay(value); -} - -void PersonalizationWorker::setFontList(FontModel *model, const QString &type, const QString &list) -{ - QJsonArray array = QJsonDocument::fromJson(list.toLocal8Bit().data()).array(); - - QStringList l; - - for (int i = 0; i != array.size(); i++) - l << array.at(i).toString(); - - PersonalizationWatcher *watcher = new PersonalizationWatcher(this); - watcher->setProperty("type", type); - watcher->setProperty("FontModel", QVariant::fromValue(static_cast(model))); - m_personalizationDBusProxy->Show(type, l, watcher, SLOT(onShow(const QString &))); -} - -void PersonalizationWorker::refreshTheme() -{ - for (QMap::ConstIterator it = m_themeModels.begin(); it != m_themeModels.end(); it++) { - refreshThemeByType(it.key()); - } -} - -void PersonalizationWorker::refreshThemeByType(const QString &type) -{ - PersonalizationWatcher *watcher = new PersonalizationWatcher(this); - watcher->setProperty("category", type); - m_personalizationDBusProxy->List(type, watcher, SLOT(onList(const QString &)), SLOT(errorSlot(const QDBusError &))); -} - -void PersonalizationWorker::refreshFont() -{ - for (QMap::const_iterator it = m_fontModels.begin(); it != m_fontModels.end(); it++) { - refreshFontByType(it.key()); - } - - FontSizeChanged(m_personalizationDBusProxy->fontSize()); -} - -void PersonalizationWorker::refreshFontByType(const QString &type) -{ - PersonalizationWatcher *watcher = new PersonalizationWatcher(this); - watcher->setProperty("category", type); - m_personalizationDBusProxy->List(type, watcher, SLOT(onGetFont(const QString &)), SLOT(errorSlot(const QDBusError &))); -} - -void PersonalizationWorker::refreshActiveColor(const QString &color) -{ - m_model->setActiveColor(color); -} - -bool PersonalizationWorker::allowSwitchWM() -{ - return m_personalizationDBusProxy->AllowSwitch(); -} - -void PersonalizationWorker::refreshOpacity(double opacity) -{ - int slider{ static_cast(opacity * 100) }; - qCDebug(DdcPersonalWorker) << QString("opacity: %1, slider: %2").arg(opacity).arg(slider); - m_model->setOpacity(std::pair(slider, opacity)); -} - -const int RENDER_DPI = 72; -const double DPI = 96; - -double ptToPx(double pt) -{ - double px = pt / RENDER_DPI * DPI + 0.5; - return px; -} - -double pxToPt(double px) -{ - double pt = px * RENDER_DPI / DPI; - return pt; -} - -//字体大小通过点击刻度调整字体大小,可选刻度为:11px、12px、13px、14px、15px、16px、18px、20px; -//社区版默认值为12px;专业版默认值为12px; -int PersonalizationWorker::sizeToSliderValue(const double value) const -{ - int px = static_cast(ptToPx(value)); - - if (px < FontSizeList.first()) { - return 0; - } else if (px > FontSizeList.last()) { - return (FontSizeList.size() - 1); - } - - return FontSizeList.indexOf(px); -} - -double PersonalizationWorker::sliderValueToSize(const int value) const -{ - return pxToPt(FontSizeList.at(value)); -} - -double PersonalizationWorker::sliderValutToOpacity(const int value) const -{ - return static_cast(value) / static_cast(100); -} - -void PersonalizationWorker::setDefaultByType(const QString &type, const QString &value) -{ - m_personalizationDBusProxy->Set(type, value); -} - -void PersonalizationWorker::setDefault(const QJsonObject &value) -{ - //使用type去调用 - m_personalizationDBusProxy->Set(value["type"].toString(), value["Id"].toString()); -} - -void PersonalizationWorker::setFontSize(const int value) -{ - m_personalizationDBusProxy->setFontSize(sliderValueToSize(value)); -} - -void PersonalizationWorker::switchWM() -{ - //check is allowed to switch wm - bool allow = allowSwitchWM(); - if (!allow) - return; - - m_personalizationDBusProxy->RequestSwitchWM(); -} - -void PersonalizationWorker::windowSwitchWM(bool value) -{ - m_personalizationDBusProxy->setCompositingEnabled(value); -} - -void PersonalizationWorker::setOpacity(int opacity) -{ - m_personalizationDBusProxy->setOpacity(sliderValutToOpacity(opacity)); -} - -void PersonalizationWorker::setMiniEffect(int effect) -{ - switch (effect) { - case 0: - qCDebug(DdcPersonalWorker) << "scale"; - m_personalizationDBusProxy->unloadEffect("magiclamp"); - m_model->setMiniEffect(effect); - break; - case 1: - qCDebug(DdcPersonalWorker) << "magiclamp"; - m_personalizationDBusProxy->loadEffect("magiclamp"); - m_model->setMiniEffect(effect); - break; - default: - break; - } -} - -void PersonalizationWorker::setActiveColor(const QString &hexColor) -{ - m_personalizationDBusProxy->setQtActiveColor(hexColor); -} - -void PersonalizationWorker::setActiveColors(const QString &activeColors) -{ - m_personalizationDBusProxy->setActiveColors(activeColors); -} - -void PersonalizationWorker::setWindowRadius(int radius) -{ - m_personalizationDBusProxy->setWindowRadius(radius); -} - -void PersonalizationWorker::setCompactDisplay(bool value) -{ - m_personalizationDBusProxy->setDTKSizeMode(int(value)); -} - -template -T PersonalizationWorker::toSliderValue(std::vector list, T value) -{ - for (auto it = list.cbegin(); it != list.cend(); ++it) { - if (value < *it) { - return (--it) - list.begin(); - } - } - - return list.end() - list.begin(); -} - -PersonalizationWatcher::PersonalizationWatcher(PersonalizationWorker *work) - : QObject(work) - , m_work(work) -{ -} - -void PersonalizationWatcher::onShow(const QString &json) -{ - deleteLater(); - QJsonArray arrayValue = QJsonDocument::fromJson(json.toLocal8Bit().data()).array(); - - QList list = m_work->converToList(property("type").toString(), arrayValue); - // sort for display name - std::sort(list.begin(), list.end(), [=](const QJsonObject &obj1, const QJsonObject &obj2) { - QCollator qc; - return qc.compare(obj1["Name"].toString(), obj2["Name"].toString()) < 0; - }); - FontModel *model = static_cast(property("FontModel").value()); - model->setFontList(list); -} - -void PersonalizationWatcher::onList(const QString &json) -{ - m_work->onGetThemeFinished(property("category").toString(), json); - deleteLater(); -} - -void PersonalizationWatcher::onGetFont(const QString &json) -{ - m_work->onGetFontFinished(property("category").toString(), json); - deleteLater(); -} - -void PersonalizationWatcher::onThumbnail(const QString &json) -{ - m_work->onGetPicFinished(property("category").toString(), property("id").toString(), json); - deleteLater(); -} - -void PersonalizationWatcher::errorSlot(const QDBusError &err) -{ - qCInfo(DdcPersonalWorker) << err; - deleteLater(); -} diff --git a/dcc-old/src/plugin-personalization/operation/personalizationworker.h b/dcc-old/src/plugin-personalization/operation/personalizationworker.h deleted file mode 100644 index 81a4c1b738..0000000000 --- a/dcc-old/src/plugin-personalization/operation/personalizationworker.h +++ /dev/null @@ -1,99 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PERSONALIZATIONWORKER_H -#define PERSONALIZATIONWORKER_H - -#include "personalizationmodel.h" -#include -#include -#include -#include -#include -#include - -class PersonalizationDBusProxy; -class ThemeModel; -class PersonalizationWorker : public QObject -{ - Q_OBJECT -public: - PersonalizationWorker(PersonalizationModel *model, QObject *parent = nullptr); - void active(); - void deactive(); - void onGetList(); - void refreshTheme(); - void refreshFont(); - -public Q_SLOTS: - void setDefaultByType(const QString &type, const QString &value); - void setDefault(const QJsonObject &value); - void setFontSize(const int value); - void switchWM(); - void windowSwitchWM(bool value); - void setOpacity(int opcaity); - void setMiniEffect(int effect); - void setActiveColor(const QString &hexColor); - void setActiveColors(const QString &activeColors); - void setWindowRadius(int radius); - void setCompactDisplay(bool value); - -private Q_SLOTS: - void FontSizeChanged(const double value) const; - void onGetFontFinished(const QString &category, const QString &json); - void onGetThemeFinished(const QString &category, const QString &json); - void onGetPicFinished(const QString &category, const QString &id, const QString &json); - // void onGetActiveColorFinished(QDBusPendingCallWatcher *w); - void onRefreshedChanged(const QString &type); - void onToggleWM(const QString &wm); - void setFontList(FontModel *model, const QString &type, const QString &list); - void onCompositingAllowSwitch(bool value); - void onWindowWM(bool value); - void onMiniEffectChanged(bool value); - void onWindowRadiusChanged(int value); - void onCompactDisplayChanged(int value); - -private: - int sizeToSliderValue(const double value) const; - double sliderValueToSize(const int value) const; - double sliderValutToOpacity(const int value) const; - QList converToList(const QString &type, const QJsonArray &array); - void addList(ThemeModel *model, const QString &type, const QJsonArray &array); - void refreshWMState(); - void refreshThemeByType(const QString &type); - void refreshFontByType(const QString &type); - void refreshOpacity(double opacity); - void refreshActiveColor(const QString &color); - bool allowSwitchWM(); - - template - T toSliderValue(std::vector list, T value); - -private: - PersonalizationModel *m_model; - PersonalizationDBusProxy *m_personalizationDBusProxy; - - QMap m_themeModels; - QMap m_fontModels; - friend class PersonalizationWatcher; -}; - -class QDBusError; -class PersonalizationWatcher : public QObject -{ - Q_OBJECT -public: - PersonalizationWatcher(PersonalizationWorker *work); - -private Q_SLOTS: - void onShow(const QString &json); - void onList(const QString &json); - void onGetFont(const QString &json); - void onThumbnail(const QString &json); - void errorSlot(const QDBusError &err); - -private: - PersonalizationWorker *m_work; -}; - -#endif // PERSONALIZATIONWORKER_H diff --git a/dcc-old/src/plugin-personalization/operation/qrc/icons/dcc_nav_personalization_42px.svg b/dcc-old/src/plugin-personalization/operation/qrc/icons/dcc_nav_personalization_42px.svg deleted file mode 100644 index 191b9f88ed..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/icons/dcc_nav_personalization_42px.svg +++ /dev/null @@ -1,108 +0,0 @@ - - - dcc_nav_personalization_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/operation/qrc/icons/dcc_nav_personalization_84px.svg b/dcc-old/src/plugin-personalization/operation/qrc/icons/dcc_nav_personalization_84px.svg deleted file mode 100644 index becfa2a818..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/icons/dcc_nav_personalization_84px.svg +++ /dev/null @@ -1,132 +0,0 @@ - - - dcc_nav_personalization_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/operation/qrc/personalization.qrc b/dcc-old/src/plugin-personalization/operation/qrc/personalization.qrc deleted file mode 100644 index 3b50691e4a..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/personalization.qrc +++ /dev/null @@ -1,13 +0,0 @@ - - - icons/dcc_nav_personalization_42px.svg - icons/dcc_nav_personalization_84px.svg - texts/fontsize_decrease_16px.svg - texts/fontsize_increase_16px.svg - texts/transparency_high_16px.svg - texts/transparency_low_16px.svg - texts/round_high_16px.svg - texts/round_low_16px.svg - texts/help_16px.svg - - diff --git a/dcc-old/src/plugin-personalization/operation/qrc/texts/fontsize_decrease_16px.svg b/dcc-old/src/plugin-personalization/operation/qrc/texts/fontsize_decrease_16px.svg deleted file mode 100644 index 44a6996666..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/texts/fontsize_decrease_16px.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - icon/text-size/small - - - - - diff --git a/dcc-old/src/plugin-personalization/operation/qrc/texts/fontsize_increase_16px.svg b/dcc-old/src/plugin-personalization/operation/qrc/texts/fontsize_increase_16px.svg deleted file mode 100644 index 2180dd6415..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/texts/fontsize_increase_16px.svg +++ /dev/null @@ -1,8 +0,0 @@ - - - icon/text-size/lager - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/operation/qrc/texts/help_16px.svg b/dcc-old/src/plugin-personalization/operation/qrc/texts/help_16px.svg deleted file mode 100644 index d243cdf728..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/texts/help_16px.svg +++ /dev/null @@ -1,16 +0,0 @@ - - - help - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/operation/qrc/texts/round_high_16px.svg b/dcc-old/src/plugin-personalization/operation/qrc/texts/round_high_16px.svg deleted file mode 100644 index 09e4a5dfa5..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/texts/round_high_16px.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - icon_round-corner2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/operation/qrc/texts/round_low_16px.svg b/dcc-old/src/plugin-personalization/operation/qrc/texts/round_low_16px.svg deleted file mode 100644 index 7283c9e94a..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/texts/round_low_16px.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - icon_round-corner1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/operation/qrc/texts/transparency_high_16px.svg b/dcc-old/src/plugin-personalization/operation/qrc/texts/transparency_high_16px.svg deleted file mode 100644 index e96cabcdf7..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/texts/transparency_high_16px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-personalization/operation/qrc/texts/transparency_low_16px.svg b/dcc-old/src/plugin-personalization/operation/qrc/texts/transparency_low_16px.svg deleted file mode 100644 index 28aaee2808..0000000000 --- a/dcc-old/src/plugin-personalization/operation/qrc/texts/transparency_low_16px.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-personalization/window/personalizationdesktopmodule.cpp b/dcc-old/src/plugin-personalization/window/personalizationdesktopmodule.cpp deleted file mode 100644 index 8d0f1a3706..0000000000 --- a/dcc-old/src/plugin-personalization/window/personalizationdesktopmodule.cpp +++ /dev/null @@ -1,228 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "personalizationdesktopmodule.h" - -#include "dccslider.h" -#include "personalizationmodel.h" -#include "personalizationworker.h" -#include "titledslideritem.h" -#include "widgets/horizontalmodule.h" -#include "widgets/itemmodule.h" -#include "widgets/settingsgroupmodule.h" -#include "widgets/widgetmodule.h" -#include "widgets/switchwidget.h" - -#include -#include -#include -#include - -#include - -using namespace DCC_NAMESPACE; -DCORE_USE_NAMESPACE -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -PersonalizationDesktopModule::PersonalizationDesktopModule(PersonalizationModel *model, - PersonalizationWorker *work, - QObject *parent) - : PageModule("desktop", tr("Desktop"), parent) - , m_model(model) - , m_work(work) -{ - if (DSysInfo::UosServer != DSysInfo::uosType()) { // 以下服务器版没有 - appendChild(new ItemModule("window", tr("Window"))); - SettingsGroupModule *group = new SettingsGroupModule("windowGroup", tr("Window")); - appendChild(group); - if (!qEnvironmentVariable("XDG_SESSION_TYPE").contains("wayland")) - group->appendChild(new ItemModule("windowEffect", - tr("Window Effect"), - this, - &PersonalizationDesktopModule::initWindowEffect)); - - ItemModule *itemMinimizeEffect = - new ItemModule("minimizeEffect", - tr("Window Minimize Effect"), - this, - &PersonalizationDesktopModule::initMiniEffect); - group->appendChild(itemMinimizeEffect); - - auto compactModule = new ItemModule( - "compactDisplay", - tr("Compact Display"), - this, - &PersonalizationDesktopModule::initCompactMode); - - compactModule->setBackground(true); - appendChild(compactModule); - - auto compactDisplayTipModule = new WidgetModule( - "compactDisplayTip", - tr(""), - [](DTipLabel *label) { - label->setWordWrap(true); - label->setAlignment(Qt::AlignLeft); - label->setContentsMargins(10, 0, 10, 0); - label->setText(tr("If enabled, more content is displayed in the window.")); - }); - appendChild(compactDisplayTipModule); - - HorizontalModule *hor = new HorizontalModule(QString(), QString()); - appendChild(hor); - hor->appendChild(new ItemModule("transparencyEffect", - tr("Transparency"), - this, - &PersonalizationDesktopModule::initTransparentEffect, - false)); - hor->appendChild(new ItemModule("roundedEffect", - tr("Rounded Corner"), - this, - &PersonalizationDesktopModule::initRoundEffect, - false)); - itemMinimizeEffect->setVisible(m_model->is3DWm()); - hor->setVisible(m_model->is3DWm()); - connect(m_model, - &PersonalizationModel::wmChanged, - itemMinimizeEffect, - &ItemModule::setVisible); - connect(m_model, &PersonalizationModel::wmChanged, hor, &ItemModule::setVisible); - } -} - -QWidget *PersonalizationDesktopModule::initWindowEffect(ModuleObject *module) -{ - Q_UNUSED(module) - DSwitchButton *wmSwitch = new DSwitchButton(); - wmSwitch->setChecked(m_model->is3DWm()); - connect(m_model, &PersonalizationModel::wmChanged, wmSwitch, &DSwitchButton::setChecked); - connect(wmSwitch, &DSwitchButton::checkedChanged, this, [this, wmSwitch](bool checked) { - wmSwitch->setChecked(m_model->is3DWm()); - m_work->windowSwitchWM(checked); - m_work->setMiniEffect(m_model->miniEffect()); - }); - return wmSwitch; -} - -QWidget *PersonalizationDesktopModule::initTransparentEffect(ModuleObject *module) -{ - Q_UNUSED(module) - TitledSliderItem *transparentSlider = new TitledSliderItem(); - transparentSlider->setTitle(tr("Opacity")); - transparentSlider->addBackground(); - transparentSlider->slider()->setOrientation(Qt::Horizontal); - transparentSlider->setObjectName("Transparency"); - - // 设计效果图变更:增加左右图标 - transparentSlider->setLeftIcon(DIconTheme::findQIcon("transparency_low")); - transparentSlider->setRightIcon(DIconTheme::findQIcon("transparency_high")); - transparentSlider->setIconSize(QSize(24, 24)); - DCCSlider *slider = transparentSlider->slider(); - slider->setAccessibleName("transparency"); - slider->setRange(0, 100); - slider->setType(DCCSlider::Vernier); - slider->setTickPosition(QSlider::TicksBelow); - slider->setTickInterval(1); - slider->setPageStep(1); - auto onOpacityChanged = [transparentSlider](std::pair value) { - transparentSlider->slider()->blockSignals(true); - transparentSlider->slider()->setValue(value.first); - transparentSlider->slider()->blockSignals(false); - transparentSlider->setValueLiteral(QString("%1").arg(value.first)); - }; - onOpacityChanged(m_model->opacity()); - connect(m_model, &PersonalizationModel::onOpacityChanged, transparentSlider, onOpacityChanged); - connect(transparentSlider->slider(), - &DCCSlider::valueChanged, - m_work, - &PersonalizationWorker::setOpacity); - connect(transparentSlider->slider(), - &DCCSlider::sliderMoved, - m_work, - &PersonalizationWorker::setOpacity); - return transparentSlider; -} - -QWidget *PersonalizationDesktopModule::initMiniEffect(ModuleObject *module) -{ - Q_UNUSED(module) - QComboBox *cmbMiniEffect = new QComboBox(); - cmbMiniEffect->addItem(tr("Scale")); - cmbMiniEffect->addItem(tr("Magic Lamp")); - cmbMiniEffect->setCurrentIndex(m_model->miniEffect()); - connect(cmbMiniEffect, - qOverload(&QComboBox::currentIndexChanged), - m_work, - &PersonalizationWorker::setMiniEffect); - connect(m_model, - &PersonalizationModel::onMiniEffectChanged, - cmbMiniEffect, - &QComboBox::setCurrentIndex); - return cmbMiniEffect; -} - -QWidget *PersonalizationDesktopModule::initRoundEffect(ModuleObject *module) -{ - Q_UNUSED(module) - TitledSliderItem *winRoundSlider = new TitledSliderItem(); - winRoundSlider->setTitle(tr("Rounded Corner")); - winRoundSlider->addBackground(); - winRoundSlider->slider()->setOrientation(Qt::Horizontal); - winRoundSlider->setObjectName("winRoundSlider"); - winRoundSlider->setIconSize(QSize(32, 32)); - winRoundSlider->setLeftIcon(DIconTheme::findQIcon("round_low")); - winRoundSlider->setRightIcon(DIconTheme::findQIcon("round_high")); - - DCCSlider *sliderRound = winRoundSlider->slider(); - sliderRound->setType(DCCSlider::Vernier); - sliderRound->setTickPosition(QSlider::TicksBelow); - sliderRound->setRange(0, 2); - sliderRound->setTickInterval(1); - sliderRound->setPageStep(1); - auto onWindowRadiusChanged = [winRoundSlider](int radius) { - if (radius <= 0) { - winRoundSlider->slider()->setValue(0); - winRoundSlider->setValueLiteral(tr("Small")); - } else if (radius <= 8) { - winRoundSlider->slider()->setValue(1); - winRoundSlider->setValueLiteral(tr("Middle")); - } else { - winRoundSlider->slider()->setValue(2); - winRoundSlider->setValueLiteral(tr("Large")); - } - }; - onWindowRadiusChanged(m_model->windowRadius()); - connect(m_model, - &PersonalizationModel::onWindowRadiusChanged, - sliderRound, - onWindowRadiusChanged); - connect(winRoundSlider->slider(), &DCCSlider::valueChanged, this, [=](int value) { - int val = value; - switch (value) { - case 0: - val = 0; - break; - case 1: - val = 8; - break; - case 2: - val = 18; - break; - } - m_work->setWindowRadius(val); - }); - return winRoundSlider; -} - -QWidget *PersonalizationDesktopModule::initCompactMode(ModuleObject *module) -{ - Q_UNUSED(module) - DSwitchButton *switchBtn = new DSwitchButton(); - switchBtn->setChecked(m_model->getCompactDisplay()); - connect(m_model, &PersonalizationModel::compactDisplayChanged, switchBtn, &DSwitchButton::setChecked); - connect(switchBtn, &DSwitchButton::checkedChanged, this, [this](bool checked) { - m_work->setCompactDisplay(checked); - }); - return switchBtn; -} diff --git a/dcc-old/src/plugin-personalization/window/personalizationdesktopmodule.h b/dcc-old/src/plugin-personalization/window/personalizationdesktopmodule.h deleted file mode 100644 index 3e310eea0b..0000000000 --- a/dcc-old/src/plugin-personalization/window/personalizationdesktopmodule.h +++ /dev/null @@ -1,31 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PERSONALIZATIONDESKTOPMODULE_H -#define PERSONALIZATIONDESKTOPMODULE_H - -#include "interface/pagemodule.h" - -class PersonalizationModel; -class PersonalizationWorker; - -class PersonalizationDesktopModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit PersonalizationDesktopModule(PersonalizationModel *model, PersonalizationWorker *work, QObject *parent = nullptr); - -private: - QWidget *initWindowEffect(ModuleObject *module); - QWidget *initTransparentEffect(ModuleObject *module); - QWidget *initMiniEffect(ModuleObject *module); - QWidget *initRoundEffect(ModuleObject *module); - - QWidget *initCompactMode(ModuleObject *module); - -private: - PersonalizationModel *m_model; - PersonalizationWorker *m_work; -}; - -#endif // PERSONALIZATIONDESKTOPMODULE_H diff --git a/dcc-old/src/plugin-personalization/window/personalizationplugin.cpp b/dcc-old/src/plugin-personalization/window/personalizationplugin.cpp deleted file mode 100644 index 8390d03eb6..0000000000 --- a/dcc-old/src/plugin-personalization/window/personalizationplugin.cpp +++ /dev/null @@ -1,79 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "personalizationplugin.h" -#include "personalizationmodel.h" -#include "personalizationworker.h" -#include "personalizationthememodule.h" -#include "personalizationdesktopmodule.h" - -#include -#include - -DGUI_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -const QString gsetting_showSuspend = "showSuspend"; -const QString gsetting_showHiberante = "showHibernate"; -const QString gsetting_showShutdown = "showShutdown"; - -PersonalizationModule::PersonalizationModule(QObject *parent) - : HListModule("personalization", tr("Personalization"), DIconTheme::findQIcon("dcc_nav_personalization"), parent) - , m_model(nullptr) - , m_nBatteryPercentage(100.0) - , m_useElectric(nullptr) - , m_useBattery(nullptr) -{ - m_model = new PersonalizationModel(this); - m_work = new PersonalizationWorker(m_model, this); - - appendChild(new PersonalizationThemeModule(m_model, m_work, this)); - appendChild(new PersonalizationDesktopModule(m_model, m_work, this)); -} - -void PersonalizationModule::active() -{ - m_work->active(); // refresh data - m_work->refreshTheme(); -} - -void PersonalizationModule::onBatteryChanged(const bool &state) -{ - Q_UNUSED(state) -} -// done: 遗留问题,控制中心不应该发电量低通知 -void PersonalizationModule::onBatteryPercentageChanged(const double value) -{ - Q_UNUSED(value) -} - -PersonalizationPlugin::PersonalizationPlugin(QObject *parent) - : PluginInterface(parent) - , m_moduleRoot(nullptr) -{ -} - -PersonalizationPlugin::~PersonalizationPlugin() -{ - m_moduleRoot = nullptr; -} - -QString PersonalizationPlugin::name() const -{ - return QStringLiteral("Personalization"); -} - -ModuleObject *PersonalizationPlugin::module() -{ - if (m_moduleRoot) - return m_moduleRoot; - - m_moduleRoot = new PersonalizationModule; - return m_moduleRoot; -} - -QString PersonalizationPlugin::location() const -{ - return "5"; -} diff --git a/dcc-old/src/plugin-personalization/window/personalizationplugin.h b/dcc-old/src/plugin-personalization/window/personalizationplugin.h deleted file mode 100644 index 09291e287d..0000000000 --- a/dcc-old/src/plugin-personalization/window/personalizationplugin.h +++ /dev/null @@ -1,51 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#ifndef PERSONALIZATIONPLUGIN_H -#define PERSONALIZATIONPLUGIN_H - -#include "interface/hlistmodule.h" -#include "interface/plugininterface.h" - -class PersonalizationModel; -class PersonalizationWorker; -class GeneralModule; - -class PersonalizationModule : public DCC_NAMESPACE::HListModule -{ - Q_OBJECT -public: - explicit PersonalizationModule(QObject *parent = nullptr); - ~PersonalizationModule() override { } - virtual void active() override; -public Q_SLOTS: - void onBatteryChanged(const bool &state); - void onBatteryPercentageChanged(const double value); - -private: - PersonalizationModel *m_model; - PersonalizationWorker *m_work; - double m_nBatteryPercentage; - DCC_NAMESPACE::ModuleObject *m_useElectric; - DCC_NAMESPACE::ModuleObject *m_useBattery; -}; - -class PersonalizationPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Personalization" FILE "plugin-personalization.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit PersonalizationPlugin(QObject *parent = nullptr); - ~PersonalizationPlugin(); - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; - -private: - DCC_NAMESPACE::ModuleObject *m_moduleRoot; -}; - -#endif // PERSONALIZATIONPLUGIN_H diff --git a/dcc-old/src/plugin-personalization/window/personalizationthememodule.cpp b/dcc-old/src/plugin-personalization/window/personalizationthememodule.cpp deleted file mode 100644 index 0b14ba63f1..0000000000 --- a/dcc-old/src/plugin-personalization/window/personalizationthememodule.cpp +++ /dev/null @@ -1,573 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "personalizationthememodule.h" - -#include "dccslider.h" -#include "model/fontmodel.h" -#include "model/fontsizemodel.h" -#include "model/thememodel.h" -#include "personalizationmodel.h" -#include "personalizationworker.h" -#include "settingsgroupmodule.h" -#include "titledslideritem.h" -#include "widgets/globalthemelistview.h" -#include "widgets/itemmodule.h" -#include "widgets/personalizationthemelist.h" -#include "widgets/ringcolorwidget.h" -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE - -// clang-format off -#define CUSTOM_ACTIVE_COLOR "CUSTOM" -const QList ACTIVE_COLORS = { - "#DF4187", - "#FF5D00", - "#F8CB00", - "#23C400", - "#00A48A", - "#1F6EE7", - "#3C02FF", - "#8C00D4", - "#4D4D4D", - CUSTOM_ACTIVE_COLOR -}; - -const QList ACTIVE_COLORST = { - { 223, 65, 135 }, - { 234, 105, 31 }, - { 243, 181, 23 }, - { 73, 177, 37 }, - { 0, 164, 138 }, - {31, 110, 231}, - { 64, 47, 219 }, - { 119, 36, 177 }, - { 117, 117, 117 }, - QColor() -}; - -const QList Dark_ACTIVE_COLORST = { - { 168, 43, 98 }, - { 204, 77, 3 }, - { 208, 156, 0 }, - { 69, 159, 41 }, - { 24, 136, 118 }, - { 2, 76, 202 }, - { 68, 59, 186 }, - { 106, 36, 135 }, - { 134, 134, 134 }, - QColor() -}; - -// clang-format on - -PersonalizationThemeModule::PersonalizationThemeModule(PersonalizationModel *model, - PersonalizationWorker *work, - QObject *parent) - : PageModule("theme", tr("Theme"), parent) - , m_standardModel(new QStandardItemModel(this)) - , m_monospacedModel(new QStandardItemModel(this)) - , m_model(model) - , m_work(work) -{ - appendChild(new ItemModule("themeTitle", - tr("Theme"), - this, - &PersonalizationThemeModule::initThemeTitle, - false)); - SettingsGroupModule *group = new SettingsGroupModule("theme", tr("Theme")); - appendChild(group); - group->appendChild(new ItemModule("themeList", - tr("Theme"), - this, - &PersonalizationThemeModule::initThemeList, - false)); - group->appendChild(new ItemModule("themeMode", - tr("Appearance"), - this, - &PersonalizationThemeModule::initThemeSwitch)); - - appendChild(new ItemModule("accentColorTitle", tr("Accent Color"))); - appendChild(new ItemModule("accentColor", - tr("Accent Color"), - this, - &PersonalizationThemeModule::initAccentColor, - false)); - appendChild(new ItemModule("iconSettings", tr("Icon Settings"))); - ItemModule *tmpModule = new ItemModule("iconTheme", - tr("Icon Theme"), - this, - &PersonalizationThemeModule::initIconTheme); - tmpModule->setBackground(true); - tmpModule->setClickable(true); - connect(tmpModule, &ItemModule::clicked, this, &PersonalizationThemeModule::setIconTheme); - appendChild(tmpModule); - tmpModule = new ItemModule("cursorTheme", - tr("Cursor Theme"), - this, - &PersonalizationThemeModule::initCursorTheme); - tmpModule->setBackground(true); - tmpModule->setClickable(true); - connect(tmpModule, &ItemModule::clicked, this, &PersonalizationThemeModule::setCursorTheme); - appendChild(tmpModule); - appendChild(new ItemModule("textSettings", tr("Text Settings"))); - tmpModule = new ItemModule("fontSize", - tr("Font Size"), - this, - &PersonalizationThemeModule::initFontSize, - false); - appendChild(tmpModule); - tmpModule = new ItemModule("standardFont", - tr("Standard Font"), - this, - &PersonalizationThemeModule::initStandardFont); - tmpModule->setBackground(true); - appendChild(tmpModule); - tmpModule = new ItemModule("monospacedFont", - tr("Monospaced Font"), - this, - &PersonalizationThemeModule::initMonospacedFont); - tmpModule->setBackground(true); - appendChild(tmpModule); - - setStandList(m_model->getStandFontModel()->getFontList()); - connect(m_model->getStandFontModel(), - &FontModel::listChanged, - this, - &PersonalizationThemeModule::setStandList); - - setMonoList(m_model->getMonoFontModel()->getFontList()); - connect(m_model->getMonoFontModel(), - &FontModel::listChanged, - this, - &PersonalizationThemeModule::setMonoList); -} - -void PersonalizationThemeModule::active() -{ - m_work->refreshFont(); -} - -void PersonalizationThemeModule::onActiveColorClicked() -{ - RoundColorWidget *pItem = dynamic_cast(sender()); - // 设置active color - QString strColor = pItem->accessibleName(); - if (strColor == CUSTOM_ACTIVE_COLOR) { - QColorDialog *colorDialog = new QColorDialog(pItem->palette().highlight().color(), pItem); - colorDialog->deleteLater(); - if (QDialog::Accepted == colorDialog->exec()) { - m_work->setActiveColor(colorDialog->selectedColor().name()); - } - } else { - QString result = DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType ? - pItem->activeColors().first : pItem->activeColors().second; - m_work->setActiveColors(pItem->activeColors().first + "," + pItem->activeColors().second); - pItem->setColor(result); - m_work->setActiveColor(result); - } -} - -void PersonalizationThemeModule::setStandList(const QList &list) -{ - setList(list, m_standardModel); - m_model->getStandFontModel()->defaultFontChanged(m_model->getStandFontModel()->getFontName()); -} - -void PersonalizationThemeModule::setMonoList(const QList &list) -{ - setList(list, m_monospacedModel); - m_model->getMonoFontModel()->defaultFontChanged(m_model->getMonoFontModel()->getFontName()); -} - -void PersonalizationThemeModule::setList(const QList &list, QStandardItemModel *model) -{ - model->blockSignals(true); - model->clear(); - for (QJsonObject item : list) { - QString name = item["Name"].toString(); - QStandardItem *modelItem = new QStandardItem(name); - modelItem->setFont(QFont(name)); - model->appendRow(modelItem); - } - model->blockSignals(false); -} - -void PersonalizationThemeModule::setIconTheme(QWidget *widget) -{ - PersonalizationThemeList *themeList = new PersonalizationThemeList(tr("Icon Theme"), widget); - themeList->setModel(m_model->getIconModel()); - connect(themeList, - &PersonalizationThemeList::requestSetDefault, - m_work, - &PersonalizationWorker::setDefault); - themeList->exec(); -} - -void PersonalizationThemeModule::setCursorTheme(QWidget *widget) -{ - PersonalizationThemeList *themeList = new PersonalizationThemeList(tr("Cursor Theme"), widget); - themeList->setModel(m_model->getMouseModel()); - connect(themeList, - &PersonalizationThemeList::requestSetDefault, - m_work, - &PersonalizationWorker::setDefault); - themeList->exec(); -} - -QWidget *PersonalizationThemeModule::initThemeTitle(ModuleObject *module) -{ - QWidget *widget = new QWidget(); - QHBoxLayout *layout = new QHBoxLayout(widget); - - DLabel *leftWidget = new DLabel(module->displayName()); - leftWidget->setAccessibleName(module->name()); - leftWidget->setForegroundRole(DPalette::TextTitle); - DFontSizeManager::instance()->bind(leftWidget, DFontSizeManager::T5, QFont::DemiBold); - layout->addWidget(leftWidget); - - // QToolButton *button = new QToolButton(); - // button->setIcon(DIconTheme::findQIcon("help")); - // button->setFixedSize(24, 24); - // layout->addWidget(button); - // layout->addStretch(); - // connect(button, &QToolButton::clicked, button, []() { - // QDesktopServices::openUrl(QUrl("file:///usr/share/dde-control-center/developdocument.html")); - // }); - return widget; -} - -QWidget *PersonalizationThemeModule::initThemeList(ModuleObject *module) -{ - Q_UNUSED(module) - GlobalThemeListView *view = new GlobalThemeListView(); - view->setThemeModel(m_model->getGlobalThemeModel()); - connect(view, &GlobalThemeListView::applied, this, [this](const QModelIndex &index) { - qDebug() << "applied global theme" << index.data(GlobalThemeModel::IdRole).toString(); - QString id = index.data(GlobalThemeModel::IdRole).toString(); - ThemeModel *globalTheme = m_model->getGlobalThemeModel(); - QString mode; - QString themeId = getGlobalThemeId(globalTheme->getDefault(), mode); - - const QMap &itemList = globalTheme->getList(); - if (itemList.contains(id)) - m_work->setDefaultByType(itemList.value(id)["type"].toString(), id + mode); - }); - return view; -} - -QWidget *PersonalizationThemeModule::initThemeSwitch(ModuleObject *module) -{ - QComboBox *box = new QComboBox(); - ThemeModel *globalTheme = m_model->getGlobalThemeModel(); - - auto updateDefault = [box, module, this]() { - ThemeModel *globalTheme = m_model->getGlobalThemeModel(); - QString mode; - QString themeId = getGlobalThemeId(globalTheme->getDefault(), mode); - box->clear(); - box->addItem(tr("Light"), ".light"); - const QJsonObject &json = globalTheme->getList().value(themeId); - if (json.isEmpty()) - return; - if (json["hasDark"].toBool()) { - box->addItem(tr("Auto"), ""); - box->addItem(tr("Dark"), ".dark"); - module->setDisabled(false); - } else { - module->setDisabled(true); - } - for (int i = 0; i < box->count(); i++) { - if (box->itemData(i).toString() == mode) { - box->blockSignals(true); - box->setCurrentIndex(i); - box->blockSignals(false); - break; - } - } - }; - updateDefault(); - - connect(globalTheme, &ThemeModel::defaultChanged, box, updateDefault); - connect(globalTheme, &ThemeModel::itemAdded, box, updateDefault); - connect(globalTheme, &ThemeModel::itemRemoved, box, updateDefault); - - connect(box, QOverload::of(&QComboBox::activated), box, [this, box](int index) { - QString dataMode = box->itemData(index).toString(); - ThemeModel *globalTheme = m_model->getGlobalThemeModel(); - QString mode; - QString themeId = getGlobalThemeId(globalTheme->getDefault(), mode); - const QMap &itemList = globalTheme->getList(); - if (itemList.contains(themeId)) { - m_work->setDefaultByType(itemList.value(themeId)["type"].toString(), - themeId + dataMode); - } - - }); - return box; -} - -QWidget *PersonalizationThemeModule::initAccentColor(ModuleObject *module) -{ - Q_UNUSED(module) - RingColorWidget *bgWidget = new RingColorWidget(); - bgWidget->setFixedHeight(40); - QHBoxLayout *colorLayout = new QHBoxLayout(bgWidget); - colorLayout->setAlignment(Qt::AlignLeft); - colorLayout->setContentsMargins(10, 0, 10, 0); - colorLayout->addStretch(); - int borderWidth = bgWidget->style()->pixelMetric( - static_cast(DStyle::PM_FocusBorderWidth), - nullptr, - bgWidget); - int borderSpacing = bgWidget->style()->pixelMetric( - static_cast(DStyle::PM_FocusBorderSpacing), - nullptr, - bgWidget); - int totalSpace = borderWidth + borderSpacing - + RoundColorWidget::EXTRA; // 2px extra space to avoid line cutted off - - DGuiApplicationHelper::ColorType themeType = DGuiApplicationHelper::instance()->themeType(); - const QList &activeColors = - (themeType == DGuiApplicationHelper::ColorType::LightType ? ACTIVE_COLORST - : Dark_ACTIVE_COLORST); - for (int i = 0; i < activeColors.size(); ++i) { - QColor color = activeColors.at(i); - RoundColorWidget *colorItem = new RoundColorWidget(color, bgWidget); - colorItem->setActiveColors(QPair(ACTIVE_COLORST[i].name(), Dark_ACTIVE_COLORST[i].name())); - QGraphicsDropShadowEffect *effect = new QGraphicsDropShadowEffect; - effect->setBlurRadius(17); // 阴影圆角的大小 - - color.setAlpha(68); - effect->setColor(color); // 阴影的颜色 - effect->setOffset(0, 5); - colorItem->setGraphicsEffect(effect); - - colorItem->setAccessibleName(ACTIVE_COLORS[i]); - - DPalette pa = colorItem->palette(); - pa.setBrush(DPalette::Base, color); - colorItem->setPalette(pa); - colorItem->setFixedSize(20 + 2 * totalSpace, 40); - colorLayout->addWidget(colorItem); - connect(colorItem, - &RoundColorWidget::clicked, - this, - &PersonalizationThemeModule::onActiveColorClicked); - } - colorLayout->addStretch(); - auto setColorFun = [bgWidget](const QString &newColor) { - QLayout *lyt = bgWidget->layout(); - int endIndex = lyt->count() - 2; - for (int i = 1; i <= endIndex; ++i) { - RoundColorWidget *w = qobject_cast(lyt->itemAt(i)->widget()); - if (!w) { - break; - } - - if (w->activeColors().first.compare(newColor, Qt::CaseInsensitive) == 0 || - w->activeColors().second.compare(newColor, Qt::CaseInsensitive) == 0) { - bgWidget->setSelectedItem(w); - break; - } else if (i == endIndex) { - bgWidget->setSelectedItem(w); - } - } - bgWidget->update(); - }; - setColorFun(m_model->getActiveColor()); - connect(m_model, &PersonalizationModel::onActiveColorChanged, bgWidget, setColorFun); - - return bgWidget; -} - -QWidget *PersonalizationThemeModule::initIconTheme(ModuleObject *module) -{ - Q_UNUSED(module) - QWidget *widget = new QWidget(); - QHBoxLayout *layout = new QHBoxLayout(widget); - layout->addStretch(); - - QLabel *pic = new QLabel(widget); - auto setPic = [pic, this]() { - ThemeModel *model = m_model->getIconModel(); - QString picPath = model->getPicList().value(model->getDefault()); - QPixmap pixmap(picPath); - pixmap.setDevicePixelRatio(pic->devicePixelRatioF()); - pic->setPixmap(pixmap); - }; - setPic(); - connect(m_model->getIconModel(), &ThemeModel::defaultChanged, pic, setPic); - connect(m_model->getIconModel(), &ThemeModel::picAdded, pic, setPic); - layout->addWidget(pic); - QLabel *enterIcon = new QLabel(widget); - enterIcon->setPixmap( - DStyle::standardIcon(widget->style(), DStyle::SP_ArrowEnter).pixmap(16, 16)); - layout->addWidget(enterIcon); - return widget; -} - -QWidget *PersonalizationThemeModule::initCursorTheme(ModuleObject *module) -{ - Q_UNUSED(module) - QWidget *widget = new QWidget(); - QHBoxLayout *layout = new QHBoxLayout(widget); - layout->addStretch(); - - QLabel *pic = new QLabel(widget); - auto setPic = [pic, this]() { - ThemeModel *model = m_model->getMouseModel(); - QString picPath = model->getPicList().value(model->getDefault()); - QPixmap pixmap(picPath); - pixmap.setDevicePixelRatio(pic->devicePixelRatioF()); - pic->setPixmap(pixmap); - }; - setPic(); - connect(m_model->getMouseModel(), &ThemeModel::defaultChanged, pic, setPic); - connect(m_model->getMouseModel(), &ThemeModel::picAdded, pic, setPic); - layout->addWidget(pic); - QLabel *enterIcon = new QLabel(widget); - enterIcon->setPixmap( - DStyle::standardIcon(widget->style(), DStyle::SP_ArrowEnter).pixmap(16, 16)); - layout->addWidget(enterIcon); - return widget; -} - -QWidget *PersonalizationThemeModule::initFontSize(ModuleObject *module) -{ - Q_UNUSED(module) - TitledSliderItem *fontSizeSlider = new TitledSliderItem(); - fontSizeSlider->addBackground(); - fontSizeSlider->setObjectName("fontsizeslider"); - QStringList annotions; - annotions << "11" - << "12" - << "13" - << "14" - << "15" - << "16" - << "18" - << "20"; - fontSizeSlider->setAnnotations(annotions); - - fontSizeSlider->setIconSize(QSize(16, 16)); - - fontSizeSlider->setLeftIcon(DIconTheme::findQIcon("fontsize_decrease")); - fontSizeSlider->setRightIcon(DIconTheme::findQIcon("fontsize_increase")); - - DCCSlider *slider = fontSizeSlider->slider(); - slider->setOrientation(Qt::Horizontal); - slider->setRange(0, annotions.size() - 1); - slider->setType(DCCSlider::Vernier); - slider->setTickPosition(QSlider::TicksBelow); - slider->setTickInterval(1); - slider->setPageStep(1); - auto fontSizeChanged = [fontSizeSlider, annotions](int fontSize) { - fontSizeSlider->slider()->blockSignals(true); - fontSizeSlider->slider()->setValue(fontSize); - fontSizeSlider->slider()->blockSignals(false); - fontSizeSlider->setValueLiteral(annotions[fontSize]); - }; - fontSizeChanged(m_model->getFontSizeModel()->getFontSize()); - connect(m_model->getFontSizeModel(), - &FontSizeModel::sizeChanged, - fontSizeSlider, - fontSizeChanged); - connect(slider, &DCCSlider::valueChanged, m_work, &PersonalizationWorker::setFontSize); - connect(slider, &DCCSlider::sliderMoved, m_work, &PersonalizationWorker::setFontSize); - return fontSizeSlider; -} - -QWidget *PersonalizationThemeModule::initStandardFont(ModuleObject *module) -{ - Q_UNUSED(module) - QComboBox *comboBox = new QComboBox(); - comboBox->setModel(m_standardModel); - initFontWidget(comboBox, m_model->getStandFontModel(), m_standardModel); - return comboBox; -} - -QWidget *PersonalizationThemeModule::initMonospacedFont(ModuleObject *module) -{ - Q_UNUSED(module) - QComboBox *comboBox = new QComboBox(); - comboBox->setModel(m_monospacedModel); - initFontWidget(comboBox, m_model->getMonoFontModel(), m_monospacedModel); - return comboBox; -} - -void PersonalizationThemeModule::initFontWidget(QComboBox *combox, - FontModel *fontModel, - QStandardItemModel *model) -{ - combox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - auto defaultFont = [combox, fontModel, model](const QString &name) { - for (const QJsonObject &obj : fontModel->getFontList()) { - if (obj["Id"].toString() == name) { - combox->blockSignals(true); - combox->setCurrentText(obj["Name"].toString()); - combox->blockSignals(false); - return; - } - } - bool hasItem = false; - for (int i = 0; i < model->rowCount(); ++i) { - if (model->item(i)->text() == name) { - hasItem = true; - break; - } - } - if (!hasItem) { - QStandardItem *modelItem = new QStandardItem(name); - modelItem->setFont(QFont(name)); - model->appendRow(modelItem); - } - - combox->blockSignals(true); - combox->setCurrentText(name); - combox->blockSignals(false); - }; - defaultFont(fontModel->getFontName()); - connect(fontModel, &FontModel::defaultFontChanged, combox, defaultFont); - connect(combox, &QComboBox::currentTextChanged, this, [fontModel, this](const QString &name) { - for (const QJsonObject &obj : fontModel->getFontList()) { - if (obj["Name"].toString() == name) { - m_work->setDefault(obj); - return; - } - } - }); -} - -QString PersonalizationThemeModule::getGlobalThemeId(const QString &themeId, QString &mode) -{ - QString id = themeId; - mode.clear(); - if (id.endsWith(".light")) { - id.chop(6); - mode = ".light"; - } else if (id.endsWith(".dark")) { - id.chop(5); - mode = ".dark"; - } - return id; -} diff --git a/dcc-old/src/plugin-personalization/window/personalizationthememodule.h b/dcc-old/src/plugin-personalization/window/personalizationthememodule.h deleted file mode 100644 index ca6354ee0b..0000000000 --- a/dcc-old/src/plugin-personalization/window/personalizationthememodule.h +++ /dev/null @@ -1,61 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PERSONALIZATIONTHEMEMODULE_H -#define PERSONALIZATIONTHEMEMODULE_H -#include "interface/pagemodule.h" - -#include - -namespace DCC_NAMESPACE { -class DCCListView; -}; -class QStandardItemModel; -class QComboBox; - -class PersonalizationModel; -class PersonalizationWorker; -class FontModel; - -class PersonalizationThemeModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit PersonalizationThemeModule(PersonalizationModel *model, PersonalizationWorker *work, QObject *parent = nullptr); - - void active() override; -private Q_SLOTS: - void onActiveColorClicked(); - - void setStandList(const QList &list); - void setMonoList(const QList &list); - void setList(const QList &list, QStandardItemModel *model); - - void setIconTheme(QWidget *widget); - void setCursorTheme(QWidget *widget); - -private: - QWidget *initThemeTitle(DCC_NAMESPACE::ModuleObject *module); - QWidget *initThemeList(DCC_NAMESPACE::ModuleObject *module); - QWidget *initThemeSwitch(DCC_NAMESPACE::ModuleObject *module); - QWidget *initAccentColor(DCC_NAMESPACE::ModuleObject *module); - QWidget *initIconTheme(DCC_NAMESPACE::ModuleObject *module); - QWidget *initCursorTheme(DCC_NAMESPACE::ModuleObject *module); - QWidget *initFontSize(DCC_NAMESPACE::ModuleObject *module); - QWidget *initStandardFont(DCC_NAMESPACE::ModuleObject *module); - QWidget *initMonospacedFont(DCC_NAMESPACE::ModuleObject *module); - - void initFontWidget(QComboBox *combox, FontModel *fontModel, QStandardItemModel *model); - QString getGlobalThemeId(const QString &themeId, QString &mode); - -private: - QStandardItemModel *m_standardModel; - QStandardItemModel *m_monospacedModel; - - PersonalizationModel *m_model; - PersonalizationWorker *m_work; - - QMap m_jsonMap; -}; - -#endif // PERSONALIZATIONTHEMEMODULE_H diff --git a/dcc-old/src/plugin-personalization/window/plugin-personalization.json b/dcc-old/src/plugin-personalization/window/plugin-personalization.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-personalization/window/plugin-personalization.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-personalization/window/widgets/globalthemelistview.cpp b/dcc-old/src/plugin-personalization/window/widgets/globalthemelistview.cpp deleted file mode 100644 index df531d52b4..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/globalthemelistview.cpp +++ /dev/null @@ -1,807 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "globalthemelistview.h" -#include "model/thememodel.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -#define TAB_RADIUS 3 - -class GlobalThemeListViewPrivate -{ -public: - explicit GlobalThemeListViewPrivate(GlobalThemeListView *parent) - : q_ptr(parent) - , m_hSpacing(15) - , m_vSpacing(15) - , m_gridSize(160, 120) - , m_itemSize(m_gridSize) - , m_xOffset(0) - , m_yOffset(0) - , m_alignment(Qt::AlignHCenter | Qt::AlignTop) - , m_currentPage(-1) - , m_constPage(1) - , m_drawStartPagePos(0, 285) - , m_drawSpaacing(TAB_RADIUS * 4) - , m_drawPageButton(LeftButton | RightButton) - { - m_rowPerPage = 2; - m_colPerPage = 3; - m_constPerPage = m_rowPerPage * m_colPerPage; - setGridSize(m_gridSize); - setPage(0); - QObject::connect(q_ptr, &GlobalThemeListView::clicked, parent, [this](const QModelIndex &index) { - if (index.isValid()) { - Q_Q(GlobalThemeListView); - emit q->applied(index); - } - }); - } - - void setSpacing(int space) - { - m_vSpacing = space; - } - int spacing() const - { - return m_vSpacing; - } - - void setGridSize(const QSize &size) - { - m_gridSize = size; - } - QSize gridSize() const - { - return m_gridSize; - } - - void setAlignment(Qt::Alignment alignment) - { - m_alignment = alignment; - } - Qt::Alignment alignment() const - { - return m_alignment; - } - - void updateGeometries() - { - Q_Q(GlobalThemeListView); - updateTotal(); - - m_itemSize = m_gridSize; - m_hSpacing = (q->viewport()->width() - (m_colPerPage * m_itemSize.width())) / (m_colPerPage + 1); - if (m_hSpacing < 0) - m_hSpacing = 0; - - int itemWidth = m_colPerPage * (m_itemSize.width() + m_hSpacing) - m_hSpacing; - - if (m_alignment & Qt::AlignRight) { - m_xOffset = q->viewport()->width() - itemWidth; - } else if (m_alignment & Qt::AlignHCenter) { - m_xOffset = (q->viewport()->width() - itemWidth) / 2; - } else { - m_xOffset = 0; - } - - m_yOffset = m_vSpacing; - - int tabwidth = (m_constPage - 1) * m_drawSpaacing; - m_drawStartPagePos.setX((q->width() - tabwidth) / 2); - m_tabsRect = QRect(m_drawStartPagePos - QPoint(TAB_RADIUS, TAB_RADIUS), QSize(tabwidth + 2 * TAB_RADIUS, 2 * TAB_RADIUS)); - m_leftBtnRect = QRect(5, q->height() / 2 - 16, 32, 32); - m_rightBtnRect = QRect(q->width() - 32 - 5, q->height() / 2 - 16, 32, 32); - } - // item在窗口中位置(无滚动) - QRect rectForIndex(const QModelIndex &index) const - { - Q_Q(const GlobalThemeListView); - QRect rect(0, 0, m_itemSize.width(), m_itemSize.height()); - int cnt = index.row(); - int page = cnt / m_constPerPage; - int row = (cnt % m_constPerPage) / m_colPerPage; - int col = (cnt % m_constPerPage) % m_colPerPage; - rect.translate(q->width() * (page - m_currentPage) + m_xOffset + (m_itemSize.width() + m_hSpacing) * col, (m_itemSize.height() + m_vSpacing) * row); - - return rect.translated(q->contentsMargins().left(), q->contentsMargins().top() + m_yOffset); - } - // item在窗口中位置(无滚动) - QModelIndex indexAt(const QPoint &p) const - { - Q_Q(const GlobalThemeListView); - if ((m_itemSize.height() + m_vSpacing) <= 0 || (m_itemSize.width() + m_hSpacing) <= 0 || !q->model()) - return QModelIndex(); - QRect rect(p.x() - m_xOffset, p.y() - m_yOffset, 1, 1); - int row = (rect.y()) / (m_itemSize.height() + m_vSpacing); - int col = (rect.x()) / (m_itemSize.width() + m_hSpacing); - - int indexRow = m_currentPage * m_constPerPage + row * m_colPerPage + col; - QModelIndex index = q->model()->index(indexRow, 0); - if (index.isValid() && rectForIndex(index).contains(p)) { - return index; - } - return QModelIndex(); - } - QVector intersectingSet(const QRect &area) const - { - Q_Q(const GlobalThemeListView); - QVector indexs; - int rows = q->model()->rowCount(); - for (int row = 0; row < rows; row++) { - QModelIndex index = q->model()->index(row, 0); - QRect rectIndex = rectForIndex(index); - if (!rectIndex.intersected(area).isEmpty()) { - indexs.append(index); - } - } - return indexs; - } - inline int marginsWidth() const - { - Q_Q(const GlobalThemeListView); - return q->contentsMargins().left() + q->contentsMargins().right(); - } - inline int marginsHidget() const - { - Q_Q(const GlobalThemeListView); - return q->contentsMargins().top() + q->contentsMargins().bottom(); - } - bool updatePage(int add) - { - return setPage(m_currentPage + add); - } - bool setPage(int page) - { - int newPage = page; - if (newPage < 0) - newPage = 0; - else if (newPage >= m_constPage) - newPage = m_constPage - 1; - if (newPage != m_currentPage) { - m_currentPage = newPage; - updateTotal(); - Q_Q(GlobalThemeListView); - q->scheduleDelayedItemsLayout(); - updateHoverItem(); - return true; - } - return false; - } - void updateTotal() - { - Q_Q(GlobalThemeListView); - int count = q->model() ? q->model()->rowCount() : 0; - m_constPage = (count - 1) / m_constPerPage + 1; - if (m_constPage < 1) - m_constPage = 1; - - if (m_currentPage == 0) - m_drawPageButton &= ~LeftButton; - else - m_drawPageButton |= LeftButton; - - if (m_currentPage == m_constPage - 1) - m_drawPageButton &= ~RightButton; - else - m_drawPageButton |= RightButton; - } - void drawTabs(QPainter *painter, const QStyleOptionViewItem &option) - { - Q_UNUSED(option) - painter->setPen(Qt::NoPen); - painter->setBrush(QBrush(QColor(217, 217, 217))); - for (int i = 0; i < m_constPage; i++) { - painter->drawEllipse(QPoint(m_drawStartPagePos.x() + i * m_drawSpaacing, m_drawStartPagePos.y()), TAB_RADIUS, TAB_RADIUS); - } - painter->setBrush(QBrush(QColor(168, 168, 168))); - painter->drawEllipse(QPoint(m_drawStartPagePos.x() + m_currentPage * m_drawSpaacing, m_drawStartPagePos.y()), TAB_RADIUS, TAB_RADIUS); - } - void drawPageButton(QPainter *painter, const QStyleOptionViewItem &option) - { - Q_Q(GlobalThemeListView); - painter->setPen(Qt::NoPen); - painter->setBrush(option.palette.midlight()); - if (m_drawPageButton & LeftButton) { - if (m_drawPageButton & LeftBackground) { - painter->drawEllipse(m_leftBtnRect); - } - DStyle::standardIcon(q->style(), DStyle::SP_ArrowLeave, &option, q).paint(painter, m_leftBtnRect.adjusted(8, 8, -8, -8)); - } - if (m_drawPageButton & RightButton) { - if (m_drawPageButton & RightBackground) { - painter->drawEllipse(m_rightBtnRect); - } - DStyle::standardIcon(q->style(), DStyle::SP_ArrowEnter, &option, q).paint(painter, m_rightBtnRect.adjusted(8, 8, -8, -8)); - } - } - void updateHoverItem() - { - Q_Q(GlobalThemeListView); - m_hover = indexAt(q->mapFromGlobal(QCursor::pos())); - } - enum PageButton : int { - NoButton = 0x00000000, - LeftButton = 0x00000001, - LeftBackground = 0x00000002, - RightButton = 0x00000004, - RightBackground = 0x00000008, - AllButton = LeftButton | RightButton, - }; - -private: - GlobalThemeListView *const q_ptr; - Q_DECLARE_PUBLIC(GlobalThemeListView) - int m_hSpacing; - int m_vSpacing; - QSize m_gridSize; - - QSize m_itemSize; - int m_xOffset; // x轴偏移 - int m_yOffset; // y轴偏移 - QModelIndex m_hover; // hover项 - Qt::Alignment m_alignment; // 对齐方式 - - int m_constPerPage; // 每页个数 =m_rowPerPage*m_colPerPage - int m_rowPerPage; // 每页行数 - int m_colPerPage; // 每页列数 - int m_currentPage; // 当前页 - int m_constPage; // 总页数 - - QPoint m_drawStartPagePos; // 第一页位置 - int m_drawSpaacing; // 页签间隔 - int m_drawPageButton; // 右右翻页按钮 - - QRect m_leftBtnRect; - QRect m_rightBtnRect; - QRect m_tabsRect; -}; - -GlobalThemeListView::GlobalThemeListView(QWidget *parent) - : QAbstractItemView(parent) - , DCC_INIT_PRIVATE(GlobalThemeListView) -{ - setFrameShape(QFrame::NoFrame); - viewport()->setAutoFillBackground(false); - setAutoFillBackground(false); - setBackgroundRole(viewport()->backgroundRole()); - setMouseTracking(true); - - GlobalThemeDelegate *delegate = new GlobalThemeDelegate(this); - delegate->setBackgroundType(DStyledItemDelegate::RoundedBackground); - delegate->setItemSpacing(10); - setItemDelegate(delegate); - - setIconSize(QSize(155, 88)); - setGridSize(QSize(160, 120)); - setFixedHeight(300); - setMinimumWidth(500); -} - -GlobalThemeListView::~GlobalThemeListView() -{ -} - -void GlobalThemeListView::setThemeModel(ThemeModel *model) -{ - GlobalThemeModel *viewModel = new GlobalThemeModel(this); - viewModel->setThemeModel(model); - setModel(viewModel); -} - -void GlobalThemeListView::setSpacing(int space) -{ - Q_D(GlobalThemeListView); - if (d->spacing() != space) { - d->setSpacing(space); - scheduleDelayedItemsLayout(); - } -} - -int GlobalThemeListView::spacing() const -{ - Q_D(const GlobalThemeListView); - return d->spacing(); -} - -void GlobalThemeListView::setGridSize(const QSize &size) -{ - Q_D(GlobalThemeListView); - if (d->gridSize() != size) { - d->setGridSize(size); - scheduleDelayedItemsLayout(); - } -} - -QSize GlobalThemeListView::gridSize() const -{ - Q_D(const GlobalThemeListView); - return d->gridSize(); -} - -QRect GlobalThemeListView::visualRect(const QModelIndex &index) const -{ - Q_D(const GlobalThemeListView); - return d->rectForIndex(index).translated(-horizontalOffset(), -verticalOffset()); -} - -void GlobalThemeListView::scrollTo(const QModelIndex &index, ScrollHint hint) -{ - Q_UNUSED(hint) - if (!index.isValid()) - return; - Q_D(GlobalThemeListView); - int page = index.row() / d->m_constPerPage; - - d->setPage(page); -} - -QModelIndex GlobalThemeListView::indexAt(const QPoint &p) const -{ - Q_D(const GlobalThemeListView); - return d->indexAt(p + QPoint(horizontalOffset(), verticalOffset())); -} - -QModelIndex GlobalThemeListView::moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) -{ - Q_D(const GlobalThemeListView); - Q_UNUSED(modifiers) - QModelIndex current = currentIndex(); - int currentRow = current.row(); - int maxRow = model()->rowCount(); - - auto moveup = [](int currentRow, int maxColumnCount) -> int { - if (currentRow == maxColumnCount * 2 - 1) { - currentRow = 0; - } else if (currentRow < maxColumnCount) { - // 第一行不处理 - } else if (currentRow < maxColumnCount * 2) { - currentRow -= (maxColumnCount - 1); - } else { - currentRow -= maxColumnCount; - } - return currentRow; - }; - auto movedown = [](int currentRow, int maxColumnCount) -> int { - if (currentRow == 0) { - currentRow += (maxColumnCount * 2 - 1); - } else if (currentRow < maxColumnCount) - currentRow += (maxColumnCount - 1); - else - currentRow += maxColumnCount; - return currentRow; - }; - switch (cursorAction) { - case MoveLeft: - currentRow--; - break; - case MoveRight: - currentRow++; - break; - case MovePageUp: { - int pageItem = (viewport()->height() - d->marginsHidget() + d->m_vSpacing) / (d->m_itemSize.height() + d->m_vSpacing); - for (int i = 0; i < pageItem; i++) { - currentRow = moveup(currentRow, d->m_colPerPage); - } - } break; - case MoveUp: - currentRow = moveup(currentRow, d->m_colPerPage); - break; - case MovePageDown: { - int pageItem = (viewport()->height() - d->marginsHidget() + d->m_vSpacing) / (d->m_itemSize.height() + d->m_vSpacing); - for (int i = 0; i < pageItem; i++) { - int row = movedown(currentRow, d->m_colPerPage); - if (row >= maxRow) - break; - currentRow = row; - } - } break; - case MoveDown: - currentRow = movedown(currentRow, d->m_colPerPage); - break; - case MoveHome: - currentRow = 0; - break; - case MoveEnd: - currentRow = maxRow - 1; - break; - default: - return QModelIndex(); - } - QModelIndex selectIndex = model()->index(currentRow, 0); - activated(selectIndex); - return selectIndex; -} - -int GlobalThemeListView::horizontalOffset() const -{ - return horizontalScrollBar()->value(); -} - -int GlobalThemeListView::verticalOffset() const -{ - return verticalScrollBar()->value(); -} - -bool GlobalThemeListView::isIndexHidden(const QModelIndex &index) const -{ - Q_UNUSED(index) - return false; -} - -QRegion GlobalThemeListView::visualRegionForSelection(const QItemSelection &selection) const -{ - if (selection.isEmpty()) - return QRegion(); - Q_D(const GlobalThemeListView); - QRect rect = d->rectForIndex(selection.indexes().first()); - return QRegion(rect); -} - -void GlobalThemeListView::setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) -{ - int rows = model()->rowCount(); - QModelIndex selectedIndex; - for (int row = 0; row < rows; row++) { - QModelIndex index = model()->index(row, 0); - QRect rectIndex = visualRect(index); - if (!rectIndex.intersected(rect).isEmpty()) { - selectedIndex = index; - break; - } - } - selectionModel()->select(selectedIndex, command); -} - -void GlobalThemeListView::updateGeometries() -{ - Q_D(GlobalThemeListView); - QAbstractItemView::updateGeometries(); - d->updateGeometries(); - - horizontalScrollBar()->setRange(0, 0); - verticalScrollBar()->setRange(0, 0); -} - -void GlobalThemeListView::dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles) -{ - QAbstractItemView::dataChanged(topLeft, bottomRight, roles); - scheduleDelayedItemsLayout(); -} - -void GlobalThemeListView::rowsInserted(const QModelIndex &parent, int start, int end) -{ - scheduleDelayedItemsLayout(); - QAbstractItemView::rowsInserted(parent, start, end); -} - -void GlobalThemeListView::rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) -{ - QAbstractItemView::rowsAboutToBeRemoved(parent, start, end); - scheduleDelayedItemsLayout(); -} - -void GlobalThemeListView::paintEvent(QPaintEvent *e) -{ - Q_D(GlobalThemeListView); - QStyleOptionViewItem option = viewOptions(); - QPainter painter(viewport()); - - const QVector toBeRendered = d->intersectingSet(e->rect().translated(horizontalOffset(), verticalOffset())); - - const QModelIndex current = currentIndex(); - const QModelIndex hover = d->m_hover; - const QAbstractItemModel *itemModel = model(); - const QItemSelectionModel *selections = selectionModel(); - const bool focus = (hasFocus() || viewport()->hasFocus()) && current.isValid(); - const bool alternate = alternatingRowColors(); - const QStyle::State state = option.state; - const QAbstractItemView::State viewState = this->state(); - const bool enabled = (state & QStyle::State_Enabled) != 0; - option.decorationAlignment = Qt::AlignCenter; - - bool alternateBase = false; - int previousRow = -2; - - painter.setRenderHint(QPainter::Antialiasing); - - QVector::const_iterator end = toBeRendered.constEnd(); - for (QVector::const_iterator it = toBeRendered.constBegin(); it != end; ++it) { - Q_ASSERT((*it).isValid()); - option.rect = visualRect(*it); - - option.state = state; - if (selections && selections->isSelected(*it)) - option.state |= QStyle::State_Selected; - if (enabled) { - QPalette::ColorGroup cg; - if ((itemModel->flags(*it) & Qt::ItemIsEnabled) == 0) { - option.state &= ~QStyle::State_Enabled; - cg = QPalette::Disabled; - } else { - cg = QPalette::Normal; - } - option.palette.setCurrentColorGroup(cg); - } - if (focus && current == *it) { - option.state |= QStyle::State_HasFocus; - if (viewState == EditingState) - option.state |= QStyle::State_Editing; - } - option.state.setFlag(QStyle::State_MouseOver, *it == hover); - - if (alternate) { // 交替色处理,未实现 - int row = (*it).row(); - if (row != previousRow + 1) { - // adjust alternateBase according to rows in the "gap" - alternateBase = (row & 1) != 0; - } - option.features.setFlag(QStyleOptionViewItem::Alternate, alternateBase); - - // draw background of the item (only alternate row). rest of the background - // is provided by the delegate - QStyle::State oldState = option.state; - option.state &= ~QStyle::State_Selected; - style()->drawPrimitive(QStyle::PE_PanelItemViewRow, &option, &painter, this); - option.state = oldState; - - alternateBase = !alternateBase; - previousRow = row; - } - - itemDelegate(*it)->paint(&painter, option, *it); - } - if (!d->m_tabsRect.intersected(e->rect()).isEmpty()) - d->drawTabs(&painter, option); - if (!d->m_leftBtnRect.intersected(e->rect()).isEmpty() - || !d->m_rightBtnRect.intersected(e->rect()).isEmpty()) - d->drawPageButton(&painter, option); -} - -bool GlobalThemeListView::viewportEvent(QEvent *event) -{ - Q_D(GlobalThemeListView); - switch (event->type()) { - case QEvent::HoverLeave: - case QEvent::Leave: - case QEvent::HoverMove: - case QEvent::HoverEnter: - d->updateHoverItem(); - break; - default: - break; - } - return QAbstractItemView::viewportEvent(event); -} - -void GlobalThemeListView::wheelEvent(QWheelEvent *e) -{ - Q_D(GlobalThemeListView); - if (d->updatePage((e->angleDelta().y() < 0) ? 1 : -1)) - e->setAccepted(true); -} - -void GlobalThemeListView::mousePressEvent(QMouseEvent *event) -{ - Q_D(GlobalThemeListView); - const QPoint &pos = event->pos(); - if (d->m_leftBtnRect.contains(pos)) { - d->updatePage(-1); - event->setAccepted(true); - return; - } else if (d->m_rightBtnRect.contains(pos)) { - d->updatePage(1); - event->setAccepted(true); - return; - } else if (d->m_tabsRect.contains(pos)) { - for (int i = 0; i < d->m_constPage; i++) { - if (std::abs((d->m_drawStartPagePos.x() + i * d->m_drawSpaacing) - pos.x()) < TAB_RADIUS) { - d->setPage(i); - event->setAccepted(true); - return; - } - } - } - - QAbstractItemView::mousePressEvent(event); -} - -void GlobalThemeListView::mouseMoveEvent(QMouseEvent *event) -{ - Q_D(GlobalThemeListView); - if (d->m_leftBtnRect.contains(event->pos())) { - if (!(d->m_drawPageButton & GlobalThemeListViewPrivate::LeftBackground)) { - d->m_drawPageButton |= GlobalThemeListViewPrivate::LeftBackground; - update(d->m_leftBtnRect); - } - } else { - if (d->m_drawPageButton & GlobalThemeListViewPrivate::LeftBackground) { - d->m_drawPageButton &= ~GlobalThemeListViewPrivate::LeftBackground; - update(d->m_leftBtnRect); - } - } - - if (d->m_rightBtnRect.contains(event->pos())) { - if (!(d->m_drawPageButton & GlobalThemeListViewPrivate::RightBackground)) { - d->m_drawPageButton |= GlobalThemeListViewPrivate::RightBackground; - update(d->m_rightBtnRect); - } - } else { - if (d->m_drawPageButton & GlobalThemeListViewPrivate::RightBackground) { - d->m_drawPageButton &= ~GlobalThemeListViewPrivate::RightBackground; - update(d->m_rightBtnRect); - } - } - QAbstractItemView::mouseMoveEvent(event); -} -///////////////////////////////////////// -GlobalThemeModel::GlobalThemeModel(QObject *parent) - : QAbstractItemModel(parent) - , m_themeModel(nullptr) -{ -} - -void GlobalThemeModel::setThemeModel(ThemeModel *model) -{ - m_themeModel = model; - connect(m_themeModel, &ThemeModel::defaultChanged, this, &GlobalThemeModel::updateData); - connect(m_themeModel, &ThemeModel::picAdded, this, &GlobalThemeModel::updateData); - connect(m_themeModel, &ThemeModel::itemAdded, this, &GlobalThemeModel::updateData); - connect(m_themeModel, &ThemeModel::itemRemoved, this, &GlobalThemeModel::updateData); - updateData(); -} - -QModelIndex GlobalThemeModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent); - if (row < 0 || row >= m_keys.size()) - return QModelIndex(); - return createIndex(row, column); -} - -QModelIndex GlobalThemeModel::parent(const QModelIndex &index) const -{ - Q_UNUSED(index); - return QModelIndex(); -} - -int GlobalThemeModel::rowCount(const QModelIndex &parent) const -{ - if (!parent.isValid()) - return m_keys.size(); - - return 0; -} - -int GlobalThemeModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return 1; -} - -QVariant GlobalThemeModel::data(const QModelIndex &index, int role) const -{ - if (m_keys.isEmpty() || !index.isValid()) - return QVariant(); - - int row = index.row(); - switch (role) { - case Qt::DisplayRole: - return m_themeModel->getList().value(m_keys.at(row))["Name"].toString(); - case Qt::ToolTipRole: - return m_themeModel->getList().value(m_keys.at(row))["Comment"].toString(); - case Qt::DecorationRole: - return QIcon(m_themeModel->getPicList().value(m_keys.at(row))); - case Qt::CheckStateRole: { - QString id = m_themeModel->getDefault(); - if (id.endsWith(".light")) { - id.chop(6); - } else if (id.endsWith(".dark")) { - id.chop(5); - } - return m_keys.at(row) == id ? Qt::Checked : Qt::Unchecked; - } - case GlobalThemeModel::IdRole: - return m_keys.at(row); - default: - break; - } - return QVariant(); -} - -void GlobalThemeModel::updateData() -{ - QStringList keys = m_themeModel->keys(); - if (keys.contains("custom")) { - keys.removeAll("custom"); - keys.push_back("custom"); - } - beginResetModel(); - m_keys = keys; - endResetModel(); -} -///////////////////////////// -GlobalThemeDelegate::GlobalThemeDelegate(QAbstractItemView *parent) - : DStyledItemDelegate(parent) -{ -} - -void GlobalThemeDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - painter->save(); - QStyleOptionViewItem opt(option); - initStyleOption(&opt, index); - // 选择高亮背景 - if (opt.state & QStyle::State_Selected) { - QPalette::ColorGroup cg = (option.state & QStyle::State_Enabled) - ? QPalette::Normal - : QPalette::Disabled; - opt.backgroundBrush = option.palette.color(cg, QPalette::Highlight); - } - QStyle *style = option.widget ? option.widget->style() : QApplication::style(); - QRect decorationRect; - decorationRect = QRect(opt.rect.topLeft() + QPoint((opt.rect.width() - opt.decorationSize.width()) / 2, 6), opt.decorationSize); - opt.displayAlignment = Qt::AlignCenter; - - QRect displayRect = QRect(opt.rect.topLeft() + QPoint(0, opt.decorationSize.height() + 15), QSize(opt.rect.width(), 15)); - - // draw the item - if (index.data(Qt::CheckStateRole) == Qt::Checked) - drawChecked(style, painter, opt, decorationRect); - // 图标的绘制用也可能会使用这些颜色 - QPalette::ColorGroup cg = (opt.state & QStyle::State_Enabled) ? QPalette::Normal : QPalette::Disabled; - painter->setPen(opt.palette.color(cg, QPalette::Text)); - drawDecoration(painter, opt, decorationRect); - - drawDisplay(style, painter, opt, displayRect); - painter->restore(); -} - -void GlobalThemeDelegate::drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - if (option.features & QStyleOptionViewItem::HasDecoration) { - QIcon::Mode mode = QIcon::Normal; - if (!(option.state & QStyle::State_Enabled)) - mode = QIcon::Disabled; - else if (option.state & QStyle::State_Selected) - mode = QIcon::Selected; - QIcon::State state = (option.state & QStyle::State_Open) ? QIcon::On : QIcon::Off; - painter->save(); - QPainterPath painterPath; - painterPath.addRoundedRect(rect, 8, 8); - painter->setRenderHint(QPainter::Antialiasing); - painter->setClipPath(painterPath); - option.icon.paint(painter, rect, option.decorationAlignment, mode, state); - - painter->restore(); - } -} - -void GlobalThemeDelegate::drawChecked(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - Q_UNUSED(style) - QRect r = rect; - r.adjust(-4, -4, 4, 4); - painter->save(); - painter->setRenderHint(QPainter::Antialiasing); - QPen pen(option.palette.color(QPalette::Normal, QPalette::Highlight), 3); - painter->setPen(pen); - painter->drawRoundedRect(r, 8, 8); - painter->restore(); -} - -void GlobalThemeDelegate::drawDisplay(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const -{ - DStyle::viewItemDrawText(style, painter, &option, rect); -} diff --git a/dcc-old/src/plugin-personalization/window/widgets/globalthemelistview.h b/dcc-old/src/plugin-personalization/window/widgets/globalthemelistview.h deleted file mode 100644 index 534f9343f2..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/globalthemelistview.h +++ /dev/null @@ -1,98 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef GLOBALTHEMELISTVIEW_H -#define GLOBALTHEMELISTVIEW_H -#include "interface/namespace.h" -#include - -class ThemeModel; -class GlobalThemeListViewPrivate; -class GlobalThemeListView : public QAbstractItemView -{ - Q_OBJECT -public: - explicit GlobalThemeListView(QWidget *parent = nullptr); - ~GlobalThemeListView(); - - void setThemeModel(ThemeModel *model); - void setSpacing(int space); - int spacing() const; - - void setGridSize(const QSize &size); - QSize gridSize() const; - - QRect visualRect(const QModelIndex &index) const override; - void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) override; - QModelIndex indexAt(const QPoint &p) const override; - -Q_SIGNALS: - void applied(const QModelIndex &index); - void previewed(const QModelIndex &index); - -protected: - QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override; - int horizontalOffset() const override; - int verticalOffset() const override; - - bool isIndexHidden(const QModelIndex &index) const override; - QRegion visualRegionForSelection(const QItemSelection &selection) const override; - void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) override; - - void updateGeometries() override; - - void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector &roles = QVector()) override; - void rowsInserted(const QModelIndex &parent, int start, int end) override; - void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override; - -protected: - void paintEvent(QPaintEvent *e) override; - bool viewportEvent(QEvent *event) override; - void wheelEvent(QWheelEvent *e) override; - void mousePressEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - - DCC_DECLARE_PRIVATE(GlobalThemeListView) -}; - -class GlobalThemeModel : public QAbstractItemModel -{ -public: - enum UserDataRole { - IdRole = Qt::UserRole + 0x101, - }; - explicit GlobalThemeModel(QObject *parent = nullptr); - ~GlobalThemeModel() { } - - void setThemeModel(ThemeModel *model); - // Basic functionality: - QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; - QModelIndex parent(const QModelIndex &index) const override; - - int rowCount(const QModelIndex &parent = QModelIndex()) const override; - int columnCount(const QModelIndex &parent = QModelIndex()) const override; - - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; - -private: - void updateData(); - -private: - ThemeModel *m_themeModel; - QStringList m_keys; -}; - -class GlobalThemeDelegate : public Dtk::Widget::DStyledItemDelegate -{ -public: - explicit GlobalThemeDelegate(QAbstractItemView *parent = nullptr); - -protected: - void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override; - - virtual void drawDecoration(QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - void drawChecked(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; - void drawDisplay(const QStyle *style, QPainter *painter, const QStyleOptionViewItem &option, const QRect &rect) const; -}; - -#endif // GLOBALTHEMELISTVIEW_H diff --git a/dcc-old/src/plugin-personalization/window/widgets/personalizationthemelist.cpp b/dcc-old/src/plugin-personalization/window/widgets/personalizationthemelist.cpp deleted file mode 100644 index 8efcddf163..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/personalizationthemelist.cpp +++ /dev/null @@ -1,193 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "personalizationthemelist.h" -#include "buttontuple.h" -#include "model/thememodel.h" -#include "titlelabel.h" - -#include - -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -PersonalizationThemeList::PersonalizationThemeList(const QString &title, QWidget *parent) - : DAbstractDialog(false, parent) - , m_listview(new DListView) -{ - setAccessibleName("PersonalizationThemeList"); - QVBoxLayout *layout = new QVBoxLayout; - layout->setMargin(0); - DTitlebar *titleIcon = new DTitlebar(); - titleIcon->setFrameStyle(QFrame::NoFrame);//无边框 - titleIcon->setBackgroundTransparent(true);//透明 - titleIcon->setMenuVisible(false); - titleIcon->setIcon(qApp->windowIcon()); - titleIcon->setTitle(title); - layout->addWidget(titleIcon); - - QStandardItemModel *model = new QStandardItemModel(this); - m_listview->setAccessibleName("List_PersonalizationThemeList"); - m_listview->setModel(model); - m_listview->setEditTriggers(QListView::NoEditTriggers); - m_listview->setSelectionMode(QAbstractItemView::NoSelection); - m_listview->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - m_listview->setViewportMargins(0, 0, 10, 0); - - auto *viewLayout = new QVBoxLayout; - viewLayout->setContentsMargins(10, 10, 0, 0); - viewLayout->addWidget(m_listview); - - layout->addLayout(viewLayout); - // 右侧偏移10像素给滚动条 - this->setLayout(layout); - connect(m_listview, &DListView::clicked, this, &PersonalizationThemeList::onClicked); - - QScroller *scroller = QScroller::scroller(m_listview->viewport()); - QScrollerProperties sp; - sp.setScrollMetric(QScrollerProperties::VerticalOvershootPolicy, QScrollerProperties::OvershootAlwaysOff); - scroller->setScrollerProperties(sp); - - auto *buttonTuple = new ButtonTuple(dccV23::ButtonTuple::Save, this); - buttonTuple->setContentsMargins(10, 0, 10, 10); - layout->addWidget(buttonTuple); - - QPushButton *cancelBtn = buttonTuple->leftButton(); - cancelBtn->setText(tr("Cancel")); - QPushButton *saveBtn = buttonTuple->rightButton(); - saveBtn->setText(tr("Save")); - connect(cancelBtn, &QPushButton::clicked, this, &PersonalizationThemeList::reject); - connect(saveBtn, &DSuggestButton::clicked, this, &PersonalizationThemeList::clickSaveBtn); - resize(540, 640); -} - -PersonalizationThemeList::~PersonalizationThemeList() -{ - QScroller *scroller = QScroller::scroller(m_listview->viewport()); - if (scroller) { - scroller->stop(); - } -} - -void PersonalizationThemeList::setModel(ThemeModel *const model) -{ - m_model = model; - connect(m_model, &ThemeModel::defaultChanged, this, &PersonalizationThemeList::setDefault); - connect(m_model, &ThemeModel::itemAdded, this, &PersonalizationThemeList::onAddItem); - connect(m_model, &ThemeModel::picAdded, this, &PersonalizationThemeList::onSetPic); - connect(m_model, &ThemeModel::itemRemoved, this, &PersonalizationThemeList::onRemoveItem); - - QMap itemList = m_model->getList(); - - for (auto &&key : m_model->keys()) { - onAddItem(itemList.value(key)); - } - - setDefault(m_model->getDefault()); - - QMap picList = m_model->getPicList(); - - for (auto it(picList.constBegin()); it != picList.constEnd(); ++it) { - onSetPic(it.key(), it.value()); - } -} - -void PersonalizationThemeList::onAddItem(const QJsonObject &json) -{ - if (m_jsonMap.values().contains(json)) - return; - - const QString &id = json["Id"].toString(); - const QString &name = json["Name"].toString(); - - m_jsonMap.insert(id, json); - - DStandardItem *item = new DStandardItem; - - // translations - if (json["type"] == "gtk") { - if (id == "deepin") { - item->setText(tr("Light")); - } else if (id == "deepin-dark") { - item->setText(tr("Dark")); - } else if (id == "deepin-auto") { - item->setText(tr("Auto")); - } else { - item->setText(id); - } - } else if (json["type"] == "icon") { - // icon use "name" as title - item->setText(id == "deepin" ? QString("deepin (%1)").arg(tr("Default")) : name); - } else { - // cursor use "id" as title - item->setText(id == "deepin" ? QString("deepin (%1)").arg(tr("Default")) : id); - } - - item->setData(id, IDRole); // set id data - item->setCheckState(id == m_model->getDefault() ? Qt::Checked : Qt::Unchecked); - qobject_cast(m_listview->model())->appendRow(item); -} - -void PersonalizationThemeList::setDefault(const QString &name) -{ - QStandardItemModel *model = qobject_cast(m_listview->model()); - - for (int i = 0; i < model->rowCount(); ++i) { - DStandardItem *item = dynamic_cast(model->item(i, 0)); - item->setCheckState((item->data(IDRole).toString() == name) ? Qt::Checked : Qt::Unchecked); - } -} - -void PersonalizationThemeList::onSetPic(const QString &id, const QString &picPath) -{ - QStandardItemModel *model = qobject_cast(m_listview->model()); - - for (int i = 0; i < model->rowCount(); ++i) { - DStandardItem *item = dynamic_cast(model->item(i, 0)); - - if (item->data(IDRole).toString() != id) - continue; - - DViewItemActionList list; - QPixmap pxmap = QPixmap(picPath); - DViewItemAction *iconAction = new DViewItemAction(Qt::AlignLeft, pxmap.size() / devicePixelRatioF()); - iconAction->setIcon(QIcon(pxmap)); - list << iconAction; - item->setActionList(Qt::BottomEdge, list); - - return; - } -} - -void PersonalizationThemeList::onRemoveItem(const QString &id) -{ - QStandardItemModel *model = qobject_cast(m_listview->model()); - - for (int i = 0; i < model->rowCount(); ++i) { - DStandardItem *item = dynamic_cast(model->item(i, 0)); - if (item->data(IDRole).toString() == id) { - model->removeRow(i); - break; - } - } -} - -void PersonalizationThemeList::onClicked(const QModelIndex &index) -{ - setDefault(index.data(IDRole).toString()); -} - -void PersonalizationThemeList::clickSaveBtn() -{ - const QModelIndex &index = m_listview->currentIndex(); - if (m_jsonMap.contains(index.data(IDRole).toString())) - Q_EMIT requestSetDefault(m_jsonMap.value(index.data(IDRole).toString())); - - accept(); -} diff --git a/dcc-old/src/plugin-personalization/window/widgets/personalizationthemelist.h b/dcc-old/src/plugin-personalization/window/widgets/personalizationthemelist.h deleted file mode 100644 index 578d63679a..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/personalizationthemelist.h +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include -#include - -#include -#include - -class ThemeModel; - -DWIDGET_BEGIN_NAMESPACE -class DListView; -DWIDGET_END_NAMESPACE - -class PersonalizationThemeList : public DTK_WIDGET_NAMESPACE::DAbstractDialog -{ - Q_OBJECT -public: - explicit PersonalizationThemeList(const QString &title, QWidget *parent = nullptr); - ~PersonalizationThemeList(); - - void setModel(ThemeModel *const model); - -Q_SIGNALS: - void requestSetDefault(const QJsonObject &value); - -public Q_SLOTS: - void setDefault(const QString &name); - void onSetPic(const QString &id, const QString &picPath); - void onAddItem(const QJsonObject &json); - void onRemoveItem(const QString &id); - void onClicked(const QModelIndex &); - void clickSaveBtn(); - -private: - enum PersonalizationItemDataRole { - IDRole = DTK_NAMESPACE::UserRole + 1, - }; - -protected: - QMap m_jsonMap; - ThemeModel *m_model; - DTK_WIDGET_NAMESPACE::DListView *m_listview; -}; diff --git a/dcc-old/src/plugin-personalization/window/widgets/personalizationthemewidget.cpp b/dcc-old/src/plugin-personalization/window/widgets/personalizationthemewidget.cpp deleted file mode 100644 index cc9f62abec..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/personalizationthemewidget.cpp +++ /dev/null @@ -1,145 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "personalizationthemewidget.h" -#include "themeitem.h" -#include "model/thememodel.h" - -#include -#include -#include - -#include - -PersonalizationThemeWidget::PersonalizationThemeWidget(QWidget *parent) - : QWidget(parent) - , m_centerLayout(nullptr) - , m_model(nullptr) - , m_titleBelowPic(true) -{ - setAccessibleName("PersonalizationThemeWidget"); -} - -void PersonalizationThemeWidget::setModel(ThemeModel *const model) -{ - m_model = model; - connect(m_model, &ThemeModel::defaultChanged, this, &PersonalizationThemeWidget::setDefault); - connect(m_model, &ThemeModel::itemAdded, this, &PersonalizationThemeWidget::onAddItem); - connect(m_model, &ThemeModel::picAdded, this, &PersonalizationThemeWidget::onSetPic); - connect(m_model, &ThemeModel::itemRemoved, this, &PersonalizationThemeWidget::onRemoveItem); - - QMap itemList = m_model->getList(); - - for (auto it(itemList.constBegin()); it != itemList.constEnd(); ++it) { - onAddItem(it.value()); - } - - setDefault(m_model->getDefault()); - - QMap picList = m_model->getPicList(); - - for (auto it(picList.constBegin()); it != picList.constEnd(); ++it) { - onSetPic(it.key(), it.value()); - } -} - -void PersonalizationThemeWidget::onAddItem(const QJsonObject &json) -{ - if (m_valueMap.values().contains(json)) - return; - - ThemeItem *theme = new ThemeItem(m_titleBelowPic, this); - const QString &title = json["Id"].toString(); - theme->setId(title); - - //translations - if (json["type"] == "gtk") { - if (title == "deepin") { - //~ contents_path /personalization/General - //~ child_page General - theme->setTitle(tr("Light")); - theme->setAccessibleName("Light"); - } else if (title == "deepin-dark") { - //~ contents_path /personalization/General - //~ child_page General - theme->setTitle(tr("Dark")); - theme->setAccessibleName("Dark"); - } else if (title == "deepin-auto") { - //~ contents_path /personalization/General - //~ child_page General - theme->setTitle(tr("Auto")); - theme->setAccessibleName("Auto"); - } else { - theme->setTitle(title); - theme->setAccessibleName(title); - - } - } else { - theme->setTitle(title == "deepin" ? QString("deepin (%1)").arg(tr("Default")) : title); - theme->setAccessibleName(title == "deepin" ? QString("deepin (%1)").arg(tr("Default")) : title); - } - - theme->setSelected(title == m_model->getDefault()); - - m_valueMap.insert(theme, json); - m_centerLayout->addWidget(theme); - connect(theme, &ThemeItem::selectedChanged, this, &PersonalizationThemeWidget::onItemClicked); -} - -void PersonalizationThemeWidget::setDefault(const QString &name) -{ - QMap::const_iterator it = m_valueMap.constBegin(); - while (it != m_valueMap.constEnd()) { - it.key()->setSelected(it.key()->id().toString() == name); - ++it; - } -} - -void PersonalizationThemeWidget::onItemClicked(const bool selected) -{ - if (selected) { - ThemeItem *item = qobject_cast(sender()); - Q_ASSERT(m_valueMap.contains(item)); - Q_EMIT requestSetDefault(m_valueMap[item]); - } -} - -void PersonalizationThemeWidget::onSetPic(const QString &id, const QString &picPath) -{ - QMap::const_iterator it = m_valueMap.constBegin(); - while (it != m_valueMap.constEnd()) { - if (it.key()->id() == id) { - it.key()->setPic(picPath); - return; - } - ++it; - } -} - -void PersonalizationThemeWidget::onRemoveItem(const QString &id) -{ - QMap::iterator it = m_valueMap.begin(); - while (it != m_valueMap.end()) { - if (it.key()->id() == id){ - delete it.key(); - m_valueMap.erase(it); - return; - } - ++it; - } -} - -void PersonalizationThemeWidget::mouseMoveEvent(QMouseEvent *event) -{ - Q_UNUSED(event); - return; -} - -void PersonalizationThemeWidget::setMainLayout(QBoxLayout *layout, bool titleBelowPic) -{ - m_centerLayout = layout; - m_centerLayout->setMargin(0); - m_centerLayout->setAlignment(Qt::AlignLeft); - setLayout(m_centerLayout); - m_titleBelowPic = titleBelowPic; -} diff --git a/dcc-old/src/plugin-personalization/window/widgets/personalizationthemewidget.h b/dcc-old/src/plugin-personalization/window/widgets/personalizationthemewidget.h deleted file mode 100644 index f30c06f6ed..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/personalizationthemewidget.h +++ /dev/null @@ -1,38 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "themeitem.h" - -#include -#include -#include - -class ThemeModel; - -class ThemeItem; -class PersonalizationThemeWidget : public QWidget -{ - Q_OBJECT -public: - explicit PersonalizationThemeWidget(QWidget *parent = nullptr); - void setModel(ThemeModel *const model); - void setMainLayout(QBoxLayout *layout, bool titleBelowPic); - -Q_SIGNALS: - void requestSetDefault(const QJsonObject &value); - -public Q_SLOTS: - void setDefault(const QString &name); - void onItemClicked(const bool selected); - void onSetPic(const QString &id, const QString &picPath); - void onAddItem(const QJsonObject &json); - void onRemoveItem(const QString &id); -protected: - void mouseMoveEvent(QMouseEvent* event)override; - QBoxLayout *m_centerLayout; - QMap m_valueMap; - ThemeModel *m_model; - bool m_titleBelowPic; -}; diff --git a/dcc-old/src/plugin-personalization/window/widgets/ringcolorwidget.cpp b/dcc-old/src/plugin-personalization/window/widgets/ringcolorwidget.cpp deleted file mode 100644 index 84ef8d3ea9..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/ringcolorwidget.cpp +++ /dev/null @@ -1,46 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "ringcolorwidget.h" - -#include -#include - -#include -#include - -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE - -RingColorWidget::RingColorWidget(QWidget *parent) - : QWidget{ parent } - , m_selectedItem(nullptr) -{ - setAccessibleName("RingColorWidget"); -} - -void RingColorWidget::paintEvent(QPaintEvent *event) -{ - const DPalette &dp = DPaletteHelper::instance()->palette(this); - QPainter painter(this); - painter.setPen(Qt::NoPen); - painter.setBrush(dp.brush(DPalette::ItemBackground)); - painter.drawRoundedRect(rect(), 18, 18); - - QWidget::paintEvent(event); - if (nullptr == m_selectedItem) - return; - - painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - - int borderWidth = style()->pixelMetric(static_cast(DStyle::PM_FocusBorderWidth), nullptr, this); - - // draw select circle - QPen pen; - pen.setBrush(palette().highlight()); - pen.setWidth(borderWidth); // pen width - painter.setPen(pen); - QRect rc = m_selectedItem->geometry(); - painter.drawEllipse(QRect(rc.center().x() - 14, rc.center().y() - 14, 30, 30)); - painter.setRenderHint(QPainter::SmoothPixmapTransform); -} diff --git a/dcc-old/src/plugin-personalization/window/widgets/ringcolorwidget.h b/dcc-old/src/plugin-personalization/window/widgets/ringcolorwidget.h deleted file mode 100644 index e517007868..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/ringcolorwidget.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef RINGCOLORWIDGET_H -#define RINGCOLORWIDGET_H - -#include "roundcolorwidget.h" - -#include - -class RingColorWidget : public QWidget -{ - Q_OBJECT -public: - explicit RingColorWidget(QWidget *parent = nullptr); - virtual ~RingColorWidget() { } - - void setSelectedItem(RoundColorWidget *item) - { - m_selectedItem = item; - } - - static const int EXTRA = 2; // 2px extra space to avoid line cutted off - -protected: - void paintEvent(QPaintEvent *event) override; - -private: - RoundColorWidget *m_selectedItem; -}; - -#endif // RINGCOLORWIDGET_H diff --git a/dcc-old/src/plugin-personalization/window/widgets/roundcolorwidget.cpp b/dcc-old/src/plugin-personalization/window/widgets/roundcolorwidget.cpp deleted file mode 100644 index 92cbb62163..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/roundcolorwidget.cpp +++ /dev/null @@ -1,103 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "roundcolorwidget.h" - -#include - -#include -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -RoundColorWidget::RoundColorWidget(const QColor &color, QWidget *parent) - : QWidget(parent) - , m_isSelected(false) - , m_color(color) -{ - setAccessibleName("RoundColorWidget"); -} - -bool RoundColorWidget::isSelected() -{ - return m_isSelected; -} - -void RoundColorWidget::setSelected(bool selected) -{ - if (m_isSelected == selected) - return; - - m_isSelected = selected; - - update(); -} - -void RoundColorWidget::setColor(const QColor &color) -{ - m_color = color; - update(); -} - -void RoundColorWidget::setActiveColors(const QPair& activeColors) -{ - if (m_activeColors == activeColors) - return; - - m_activeColors = activeColors; -} - -void RoundColorWidget::mousePressEvent(QMouseEvent *event) -{ - if(event->button() == Qt::LeftButton) { - if (m_isSelected) return; - Q_EMIT clicked(); - } -} - -void RoundColorWidget::mouseMoveEvent(QMouseEvent *event) -{ - Q_UNUSED(event); - return; -} - -void RoundColorWidget::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event) - QPainter painter(this); - painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - - int borderWidth = style()->pixelMetric(static_cast(DStyle::PM_FocusBorderWidth), nullptr, this); - int borderSpacing = style()->pixelMetric(static_cast(DStyle::PM_FocusBorderSpacing), nullptr, this); - int totalSpace = borderWidth + borderSpacing; - QRect squareRect = rect(); - int delta = (squareRect.width() - squareRect.height())/2; - - if (delta != 0) - squareRect = (delta > 0) ? squareRect.adjusted(delta + EXTRA, EXTRA, -delta - EXTRA, -EXTRA) - : squareRect.adjusted(EXTRA, -delta + EXTRA , -EXTRA, delta - EXTRA); - - QPainterPath path; - QRect r = squareRect.adjusted(totalSpace, totalSpace, -totalSpace, -totalSpace); - path.addEllipse(r); - painter.setClipPath(path); - painter.setPen(Qt::NoPen); - painter.drawPath(path); - if (m_color.isValid()) { - painter.fillPath(path, QBrush(m_color)); - } else { - QConicalGradient gradient(r.center(), 0); - gradient.setColorAt(0, QColor(255, 0, 0)); - gradient.setColorAt(0.167, QColor(255, 255, 0)); - gradient.setColorAt(0.333, QColor(0, 255, 0)); - gradient.setColorAt(0.5, QColor(0, 255, 255)); - gradient.setColorAt(0.667, QColor(0, 0, 255)); - gradient.setColorAt(0.833, QColor(255, 0, 255)); - gradient.setColorAt(1, QColor(255, 0, 0)); - painter.fillPath(path, QBrush(gradient)); - } -} diff --git a/dcc-old/src/plugin-personalization/window/widgets/roundcolorwidget.h b/dcc-old/src/plugin-personalization/window/widgets/roundcolorwidget.h deleted file mode 100644 index 6a8e20746e..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/roundcolorwidget.h +++ /dev/null @@ -1,40 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include - -#include - -class QColor; - -class RoundColorWidget : public QWidget -{ - Q_OBJECT -public: - explicit RoundColorWidget(const QColor &color, QWidget *parent = nullptr); - bool isSelected(); - void setSelected(bool selected); - static const int EXTRA = 2; //2px extra space to avoid line cutted off - // - QColor color() const { return m_color; } - void setColor(const QColor &color); - - QPair activeColors() const { return m_activeColors; } - void setActiveColors(const QPair &colors); - -Q_SIGNALS: - void clicked(); - -protected: - void mousePressEvent(QMouseEvent* event); - void mouseMoveEvent(QMouseEvent* event); - void paintEvent(QPaintEvent *event); - -private: - bool m_isSelected; - QColor m_color; - QPair m_activeColors; -}; diff --git a/dcc-old/src/plugin-personalization/window/widgets/themeitem.cpp b/dcc-old/src/plugin-personalization/window/widgets/themeitem.cpp deleted file mode 100644 index 4275b14ac7..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/themeitem.cpp +++ /dev/null @@ -1,77 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "themeitem.h" -#include "themeitempic.h" - -#include - -#include -#include - - -DWIDGET_USE_NAMESPACE - -ThemeItem::ThemeItem(bool titleBelowPic, QWidget *parent) - : QWidget(parent) - , m_titleBelowPic(titleBelowPic) - , m_imgBtn(nullptr) -{ - m_mainLayout = new QVBoxLayout(); - m_mainLayout->setMargin(0); - - m_title = new QLabel(this); - m_itemPic = new ThemeItemPic(this); - connect(m_itemPic, &ThemeItemPic::clicked, this, [=] { - Q_EMIT selectedChanged(true); - }); - - if (m_titleBelowPic) { - m_mainLayout->addWidget(m_itemPic); - m_mainLayout->addWidget(m_title); - m_mainLayout->setAlignment(Qt::AlignHCenter); - } else { - //icon themes and cursor thems - QHBoxLayout *titlebuttonLayout = new QHBoxLayout(); - titlebuttonLayout->addWidget(m_title); - m_imgBtn = new DIconButton(DStyle::SP_MarkElement, this); - m_imgBtn->setDisabled(true); - titlebuttonLayout->addStretch(); - titlebuttonLayout->addWidget(m_imgBtn); - - m_mainLayout->addLayout(titlebuttonLayout); - m_mainLayout->addWidget(m_itemPic); - } - - m_mainLayout->setSpacing(5); - - setLayout(m_mainLayout); -} - -void ThemeItem::setTitle(const QString &title) -{ - m_title->setText(title); - m_itemPic->setAccessibleName(title); - m_mainLayout->setAlignment(m_title, Qt::AlignCenter); -} - -void ThemeItem::setSelected(bool selected) -{ - m_state = selected; - if (m_titleBelowPic) { - m_itemPic->setSelected(selected); - } else { - m_imgBtn->setVisible(selected); - } -} - -void ThemeItem::setPic(const QString &picPath) -{ - m_itemPic->setPath(picPath); - m_mainLayout->setAlignment(m_title, Qt::AlignCenter); -} - -void ThemeItem::setId(const QVariant &id) -{ - m_id = id; -} diff --git a/dcc-old/src/plugin-personalization/window/widgets/themeitem.h b/dcc-old/src/plugin-personalization/window/widgets/themeitem.h deleted file mode 100644 index a4dde26eb3..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/themeitem.h +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include - -#include -#include - -class QVBoxLayout; -class QLabel; - -DWIDGET_BEGIN_NAMESPACE -class DIconButton; -DWIDGET_END_NAMESPACE - -class ThemeItemPic; - -class ThemeItem : public QWidget -{ - Q_OBJECT -public: - explicit ThemeItem(bool titleBelowPic, QWidget *parent = nullptr); - - void setTitle(const QString &title); - void setSelected(bool selected); - void setPic(const QString &picPath); - void setId(const QVariant &id); - inline const QVariant id() const { return m_id; } - -Q_SIGNALS: - void selectedChanged(const bool selected) const; - -private: - QVBoxLayout *m_mainLayout; - QLabel *m_title; - bool m_state; - ThemeItemPic *m_itemPic; //picture of theme - QVariant m_id; - bool m_titleBelowPic; - DTK_WIDGET_NAMESPACE::DIconButton *m_imgBtn; -}; diff --git a/dcc-old/src/plugin-personalization/window/widgets/themeitempic.cpp b/dcc-old/src/plugin-personalization/window/widgets/themeitempic.cpp deleted file mode 100644 index 6a2be54c7a..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/themeitempic.cpp +++ /dev/null @@ -1,104 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "themeitempic.h" - -#include -#include - -#include -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE -using DTK_GUI_NAMESPACE::DSvgRenderer; - -ThemeItemPic::ThemeItemPic(QWidget *parent) - : QWidget(parent) - , m_isSelected(false) - , render(new DSvgRenderer()) -{ -} - -bool ThemeItemPic::isSelected() -{ - return m_isSelected; -} - -void ThemeItemPic::setSelected(bool selected) -{ - m_isSelected = selected; - update(); -} - -void ThemeItemPic::setPath(const QString &picPath) -{ - render->load(picPath); - QSize defaultSize = render->defaultSize(); - - int margins = style()->pixelMetric(static_cast(DStyle::PM_FrameMargins)); - int borderWidth = style()->pixelMetric(static_cast(DStyle::PM_FocusBorderWidth), nullptr, nullptr); - int borderSpacing = style()->pixelMetric(static_cast(DStyle::PM_FocusBorderSpacing), nullptr, nullptr); - int totalSpace = borderWidth + borderSpacing + margins; - setFixedSize(defaultSize.width() + 2 * totalSpace, defaultSize.height() + 2 * totalSpace); - update(); -} - -ThemeItemPic::~ThemeItemPic() -{ - render->deleteLater(); -} - -void ThemeItemPic::mousePressEvent(QMouseEvent* event) -{ - if(event->button() == Qt::LeftButton) { - if (m_isSelected) return; - Q_EMIT clicked(); - } -} - -void ThemeItemPic::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event) - int radius = style()->pixelMetric(static_cast(DStyle::PM_FrameRadius), nullptr, nullptr); - int margins = style()->pixelMetric(static_cast(DStyle::PM_FrameMargins)); - int borderWidth = style()->pixelMetric(static_cast(DStyle::PM_FocusBorderWidth), nullptr, nullptr); - int borderSpacing = style()->pixelMetric(static_cast(DStyle::PM_FocusBorderSpacing), nullptr, nullptr); - int totalSpace = borderWidth + borderSpacing + margins; - - QPainter painter(this); - painter.setRenderHints(QPainter::Antialiasing | QPainter::SmoothPixmapTransform); - - //first draw image - const auto ratio = devicePixelRatioF(); - QSize defaultSize = render->defaultSize() * ratio; - QImage img = render->toImage(defaultSize); - QRect picRect = rect().adjusted(totalSpace, totalSpace, -totalSpace, -totalSpace); - painter.drawImage(picRect, img, img.rect()); - - //second draw picture rounded rect bound - QPen pen; - pen.setColor(palette().base().color()); - painter.setPen(pen); - painter.drawRoundedRect(picRect, radius, radius); - - //third fill space with base brush - QPainterPath picPath; - picPath.addRect(picRect); - QPainterPath roundPath; - roundPath.addRoundedRect(picRect, radius, radius); - QPainterPath anglePath = picPath - roundPath; - painter.fillPath(anglePath, palette().base().color()); - painter.strokePath(picPath, palette().base().color()); - - //last draw focus rectangle - if (m_isSelected) { - QStyleOption option; - option.initFrom(this); - style()->drawPrimitive(DStyle::PE_FrameFocusRect, &option, &painter, this); - } -} diff --git a/dcc-old/src/plugin-personalization/window/widgets/themeitempic.h b/dcc-old/src/plugin-personalization/window/widgets/themeitempic.h deleted file mode 100644 index 4c14fd6796..0000000000 --- a/dcc-old/src/plugin-personalization/window/widgets/themeitempic.h +++ /dev/null @@ -1,34 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include - -#include - -class QSize; - -class ThemeItemPic : public QWidget -{ - Q_OBJECT -public: - explicit ThemeItemPic(QWidget *parent = nullptr); - bool isSelected(); - void setSelected(bool selected); - void setPath(const QString &picPath); - ~ThemeItemPic(); - -Q_SIGNALS: - void clicked(); - -protected: - void mousePressEvent(QMouseEvent* event) override; - void paintEvent(QPaintEvent *event) override; - -private: - bool m_isSelected = false; - DTK_GUI_NAMESPACE::DSvgRenderer *render; -}; diff --git a/dcc-old/src/plugin-power/operation/powerdbusproxy.cpp b/dcc-old/src/plugin-power/operation/powerdbusproxy.cpp deleted file mode 100644 index e48b579847..0000000000 --- a/dcc-old/src/plugin-power/operation/powerdbusproxy.cpp +++ /dev/null @@ -1,364 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "powerdbusproxy.h" - -#include -#include -#include -#include -#include -#include -#include - -#include - -const QString PowerService = QStringLiteral("org.deepin.dde.Power1"); -const QString PowerPath = QStringLiteral("/org/deepin/dde/Power1"); -const QString PowerInterface = QStringLiteral("org.deepin.dde.Power1"); - -const QString SysPowerService = QStringLiteral("org.deepin.dde.Power1"); -const QString SysPowerPath = QStringLiteral("/org/deepin/dde/Power1"); -const QString SysPowerInterface = QStringLiteral("org.deepin.dde.Power1"); - -const QString Login1ManagerService = QStringLiteral("org.freedesktop.login1"); -const QString Login1ManagerPath = QStringLiteral("/org/freedesktop/login1"); -const QString Login1ManagerInterface = QStringLiteral("org.freedesktop.login1.Manager"); - -const QString UPowerService = QStringLiteral("org.freedesktop.UPower"); -const QString UPowerPath = QStringLiteral("/org/freedesktop/UPower"); -const QString UPowerInterface = QStringLiteral("org.freedesktop.UPower"); - -const QString accountsService = QStringLiteral("org.deepin.dde.Accounts1"); -const QString defaultAccountsPath = QStringLiteral("/org/deepin/dde/Accounts1"); -const QString accountsInterface = QStringLiteral("org.deepin.dde.Accounts1"); - -const QString accountsUserInterface = QStringLiteral("org.deepin.dde.Accounts1.User"); - -const QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); -const QString PropertiesChanged = QStringLiteral("PropertiesChanged"); - -PowerDBusProxy::PowerDBusProxy(QObject *parent) - : QObject(parent) - , m_accountRootInter(new DDBusInterface(accountsService, defaultAccountsPath, accountsInterface, QDBusConnection::systemBus(), this)) - , m_currentAccountInter(nullptr) - , m_powerInter(new DDBusInterface(PowerService, PowerPath, PowerInterface, QDBusConnection::sessionBus(), this)) - , m_sysPowerInter(new DDBusInterface(SysPowerService, SysPowerPath, SysPowerInterface, QDBusConnection::systemBus(), this)) - , m_login1ManagerInter(new DDBusInterface(Login1ManagerService, Login1ManagerPath, Login1ManagerInterface, QDBusConnection::systemBus(), this)) - , m_upowerInter(new DDBusInterface(UPowerService, UPowerPath, UPowerInterface, QDBusConnection::systemBus(), this)) - -{ -} - -std::optional PowerDBusProxy::findUserById() -{ - int id = getuid(); - QDBusReply reply = m_accountRootInter->callWithArgumentList(QDBus::CallMode::Block, "FindUserById", {QString::number(id)}); - if (reply.isValid()) { - return reply.value(); - } - return std::nullopt; -} - -bool PowerDBusProxy::noPasswdLogin() -{ - if (!m_currentAccountInter) { - auto path = findUserById(); - if (!path.has_value()) { - return false; - } - m_currentAccountInter = new DDBusInterface(accountsInterface, path.value(), accountsUserInterface, QDBusConnection::systemBus(), this); - } - return qvariant_cast(m_currentAccountInter->property("NoPasswdLogin")); -} - -// power -bool PowerDBusProxy::screenBlackLock() -{ - return qvariant_cast(m_powerInter->property("ScreenBlackLock")); -} - -void PowerDBusProxy::setScreenBlackLock(bool value) -{ - m_powerInter->setProperty("ScreenBlackLock", QVariant::fromValue(value)); -} - -bool PowerDBusProxy::sleepLock() -{ - return qvariant_cast(m_powerInter->property("SleepLock")); -} - -void PowerDBusProxy::setSleepLock(bool value) -{ - m_powerInter->setProperty("SleepLock", QVariant::fromValue(value)); -} - -bool PowerDBusProxy::lidIsPresent() -{ - return qvariant_cast(m_powerInter->property("LidIsPresent")); -} - -bool PowerDBusProxy::lidClosedSleep() -{ - return qvariant_cast(m_powerInter->property("LidClosedSleep")); -} - -void PowerDBusProxy::setLidClosedSleep(bool value) -{ - m_powerInter->setProperty("LidClosedSleep", QVariant::fromValue(value)); -} - -bool PowerDBusProxy::lowPowerNotifyEnable() -{ - return qvariant_cast(m_powerInter->property("LowPowerNotifyEnable")); -} - -void PowerDBusProxy::setLowPowerNotifyEnable(bool value) -{ - m_powerInter->setProperty("LowPowerNotifyEnable", QVariant::fromValue(value)); -} - -int PowerDBusProxy::lowPowerAutoSleepThreshold() -{ - return qvariant_cast(m_powerInter->property("LowPowerAutoSleepThreshold")); -} - -void PowerDBusProxy::setLowPowerAutoSleepThreshold(int value) -{ - m_powerInter->setProperty("LowPowerAutoSleepThreshold", QVariant::fromValue(value)); -} - -int PowerDBusProxy::lowPowerNotifyThreshold() -{ - return qvariant_cast(m_powerInter->property("LowPowerNotifyThreshold")); -} - -void PowerDBusProxy::setLowPowerNotifyThreshold(int value) -{ - m_powerInter->setProperty("LowPowerNotifyThreshold", QVariant::fromValue(value)); -} - -int PowerDBusProxy::linePowerPressPowerBtnAction() -{ - return qvariant_cast(m_powerInter->property("LinePowerPressPowerBtnAction")); -} - -void PowerDBusProxy::setLinePowerPressPowerBtnAction(int value) -{ - m_powerInter->setProperty("LinePowerPressPowerBtnAction", QVariant::fromValue(value)); -} - -int PowerDBusProxy::linePowerLidClosedAction() -{ - return qvariant_cast(m_powerInter->property("LinePowerLidClosedAction")); -} - -void PowerDBusProxy::setLinePowerLidClosedAction(int value) -{ - m_powerInter->setProperty("LinePowerLidClosedAction", QVariant::fromValue(value)); -} - -int PowerDBusProxy::batteryPressPowerBtnAction() -{ - return qvariant_cast(m_powerInter->property("BatteryPressPowerBtnAction")); -} - -void PowerDBusProxy::setBatteryPressPowerBtnAction(int value) -{ - m_powerInter->setProperty("BatteryPressPowerBtnAction", QVariant::fromValue(value)); -} - -int PowerDBusProxy::batteryLidClosedAction() -{ - return qvariant_cast(m_powerInter->property("BatteryLidClosedAction")); -} - -void PowerDBusProxy::setBatteryLidClosedAction(int value) -{ - m_powerInter->setProperty("BatteryLidClosedAction", QVariant::fromValue(value)); -} - -bool PowerDBusProxy::isHighPerformanceSupported() -{ - return qvariant_cast(m_powerInter->property("IsHighPerformanceSupported")); -} - -bool PowerDBusProxy::isBalancePerformanceSupported() -{ - return qvariant_cast(m_sysPowerInter->property("IsBalancePerformanceSupported")); -} - -bool PowerDBusProxy::isPowerSaveSupported() -{ - return qvariant_cast(m_sysPowerInter->property("IsPowerSaveSupported")); -} - -int PowerDBusProxy::linePowerScreenBlackDelay() -{ - return qvariant_cast(m_powerInter->property("LinePowerScreenBlackDelay")); -} - -void PowerDBusProxy::setLinePowerScreenBlackDelay(int value) -{ - m_powerInter->setProperty("LinePowerScreenBlackDelay", QVariant::fromValue(value)); -} - -int PowerDBusProxy::linePowerSleepDelay() -{ - return qvariant_cast(m_powerInter->property("LinePowerSleepDelay")); -} - -void PowerDBusProxy::setLinePowerSleepDelay(int value) -{ - m_powerInter->setProperty("LinePowerSleepDelay", QVariant::fromValue(value)); -} - -int PowerDBusProxy::batteryScreenBlackDelay() -{ - return qvariant_cast(m_powerInter->property("BatteryScreenBlackDelay")); -} - -void PowerDBusProxy::setBatteryScreenBlackDelay(int value) -{ - m_powerInter->setProperty("BatteryScreenBlackDelay", QVariant::fromValue(value)); -} - -int PowerDBusProxy::batterySleepDelay() -{ - return qvariant_cast(m_powerInter->property("BatterySleepDelay")); -} - -void PowerDBusProxy::setBatterySleepDelay(int value) -{ - m_powerInter->setProperty("BatterySleepDelay", QVariant::fromValue(value)); -} - -int PowerDBusProxy::batteryLockDelay() -{ - return qvariant_cast(m_powerInter->property("BatteryLockDelay")); -} - -void PowerDBusProxy::setBatteryLockDelay(int value) -{ - m_powerInter->setProperty("BatteryLockDelay", QVariant::fromValue(value)); -} - -int PowerDBusProxy::linePowerLockDelay() -{ - return qvariant_cast(m_powerInter->property("LinePowerLockDelay")); -} - -void PowerDBusProxy::setLinePowerLockDelay(int value) -{ - m_powerInter->setProperty("LinePowerLockDelay", QVariant::fromValue(value)); -} -// sysPower -bool PowerDBusProxy::hasBattery() -{ - return qvariant_cast(m_sysPowerInter->property("HasBattery")); -} - -bool PowerDBusProxy::powerSavingModeAutoWhenBatteryLow() -{ - return qvariant_cast(m_sysPowerInter->property("PowerSavingModeAutoWhenBatteryLow")); -} - -void PowerDBusProxy::setPowerSavingModeAutoWhenBatteryLow(bool value) -{ - m_sysPowerInter->setProperty("PowerSavingModeAutoWhenBatteryLow", QVariant::fromValue(value)); -} - -uint PowerDBusProxy::powerSavingModeBrightnessDropPercent() -{ - return qvariant_cast(m_sysPowerInter->property("PowerSavingModeBrightnessDropPercent")); -} - -void PowerDBusProxy::setPowerSavingModeBrightnessDropPercent(uint value) -{ - m_sysPowerInter->setProperty("PowerSavingModeBrightnessDropPercent", QVariant::fromValue(value)); -} - -uint PowerDBusProxy::powerSavingModeAutoBatteryPercent() -{ - return qvariant_cast(m_sysPowerInter->property("PowerSavingModeAutoBatteryPercent")); -} - -void PowerDBusProxy::setPowerSavingModeAutoBatteryPercent(uint value) -{ - m_sysPowerInter->setProperty("PowerSavingModeAutoBatteryPercent", QVariant::fromValue(value)); -} - -QString PowerDBusProxy::mode() -{ - return qvariant_cast(m_sysPowerInter->property("Mode")); -} - -bool PowerDBusProxy::powerSavingModeAuto() -{ - return qvariant_cast(m_sysPowerInter->property("PowerSavingModeAuto")); -} - -void PowerDBusProxy::setPowerSavingModeAuto(bool value) -{ - m_sysPowerInter->setProperty("PowerSavingModeAuto", QVariant::fromValue(value)); -} - -bool PowerDBusProxy::powerSavingModeEnabled() -{ - return qvariant_cast(m_sysPowerInter->property("PowerSavingModeEnabled")); -} - -void PowerDBusProxy::setPowerSavingModeEnabled(bool value) -{ - m_sysPowerInter->setProperty("PowerSavingModeEnabled", QVariant::fromValue(value)); -} - -double PowerDBusProxy::batteryCapacity() -{ - return qvariant_cast(m_sysPowerInter->property("BatteryCapacity")); -} - -int PowerDBusProxy::maxBacklightBrightness() -{ - QDBusInterface Interface("org.deepin.dde.Display1", - "/org/deepin/dde/Display1", - "org.deepin.dde.Display1", - QDBusConnection::sessionBus()); - return Interface.property("MaxBacklightBrightness").toInt(); -} - -void PowerDBusProxy::SetMode(const QString &mode) -{ - QList argumentList; - argumentList << QVariant::fromValue(mode); - m_sysPowerInter->asyncCallWithArgumentList(QStringLiteral("SetMode"), argumentList); -} - -bool PowerDBusProxy::CanSuspend() -{ - if (!QFile("/sys/power/mem_sleep").exists()) - return false; - - return login1ManagerCanSuspend(); -} - -bool PowerDBusProxy::CanHibernate() -{ - return login1ManagerCanHibernate(); -} - -bool PowerDBusProxy::login1ManagerCanSuspend() -{ - /* return true; */ - QList argumentList; - QDBusPendingReply reply = m_login1ManagerInter->callWithArgumentList(QDBus::BlockWithGui, QStringLiteral("CanSuspend"), argumentList); - return reply.value().contains("yes"); -} - -bool PowerDBusProxy::login1ManagerCanHibernate() -{ - /* return true; */ - QList argumentList; - QDBusPendingReply reply = m_login1ManagerInter->callWithArgumentList(QDBus::BlockWithGui, QStringLiteral("CanHibernate"), argumentList); - return reply.value().contains("yes"); -} diff --git a/dcc-old/src/plugin-power/operation/powerdbusproxy.h b/dcc-old/src/plugin-power/operation/powerdbusproxy.h deleted file mode 100644 index 519ef20d25..0000000000 --- a/dcc-old/src/plugin-power/operation/powerdbusproxy.h +++ /dev/null @@ -1,163 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef POWERDBUSPROXY_H -#define POWERDBUSPROXY_H - -#include -#include -#include -class QDBusInterface; -class QDBusMessage; -using Dtk::Core::DDBusInterface; -class PowerDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit PowerDBusProxy(QObject *parent = nullptr); - - // Power - Q_PROPERTY(bool ScreenBlackLock READ screenBlackLock WRITE setScreenBlackLock NOTIFY ScreenBlackLockChanged) - bool screenBlackLock(); - void setScreenBlackLock(bool value); - Q_PROPERTY(bool SleepLock READ sleepLock WRITE setSleepLock NOTIFY SleepLockChanged) - bool sleepLock(); - void setSleepLock(bool value); - Q_PROPERTY(bool LidIsPresent READ lidIsPresent NOTIFY LidIsPresentChanged) - bool lidIsPresent(); - Q_PROPERTY(bool LidClosedSleep READ lidClosedSleep WRITE setLidClosedSleep NOTIFY LidClosedSleepChanged) - bool lidClosedSleep(); - void setLidClosedSleep(bool value); - Q_PROPERTY(bool LowPowerNotifyEnable READ lowPowerNotifyEnable WRITE setLowPowerNotifyEnable NOTIFY LowPowerNotifyEnableChanged) - bool lowPowerNotifyEnable(); - void setLowPowerNotifyEnable(bool value); - Q_PROPERTY(int LowPowerAutoSleepThreshold READ lowPowerAutoSleepThreshold WRITE setLowPowerAutoSleepThreshold NOTIFY LowPowerAutoSleepThresholdChanged) - int lowPowerAutoSleepThreshold(); - void setLowPowerAutoSleepThreshold(int value); - Q_PROPERTY(int LowPowerNotifyThreshold READ lowPowerNotifyThreshold WRITE setLowPowerNotifyThreshold NOTIFY LowPowerNotifyThresholdChanged) - int lowPowerNotifyThreshold(); - void setLowPowerNotifyThreshold(int value); - Q_PROPERTY(int LinePowerPressPowerBtnAction READ linePowerPressPowerBtnAction WRITE setLinePowerPressPowerBtnAction NOTIFY LinePowerPressPowerBtnActionChanged) - int linePowerPressPowerBtnAction(); - void setLinePowerPressPowerBtnAction(int value); - Q_PROPERTY(int LinePowerLidClosedAction READ linePowerLidClosedAction WRITE setLinePowerLidClosedAction NOTIFY LinePowerLidClosedActionChanged) - int linePowerLidClosedAction(); - void setLinePowerLidClosedAction(int value); - Q_PROPERTY(int BatteryPressPowerBtnAction READ batteryPressPowerBtnAction WRITE setBatteryPressPowerBtnAction NOTIFY BatteryPressPowerBtnActionChanged) - int batteryPressPowerBtnAction(); - void setBatteryPressPowerBtnAction(int value); - Q_PROPERTY(int BatteryLidClosedAction READ batteryLidClosedAction WRITE setBatteryLidClosedAction NOTIFY BatteryLidClosedActionChanged) - int batteryLidClosedAction(); - void setBatteryLidClosedAction(int value); - Q_PROPERTY(bool IsHighPerformanceSupported READ isHighPerformanceSupported NOTIFY IsHighPerformanceSupportedChanged) - bool isHighPerformanceSupported(); - Q_PROPERTY(bool IsBalancePerformanceSupported READ isBalancePerformanceSupported NOTIFY IsBalancePerformanceSupportedChanged) - bool isBalancePerformanceSupported(); - Q_PROPERTY(bool IsPowerSaveSupported READ isPowerSaveSupported NOTIFY IsPowerSaveSupportedChanged) - bool isPowerSaveSupported(); - Q_PROPERTY(int LinePowerScreenBlackDelay READ linePowerScreenBlackDelay WRITE setLinePowerScreenBlackDelay NOTIFY LinePowerScreenBlackDelayChanged) - int linePowerScreenBlackDelay(); - void setLinePowerScreenBlackDelay(int value); - Q_PROPERTY(int LinePowerSleepDelay READ linePowerSleepDelay WRITE setLinePowerSleepDelay NOTIFY LinePowerSleepDelayChanged) - int linePowerSleepDelay(); - void setLinePowerSleepDelay(int value); - Q_PROPERTY(int BatteryScreenBlackDelay READ batteryScreenBlackDelay WRITE setBatteryScreenBlackDelay NOTIFY BatteryScreenBlackDelayChanged) - int batteryScreenBlackDelay(); - void setBatteryScreenBlackDelay(int value); - Q_PROPERTY(int BatterySleepDelay READ batterySleepDelay WRITE setBatterySleepDelay NOTIFY BatterySleepDelayChanged) - int batterySleepDelay(); - void setBatterySleepDelay(int value); - Q_PROPERTY(int BatteryLockDelay READ batteryLockDelay WRITE setBatteryLockDelay NOTIFY BatteryLockDelayChanged) - int batteryLockDelay(); - void setBatteryLockDelay(int value); - Q_PROPERTY(int LinePowerLockDelay READ linePowerLockDelay WRITE setLinePowerLockDelay NOTIFY LinePowerLockDelayChanged) - int linePowerLockDelay(); - void setLinePowerLockDelay(int value); - // SystemPower - Q_PROPERTY(bool HasBattery READ hasBattery NOTIFY HasBatteryChanged) - bool hasBattery(); - Q_PROPERTY(bool PowerSavingModeAutoWhenBatteryLow READ powerSavingModeAutoWhenBatteryLow WRITE setPowerSavingModeAutoWhenBatteryLow NOTIFY PowerSavingModeAutoWhenBatteryLowChanged) - bool powerSavingModeAutoWhenBatteryLow(); - void setPowerSavingModeAutoWhenBatteryLow(bool value); - - Q_PROPERTY(uint PowerSavingModeBrightnessDropPercent READ powerSavingModeBrightnessDropPercent WRITE setPowerSavingModeBrightnessDropPercent NOTIFY PowerSavingModeBrightnessDropPercentChanged) - uint powerSavingModeBrightnessDropPercent(); - void setPowerSavingModeBrightnessDropPercent(uint value); - - Q_PROPERTY(uint PowerSavingModeAutoBatteryPercent READ powerSavingModeAutoBatteryPercent WRITE setPowerSavingModeAutoBatteryPercent NOTIFY PowerSavingModeAutoBatteryPercentChanged) - uint powerSavingModeAutoBatteryPercent(); - void setPowerSavingModeAutoBatteryPercent(uint value); - - Q_PROPERTY(QString Mode READ mode NOTIFY ModeChanged) - QString mode(); - Q_PROPERTY(bool PowerSavingModeAuto READ powerSavingModeAuto WRITE setPowerSavingModeAuto NOTIFY PowerSavingModeAutoChanged) - bool powerSavingModeAuto(); - void setPowerSavingModeAuto(bool value); - Q_PROPERTY(bool PowerSavingModeEnabled READ powerSavingModeEnabled WRITE setPowerSavingModeEnabled NOTIFY PowerSavingModeEnabledChanged) - bool powerSavingModeEnabled(); - void setPowerSavingModeEnabled(bool value); - Q_PROPERTY(double BatteryCapacity READ batteryCapacity NOTIFY BatteryCapacityChanged) - double batteryCapacity(); - Q_PROPERTY(int MaxBacklightBrightness READ batteryCapacity) - int maxBacklightBrightness(); - - // USER - Q_PROPERTY(bool NoPasswdLogin READ noPasswdLogin NOTIFY noPasswdLoginChanged) - bool noPasswdLogin(); - - std::optional findUserById(); - -signals: - // Power - void ScreenBlackLockChanged(bool value) const; - void SleepLockChanged(bool value) const; - void LidIsPresentChanged(bool value) const; - void LidClosedSleepChanged(bool value) const; - void LinePowerScreenBlackDelayChanged(int value) const; - void LinePowerSleepDelayChanged(int value) const; - void BatteryScreenBlackDelayChanged(int value) const; - void BatterySleepDelayChanged(int value) const; - void BatteryLockDelayChanged(int value) const; - void LinePowerLockDelayChanged(int value) const; - void IsHighPerformanceSupportedChanged(bool value) const; - void IsBalancePerformanceSupportedChanged(bool value) const; - void IsPowerSaveSupportedChanged(bool value) const; - void LinePowerPressPowerBtnActionChanged(int value) const; - void LinePowerLidClosedActionChanged(int value) const; - void BatteryPressPowerBtnActionChanged(int value) const; - void BatteryLidClosedActionChanged(int value) const; - void LowPowerNotifyEnableChanged(bool value) const; - void LowPowerNotifyThresholdChanged(int value) const; - void LowPowerAutoSleepThresholdChanged(int value) const; - // SystemPower - void PowerSavingModeAutoChanged(bool value) const; - void PowerSavingModeEnabledChanged(bool value) const; - void HasBatteryChanged(bool value) const; - void BatteryPercentageChanged(double value) const; - void PowerSavingModeAutoWhenBatteryLowChanged(bool value) const; - void PowerSavingModeBrightnessDropPercentChanged(uint value) const; - void PowerSavingModeAutoBatteryPercentChanged(uint value) const; - void ModeChanged(const QString &value) const; - void BatteryCapacityChanged(double value) const; - void noPasswdLoginChanged(bool value); - -public slots: - // SystemPower - void SetMode(const QString &mode); - // PowerManager - bool CanSuspend(); - bool CanHibernate(); - // login1Manager - bool login1ManagerCanSuspend(); - bool login1ManagerCanHibernate(); - -private: - DDBusInterface *m_accountRootInter; - DDBusInterface *m_currentAccountInter; - DDBusInterface *m_powerInter; - DDBusInterface *m_sysPowerInter; - DDBusInterface *m_login1ManagerInter; - DDBusInterface *m_upowerInter; -}; - -#endif // POWERDBUSPROXY_H diff --git a/dcc-old/src/plugin-power/operation/powermodel.cpp b/dcc-old/src/plugin-power/operation/powermodel.cpp deleted file mode 100644 index ffef2ece5a..0000000000 --- a/dcc-old/src/plugin-power/operation/powermodel.cpp +++ /dev/null @@ -1,375 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "powermodel.h" - -#include - -const double EPSINON = 1e-6; - -PowerModel::PowerModel(QObject *parent) - : QObject(parent) - , m_lidPresent(false) - , m_sleepOnLidOnPowerClose(false) - , m_sleepOnLidOnBatteryClose(false) - , m_screenBlackLock(false) - , m_sleepLock(false) - , m_canSuspend(true) - , m_canHibernate(false) - , m_screenBlackDelayOnPower(0) - , m_sleepDelayOnPower(0) - , m_screenBlackDelayOnBattery(0) - , m_sleepDelayOnBattery(0) - , m_haveBettary(false) - , m_batteryLockScreenDelay(0) - , m_powerLockScreenDelay(0) - , m_batteryPercentage(0.0) - , m_bPowerSavingModeAutoWhenQuantifyLow(0) - , m_bPowerSavingModeAuto(false) - , m_dPowerSavingModeLowerBrightnessThreshold(0) - , m_dPowerSavingModeAutoBatteryPercentage(0) - , m_nLinePowerPressPowerBtnAction(0) - , m_nLinePowerLidClosedAction(0) - , m_nBatteryPressPowerBtnAction(0) - , m_nBatteryLidClosedAction(0) - , m_bLowPowerNotifyEnable(false) - , m_dLowPowerNotifyThreshold(0) - , m_dLowPowerAutoSleepThreshold(0) - , m_isSuspend(false) - , m_isHibernate(false) - , m_isShutdown(false) - , m_powerPlan("") - , m_isHighPerformanceSupported(false) - , m_isBalancePerformanceSupported(false) - , m_isPowerSaveSupported(true) -{ -} - -void PowerModel::setScreenBlackLock(const bool lock) -{ - if (lock != m_screenBlackLock) { - m_screenBlackLock = lock; - - Q_EMIT screenBlackLockChanged(lock); - } -} - -void PowerModel::setLidPresent(bool lidPresent) -{ - if (lidPresent != m_lidPresent) { - m_lidPresent = lidPresent; - - Q_EMIT lidPresentChanged(lidPresent); - } -} - -void PowerModel::setScreenBlackDelayOnPower(const int screenBlackDelayOnPower) -{ - if (screenBlackDelayOnPower != m_screenBlackDelayOnPower) { - m_screenBlackDelayOnPower = screenBlackDelayOnPower; - - Q_EMIT screenBlackDelayChangedOnPower(screenBlackDelayOnPower); - } -} - -void PowerModel::setSleepDelayOnPower(const int sleepDelayOnPower) -{ - if (sleepDelayOnPower != m_sleepDelayOnPower) { - m_sleepDelayOnPower = sleepDelayOnPower; - - Q_EMIT sleepDelayChangedOnPower(sleepDelayOnPower); - } -} - -void PowerModel::setScreenBlackDelayOnBattery(const int screenBlackDelayOnBattery) -{ - if (screenBlackDelayOnBattery != m_screenBlackDelayOnBattery) { - m_screenBlackDelayOnBattery = screenBlackDelayOnBattery; - - Q_EMIT screenBlackDelayChangedOnBattery(screenBlackDelayOnBattery); - } -} - -void PowerModel::setSleepDelayOnBattery(const int sleepDelayOnBattery) -{ - if (sleepDelayOnBattery != m_sleepDelayOnBattery) { - m_sleepDelayOnBattery = sleepDelayOnBattery; - - Q_EMIT sleepDelayChangedOnBattery(sleepDelayOnBattery); - } -} - -void PowerModel::setSleepOnLidOnPowerClose(bool sleepOnLidClose) -{ - if (sleepOnLidClose != m_sleepOnLidOnPowerClose) { - m_sleepOnLidOnPowerClose = sleepOnLidClose; - - Q_EMIT sleepOnLidOnPowerCloseChanged(sleepOnLidClose); - } -} - -void PowerModel::setSleepOnLidOnBatteryClose(bool sleepOnLidOnBatteryClose) -{ - if (sleepOnLidOnBatteryClose != m_sleepOnLidOnBatteryClose) { - m_sleepOnLidOnBatteryClose = sleepOnLidOnBatteryClose; - - Q_EMIT sleepOnLidOnBatteryCloseChanged(sleepOnLidOnBatteryClose); - } -} - -void PowerModel::setBatteryLockScreenDelay(const int value) -{ - if (value != m_batteryLockScreenDelay) { - m_batteryLockScreenDelay = value; - - Q_EMIT batteryLockScreenDelayChanged(value); - } -} - -void PowerModel::setPowerLockScreenDelay(const int value) -{ - if (value != m_powerLockScreenDelay) { - m_powerLockScreenDelay = value; - - Q_EMIT powerLockScreenDelayChanged(value); - } -} - -void PowerModel::setAutoPowerSaveMode(bool autoPowerSavingMode) -{ - if (m_autoPowerSaveMode == autoPowerSavingMode) - return; - - m_autoPowerSaveMode = autoPowerSavingMode; - - Q_EMIT autoPowerSavingModeChanged(autoPowerSavingMode); -} - -void PowerModel::setPowerSaveMode(bool powerSaveMode) -{ - if (m_powerSaveMode == powerSaveMode) - return; - - m_powerSaveMode = powerSaveMode; - - Q_EMIT powerSaveModeChanged(powerSaveMode); -} - -void PowerModel::setHaveBettary(bool haveBettary) -{ - if (haveBettary == m_haveBettary) - return; - - m_haveBettary = haveBettary; - - Q_EMIT haveBettaryChanged(haveBettary); -} - -void PowerModel::setBatteryPercentage(double batteryPercentage) -{ - if (!getDoubleCompare(batteryPercentage, m_batteryPercentage)) - return; - - m_batteryPercentage = batteryPercentage; - - Q_EMIT batteryPercentageChanged(batteryPercentage); -} - -bool PowerModel::getDoubleCompare(const double value1, const double value2) -{ - return ((value1 - value2 >= -EPSINON) && (value1 - value2 <= EPSINON)); -} - -void PowerModel::setPowerSavingModeAutoWhenQuantifyLow(bool bLowBatteryAutoIntoSaveEnergyMode) -{ - if (bLowBatteryAutoIntoSaveEnergyMode != m_bPowerSavingModeAutoWhenQuantifyLow) { - m_bPowerSavingModeAutoWhenQuantifyLow = bLowBatteryAutoIntoSaveEnergyMode; - - Q_EMIT powerSavingModeAutoWhenQuantifyLowChanged(bLowBatteryAutoIntoSaveEnergyMode); - } -} - -void PowerModel::setPowerSavingModeAuto(bool bAutoIntoSaveEnergyMode) -{ - if (bAutoIntoSaveEnergyMode != m_bPowerSavingModeAuto) { - m_bPowerSavingModeAuto = bAutoIntoSaveEnergyMode; - - Q_EMIT powerSavingModeAutoChanged(bAutoIntoSaveEnergyMode); - } -} - -void PowerModel::setPowerSavingModeLowerBrightnessThreshold(uint dPowerSavingModeLowerBrightnessThreshold) -{ - if (dPowerSavingModeLowerBrightnessThreshold != m_dPowerSavingModeLowerBrightnessThreshold) { - m_dPowerSavingModeLowerBrightnessThreshold = dPowerSavingModeLowerBrightnessThreshold; - - Q_EMIT powerSavingModeLowerBrightnessThresholdChanged(dPowerSavingModeLowerBrightnessThreshold); - } -} - -void PowerModel::setPowerSavingModeAutoBatteryPercentage(uint dPowerSavingModeAutoBatteryPercentage) -{ - if (dPowerSavingModeAutoBatteryPercentage != m_dPowerSavingModeAutoBatteryPercentage) { - m_dPowerSavingModeAutoBatteryPercentage = dPowerSavingModeAutoBatteryPercentage; - - Q_EMIT powerSavingModeAutoBatteryPercentageChanged(dPowerSavingModeAutoBatteryPercentage); - } -} - -void PowerModel::setLinePowerPressPowerBtnAction(int nLinePowerPressPowerBtnAction) -{ - if (nLinePowerPressPowerBtnAction != m_nLinePowerPressPowerBtnAction) { - m_nLinePowerPressPowerBtnAction = nLinePowerPressPowerBtnAction; - - Q_EMIT linePowerPressPowerBtnActionChanged(nLinePowerPressPowerBtnAction); - } -} - -void PowerModel::setLinePowerLidClosedAction(int nLinePowerLidClosedAction) -{ - if (nLinePowerLidClosedAction != m_nLinePowerLidClosedAction) { - m_nLinePowerLidClosedAction = nLinePowerLidClosedAction; - - Q_EMIT linePowerLidClosedActionChanged(nLinePowerLidClosedAction); - } -} - -void PowerModel::setBatteryPressPowerBtnAction(int nBatteryPressPowerBtnAction) -{ - if (nBatteryPressPowerBtnAction != m_nBatteryPressPowerBtnAction) { - m_nBatteryPressPowerBtnAction = nBatteryPressPowerBtnAction; - - Q_EMIT batteryPressPowerBtnActionChanged(nBatteryPressPowerBtnAction); - } -} - -void PowerModel::setBatteryLidClosedAction(int nBatteryLidClosedAction) -{ - if (nBatteryLidClosedAction != m_nBatteryLidClosedAction) { - m_nBatteryLidClosedAction = nBatteryLidClosedAction; - - Q_EMIT batteryLidClosedActionChanged(nBatteryLidClosedAction); - } -} - -void PowerModel::setLowPowerNotifyEnable(bool bLowPowerNotifyEnable) -{ - if (bLowPowerNotifyEnable != m_bLowPowerNotifyEnable) { - m_bLowPowerNotifyEnable = bLowPowerNotifyEnable; - - Q_EMIT lowPowerNotifyEnableChanged(bLowPowerNotifyEnable); - } -} - -void PowerModel::setLowPowerNotifyThreshold(int dLowPowerNotifyThreshold) -{ - if (dLowPowerNotifyThreshold != m_dLowPowerNotifyThreshold) { - m_dLowPowerNotifyThreshold = dLowPowerNotifyThreshold; - - Q_EMIT lowPowerNotifyThresholdChanged(dLowPowerNotifyThreshold); - } -} - -void PowerModel::setLowPowerAutoSleepThreshold(int dLowPowerAutoSleepThreshold) -{ - if (dLowPowerAutoSleepThreshold != m_dLowPowerAutoSleepThreshold) { - m_dLowPowerAutoSleepThreshold = dLowPowerAutoSleepThreshold; - - Q_EMIT lowPowerAutoSleepThresholdChanged(dLowPowerAutoSleepThreshold); - } -} - -void PowerModel::setSleepLock(bool sleepLock) -{ - if (sleepLock != m_sleepLock) { - m_sleepLock = sleepLock; - - Q_EMIT sleepLockChanged(sleepLock); - } -} - -void PowerModel::setCanSuspend(bool canSuspend) -{ - if (canSuspend != m_canSuspend) { - m_canSuspend = canSuspend; - - Q_EMIT suspendChanged(canSuspend); - } -} - -void PowerModel::setCanHibernate(bool value) -{ - if (m_canHibernate != value) { - m_canHibernate = value; - - Q_EMIT canHibernateChanged(value); - } -} - -void PowerModel::setPowerPlan(const QString &powerPlan) -{ - if (m_powerPlan != powerPlan) { - m_powerPlan = powerPlan; - - Q_EMIT powerPlanChanged(m_powerPlan); - } -} - -void PowerModel::setHighPerformanceSupported(bool isHighSupport) -{ - if (m_isHighPerformanceSupported == isHighSupport) - return; - m_isHighPerformanceSupported = isHighSupport; - Q_EMIT highPerformaceSupportChanged(isHighSupport); -} - -void PowerModel::setBalancePerformanceSupported(bool isBalancePerformanceSupported) -{ - if (m_isBalancePerformanceSupported == isBalancePerformanceSupported) - return; - m_isBalancePerformanceSupported = isBalancePerformanceSupported; - Q_EMIT highPerformaceSupportChanged(isBalancePerformanceSupported); -} - -void PowerModel::setPowerSaveSupported(bool isPowerSaveSupported) -{ - if (m_isPowerSaveSupported == isPowerSaveSupported) - return; - m_isPowerSaveSupported = isPowerSaveSupported; - Q_EMIT powerSaveSupportChanged(isPowerSaveSupported); -} - -void PowerModel::setSuspend(bool suspend) -{ - if (suspend == m_isSuspend) - return; - m_isSuspend = suspend; - Q_EMIT suspendChanged(suspend); -} - -void PowerModel::setHibernate(bool hibernate) -{ - if (m_isHibernate != hibernate) { - m_isHibernate = hibernate; - - Q_EMIT hibernateChanged(hibernate); - } -} - -void PowerModel::setShutdown(bool shutdown) -{ - if (m_isShutdown != shutdown) { - m_isShutdown = shutdown; - - Q_EMIT shutdownChanged(shutdown); - } -} - -void PowerModel::setNoPasswdLogin(bool value) -{ - if (value != m_noPasswdLogin) { - m_noPasswdLogin = value; - - Q_EMIT noPasswdLoginChanged(value); - } -} diff --git a/dcc-old/src/plugin-power/operation/powermodel.h b/dcc-old/src/plugin-power/operation/powermodel.h deleted file mode 100644 index 5af84ce58e..0000000000 --- a/dcc-old/src/plugin-power/operation/powermodel.h +++ /dev/null @@ -1,227 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef POWERMODEL_H -#define POWERMODEL_H - -#include - -class PowerWorker; -class PowerModel : public QObject -{ - Q_OBJECT - - friend class PowerWorker; - -public: - explicit PowerModel(QObject *parent = 0); - - inline bool screenBlackLock() const { return m_screenBlackLock; } - void setScreenBlackLock(const bool lock); - - inline bool sleepLock() const { return m_sleepLock; } - void setSleepLock(bool sleepLock); - - inline bool canSuspend() const { return m_canSuspend; } - void setCanSuspend(bool canSuspend); - - inline bool lidPresent() const { return m_lidPresent; } - void setLidPresent(bool lidPresent); - - inline int screenBlackDelayOnPower() const { return m_screenBlackDelayOnPower; } - void setScreenBlackDelayOnPower(const int screenBlackDelayOnPower); - - inline int sleepDelayOnPower() const { return m_sleepDelayOnPower; } - void setSleepDelayOnPower(const int sleepDelayOnPower); - - inline int screenBlackDelayOnBattery() const { return m_screenBlackDelayOnBattery; } - void setScreenBlackDelayOnBattery(const int screenBlackDelayOnBattery); - - inline int sleepDelayOnBattery() const { return m_sleepDelayOnBattery; } - void setSleepDelayOnBattery(const int sleepDelayOnBattery); - - inline bool sleepOnLidOnPowerClose() const { return m_sleepOnLidOnPowerClose; } - void setSleepOnLidOnPowerClose(bool sleepOnLidClose); - - inline bool sleepOnLidOnBatteryClose() const { return m_sleepOnLidOnBatteryClose; } - void setSleepOnLidOnBatteryClose(bool sleepOnLidOnBatteryClose); - - inline int getBatteryLockScreenDelay() const { return m_batteryLockScreenDelay; } - void setBatteryLockScreenDelay(const int value); - - inline int getPowerLockScreenDelay() const { return m_powerLockScreenDelay; } - void setPowerLockScreenDelay(const int value); - - inline bool autoPowerSaveMode() const - { - return m_autoPowerSaveMode; - } - void setAutoPowerSaveMode(bool autoPowerSavingMode); - - inline bool powerSaveMode() const { return m_powerSaveMode; } - void setPowerSaveMode(bool powerSaveMode); - - inline bool haveBettary() const - { - return m_haveBettary; - } - void setHaveBettary(bool haveBettary); - void setBatteryPercentage(double batteryPercentage); - - bool getDoubleCompare(const double value1, const double value2); - - //--------------sp2 add--------------------------- - inline bool powerSavingModeAutoWhenQuantifyLow() const { return m_bPowerSavingModeAutoWhenQuantifyLow; } - void setPowerSavingModeAutoWhenQuantifyLow(bool bLowBatteryAutoIntoSaveEnergyMode); - - inline bool powerSavingModeAuto() const { return m_bPowerSavingModeAuto; } - void setPowerSavingModeAuto(bool bAutoIntoSaveEnergyMode); - - inline int powerSavingModeLowerBrightnessThreshold() const { return m_dPowerSavingModeLowerBrightnessThreshold; } - void setPowerSavingModeLowerBrightnessThreshold(uint dPowerSavingModeLowerBrightnessThreshold); - - inline int powerSavingModeAutoBatteryPercentage() const { return m_dPowerSavingModeAutoBatteryPercentage; } - void setPowerSavingModeAutoBatteryPercentage(uint dPowerSavingModeAutoBatteryPercentage); - - inline int linePowerPressPowerBtnAction() const { return m_nLinePowerPressPowerBtnAction; } - void setLinePowerPressPowerBtnAction(int nLinePowerPressPowerBtnAction); - - inline int linePowerLidClosedAction() const { return m_nLinePowerLidClosedAction; } - void setLinePowerLidClosedAction(int nLinePowerLidClosedAction); - - inline int batteryPressPowerBtnAction() const { return m_nBatteryPressPowerBtnAction; } - void setBatteryPressPowerBtnAction(int nBatteryPressPowerBtnAction); - - inline int batteryLidClosedAction() const { return m_nBatteryLidClosedAction; } - void setBatteryLidClosedAction(int nBatteryLidClosedAction); - - inline bool lowPowerNotifyEnable() const { return m_bLowPowerNotifyEnable; } - void setLowPowerNotifyEnable(bool bLowPowerNotifyEnable); - - inline int lowPowerNotifyThreshold() const { return m_dLowPowerNotifyThreshold; } - void setLowPowerNotifyThreshold(int dLowPowerNotifyThreshold); - - inline int lowPowerAutoSleepThreshold() const { return m_dLowPowerAutoSleepThreshold; } - void setLowPowerAutoSleepThreshold(int dLowPowerAutoSleepThreshold); - - //----------------------------------------------- - inline bool getSuspend() const { return m_isSuspend; } - void setSuspend(bool suspend); - - inline bool canHibernate() const { return m_canHibernate; } - void setCanHibernate(bool value); - - inline bool getHibernate() const { return m_isHibernate; } - void setHibernate(bool hibernate); - - inline bool getShutdown() const { return m_isShutdown; } - void setShutdown(bool shutdown); - - inline QString getPowerPlan() const { return m_powerPlan; } - void setPowerPlan(const QString &powerPlan); - - inline bool isHighPerformanceSupported() const { return m_isHighPerformanceSupported; } - void setHighPerformanceSupported(bool isHighSupport); - - inline bool isBalancePerformanceSupported() const { return m_isBalancePerformanceSupported; } - void setBalancePerformanceSupported(bool isBalancePerformanceSupported); - - inline bool isPowerSaveSupported() const { return m_isPowerSaveSupported; } - void setPowerSaveSupported(bool isPowerSaveSupported); - // ---- - inline bool isNoPasswdLogin() const { return m_noPasswdLogin; } - - void setNoPasswdLogin(bool value); - - -Q_SIGNALS: - void sleepLockChanged(const bool sleepLock); - void canSleepChanged(const bool canSleep); - void screenBlackLockChanged(const bool screenBlackLock); - void lidPresentChanged(const bool lidPresent); - void sleepOnLidOnPowerCloseChanged(const bool sleepOnLidClose); - void sleepOnLidOnBatteryCloseChanged(const bool sleepOnLidClose); - void screenBlackDelayChangedOnPower(const int screenBlackDelay); - void sleepDelayChangedOnPower(const int sleepDelay); - void screenBlackDelayChangedOnBattery(const int screenBlackDelay); - void sleepDelayChangedOnBattery(const int sleepDelay); - void canHibernateChanged(const bool canHibernate); - void hibernateChanged(const bool hibernate); - void shutdownChanged(const bool shutdown); - - void autoPowerSavingModeChanged(bool autoPowerSaveMode); - void powerSaveModeChanged(bool powerSaveMode); - - void haveBettaryChanged(bool haveBettary); - void batteryLockScreenDelayChanged(const int batteryLockScreenTime); - void powerLockScreenDelayChanged(const int powerLockScreenTime); - void batteryPercentageChanged(double batteryPercentage); - //------------------------sp2 add------------------------------- - void powerSavingModeAutoWhenQuantifyLowChanged(const bool state); - void powerSavingModeAutoChanged(const bool state); - void powerSavingModeLowerBrightnessThresholdChanged(const uint level); - void powerSavingModeAutoBatteryPercentageChanged(const uint level); - //electric - void linePowerPressPowerBtnActionChanged(const int reply); - void linePowerLidClosedActionChanged(const int reply); - //battery - void batteryPressPowerBtnActionChanged(const int reply); - void batteryLidClosedActionChanged(const int reply); - void lowPowerNotifyEnableChanged(const bool state); - void lowPowerNotifyThresholdChanged(const int value); - void lowPowerAutoSleepThresholdChanged(const int value); - //-------------------------------------------------------------- - void suspendChanged(bool suspendState); - void powerPlanChanged(const QString &value); - void highPerformaceSupportChanged(bool value); - void powerSaveSupportChanged(bool value); - - void noPasswdLoginChanged(bool value); - -private: - bool m_lidPresent; //以此判断是否为笔记本 - bool m_sleepOnLidOnPowerClose; - bool m_sleepOnLidOnBatteryClose; - bool m_screenBlackLock; - bool m_sleepLock; - bool m_canSuspend; - bool m_canHibernate; - int m_screenBlackDelayOnPower; - int m_sleepDelayOnPower; - int m_screenBlackDelayOnBattery; - int m_sleepDelayOnBattery; - - bool m_autoPowerSaveMode { false }; - bool m_powerSaveMode { false }; - - bool m_haveBettary; - int m_batteryLockScreenDelay; - int m_powerLockScreenDelay; - double m_batteryPercentage; - //---------------sp2 add------------------ - bool m_bPowerSavingModeAutoWhenQuantifyLow; - bool m_bPowerSavingModeAuto; - uint m_dPowerSavingModeLowerBrightnessThreshold; - uint m_dPowerSavingModeAutoBatteryPercentage; - int m_nLinePowerPressPowerBtnAction; - int m_nLinePowerLidClosedAction; - int m_nBatteryPressPowerBtnAction; - int m_nBatteryLidClosedAction; - bool m_bLowPowerNotifyEnable; - int m_dLowPowerNotifyThreshold; - int m_dLowPowerAutoSleepThreshold; - //-------------------------------------- - bool m_isSuspend; - bool m_isHibernate; - bool m_isShutdown; - - QString m_powerPlan; - bool m_isHighPerformanceSupported; - bool m_isBalancePerformanceSupported; - bool m_isPowerSaveSupported; - - // Account - bool m_noPasswdLogin; -}; - -#endif // POWERMODEL_H diff --git a/dcc-old/src/plugin-power/operation/powerworker.cpp b/dcc-old/src/plugin-power/operation/powerworker.cpp deleted file mode 100644 index b249b6e7b9..0000000000 --- a/dcc-old/src/plugin-power/operation/powerworker.cpp +++ /dev/null @@ -1,368 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "powerworker.h" -#include "powermodel.h" -#include "widgets/utils.h" - -#include -#include -#include - -#define POWER_CAN_SLEEP "POWER_CAN_SLEEP" -#define POWER_CAN_HIBERNATE "POWER_CAN_HIBERNATE" - -static const QStringList DCC_CONFIG_FILES { - "/etc/deepin/dde-control-center.conf", - "/usr/share/dde-control-center/dde-control-center.conf" -}; - -PowerWorker::PowerWorker(PowerModel *model, QObject *parent) - : QObject(parent) - , m_powerModel(model) - , m_powerDBusProxy(new PowerDBusProxy(this)) -{ - connect(m_powerDBusProxy, &PowerDBusProxy::noPasswdLoginChanged, m_powerModel, &PowerModel::setNoPasswdLogin); - connect(m_powerDBusProxy, &PowerDBusProxy::ScreenBlackLockChanged, m_powerModel, &PowerModel::setScreenBlackLock); - connect(m_powerDBusProxy, &PowerDBusProxy::SleepLockChanged, m_powerModel, &PowerModel::setSleepLock); - connect(m_powerDBusProxy, &PowerDBusProxy::LidIsPresentChanged, m_powerModel, &PowerModel::setLidPresent); - connect(m_powerDBusProxy, &PowerDBusProxy::LidClosedSleepChanged, m_powerModel, &PowerModel::setSleepOnLidOnPowerClose); - connect(m_powerDBusProxy, &PowerDBusProxy::LinePowerScreenBlackDelayChanged, this, &PowerWorker::setScreenBlackDelayToModelOnPower); - connect(m_powerDBusProxy, &PowerDBusProxy::LinePowerSleepDelayChanged, this, &PowerWorker::setSleepDelayToModelOnPower); - connect(m_powerDBusProxy, &PowerDBusProxy::BatteryScreenBlackDelayChanged, this, &PowerWorker::setScreenBlackDelayToModelOnBattery); - connect(m_powerDBusProxy, &PowerDBusProxy::BatterySleepDelayChanged, this, &PowerWorker::setSleepDelayToModelOnBattery); - connect(m_powerDBusProxy, &PowerDBusProxy::BatteryLockDelayChanged, this, &PowerWorker::setResponseBatteryLockScreenDelay); - connect(m_powerDBusProxy, &PowerDBusProxy::LinePowerLockDelayChanged, this, &PowerWorker::setResponsePowerLockScreenDelay); - connect(m_powerDBusProxy, &PowerDBusProxy::IsHighPerformanceSupportedChanged, this, &PowerWorker::setHighPerformanceSupported); - connect(m_powerDBusProxy, &PowerDBusProxy::IsPowerSaveSupportedChanged, this, &PowerWorker::setPowerSaveSupported); - - connect(m_powerDBusProxy, &PowerDBusProxy::PowerSavingModeAutoChanged, m_powerModel, &PowerModel::setAutoPowerSaveMode); - connect(m_powerDBusProxy, &PowerDBusProxy::PowerSavingModeEnabledChanged, m_powerModel, &PowerModel::setPowerSaveMode); - - connect(m_powerDBusProxy, &PowerDBusProxy::HasBatteryChanged, m_powerModel, &PowerModel::setHaveBettary); - connect(m_powerDBusProxy, &PowerDBusProxy::BatteryPercentageChanged, m_powerModel, &PowerModel::setBatteryPercentage); - - //--------------------sp2 add---------------------------- - connect(m_powerDBusProxy, &PowerDBusProxy::PowerSavingModeAutoWhenBatteryLowChanged, m_powerModel, &PowerModel::setPowerSavingModeAutoWhenQuantifyLow); - connect(m_powerDBusProxy, &PowerDBusProxy::PowerSavingModeAutoChanged, m_powerModel, &PowerModel::setPowerSavingModeAuto); - connect(m_powerDBusProxy, &PowerDBusProxy::PowerSavingModeBrightnessDropPercentChanged, m_powerModel, &PowerModel::setPowerSavingModeLowerBrightnessThreshold); - connect(m_powerDBusProxy, &PowerDBusProxy::PowerSavingModeAutoBatteryPercentChanged, m_powerModel, &PowerModel::setPowerSavingModeAutoBatteryPercentage); - connect(m_powerDBusProxy, &PowerDBusProxy::LinePowerPressPowerBtnActionChanged, m_powerModel, &PowerModel::setLinePowerPressPowerBtnAction); - connect(m_powerDBusProxy, &PowerDBusProxy::LinePowerLidClosedActionChanged, m_powerModel, &PowerModel::setLinePowerLidClosedAction); - connect(m_powerDBusProxy, &PowerDBusProxy::BatteryPressPowerBtnActionChanged, m_powerModel, &PowerModel::setBatteryPressPowerBtnAction); - connect(m_powerDBusProxy, &PowerDBusProxy::BatteryLidClosedActionChanged, m_powerModel, &PowerModel::setBatteryLidClosedAction); - connect(m_powerDBusProxy, &PowerDBusProxy::LowPowerNotifyEnableChanged, m_powerModel, &PowerModel::setLowPowerNotifyEnable); - connect(m_powerDBusProxy, &PowerDBusProxy::LowPowerNotifyThresholdChanged, m_powerModel, &PowerModel::setLowPowerNotifyThreshold); - connect(m_powerDBusProxy, &PowerDBusProxy::LowPowerAutoSleepThresholdChanged, m_powerModel, &PowerModel::setLowPowerAutoSleepThreshold); - //------------------------------------------------------- - connect(m_powerDBusProxy, &PowerDBusProxy::ModeChanged, m_powerModel, &PowerModel::setPowerPlan); - - // init base property - m_powerModel->setHaveBettary(m_powerDBusProxy->hasBattery()); -} - -void PowerWorker::active() -{ - m_powerDBusProxy->blockSignals(false); - - // refersh data - m_powerModel->setScreenBlackLock(m_powerDBusProxy->screenBlackLock()); - m_powerModel->setSleepLock(m_powerDBusProxy->sleepLock()); - m_powerModel->setLidPresent(m_powerDBusProxy->lidIsPresent()); - m_powerModel->setSleepOnLidOnPowerClose(m_powerDBusProxy->lidClosedSleep()); - m_powerModel->setHaveBettary(m_powerDBusProxy->hasBattery()); - m_powerModel->setPowerSavingModeAutoWhenQuantifyLow(m_powerDBusProxy->powerSavingModeAutoWhenBatteryLow()); - m_powerModel->setPowerSavingModeAutoBatteryPercentage(m_powerDBusProxy->powerSavingModeAutoBatteryPercent()); - m_powerModel->setPowerSavingModeLowerBrightnessThreshold(m_powerDBusProxy->powerSavingModeBrightnessDropPercent()); - m_powerModel->setLowPowerNotifyEnable(m_powerDBusProxy->lowPowerNotifyEnable()); - m_powerModel->setLowPowerAutoSleepThreshold(m_powerDBusProxy->lowPowerAutoSleepThreshold()); - m_powerModel->setLowPowerNotifyThreshold(m_powerDBusProxy->lowPowerNotifyThreshold()); - m_powerModel->setLinePowerPressPowerBtnAction(m_powerDBusProxy->linePowerPressPowerBtnAction()); - m_powerModel->setLinePowerLidClosedAction(m_powerDBusProxy->linePowerLidClosedAction()); - m_powerModel->setBatteryPressPowerBtnAction(m_powerDBusProxy->batteryPressPowerBtnAction()); - m_powerModel->setBatteryLidClosedAction(m_powerDBusProxy->batteryLidClosedAction()); - m_powerModel->setPowerPlan(m_powerDBusProxy->mode()); - - m_powerModel->setNoPasswdLogin(m_powerDBusProxy->noPasswdLogin()); - - setHighPerformanceSupported(m_powerDBusProxy->isHighPerformanceSupported()); - setBalancePerformanceSupported(m_powerDBusProxy->isBalancePerformanceSupported()); - setPowerSaveSupported(m_powerDBusProxy->isPowerSaveSupported()); - - setScreenBlackDelayToModelOnPower(m_powerDBusProxy->linePowerScreenBlackDelay()); - setSleepDelayToModelOnPower(m_powerDBusProxy->linePowerSleepDelay()); - - setScreenBlackDelayToModelOnBattery(m_powerDBusProxy->batteryScreenBlackDelay()); - setSleepDelayToModelOnBattery(m_powerDBusProxy->batterySleepDelay()); - - setResponseBatteryLockScreenDelay(m_powerDBusProxy->batteryLockDelay()); - setResponsePowerLockScreenDelay(m_powerDBusProxy->linePowerLockDelay()); - - m_powerModel->setAutoPowerSaveMode(m_powerDBusProxy->powerSavingModeAuto()); - m_powerModel->setPowerSaveMode(m_powerDBusProxy->powerSavingModeEnabled()); - - QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); - const bool confVal = valueByQSettings(DCC_CONFIG_FILES, "Power", "sleep", true); - const bool envVal = QVariant(env.value(POWER_CAN_SLEEP)).toBool(); - const bool envVal_hibernate = QVariant(env.value(POWER_CAN_HIBERNATE)).toBool(); - - QFutureWatcher *canSleepWatcher = new QFutureWatcher(); - connect(canSleepWatcher, &QFutureWatcher::finished, this, [=] { - bool canSuspend = canSleepWatcher->result(); - bool can_suspend = env.contains(POWER_CAN_SLEEP) ? envVal : confVal && canSuspend; - m_powerModel->setCanSuspend(can_suspend); - canSleepWatcher->deleteLater(); - }); - - QFutureWatcher *canHibernateWatcher = new QFutureWatcher(); - connect(canHibernateWatcher, &QFutureWatcher::finished, this, [=] { - bool canHibernate = canHibernateWatcher->result(); - bool can_hibernate = env.contains(POWER_CAN_HIBERNATE) - ? envVal_hibernate - : canHibernate; - m_powerModel->setCanHibernate(can_hibernate); - canHibernateWatcher->deleteLater(); - }); - - canSleepWatcher->setFuture(QtConcurrent::run([=] { - return m_powerDBusProxy->login1ManagerCanSuspend(); - })); - - canHibernateWatcher->setFuture(QtConcurrent::run([=] { - return m_powerDBusProxy->login1ManagerCanHibernate(); - })); -} - -void PowerWorker::deactive() -{ - m_powerDBusProxy->blockSignals(true); -} - -void PowerWorker::setScreenBlackLock(const bool lock) -{ - m_powerDBusProxy->setScreenBlackLock(lock); -} - -void PowerWorker::setSleepLock(const bool lock) -{ - m_powerDBusProxy->setSleepLock(lock); -} - -void PowerWorker::setSleepOnLidOnPowerClosed(const bool sleep) -{ - m_powerDBusProxy->setLidClosedSleep(sleep); -} - -void PowerWorker::setSleepDelayOnPower(const int delay) -{ - qDebug() << "m_powerDBusProxy->setLinePowerSleepDelay: " << converToDelayDBus(delay); - m_powerDBusProxy->setLinePowerSleepDelay(converToDelayDBus(delay)); -} - -void PowerWorker::setSleepDelayOnBattery(const int delay) -{ - qDebug() << "m_powerDBusProxy->setBatterySleepDelay: " << converToDelayDBus(delay); - m_powerDBusProxy->setBatterySleepDelay(converToDelayDBus(delay)); -} - -void PowerWorker::setScreenBlackDelayOnPower(const int delay) -{ - qDebug() << "m_powerDBusProxy->setLinePowerScreenBlackDelay: " << converToDelayDBus(delay); - m_powerDBusProxy->setLinePowerScreenBlackDelay(converToDelayDBus(delay)); -} - -void PowerWorker::setScreenBlackDelayOnBattery(const int delay) -{ - qDebug() << "m_powerDBusProxy->setBatteryScreenBlackDelay: " << converToDelayDBus(delay); - m_powerDBusProxy->setBatteryScreenBlackDelay(converToDelayDBus(delay)); -} - -void PowerWorker::setSleepDelayToModelOnPower(const int delay) -{ - m_powerModel->setSleepDelayOnPower(converToDelayModel(delay)); -} - -void PowerWorker::setScreenBlackDelayToModelOnPower(const int delay) -{ - m_powerModel->setScreenBlackDelayOnPower(converToDelayModel(delay)); -} - -void PowerWorker::setSleepDelayToModelOnBattery(const int delay) -{ - m_powerModel->setSleepDelayOnBattery(converToDelayModel(delay)); -} - -void PowerWorker::setResponseBatteryLockScreenDelay(const int delay) -{ - m_powerModel->setBatteryLockScreenDelay(converToDelayModel(delay)); -} - -void PowerWorker::setResponsePowerLockScreenDelay(const int delay) -{ - m_powerModel->setPowerLockScreenDelay(converToDelayModel(delay)); -} - -void PowerWorker::setHighPerformanceSupported(bool state) -{ - m_powerModel->setHighPerformanceSupported(state); -} - -void PowerWorker::setBalancePerformanceSupported(bool state) -{ - m_powerModel->setBalancePerformanceSupported(state); -} - -void PowerWorker::setPowerSaveSupported(bool state) -{ - m_powerModel->setPowerSaveSupported(state); -} - -void PowerWorker::setPowerSavingModeAutoWhenQuantifyLow(bool bLowBatteryAutoIntoSaveEnergyMode) -{ - m_powerDBusProxy->setPowerSavingModeAutoWhenBatteryLow(bLowBatteryAutoIntoSaveEnergyMode); -} - -void PowerWorker::setPowerSavingModeAuto(bool bAutoIntoSaveEnergyMode) -{ - m_powerDBusProxy->setPowerSavingModeAuto(bAutoIntoSaveEnergyMode); -} - -void PowerWorker::setPowerSavingModeLowerBrightnessThreshold(uint dPowerSavingModeLowerBrightnessThreshold) -{ - m_powerDBusProxy->setPowerSavingModeBrightnessDropPercent(dPowerSavingModeLowerBrightnessThreshold); -} - -void PowerWorker::setPowerSavingModeAutoBatteryPercentage(uint dPowerSavingModeBatteryPercentage) -{ - m_powerDBusProxy->setPowerSavingModeAutoBatteryPercent(dPowerSavingModeBatteryPercentage); -} - -void PowerWorker::setLinePowerPressPowerBtnAction(int nLinePowerPressPowerBtnAction) -{ - m_powerDBusProxy->setLinePowerPressPowerBtnAction(nLinePowerPressPowerBtnAction); -} - -void PowerWorker::setLinePowerLidClosedAction(int nLinePowerLidClosedAction) -{ - m_powerDBusProxy->setLinePowerLidClosedAction(nLinePowerLidClosedAction); -} - -void PowerWorker::setBatteryPressPowerBtnAction(int nBatteryPressPowerBtnAction) -{ - m_powerDBusProxy->setBatteryPressPowerBtnAction(nBatteryPressPowerBtnAction); -} - -void PowerWorker::setBatteryLidClosedAction(int nBatteryLidClosedAction) -{ - m_powerDBusProxy->setBatteryLidClosedAction(nBatteryLidClosedAction); -} - -void PowerWorker::setLowPowerNotifyEnable(bool bLowPowerNotifyEnable) -{ - m_powerDBusProxy->setLowPowerNotifyEnable(bLowPowerNotifyEnable); -} - -void PowerWorker::setLowPowerNotifyThreshold(int dLowPowerNotifyThreshold) -{ - m_powerDBusProxy->setLowPowerNotifyThreshold(dLowPowerNotifyThreshold); -} - -void PowerWorker::setLowPowerAutoSleepThreshold(int dLowPowerAutoSleepThreshold) -{ - m_powerDBusProxy->setLowPowerAutoSleepThreshold(dLowPowerAutoSleepThreshold); -} - -/** - * @brief PowerWorker::setPowerPlan - * @param powerPlan - * 设置性能模式的dbus接口 - */ -void PowerWorker::setPowerPlan(const QString &powerPlan) -{ - m_powerDBusProxy->SetMode(powerPlan); -} - -bool PowerWorker::getCurCanSuspend() -{ - return m_powerDBusProxy->CanSuspend(); -} - -bool PowerWorker::getCurCanHibernate() -{ - return m_powerDBusProxy->CanHibernate(); -} - -void PowerWorker::setScreenBlackDelayToModelOnBattery(const int delay) -{ - m_powerModel->setScreenBlackDelayOnBattery(converToDelayModel(delay)); -} - -void PowerWorker::setLockScreenDelayOnBattery(const int delay) -{ - qDebug() << "m_powerDBusProxy->setBatteryLockDelay: " << converToDelayDBus(delay); - m_powerDBusProxy->setBatteryLockDelay(converToDelayDBus(delay)); -} - -void PowerWorker::setLockScreenDelayOnPower(const int delay) -{ - qDebug() << "m_powerDBusProxy->setLinePowerLockDelay: " << converToDelayDBus(delay); - m_powerDBusProxy->setLinePowerLockDelay(converToDelayDBus(delay)); -} - -void PowerWorker::setEnablePowerSave(const bool isEnable) -{ - m_powerDBusProxy->setPowerSavingModeEnabled(isEnable); -} - -double PowerWorker::getBatteryCapacity() -{ - return m_powerDBusProxy->batteryCapacity(); -} - -int PowerWorker::getMaxBacklightBrightness() -{ - return m_powerDBusProxy->maxBacklightBrightness(); -} - -int PowerWorker::converToDelayModel(int value) -{ - if (value == 0) { - return 7; - } - - if (value <= 60) { - return 1; - } else if (value <= 300) { - return 2; - } else if (value <= 600) { - return 3; - } else if (value <= 900) { - return 4; - } else if (value <= 1800) { - return 5; - } else { - return 6; - } -} - -int PowerWorker::converToDelayDBus(int value) -{ - switch (value) { - case 1: - return 60; - case 2: - return 300; - case 3: - return 600; - case 4: - return 900; - case 5: - return 1800; - case 6: - return 3600; - case 7: - return 0; - default: - return 900; - } -} diff --git a/dcc-old/src/plugin-power/operation/powerworker.h b/dcc-old/src/plugin-power/operation/powerworker.h deleted file mode 100644 index 667e0da3b3..0000000000 --- a/dcc-old/src/plugin-power/operation/powerworker.h +++ /dev/null @@ -1,72 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef POWERWORKER_H -#define POWERWORKER_H - -#include "powerdbusproxy.h" -#include - -class PowerModel; -class PowerWorker : public QObject -{ - Q_OBJECT - -public: - explicit PowerWorker(PowerModel *model, QObject *parent = 0); - - void active(); - void deactive(); - -public Q_SLOTS: - void setScreenBlackLock(const bool lock); - void setSleepLock(const bool lock); - void setSleepOnLidOnPowerClosed(const bool sleep); - void setSleepDelayOnPower(const int delay); - void setSleepDelayOnBattery(const int delay); - void setScreenBlackDelayOnPower(const int delay); - void setScreenBlackDelayOnBattery(const int delay); - void setSleepDelayToModelOnPower(const int delay); - void setScreenBlackDelayToModelOnPower(const int delay); - void setSleepDelayToModelOnBattery(const int delay); - void setScreenBlackDelayToModelOnBattery(const int delay); - void setLockScreenDelayOnBattery(const int delay); - void setLockScreenDelayOnPower(const int delay); - void setResponseBatteryLockScreenDelay(const int delay); - void setResponsePowerLockScreenDelay(const int delay); - void setHighPerformanceSupported(bool state); - void setBalancePerformanceSupported(bool state); - void setPowerSaveSupported(bool state); - //------------sp2 add----------------------- - void setPowerSavingModeAutoWhenQuantifyLow(bool bLowBatteryAutoIntoSaveEnergyMode); - void setPowerSavingModeAuto(bool bAutoIntoSaveEnergyMode); - void setPowerSavingModeLowerBrightnessThreshold(uint dPowerSavingModeLowerBrightnessThreshold); - void setPowerSavingModeAutoBatteryPercentage(uint dPowerSavingModebatteryPentage); - void setLinePowerPressPowerBtnAction(int nLinePowerPressPowerBtnAction); - void setLinePowerLidClosedAction(int nLinePowerLidClosedAction); - void setBatteryPressPowerBtnAction(int nBatteryPressPowerBtnAction); - void setBatteryLidClosedAction(int nBatteryLidClosedAction); - void setLowPowerNotifyEnable(bool bLowPowerNotifyEnable); - void setLowPowerNotifyThreshold(int dLowPowerNotifyThreshold); - void setLowPowerAutoSleepThreshold(int dLowPowerAutoSleepThreshold); - //------------------------------------------ - void setPowerPlan(const QString &powerPlan); - - bool getCurCanSuspend(); - bool getCurCanHibernate(); - - void setEnablePowerSave(const bool isEnable); - - double getBatteryCapacity(); - int getMaxBacklightBrightness(); - -private: - int converToDelayModel(int value); - int converToDelayDBus(int value); - -private: - PowerModel *m_powerModel; - PowerDBusProxy *m_powerDBusProxy; -}; - -#endif // POWERWORKER_H diff --git a/dcc-old/src/plugin-power/operation/qrc/actions/dcc_battery_32px.svg b/dcc-old/src/plugin-power/operation/qrc/actions/dcc_battery_32px.svg deleted file mode 100644 index dd05a2a45b..0000000000 --- a/dcc-old/src/plugin-power/operation/qrc/actions/dcc_battery_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-power/operation/qrc/actions/dcc_general_purpose_32px.svg b/dcc-old/src/plugin-power/operation/qrc/actions/dcc_general_purpose_32px.svg deleted file mode 100644 index c7fa0e51d1..0000000000 --- a/dcc-old/src/plugin-power/operation/qrc/actions/dcc_general_purpose_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-power/operation/qrc/actions/dcc_using_electric_32px.svg b/dcc-old/src/plugin-power/operation/qrc/actions/dcc_using_electric_32px.svg deleted file mode 100644 index 5c91cbb11e..0000000000 --- a/dcc-old/src/plugin-power/operation/qrc/actions/dcc_using_electric_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-power/operation/qrc/icons/dcc_nav_power_42px.svg b/dcc-old/src/plugin-power/operation/qrc/icons/dcc_nav_power_42px.svg deleted file mode 100644 index 83590d9ba8..0000000000 --- a/dcc-old/src/plugin-power/operation/qrc/icons/dcc_nav_power_42px.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - dcc_nav_power_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-power/operation/qrc/icons/dcc_nav_power_84px.svg b/dcc-old/src/plugin-power/operation/qrc/icons/dcc_nav_power_84px.svg deleted file mode 100644 index 5bf1d8ef89..0000000000 --- a/dcc-old/src/plugin-power/operation/qrc/icons/dcc_nav_power_84px.svg +++ /dev/null @@ -1,44 +0,0 @@ - - - dcc_nav_power_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-power/operation/qrc/power.qrc b/dcc-old/src/plugin-power/operation/qrc/power.qrc deleted file mode 100644 index ccd9f64ee2..0000000000 --- a/dcc-old/src/plugin-power/operation/qrc/power.qrc +++ /dev/null @@ -1,9 +0,0 @@ - - - icons/dcc_nav_power_42px.svg - icons/dcc_nav_power_84px.svg - actions/dcc_general_purpose_32px.svg - actions/dcc_battery_32px.svg - actions/dcc_using_electric_32px.svg - - diff --git a/dcc-old/src/plugin-power/window/generalmodule.cpp b/dcc-old/src/plugin-power/window/generalmodule.cpp deleted file mode 100644 index 911d16ab37..0000000000 --- a/dcc-old/src/plugin-power/window/generalmodule.cpp +++ /dev/null @@ -1,496 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "generalmodule.h" - -#include "dccslider.h" -#include "itemmodule.h" -#include "powermodel.h" -#include "powerworker.h" -#include "settingsgroupmodule.h" -#include "titlemodule.h" -#include "widgets/dcclistview.h" - -#include - -#include -#include -#include -#include - -#define BALANCE "balance" // 平衡模式 -#define PERFORMANCE "performance" // 高性能模式 -#define BALANCEPERFORMANCE "balance_performance" // 性能模式 -#define POWERSAVE "powersave" // 节能模式 - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -static QString get_translate(const QString &type) -{ - if (type == BALANCE) { - return QObject::tr("Auto adjust CPU operating frequency based on CPU load condition"); - } - if (type == BALANCEPERFORMANCE) { - return QObject::tr( - "Aggressively adjust CPU operating frequency based on CPU load condition"); - } - if (type == PERFORMANCE) { - return QObject::tr("Be good to imporving performance, but power consumption and heat " - "generation will increase"); - } - return QObject::tr("CPU always works under low frequency, will reduce power consumption"); -} - -GeneralModule::GeneralModule(PowerModel *model, PowerWorker *work, QObject *parent) - : PageModule("general", tr("General"), DIconTheme::findQIcon("dcc_general_purpose"), parent) - , m_model(model) - , m_work(work) -{ - m_powerPlanMap.insert(BALANCE, tr("Balanced")); - m_powerPlanMap.insert(BALANCEPERFORMANCE, tr("Balance Performance")); - m_powerPlanMap.insert(PERFORMANCE, tr("High Performance")); - m_powerPlanMap.insert(POWERSAVE, tr("Power Saver")); - - connect(this, &GeneralModule::requestSetWakeDisplay, m_work, &PowerWorker::setScreenBlackLock); - connect(this, &GeneralModule::requestSetWakeComputer, m_work, &PowerWorker::setSleepLock); - - connect(this, - &GeneralModule::requestSetLowBatteryMode, - m_work, - &PowerWorker::setEnablePowerSave); - connect(this, - &GeneralModule::requestSetPowerSaveMode, - m_work, - &PowerWorker::setEnablePowerSave); - - connect(this, - &GeneralModule::requestSetPowerSavingModeAutoWhenQuantifyLow, - m_work, - &PowerWorker::setPowerSavingModeAutoWhenQuantifyLow); - connect(this, - &GeneralModule::requestSetPowerSavingModeAuto, - m_work, - &PowerWorker::setPowerSavingModeAuto); - connect(this, - &GeneralModule::requestSetPowerSavingModeLowerBrightnessThreshold, - m_work, - &PowerWorker::setPowerSavingModeLowerBrightnessThreshold); - connect(this, - &GeneralModule::requestSetPowerSavingModeAutoBatteryPercentage, - m_work, - &PowerWorker::setPowerSavingModeAutoBatteryPercentage); - connect(this, &GeneralModule::requestSetPowerPlan, m_work, &PowerWorker::setPowerPlan); - initUI(); -} - -GeneralModule::~GeneralModule() { } - -void GeneralModule::deactive() { } - -void GeneralModule::initUI() -{ - m_powerPlanModel = new QStandardItemModel(this); - QMap::iterator iter; - for (iter = m_powerPlanMap.begin(); iter != m_powerPlanMap.end(); ++iter) { - DStandardItem *powerPlanItem = new DStandardItem(iter.value()); - DViewItemAction *action = new DViewItemAction(); - action->setText(::get_translate(iter.key())); - action->setFontSize(DFontSizeManager::T9); - action->setTextColorRole(DPalette::TextTips); - powerPlanItem->setTextActionList({action}); - powerPlanItem->setData(iter.key(), PowerPlanRole); - m_powerPlanModel->appendRow(powerPlanItem); - } - - //  性能设置 - appendChild(new TitleModule("powerPlansTitle", tr("Power Plans"))); - appendChild(new ItemModule( - "powerPlans", - tr("Power Plans"), - [this](ModuleObject *module) -> QWidget * { - Q_UNUSED(module); - DCCListView *powerplanListview = new DCCListView(); - powerplanListview->setAccessibleName("Power Plans"); - powerplanListview->setItemMargins(QMargins(0, 6, 10, 6)); - powerplanListview->setModel(m_powerPlanModel); - powerplanListview->setEditTriggers(QAbstractItemView::NoEditTriggers); - powerplanListview->setBackgroundType(DStyledItemDelegate::ClipCornerBackground); - powerplanListview->setItemSpacing(1); - powerplanListview->setSpacing(0); - powerplanListview->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - powerplanListview->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - powerplanListview->setSelectionMode(QAbstractItemView::NoSelection); - - auto onHighPerformanceSupportChanged = [this, - powerplanListview](const bool isSupport) { - int row_count = m_powerPlanModel->rowCount(); - if (!isSupport) { - int cur_place = powerplanListview->currentIndex().row(); - for (int i = 0; i < row_count; i++) { - QStandardItem *items = m_powerPlanModel->item(i, 0); - if (items->data(PowerPlanRole).toString() == PERFORMANCE) { - m_powerPlanModel->removeRow(i); - - if (cur_place == i || cur_place < 0) { - powerplanListview->clicked(m_powerPlanModel->index(0, 0)); - } - break; - } - } - } else { - bool findHighPerform = false; - for (int i = 0; i < row_count; i++) { - QStandardItem *items = m_powerPlanModel->item(i, 0); - if (items->data(PowerPlanRole).toString() == PERFORMANCE) { - findHighPerform = true; - break; - } - } - if (!findHighPerform) { - DStandardItem *powerPlanItem = - new DStandardItem(m_powerPlanMap.value(PERFORMANCE)); - powerPlanItem->setData(PERFORMANCE, PowerPlanRole); - DViewItemAction *action = new DViewItemAction(); - action->setText(::get_translate(::get_translate(PERFORMANCE))); - action->setFontSize(DFontSizeManager::T9); - action->setTextColorRole(DPalette::TextTips); - powerPlanItem->setTextActionList({action}); - if (row_count == 3) { - m_powerPlanModel->insertRow(2, powerPlanItem); - } else { - m_powerPlanModel->insertRow(1, powerPlanItem); - } - } - } - }; - onHighPerformanceSupportChanged(m_model->isHighPerformanceSupported()); - auto onBalancePerformanceSupportedChanged = [this, powerplanListview]( - const bool isSupport) { - int row_count = m_powerPlanModel->rowCount(); - if (!isSupport) { - int cur_place = powerplanListview->currentIndex().row(); - for (int i = 0; i < row_count; i++) { - QStandardItem *items = m_powerPlanModel->item(i, 0); - if (items->data(PowerPlanRole).toString() == BALANCEPERFORMANCE) { - m_powerPlanModel->removeRow(i); - - if (cur_place == i || cur_place < 0) { - powerplanListview->clicked(m_powerPlanModel->index(0, 0)); - } - break; - } - } - } else { - bool findBalancePerform = false; - for (int i = 0; i < row_count; i++) { - QStandardItem *items = m_powerPlanModel->item(i, 0); - if (items->data(PowerPlanRole).toString() == BALANCEPERFORMANCE) { - findBalancePerform = true; - break; - } - } - if (!findBalancePerform) { - DStandardItem *powerPlanItem = - new DStandardItem(m_powerPlanMap.value(BALANCEPERFORMANCE)); - powerPlanItem->setData(PERFORMANCE, PowerPlanRole); - DViewItemAction *action = new DViewItemAction(); - action->setText(::get_translate(::get_translate(BALANCEPERFORMANCE))); - action->setFontSize(DFontSizeManager::T9); - action->setTextColorRole(DPalette::TextTips); - powerPlanItem->setTextActionList({action}); - m_powerPlanModel->insertRow(1, powerPlanItem); - } - } - }; - onBalancePerformanceSupportedChanged(m_model->isBalancePerformanceSupported()); - auto onPowerSaveSupportChanged = [this, powerplanListview](const bool isSupport) { - int row_count = m_powerPlanModel->rowCount(); - if (!isSupport) { - int cur_place = powerplanListview->currentIndex().row(); - for (int i = 0; i < row_count; i++) { - QStandardItem *items = m_powerPlanModel->item(i, 0); - if (items->data(PowerPlanRole).toString() == POWERSAVE) { - m_powerPlanModel->removeRow(i); - - if (cur_place == i || cur_place < 0) { - powerplanListview->clicked(m_powerPlanModel->index(0, 0)); - } - break; - } - } - } else { - bool findPowerSave = false; - for (int i = 0; i < row_count; i++) { - QStandardItem *items = m_powerPlanModel->item(i, 0); - if (items->data(PowerPlanRole).toString() == POWERSAVE) { - findPowerSave = true; - break; - } - } - if (!findPowerSave) { - DStandardItem *powerPlanItem = - new DStandardItem(m_powerPlanMap.value(POWERSAVE)); - powerPlanItem->setData(POWERSAVE, PowerPlanRole); - DViewItemAction *action = new DViewItemAction(); - action->setText(::get_translate(::get_translate(POWERSAVE))); - action->setFontSize(DFontSizeManager::T9); - action->setTextColorRole(DPalette::TextTips); - powerPlanItem->setTextActionList({action}); - m_powerPlanModel->insertRow(1, powerPlanItem); - } - } - }; - onPowerSaveSupportChanged(m_model->isPowerSaveSupported()); - connect(powerplanListview, - &DListView::clicked, - this, - [this](const QModelIndex &index) { - QStandardItem *item = - m_powerPlanModel->item(index.row(), index.column()); - QString selectedPowerplan = item->data(PowerPlanRole).toString(); - Q_EMIT requestSetPowerPlan(selectedPowerplan); - }); - connect(m_model, - &PowerModel::highPerformaceSupportChanged, - powerplanListview, - onHighPerformanceSupportChanged); - connect(m_model, - &PowerModel::powerSaveSupportChanged, - powerplanListview, - onPowerSaveSupportChanged); - - auto onCurPowerPlanChanged = [this](const QString &curPowerPlan) { - int row_count = m_powerPlanModel->rowCount(); - for (int i = 0; i < row_count; i++) { - QStandardItem *items = m_powerPlanModel->item(i, 0); - if (items->data(PowerPlanRole).toString() == curPowerPlan) { - items->setCheckState(Qt::Checked); - } else { - items->setCheckState(Qt::Unchecked); - } - } - }; - - connect(m_model, - &PowerModel::powerPlanChanged, - powerplanListview, - onCurPowerPlanChanged); - onCurPowerPlanChanged(m_model->getPowerPlan()); - return powerplanListview; - }, - false)); - //  节能设置 - auto powerLowerBrightnessLabel = - new TitleModule("powerSavingSettingsTitle", tr("Power Saving Settings")); - - appendChild(powerLowerBrightnessLabel); - SettingsGroupModule *group = - new SettingsGroupModule("powerSavingSettingsGroup", tr("Power Saving Settings")); - appendChild(group); - - ItemModule *itemAutoPowerSavingOnLowBattery = new ItemModule( - "autoPowerSavingOnLowBattery", - tr("Auto power saving on low battery"), - [this](ModuleObject *module) -> QWidget * { - Q_UNUSED(module) - DSwitchButton *lowPowerAutoIntoSaveEnergyMode = - new DSwitchButton(/*tr("Auto power saving on low battery")*/); - lowPowerAutoIntoSaveEnergyMode->setChecked( - m_model->powerSavingModeAutoWhenQuantifyLow()); - connect(m_model, - &PowerModel::powerSavingModeAutoWhenQuantifyLowChanged, - lowPowerAutoIntoSaveEnergyMode, - &DSwitchButton::setChecked); - connect(lowPowerAutoIntoSaveEnergyMode, - &DSwitchButton::checkedChanged, - this, - &GeneralModule::requestSetPowerSavingModeAutoWhenQuantifyLow); - return lowPowerAutoIntoSaveEnergyMode; - }); - itemAutoPowerSavingOnLowBattery->setVisible(m_model->haveBettary()); - connect(m_model, - &PowerModel::haveBettaryChanged, - itemAutoPowerSavingOnLowBattery, - &ItemModule::setVisible); - group->appendChild(itemAutoPowerSavingOnLowBattery); - ItemModule *itemAutoPowerSavingOnBatterySlider = new ItemModule( - "decreaseBrightness", - tr("Decrease Brightness"), - [this](ModuleObject *module) -> QWidget * { - Q_UNUSED(module) - TitledSliderItem *sldLowerBrightness = - new TitledSliderItem(tr("Low battery threshold")); - QStringList annotions; - annotions << "10%" - << "20%" - << "30%" - << "40%" - << "50%"; - sldLowerBrightness->setAnnotations(annotions); - sldLowerBrightness->slider()->setRange(1, 5); - sldLowerBrightness->slider()->setPageStep(10); - sldLowerBrightness->slider()->setType(DCCSlider::Vernier); - sldLowerBrightness->slider()->setTickPosition(QSlider::NoTicks); - sldLowerBrightness->slider()->setValue( - m_model->powerSavingModeAutoBatteryPercentage() / 10); - - sldLowerBrightness->setValueLiteral( - QString("%1%").arg(m_model->powerSavingModeAutoBatteryPercentage())); - connect(m_model, - &PowerModel::powerSavingModeAutoBatteryPercentageChanged, - sldLowerBrightness, - [sldLowerBrightness](const uint dLevel) { - sldLowerBrightness->slider()->blockSignals(true); - sldLowerBrightness->slider()->setValue(dLevel / 10); - sldLowerBrightness->slider()->blockSignals(false); - }); - connect(sldLowerBrightness->slider(), - &DCCSlider::valueChanged, - this, - [=](int value) { - sldLowerBrightness->setValueLiteral(annotions[value - 1]); - Q_EMIT requestSetPowerSavingModeAutoBatteryPercentage(value * 10); - }); - return sldLowerBrightness; - }, - false); - itemAutoPowerSavingOnBatterySlider->setVisible(m_model->haveBettary()); - group->appendChild(itemAutoPowerSavingOnBatterySlider); - connect(m_model, - &PowerModel::haveBettaryChanged, - itemAutoPowerSavingOnBatterySlider, - &ItemModule::setVisible); - ItemModule *itemAutoPowerSavingOnBattery = - new ItemModule("autoPowerSavingOnBattery", - tr("Auto power saving on battery"), - [this](ModuleObject *module) -> QWidget * { - Q_UNUSED(module) - DSwitchButton *autoIntoSaveEnergyMode = new DSwitchButton(); - autoIntoSaveEnergyMode->setChecked(m_model->autoPowerSaveMode()); - connect(m_model, - &PowerModel::autoPowerSavingModeChanged, - autoIntoSaveEnergyMode, - &DSwitchButton::setChecked); - connect(autoIntoSaveEnergyMode, - &DSwitchButton::checkedChanged, - this, - &GeneralModule::requestSetPowerSavingModeAuto); - return autoIntoSaveEnergyMode; - }); - itemAutoPowerSavingOnBattery->setVisible(m_model->haveBettary()); - connect(m_model, - &PowerModel::haveBettaryChanged, - itemAutoPowerSavingOnBattery, - &ItemModule::setVisible); - group->appendChild(itemAutoPowerSavingOnBattery); - - group->appendChild(new ItemModule( - "decreaseBrightness", - tr("Decrease Brightness"), - [this](ModuleObject *module) -> QWidget * { - Q_UNUSED(module) - TitledSliderItem *sldLowerBrightness = - new TitledSliderItem(tr("Decrease Brightness")); - sldLowerBrightness->setAccessibleName("Decrease Brightness"); - QStringList annotions; - annotions << "10%" - << "20%" - << "30%" - << "40%"; - sldLowerBrightness->setAnnotations(annotions); - sldLowerBrightness->slider()->setRange(1, 4); - sldLowerBrightness->slider()->setPageStep(10); - sldLowerBrightness->slider()->setType(DCCSlider::Vernier); - sldLowerBrightness->slider()->setTickPosition(QSlider::NoTicks); - - int maxBacklight = m_work->getMaxBacklightBrightness(); - sldLowerBrightness->setVisible(maxBacklight >= 100 || maxBacklight == 0); - sldLowerBrightness->slider()->setValue( - m_model->powerSavingModeLowerBrightnessThreshold() / 10); - sldLowerBrightness->setValueLiteral( - QString("%1%").arg(m_model->powerSavingModeLowerBrightnessThreshold())); - connect(m_model, - &PowerModel::powerSavingModeLowerBrightnessThresholdChanged, - sldLowerBrightness, - [sldLowerBrightness](const uint dLevel) { - sldLowerBrightness->slider()->blockSignals(true); - sldLowerBrightness->slider()->setValue(dLevel / 10); - sldLowerBrightness->slider()->blockSignals(false); - }); - connect(sldLowerBrightness->slider(), - &DCCSlider::valueChanged, - this, - [=](int value) { - sldLowerBrightness->setValueLiteral(annotions[value - 1]); - Q_EMIT requestSetPowerSavingModeLowerBrightnessThreshold(value * 10); - }); - return sldLowerBrightness; - }, - false)); - - // 唤醒设置 - appendChild(new TitleModule("wakeupSettingsTitle", tr("Wakeup Settings"))); - group = new SettingsGroupModule("wakeupSettingsGroup", tr("Wakeup Settings")); - appendChild(group); - group->appendChild(new ItemModule( - "passwordIsRequiredToWakeUpTheComputer", - tr("Unlocking is required to wake up the computer"), - [this](ModuleObject *module) -> QWidget * { - Q_UNUSED(module) - DSwitchButton *wakeComputerNeedPassword = new DSwitchButton(); - wakeComputerNeedPassword->setChecked(m_model->sleepLock() - && !m_model->isNoPasswdLogin()); - wakeComputerNeedPassword->setDisabled(m_model->isNoPasswdLogin()); - wakeComputerNeedPassword->setVisible(m_model->canSuspend() - && m_model->getSuspend()); // 配置显示 - connect(m_model, - &PowerModel::sleepLockChanged, - wakeComputerNeedPassword, - [wakeComputerNeedPassword, this](bool checked) { - wakeComputerNeedPassword->setChecked(checked - && !m_model->isNoPasswdLogin()); - }); - connect(m_model, - &PowerModel::suspendChanged, - wakeComputerNeedPassword, - &DSwitchButton::setVisible); - connect(wakeComputerNeedPassword, - &DSwitchButton::checkedChanged, - this, - &GeneralModule::requestSetWakeComputer); - connect(m_model, - &PowerModel::noPasswdLoginChanged, - wakeComputerNeedPassword, - &DSwitchButton::setDisabled); - return wakeComputerNeedPassword; - })); - group->appendChild( - new ItemModule("passwordIsRequiredToWakeUpTheMonitor", - tr("Unlocking is required to wake up the monitor"), - [this](ModuleObject *module) -> QWidget * { - Q_UNUSED(module) - DSwitchButton *wakeDisplayNeedPassword = new DSwitchButton(); - wakeDisplayNeedPassword->setChecked(m_model->screenBlackLock() - && !m_model->isNoPasswdLogin()); - wakeDisplayNeedPassword->setDisabled(m_model->isNoPasswdLogin()); - connect(m_model, - &PowerModel::screenBlackLockChanged, - wakeDisplayNeedPassword, - [wakeDisplayNeedPassword, this](bool checked) { - wakeDisplayNeedPassword->setChecked( - checked && !m_model->isNoPasswdLogin()); - }); - - connect(wakeDisplayNeedPassword, - &DSwitchButton::checkedChanged, - this, - &GeneralModule::requestSetWakeDisplay); - connect(m_model, - &PowerModel::noPasswdLoginChanged, - wakeDisplayNeedPassword, - &DSwitchButton::setDisabled); - return wakeDisplayNeedPassword; - })); -} diff --git a/dcc-old/src/plugin-power/window/generalmodule.h b/dcc-old/src/plugin-power/window/generalmodule.h deleted file mode 100644 index f9c861876d..0000000000 --- a/dcc-old/src/plugin-power/window/generalmodule.h +++ /dev/null @@ -1,57 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef GENERALMODULE_H -#define GENERALMODULE_H - -#include "interface/pagemodule.h" - -#include - -namespace DCC_NAMESPACE { -class SettingsGroup; -class TitledSliderItem; -class DCCListView; -} - -namespace DTK_WIDGET_NAMESPACE { -class DComboBox; -} -class PowerModel; -class PowerWorker; - -class GeneralModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit GeneralModule(PowerModel *model, PowerWorker *work, QObject *parent = nullptr); - ~GeneralModule(); - void deactive() override; - -Q_SIGNALS: - void requestSetLowBatteryMode(const bool &state); // 同节能模式 - void requestSetPowerSavingModeAutoWhenQuantifyLow(const bool &state); // 低电量自动切换节能模式 - void requestSetPowerSavingModeAuto(const bool &state); // 自动切换节能模式 - void requestSetWakeComputer(const bool &state); // 待机恢复输入密码 - void requestSetWakeDisplay(const bool &state); // 唤醒显示器输入密码 - void requestSetPowerSaveMode(const bool &state); // 节能模式 - void requestSetPowerSavingModeLowerBrightnessThreshold(const int &level); // 节能模式亮度降低 - void requestSetPowerSavingModeAutoBatteryPercentage(const int &level); // 节能模式亮度降低 - void requestSetPowerPlan(const QString &powerPlan); // 性能模式的设置 -public Q_SLOTS: - -private: - void initUI(); -private: - QMap m_powerPlanMap; // Performance mode dictionary - QStandardItemModel *m_powerPlanModel; - - PowerModel *m_model; - PowerWorker *m_work; -private: - enum { - PowerPlanRole = Dtk::UserRole + 1, - }; -}; - -#endif // GENERALMODULE_H diff --git a/dcc-old/src/plugin-power/window/plugin-power.json b/dcc-old/src/plugin-power/window/plugin-power.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-power/window/plugin-power.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-power/window/powerplugin.cpp b/dcc-old/src/plugin-power/window/powerplugin.cpp deleted file mode 100644 index 65aa9fe4d2..0000000000 --- a/dcc-old/src/plugin-power/window/powerplugin.cpp +++ /dev/null @@ -1,148 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "powerplugin.h" - -#include "generalmodule.h" -#include "powermodel.h" -#include "powerworker.h" -#include "usebatterymodule.h" -#include "useelectricmodule.h" -#include "utils.h" - -#include -#include - -using namespace DCC_NAMESPACE; -DCORE_USE_NAMESPACE -DGUI_USE_NAMESPACE -const QString gsetting_showSuspend = "showSuspend"; -const QString gsetting_showHiberante = "showHibernate"; -const QString gsetting_showShutdown = "showShutdown"; - -PowerModule::PowerModule(QObject *parent) - : HListModule("power", tr("Power"), DIconTheme::findQIcon("dcc_nav_power"), parent) - , m_model(nullptr) - , m_nBatteryPercentage(100.0) - , m_useElectric(nullptr) - , m_useBattery(nullptr) -{ - m_model = new PowerModel(this); - m_work = new PowerWorker(m_model, this); - -#if 0 // gsettings 待改为dconfig - QGSettings *m_powerSetting = new QGSettings("com.deepin.dde.control-center", QByteArray(), this); - - m_model->setSuspend(!IsServerSystem && m_powerSetting->get(gsetting_showSuspend).toBool() && m_model->canSuspend()); - connect(m_model, &PowerModel::suspendChanged, this, [=](const bool &value) { - m_model->setSuspend(!IsServerSystem && m_powerSetting->get(gsetting_showSuspend).toBool() && value); - }); - - m_model->setHibernate(!IsServerSystem && m_powerSetting->get(gsetting_showHiberante).toBool() && m_model->canHibernate()); - connect(m_model, &PowerModel::canHibernateChanged, this, [=](const bool &value) { - m_model->setHibernate(!IsServerSystem && m_powerSetting->get(gsetting_showHiberante).toBool() && value); - }); - - m_model->setShutdown(m_powerSetting->get(gsetting_showShutdown).toBool()); - - connect(m_powerSetting, &QGSettings::changed, this, [=](const QString &key) { - if (key == gsetting_showSuspend) { - m_model->setSuspend(!IsServerSystem && m_powerSetting->get(gsetting_showSuspend).toBool() && m_model->canSuspend()); - } else if (key == gsetting_showHiberante) { - m_model->setHibernate(!IsServerSystem && m_powerSetting->get(gsetting_showHiberante).toBool() && m_model->canHibernate()); - } else if (key == gsetting_showShutdown) { - m_model->setShutdown(m_powerSetting->get(gsetting_showShutdown).toBool()); - } else { - qWarning() << " not contains the key : " << key; - } - }); -#else - m_model->setSuspend(!IsServerSystem && true); - m_model->setHibernate(!IsServerSystem && true); - m_model->setShutdown(true); -#endif - connect(m_model, &PowerModel::haveBettaryChanged, this, &PowerModule::onBatteryChanged); - connect(m_model, - &PowerModel::batteryPercentageChanged, - this, - &PowerModule::onBatteryPercentageChanged); - - //------------------------------------------- - if (!IsServerSystem) { - appendChild(new GeneralModule(m_model, m_work, this)); - } - //------------------------------------------- - m_useElectric = new UseElectricModule(m_model, m_work, this); - appendChild(m_useElectric); - //------------------------------------------- - onBatteryChanged(m_model->haveBettary()); -} - -void PowerModule::active() -{ - m_work->active(); // refresh data -} - -void PowerModule::onBatteryChanged(const bool &state) -{ - if (state) { - const QList &childrens = ModuleObject::childrens(); - m_useBattery = new UseBatteryModule(m_model, m_work, this); - insertChild(childrens.indexOf(m_useElectric) + 1, m_useBattery); - } else if (m_useBattery) { - removeChild(m_useBattery); - m_useBattery->deleteLater(); - m_useBattery = nullptr; - } -} - -// done: 遗留问题,控制中心不应该发电量低通知 -void PowerModule::onBatteryPercentageChanged(const double value) -{ - if (!m_model->getDoubleCompare(m_nBatteryPercentage, value)) { - m_nBatteryPercentage = value; - - QString remindData = ""; - if (m_model->getDoubleCompare(value, 20.0) || m_model->getDoubleCompare(value, 15.0) - || m_model->getDoubleCompare(value, 10.0)) { - remindData = tr("Battery low, please plug in"); - } else if (m_model->getDoubleCompare(value, 5.0)) { - remindData = tr("Battery critically low"); - } - - // send system info - if ("" != remindData) { - Dtk::Core::DUtil::DNotifySender(remindData.toLatin1().data()); - } - } -} - -PowerPlugin::PowerPlugin(QObject *parent) - : PluginInterface(parent) - , m_moduleRoot(nullptr) -{ -} - -PowerPlugin::~PowerPlugin() -{ - m_moduleRoot = nullptr; -} - -QString PowerPlugin::name() const -{ - return QStringLiteral("power"); -} - -ModuleObject *PowerPlugin::module() -{ - if (m_moduleRoot) - return m_moduleRoot; - - m_moduleRoot = new PowerModule; - return m_moduleRoot; -} - -QString PowerPlugin::location() const -{ - return "10"; -} diff --git a/dcc-old/src/plugin-power/window/powerplugin.h b/dcc-old/src/plugin-power/window/powerplugin.h deleted file mode 100644 index b4a83396e9..0000000000 --- a/dcc-old/src/plugin-power/window/powerplugin.h +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef POWERPLUGIN_H -#define POWERPLUGIN_H - -#include "interface/hlistmodule.h" -#include "interface/plugininterface.h" - -class PowerModel; -class PowerWorker; -class GeneralModule; - -class PowerModule : public DCC_NAMESPACE::HListModule -{ - Q_OBJECT -public: - explicit PowerModule(QObject *parent = nullptr); - ~PowerModule() override { } - virtual void active() override; -public Q_SLOTS: - void onBatteryChanged(const bool &state); - void onBatteryPercentageChanged(const double value); - -private: - PowerModel *m_model; - PowerWorker *m_work; - double m_nBatteryPercentage; - DCC_NAMESPACE::ModuleObject *m_useElectric; - DCC_NAMESPACE::ModuleObject *m_useBattery; -}; - -class PowerPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Power" FILE "plugin-power.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit PowerPlugin(QObject *parent = nullptr); - ~PowerPlugin(); - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; - -private: - DCC_NAMESPACE::ModuleObject *m_moduleRoot; -}; - -#endif // POWERPLUGIN_H diff --git a/dcc-old/src/plugin-power/window/titlemodule.cpp b/dcc-old/src/plugin-power/window/titlemodule.cpp deleted file mode 100644 index ef753494e8..0000000000 --- a/dcc-old/src/plugin-power/window/titlemodule.cpp +++ /dev/null @@ -1,25 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "titlemodule.h" -#include "widgets/titlelabel.h" - -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -TitleModule::TitleModule(const QString &name, const QString &title, QObject *parent) - : ModuleObject(parent) -{ - setName(name); - setDescription(title); - addContentText(title); -} - -QWidget *TitleModule::page() -{ - TitleLabel *titleLabel = new TitleLabel(description()); - DFontSizeManager::instance()->bind(titleLabel, DFontSizeManager::T5, QFont::DemiBold); // 设置字体 - return titleLabel; -} diff --git a/dcc-old/src/plugin-power/window/titlemodule.h b/dcc-old/src/plugin-power/window/titlemodule.h deleted file mode 100644 index 95890bedb2..0000000000 --- a/dcc-old/src/plugin-power/window/titlemodule.h +++ /dev/null @@ -1,18 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TITLEMODULE_H -#define TITLEMODULE_H -#include "interface/moduleobject.h" - -class QWidget; - -class TitleModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - TitleModule(const QString &name, const QString &title, QObject *parent = nullptr); - virtual QWidget *page() override; -}; - -#endif // TITLEMODULE_H diff --git a/dcc-old/src/plugin-power/window/usebatterymodule.cpp b/dcc-old/src/plugin-power/window/usebatterymodule.cpp deleted file mode 100644 index 5f1ad0d44c..0000000000 --- a/dcc-old/src/plugin-power/window/usebatterymodule.cpp +++ /dev/null @@ -1,406 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "usebatterymodule.h" -#include "dcombobox.h" -#include "dswitchbutton.h" -#include "itemmodule.h" -#include "powermodel.h" -#include "powerworker.h" -#include "settingsgroupmodule.h" -#include "titlemodule.h" -#include "titlevalueitem.h" -#include "widgets/comboxwidget.h" -#include "widgets/titledslideritem.h" -#include "widgets/dccslider.h" - -#include -#include - -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE - -const static QMap g_sldLowBatteryMap = { { 0, 10 }, { 1, 15 }, { 2, 20 }, { 3, 25 } }; - -UseBatteryModule::UseBatteryModule(PowerModel *model, PowerWorker *work, QObject *parent) - : PageModule("onBattery", tr("On Battery"), tr("On Battery"), DIconTheme::findQIcon("dcc_battery"), parent) - , m_model(model) - , m_work(work) - , m_annos({ "1m", "5m", "10m", "15m", "30m", "1h", tr("Never") }) -{ - connect(this, &UseBatteryModule::requestSetScreenBlackDelayOnBattery, m_work, &PowerWorker::setScreenBlackDelayOnBattery); - connect(this, &UseBatteryModule::requestSetSleepDelayOnBattery, m_work, &PowerWorker::setSleepDelayOnBattery); - connect(this, &UseBatteryModule::requestSetAutoLockScreenOnBattery, m_work, &PowerWorker::setLockScreenDelayOnBattery); - - connect(this, &UseBatteryModule::requestSetBatteryPressPowerBtnAction, m_work, &PowerWorker::setBatteryPressPowerBtnAction); - connect(this, &UseBatteryModule::requestSetBatteryLidClosedAction, m_work, &PowerWorker::setBatteryLidClosedAction); - connect(this, &UseBatteryModule::requestSetLowPowerNotifyEnable, m_work, &PowerWorker::setLowPowerNotifyEnable); - connect(this, &UseBatteryModule::requestSetLowPowerNotifyThreshold, m_work, &PowerWorker::setLowPowerNotifyThreshold); - connect(this, &UseBatteryModule::requestSetLowPowerAutoSleepThreshold, m_work, &PowerWorker::setLowPowerAutoSleepThreshold); - - initUI(); -} - -UseBatteryModule::~UseBatteryModule() -{ -} - -void UseBatteryModule::active() -{ - m_Options.clear(); - /*** 笔记本合盖功能与按电源按钮功能 ***/ - if (m_model->getShutdown()) { - m_Options.append({ tr("Shut down"), 0 }); - } - if (m_model->canSuspend()) { - m_Options.append({ tr("Suspend"), 1 }); - } - if (m_model->canHibernate()) { - m_Options.append({ tr("Hibernate"), 2 }); - } - m_Options.append({ tr("Turn off the monitor"), 3 }); - m_Options.append({ tr("Do nothing"), 4 }); -} - -void UseBatteryModule::deactive() -{ -} - -void UseBatteryModule::initUI() -{ - auto delayToLiteralString = [] (const int delay) -> QString const { - QString strData = ""; - - switch (delay) { - case 1: - strData = tr("1 Minute"); - break; - case 2: - strData = tr("%1 Minutes").arg(5); - break; - case 3: - strData = tr("%1 Minutes").arg(10); - break; - case 4: - strData = tr("%1 Minutes").arg(15); - break; - case 5: - strData = tr("%1 Minutes").arg(30); - break; - case 6: - strData = tr("1 Hour"); - break; - case 7: - strData = tr("Never"); - break; - default: - strData = tr("%1 Minutes").arg(15); - break; - } - - return strData; - }; - - appendChild(new TitleModule("screenAndSuspendTitle", tr("Screen and Suspend"))); - SettingsGroupModule *group = new SettingsGroupModule("screenAndSuspendGroup", tr("Screen and Suspend")); - group->setSpacing(10); - appendChild(group); - group->appendChild(new ItemModule("turnOffTheMonitorAfter", tr("Turn off the monitor after"), - [this, delayToLiteralString] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - TitledSliderItem *monitorSleepOnBattery = new TitledSliderItem(tr("Turn off the monitor after")); - monitorSleepOnBattery->setTitle(tr("Turn off the monitor after")); - monitorSleepOnBattery->setAccessibleName(tr("Turn off the monitor after")); - monitorSleepOnBattery->slider()->setType(DCCSlider::Vernier); - monitorSleepOnBattery->slider()->setRange(1, 7); - monitorSleepOnBattery->slider()->setTickPosition(QSlider::TicksBelow); - monitorSleepOnBattery->slider()->setTickInterval(1); - monitorSleepOnBattery->slider()->setPageStep(1); - monitorSleepOnBattery->setAnnotations(m_annos); - auto setScreenBlackDelayOnBattery = [monitorSleepOnBattery, &delayToLiteralString] (const int delay) { - monitorSleepOnBattery->slider()->blockSignals(true); - monitorSleepOnBattery->slider()->setValue(delay); - monitorSleepOnBattery->setValueLiteral(delayToLiteralString(delay)); - monitorSleepOnBattery->slider()->blockSignals(false); - }; - connect(m_model, &PowerModel::screenBlackDelayChangedOnBattery, monitorSleepOnBattery, setScreenBlackDelayOnBattery); - setScreenBlackDelayOnBattery(m_model->screenBlackDelayOnBattery()); - connect(monitorSleepOnBattery->slider(), &DCCSlider::valueChanged, this, &UseBatteryModule::requestSetScreenBlackDelayOnBattery); - return monitorSleepOnBattery; - }, false)); - - group->appendChild(new ItemModule("lockScreenAfter", tr("Lock screen after"), - [this, delayToLiteralString] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - TitledSliderItem *autoLockScreen = new TitledSliderItem(tr("Lock screen after")); - autoLockScreen->setTitle(tr("Lock screen after")); - autoLockScreen->setAccessibleName(tr("Lock screen after")); - autoLockScreen->slider()->setType(DCCSlider::Vernier); - autoLockScreen->slider()->setRange(1, 7); - autoLockScreen->slider()->setTickPosition(QSlider::TicksBelow); - autoLockScreen->slider()->setTickInterval(1); - autoLockScreen->slider()->setPageStep(1); - autoLockScreen->setAnnotations(m_annos); - auto setAutoLockScreenOnBattery = [autoLockScreen, &delayToLiteralString] (const int delay) { - autoLockScreen->slider()->blockSignals(true); - autoLockScreen->slider()->setValue(delay); - autoLockScreen->setValueLiteral(delayToLiteralString(delay)); - autoLockScreen->slider()->blockSignals(false); - }; - connect(m_model, &PowerModel::batteryLockScreenDelayChanged, autoLockScreen, setAutoLockScreenOnBattery); - setAutoLockScreenOnBattery(m_model->getBatteryLockScreenDelay()); - connect(autoLockScreen->slider(), &DCCSlider::valueChanged, this, &UseBatteryModule::requestSetAutoLockScreenOnBattery); - return autoLockScreen; - }, false)); - - group->appendChild(new ItemModule("computerSuspendsAfter", tr("Computer suspends after"), - [this, delayToLiteralString] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - TitledSliderItem *computerSleepOnBattery = new TitledSliderItem(tr("Computer suspends after")); - computerSleepOnBattery->setTitle(tr("Computer suspends after")); - computerSleepOnBattery->setAccessibleName(tr("Computer will suspend after")); - computerSleepOnBattery->slider()->setType(DCCSlider::Vernier); - computerSleepOnBattery->slider()->setRange(1, 7); - computerSleepOnBattery->slider()->setTickPosition(QSlider::TicksBelow); - computerSleepOnBattery->slider()->setTickInterval(1); - computerSleepOnBattery->slider()->setPageStep(1); - computerSleepOnBattery->setAnnotations(m_annos); - auto setScreenBlackDelayOnBattery = [computerSleepOnBattery, &delayToLiteralString] (const int delay) { - computerSleepOnBattery->slider()->blockSignals(true); - computerSleepOnBattery->slider()->setValue(delay); - computerSleepOnBattery->setValueLiteral(delayToLiteralString(delay)); - computerSleepOnBattery->slider()->blockSignals(false); - }; - setScreenBlackDelayOnBattery(m_model->sleepDelayOnBattery()); - connect(m_model, &PowerModel::sleepDelayChangedOnBattery, computerSleepOnBattery, setScreenBlackDelayOnBattery); - computerSleepOnBattery->setVisible(m_model->canSuspend() && m_model->getSuspend()); - connect(computerSleepOnBattery->slider(), &DCCSlider::valueChanged, this, &UseBatteryModule::requestSetSleepDelayOnBattery); - return computerSleepOnBattery; - }, false)); - - ItemModule *itemLidIsClosed = - new ItemModule("whenTheLidIsClosed", tr("When the lid is closed"), - [this] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - AlertComboBox *cmbCloseLid = new AlertComboBox(); - auto setCloseLidData = [this, cmbCloseLid] () { - updateComboxActionList(); - cmbCloseLid->blockSignals(true); - cmbCloseLid->clear(); - for (const auto &it : qAsConst(m_Options)) { - if (it == m_Options.first()) - continue; - cmbCloseLid->addItem(it.first, it.second); - } - for (int i = 0; i < cmbCloseLid->count(); i++) { - if (cmbCloseLid->itemData(i).toInt() == m_model->batteryLidClosedAction()) { - cmbCloseLid->setCurrentIndex(i); - break; - } - } - cmbCloseLid->blockSignals(false); - }; - - setCloseLidData(); - connect(cmbCloseLid, QOverload::of(&AlertComboBox::currentIndexChanged), this, [this, cmbCloseLid](int index) { - Q_EMIT requestSetBatteryLidClosedAction(cmbCloseLid->itemData(index).toInt()); - }); - connect(m_model, &PowerModel::batteryLidClosedActionChanged, cmbCloseLid, setCloseLidData); - return cmbCloseLid; - }); - itemLidIsClosed->setVisible(m_model->lidPresent()); - connect(m_model, &PowerModel::lidPresentChanged, itemLidIsClosed, &ItemModule::setVisible); - group->appendChild(itemLidIsClosed); - group->appendChild(new ItemModule("whenThePowerButtonIsPressed", tr("When the power button is pressed"), - [this] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - AlertComboBox *cmbPowerBtn = new AlertComboBox(); - auto setPowerButtonData = [this, cmbPowerBtn] () { - updateComboxActionList(); - cmbPowerBtn->blockSignals(true); - cmbPowerBtn->clear(); - for (const auto &it : qAsConst(m_Options)) { - cmbPowerBtn->addItem(it.first, it.second); - } - for (int i = 0; i < cmbPowerBtn->count(); i++) { - if (cmbPowerBtn->itemData(i).toInt() == m_model->batteryPressPowerBtnAction()) { - cmbPowerBtn->setCurrentIndex(i); - break; - } - } - cmbPowerBtn->blockSignals(false); - }; - setPowerButtonData(); - connect(cmbPowerBtn, QOverload::of(&AlertComboBox::currentIndexChanged), this, [this, cmbPowerBtn](int index) { - Q_EMIT requestSetBatteryPressPowerBtnAction(cmbPowerBtn->itemData(index).toInt()); - }); - connect(m_model, &PowerModel::batteryPressPowerBtnActionChanged, cmbPowerBtn, setPowerButtonData); - return cmbPowerBtn; - })); - - // 低电量设置 - appendChild(new TitleModule("lowBatteryTitle", tr("Low Battery"))); - group = new SettingsGroupModule("lowBatteryGroup", tr("Low Battery")); - group->setSpacing(10); - appendChild(group); - group->appendChild(new ItemModule("lowBatteryNotification", tr("Low battery notification"), - [this] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - DSwitchButton *swBatteryHint = new DSwitchButton(); - swBatteryHint->setChecked(m_model->lowPowerNotifyEnable()); - connect(m_model, &PowerModel::lowPowerNotifyEnableChanged, swBatteryHint, &DSwitchButton::setChecked); - - connect(swBatteryHint, &DSwitchButton::checkedChanged, this, [=](bool bLowPowerNotifyEnable) { - Q_EMIT requestSetLowPowerNotifyEnable(bLowPowerNotifyEnable); - }); -// Q_EMIT swBatteryHint->checkedChanged(m_model->lowPowerNotifyEnable()); - return swBatteryHint; - })); - - ItemModule *itemLowBatteryHint = - new ItemModule("lowBatteryLevel", tr("Low battery level"), - [this] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - DComboBox *cmbLowBatteryHint = new DComboBox(); - cmbLowBatteryHint->setAccessibleName("Low battery level"); - QStringList levels; - levels << "10%" - << "15%" - << "20%" - << "25%"; - QVector bindValues{10, 15, 20, 25}; - cmbLowBatteryHint->addItems(levels); - if (bindValues.indexOf(m_model->lowPowerNotifyThreshold()) < cmbLowBatteryHint->count()) { - cmbLowBatteryHint->setCurrentIndex(bindValues.indexOf(m_model->lowPowerNotifyThreshold())); - } - connect(cmbLowBatteryHint, QOverload::of(&DComboBox::currentIndexChanged), this, [=](int index) { - if (bindValues.count() > index) - Q_EMIT requestSetLowPowerNotifyThreshold(bindValues.value(index)); - }); - connect(m_model, &PowerModel::lowPowerNotifyThresholdChanged, cmbLowBatteryHint, [=](int value) { - if (bindValues.contains(value)) - cmbLowBatteryHint->setCurrentIndex(bindValues.indexOf(value)); - }); - return cmbLowBatteryHint; - }); - itemLowBatteryHint->setHidden(!(m_model->haveBettary() && m_model->lowPowerNotifyEnable())); - connect(m_model, &PowerModel::lowPowerNotifyEnableChanged, itemLowBatteryHint, [itemLowBatteryHint, this] (/*const bool state*/) { - itemLowBatteryHint->setHidden(!(m_model->haveBettary() && m_model->lowPowerNotifyEnable())); - }); - group->appendChild(itemLowBatteryHint); - - ItemModule *itemAutoSuspendBatteryLevel = - new ItemModule("autoSuspendBatteryLevel", tr("Auto suspend battery level"), - [this] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - DComboBox *cmbAutoSuspend = new DComboBox(); - cmbAutoSuspend->setAccessibleName("Auto suspend battery level"); - QStringList levels; - for (int i = 0; i < 9; i++) { - levels.append(QString("%1\%").arg(i + 1)); - } - cmbAutoSuspend->addItems(levels); - if (m_model->lowPowerAutoSleepThreshold() <= cmbAutoSuspend->count()) { - cmbAutoSuspend->setCurrentIndex(m_model->lowPowerAutoSleepThreshold() - 1); - } - connect(cmbAutoSuspend, QOverload::of(&DComboBox::currentIndexChanged), this, [=](int index) { - if (index < cmbAutoSuspend->count()) - Q_EMIT requestSetLowPowerAutoSleepThreshold(index + 1); - }); - connect(m_model, &PowerModel::lowPowerAutoSleepThresholdChanged, cmbAutoSuspend, [=] (const int value){ - cmbAutoSuspend->setCurrentIndex(value - 1); - }); - return cmbAutoSuspend; - }); - itemAutoSuspendBatteryLevel->setVisible(m_model->getSuspend()); - connect(m_model, &PowerModel::suspendChanged, itemAutoSuspendBatteryLevel, &ItemModule::setVisible); - group->appendChild(itemAutoSuspendBatteryLevel); - // 电池管理 - appendChild(new TitleModule("batteryManagementTitle", tr("Battery Management"))); - group = new SettingsGroupModule("batteryManagementGroup", tr("Battery Management")); - group->setSpacing(10); - appendChild(group); - group->appendChild(new ItemModule("displayRemainingUsingAndChargingTime", tr("Display remaining using and charging time"), - [] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - DSwitchButton *powerShowTimeToFull = new DSwitchButton(); - // depend dock dconfig setting "showtimetofull" - DConfig *cfgDock = DConfig::create("org.deepin.ds.dock", "org.deepin.ds.dock.power", QString(), powerShowTimeToFull); - powerShowTimeToFull->setChecked(cfgDock->value("showtimetofull").toBool()); - connect(powerShowTimeToFull, &DSwitchButton::checkedChanged, powerShowTimeToFull, [cfgDock, powerShowTimeToFull] (){ - // 保存设置值 - if (!cfgDock->value("showtimetofull").isNull()) { - cfgDock->setValue("showtimetofull", powerShowTimeToFull->isChecked()); - } - connect(cfgDock, &DConfig::valueChanged, powerShowTimeToFull, [cfgDock, powerShowTimeToFull] (const QString &key) { - if ("showtimetofull" == key) { - powerShowTimeToFull->setChecked(cfgDock->value("showtimetofull").toBool()); - } - }); - }); - return powerShowTimeToFull; - })); - - group->appendChild(new ItemModule("maximumCapacity", tr("Maximum capacity"), - [this] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - TitleValueItem *ShowTimeToFullTips = new TitleValueItem(); - ShowTimeToFullTips->setValue(QString::number(int(m_work->getBatteryCapacity())) + "%"); - return ShowTimeToFullTips; - })); -} - -void UseBatteryModule::updateComboxActionList() -{ - m_Options.clear(); - if (m_model->getShutdown()) { - m_Options.append({ tr("Shut down"), 0 }); - } - if (m_model->canSuspend()) { - m_Options.append({ tr("Suspend"), 1 }); - } - if (m_model->canHibernate()) { - m_Options.append({ tr("Hibernate"), 2 }); - } - m_Options.append({ tr("Turn off the monitor"), 3 }); - m_Options.append({ tr("Show the shutdown Interface"), 4 }); - m_Options.append({ tr("Do nothing"), 5 }); -} - -QString UseBatteryModule::delayToLiteralString(const int delay) const -{ - QString strData = ""; - - switch (delay) { - case 1: - strData = tr("1 Minute"); - break; - case 2: - strData = tr("%1 Minutes").arg(5); - break; - case 3: - strData = tr("%1 Minutes").arg(10); - break; - case 4: - strData = tr("%1 Minutes").arg(15); - break; - case 5: - strData = tr("%1 Minutes").arg(30); - break; - case 6: - strData = tr("1 Hour"); - break; - case 7: - strData = tr("Never"); - break; - default: - strData = tr("%1 Minutes").arg(15); - break; - } - - return strData; -} diff --git a/dcc-old/src/plugin-power/window/usebatterymodule.h b/dcc-old/src/plugin-power/window/usebatterymodule.h deleted file mode 100644 index e6e6eb6bc5..0000000000 --- a/dcc-old/src/plugin-power/window/usebatterymodule.h +++ /dev/null @@ -1,56 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef USEBATTERYMODULE_H -#define USEBATTERYMODULE_H - -#include "interface/pagemodule.h" - -#include - -namespace DCC_NAMESPACE { -class SettingsGroup; -class ComboxWidget; -class TitledSliderItem; -class SwitchWidget; -} - -class PowerModel; -class PowerWorker; - -class UseBatteryModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit UseBatteryModule(PowerModel *model, PowerWorker *work, QObject *parent = nullptr); - ~UseBatteryModule() override; - void active() override; - void deactive() override; - -Q_SIGNALS: - void requestSetScreenBlackDelayOnBattery(const int delay) const; - void requestSetSleepDelayOnBattery(const int delay) const; - void requestSetAutoLockScreenOnBattery(const int delay) const; - void requestSetLowPowerNotifyEnable(const bool bState) const; // 低电量通知 - void requestSetBatteryPressPowerBtnAction(const int reply) const; // 按下电源 - void requestSetBatteryLidClosedAction(const int reply) const; // 合上盖子 - void requestSetLowPowerNotifyThreshold(const int dValue); // 低电量通知阈值 - void requestSetLowPowerAutoSleepThreshold(const int dValue); // 进入待机模式阈值 - -public Q_SLOTS: - -private: - void initUI(); - void updateComboxActionList(); - - QString delayToLiteralString(const int delay) const; - void setComboBox(DCC_NAMESPACE::ComboxWidget *combox, QList>::iterator first, QList>::iterator last); - void setComboBoxValue(DCC_NAMESPACE::ComboxWidget *combox, int data); - -private: - PowerModel *m_model; - PowerWorker *m_work; - const QStringList m_annos; - QList> m_Options; -}; -#endif // USEBATTERYMODULE_H diff --git a/dcc-old/src/plugin-power/window/useelectricmodule.cpp b/dcc-old/src/plugin-power/window/useelectricmodule.cpp deleted file mode 100644 index c05537ae6d..0000000000 --- a/dcc-old/src/plugin-power/window/useelectricmodule.cpp +++ /dev/null @@ -1,255 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "useelectricmodule.h" -#include "powermodel.h" -#include "powerworker.h" -#include "utils.h" -#include "widgets/comboxwidget.h" -#include "widgets/titledslideritem.h" -#include "widgets/dccslider.h" -#include "titlemodule.h" -#include "settingsgroupmodule.h" -#include "itemmodule.h" - -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE -DCORE_USE_NAMESPACE - -UseElectricModule::UseElectricModule(PowerModel *model, PowerWorker *work, QObject *parent) - : PageModule("pluggedIn", tr("Plugged In"), DIconTheme::findQIcon("dcc_using_electric"), parent) - , m_model(model) - , m_work(work) -{ - connect(this, &UseElectricModule::requestSetScreenBlackDelayOnPower, m_work, &PowerWorker::setScreenBlackDelayOnPower); - connect(this, &UseElectricModule::requestSetSleepDelayOnPower, m_work, &PowerWorker::setSleepDelayOnPower); - connect(this, &UseElectricModule::requestSetSleepOnLidOnPowerClosed, m_work, &PowerWorker::setSleepOnLidOnPowerClosed); //Suspend on lid close not using??? - connect(this, &UseElectricModule::requestSetAutoLockScreenOnPower, m_work, &PowerWorker::setLockScreenDelayOnPower); - - connect(this, &UseElectricModule::requestSetLinePowerPressPowerBtnAction, m_work, &PowerWorker::setLinePowerPressPowerBtnAction); - connect(this, &UseElectricModule::requestSetLinePowerLidClosedAction, m_work, &PowerWorker::setLinePowerLidClosedAction); - - initUI(); -} - -UseElectricModule::~UseElectricModule() -{ -} - -void UseElectricModule::deactive() -{ -} - -void UseElectricModule::initUI() -{ - auto delayToLiteralString = [] (const int delay) ->QString const { - QString strData = ""; - - switch (delay) { - case 1: - strData = tr("1 Minute"); - break; - case 2: - strData = tr("%1 Minutes").arg(5); - break; - case 3: - strData = tr("%1 Minutes").arg(10); - break; - case 4: - strData = tr("%1 Minutes").arg(15); - break; - case 5: - strData = tr("%1 Minutes").arg(30); - break; - case 6: - strData = tr("1 Hour"); - break; - case 7: - strData = tr("Never"); - break; - default: - strData = tr("%1 Minutes").arg(15); - break; - } - - return strData; - }; - - // 电源设置 - appendChild(new TitleModule("screenAndSuspendTitle", tr("Screen and Suspend"))); - SettingsGroupModule *group = new SettingsGroupModule("screenAndSuspendGroup", tr("Screen and Suspend")); - group->setSpacing(10); - appendChild(group); - QStringList annos; - annos << "1m" - << "5m" - << "10m" - << "15m" - << "30m" - << "1h" - << tr("Never"); - group->appendChild(new ItemModule("turnOffTheMonitorAfter", tr("Turn off the monitor after"), - [this, annos, &delayToLiteralString] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - TitledSliderItem *monitorSleepOnPower = new TitledSliderItem(tr("Turn off the monitor after")); - monitorSleepOnPower->setAccessibleName(tr("Turn off the monitor after")); - monitorSleepOnPower->slider()->setType(DCCSlider::Vernier); - monitorSleepOnPower->slider()->setRange(1, 7); - monitorSleepOnPower->slider()->setTickPosition(QSlider::TicksBelow); - monitorSleepOnPower->slider()->setTickInterval(1); - monitorSleepOnPower->slider()->setPageStep(1); - monitorSleepOnPower->setAnnotations(annos); - connect(monitorSleepOnPower->slider(), &DCCSlider::valueChanged, this, &UseElectricModule::requestSetScreenBlackDelayOnPower); - auto setScreenBlackDelayOnPower = [monitorSleepOnPower, &delayToLiteralString] (const int delay) { - monitorSleepOnPower->slider()->blockSignals(true); - monitorSleepOnPower->slider()->setValue(delay); - monitorSleepOnPower->setValueLiteral(delayToLiteralString(delay)); - monitorSleepOnPower->slider()->blockSignals(false); - }; - setScreenBlackDelayOnPower(m_model->screenBlackDelayOnPower()); - connect(m_model, &PowerModel::screenBlackDelayChangedOnPower, monitorSleepOnPower, setScreenBlackDelayOnPower); - return monitorSleepOnPower; - }, false)); - - group->appendChild(new ItemModule("lockScreenAfter", tr("Lock screen after"), - [this, annos, &delayToLiteralString] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - TitledSliderItem *autoLockScreen = new TitledSliderItem(tr("Lock screen after")); - autoLockScreen->setAccessibleName(tr("Lock screen after")); - autoLockScreen->slider()->setType(DCCSlider::Vernier); - autoLockScreen->slider()->setRange(1, 7); - autoLockScreen->slider()->setTickPosition(QSlider::TicksBelow); - autoLockScreen->slider()->setTickInterval(1); - autoLockScreen->slider()->setPageStep(1); - autoLockScreen->setAnnotations(annos); - auto setLockScreenAfter = [autoLockScreen, &delayToLiteralString] (const int delay) { - autoLockScreen->slider()->blockSignals(true); - autoLockScreen->slider()->setValue(delay); - autoLockScreen->setValueLiteral(delayToLiteralString(delay)); - autoLockScreen->slider()->blockSignals(false); - }; - setLockScreenAfter(m_model->getPowerLockScreenDelay()); - connect(m_model, &PowerModel::powerLockScreenDelayChanged, autoLockScreen, setLockScreenAfter); - connect(autoLockScreen->slider(), &DCCSlider::valueChanged, this, &UseElectricModule::requestSetAutoLockScreenOnPower); - return autoLockScreen; - }, false)); - - if (!IsServerSystem) { - group->appendChild(new ItemModule("computerSuspendsAfter", tr("Computer suspends after"), - [this, annos, &delayToLiteralString] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - TitledSliderItem *computerSleepOnPower = new TitledSliderItem(tr("Computer suspends after")); - computerSleepOnPower->setAccessibleName(tr("Computer suspends after")); - computerSleepOnPower->slider()->setType(DCCSlider::Vernier); - computerSleepOnPower->slider()->setRange(1, 7); - computerSleepOnPower->slider()->setTickPosition(QSlider::TicksBelow); - computerSleepOnPower->slider()->setTickInterval(1); - computerSleepOnPower->slider()->setPageStep(1); - computerSleepOnPower->setAnnotations(annos); - connect(computerSleepOnPower->slider(), &DCCSlider::valueChanged, this, &UseElectricModule::requestSetSleepDelayOnPower); - auto setSleepDelayOnPower = [computerSleepOnPower, &delayToLiteralString] (const int delay) { - computerSleepOnPower->slider()->blockSignals(true); - computerSleepOnPower->slider()->setValue(delay); - computerSleepOnPower->setValueLiteral(delayToLiteralString(delay)); - computerSleepOnPower->slider()->blockSignals(false); - }; - setSleepDelayOnPower(m_model->sleepDelayOnPower()); - connect(m_model, &PowerModel::sleepDelayChangedOnPower, computerSleepOnPower, setSleepDelayOnPower); - computerSleepOnPower->setVisible(m_model->canSuspend() && m_model->getSuspend()); - return computerSleepOnPower; - }, false)); - } - - //combox - ItemModule *itemLidIsClosed = - new ItemModule("whenTheLidIsClosed", tr("When the lid is closed"), - [this](ModuleObject *module) -> QWidget * { - Q_UNUSED(module) - AlertComboBox *cmbCloseLid = new AlertComboBox(); - - auto setCloseLidData = [this, cmbCloseLid]() { - updateComboxActionList(); - cmbCloseLid->blockSignals(true); - cmbCloseLid->clear(); - for (const auto &it : qAsConst(m_comboxOptions)) { - if (it == m_comboxOptions.first()) - continue; - cmbCloseLid->addItem(it.first, it.second); - } - for (int i = 0; i < cmbCloseLid->count(); i++) { - if (cmbCloseLid->itemData(i).toInt() == m_model->linePowerLidClosedAction()) { - cmbCloseLid->setCurrentIndex(i); - break; - } - } - cmbCloseLid->blockSignals(false); - }; - - setCloseLidData(); - connect(m_model, &PowerModel::hibernateChanged, cmbCloseLid, setCloseLidData); - connect(m_model, &PowerModel::suspendChanged, cmbCloseLid, setCloseLidData); - connect(m_model, &PowerModel::linePowerLidClosedActionChanged, cmbCloseLid, setCloseLidData); - connect(cmbCloseLid, QOverload::of(&AlertComboBox::currentIndexChanged), this, [this, cmbCloseLid](int index) { - Q_EMIT requestSetLinePowerLidClosedAction(cmbCloseLid->itemData(index).toInt()); - }); - return cmbCloseLid; - }); - itemLidIsClosed->setVisible(m_model->lidPresent()); - connect(m_model, &PowerModel::lidPresentChanged, itemLidIsClosed, &ItemModule::setVisible); - group->appendChild(itemLidIsClosed); - - group->appendChild(new ItemModule("whenThePowerButtonIsPressed", tr("When the power button is pressed"), - [this] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - AlertComboBox *cmbPowerButton = new AlertComboBox(); - auto setPowerButtonData = [this, cmbPowerButton] () { - updateComboxActionList(); - cmbPowerButton->blockSignals(true); - cmbPowerButton->clear(); - for (const auto &it : qAsConst(m_comboxOptions)) { - cmbPowerButton->addItem(it.first, it.second); - } - for (int i = 0; i < cmbPowerButton->count(); i++) { - if (cmbPowerButton->itemData(i).toInt() == m_model->linePowerPressPowerBtnAction()) { - cmbPowerButton->setCurrentIndex(i); - break; - } - } - cmbPowerButton->blockSignals(false); - }; - - setPowerButtonData(); - connect(m_model, &PowerModel::hibernateChanged, cmbPowerButton, setPowerButtonData); - connect(m_model, &PowerModel::suspendChanged, cmbPowerButton, setPowerButtonData); - connect(m_model, &PowerModel::shutdownChanged, cmbPowerButton, setPowerButtonData); - connect(m_model, &PowerModel::linePowerPressPowerBtnActionChanged, cmbPowerButton, setPowerButtonData); - connect(cmbPowerButton, QOverload::of(&AlertComboBox::currentIndexChanged), this, [this, cmbPowerButton](int index) { - Q_EMIT requestSetLinePowerPressPowerBtnAction(cmbPowerButton->itemData(index).toInt()); - }); - return cmbPowerButton; - })); - - - appendChild(new ModuleObject); // 多个项时才会加弹簧 -} - -void UseElectricModule::updateComboxActionList() -{ - m_comboxOptions.clear(); - if (m_model->getShutdown()) { - m_comboxOptions.append({ tr("Shut down"), 0 }); - } - if (m_model->canSuspend()) { - m_comboxOptions.append({ tr("Suspend"), 1 }); - } - if (m_model->canHibernate()) { - m_comboxOptions.append({ tr("Hibernate"), 2 }); - } - m_comboxOptions.append({ tr("Turn off the monitor"), 3 }); - m_comboxOptions.append({ tr("Show the shutdown Interface"), 4 }); - m_comboxOptions.append({ tr("Do nothing"), 5 }); -} diff --git a/dcc-old/src/plugin-power/window/useelectricmodule.h b/dcc-old/src/plugin-power/window/useelectricmodule.h deleted file mode 100644 index 6a0edafb47..0000000000 --- a/dcc-old/src/plugin-power/window/useelectricmodule.h +++ /dev/null @@ -1,40 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef USEELECTRICMODULE_H -#define USEELECTRICMODULE_H - -#include "interface/pagemodule.h" - -#include - -class PowerModel; -class PowerWorker; - -class UseElectricModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit UseElectricModule(PowerModel *model, PowerWorker *work, QObject *parent = nullptr); - ~UseElectricModule() override; - void deactive() override; - -Q_SIGNALS: - void requestSetScreenBlackDelayOnPower(const int delay) const; - void requestSetSleepDelayOnPower(const int delay) const; - void requestSetAutoLockScreenOnPower(const int delay) const; - void requestSetSleepOnLidOnPowerClosed(const bool sleep) const; - void requestSetLinePowerPressPowerBtnAction(const int reply) const; //按下电源 - void requestSetLinePowerLidClosedAction(const int reply) const; //合上盖子 - -private: - void initUI(); - void updateComboxActionList(); - -private: - PowerModel *m_model; - PowerWorker *m_work; - QList> m_comboxOptions; -}; - -#endif // USEELECTRICMODULE_H diff --git a/dcc-old/src/plugin-power/window/utils.h b/dcc-old/src/plugin-power/window/utils.h deleted file mode 100644 index ad995c197d..0000000000 --- a/dcc-old/src/plugin-power/window/utils.h +++ /dev/null @@ -1,14 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UTILS_H -#define UTILS_H - -#include -#include - -inline const static Dtk::Core::DSysInfo::UosType UosType = Dtk::Core::DSysInfo::uosType(); -inline const static bool IsServerSystem = - (Dtk::Core::DSysInfo::UosServer == UosType); // 是否是服务器版 - -#endif // UTILS_H diff --git a/dcc-old/src/plugin-privacy/operation/privacyplugin.cpp b/dcc-old/src/plugin-privacy/operation/privacyplugin.cpp deleted file mode 100644 index d6f26079eb..0000000000 --- a/dcc-old/src/plugin-privacy/operation/privacyplugin.cpp +++ /dev/null @@ -1,62 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "privacyplugin.h" -#include "privacysecuritymodel.h" -#include "privacysecurityworker.h" -#include "widgets/widgetmodule.h" - -#include - -/* -相机、麦克风、所有文件夹、用户文件夹、日历、屏幕截图、 -强制重启设备、卸载应用、修改系统目录 -*/ - -using namespace DCC_NAMESPACE; - -PrivacyModule::PrivacyModule(QObject *parent) - : VListModule("privacyAndSecurity", tr("Privacy and Security"), tr("Privacy and Security"), DIconTheme::findQIcon("dcc_nav_privacy"),parent) - , m_model(new PrivacySecurityModel(this)) - , m_work(new PrivacySecurityWorker(m_model, this)) -{ - for (DCC_PRIVACY_NAMESPACE::DATE iter : m_model->getModuleInfo()) { - // 添加三级页面 - appendChild(new ServiceSettingsModule(iter, m_model, m_work, this)); - } -} - -void PrivacyModule::active() -{ - m_work->activate(); -} - -PrivacyPlugin::PrivacyPlugin() - : PluginInterface() - , m_moduleRoot(nullptr) -{ -} - -PrivacyPlugin::~PrivacyPlugin() -{ - m_moduleRoot = nullptr; -} - -QString PrivacyPlugin::name() const -{ - return QStringLiteral("privacyAndSecurity"); -} - -ModuleObject *PrivacyPlugin::module() -{ - if (m_moduleRoot) - return m_moduleRoot; - - m_moduleRoot = new PrivacyModule; - return m_moduleRoot; -} - -QString PrivacyPlugin::location() const -{ - return "0"; -} diff --git a/dcc-old/src/plugin-privacy/operation/privacyplugin.h b/dcc-old/src/plugin-privacy/operation/privacyplugin.h deleted file mode 100644 index 2835777812..0000000000 --- a/dcc-old/src/plugin-privacy/operation/privacyplugin.h +++ /dev/null @@ -1,49 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PRIVACYPLUGIN_H -#define PRIVACYPLUGIN_H - -#include "interface/vlistmodule.h" -#include "interface/plugininterface.h" - -#include - -class PrivacySecurityWorker; -class PrivacySecurityModel; - -class PrivacyPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Privacy" FILE "PrivacyPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit PrivacyPlugin(); - ~PrivacyPlugin() override; - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; - -private: - DCC_NAMESPACE::ModuleObject *m_moduleRoot; -}; - -// 一级 -class PrivacyModule : public DCC_NAMESPACE::VListModule -{ - Q_OBJECT -public: - explicit PrivacyModule(QObject *parent = nullptr); - ~PrivacyModule() override {} - virtual void active() override; - - PrivacySecurityWorker *work() { return m_work; } - PrivacySecurityModel *model() { return m_model; } - -private: - PrivacySecurityModel *m_model; - PrivacySecurityWorker *m_work; -}; - -#endif // DatetimePLUGIN_H diff --git a/dcc-old/src/plugin-privacy/operation/privacysecuritydbusproxy.cpp b/dcc-old/src/plugin-privacy/operation/privacysecuritydbusproxy.cpp deleted file mode 100644 index 22814d317e..0000000000 --- a/dcc-old/src/plugin-privacy/operation/privacysecuritydbusproxy.cpp +++ /dev/null @@ -1,72 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "privacysecuritydbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include -#include -#include - -#include - -const static QString PermissionService = QStringLiteral("org.desktopspec.permission"); -const static QString PermissionPath = QStringLiteral("/org/desktopspec/permission"); -const static QString PermissionInterface = QStringLiteral("org.desktopspec.permission"); - -using namespace DCC_NAMESPACE; -PrivacySecurityDBusProxy::PrivacySecurityDBusProxy(QObject *parent) - : QObject(parent) - , m_privacyInter(new DDBusInterface(PermissionService, PermissionPath, PermissionInterface, QDBusConnection::sessionBus(), this)) -{ - connect(this, &PrivacySecurityDBusProxy::PermissionInfoChanged, this, &PrivacySecurityDBusProxy::getPermissionInfo); -} - -void PrivacySecurityDBusProxy::getPermissionInfo() -{ - qDebug() << " PrivacySecurityDBusProxy::GetPermissionInfo "; - // 使用异步回调展示数据 - QList argumentList; - m_privacyInter->callWithCallback(QStringLiteral("GetPermissionInfo"), argumentList, this, SIGNAL(permissionInfoLoadFinished(QString))); -} - -void PrivacySecurityDBusProxy::setPermissionInfo(const QString &appId, const QString &permissionGroup, const QString &permissionId, const QString &value) -{ - QDBusPendingCall pcall = m_privacyInter->asyncCall(QStringLiteral("SetPermissionInfo"), appId, permissionGroup, permissionId, value); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher, permissionGroup, permissionId](QDBusPendingCallWatcher *watch){ - QDBusPendingReply reply = *watch; - if (!reply.isError() && !reply.value()) { - Q_EMIT permissionInfoReset(permissionGroup, permissionId); - } else if (!reply.isError() && reply.value()) { - this->getPermissionInfo(); - } else { - qDebug() << "setPermissionInfo ==> value: " << reply.value() << "ERROR: " << reply.error(); - } - watcher->deleteLater(); - }); -} - -void PrivacySecurityDBusProxy::getPermissionEnable(const QString &permissionGroup, const QString &permissionId) -{ - QList argumentList; - argumentList << permissionGroup << permissionId; - m_privacyInter->callWithCallback(QStringLiteral("GetPermissionEnable"), argumentList, this, SIGNAL(permissionEnableLoadFinished(bool))); -} - -void PrivacySecurityDBusProxy::setPermissionEnable(const QString &permissionGroup, const QString &permissionId, bool enable) -{ - QDBusPendingCall pcall = m_privacyInter->asyncCall(QStringLiteral("SetPermissionEnable"), permissionGroup, permissionId, enable); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(pcall, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, watcher, permissionGroup, permissionId](QDBusPendingCallWatcher *watch){ - QDBusPendingReply reply = *watch; - if (!reply.isError() && !reply.value()) { - Q_EMIT permissionEnableReset(permissionGroup, permissionId); - } else { - qDebug() << "setPermissionEnable ==> value: " << reply.value() << "ERROR: " << reply.error(); - } - watcher->deleteLater(); - }); -} diff --git a/dcc-old/src/plugin-privacy/operation/privacysecuritydbusproxy.h b/dcc-old/src/plugin-privacy/operation/privacysecuritydbusproxy.h deleted file mode 100644 index 945a1f40b4..0000000000 --- a/dcc-old/src/plugin-privacy/operation/privacysecuritydbusproxy.h +++ /dev/null @@ -1,44 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PRIVACYSECURITYDBUSPROXY_H -#define PRIVACYSECURITYDBUSPROXY_H - -#include -#include "interface/namespace.h" - -#include - -using Dtk::Core::DDBusInterface; - - -class PrivacySecurityDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit PrivacySecurityDBusProxy(QObject *parent = nullptr); - - void getPermissionInfo(); - - // 设置权限信息 - void setPermissionInfo(const QString& appId, const QString& permissionGroup, const QString& permissionId, const QString& value); - // 设置权限开关 - void getPermissionEnable(const QString& permissionGroup, const QString& permissionId); - void setPermissionEnable(const QString& permissionGroup, const QString& permissionId, bool enable); - -Q_SIGNALS: - void PermissionEnableChanged(const QString& permissionGroup, const QString& permissionId, bool enable); - void PermissionInfoChanged(); - - void permissionEnableReset(const QString &permissionGroup, const QString &permissionId); - void permissionInfoReset(const QString &permissionGroup, const QString &permissionId); - // 数据加载完成 - void permissionInfoLoadFinished(const QString& perInfo); - // 服务状态回调 - void permissionEnableLoadFinished(const bool loadState); - -private: - DDBusInterface *m_privacyInter; -}; - -#endif // SECURITYDBUSPROXY_H diff --git a/dcc-old/src/plugin-privacy/operation/privacysecuritymodel.cpp b/dcc-old/src/plugin-privacy/operation/privacysecuritymodel.cpp deleted file mode 100644 index ad86165a61..0000000000 --- a/dcc-old/src/plugin-privacy/operation/privacysecuritymodel.cpp +++ /dev/null @@ -1,86 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "privacysecuritymodel.h" - -#include - -#include - -using namespace DCC_PRIVACY_NAMESPACE; -PrivacySecurityModel::PrivacySecurityModel(QObject *parent) - : QObject(parent) -{ - // TODO: linglong数据不一致 做调整 - m_serviceToCategory.insert("camera" , ServiceCategory::Camera); - m_serviceToCategory.insert("mic" , ServiceCategory::Microphone); - m_serviceToCategory.insert("userdir" , ServiceCategory::UserFolders); - m_serviceToCategory.insert("calendar" , ServiceCategory::Calendar); - m_serviceToCategory.insert("screenshot" , ServiceCategory::Screenshots); - - // TODO: 目前与linglong协定的权限id作为插件的name用于跳转 - m_moduleInfo = { - DCC_PRIVACY_NAMESPACE::DATE("camera",tr("Camera"), "dcc_camera", ServiceCategory::Camera), - DCC_PRIVACY_NAMESPACE::DATE("mic",tr("Microphone"), "dcc_microphone", ServiceCategory::Microphone), - DCC_PRIVACY_NAMESPACE::DATE("userdir",tr("User Folders"), "folder", ServiceCategory::UserFolders), - DCC_PRIVACY_NAMESPACE::DATE("calendar",tr("Calendar"), "dde-calendar", ServiceCategory::Calendar), - DCC_PRIVACY_NAMESPACE::DATE("screenshot",tr("Screen Capture"), "deepin-screen-recorder", ServiceCategory::Screenshots), - }; - - initServiceItems(); -} - -QList PrivacySecurityModel::getModuleInfo() -{ - return m_moduleInfo; -} - -ServiceCategory PrivacySecurityModel::getCategory(const QString &serviceName) -{ - return m_serviceToCategory[serviceName]; -} - -void PrivacySecurityModel::initServiceItems() -{ - qDebug() << "Get serviceItems: " << m_serviceToCategory.values().size(); - for (ServiceCategory cate : m_serviceToCategory.values()) { - qDebug() << "set Cate: " << cate; - m_groupService.append(new ServiceControlItems(cate, this)); - } - qDebug() << m_groupService.size(); -} - -QString PrivacySecurityModel::getDaemonDefineName(ServiceCategory category) -{ - return m_serviceToCategory.key(category); -} - -ServiceControlItems *PrivacySecurityModel::getServiceItem(const QString &daemonDefineName) -{ - for (ServiceControlItems *item : m_groupService) { - if (item->currentCategory() == m_serviceToCategory[daemonDefineName]) { - return item; - } - } - return nullptr; -} - -ServiceControlItems *PrivacySecurityModel::getServiceItem(ServiceCategory category) -{ - for (ServiceControlItems *item : m_groupService) { - if (item->currentCategory() == category) { - return item; - } - } - return nullptr; -} - -void PrivacySecurityModel::clearServiceItemDate() -{ - for (ServiceControlItems *item : m_groupService) { - item->clearServiceApps(); - } -} - - - diff --git a/dcc-old/src/plugin-privacy/operation/privacysecuritymodel.h b/dcc-old/src/plugin-privacy/operation/privacysecuritymodel.h deleted file mode 100644 index 54a760c456..0000000000 --- a/dcc-old/src/plugin-privacy/operation/privacysecuritymodel.h +++ /dev/null @@ -1,65 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PRIVACYSECURITYMODEL_H -#define PRIVACYSECURITYMODEL_H - -#include -#include - -class ServiceControlItems; - -namespace DCC_PRIVACY_NAMESPACE { -enum ServiceCategory : int{ - Camera, - Microphone, - UserFolders, - Calendar, - Screenshots -}; - -struct DATE { - QString name; - QString displayName; - QString icon; - ServiceCategory category; - DATE(const QString &_name, const QString &_displayName, const QString _icon, ServiceCategory _category) - : name(_name) - , displayName(_displayName) - , icon(_icon) - , category(_category) - {} -}; -} - -class PrivacySecurityModel : public QObject -{ - Q_OBJECT -public: - explicit PrivacySecurityModel(QObject *parent = nullptr); - - void initServiceItems(); - - QString getDaemonDefineName(DCC_PRIVACY_NAMESPACE::ServiceCategory category); - - QList getModuleInfo(); - QMap getServiceVategory() { return m_serviceToCategory; } - - DCC_PRIVACY_NAMESPACE::ServiceCategory getCategory(const QString &serviceName); - - // TODO: 后期需要加组信息,确认返回的Item - ServiceControlItems* getServiceItem(const QString &daemonDefineName); - ServiceControlItems* getServiceItem(DCC_PRIVACY_NAMESPACE::ServiceCategory category); - - bool findService(); - void clearServiceItemDate(); - -private: - QMap m_serviceToCategory; - QList m_moduleInfo; - - QList m_groupService; -// QMap m_appListInconPath; // 应用图标路径 -}; - -#endif // PRIVACYSECURITYMODEL_H diff --git a/dcc-old/src/plugin-privacy/operation/privacysecurityworker.cpp b/dcc-old/src/plugin-privacy/operation/privacysecurityworker.cpp deleted file mode 100644 index bf773892e4..0000000000 --- a/dcc-old/src/plugin-privacy/operation/privacysecurityworker.cpp +++ /dev/null @@ -1,158 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "privacysecurityworker.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -PrivacySecurityWorker::PrivacySecurityWorker(PrivacySecurityModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_privacyDBusInter(new PrivacySecurityDBusProxy(this)) -{ - connect(m_privacyDBusInter, &PrivacySecurityDBusProxy::permissionInfoLoadFinished, this, &PrivacySecurityWorker::permissionInfoLoadFinished); - connect(m_privacyDBusInter, &PrivacySecurityDBusProxy::PermissionEnableChanged, this, &PrivacySecurityWorker::refreshPermissionState); - connect(m_privacyDBusInter, &PrivacySecurityDBusProxy::permissionEnableReset, this, &PrivacySecurityWorker::resetPermissionState); - connect(m_privacyDBusInter, &PrivacySecurityDBusProxy::permissionInfoReset, this, &PrivacySecurityWorker::resetPermissionInfo); -} - -PrivacySecurityWorker::~PrivacySecurityWorker() -{ - -} - -void PrivacySecurityWorker::activate() -{ - m_privacyDBusInter->getPermissionInfo(); -} - -void PrivacySecurityWorker::deactivate() -{ - -} - -void PrivacySecurityWorker::permissionInfoLoadFinished(const QString &perInfo) -{ - qDebug() << " perInfo : " << perInfo; - // 解析JSON - QJsonDocument doc = QJsonDocument::fromJson(perInfo.toUtf8()); - QJsonArray groupDate = doc.array(); - - if (groupDate.isEmpty()) { - // 若为空 清空所有数据 - m_model->clearServiceItemDate(); - return; - } - - // TODO: 目前只保留一个组 后期会拓展 - QJsonValue valueDate = groupDate.at(0); - QJsonObject groupCards = valueDate.toObject(); - - const QString group = static_cast(groupCards["group"].toString()); - - QStringList permissionDevice; - - // 获取设备权限信息 - QJsonArray permissionInfoDate = groupCards["permissionInfo"].toArray(); - qDebug() << permissionInfoDate.size(); - for (QJsonValue perInfo : permissionInfoDate) { - QJsonObject perInfoObj = perInfo.toObject(); - - const QString permission = perInfoObj["permission"].toString(); - if (!m_model->getServiceVategory().keys().contains(permission)) - continue; - - if (!permissionDevice.contains(permission)) - permissionDevice.append(permission); - - QJsonArray appInfoDate = perInfoObj["appInfo"].toArray(); - qDebug() << "get Apps count: " << appInfoDate.count(); - - saveServiceApps(group, permission, appInfoDate); - } -} - -void PrivacySecurityWorker::saveServiceApps(const QString ¤tGroup, const QString &dameonDefineName, const QJsonArray &appInfoDate) -{ - // 根据后端定义的名称 转换获取SerivceItem保存数据 - ServiceControlItems *serviceItem = m_model->getServiceItem(dameonDefineName); - serviceItem->setServiceGroup(currentGroup); - getPermissionEnable(currentGroup, dameonDefineName); - serviceItem->setServiceAvailable(!appInfoDate.isEmpty()); - if (!serviceItem) { - qDebug() << dameonDefineName << "non-existent"; - return; - } - - QList tmpApss; - for (QJsonValue appInfo : appInfoDate) { - QJsonObject appInfoObj = appInfo.toObject(); - - const QString &appName = appInfoObj["appName"].toString(); - const QString &enable = appInfoObj["value"].toString(); - App app; - app.m_name = appName; - app.m_enable = enable; - qDebug() << " Add Apps: " << appName << enable; - tmpApss.append(app); - } - serviceItem->setServiceApps(tmpApss); -} - -void PrivacySecurityWorker::refreshPermissionState(const QString &permissionGroup, const QString &permissionId, bool enable) -{ - Q_UNUSED(permissionGroup); - ServiceControlItems *serviceItem = m_model->getServiceItem(permissionId); - serviceItem->setSwitchState(enable); -} - -void PrivacySecurityWorker::resetPermissionState(const QString &permissionGroup, const QString &permissionId) -{ - Q_UNUSED(permissionGroup); - ServiceControlItems *serviceItem = m_model->getServiceItem(permissionId); - qDebug() << "serviceItem->getSwitchState(): " << serviceItem->getSwitchState(); - serviceItem->serviceSwitchStateChange(serviceItem->getSwitchState()); -} - -void PrivacySecurityWorker::resetPermissionInfo(const QString &permissionGroup, const QString &permissionId) -{ - Q_UNUSED(permissionGroup); - ServiceControlItems *serviceItem = m_model->getServiceItem(permissionId); - serviceItem->serviceAppsDateChange(); -} - -const QString PrivacySecurityWorker::getIconPath(const QString &appName) -{ - // TODO: 异步获取 IconPath - return nullptr; -} - -void PrivacySecurityWorker::getPermissionEnable(const QString &permissionGroup, const QString &permissionId) -{ - disconnect(m_privacyDBusInter, &PrivacySecurityDBusProxy::permissionEnableLoadFinished, this, nullptr); - connect(m_privacyDBusInter, &PrivacySecurityDBusProxy::permissionEnableLoadFinished, this, [=](bool permissionEnable){ - qDebug() << "getPermissionEnable : " << permissionEnable; - refreshPermissionState(permissionGroup, permissionId, permissionEnable); - }); - m_privacyDBusInter->getPermissionEnable(permissionGroup, permissionId); -} - -void PrivacySecurityWorker::setPermissionEnable(const QString &permissionGroup, const QString &permissionId, bool enable) -{ - m_privacyDBusInter->setPermissionEnable(permissionGroup, permissionId, enable); -} - -void PrivacySecurityWorker::setPermissionInfo(const QString &appId, const QString &permissionGroup, const QString &permissionId, const QString &value) -{ - m_privacyDBusInter->setPermissionInfo(appId, permissionGroup, permissionId, value); -} - diff --git a/dcc-old/src/plugin-privacy/operation/privacysecurityworker.h b/dcc-old/src/plugin-privacy/operation/privacysecurityworker.h deleted file mode 100644 index a00cfac6e4..0000000000 --- a/dcc-old/src/plugin-privacy/operation/privacysecurityworker.h +++ /dev/null @@ -1,47 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef PRIVACYSECURITYWORKER_H -#define PRIVACYSECURITYWORKER_H - -#include -#include "privacysecuritydbusproxy.h" -#include "privacysecuritymodel.h" - -class PrivacySecurityWorker : public QObject -{ - Q_OBJECT -public: - explicit PrivacySecurityWorker(PrivacySecurityModel *model, QObject *parent = nullptr); - ~PrivacySecurityWorker(); - - void activate(); - void deactivate(); - -public: - void permissionInfoLoadFinished(const QString &perInfo); - // 设置总开关 - void getPermissionEnable(const QString& permissionGroup, const QString& permissionId); - void setPermissionEnable(const QString& permissionGroup, const QString& permissionId, bool enable); - - // 设置App属性 - void setPermissionInfo(const QString& appId, const QString& permissionGroup, const QString& permissionId, const QString& value); - const QString getIconPath(const QString& appName); - -private: - void saveServiceApps(const QString ¤tGroup, const QString &dameonDefineName, const QJsonArray& appInfoDate); - -public Q_SLOTS: - void refreshPermissionState(const QString& permissionGroup, const QString& permissionId, bool enable); - void resetPermissionState(const QString& permissionGroup, const QString& permissionId); - void resetPermissionInfo(const QString& permissionGroup, const QString& permissionId); - -private: - PrivacySecurityModel *m_model; - PrivacySecurityDBusProxy *m_privacyDBusInter; - - // 记录AppsName 异步多线程获取 IconPath - QStringList m_appsName; -}; - -#endif // PRIVACYSECURITYWORKER_H diff --git a/dcc-old/src/plugin-privacy/operation/qrc/icons/dark/dcc_none_dark.svg b/dcc-old/src/plugin-privacy/operation/qrc/icons/dark/dcc_none_dark.svg deleted file mode 100644 index fdca316a65..0000000000 --- a/dcc-old/src/plugin-privacy/operation/qrc/icons/dark/dcc_none_dark.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - 编组 4 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_camera_32px.svg b/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_camera_32px.svg deleted file mode 100644 index afdcfca2b1..0000000000 --- a/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_camera_32px.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - 编组 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_microphone_32px.svg b/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_microphone_32px.svg deleted file mode 100644 index e90b747698..0000000000 --- a/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_microphone_32px.svg +++ /dev/null @@ -1,66 +0,0 @@ - - - 编组 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_nav_privacy_42px.svg b/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_nav_privacy_42px.svg deleted file mode 100644 index b90138da3b..0000000000 --- a/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_nav_privacy_42px.svg +++ /dev/null @@ -1,79 +0,0 @@ - - - ICON/Nav-small/privacy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_nav_privacy_84px.svg b/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_nav_privacy_84px.svg deleted file mode 100644 index d10ca9e081..0000000000 --- a/dcc-old/src/plugin-privacy/operation/qrc/icons/dcc_nav_privacy_84px.svg +++ /dev/null @@ -1,79 +0,0 @@ - - - ICON/Nav/privacy - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-privacy/operation/qrc/icons/light/dcc_none_light.svg b/dcc-old/src/plugin-privacy/operation/qrc/icons/light/dcc_none_light.svg deleted file mode 100644 index 19a1e88e4a..0000000000 --- a/dcc-old/src/plugin-privacy/operation/qrc/icons/light/dcc_none_light.svg +++ /dev/null @@ -1,64 +0,0 @@ - - - 编组 4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-privacy/operation/qrc/privacy.qrc b/dcc-old/src/plugin-privacy/operation/qrc/privacy.qrc deleted file mode 100644 index e1349169ef..0000000000 --- a/dcc-old/src/plugin-privacy/operation/qrc/privacy.qrc +++ /dev/null @@ -1,10 +0,0 @@ - - - icons/dcc_camera_32px.svg - icons/dcc_microphone_32px.svg - icons/dcc_nav_privacy_42px.svg - icons/dcc_nav_privacy_84px.svg - icons/dark/dcc_none_dark.svg - icons/light/dcc_none_light.svg - - diff --git a/dcc-old/src/plugin-privacy/window/PrivacyPlugin.json b/dcc-old/src/plugin-privacy/window/PrivacyPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-privacy/window/PrivacyPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-privacy/window/servicesettingsmodule.cpp b/dcc-old/src/plugin-privacy/window/servicesettingsmodule.cpp deleted file mode 100644 index 2426f1be3d..0000000000 --- a/dcc-old/src/plugin-privacy/window/servicesettingsmodule.cpp +++ /dev/null @@ -1,232 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "servicesettingsmodule.h" - -#include "widgets/widgetmodule.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -using namespace DCC_PRIVACY_NAMESPACE; -ServiceSettingsModule::ServiceSettingsModule(DATE& serviceDate, PrivacySecurityModel *model, PrivacySecurityWorker *work, QObject *parent) - : PageModule(serviceDate.name, serviceDate.displayName, serviceDate.icon, parent) - , m_currentServiceDate(serviceDate) - , m_model(model) - , m_worker(work) -{ - deactive(); - m_serviceItemDate = m_model->getServiceItem(serviceDate.category); - // 添加标题 - appendChild(new WidgetModule(m_currentServiceDate.name, m_currentServiceDate.displayName, this, &ServiceSettingsModule::initSwitchWidget)); - - // 添加无服务 - // 添加文字说明 - ModuleObject *topTipsLabel = new WidgetModule("", "", this, &ServiceSettingsModule::initTopTipsLabel); - appendChild(topTipsLabel); - - // 添加应用 - m_appsListView = new WidgetModule("", "", this, &ServiceSettingsModule::initListView); - appendChild(m_appsListView); - - // 添加无服务图标 - ModuleObject *noServiceLabel =new WidgetModule("","", this, &ServiceSettingsModule::initNoServiceLabel); - appendChild(noServiceLabel); -} - - -ServiceSettingsModule::~ServiceSettingsModule() -{ - -} - -void ServiceSettingsModule::initTopTipsLabel(QLabel *tipsLabel) -{ - tipsLabel->setText(getTopTipsDoc(m_currentServiceDate.category)); - tipsLabel->setVisible(m_serviceItemDate->getServiceAvailable()); - connect(m_serviceItemDate, &ServiceControlItems::serviceAvailableStateChange, tipsLabel, &QLabel::setVisible); -} - -void ServiceSettingsModule::initSwitchWidget(DCC_NAMESPACE::SwitchWidget *titleSwitch) -{ - QPixmap pixmap; - QSize size(42,42); - QIcon icon = DIconTheme::findQIcon(m_currentServiceDate.icon); - pixmap = icon.pixmap(size); - titleSwitch->setTitle(m_currentServiceDate.name); - QLabel *iconLabel = new QLabel; - iconLabel->setPixmap(pixmap); - iconLabel->setMaximumWidth(50); - - connect(m_serviceItemDate, &ServiceControlItems::serviceSwitchStateChange, titleSwitch, &SwitchWidget::setChecked); - connect(titleSwitch, &SwitchWidget::checkedChanged, m_worker, [this](bool checkState){ - m_worker->setPermissionEnable(m_serviceItemDate->getServiceGroup(), m_model->getDaemonDefineName(m_currentServiceDate.category), checkState); - }); - connect(m_serviceItemDate, &ServiceControlItems::serviceAvailableStateChange, titleSwitch, [=](bool serviceAvaiable){ - titleSwitch->switchButton()->setVisible(serviceAvaiable); - }); - - titleSwitch->getMainLayout()->insertWidget(0, iconLabel, Qt::AlignVCenter); - titleSwitch->setChecked(m_serviceItemDate->getSwitchState()); - titleSwitch->switchButton()->setVisible(m_serviceItemDate->getServiceAvailable()); -} - -void ServiceSettingsModule::initListView(Dtk::Widget::DListView *settingsGrp) -{ - QStandardItemModel *pluginAppsModel = new QStandardItemModel; - creatPluginAppsView(settingsGrp); - settingsGrp->setModel(pluginAppsModel); - - qDebug() << " Get Apps size: " << m_model->getServiceItem(m_currentServiceDate.category)->getServiceApps().size(); - - auto updateItemCheckStatus = [pluginAppsModel, settingsGrp](const QString& name, const QString& visible) { - qDebug() << " == pluginAppsModel->rowCount()" << pluginAppsModel->rowCount(); - for (int i = 0; i < pluginAppsModel->rowCount(); ++i) { - auto item = static_cast(pluginAppsModel->item(i)); - if (item->text() != name || item->actionList(Qt::Edge::RightEdge).size() < 1) - continue; - - auto action = item->actionList(Qt::Edge::RightEdge).first(); - auto checkstatus = (visible == "1" ? DStyle::SP_IndicatorChecked : DStyle::SP_IndicatorUnchecked); - auto icon = qobject_cast(settingsGrp->style())->standardIcon(checkstatus); - action->setIcon(icon); - settingsGrp->update(item->index()); - break; - } - }; - - auto refreshItemDate = [this , pluginAppsModel, settingsGrp, updateItemCheckStatus] () { - pluginAppsModel->clear(); - for (auto App : m_model->getServiceItem(m_currentServiceDate.category)->getServiceApps()) { - DStandardItem *item = new DStandardItem(App.m_name); - item->setFontSize(DFontSizeManager::T8); - QSize size(16, 16); - - // 图标 - auto leftAction = new DViewItemAction(Qt::AlignVCenter, size, size, true); - leftAction->setIcon(DIconTheme::findQIcon("application-x-desktop")); - item->setActionList(Qt::Edge::LeftEdge, {leftAction}); - - auto rightAction = new DViewItemAction(Qt::AlignVCenter, size, size, true); - // 0 true 1 false - bool visible = App.m_enable == "0"; - auto checkstatus = visible ? DStyle::SP_IndicatorChecked : DStyle::SP_IndicatorUnchecked ; - auto checkIcon = qobject_cast(settingsGrp->style())->standardIcon(checkstatus); - rightAction->setIcon(checkIcon); - item->setActionList(Qt::Edge::RightEdge, {rightAction}); - pluginAppsModel->appendRow(item); - - connect(rightAction, &DViewItemAction::triggered, this, [ = ] { - const QString& checkedChange = (App.m_enable == "1" ? "0" : "1"); - m_worker->setPermissionInfo(App.m_name, m_serviceItemDate->getServiceGroup(), m_model->getDaemonDefineName(m_currentServiceDate.category), checkedChange); - updateItemCheckStatus(App.m_name, checkedChange); - }); - } - m_appsListView->setDisabled(!m_serviceItemDate->getSwitchState()); - m_appsListView->setHidden(!m_serviceItemDate->getServiceAvailable()); - }; - - connect(m_serviceItemDate, &ServiceControlItems::serviceSwitchStateChange, settingsGrp, &DListView::setEnabled); - connect(m_serviceItemDate, &ServiceControlItems::permissionInfoChange, settingsGrp, [updateItemCheckStatus](const QString& name, const QString& visible){ - updateItemCheckStatus(name, visible); - }); - connect(m_serviceItemDate, &ServiceControlItems::serviceAvailableStateChange, settingsGrp, [settingsGrp,refreshItemDate](const bool visible){ - settingsGrp->setVisible(visible); - refreshItemDate(); - }); - connect(m_serviceItemDate, &ServiceControlItems::serviceAppsDateChange, settingsGrp, [refreshItemDate](){ - refreshItemDate(); - }); - - refreshItemDate(); -} - -void ServiceSettingsModule::initNoServiceLabel(QWidget *noServiceLabel) -{ - connect(m_serviceItemDate, &ServiceControlItems::serviceAvailableStateChange, noServiceLabel, [=](bool serviceAvailable){ - noServiceLabel->setVisible(!serviceAvailable); - }); - - noServiceLabel->setVisible(!m_serviceItemDate->getServiceAvailable()); - QLabel *iconLabel = new QLabel; - - iconLabel->setPixmap(QIcon(":/icons/deepin/builtin/icons/light/dcc_none_light.svg").pixmap(82,82)); - iconLabel->setAlignment(Qt::AlignHCenter); - - QLabel *label = new QLabel; - label->setText(getNoneTipsDoc(m_currentServiceDate.category)); - - QVBoxLayout *vbox = new QVBoxLayout; - vbox->addWidget(iconLabel); - vbox->addWidget(label); - vbox->setAlignment(Qt::AlignHCenter); - - noServiceLabel->setLayout(vbox); -} - -void ServiceSettingsModule::creatPluginAppsView(Dtk::Widget::DListView *appsListView) -{ - appsListView->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - appsListView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - appsListView->setSelectionMode(QListView::SelectionMode::NoSelection); - appsListView->setEditTriggers(DListView::NoEditTriggers); - appsListView->setFrameShape(DListView::NoFrame); - appsListView->setViewportMargins(0, 0, 0, 0); - appsListView->setItemSpacing(1); - QMargins itemMargins(appsListView->itemMargins()); - itemMargins.setLeft(14); - appsListView->setItemMargins(itemMargins); - appsListView->setVerticalScrollMode(QAbstractItemView::ScrollPerPixel); -} - -QString ServiceSettingsModule::getTopTipsDoc(ServiceCategory category) -{ - switch (category) { - case Camera: - return QString(tr("Apps can access your camera:")); - case Microphone: - return QString(tr("Apps can access your microphone:")); - case UserFolders: - return QString(tr("Apps can access user folders:")); - case Calendar: - return QString(tr("Apps can access Calendar:")); - case Screenshots: - return QString(tr("Apps can access Screen Capture:")); - default: - break; - } - return QString(); -} - -QString ServiceSettingsModule::getNoneTipsDoc(ServiceCategory category) -{ - switch (category) { - case Camera: - return QString(tr("No apps requested access to the camera")); - case Microphone: - return QString(tr("No apps requested access to the microphone")); - case UserFolders: - return QString(tr("No apps requested access to user folders")); - case Calendar: - return QString(tr("No apps requested access to Calendar")); - case Screenshots: - return QString(tr("No apps requested access to Screen Capture")); - default: - break; - } - return QString(); -} - diff --git a/dcc-old/src/plugin-privacy/window/servicesettingsmodule.h b/dcc-old/src/plugin-privacy/window/servicesettingsmodule.h deleted file mode 100644 index fe2847d28d..0000000000 --- a/dcc-old/src/plugin-privacy/window/servicesettingsmodule.h +++ /dev/null @@ -1,56 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SERVICESETTINGSMODULE_H -#define SERVICESETTINGSMODULE_H - -#include "interface/pagemodule.h" -#include -#include -#include - -namespace DCC_NAMESPACE { -class SwitchWidget; -class SettingsGroup; -} - -QT_BEGIN_NAMESPACE -class QLabel; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DListView; -DWIDGET_END_NAMESPACE - -class PrivacySecurityWorker; - -// 三级详情页 -class ServiceSettingsModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit ServiceSettingsModule(DCC_PRIVACY_NAMESPACE::DATE& serviceDate, PrivacySecurityModel *model, PrivacySecurityWorker *work, QObject *parent = nullptr); - ~ServiceSettingsModule(); - - void initTopTipsLabel(QLabel *tipsLabel); - void initSwitchWidget(DCC_NAMESPACE::SwitchWidget *titleSwitch); - void initListView(DTK_WIDGET_NAMESPACE::DListView *settingsGrp); - void initNoServiceLabel(QWidget *noServiceLabel); - void creatPluginAppsView(Dtk::Widget::DListView *appsListView); - -private: - QString getTopTipsDoc(DCC_PRIVACY_NAMESPACE::ServiceCategory category); - QString getNoneTipsDoc(DCC_PRIVACY_NAMESPACE::ServiceCategory category); -signals: - -private: - DCC_PRIVACY_NAMESPACE::DATE m_currentServiceDate; - ServiceControlItems *m_serviceItemDate; - - PrivacySecurityModel *m_model; - PrivacySecurityWorker *m_worker; - - ModuleObject *m_appsListView; -}; - -#endif // SERVICESETTINGSMODULE_H diff --git a/dcc-old/src/plugin-privacy/window/widgets/servicecontrolitems.cpp b/dcc-old/src/plugin-privacy/window/widgets/servicecontrolitems.cpp deleted file mode 100644 index 2c792c0e59..0000000000 --- a/dcc-old/src/plugin-privacy/window/widgets/servicecontrolitems.cpp +++ /dev/null @@ -1,69 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "servicecontrolitems.h" - -#include - -using namespace DCC_PRIVACY_NAMESPACE; -ServiceControlItems::ServiceControlItems(ServiceCategory category, QObject *parent) - : QObject(parent) - , m_currentCategory(category) - , m_available(false) - , m_switch(true) -{ - -} - -ServiceControlItems::~ServiceControlItems() -{ - -} - -void ServiceControlItems::setServiceGroup(const QString &group) -{ - m_currentGroup = group; -} - -void ServiceControlItems::setServiceAvailable(const bool available) -{ - if (available != m_available) { - m_available = available; - Q_EMIT serviceAvailableStateChange(available); - } -} - -void ServiceControlItems::setSwitchState(const bool switchState) -{ - if (m_switch != switchState) { - m_switch = switchState; - Q_EMIT serviceSwitchStateChange(switchState); - } -} - -void ServiceControlItems::setServiceApps(const QList &apps) -{ - qDebug() << " 数据更新: setServiceApps: " << m_currentCategory << apps.size() ; - if (m_appList != apps) { - m_appList.clear(); - m_appList.append(apps); - Q_EMIT serviceAppsDateChange(); - } -} - -QList ServiceControlItems::getServiceApps() -{ - return m_appList; -} - -void ServiceControlItems::clearServiceApps() -{ - m_appList.clear(); - setServiceAvailable(false); - Q_EMIT serviceAppsDateChange(); -} - -void ServiceControlItems::setPermissionInfo(const QString &name, const QString &visible) -{ - Q_EMIT permissionInfoChange(name, visible); -} diff --git a/dcc-old/src/plugin-privacy/window/widgets/servicecontrolitems.h b/dcc-old/src/plugin-privacy/window/widgets/servicecontrolitems.h deleted file mode 100644 index d52fd9c26d..0000000000 --- a/dcc-old/src/plugin-privacy/window/widgets/servicecontrolitems.h +++ /dev/null @@ -1,73 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SERVICECONTROLITEMS_H -#define SERVICECONTROLITEMS_H - -#include -#include "privacysecuritymodel.h" - -// 每个App信息: 目前只存在 名称 状态 -struct App { - QString m_name; - QString m_enable; - - bool operator ==(const App &app) const { - return app.m_name == m_name && app.m_enable == m_enable; - } - - bool operator !=(const App &app) const { - return app.m_name != m_name || app.m_enable != m_enable; - } -}; - -/* -服务管控项: 用于创建每个服务项 -*/ - -class ServiceControlItems : public QObject -{ - Q_OBJECT -public: - explicit ServiceControlItems(DCC_PRIVACY_NAMESPACE::ServiceCategory category, QObject *parent = nullptr); - ~ServiceControlItems(); - -public: - // 设置组 仅一次 - void setServiceGroup(const QString &group); - QString getServiceGroup() { return m_currentGroup; } - - void setServiceAvailable(const bool available); - bool getServiceAvailable() { return m_available; } - - void setSwitchState(const bool switchState); - bool getSwitchState() { return m_switch; } - - void setServiceApps(const QList &apps); - QList getServiceApps(); - - void clearServiceApps(); - - DCC_PRIVACY_NAMESPACE::ServiceCategory currentCategory() { return m_currentCategory; } - - void setPermissionInfo(const QString& name, const QString& visible); - -// PrivacySecurityModel::ServiceCategory currentCategory() { return m_currentCategory; } -signals: - void serviceAppsDateChange(); - // 服务是否存在 - void serviceAvailableStateChange(const bool available); - // 权限总开关 - void serviceSwitchStateChange(const bool switchState); - // 应用数据变化 - void permissionInfoChange(const QString& name, const QString& visible); - -private: - QString m_currentGroup; - DCC_PRIVACY_NAMESPACE::ServiceCategory m_currentCategory; - bool m_available; - bool m_switch; - QList m_appList; -}; - -#endif // SERVICECONTROLITEMS_H diff --git a/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume1_32px.svg b/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume1_32px.svg deleted file mode 100644 index 39bed0a87f..0000000000 --- a/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume1_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume2_32px.svg b/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume2_32px.svg deleted file mode 100644 index faf3db854f..0000000000 --- a/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume2_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume3_32px.svg b/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume3_32px.svg deleted file mode 100644 index baadae9c91..0000000000 --- a/dcc-old/src/plugin-sound/operation/qrc/actions/dcc_volume3_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-sound/operation/qrc/icons/dcc_nav_sound_42px.svg b/dcc-old/src/plugin-sound/operation/qrc/icons/dcc_nav_sound_42px.svg deleted file mode 100644 index 3cec70ea38..0000000000 --- a/dcc-old/src/plugin-sound/operation/qrc/icons/dcc_nav_sound_42px.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - dcc_nav_sound_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-sound/operation/qrc/icons/dcc_nav_sound_84px.svg b/dcc-old/src/plugin-sound/operation/qrc/icons/dcc_nav_sound_84px.svg deleted file mode 100644 index 2cd21f02c1..0000000000 --- a/dcc-old/src/plugin-sound/operation/qrc/icons/dcc_nav_sound_84px.svg +++ /dev/null @@ -1,72 +0,0 @@ - - - dcc_nav_sound_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-sound/operation/qrc/sound.qrc b/dcc-old/src/plugin-sound/operation/qrc/sound.qrc deleted file mode 100644 index 53f4378f93..0000000000 --- a/dcc-old/src/plugin-sound/operation/qrc/sound.qrc +++ /dev/null @@ -1,9 +0,0 @@ - - - icons/dcc_nav_sound_42px.svg - icons/dcc_nav_sound_84px.svg - actions/dcc_volume1_32px.svg - actions/dcc_volume2_32px.svg - actions/dcc_volume3_32px.svg - - diff --git a/dcc-old/src/plugin-sound/operation/sounddbusproxy.cpp b/dcc-old/src/plugin-sound/operation/sounddbusproxy.cpp deleted file mode 100644 index 58bea95be9..0000000000 --- a/dcc-old/src/plugin-sound/operation/sounddbusproxy.cpp +++ /dev/null @@ -1,335 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "sounddbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include "audioport.h" -#include -#include -#include -#include -#include - -const static QString AudioService = QStringLiteral("org.deepin.dde.Audio1"); -const static QString AudioPath = QStringLiteral("/org/deepin/dde/Audio1"); -const static QString AudioInterface = QStringLiteral("org.deepin.dde.Audio1"); - -const static QString SoundEffectService = QStringLiteral("org.deepin.dde.SoundEffect1"); -const static QString SoundEffectPath = QStringLiteral("/org/deepin/dde/SoundEffect1"); -const static QString SoundEffectInterface = QStringLiteral("org.deepin.dde.SoundEffect1"); - -const static QString PowerService = QStringLiteral("org.deepin.dde.Power1"); -const static QString PowerPath = QStringLiteral("/org/deepin/dde/Power1"); -const static QString PowerInterface = QStringLiteral("org.deepin.dde.Power1"); - -const static QString SinkInterface = QStringLiteral("org.deepin.dde.Audio1.Sink"); -const static QString SourceInterface = QStringLiteral("org.deepin.dde.Audio1.Source"); -const static QString MeterInterface = QStringLiteral("org.deepin.dde.Audio1.Meter"); - -using namespace DCC_NAMESPACE; -SoundDBusProxy::SoundDBusProxy(QObject *parent) - : QObject(parent) - , m_audioInter(new DDBusInterface(AudioService, AudioPath, AudioInterface, QDBusConnection::sessionBus(), this)) - , m_soundEffectInter(new DDBusInterface(SoundEffectService, SoundEffectPath, SoundEffectInterface, QDBusConnection::sessionBus(), this)) - , m_powerInter(new DDBusInterface(PowerService, PowerPath, PowerInterface, QDBusConnection::systemBus(), this)) - , m_defaultSink(nullptr) - , m_defaultSource(nullptr) - , m_sourceMeter(nullptr) -{ - qRegisterMetaType("AudioPort"); - qDBusRegisterMetaType(); - - qRegisterMetaType("SoundEffectQuestions"); - qDBusRegisterMetaType(); -} - -QDBusObjectPath SoundDBusProxy::defaultSink() -{ - return qvariant_cast(m_audioInter->property("DefaultSink")); -} - -QDBusObjectPath SoundDBusProxy::defaultSource() -{ - return qvariant_cast(m_audioInter->property("DefaultSource")); -} - -QString SoundDBusProxy::cardsWithoutUnavailable() -{ - return qvariant_cast(m_audioInter->property("CardsWithoutUnavailable")); -} - -QStringList SoundDBusProxy::bluetoothAudioModeOpts() -{ - return qvariant_cast(m_audioInter->property("BluetoothAudioModeOpts")); -} - -QString SoundDBusProxy::bluetoothAudioMode() -{ - return qvariant_cast(m_audioInter->property("BluetoothAudioMode")); -} - -double SoundDBusProxy::maxUIVolume() -{ - return qvariant_cast(m_audioInter->property("MaxUIVolume")); -} - -bool SoundDBusProxy::increaseVolume() -{ - return qvariant_cast(m_audioInter->property("IncreaseVolume")); -} - -void SoundDBusProxy::setIncreaseVolume(bool value) -{ - m_audioInter->setProperty("IncreaseVolume", QVariant::fromValue(value)); -} - -bool SoundDBusProxy::reduceNoise() -{ - return qvariant_cast(m_audioInter->property("ReduceNoise")); -} - -void SoundDBusProxy::setReduceNoise(bool value) -{ - m_audioInter->setProperty("ReduceNoise", QVariant::fromValue(value)); -} - -bool SoundDBusProxy::pausePlayer() -{ - return qvariant_cast(m_audioInter->property("PausePlayer")); -} - -void SoundDBusProxy::setPausePlayer(bool value) -{ - m_audioInter->setProperty("PausePlayer", QVariant::fromValue(value)); -} - -QString SoundDBusProxy::audioServer() -{ - return qvariant_cast(m_audioInter->property("CurrentAudioServer")); -} - -void SoundDBusProxy::SetAudioServer(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_audioInter->asyncCallWithArgumentList(QStringLiteral("SetCurrentAudioServer"), argumentList); -} - -bool SoundDBusProxy::audioServerState() -{ - return qvariant_cast(m_audioInter->property("AudioServerState")); -} - -void SoundDBusProxy::SetPortEnabled(uint in0, const QString &in1, bool in2) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2); - m_audioInter->asyncCallWithArgumentList(QStringLiteral("SetPortEnabled"), argumentList); -} - -void SoundDBusProxy::SetPort(uint in0, const QString &in1, int in2) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2); - m_audioInter->asyncCallWithArgumentList(QStringLiteral("SetPort"), argumentList); -} - -void SoundDBusProxy::SetBluetoothAudioMode(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_audioInter->asyncCallWithArgumentList(QStringLiteral("SetBluetoothAudioMode"), argumentList); -} - -bool SoundDBusProxy::enabled() -{ - return qvariant_cast(m_soundEffectInter->property("Enabled")); -} - -void SoundDBusProxy::setEnabled(bool value) -{ - m_soundEffectInter->setProperty("Enabled", QVariant::fromValue(value)); -} - -void SoundDBusProxy::GetSoundEnabledMap() -{ - QList argumentList; - m_soundEffectInter->callWithCallback(QStringLiteral("GetSoundEnabledMap"), argumentList, this, SIGNAL(pendingCallWatcherFinished(QMap))); -} - -void SoundDBusProxy::EnableSound(const QString &name, bool enabled, QObject *receiver, const char *member, const char *errorSlot) -{ - QList argumentList; - argumentList << QVariant::fromValue(name) << QVariant::fromValue(enabled); - m_soundEffectInter->callWithCallback(QStringLiteral("EnableSound"), argumentList, receiver, member, errorSlot); -} - -QString SoundDBusProxy::GetSoundFile(const QString &name) -{ - QList argumentList; - argumentList << QVariant::fromValue(name); - return QDBusPendingReply(m_soundEffectInter->asyncCallWithArgumentList(QStringLiteral("GetSoundFile"), argumentList)); -} - -bool SoundDBusProxy::hasBattery() -{ - return qvariant_cast(m_powerInter->property("HasBattery")); -} - -void SoundDBusProxy::setSinkDevicePath(const QString &path) -{ - if (m_defaultSink) { - m_defaultSink->deleteLater(); - } - m_defaultSink = new DDBusInterface(AudioService, path, SinkInterface, QDBusConnection::sessionBus(), this); - m_defaultSink->setSuffix("Sink"); -} - -bool SoundDBusProxy::muteSink() -{ - return qvariant_cast(m_defaultSink->property("MuteSink")); -} - -void SoundDBusProxy::SetMuteSink(bool in0) -{ - if (m_defaultSink) { - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_defaultSink->asyncCallWithArgumentList(QStringLiteral("SetMute"), argumentList); - } -} - -double SoundDBusProxy::balanceSink() -{ - return qvariant_cast(m_defaultSink->property("BalanceSink")); -} - -double SoundDBusProxy::baseVolumeSink() -{ - return qvariant_cast(m_defaultSink->property("BaseVolumeSink")); -} - -void SoundDBusProxy::SetBalanceSink(double in0, bool in1) -{ - if (m_defaultSink) { - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - m_defaultSink->asyncCallWithArgumentList(QStringLiteral("SetBalance"), argumentList); - } -} - -double SoundDBusProxy::volumeSink() -{ - return qvariant_cast(m_defaultSink->property("VolumeSink")); -} - -void SoundDBusProxy::SetVolumeSink(double in0, bool in1) -{ - if (m_defaultSink) { - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - m_defaultSink->asyncCallWithArgumentList(QStringLiteral("SetVolume"), argumentList); - } -} - -AudioPort SoundDBusProxy::activePortSink() -{ - return qvariant_cast(m_defaultSink->property("ActivePortSink")); -} - -uint SoundDBusProxy::cardSink() -{ - return qvariant_cast(m_defaultSink->property("CardSink")); -} - -void SoundDBusProxy::setSourceDevicePath(const QString &path) -{ - if (m_defaultSource) { - m_defaultSource->deleteLater(); - } - - m_defaultSource = new DDBusInterface(AudioService, path, SourceInterface, QDBusConnection::sessionBus(), this); - m_defaultSource->setSuffix("Source"); -} - -void SoundDBusProxy::SetSourceMute(bool in0) -{ - if (m_defaultSource) { - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_defaultSource->asyncCallWithArgumentList(QStringLiteral("SetMute"), argumentList); - } -} - -double SoundDBusProxy::volumeSource() -{ - return qvariant_cast(m_defaultSource->property("VolumeSource")); -} - -AudioPort SoundDBusProxy::activePortSource() -{ - return qvariant_cast(m_defaultSource->property("ActivePortSource")); -} - -void SoundDBusProxy::SetSourceVolume(double in0, bool in1) -{ - if (m_defaultSource) { - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - m_defaultSource->asyncCallWithArgumentList(QStringLiteral("SetVolume"), argumentList); - } -} - -uint SoundDBusProxy::cardSource() -{ - return qvariant_cast(m_defaultSource->property("CardSource")); -} - -QDBusObjectPath SoundDBusProxy::GetMeter() -{ - QList argumentList; - return QDBusPendingReply(m_defaultSource->asyncCallWithArgumentList(QStringLiteral("GetMeter"), argumentList)); -} - -void SoundDBusProxy::setMeterDevicePath(const QString &path) -{ - if (m_sourceMeter) { - m_sourceMeter->deleteLater(); - } - m_sourceMeter = new DDBusInterface(AudioService, path, MeterInterface, QDBusConnection::sessionBus(), this); - m_sourceMeter->setSuffix("Meter"); -} - -double SoundDBusProxy::volumeMeter() -{ - return qvariant_cast(m_sourceMeter->property("VolumeMeter")); -} - -void SoundDBusProxy::Tick() -{ - if (m_sourceMeter) { - QList argumentList; - m_sourceMeter->asyncCallWithArgumentList(QStringLiteral("Tick"), argumentList); - } -} - -QList SoundDBusProxy::sinkInputs() -{ - return qvariant_cast>(m_audioInter->property("SinkInputs")); -} - -QList SoundDBusProxy::sinks() -{ - return qvariant_cast>(m_audioInter->property("Sinks")); -} - -QList SoundDBusProxy::sources() -{ - return qvariant_cast>(m_audioInter->property("Sources")); -} - -bool SoundDBusProxy::muteSource() -{ - return qvariant_cast(m_defaultSource->property("MuteSource")); -} diff --git a/dcc-old/src/plugin-sound/operation/sounddbusproxy.h b/dcc-old/src/plugin-sound/operation/sounddbusproxy.h deleted file mode 100644 index a415365f6c..0000000000 --- a/dcc-old/src/plugin-sound/operation/sounddbusproxy.h +++ /dev/null @@ -1,188 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SOUNDDBUSPROXY_H -#define SOUNDDBUSPROXY_H - -#include "interface/namespace.h" -#include "audioport.h" - -#include - -#include -#include - -typedef QMap SoundEffectQuestions; - -using Dtk::Core::DDBusInterface; - -class QDBusMessage; -class SoundDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit SoundDBusProxy(QObject *parent = nullptr); - - // Audio - bool isServiceRegistered(); - - void SetPortEnabled(uint in0, const QString &in1, bool in2); - - void SetPort(uint in0, const QString &in1, int in2); - - void SetBluetoothAudioMode(const QString &in0); - // SoundEffect - void GetSoundEnabledMap(); - void EnableSound(const QString &name, bool enabled, QObject *receiver, const char *member, const char *errorSlot); - QString GetSoundFile(const QString &name); - - // Power - - // Sink - void setSinkDevicePath(const QString &path); - - void SetMuteSink(bool in0); - - void SetBalanceSink(double in0, bool in1); - - void SetVolumeSink(double in0, bool in1); - - // Source - void setSourceDevicePath(const QString &path); - - void SetSourceMute(bool in0); - - void SetSourceVolume(double in0, bool in1); - - QDBusObjectPath GetMeter(); - - // SourceMeter - void setMeterDevicePath(const QString &path); - void Tick(); - - // Audio - Q_PROPERTY(double MaxUIVolume READ maxUIVolume NOTIFY MaxUIVolumeChanged) - double maxUIVolume(); - Q_PROPERTY(bool IncreaseVolume READ increaseVolume WRITE setIncreaseVolume NOTIFY IncreaseVolumeChanged) - bool increaseVolume(); - void setIncreaseVolume(bool value); - - Q_PROPERTY(bool ReduceNoise READ reduceNoise WRITE setReduceNoise NOTIFY ReduceNoiseChanged) - bool reduceNoise(); - void setReduceNoise(bool value); - - Q_PROPERTY(bool PausePlayer READ pausePlayer WRITE setPausePlayer NOTIFY PausePlayerChanged) - bool pausePlayer(); - void setPausePlayer(bool value); - - Q_PROPERTY(QString CurrentAudioServer READ audioServer WRITE SetAudioServer NOTIFY CurrentAudioServerChanged) - QString audioServer(); - void SetAudioServer(const QString &in0); - - // 音频切换的状态 - Q_PROPERTY(bool AudioServerState READ audioServerState NOTIFY AudioServerStateChanged) - bool audioServerState(); - - Q_PROPERTY(QString BluetoothAudioMode READ bluetoothAudioMode NOTIFY BluetoothAudioModeChanged) - QString bluetoothAudioMode(); - Q_PROPERTY(QStringList BluetoothAudioModeOpts READ bluetoothAudioModeOpts NOTIFY BluetoothAudioModeOptsChanged) - QStringList bluetoothAudioModeOpts(); - Q_PROPERTY(QString CardsWithoutUnavailable READ cardsWithoutUnavailable NOTIFY CardsWithoutUnavailableChanged) - QString cardsWithoutUnavailable(); - Q_PROPERTY(QDBusObjectPath DefaultSource READ defaultSource NOTIFY DefaultSourceChanged) - QDBusObjectPath defaultSource(); - Q_PROPERTY(QDBusObjectPath DefaultSink READ defaultSink NOTIFY DefaultSinkChanged) - QDBusObjectPath defaultSink(); - Q_PROPERTY(QList SinkInputs READ sinkInputs NOTIFY SinkInputsChanged) - QList sinkInputs(); - Q_PROPERTY(QList Sinks READ sinks NOTIFY SinksChanged) - QList sinks(); - Q_PROPERTY(QList Sources READ sources NOTIFY SourcesChanged) - QList sources(); - // Sink - Q_PROPERTY(bool MuteSink READ muteSink NOTIFY MuteSinkChanged) - bool muteSink(); - Q_PROPERTY(double BalanceSink READ balanceSink NOTIFY BalanceSinkChanged) - double balanceSink(); - Q_PROPERTY(double BaseVolumeSink READ baseVolumeSink NOTIFY BaseVolumeSinkChanged) - double baseVolumeSink(); - Q_PROPERTY(uint CardSink READ cardSink NOTIFY CardSinkChanged) - uint cardSink(); - Q_PROPERTY(double VolumeSink READ volumeSink NOTIFY VolumeSinkChanged) - double volumeSink(); - Q_PROPERTY(AudioPort ActivePortSink READ activePortSink NOTIFY ActivePortSinkChanged) - AudioPort activePortSink(); - // Source - Q_PROPERTY(bool MuteSource READ muteSource NOTIFY MuteSourceChanged) - bool muteSource(); - Q_PROPERTY(uint CardSource READ cardSource NOTIFY CardSourceChanged) - uint cardSource(); - Q_PROPERTY(double VolumeSource READ volumeSource NOTIFY VolumeSourceChanged) - double volumeSource(); - Q_PROPERTY(AudioPort ActivePortSource READ activePortSource NOTIFY ActivePortSourceChanged) - AudioPort activePortSource(); - // Power - Q_PROPERTY(bool HasBattery READ hasBattery NOTIFY HasBatteryChanged) - bool hasBattery(); - // SoundEffect - Q_PROPERTY(bool Enabled READ enabled WRITE setEnabled NOTIFY EnabledChanged) - bool enabled(); - void setEnabled(bool value); - // Audio.Meter - Q_PROPERTY(double VolumeMeter READ volumeMeter NOTIFY VolumeMeterChanged) - double volumeMeter(); - -Q_SIGNALS: - // Audio SIGNALS - void PortEnabledChanged(uint in0, const QString &in1, bool in2); - void BluetoothAudioModeChanged(const QString &value) const; - void BluetoothAudioModeOptsChanged(const QStringList &value) const; - void CardsChanged(const QString &value) const; - void CardsWithoutUnavailableChanged(const QString &value) const; - void DefaultSinkChanged(const QDBusObjectPath &value) const; - void DefaultSourceChanged(const QDBusObjectPath &value) const; - void IncreaseVolumeChanged(bool value) const; - void MaxUIVolumeChanged(double value) const; - void ReduceNoiseChanged(bool value) const; - void PausePlayerChanged(bool value) const; - void SinkInputsChanged(const QList &value) const; - void SinksChanged(const QList &value) const; - void SourcesChanged(const QList &value) const; - void CurrentAudioServerChanged(const QString &value) const; - void AudioServerStateChanged(const bool state) const; - - // SoundEffect SIGNALS - void EnabledChanged(bool value) const; - void pendingCallWatcherFinished(QMap map); - - // Power SIGNALS - void HasBatteryChanged(bool value) const; - - // Sink SIGNALS - void MuteSinkChanged(bool value) const; - void BalanceSinkChanged(double value) const; - void BaseVolumeSinkChanged(double value) const; - void CardSinkChanged(uint value) const; - void VolumeSinkChanged(double value) const; - void ActivePortSinkChanged(AudioPort value) const; - - // Source SIGNALS - void MuteSourceChanged(bool value) const; - void VolumeSourceChanged(double value) const; - void ActivePortSourceChanged(AudioPort value) const; - void CardSourceChanged(uint value) const; - - // Meter SIGNALS - void VolumeMeterChanged(double value) const; - -private: - DDBusInterface *m_audioInter; - DDBusInterface *m_soundEffectInter; - DDBusInterface *m_powerInter; - - DDBusInterface *m_defaultSink; - DDBusInterface *m_defaultSource; - DDBusInterface *m_sourceMeter; -}; - -#endif // SOUNDDBUSPROXY_H diff --git a/dcc-old/src/plugin-sound/operation/soundmodel.cpp b/dcc-old/src/plugin-sound/operation/soundmodel.cpp deleted file mode 100644 index 8d2936983b..0000000000 --- a/dcc-old/src/plugin-sound/operation/soundmodel.cpp +++ /dev/null @@ -1,512 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "soundmodel.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcSoundModel, "dcc-sound-model") - -Q_DECLARE_METATYPE(const Port *) - -const static Dtk::Core::DSysInfo::UosType UosType = Dtk::Core::DSysInfo::uosType(); -const static bool IsServerSystem = (Dtk::Core::DSysInfo::UosServer == UosType); //是否是服务器版 - -static const QMap SOUND_EFFECT_MAP{ - { DDesktopServices::SystemSoundEffect::SSE_Notifications, "message" }, - { DDesktopServices::SystemSoundEffect::SEE_Screenshot, "camera-shutter" }, - { DDesktopServices::SystemSoundEffect::SSE_EmptyTrash, "trash-empty" }, - { DDesktopServices::SystemSoundEffect::SSE_SendFileComplete, "x-deepin-app-sent-to-desktop" }, - { DDesktopServices::SystemSoundEffect::SSE_BootUp, "desktop-login" }, - { DDesktopServices::SystemSoundEffect::SSE_Shutdown, "system-shutdown" }, - { DDesktopServices::SystemSoundEffect::SSE_Logout, "desktop-logout" }, - { DDesktopServices::SystemSoundEffect::SSE_WakeUp, "suspend-resume" }, - { DDesktopServices::SystemSoundEffect::SSE_VolumeChange, "audio-volume-change" }, - { DDesktopServices::SystemSoundEffect::SSE_LowBattery, "power-unplug-battery-low" }, - { DDesktopServices::SystemSoundEffect::SSE_PlugIn, "power-plug" }, - { DDesktopServices::SystemSoundEffect::SSE_PlugOut, "power-unplug" }, - { DDesktopServices::SystemSoundEffect::SSE_DeviceAdded, "device-added" }, - { DDesktopServices::SystemSoundEffect::SSE_DeviceRemoved, "device-removed" }, - { DDesktopServices::SystemSoundEffect::SSE_Error, "dialog-error" } -}; - -SoundLabel::SoundLabel(QWidget *parent) - : QLabel(parent) - , m_mute(false) - , m_btn(new DTK_WIDGET_NAMESPACE::DToolButton(this)) -{ - QHBoxLayout *layout = new QHBoxLayout(this); - layout->setContentsMargins(0, 0, 0, 0); - layout->addWidget(m_btn); - - connect(m_btn, &DIconButton::clicked, this, [this]() { - this->m_mute = !this->m_mute; - Q_EMIT clicked(this->m_mute); - }); -} - -void SoundLabel::mouseReleaseEvent(QMouseEvent *e) -{ - Q_UNUSED(e) - m_mute = !m_mute; - Q_EMIT clicked(m_mute); -} - -void SoundLabel::setIcon(const QIcon &icon) -{ - m_btn->setIcon(icon); -} - -void SoundLabel::setIconSize(const QSize &size) -{ - m_btn->setIconSize(size); -} - -SoundModel::SoundModel(QObject *parent) - : QObject(parent) - , m_speakerOn(true) - , m_microphoneOn(true) - , m_enableSoundEffect(false) - , m_isLaptop(false) - , m_speakerVolume(75) - , m_speakerBalance(0) - , m_microphoneVolume(75) - , m_maxUIVolume(0.0) - , m_waitSoundReceiptTime(0) -#ifndef DCC_DISABLE_FEEDBACK - , m_microphoneFeedback(50) -#endif - , m_soundEffectMapBattery{} - , m_inputVisibled(false) - , m_outputVisibled(false) -{ - m_soundEffectMapBattery = { - { tr("Boot up"), DDesktopServices::SSE_BootUp }, - { tr("Shut down"), DDesktopServices::SSE_Shutdown }, - { tr("Log out"), DDesktopServices::SSE_Logout }, - { tr("Wake up"), DDesktopServices::SSE_WakeUp }, - { tr("Volume +/-"), DDesktopServices::SSE_VolumeChange }, - { tr("Notification"), DDesktopServices::SSE_Notifications }, - { tr("Low battery"), DDesktopServices::SSE_LowBattery }, - { tr("Send icon in Launcher to Desktop"), DDesktopServices::SSE_SendFileComplete }, - { tr("Empty Trash"), DDesktopServices::SSE_EmptyTrash }, - { tr("Plug in"), DDesktopServices::SSE_PlugIn }, - { tr("Plug out"), DDesktopServices::SSE_PlugOut }, - { tr("Removable device connected"), DDesktopServices::SSE_DeviceAdded }, - { tr("Removable device removed"), DDesktopServices::SSE_DeviceRemoved }, - { tr("Error"), DDesktopServices::SSE_Error }, - }; - - m_soundEffectMapPower = { - { tr("Boot up"), DDesktopServices::SSE_BootUp }, - { tr("Shut down"), DDesktopServices::SSE_Shutdown }, - { tr("Log out"), DDesktopServices::SSE_Logout }, - { tr("Wake up"), DDesktopServices::SSE_WakeUp }, - { tr("Volume +/-"), DDesktopServices::SSE_VolumeChange }, - { tr("Notification"), DDesktopServices::SSE_Notifications }, - { tr("Send icon in Launcher to Desktop"), DDesktopServices::SSE_SendFileComplete }, - { tr("Empty Trash"), DDesktopServices::SSE_EmptyTrash }, - { tr("Removable device connected"), DDesktopServices::SSE_DeviceAdded }, - { tr("Removable device removed"), DDesktopServices::SSE_DeviceRemoved }, - { tr("Error"), DDesktopServices::SSE_Error }, - }; - - if (IsServerSystem) { - m_soundEffectMapBattery.removeOne({ tr("Wake up"), DDesktopServices::SSE_WakeUp }); - m_soundEffectMapPower.removeOne({ tr("Wake up"), DDesktopServices::SSE_WakeUp }); - } -} - -SoundModel::~SoundModel() -{ - for (Port *port : m_ports) { - if (port) - port->deleteLater(); - } -} - -void SoundModel::setSpeakerOn(bool speakerOn) -{ - if (speakerOn != m_speakerOn) { - m_speakerOn = speakerOn; - - Q_EMIT speakerOnChanged(speakerOn); - } -} - -void SoundModel::setPortEnable(bool enable) -{ - if (enable != m_portEnable) - m_portEnable = enable; - Q_EMIT isPortEnableChanged(enable); -} - -void SoundModel::setReduceNoise(bool reduceNoise) -{ - if (reduceNoise != m_reduceNoise) { - m_reduceNoise = reduceNoise; - Q_EMIT reduceNoiseChanged(reduceNoise); - } -} - -void SoundModel::setPausePlayer(bool pausePlayer) -{ - if (pausePlayer != m_pausePlayer) { - m_pausePlayer = pausePlayer; - Q_EMIT pausePlayerChanged(pausePlayer); - } -} - -void SoundModel::setMicrophoneOn(bool microphoneOn) -{ - if (microphoneOn != m_microphoneOn) { - m_microphoneOn = microphoneOn; - - Q_EMIT microphoneOnChanged(microphoneOn); - } -} - -void SoundModel::setSpeakerBalance(double speakerBalance) -{ - if (!qFuzzyCompare(speakerBalance, m_speakerBalance)) { - m_speakerBalance = speakerBalance; - - Q_EMIT speakerBalanceChanged(speakerBalance); - } -} - -void SoundModel::setMicrophoneVolume(double microphoneVolume) -{ - if (!qFuzzyCompare(microphoneVolume, m_microphoneVolume)) { - m_microphoneVolume = microphoneVolume; - - Q_EMIT microphoneVolumeChanged(microphoneVolume); - } -} -#ifndef DCC_DISABLE_FEEDBACK -void SoundModel::setMicrophoneFeedback(double microphoneFeedback) -{ - if (!qFuzzyCompare(microphoneFeedback, m_microphoneFeedback)) { - m_microphoneFeedback = microphoneFeedback; - Q_EMIT microphoneFeedbackChanged(microphoneFeedback); - } -} -#endif - -void SoundModel::setPort(const Port *port) -{ - Q_EMIT setPortChanged(port); -} - -void SoundModel::addPort(Port *port) -{ - if (!containsPort(port)) { - m_ports.append(port); - - if (port->direction() == Port::Out) { - m_outputPorts.append(port); - } else { - m_inputPorts.append(port); - } - - Q_EMIT portAdded(port); - Q_EMIT soundDeviceStatusChanged(); - } -} - -void SoundModel::removePort(const QString &portId, const uint &cardId) -{ - Port *port = findPort(portId, cardId); - if (port) { - Q_EMIT portRemoved(portId, cardId, port->direction()); - m_ports.removeOne(port); - - if (port->direction() == Port::Out) { - m_outputPorts.removeOne(port); - } else { - m_inputPorts.removeOne(port); - } - port->deleteLater(); - } -} - -bool SoundModel::containsPort(const Port *port) -{ - return findPort(port->id(), port->cardId()) != nullptr; -} - -Port *SoundModel::findPort(const QString &portId, const uint &cardId) const -{ - auto res = std::find_if(m_ports.cbegin(), m_ports.end(), [=](const Port *data) -> bool { - return ((data->id() == portId) && (data->cardId() == cardId)); - }); - - if (res != m_ports.cend()) { - return *res; - } - - return nullptr; -} - -QList SoundModel::ports() const -{ - return m_ports; -} - -void SoundModel::setSpeakerVolume(double speakerVolume) -{ - if (!qFuzzyCompare(m_speakerVolume, speakerVolume)) { - m_speakerVolume = speakerVolume; - Q_EMIT speakerVolumeChanged(speakerVolume); - } -} - -void SoundModel::setMaxUIVolume(double value) -{ - double val = qRound(value * 10) / 10.0; - if (!qFuzzyCompare(val, m_maxUIVolume)) { - m_maxUIVolume = val; - Q_EMIT maxUIVolumeChanged(val); - } -} - -QDBusObjectPath SoundModel::defaultSource() const -{ - return m_defaultSource; -} - -void SoundModel::setDefaultSource(const QDBusObjectPath &defaultSource) -{ - m_defaultSource = defaultSource; - - Q_EMIT defaultSourceChanged(m_defaultSource); -} - -QDBusObjectPath SoundModel::defaultSink() const -{ - return m_defaultSink; -} - -void SoundModel::setDefaultSink(const QDBusObjectPath &defaultSink) -{ - m_defaultSink = defaultSink; - - Q_EMIT defaultSinkChanged(m_defaultSink); -} - -QString SoundModel::audioCards() const -{ - return m_audioCards; -} - -void SoundModel::setAudioCards(const QString &audioCards) -{ - m_audioCards = audioCards; - - Q_EMIT audioCardsChanged(m_audioCards); -} - -SoundEffectList SoundModel::soundEffectMap() const -{ - if (isLaptop()) { // 笔记本 - return m_soundEffectMapBattery; - } else { // 台式机 - return m_soundEffectMapPower; - } -} - -void SoundModel::setEffectData(DDesktopServices::SystemSoundEffect effect, const bool enable) -{ - if (m_soundEffectData[effect] == enable) - return; - - m_soundEffectData[effect] = enable; - - Q_EMIT soundEffectDataChanged(effect, enable); -} - -bool SoundModel::queryEffectData(DDesktopServices::SystemSoundEffect effect) -{ - return m_soundEffectData[effect]; -} - -void SoundModel::setEnableSoundEffect(bool enableSoundEffect) -{ - if (m_enableSoundEffect == enableSoundEffect) - return; - - m_enableSoundEffect = enableSoundEffect; - - Q_EMIT enableSoundEffectChanged(enableSoundEffect); -} - -void SoundModel::updateSoundEffectPath(DDesktopServices::SystemSoundEffect effect, - const QString &path) -{ - m_soundEffectPaths[effect] = path; -} - -const QString SoundModel::soundEffectPathByType(DDesktopServices::SystemSoundEffect effect) -{ - return m_soundEffectPaths[effect]; -} - -const QString SoundModel::getNameByEffectType(DDesktopServices::SystemSoundEffect effect) const -{ - return SOUND_EFFECT_MAP.value(effect); -} - -DDesktopServices::SystemSoundEffect SoundModel::getEffectTypeByGsettingName(const QString &name) -{ - return SOUND_EFFECT_MAP.key(name); -} - -bool SoundModel::checkSEExist(const QString &name) -{ - return SOUND_EFFECT_MAP.values().contains(name); -} - -bool SoundModel::isLaptop() const -{ - return m_isLaptop; -} - -void SoundModel::setIsLaptop(bool isLaptop) -{ - if (isLaptop == m_isLaptop) - return; - - m_isLaptop = isLaptop; - - Q_EMIT isLaptopChanged(isLaptop); -} - -bool SoundModel::isIncreaseVolume() const -{ - return m_increaseVolume; -} - -void SoundModel::setIncreaseVolume(bool value) -{ - if (m_increaseVolume != value) { - m_increaseVolume = value; - Q_EMIT increaseVolumeChanged(value); - } -} - -void SoundModel::setBluetoothAudioModeOpts(const QStringList &modes) -{ - if (modes != m_bluetoothModeOpts) { - m_bluetoothModeOpts = modes; - Q_EMIT bluetoothModeOptsChanged(modes); - } -} - -void SoundModel::setCurrentBluetoothAudioMode(const QString &mode) -{ - if (mode != m_currentBluetoothMode) { - m_currentBluetoothMode = mode; - Q_EMIT bluetoothModeChanged(mode); - } -} - -void SoundModel::setWaitSoundReceiptTime(const int receiptTime) -{ - // 配置端⼝切换延时时间 - if (m_waitSoundReceiptTime != receiptTime) { - qCDebug(DdcSoundModel) << "Sound Receopt Time is: " << receiptTime; - m_waitSoundReceiptTime = receiptTime; - } -} - -void SoundModel::setAudioServerChangedState(const bool state) -{ - if (m_audioServerStatus != state) { - m_audioServerStatus = state; - Q_EMIT onSetAudioServerFinish(state); - } -} - -void SoundModel::setAudioServer(const QString &audioServer) -{ - if (m_audioServer != audioServer) { - m_audioServer = audioServer; - Q_EMIT curAudioServerChanged(audioServer); - } -} - -void Port::setId(const QString &id) -{ - if (id != m_id) { - m_id = id; - Q_EMIT idChanged(id); - } -} - -void Port::setName(const QString &name) -{ - if (name != m_name) { - m_name = name; - Q_EMIT nameChanged(name); - } -} - -void Port::setCardName(const QString &cardName) -{ - if (cardName != m_cardName) { - m_cardName = cardName; - Q_EMIT cardNameChanged(cardName); - } -} - -void Port::setIsActive(bool isActive) -{ - if (isActive != m_isActive) { - m_isActive = isActive; - if (m_direction == Port::In) - Q_EMIT isInputActiveChanged(isActive); - else - Q_EMIT isOutputActiveChanged(isActive); - } -} - -void Port::setDirection(const Direction &direction) -{ - if (direction != m_direction) { - m_direction = direction; - Q_EMIT directionChanged(direction); - } -} - -void Port::setCardId(const uint &cardId) -{ - if (cardId != m_cardId) { - m_cardId = cardId; - Q_EMIT cardIdChanged(cardId); - } -} - -void Port::setEnabled(const bool enabled) -{ - if (enabled != m_enabled) { - m_enabled = enabled; - Q_EMIT currentPortEnabled(enabled); - } -} - -void Port::setIsBluetoothPort(const bool isBlue) -{ - if (m_isBluetoothPort != isBlue) { - m_isBluetoothPort = isBlue; - Q_EMIT currentBluetoothPortChanged(isBlue); - } -} diff --git a/dcc-old/src/plugin-sound/operation/soundmodel.h b/dcc-old/src/plugin-sound/operation/soundmodel.h deleted file mode 100644 index 0f135ace1a..0000000000 --- a/dcc-old/src/plugin-sound/operation/soundmodel.h +++ /dev/null @@ -1,286 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_SOUND_SOUNDMODEL_H -#define DCC_SOUND_SOUNDMODEL_H - -#include -#include -#include -#include -#include -#include -#include -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DIconButton; -class DToolButton; -DWIDGET_END_NAMESPACE - -QT_BEGIN_NAMESPACE -class QStandardItemModel; -class QString; -QT_END_NAMESPACE - -using SoundEffectList = QList>; - -class Port : public QObject -{ - Q_OBJECT -public: - enum Direction { - Out = 1, - In = 2 - }; - - explicit Port(QObject * parent) : QObject(parent),m_id(""), m_name(""), m_cardName(""), m_cardId(0), m_isActive(false), m_enabled(false), m_isBluetoothPort(false), m_direction(Out){} - virtual ~Port() {} - - inline QString id() const { return m_id; } - void setId(const QString &id); - - inline QString name() const { return m_name; } - void setName(const QString &name); - - inline QString cardName() const { return m_cardName; } - void setCardName(const QString &cardName); - - inline bool isActive() const { return m_isActive; } - void setIsActive(bool isActive); - - inline Direction direction() const { return m_direction; } - void setDirection(const Direction &direction); - - inline uint cardId() const { return m_cardId; } - void setCardId(const uint &cardId); - - inline bool isEnabled() const { return m_enabled; } - void setEnabled(const bool enabled); - - inline bool isBluetoothPort() const { return m_isBluetoothPort; } - void setIsBluetoothPort(const bool isBlue); - -Q_SIGNALS: - void idChanged(QString id) const; - void nameChanged(QString name) const; - void cardNameChanged(QString name) const; - void isInputActiveChanged(bool active) const; - void isOutputActiveChanged(bool active) const; - void directionChanged(Direction direction) const; - void cardIdChanged(uint cardId) const; - void currentPortEnabled(bool enable) const; - void currentBluetoothPortChanged(bool isBlue) const; - -private: - QString m_id; - QString m_name; - QString m_cardName; - uint m_cardId; - bool m_isActive; - bool m_enabled; - bool m_isBluetoothPort; - Direction m_direction; -}; - -class SoundLabel : public QLabel -{ - Q_OBJECT -public: - explicit SoundLabel(QWidget *parent = nullptr); - void mouseReleaseEvent(QMouseEvent *e) override; - virtual ~SoundLabel() {} - void setIcon(const QIcon &icon); - void setIconSize(const QSize &size); - -private: - bool m_mute; - DTK_WIDGET_NAMESPACE::DToolButton *m_btn; - -Q_SIGNALS: - void clicked(bool checked); -}; - -class SoundModel : public QObject -{ - Q_OBJECT -public: - explicit SoundModel(QObject *parent = 0); - ~SoundModel(); - - inline bool speakerOn() const { return m_speakerOn; } - void setSpeakerOn(bool speakerOn); - - inline bool isPortEnable() const { return m_portEnable; } - void setPortEnable(bool enable); - - inline bool reduceNoise() const { return m_reduceNoise; } - void setReduceNoise(bool reduceNoise); - - inline bool pausePlayer() const { return m_pausePlayer; } - void setPausePlayer(bool reduceNoise); - - inline bool microphoneOn() const { return m_microphoneOn; } - void setMicrophoneOn(bool microphoneOn); - - inline double speakerBalance() const { return m_speakerBalance; } - void setSpeakerBalance(double speakerBalance); - - inline double microphoneVolume() const { return m_microphoneVolume; } - void setMicrophoneVolume(double microphoneVolume); - -#ifndef DCC_DISABLE_FEEDBACK - inline double microphoneFeedback() const { return m_microphoneFeedback; } - void setMicrophoneFeedback(double microphoneFeedback); -#endif - - void setPort(const Port *port); - void addPort(Port *port); - void removePort(const QString &portId, const uint &cardId); - bool containsPort(const Port *port); - Port *findPort(const QString &portId, const uint &cardId) const; - QList ports() const; - - inline double speakerVolume() const { return m_speakerVolume; } - void setSpeakerVolume(double speakerVolume); - - QDBusObjectPath defaultSource() const; - void setDefaultSource(const QDBusObjectPath &defaultSource); - - QDBusObjectPath defaultSink() const; - void setDefaultSink(const QDBusObjectPath &defaultSink); - - QString audioCards() const; - void setAudioCards(const QString &audioCards); - - inline double MaxUIVolume() const { return m_maxUIVolume; } - void setMaxUIVolume(double value); - - SoundEffectList soundEffectMap() const; - - void setEffectData(DDesktopServices::SystemSoundEffect effect, const bool enable); - bool queryEffectData(DDesktopServices::SystemSoundEffect effect); - - bool enableSoundEffect() const { return m_enableSoundEffect; } - void setEnableSoundEffect(bool enableSoundEffect); - - void updateSoundEffectPath(DDesktopServices::SystemSoundEffect effect, const QString &path); - inline QMap soundEffectPaths() { return m_soundEffectPaths; } - const QString soundEffectPathByType(DDesktopServices::SystemSoundEffect effect); - - const QString getNameByEffectType(DDesktopServices::SystemSoundEffect effect) const; - DDesktopServices::SystemSoundEffect getEffectTypeByGsettingName(const QString &name); - - bool checkSEExist(const QString &name); // SE: Sound Effect - - bool isLaptop() const; - void setIsLaptop(bool isLaptop); - - bool isIncreaseVolume() const; - void setIncreaseVolume(bool value); - void initMicroPhone() { Q_EMIT microphoneOnChanged(m_microphoneOn); } - void initSpeaker() { Q_EMIT speakerOnChanged(m_speakerOn); } - - inline QStringList bluetoothAudioModeOpts() { return m_bluetoothModeOpts; } - void setBluetoothAudioModeOpts(const QStringList &modes); - - // 设置当前蓝牙耳机模式 - inline QString currentBluetoothAudioMode() { return m_currentBluetoothMode; } - void setCurrentBluetoothAudioMode(const QString &mode); - - // 配置等待 - inline int currentWaitSoundReceiptTime() { return m_waitSoundReceiptTime; } - void setWaitSoundReceiptTime(const int receiptTime); - - // 设置音频框架 - inline QString audioServer() const { return m_audioServer; } - void setAudioServer(const QString &serverName); - - // 音频框架切换的状态 - inline bool audioServerChangedState() const { return m_audioServerStatus; } - void setAudioServerChangedState(const bool state); - -Q_SIGNALS: - void speakerOnChanged(bool speakerOn) const; - void microphoneOnChanged(bool microphoneOn) const; - void soundEffectOnChanged(bool soundEffectOn) const; - void speakerVolumeChanged(double speakerVolume) const; - void speakerBalanceChanged(double speakerBalance) const; - void microphoneVolumeChanged(double microphoneVolume) const; - void defaultSourceChanged(const QDBusObjectPath &defaultSource) const; - void defaultSinkChanged(const QDBusObjectPath &defaultSink) const; - void audioCardsChanged(const QString &audioCards) const; - void maxUIVolumeChanged(double value) const; - void increaseVolumeChanged(bool value) const; - void reduceNoiseChanged(bool reduceNoise) const; - void pausePlayerChanged(bool pausePlayer) const; - void isPortEnableChanged(bool enable) const; - void bluetoothModeOptsChanged(const QStringList &modeOpts) const; - void bluetoothModeChanged(const QString &mode); - - void setPortChanged(const Port* port) const; - //查询是否可用 - void requestSwitchEnable(unsigned int cardId,QString cardName); - - //声音输入设备是否可见 - void inputDevicesVisibleChanged(QString name, bool flag); - //声音输出设备是否可见 - void outputDevicesVisibleChanged(QString name, bool flag); - - // 音频框架设置完成 - void onSetAudioServerFinish(bool value); - // 当前音频框架切换的信号 - void curAudioServerChanged(const QString &audioFrame); - -#ifndef DCC_DISABLE_FEEDBACK - void microphoneFeedbackChanged(double microphoneFeedback) const; -#endif - void portAdded(const Port *port); - void portRemoved(const QString & portId, const uint &cardId, const Port::Direction &direction); - void soundDeviceStatusChanged(); - void soundEffectDataChanged(DDesktopServices::SystemSoundEffect effect, const bool enable); - void enableSoundEffectChanged(bool enableSoundEffect); - void isLaptopChanged(bool isLaptop); - -private: - QString m_audioServer; // 当前使用音频框架 - bool m_audioServerStatus{true}; // 设置音频时的状态 - bool m_speakerOn; - bool m_microphoneOn; - bool m_enableSoundEffect; - bool m_isLaptop; - bool m_increaseVolume{false}; - bool m_reduceNoise{true}; - bool m_pausePlayer{true}; - bool m_portEnable{false}; - double m_speakerVolume; - double m_speakerBalance; - double m_microphoneVolume; - double m_maxUIVolume; - int m_waitSoundReceiptTime; - -#ifndef DCC_DISABLE_FEEDBACK - double m_microphoneFeedback; -#endif - QList m_ports; - QList m_inputPorts; - QList m_outputPorts; - Port *m_activePort; - - QDBusObjectPath m_defaultSource; - QDBusObjectPath m_defaultSink; - QString m_audioCards; - QStringList m_bluetoothModeOpts; - QString m_currentBluetoothMode; - - SoundEffectList m_soundEffectMapPower; - SoundEffectList m_soundEffectMapBattery; - QMap m_soundEffectData; - QMap m_soundEffectPaths; - - bool m_inputVisibled; - bool m_outputVisibled; -}; - -#endif // DCC_SOUND_SOUNDMODEL_H diff --git a/dcc-old/src/plugin-sound/operation/soundworker.cpp b/dcc-old/src/plugin-sound/operation/soundworker.cpp deleted file mode 100644 index 8d6e37ec88..0000000000 --- a/dcc-old/src/plugin-sound/operation/soundworker.cpp +++ /dev/null @@ -1,372 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "soundworker.h" - -#include -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcSoundWorker, "dcc-sound-worker") - -#define GSETTINGS_WAIT_SOUND_RECEIPT "wait-sound-receipt" - -SoundWorker::SoundWorker(SoundModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_activeOutputCard(UINT_MAX) - , m_activeInputCard(UINT_MAX) - , m_soundDBusInter(new SoundDBusProxy(this)) - , m_pingTimer(new QTimer(this)) - , m_inter(QDBusConnection::sessionBus().interface()) -{ - m_pingTimer->setInterval(5000); - m_pingTimer->setSingleShot(false); - m_waitSoundPortReceipt = 1000; - initConnect(); -} - -void SoundWorker::initConnect() -{ - connect(m_model, &SoundModel::defaultSinkChanged, this, &SoundWorker::defaultSinkChanged); - connect(m_model, &SoundModel::defaultSourceChanged, this, &SoundWorker::defaultSourceChanged); - connect(m_model, &SoundModel::audioCardsChanged, this, &SoundWorker::cardsChanged); - - connect(m_soundDBusInter, &SoundDBusProxy::DefaultSinkChanged, m_model, &SoundModel::setDefaultSink); - connect(m_soundDBusInter, &SoundDBusProxy::DefaultSourceChanged, m_model, &SoundModel::setDefaultSource); - connect(m_soundDBusInter, &SoundDBusProxy::MaxUIVolumeChanged, m_model, &SoundModel::setMaxUIVolume); - connect(m_soundDBusInter, &SoundDBusProxy::IncreaseVolumeChanged, m_model, &SoundModel::setIncreaseVolume); - connect(m_soundDBusInter, &SoundDBusProxy::CardsWithoutUnavailableChanged, m_model, &SoundModel::setAudioCards); - connect(m_soundDBusInter, &SoundDBusProxy::ReduceNoiseChanged, m_model, &SoundModel::setReduceNoise); - connect(m_soundDBusInter, &SoundDBusProxy::PausePlayerChanged, m_model, &SoundModel::setPausePlayer); - connect(m_soundDBusInter, &SoundDBusProxy::BluetoothAudioModeOptsChanged, m_model, &SoundModel::setBluetoothAudioModeOpts); - connect(m_soundDBusInter, &SoundDBusProxy::BluetoothAudioModeChanged, m_model, &SoundModel::setCurrentBluetoothAudioMode); - - connect(m_soundDBusInter, &SoundDBusProxy::EnabledChanged, m_model, &SoundModel::setEnableSoundEffect); - connect(m_soundDBusInter, &SoundDBusProxy::pendingCallWatcherFinished, this, &SoundWorker::getSoundEnabledMapFinished); - - connect(m_pingTimer, &QTimer::timeout, [this] { if (m_soundDBusInter) m_soundDBusInter->Tick(); }); - connect(m_soundDBusInter, &SoundDBusProxy::HasBatteryChanged, m_model, &SoundModel::setIsLaptop); - - connect(m_soundDBusInter, &SoundDBusProxy::CurrentAudioServerChanged, m_model, &SoundModel::setAudioServer); - connect(m_soundDBusInter, &SoundDBusProxy::AudioServerStateChanged, m_model, &SoundModel::setAudioServerChangedState); -} - -void SoundWorker::activate() -{ - m_model->setDefaultSink(m_soundDBusInter->defaultSink()); - m_model->setDefaultSource(m_soundDBusInter->defaultSource()); - m_model->setAudioCards(m_soundDBusInter->cardsWithoutUnavailable()); - m_model->setIsLaptop(m_soundDBusInter->hasBattery()); - m_model->setMaxUIVolume(m_soundDBusInter->maxUIVolume()); - m_model->setIncreaseVolume(m_soundDBusInter->increaseVolume()); - m_model->setReduceNoise(m_soundDBusInter->reduceNoise()); - m_model->setPausePlayer(m_soundDBusInter->pausePlayer()); - m_model->setBluetoothAudioModeOpts(m_soundDBusInter->bluetoothAudioModeOpts()); - m_model->setCurrentBluetoothAudioMode(m_soundDBusInter->bluetoothAudioMode()); - m_model->setEnableSoundEffect(m_soundDBusInter->enabled()); - m_model->setWaitSoundReceiptTime(m_waitSoundPortReceipt); - m_model->setAudioServer(m_soundDBusInter->audioServer()); - m_model->setAudioServerChangedState(m_soundDBusInter->audioServerState()); - - m_pingTimer->start(); - m_soundDBusInter->blockSignals(false); - - defaultSinkChanged(m_model->defaultSink()); - defaultSourceChanged(m_model->defaultSource()); - cardsChanged(m_model->audioCards()); -} - -void SoundWorker::deactivate() -{ - m_pingTimer->stop(); - - m_soundDBusInter->blockSignals(true); -} - -void SoundWorker::refreshSoundEffect() -{ - m_model->setEnableSoundEffect(m_soundDBusInter->enabled()); - m_soundDBusInter->GetSoundEnabledMap(); -} - -void SoundWorker::setAudioServer(const QString &value) -{ - m_soundDBusInter->SetAudioServer(value); - m_model->setAudioServer(value); -} - -void SoundWorker::switchSpeaker(bool on) -{ - m_soundDBusInter->SetMuteSink(!on); -} - -void SoundWorker::switchMicrophone(bool on) -{ - m_soundDBusInter->SetSourceMute(!on); -} - -void SoundWorker::setPortEnabled(unsigned int cardid, QString portName, bool enable) -{ - if (m_soundDBusInter) - m_soundDBusInter->SetPortEnabled(cardid, portName, enable); -} - -void SoundWorker::setSinkBalance(double balance) -{ - m_soundDBusInter->SetBalanceSink(balance, true); - qCDebug(DdcSoundWorker) << "set balance to " << balance; - -} - -void SoundWorker::setSourceVolume(double volume) -{ - m_soundDBusInter->SetSourceVolume(volume, true); - qCDebug(DdcSoundWorker) << "set source volume to " << volume; -} - -void SoundWorker::setSinkVolume(double volume) -{ - m_soundDBusInter->SetVolumeSink(volume, true); - qCDebug(DdcSoundWorker) << "set sink volume to " << volume; -} - -//切换输入静音状态,flag为false时直接取消静音 -void SoundWorker::setSinkMute(bool flag) -{ - if (flag) { - m_soundDBusInter->SetMuteSink(!m_soundDBusInter->muteSink()); - } else if (m_soundDBusInter->muteSink()) { - m_soundDBusInter->SetMuteSink(false); - } -} - -//通知后端切换静音状态,flag为false时直接取消静音 -void SoundWorker::setSourceMute(bool flag) -{ - if (flag) { - m_soundDBusInter->SetSourceMute(!m_soundDBusInter->muteSource()); - } else if (m_soundDBusInter->muteSource()) { - m_soundDBusInter->SetSourceMute(false); - } -} - -void SoundWorker::setIncreaseVolume(bool value) -{ - m_soundDBusInter->setIncreaseVolume(value); -} - -void SoundWorker::setReduceNoise(bool value) -{ - m_soundDBusInter->setReduceNoise(value); -} - -void SoundWorker::setPausePlayer(bool value) -{ - m_soundDBusInter->setPausePlayer(value); -} - -void SoundWorker::setPort(const Port *port) -{ - m_soundDBusInter->SetPort(port->cardId(), port->id(), int(port->direction())); - qCDebug(DdcSoundWorker) << "cardID:" << port->cardId() << "portName:" << port->name() << " " << port->id() << " " << port->direction(); - m_model->setPort(port); -} - -void SoundWorker::setEffectEnable(DDesktopServices::SystemSoundEffect effect, bool enable) -{ - m_soundDBusInter->EnableSound(m_model->getNameByEffectType(effect), enable, this , SLOT(refreshSoundEffect()), SLOT(refreshSoundEffect())); -} - -void SoundWorker::enableAllSoundEffect(bool enable) -{ - m_soundDBusInter->setEnabled(enable); -} - -void SoundWorker::setBluetoothMode(const QString &mode) -{ - m_soundDBusInter->SetBluetoothAudioMode(mode); -} - -void SoundWorker::defaultSinkChanged(const QDBusObjectPath &path) -{ - qCDebug(DdcSoundWorker) << "sink default path:" << path.path(); - if (path.path().isEmpty() || path.path() == "/" ) - return; //路径为空 - - - m_soundDBusInter->setSinkDevicePath(path.path()); - connect(m_soundDBusInter, &SoundDBusProxy::MuteSinkChanged, [this](bool mute) { m_model->setSpeakerOn(mute);}); - connect(m_soundDBusInter, &SoundDBusProxy::BalanceSinkChanged, m_model, &SoundModel::setSpeakerBalance); - connect(m_soundDBusInter, &SoundDBusProxy::VolumeSinkChanged, m_model, &SoundModel::setSpeakerVolume); - connect(m_soundDBusInter, &SoundDBusProxy::ActivePortSinkChanged, this, &SoundWorker::activeSinkPortChanged); - connect(m_soundDBusInter, &SoundDBusProxy::CardSinkChanged, this, &SoundWorker::onSinkCardChanged); - - m_model->setSpeakerOn(m_soundDBusInter->muteSink()); - m_model->setSpeakerBalance(m_soundDBusInter->balanceSink()); - m_model->setSpeakerVolume(m_soundDBusInter->volumeSink()); - activeSinkPortChanged(m_soundDBusInter->activePortSink()); - onSinkCardChanged(m_soundDBusInter->cardSink()); -} - -void SoundWorker::defaultSourceChanged(const QDBusObjectPath &path) -{ - qDebug() << "source default path:" << path.path(); - if (path.path().isEmpty() || path.path() == "/" ) return; //路径为空 - - m_soundDBusInter->setSourceDevicePath(path.path()); - - connect(m_soundDBusInter, &SoundDBusProxy::MuteSourceChanged, [this](bool mute) { m_model->setMicrophoneOn(mute); }); - connect(m_soundDBusInter, &SoundDBusProxy::VolumeSourceChanged, m_model, &SoundModel::setMicrophoneVolume); - connect(m_soundDBusInter, &SoundDBusProxy::ActivePortSourceChanged, this, &SoundWorker::activeSourcePortChanged); - connect(m_soundDBusInter, &SoundDBusProxy::CardSourceChanged, this, &SoundWorker::onSourceCardChanged); - - m_model->setMicrophoneOn(m_soundDBusInter->muteSource()); - m_model->setMicrophoneVolume(m_soundDBusInter->volumeSource()); - activeSourcePortChanged(m_soundDBusInter->activePortSource()); - onSourceCardChanged(m_soundDBusInter->cardSource()); - -#ifndef DCC_DISABLE_FEEDBACK - QDBusObjectPath meter = m_soundDBusInter->GetMeter(); - if (meter.path().isEmpty()) - return; - m_soundDBusInter->setMeterDevicePath(meter.path()); - connect(m_soundDBusInter, &SoundDBusProxy::VolumeMeterChanged, m_model, &SoundModel::setMicrophoneFeedback); - m_model->setMicrophoneFeedback(m_soundDBusInter->volumeMeter()); - -#endif -} - -void SoundWorker::cardsChanged(const QString &cards) -{ - QMap tmpCardIds; - QJsonDocument doc = QJsonDocument::fromJson(cards.toUtf8()); - QJsonArray jCards = doc.array(); - for (QJsonValue cV : jCards) { - QJsonObject jCard = cV.toObject(); - const uint cardId = static_cast(jCard["Id"].toInt()); - const QString cardName = jCard["Name"].toString(); - QJsonArray jPorts = jCard["Ports"].toArray(); - - QStringList tmpPorts; - - for (QJsonValue pV : jPorts) { - QJsonObject jPort = pV.toObject(); - const double portAvai = jPort["Available"].toDouble(); - if (portAvai == 2.0 || portAvai == 0.0) { // 0 Unknown 1 Not available 2 Available - const QString portId = jPort["Name"].toString(); - const QString portName = jPort["Description"].toString(); - const bool isEnabled = jPort["Enabled"].toBool(); - const bool isBluetooth = jPort["Bluetooth"].toBool(); - - Port *port = m_model->findPort(portId, cardId); - const bool include = port != nullptr; - if (!include) { port = new Port(m_model); } - - port->setId(portId); - port->setName(portName); - port->setDirection(Port::Direction(jPort["Direction"].toDouble())); - port->setCardId(cardId); - port->setCardName(cardName); - port->setEnabled(isEnabled); - port->setIsBluetoothPort(isBluetooth); - - const bool isActiveOuputPort = (portId == m_activeSinkPort) && (cardId == m_activeOutputCard); - const bool isActiveInputPort = (portId == m_activeSourcePort) && (cardId == m_activeInputCard); - - port->setIsActive(isActiveInputPort || isActiveOuputPort); - - if (!include) { m_model->addPort(port); } - - tmpPorts << portId; - } - } - if (!jPorts.isEmpty()) - tmpCardIds.insert(cardId, tmpPorts); - } - - for (Port *port : m_model->ports()) { - //if the card is not in the list - if (!tmpCardIds.contains(port->cardId())) { - m_model->removePort(port->id(), port->cardId()); - } else if (!tmpCardIds[port->cardId()].contains(port->id())) { - m_model->removePort(port->id(), port->cardId()); - } - } -} - -void SoundWorker::activeSinkPortChanged(const AudioPort &activeSinkPort) -{ - qCDebug(DdcSoundWorker) << "active sink port changed to: " << activeSinkPort.name; - m_activeSinkPort = activeSinkPort.name; - - for (auto port : m_model->ports()) { - if (m_activeSinkPort == port->id()) { - m_model->setPort(port); - } - } - - updatePortActivity(); -} - -void SoundWorker::activeSourcePortChanged(const AudioPort &activeSourcePort) -{ - qCDebug(DdcSoundWorker) << "active source port changed to: " << activeSourcePort.name; - m_activeSourcePort = activeSourcePort.name; - - updatePortActivity(); -} - -void SoundWorker::onSinkCardChanged(const uint &cardId) -{ - m_activeOutputCard = cardId; - - updatePortActivity(); -} - -void SoundWorker::onSourceCardChanged(const uint &cardId) -{ - m_activeInputCard = cardId; - - updatePortActivity(); -} - -void SoundWorker::getSoundEnabledMapFinished(QMap map) -{ - for (auto it = map.constBegin(); it != map.constEnd(); ++it) { - if (!m_model->checkSEExist(it.key())) continue; - - DDesktopServices::SystemSoundEffect type = m_model->getEffectTypeByGsettingName(it.key()); - m_model->setEffectData(type, it.value()); - - QString path = m_soundDBusInter->GetSoundFile(it.key()); - m_model->updateSoundEffectPath(type, path); - } -} - - -void SoundWorker::getSoundPathFinished(QDBusPendingCallWatcher *watcher) -{ - if (!watcher->isError()) { - QDBusReply reply = watcher->reply(); - m_model->updateSoundEffectPath( - watcher->property("Type").value(), - reply.value()); - } else { - qCDebug(DdcSoundWorker) << "get sound path error." << watcher->error(); - } - - watcher->deleteLater(); -} - -void SoundWorker::updatePortActivity() -{ - for (Port *port : m_model->ports()) { - const bool isActiveOuputPort = (port->id() == m_activeSinkPort) && (port->cardId() == m_activeOutputCard); - const bool isActiveInputPort = (port->id() == m_activeSourcePort) && (port->cardId() == m_activeInputCard); - port->setIsActive(isActiveInputPort || isActiveOuputPort); - } -} diff --git a/dcc-old/src/plugin-sound/operation/soundworker.h b/dcc-old/src/plugin-sound/operation/soundworker.h deleted file mode 100644 index d4e4f1a763..0000000000 --- a/dcc-old/src/plugin-sound/operation/soundworker.h +++ /dev/null @@ -1,82 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SOUNDWORKER_H -#define SOUNDWORKER_H - -#include - -#include "sounddbusproxy.h" -#include "soundmodel.h" -#include "audioport.h" - -#include -#include "qdbusconnectioninterface.h" - -DWIDGET_USE_NAMESPACE - -class SoundWorker : public QObject -{ - Q_OBJECT -public: - explicit SoundWorker(SoundModel *model, QObject * parent = 0); - - void activate(); - void deactivate(); - - -public Q_SLOTS: - void switchSpeaker(bool on); - void switchMicrophone(bool on); - - void setPortEnabled(unsigned int cardid,QString portName,bool enable); - void setSinkBalance(double balance); - void setSourceVolume(double volume); - void setSinkVolume(double volume); - void setSourceMute(bool flag = true); - void setSinkMute(bool flag = true); - void setIncreaseVolume(bool value); - void setReduceNoise(bool value); - void setPausePlayer(bool value); - - void setPort(const Port *port); - void setEffectEnable(DDesktopServices::SystemSoundEffect effect, bool enable); - void enableAllSoundEffect(bool enable); - void setBluetoothMode(const QString &mode); - void refreshSoundEffect(); - - void setAudioServer(const QString &value); - -private Q_SLOTS: - void defaultSinkChanged(const QDBusObjectPath &path); - void defaultSourceChanged(const QDBusObjectPath &path); - void cardsChanged(const QString &cards); - - void activeSinkPortChanged(const AudioPort &activeSinkPort); - void activeSourcePortChanged(const AudioPort &activeSourcePort); - - void onSinkCardChanged(const uint &cardId); - void onSourceCardChanged(const uint &cardId); - - void getSoundEnabledMapFinished(QMap map); - void getSoundPathFinished(QDBusPendingCallWatcher *watcher); - -private: - void initConnect(); - void updatePortActivity(); - -private: - SoundModel *m_model; - QString m_activeSinkPort; - QString m_activeSourcePort; - uint m_activeOutputCard; - uint m_activeInputCard; - - SoundDBusProxy *m_soundDBusInter; - - QTimer *m_pingTimer; - QDBusConnectionInterface *m_inter; - int m_waitSoundPortReceipt; -}; - -#endif // SOUNDWORKER_H diff --git a/dcc-old/src/plugin-sound/window/advancedsettingmodule.cpp b/dcc-old/src/plugin-sound/window/advancedsettingmodule.cpp deleted file mode 100644 index c9156445b9..0000000000 --- a/dcc-old/src/plugin-sound/window/advancedsettingmodule.cpp +++ /dev/null @@ -1,109 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "advancedsettingmodule.h" - -#include "widgets/dcclistview.h" -#include "widgets/widgetmodule.h" - -#include - -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -AdvancedSettingModule::AdvancedSettingModule(SoundModel *model, SoundWorker *work, QObject *parent) - : PageModule("advancedSetting", tr("Advanced Setting"), parent) - , m_model(model) - , m_work(work) -{ - initUI(); -} - -AdvancedSettingModule::~AdvancedSettingModule() { } - -void AdvancedSettingModule::deactive() { } - -void AdvancedSettingModule::initUI() -{ - // 音频选项标题 - appendChild(new ItemModule("audioFrameworkTitle", tr("Audio Framework"))); - - // 音频框架列表 - m_audioItemModel = new QStandardItemModel(this); - DStandardItem *m_pulseAudio = new DStandardItem("PulseAudio"); - m_pulseAudio->setData("PulseAudio", Dtk::UserRole); - m_audioItemModel->appendRow(m_pulseAudio); - - DStandardItem *m_pipeWire = new DStandardItem("PipeWire"); - m_pipeWire->setData("PipeWire", Dtk::UserRole); - m_audioItemModel->appendRow(m_pipeWire); - - m_audioListModule = new ItemModule( - "selectFramework", - QString(), - [this](ModuleObject *) -> QWidget * { - DCCListView *audiorListView = new DCCListView(); - audiorListView->setModel(m_audioItemModel); - setAudioServerByName(m_model->audioServer()); - - connect(audiorListView, - &DListView::clicked, - this, - &AdvancedSettingModule::onAudioServerChecked); - - return audiorListView; - }, - false); - m_audioListModule->setEnabled(m_model->audioServerChangedState()); - // 等待切换结束的信号,才允许操作 - connect(m_model, - &SoundModel::onSetAudioServerFinish, - m_audioListModule, - &ItemModule::setEnabled); - appendChild(m_audioListModule); - - // 音频框架提示 - appendChild(new WidgetModule("framework", QString(), [](DTipLabel *dTipLabel) { - dTipLabel->setWordWrap(true); - dTipLabel->setAlignment(Qt::AlignLeft); - dTipLabel->setContentsMargins(10, 0, 10, 0); - dTipLabel->setText( - tr("Different audio frameworks have their own advantages and disadvantages, and " - "you can choose the one that best matches you to use")); - })); -} - -void AdvancedSettingModule::setAudioServerByName(const QString &curAudioServer) -{ - qDebug() << "current AudioFrame is " << curAudioServer; - int row_count = m_audioItemModel->rowCount(); - for (int i = 0; i < row_count; i++) { - QStandardItem *item = m_audioItemModel->item(i, 0); - if (item && (item->text().toLower() == curAudioServer)) { - item->setCheckState(Qt::Checked); - } else if (item) { // 如果不加此判断,item会出现空指针 - item->setCheckState(Qt::Unchecked); - } - } -} - -void AdvancedSettingModule::onAudioServerChecked(const QModelIndex &index) -{ - int row_count = m_audioItemModel->rowCount(); - for (int i = 0; i < row_count; i++) { - QStandardItem *item = m_audioItemModel->item(i, 0); - if (item && (index.row() == i)) { - if (item->checkState() != Qt::Checked) { - // 被点击时设置为不可选中状态,直到切换结束 - m_audioListModule->setDisabled(true); - qDebug() << "switch AudioFrame " << item->text(); - item->setCheckState(Qt::Checked); - Q_EMIT setCurAudioServer(item->text().toLower()); - } - } else if (item) { // 如果不加此判断,item会出现空指针 - item->setCheckState(Qt::Unchecked); - } - } -} diff --git a/dcc-old/src/plugin-sound/window/advancedsettingmodule.h b/dcc-old/src/plugin-sound/window/advancedsettingmodule.h deleted file mode 100644 index 6800c1e12f..0000000000 --- a/dcc-old/src/plugin-sound/window/advancedsettingmodule.h +++ /dev/null @@ -1,63 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ADVANCEDSETTINGMODULE_H -#define ADVANCEDSETTINGMODULE_H - -#include "interface/pagemodule.h" - -#include "interface/namespace.h" -#include "soundmodel.h" -#include "itemmodule.h" - -#include - -#include - - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class ItemModule; -class PageModule; -} - -class SoundModel; -class SoundWorker; -/** - * 该界面类对应 控制中心-声音模块-高级设置 界面 - */ - -class AdvancedSettingModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT - -public: - explicit AdvancedSettingModule(SoundModel *model, SoundWorker *work, QObject *parent); - ~AdvancedSettingModule(); - void deactive() override; - -Q_SIGNALS: - void setCurAudioServer(const QString &curAudioServer); // 设置音频框架时触发信号 - -public Q_SLOTS: - void setAudioServerByName(const QString &curAudioServer); // 通过框架名设置选中状态 - void onAudioServerChecked(const QModelIndex &index); // 当音频框架被选中时触发 - -private: - void initUI(); - -private: - // model类, 为后端数据来源及数据变化信号来源 - SoundModel *m_model{nullptr}; - SoundWorker *m_work{nullptr}; - - // 音频服务选项 - QStandardItemModel *m_audioItemModel{nullptr}; - DCC_NAMESPACE::ItemModule *m_audioListModule{nullptr}; - -}; - -#endif // ADVANCEDSETTINGMODULE_H diff --git a/dcc-old/src/plugin-sound/window/audioport.h b/dcc-old/src/plugin-sound/window/audioport.h deleted file mode 100644 index 653c6c8680..0000000000 --- a/dcc-old/src/plugin-sound/window/audioport.h +++ /dev/null @@ -1,56 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef AUDIOPORT_H -#define AUDIOPORT_H - -#include -#include -#include -#include - - -class AudioPort -{ -public: - AudioPort() {} - friend QDebug operator<<(QDebug argument, const AudioPort &port) { - argument << port.name << port.description << port.availability; - - return argument; - } - - friend QDBusArgument &operator<<(QDBusArgument &argument, const AudioPort &port) { - argument.beginStructure(); - argument << port.name << port.description << port.availability; - argument.endStructure(); - - return argument; - } - - friend const QDBusArgument &operator>>(const QDBusArgument &argument, AudioPort &port) { - - argument.beginStructure(); - argument >> port.name >> port.description >> port.availability; - argument.endStructure(); - return argument; - } - - bool operator==(const AudioPort what) const { - return what.name == name && what.description == description && what.availability == availability; - } - - bool operator!=(const AudioPort what) const { - return what.name != name || what.description != description || what.availability != availability; - } -public: - QString name; - QString description; - uchar availability; // 0 for Unknown, 1 for Not Available, 2 for Available. -}; - -Q_DECLARE_METATYPE(AudioPort) - -void registerAudioPortMetaType(); - -#endif // AUDIOPORT_H diff --git a/dcc-old/src/plugin-sound/window/devicemanagespage.cpp b/dcc-old/src/plugin-sound/window/devicemanagespage.cpp deleted file mode 100644 index 21c023d565..0000000000 --- a/dcc-old/src/plugin-sound/window/devicemanagespage.cpp +++ /dev/null @@ -1,109 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "devicemanagespage.h" -#include "soundmodel.h" -#include "widgets/settingsgroup.h" -#include "widgets/switchwidget.h" -#include "widgets/titlelabel.h" - -#include -#include -#include -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -DevicemanagesPage::DevicemanagesPage(Port::Direction direction, QWidget *parent) - : QWidget(parent) - , m_direction(direction) - , m_layout(new QVBoxLayout(this)) - , m_deviceGroup(new SettingsGroup(nullptr, SettingsGroup::GroupBackground)) -{ -} - -DevicemanagesPage::~DevicemanagesPage() -{ - -} - -void DevicemanagesPage::setModel(SoundModel *model) -{ - m_model = model; - - connect(m_model, &SoundModel::portAdded, this, &DevicemanagesPage::addPort); - connect(m_model, &SoundModel::portRemoved, this, &DevicemanagesPage::removePort); - - initUI(); - refreshPort(); -} - -void DevicemanagesPage::refreshPort() -{ - auto ports = m_model->ports(); - for (auto port : ports) { - if (m_direction == port->direction()) - addPort(port); - } -} - -void DevicemanagesPage::addPort(const Port *port) -{ - if (m_devicePort.contains(port)){ - return; - } - - SwitchWidget *switchDevs = new SwitchWidget(this); - switchDevs->setTitle(port->name() + "(" + port->cardName() + ")"); - switchDevs->setChecked(port->isEnabled()); - - // add Device - if (m_direction == port->direction()) { - m_devicePort.append(port); - m_deviceGroup->appendItem(switchDevs); - } - - // 切換狀態 - connect(switchDevs, &SwitchWidget::checkedChanged, this, [ = ]{ - if(port != nullptr){ - Q_EMIT requestSwitchSetEnable(port->cardId(), port->id(), switchDevs->checked()); - } else { - switchDevs->setChecked(false); - switchDevs->deleteLater(); - } - }); - - // 弹出横幅 控制状态 - connect(port, &Port::currentPortEnabled, switchDevs, &SwitchWidget::setChecked); -} - -void DevicemanagesPage::removePort(const QString &portId, const uint &cardId) -{ - // TODO: 修改删除逻辑 - for (int i = 0; i < m_devicePort.size(); i++) { - if (m_devicePort.at(i)->id() == portId && m_devicePort.at(i)->cardId() == cardId){ - m_deviceGroup->removeItem(m_deviceGroup->getItem(i)); - m_devicePort.removeAt(i); - return; - } - } -} - -void DevicemanagesPage::initUI() -{ - // 输入设备 - m_deviceGroup->getLayout()->setContentsMargins(0, 0, 0, 0); - m_layout->addWidget(m_deviceGroup); - m_layout->addStretch(); - - m_layout->setContentsMargins(0, 0, 0, 0); - m_layout->setSpacing(0); - setLayout(m_layout); -} - diff --git a/dcc-old/src/plugin-sound/window/devicemanagespage.h b/dcc-old/src/plugin-sound/window/devicemanagespage.h deleted file mode 100644 index 2c862f06f5..0000000000 --- a/dcc-old/src/plugin-sound/window/devicemanagespage.h +++ /dev/null @@ -1,60 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DEVICEMANAGES_H -#define DEVICEMANAGES_H - -#include -#include "interface/namespace.h" -#include "soundmodel.h" - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QListView; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DListView; -class DTipLabel; -DWIDGET_END_NAMESPACE - - -namespace DCC_NAMESPACE { -class TitledSliderItem; -class SettingsGroup; -} - -DWIDGET_USE_NAMESPACE - -class SoundModel; -class DevicemanagesPage : public QWidget -{ - Q_OBJECT -public: - explicit DevicemanagesPage(Port::Direction direction, QWidget *parent = nullptr); - ~DevicemanagesPage(); - -public: - void setModel(SoundModel *model); - -Q_SIGNALS: - void requestSwitchSetEnable(unsigned int cardId, const QString &cardName, bool enable); - -private Q_SLOTS: - void refreshPort(); - void addPort(const Port *port); - void removePort(const QString &portId, const uint &cardId); - -protected: - void initUI(); - -private: - Port::Direction m_direction; - SoundModel *m_model{ nullptr }; - QVBoxLayout *m_layout{ nullptr }; - - DCC_NAMESPACE::SettingsGroup *m_deviceGroup{ nullptr }; - QList m_devicePort; -}; - -#endif // DEVICEMANAGES_H diff --git a/dcc-old/src/plugin-sound/window/microphonepage.cpp b/dcc-old/src/plugin-sound/window/microphonepage.cpp deleted file mode 100644 index a5c21da465..0000000000 --- a/dcc-old/src/plugin-sound/window/microphonepage.cpp +++ /dev/null @@ -1,400 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "microphonepage.h" -#include "soundmodel.h" -#include "widgets/switchwidget.h" -#include "widgets/titlelabel.h" -#include "widgets/titledslideritem.h" -#include "widgets/dccslider.h" -#include "widgets/comboxwidget.h" -#include "widgets/settingsgroup.h" -#include "audioport.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -Q_DECLARE_METATYPE(const Port *) - -MicrophonePage::MicrophonePage(QWidget *parent) - : QWidget(parent) - , m_layout(new QVBoxLayout) - , m_volumeBtn(nullptr) - , m_waitTimerValue(0) - , m_lastRmPortIndex(-1) - , m_enablePort(false) - , m_fristChangePort(true) - , m_currentBluetoothPortStatus(true) - , m_waitStatusChangeTimer(new QTimer(this)) -{ - m_inputSoundCbx = new ComboxWidget(tr("Input Device")); - m_inputSoundCbx->comboBox()->setAccessibleName("inputSoundCbx"); - - m_noiseReductionsw = new SwitchWidget(tr("Automatic Noise Suppression"), this); - m_noiseReductionsw->addBackground(); - - m_inputModel = new QStandardItemModel(m_inputSoundCbx->comboBox()); - m_inputSoundCbx->comboBox()->setModel(m_inputModel); - - m_layout->setContentsMargins(0, 0, 0, 10); - // TODO: 配置 DCONFIG - connect(m_waitStatusChangeTimer, &QTimer::timeout, [this](){ - refreshActivePortShow(m_currentPort); - showWaitSoundPortStatus(true); - }); - m_waitStatusChangeTimer->setSingleShot(true); - m_waitStatusChangeTimer->start(); - - setLayout(m_layout); -} - -MicrophonePage::~MicrophonePage() -{ - m_waitStatusChangeTimer->stop(); - -#ifndef DCC_DISABLE_FEEDBACK - if (m_feedbackSlider) - m_feedbackSlider->disconnect(m_conn); - m_feedbackSlider->deleteLater(); -#endif - -} - -/**当用户进入扬声器端口手动切换蓝牙输出端口后,再进入麦克风页面时 - * 会有默认输入端口路径为空或者指定路径下激活端口为空的情况, - */ -void MicrophonePage::resetUi() -{ - QDBusInterface interface("org.deepin.dde.Audio1", "/org/deepin/dde/Audio1", "org.deepin.dde.Audio1", QDBusConnection::sessionBus(), this); - QDBusObjectPath defaultPath = interface.property("DefaultSource").value(); - if (defaultPath.path() == "/" || defaultPath.path().isEmpty()) //路径为空 - m_inputSoundCbx->comboBox()->setCurrentIndex(-1); - else { - QDBusInterface *defaultSource = new QDBusInterface("org.deepin.dde.Audio1", defaultPath.path(), "org.deepin.dde.Audio1.Source", QDBusConnection::sessionBus(), this); - AudioPort port = QDBusPendingReply(defaultSource->asyncCall(QStringLiteral("ActivePort"))); - if (port.name.isEmpty() || port.description.isEmpty()) { - m_inputSoundCbx->comboBox()->setCurrentIndex(-1); - } - showDevice(); - } -} - -void MicrophonePage::setModel(SoundModel *model) -{ - m_model = model; - m_waitTimerValue = m_model->currentWaitSoundReceiptTime(); - - //监听消息设置是否可用 - connect(m_model, &SoundModel::isPortEnableChanged, this, [ = ](bool enable) { - //启用端口后需要再判断是否启用成功后,再设置为默认端口,但因为设置端口后会有端口是否启用的状态判断, - //导致进入死循环,所以添加判断值,判断是否是启用或禁用端口类型的操作,若是,则设置默认端口 - if (enable && m_enablePort) { - QModelIndex index = m_inputSoundCbx->comboBox()->view()->currentIndex(); - if (index.isValid()) - Q_EMIT requestSetPort(m_inputModel->data(index, Qt::WhatsThisPropertyRole).value()); - } - showDevice(); - }); - //发送查询请求消息看是否可用 - connect(m_model, &SoundModel::setPortChanged, this, [ = ](const Port * port) { - m_enablePort = false; - Q_EMIT m_model->requestSwitchEnable(port->cardId(), port->id()); - }); - - auto ports = m_model->ports(); - for (auto port : ports) { - addPort(port); - } - //这个临时这个判断,直接设置m_noiseReductionsw(m_model->reduceNoise()) 没有效果,待dtk组的同时祥查 - if (m_model->reduceNoise()) - m_noiseReductionsw->setChecked(true); - else - m_noiseReductionsw->setChecked(false); - - connect(m_model, &SoundModel::portAdded, this, &MicrophonePage::addPort); - connect(m_model, &SoundModel::portRemoved, this, &MicrophonePage::removePort); - connect(m_model, &SoundModel::soundDeviceStatusChanged, this, &MicrophonePage::changeComboxStatus); - connect(m_inputSoundCbx->comboBox(), static_cast(&QComboBox::activated),this, &MicrophonePage::changeComboxIndex); - - connect(m_noiseReductionsw, &SwitchWidget::checkedChanged, this, &MicrophonePage::requestReduceNoise); - connect(m_model, &SoundModel::reduceNoiseChanged, m_noiseReductionsw, &SwitchWidget::setChecked); - connect(m_model, &SoundModel::microphoneOnChanged, this, [ = ](bool flag) { - Q_UNUSED(flag) - refreshIcon(); - }); - - initSlider(); - initCombox(); -} - -void MicrophonePage::removePort(const QString &portId, const uint &cardId, const Port::Direction &direction) -{ - if (direction != Port::Direction::In) - return; - - // 先阻塞m_outputSoundCbx切换信号,避免移除当前端口时被动触发切换当前端口信号,而新的当前端口由是后端确定 - m_inputSoundCbx->blockSignals(true); - m_inputSoundCbx->comboBox()->hidePopup(); - - // 查找移除的端口直接从model中移除,如果是当前端口直接设置为空,新的当前端口由后端确定,控制中心响应信号设置当前端口 - for (int i = 0; i < m_inputModel->rowCount(); ++i) { - auto item = m_inputModel->item(i); - auto port = item->data(Qt::WhatsThisPropertyRole).value(); - if (port && port->id() == portId && cardId == port->cardId()) { - m_inputModel->removeRow(i); - break; - } - } - if (m_currentPort && m_currentPort->id() == portId && m_currentPort->cardId() == cardId) { - m_currentPort = nullptr; - } - - changeComboxStatus(); - showDevice(); - m_inputSoundCbx->blockSignals(false); -} - -void MicrophonePage::changeComboxIndex(const int idx) -{ - if (idx < 0) - return; - - auto tFunc = [this](const int tmpIdx) { - auto temp = m_inputModel->index(tmpIdx, 0); - const Port *port = m_inputModel->data(temp, Qt::WhatsThisPropertyRole).value(); - this->requestSetPort(port); - qDebug() << "default source index change, currentTerxt:" << m_inputSoundCbx->comboBox()->itemText(tmpIdx); - }; - - tFunc(idx); - changeComboxStatus(); - - showDevice(); -} - -void MicrophonePage::changeComboxStatus() -{ - showWaitSoundPortStatus(false); - m_waitStatusChangeTimer->stop(); - m_waitStatusChangeTimer->start(m_waitTimerValue); -} - -void MicrophonePage::refreshActivePortShow(const Port *port) -{ - if (port && port->isActive()) { - m_inputSoundCbx->comboBox()->setCurrentText(port->name() + "(" + port->cardName() + ")"); - m_currentBluetoothPortStatus = port->isBluetoothPort(); - showDevice(); - } -} - -void MicrophonePage::addPort(const Port *port) -{ - if (port->In == port->direction()) { - DStandardItem *pi = new DStandardItem; - pi->setText(port->name() + "(" + port->cardName() + ")"); - pi->setData(QVariant::fromValue(port), Qt::WhatsThisPropertyRole); - - connect(port, &Port::nameChanged, this, [ = ](const QString str) { - pi->setText(str); - }); - connect(port, &Port::isInputActiveChanged, this, [ = ](bool isActive) { - // 若关闭设备 此时pi为空 - if (pi) { - pi->setCheckState(isActive ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); - if (isActive) { - m_currentPort = port; - changeComboxStatus(); - } - } - }); - connect(port, &Port::currentPortEnabled, this, [ = ](bool isEnable) { - int index = m_inputSoundCbx->comboBox()->findData(QVariant::fromValue(port)); - // 若端口可用 且没有添加 - if (isEnable && (index == -1) && pi) { - m_inputModel->appendRow(pi); - showDevice(); - } - - if (!isEnable && (index != -1)) { - m_inputModel->removeRow(index); - showDevice(); - } - }); - - m_inputSoundCbx->comboBox()->hidePopup(); - if (port->isEnabled()) - m_inputModel->appendRow(pi); - if (port->isActive()) { - m_currentPort = port; - refreshActivePortShow(m_currentPort); - Q_EMIT m_model->requestSwitchEnable(port->cardId(), port->id()); - } - showDevice(); - } -} - -void MicrophonePage::toggleMute() -{ - Q_EMIT requestMute(); -} - -void MicrophonePage::initSlider() -{ - m_inputSlider = new TitledSliderItem(tr("Input Volume")); - m_inputSlider->addBackground(); - m_layout->addWidget(m_inputSlider); - - m_volumeBtn = new SoundLabel(this); - QGridLayout *gridLayout = dynamic_cast(m_inputSlider->slider()->layout()); - if (gridLayout) { - gridLayout->addWidget(m_volumeBtn, 1, 0, Qt::AlignVCenter); - } - m_volumeBtn->setAccessibleName("volume-button"); - m_volumeBtn->setFixedSize(ICON_SIZE, ICON_SIZE); - m_volumeBtn->setIconSize(QSize(ICON_SIZE, ICON_SIZE)); - - DCCSlider *slider = m_inputSlider->slider(); - slider->setRange(0, 100); - slider->setType(DCCSlider::Vernier); - slider->setTickPosition(QSlider::NoTicks); - auto icon_high = DStyle::standardIcon(style(), DStyle::SP_MediaVolumeHighElement); - slider->setRightIcon(icon_high); - slider->setIconSize(QSize(24, 24)); - slider->setTickInterval(1); - slider->setSliderPosition(int(m_model->microphoneVolume() * 100)); - slider->setPageStep(1); - - auto slotfunc1 = [ = ](int pos) { - double val = pos / 100.0; - Q_EMIT requestSetMicrophoneVolume(val); - Q_EMIT requestMute(false); - }; - int val = static_cast(m_model->microphoneVolume() * static_cast(100.0f)); - slider->setValue(val); - m_inputSlider->setValueLiteral(QString::number(m_model->microphoneVolume() * 100) + "%"); - connect(slider, &DCCSlider::valueChanged, this, slotfunc1); - connect(slider, &DCCSlider::sliderMoved, this, slotfunc1); - connect(m_model, &SoundModel::microphoneVolumeChanged, this, [ = ](double v) { - slider->blockSignals(true); - slider->setValue(static_cast(v * 100)); - slider->setSliderPosition(static_cast(v * 100)); - slider->blockSignals(false); - m_inputSlider->setValueLiteral(QString::number(v * 100) + "%"); - }); - connect(m_volumeBtn, &SoundLabel::clicked, this, &MicrophonePage::toggleMute); - -#ifndef DCC_DISABLE_FEEDBACK - m_feedbackSlider = (new TitledSliderItem(tr("Input Level"))); - m_feedbackSlider->addBackground(); - DCCSlider *slider2 = m_feedbackSlider->slider(); - slider2->setRange(0, 100); - slider2->setEnabled(false); - slider2->setType(DCCSlider::Vernier); - slider2->setTickPosition(QSlider::NoTicks); - slider2->setLeftIcon(DIconTheme::findQIcon("dcc_feedbacklow")); - slider2->setRightIcon(DIconTheme::findQIcon("dcc_feedbackhigh")); - slider2->setIconSize(QSize(24, 24)); - slider2->setTickInterval(1); - slider2->setPageStep(1); - - connect(m_model, &SoundModel::isPortEnableChanged, m_noiseReductionsw, &ComboxWidget::setVisible); - m_conn = connect(m_model, &SoundModel::microphoneFeedbackChanged, [ = ](double vol2) { - // TODO: gsettings 待改为dconfig -// int pos = GSettingWatcher::instance()->getStatus("soundFeedbackSlider") == "Disabled" ? 0 : (int(vol2 * 100)); - int pos = int(vol2 * 100); - slider2->setSliderPosition(pos); - }); - connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &MicrophonePage::refreshIcon); - connect(qApp, &DApplication::iconThemeChanged, this, &MicrophonePage::refreshIcon); - m_layout->addWidget(m_feedbackSlider); - - refreshIcon(); - showDevice(); -#endif -} - -#ifndef DCC_DISABLE_FEEDBACK -void MicrophonePage::initCombox() -{ - SettingsGroup *inputSoundsGrp = new SettingsGroup(nullptr, SettingsGroup::GroupBackground); - - inputSoundsGrp->getLayout()->setContentsMargins(0, 0, 0, 10); - inputSoundsGrp->appendItem(m_inputSoundCbx); - - m_layout->addWidget(m_noiseReductionsw); - m_layout->addWidget(inputSoundsGrp); - m_layout->setSpacing(10); - m_layout->addStretch(10); -} -#else -void MicrophonePage::initCombox() -{ - - m_noiseReductionsw->setVisible(false); - m_inputSoundCbx->setVisible(false); - //放到宏外面修复sw架构下音频布局异常的问题 - m_layout->addStretch(10); -} -#endif - - -void MicrophonePage::refreshIcon() -{ - m_volumeBtn->setIcon(DStyle::standardIcon(style(),m_model->microphoneOn() ? DStyle::SP_MediaVolumeMutedElement : DStyle::SP_MediaVolumeLowElement)); -} - -void MicrophonePage::showWaitSoundPortStatus(bool showStatus) -{ - m_inputSoundCbx->setEnabled(showStatus); - m_noiseReductionsw->setEnabled(showStatus); -} - -/** - * @brief MicrophonePage::showDevice - * 当默认设备为空时隐藏设备信息 - * 当无设备时,不显示设备信息 - * 当有多个设备,且未禁用时,显示设备信息 - * 跟随设备管理 - */ -void MicrophonePage::showDevice() -{ - if (!m_feedbackSlider || !m_inputSlider || !m_noiseReductionsw) - return; - - setDeviceVisible(1 <= m_inputModel->rowCount()); -} - -void MicrophonePage::setDeviceVisible(bool visable) -{ - if (visable) { - m_feedbackSlider->show(); - m_inputSlider->show(); - m_noiseReductionsw->setVisible(!m_currentBluetoothPortStatus); - } else { - m_feedbackSlider->hide(); - m_inputSlider->hide(); - m_noiseReductionsw->hide(); - } -} diff --git a/dcc-old/src/plugin-sound/window/microphonepage.h b/dcc-old/src/plugin-sound/window/microphonepage.h deleted file mode 100644 index bc0f66858c..0000000000 --- a/dcc-old/src/plugin-sound/window/microphonepage.h +++ /dev/null @@ -1,88 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MICROPHONEPAGE_H_V20 -#define MICROPHONEPAGE_H_V20 - -#include "interface/namespace.h" -#include "soundmodel.h" - -#include - -DWIDGET_USE_NAMESPACE - -QT_BEGIN_NAMESPACE -class QStandardItemModel; -class QVBoxLayout; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class TitledSliderItem; -class SwitchWidget; -class ComboxWidget; -} - -#define ICON_SIZE 24 - -class MicrophonePage : public QWidget -{ - Q_OBJECT -public: - MicrophonePage(QWidget *parent = nullptr); - - ~MicrophonePage(); - void resetUi(); - void showDevice(); - void setDeviceVisible(bool visable); -public: - void setModel(SoundModel *model); - -Q_SIGNALS: - void requestSwitchMicrophone(bool on); - void requestSetMicrophoneVolume(double vol); - void requestSetPort(const Port *); - //请求降噪 - void requestReduceNoise(bool value); - //请求静音切换,flag为false时请求直接取消静音 - void requestMute(bool flag = true); - -private Q_SLOTS: - void removePort(const QString &portId, const uint &cardId, const Port::Direction &direction); - void addPort(const Port *port); - void toggleMute(); - void changeComboxIndex(const int idx); - void changeComboxStatus(); - -private: - void initSlider(); - void initCombox(); - void refreshIcon(); - void showWaitSoundPortStatus(bool showStatus); - void refreshActivePortShow(const Port *port); - -private: - SoundModel *m_model{nullptr}; - QVBoxLayout *m_layout{nullptr}; - DCC_NAMESPACE::TitledSliderItem *m_inputSlider{nullptr}; - DCC_NAMESPACE::TitledSliderItem *m_feedbackSlider{nullptr}; - QMetaObject::Connection m_conn; - //输入列表的下拉框列表 - DCC_NAMESPACE::ComboxWidget *m_inputSoundCbx; - //噪音抑制 - DCC_NAMESPACE::SwitchWidget *m_noiseReductionsw{nullptr}; - - QStandardItemModel *m_inputModel{nullptr}; - const Port *m_currentPort{nullptr}; - - SoundLabel *m_volumeBtn; - int m_waitTimerValue; - int m_lastRmPortIndex; - //启用端口但未设置为默认端口判断 - bool m_enablePort; - // 确保第一次点击没有延时 - bool m_fristChangePort; - bool m_currentBluetoothPortStatus; - QTimer *m_waitStatusChangeTimer; -}; - -#endif // MICROPHONEPAGE_H_V20 diff --git a/dcc-old/src/plugin-sound/window/sound.json b/dcc-old/src/plugin-sound/window/sound.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-sound/window/sound.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-sound/window/soundeffectspage.cpp b/dcc-old/src/plugin-sound/window/soundeffectspage.cpp deleted file mode 100644 index 0368236d2c..0000000000 --- a/dcc-old/src/plugin-sound/window/soundeffectspage.cpp +++ /dev/null @@ -1,189 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "soundeffectspage.h" - -#include "soundmodel.h" -#include "widgets/dcclistview.h" -#include "widgets/switchwidget.h" -#include "widgets/titlelabel.h" - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -const int AnimationDuration = 5000; - -SoundEffectsPage::SoundEffectsPage(QWidget *parent) - : QWidget(parent) - , m_layout(new QVBoxLayout) - , m_effectList(new DCCListView(this)) - , m_sound(nullptr) -{ - m_layout->setContentsMargins(0, 0, 0, 10); - - TitleLabel *lblTitle = new TitleLabel(tr("Sound Effects")); - lblTitle->setContentsMargins(0, 0, 0, 0); - DFontSizeManager::instance()->bind(lblTitle, DFontSizeManager::T6); - m_sw = new SwitchWidget(nullptr, lblTitle); - m_sw->addBackground(); - m_sw->setFocusPolicy(Qt::ClickFocus); - m_layout->addWidget(m_sw, 0, Qt::AlignTop); - m_layout->setSpacing(10); - - m_effectList->setAccessibleName("List_effectlist"); - m_effectList->setBackgroundType(DStyledItemDelegate::BackgroundType::ClipCornerBackground); - m_effectList->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_effectList->setSelectionMode(QListView::SelectionMode::NoSelection); - m_effectList->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_effectList->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_effectList->setEditTriggers(DListView::NoEditTriggers); - m_effectList->setFrameShape(DListView::NoFrame); - m_effectList->setViewportMargins(0, 0, 0, 0); - m_effectList->setItemSpacing(1); - - QMargins itemMargins(m_effectList->itemMargins()); - itemMargins.setLeft(14); - m_effectList->setItemMargins(itemMargins); - - m_layout->addWidget(m_effectList); - - m_aniTimer = new QTimer(this); - m_aniTimer->setSingleShot(false); - setLayout(m_layout); -} - -SoundEffectsPage::~SoundEffectsPage() -{ - QScroller *scroller = QScroller::scroller(m_effectList->viewport()); - if (scroller) { - scroller->stop(); - } -} - -void SoundEffectsPage::setModel(SoundModel *model) -{ - m_model = model; - connect(m_model, &SoundModel::enableSoundEffectChanged, this, [this](bool on) { - m_sw->blockSignals(true); - m_sw->setChecked(on); - m_sw->blockSignals(false); - m_effectList->setVisible(on); - }); - - connect(m_sw, - &SwitchWidget::checkedChanged, - this, - &SoundEffectsPage::requestSwitchSoundEffects); - m_effectList->setVisible(m_model->enableSoundEffect()); - initList(); -} - -void SoundEffectsPage::startPlay(const QModelIndex &index) -{ - if (m_playIdx.isValid()) { - auto item = static_cast(m_listModel->itemFromIndex(m_playIdx)); - auto aniAction = item->actionList(Qt::Edge::RightEdge)[0]; - aniAction->setVisible(false); - m_effectList->update(m_playIdx); - } - m_playIdx = index; - - auto eff = m_model->soundEffectMap()[index.row()].second; - m_sound.reset(new QSound(m_model->soundEffectPathByType(eff))); - m_sound->stop(); - m_sound->play(); - - m_aniTimer->disconnect(); - auto item = static_cast(m_listModel->itemFromIndex(index)); - auto aniAction = item->actionList(Qt::Edge::RightEdge)[0]; - int intervalal = 300; - m_aniTimer->setInterval(intervalal); - aniAction->setVisible(true); - connect(m_aniTimer, &QTimer::timeout, this, [=] { - auto aniIdx = (m_aniDuration / intervalal) % 3 + 1; - auto icon = DIconTheme::findQIcon("dcc_volume" + QString::number(aniIdx)); - aniAction->setIcon(icon); - - m_aniDuration += intervalal; - if (m_aniDuration > AnimationDuration) { - aniAction->setVisible(false); - m_aniTimer->stop(); - m_aniDuration = 0; - } - m_effectList->update(index); - }); - - m_aniTimer->start(); -} - -void SoundEffectsPage::initList() -{ - m_sw->setChecked(m_model->enableSoundEffect()); - - m_listModel = new QStandardItemModel(this); - m_effectList->setModel(m_listModel); - connect(m_effectList, &DListView::clicked, this, &SoundEffectsPage::startPlay); - connect(m_effectList, &DListView::activated, m_effectList, &QListView::clicked); - connect(m_model, - &SoundModel::soundEffectDataChanged, - this, - [=](DDesktopServices::SystemSoundEffect effect, const bool enable) { - for (int idx = 0; idx < m_model->soundEffectMap().size(); ++idx) { - auto ite = m_model->soundEffectMap().at(idx); - if (ite.second != effect) { - continue; - } - - auto items = static_cast(m_listModel->item(idx)); - if (items == nullptr || items->actionList(Qt::Edge::RightEdge).count() < 2) { - qWarning() << "items or items->actionList data is valid."; - continue; - } - auto action = items->actionList(Qt::Edge::RightEdge)[1]; - auto checkstatus = - enable ? DStyle::SP_IndicatorChecked : DStyle::SP_IndicatorUnchecked; - auto icon = DStyle::standardIcon(style(), checkstatus); - action->setIcon(icon); - m_effectList->update(items->index()); - break; - } - }); - - QTimer::singleShot(0, this, [=] { - QSize size(16, 16); - DStandardItem *item = nullptr; - for (auto se : m_model->soundEffectMap()) { - item = new DStandardItem(se.first); - item->setFontSize(DFontSizeManager::T8); - auto action = new DViewItemAction(Qt::AlignVCenter, size, size, true); - auto checkstatus = m_model->queryEffectData(se.second) ? DStyle::SP_IndicatorChecked - : DStyle::SP_IndicatorUnchecked; - auto icon = DStyle::standardIcon(style(), checkstatus); - action->setIcon(icon); - auto aniAction = new DViewItemAction(Qt::AlignVCenter, size, size); - aniAction->setVisible(false); - item->setActionList(Qt::Edge::RightEdge, { aniAction, action }); - m_listModel->appendRow(item); - - connect(action, &DViewItemAction::triggered, this, [=] { - auto isSelected = m_model->queryEffectData(se.second); - this->requestSetEffectAble(se.second, !isSelected); - requestRefreshList(); - }); - } - }); -} diff --git a/dcc-old/src/plugin-sound/window/soundeffectspage.h b/dcc-old/src/plugin-sound/window/soundeffectspage.h deleted file mode 100644 index 2f2bf3016a..0000000000 --- a/dcc-old/src/plugin-sound/window/soundeffectspage.h +++ /dev/null @@ -1,64 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SOUNDEFFECTSPAGE_H_V20 -#define SOUNDEFFECTSPAGE_H_V20 - -#include "interface/namespace.h" -#include "widgets/switchwidget.h" - -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -QT_BEGIN_NAMESPACE -class QStandardItemModel; -class QVBoxLayout; -class QSound; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DListView; -DWIDGET_END_NAMESPACE - -//class switchwidget; -class SoundModel; -class SoundEffectsPage : public QWidget -{ - Q_OBJECT -public: - SoundEffectsPage(QWidget *parent = nullptr); - ~SoundEffectsPage(); - -public: - void setModel(SoundModel *model); - -Q_SIGNALS: - void requestSwitchSoundEffects(bool isOn); - void requestRefreshList(); - void requestSetEffectAble(DDesktopServices::SystemSoundEffect effect, bool enable); - -public Q_SLOTS: - void startPlay(const QModelIndex &index); - -private: - void initList(); - -private: - QVBoxLayout *m_layout{nullptr}; - DCC_NAMESPACE::SwitchWidget *m_sw{nullptr}; - SoundModel *m_model{nullptr}; - DTK_WIDGET_NAMESPACE::DListView *m_effectList{nullptr}; - QStandardItemModel *m_listModel{nullptr}; - QScopedPointer m_sound; - QModelIndex m_playIdx; - QTimer *m_aniTimer{nullptr}; - int m_aniDuration{0}; -}; - -#endif // SOUNDEFFECTSPAGE_H_V20 diff --git a/dcc-old/src/plugin-sound/window/soundplugin.cpp b/dcc-old/src/plugin-sound/window/soundplugin.cpp deleted file mode 100644 index f33ed050df..0000000000 --- a/dcc-old/src/plugin-sound/window/soundplugin.cpp +++ /dev/null @@ -1,226 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "soundplugin.h" - -#ifndef DCC_DISABLE_SOUND_ADVANCED -# include "advancedsettingmodule.h" -#endif -#include "devicemanagespage.h" -#include "interface/pagemodule.h" -#include "microphonepage.h" -#include "soundeffectspage.h" -#include "soundmodel.h" -#include "soundworker.h" -#include "speakerpage.h" -#include "widgets/itemmodule.h" -#include "widgets/titlelabel.h" -#include "widgets/widgetmodule.h" - -#include -#include -#include -#include - -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -QString SoundPlugin::name() const -{ - return QStringLiteral("Sound"); -} - -ModuleObject *SoundPlugin::module() -{ - // 一级页面 - SoundModule *soundInterface = new SoundModule; - - // 二级 -- 输出 - ModuleObject *moduleOutput = new PageModule("output", tr("Output")); - OutputModule *outputPage = - new OutputModule(soundInterface->model(), soundInterface->work(), moduleOutput); - moduleOutput->appendChild(outputPage); - ItemModule *pauseAudio = new ItemModule("PauseAudio", - tr("Auto pause"), - [soundInterface](ModuleObject *module) -> QWidget * { - Q_UNUSED(module) - DSwitchButton *pluginControl = new DSwitchButton; - auto model = soundInterface->model(); - auto work = soundInterface->work(); - pluginControl->setChecked(model->pausePlayer()); - connect(model, - &SoundModel::pausePlayerChanged, - pluginControl, - &DSwitchButton::setChecked); - connect(pluginControl, - &DSwitchButton::checkedChanged, - work, - &SoundWorker::setPausePlayer); - return pluginControl; - }); - pauseAudio->setBackground(true); - moduleOutput->appendChild(pauseAudio); - auto autoLoginTip = - new WidgetModule("plugcontroltip", tr(""), [](DTipLabel *plugcontrollabel) { - plugcontrollabel->setWordWrap(true); - plugcontrollabel->setAlignment(Qt::AlignLeft); - plugcontrollabel->setContentsMargins(10, 0, 10, 0); - plugcontrollabel->setText(tr("Whether the audio will be automatically paused when " - "the current audio device is unplugged")); - }); - moduleOutput->appendChild(autoLoginTip); - - soundInterface->appendChild(moduleOutput); - - // 二级 -- 输入 - ModuleObject *moduleInput = new PageModule("input", tr("Input")); - InputModule *inputPage = - new InputModule(soundInterface->model(), soundInterface->work(), moduleInput); - moduleInput->appendChild(inputPage); - soundInterface->appendChild(moduleInput); - - // 二级 -- 系统音效 - ModuleObject *moduleSoundEffects = new PageModule("soundEffects", tr("Sound Effects")); - SoundEffectsModule *effectsPage = new SoundEffectsModule(soundInterface->model(), - soundInterface->work(), - moduleSoundEffects); - moduleSoundEffects->appendChild(effectsPage); - soundInterface->appendChild(moduleSoundEffects); - - // 二级 -- 设备管理 - ModuleObject *moduleDevices = new PageModule("devices", tr("Devices")); - - DeviceTitleModule *inputTitle = - new DeviceTitleModule("inputDevices", tr("Input Devices"), moduleDevices); - moduleDevices->appendChild(inputTitle); - InputDeviceModule *inputDevWidget = - new InputDeviceModule(soundInterface->model(), soundInterface->work(), moduleDevices); - moduleDevices->appendChild(inputDevWidget); - - DeviceTitleModule *outputTitle = - new DeviceTitleModule("outputDevices", tr("Output Devices"), moduleDevices); - moduleDevices->appendChild(outputTitle); - OutputDeviceModule *outputDevWidget = - new OutputDeviceModule(soundInterface->model(), soundInterface->work(), moduleDevices); - moduleDevices->appendChild(outputDevWidget); - - soundInterface->appendChild(moduleDevices); - - // 二级 -- 高级设置 -#ifndef DCC_DISABLE_SOUND_ADVANCED - AdvancedSettingModule *advancedSettingModule = - new AdvancedSettingModule(soundInterface->model(), soundInterface->work(), this); - connect(advancedSettingModule, - &AdvancedSettingModule::setCurAudioServer, - soundInterface->work(), - &SoundWorker::setAudioServer); - // connect(advancedSettingModule, &AdvancedSettingModule::se) - soundInterface->appendChild(advancedSettingModule); -#endif - return soundInterface; -} - -QString SoundPlugin::location() const -{ - return "9"; -} - -SoundModule::SoundModule(QObject *parent) - : HListModule("sound", tr("Sound"), DIconTheme::findQIcon("dcc_nav_sound"), parent) - , m_model(new SoundModel(this)) - , m_work(new SoundWorker(m_model, this)) -{ -} - -SoundModule::~SoundModule() -{ - m_model->deleteLater(); - m_work->deleteLater(); -} - -void SoundModule::active() -{ - m_work->activate(); -} - -QWidget *OutputModule::page() -{ - SpeakerPage *w = new SpeakerPage; - connect(w, &SpeakerPage::requestSetSpeakerBalance, m_worker, &SoundWorker::setSinkBalance); - connect(w, &SpeakerPage::requestSetSpeakerVolume, m_worker, &SoundWorker::setSinkVolume); - connect(w, &SpeakerPage::requestIncreaseVolume, m_worker, &SoundWorker::setIncreaseVolume); - connect(w, &SpeakerPage::requestSetPort, m_worker, &SoundWorker::setPort); - connect(w, &SpeakerPage::requestMute, m_worker, &SoundWorker::setSinkMute); - connect(w, &SpeakerPage::requstBluetoothMode, m_worker, &SoundWorker::setBluetoothMode); - w->setModel(m_model); - return w; -} - -QWidget *InputModule::page() -{ - MicrophonePage *w = new MicrophonePage; - connect(w, - &MicrophonePage::requestSetMicrophoneVolume, - m_worker, - &SoundWorker::setSourceVolume); - connect(w, &MicrophonePage::requestSetPort, m_worker, &SoundWorker::setPort); - connect(w, &MicrophonePage::requestReduceNoise, m_worker, &SoundWorker::setReduceNoise); - connect(w, &MicrophonePage::requestMute, m_worker, &SoundWorker::setSourceMute); - w->setModel(m_model); - w->resetUi(); - return w; -} - -QWidget *SoundEffectsModule::page() -{ - SoundEffectsPage *w = new SoundEffectsPage; - connect(w, - &SoundEffectsPage::requestSwitchSoundEffects, - m_worker, - &SoundWorker::enableAllSoundEffect); - connect(w, &SoundEffectsPage::requestRefreshList, m_worker, &SoundWorker::refreshSoundEffect); - connect(w, &SoundEffectsPage::requestSetEffectAble, m_worker, &SoundWorker::setEffectEnable); - w->setModel(m_model); - return w; -} - -void SoundEffectsModule::active() -{ - m_worker->refreshSoundEffect(); -} - -QWidget *InputDeviceModule::page() -{ - DevicemanagesPage *w = new DevicemanagesPage(Port::Direction::In); - connect(w, &DevicemanagesPage::requestSwitchSetEnable, m_worker, &SoundWorker::setPortEnabled); - w->setModel(m_model); - return w; -} - -QWidget *OutputDeviceModule::page() -{ - DevicemanagesPage *w = new DevicemanagesPage(Port::Direction::Out); - connect(w, &DevicemanagesPage::requestSwitchSetEnable, m_worker, &SoundWorker::setPortEnabled); - w->setModel(m_model); - return w; -} - -DeviceTitleModule::DeviceTitleModule(const QString &name, const QString &title, QObject *parent) -{ - Q_UNUSED(parent) - setName(name); - setDescription(title); - addContentText(title); -} - -QWidget *DeviceTitleModule::page() -{ - TitleLabel *titleLabel = new TitleLabel(description()); - DFontSizeManager::instance()->bind(titleLabel, - DFontSizeManager::T5, - QFont::DemiBold); // 设置字体 - return titleLabel; -} diff --git a/dcc-old/src/plugin-sound/window/soundplugin.h b/dcc-old/src/plugin-sound/window/soundplugin.h deleted file mode 100644 index 741103f434..0000000000 --- a/dcc-old/src/plugin-sound/window/soundplugin.h +++ /dev/null @@ -1,130 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SOUNDPLUGIN_H -#define SOUNDPLUGIN_H - -#include "interface/hlistmodule.h" -#include "interface/plugininterface.h" - -class SoundModel; -class SoundWorker; -class SoundPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Sound" FILE "sound.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit SoundPlugin() {} - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; -}; - -// 一级页面 -class SoundModule : public DCC_NAMESPACE::HListModule -{ - Q_OBJECT -public: - explicit SoundModule(QObject *parent = nullptr); - ~SoundModule(); - - SoundWorker *work() { return m_work; } - SoundModel *model() { return m_model; } - -protected: - virtual void active() override; - -private: - SoundModel *m_model; - SoundWorker *m_work; -}; - -// 三级详情页 -class OutputModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit OutputModule(SoundModel *model, SoundWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - - virtual QWidget *page() override; - -private: - SoundModel *m_model; - SoundWorker *m_worker; -}; - -class InputModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit InputModule(SoundModel *model, SoundWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - - virtual QWidget *page() override; - -private: - SoundModel *m_model; - SoundWorker *m_worker; -}; - -class SoundEffectsModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit SoundEffectsModule(SoundModel *model, SoundWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - - virtual QWidget *page() override; - -protected: - virtual void active() override; - -private: - SoundModel *m_model; - SoundWorker *m_worker; -}; - -// 对应标题 -class DeviceTitleModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - DeviceTitleModule(const QString &name, const QString &title, QObject *parent = nullptr); - virtual QWidget *page() override; -}; - - -// 输入设备 -class InputDeviceModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit InputDeviceModule(SoundModel *model, SoundWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - - virtual QWidget *page() override; - -private: - SoundModel *m_model; - SoundWorker *m_worker; -}; - -// 输出设备 -class OutputDeviceModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit OutputDeviceModule(SoundModel *model, SoundWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - - virtual QWidget *page() override; - -private: - SoundModel *m_model; - SoundWorker *m_worker; -}; - -#endif // SOUNDPLUGIN_H diff --git a/dcc-old/src/plugin-sound/window/speakerpage.cpp b/dcc-old/src/plugin-sound/window/speakerpage.cpp deleted file mode 100644 index a1ff8d6dbf..0000000000 --- a/dcc-old/src/plugin-sound/window/speakerpage.cpp +++ /dev/null @@ -1,455 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "speakerpage.h" -#include "soundmodel.h" -#include "widgets/switchwidget.h" -#include "widgets/titlelabel.h" -#include "widgets/settingsgroup.h" -#include "widgets/comboxwidget.h" -#include "widgets/titledslideritem.h" -#include "widgets/dccslider.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -Q_DECLARE_METATYPE(const Port *) - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -SpeakerPage::SpeakerPage(QWidget *parent) - : QWidget(parent) - , m_layout(new QVBoxLayout) - , m_outputSlider(nullptr) - , m_speakSlider(nullptr) - , m_vbWidget(nullptr) - , m_balanceSlider(nullptr) - , m_waitTimerValue(0) - , m_lastRmPortIndex(-1) - , m_balance(true) - , m_volumeBtn(nullptr) - , m_enablePort(false) - , m_fristChangePort(true) - , m_fristStatusChangePort(true) - , m_waitStatusChangeTimer(new QTimer (this)) -{ - m_outputSoundCbx = new DCC_NAMESPACE::ComboxWidget(tr("Output Device")); - m_outputModel = new QStandardItemModel(m_outputSoundCbx->comboBox()); - m_outputSoundCbx->comboBox()->setModel(m_outputModel); - m_outputSoundCbx->comboBox()->setAccessibleName("outputSoundCbx"); - - m_outputSoundsGrp = new DCC_NAMESPACE::SettingsGroup(nullptr, DCC_NAMESPACE::SettingsGroup::GroupBackground); - m_blueSoundCbx = new DCC_NAMESPACE::ComboxWidget(tr("Mode")); - m_blueSoundCbx->comboBox()->setAccessibleName("blueSoundCbx"); - m_blueSoundCbx->setVisible(false); - - m_layout->setContentsMargins(0, 0, 0, 10); - m_waitStatusChangeTimer->setSingleShot(true); - connect(m_waitStatusChangeTimer, &QTimer::timeout, this, [ = ] { - refreshActivePortShow(m_currentPort); - showWaitSoundPortStatus(true); - }); - setLayout(m_layout); -} - -SpeakerPage::~SpeakerPage() -{ - m_waitStatusChangeTimer->stop(); -} - -void SpeakerPage::setModel(SoundModel *model) -{ - m_model = model; - m_waitTimerValue = m_model->currentWaitSoundReceiptTime(); - - //当扬声器状态发生变化,更新设备信息显示状态 - connect(m_model, &SoundModel::isPortEnableChanged, this, [ = ](bool visible) { - Q_UNUSED(visible); - //启用端口后需要再判断是否启用成功后,再设置为默认端口,但因为设置端口后会有端口是否启用的状态判断, - //导致进入死循环,所以添加判断值,判断是否是启用或禁用端口类型的操作,若是,则设置默认端口 - if (m_enablePort) { - QModelIndex index = m_outputSoundCbx->comboBox()->view()->currentIndex(); - if (index.isValid()) { - Q_EMIT requestSetPort(m_outputModel->data(index, Qt::WhatsThisPropertyRole).value()); - } - } - showDevice(); - }); - - connect(m_model, &SoundModel::setPortChanged, this, [ = ](const Port * port) { - m_enablePort = false; - - Q_EMIT m_model->requestSwitchEnable(port->cardId(), port->id());//设置端口后,发送信号,判断该端口是否需要禁用 - }); - - auto ports = m_model->ports(); - for (auto port : ports) { - addPort(port); - } - - connect(m_outputSoundCbx->comboBox(), static_cast(&QComboBox::activated), this, &SpeakerPage::changeComboxIndex, Qt::QueuedConnection); - connect(m_model, &SoundModel::bluetoothModeOptsChanged, this, [ = ](const QStringList bluetoothModeOpts){ - if (m_bluetoothModeOpts != bluetoothModeOpts) { - m_bluetoothModeOpts = bluetoothModeOpts; - m_blueSoundCbx->comboBox()->clear(); // 先清除避免重复 - m_blueSoundCbx->comboBox()->addItems(m_bluetoothModeOpts); - } - }); - connect(m_model, &SoundModel::portRemoved, this, &SpeakerPage::removePort); - connect(m_model, &SoundModel::portAdded, this, &SpeakerPage::addPort); - connect(m_model, &SoundModel::soundDeviceStatusChanged, this, &SpeakerPage::changeComboxStatus, Qt::UniqueConnection); - connect(m_model, &SoundModel::bluetoothModeChanged, this, [ = ](const QString &mode) { - m_blueSoundCbx->setCurrentText(mode); - m_balance = !mode.contains("headset"); - changeComboxStatus(); - }); - connect(m_model, &SoundModel::speakerOnChanged, this, &SpeakerPage::refreshIcon); - - initSlider(); - initCombox(); -} - -void SpeakerPage::removePort(const QString &portId, const uint &cardId, const Port::Direction &direction) -{ - if (direction != Port::Direction::Out) - return; - - // 先阻塞m_outputSoundCbx切换信号,避免移除当前端口时被动触发切换端口信号,而新的当前端口由是后端确定 - m_outputSoundCbx->blockSignals(true); - m_outputSoundCbx->comboBox()->hidePopup(); - - // 查找移除的端口直接从model中移除,如果是当前端口直接设置为空,新的当前端口由后端确定,控制中心响应信号设置当前端口 - for (int i = 0; i < m_outputModel->rowCount(); i++) { - auto item = m_outputModel->item(i); - auto port = item->data(Qt::WhatsThisPropertyRole).value(); - if (port && port->id() == portId && cardId == port->cardId()) { - m_outputModel->removeRow(i); - if (m_currentPort && m_currentPort->id() == portId && m_currentPort->cardId() == cardId) { - m_currentPort = nullptr; - } - break; - } - } - - changeComboxStatus(); - showDevice(); - m_outputSoundCbx->blockSignals(false); -} - -void SpeakerPage::changeComboxIndex(const int idx) -{ - if (idx < 0) - return; - - auto tFunc = [this](const int tmpIdx){ - auto temp = m_outputModel->index(tmpIdx, 0); - this->requestSetPort(m_outputModel->data(temp, Qt::WhatsThisPropertyRole).value()); - qDebug() << "default sink index change, currentTerxt:" << m_outputSoundCbx->comboBox()->itemText(tmpIdx); - }; - - tFunc(idx); - changeComboxStatus(); - - showDevice(); -} - -void SpeakerPage::changeComboxStatus() -{ - showWaitSoundPortStatus(false); - if (m_fristStatusChangePort) { - refreshActivePortShow(m_currentPort); - showWaitSoundPortStatus(true); - m_fristStatusChangePort = false; - } else { - m_waitStatusChangeTimer->stop(); - } - m_waitStatusChangeTimer->start(m_waitTimerValue); - showDevice(); -} - -void SpeakerPage::clickLeftButton() -{ - Q_EMIT requestMute(); -} - -void SpeakerPage::changeBluetoothMode(const int idx) -{ - this->requstBluetoothMode(m_blueSoundCbx->comboBox()->itemText(idx)); -} - -void SpeakerPage::refreshActivePortShow(const Port *port) -{ - if (port && port->isActive()) { - m_outputSoundCbx->comboBox()->setCurrentText(port->name() + "(" + port->cardName() + ")"); - setBlueModeVisible(port->isBluetoothPort() && (m_outputModel->rowCount() > 0)); - } -} - -void SpeakerPage::addPort(const Port *port) -{ - if (Port::Out == port->direction()) { - qDebug() << "SpeakerPage::addPort" << port->name(); - DStandardItem *pi = new DStandardItem; - pi->setText(port->name() + "(" + port->cardName() + ")"); - pi->setData(QVariant::fromValue(port), Qt::WhatsThisPropertyRole); - - connect(port, &Port::nameChanged, this, [ = ](const QString str) { - pi->setText(str); - }); - - connect(port, &Port::isOutputActiveChanged, this, [ = ](bool isActive) { - if (pi) - pi->setCheckState(isActive ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); - if (isActive) { - m_currentPort = port; - changeComboxStatus(); - } - }); - connect(port, &Port::currentPortEnabled, this, [ = ](bool isEnable) { - int index = m_outputSoundCbx->comboBox()->findData(QVariant::fromValue(port)); - // 若端口可用 且没有添加 - if (isEnable && (index == -1) && pi) { - m_outputModel->appendRow(pi); - showDevice(); - } - - if (!isEnable && (index != -1)) { - m_outputModel->removeRow(index); - showDevice(); - } - }); - - m_outputSoundCbx->comboBox()->hidePopup(); - if (port->isEnabled()) - m_outputModel->appendRow(pi); - if (port->isActive()) { - m_currentPort = port; - refreshActivePortShow(m_currentPort); - Q_EMIT m_model->requestSwitchEnable(port->cardId(), port->id()); - } - showDevice(); - } -} - -void SpeakerPage::initSlider() -{ - m_outputSlider = new TitledSliderItem(tr("Output Volume"), this); - m_outputSlider->addBackground(); - m_speakSlider = m_outputSlider->slider(); - - if (m_model->MaxUIVolume() > 1.0) { - m_speakSlider->setSeparateValue(100); - } else { - m_speakSlider->setSeparateValue(0); - } - - //初始化音量设置滚动条 - qDebug() << "max volume:" << m_model->MaxUIVolume(); - int maxRange = static_cast(m_model->MaxUIVolume() * 100.0f + 0.000001); - m_speakSlider->setRange(0, maxRange); - m_speakSlider->setType(DCCSlider::Vernier); - m_speakSlider->setTickPosition(QSlider::NoTicks); - - m_volumeBtn = new SoundLabel(this); - QGridLayout *gridLayout = dynamic_cast(m_outputSlider->slider()->layout()); - if (gridLayout) { - gridLayout->addWidget(m_volumeBtn, 1, 0, Qt::AlignVCenter); - } - m_volumeBtn->setAccessibleName("volume-button"); - m_volumeBtn->setFixedSize(ICON_SIZE, ICON_SIZE); - m_volumeBtn->setIconSize(QSize(ICON_SIZE, ICON_SIZE)); - //从DStyle 中获取标准图标 - auto icon_high = DStyle::standardIcon(style(), DStyle::SP_MediaVolumeHighElement); - m_outputSlider->setRightIcon(icon_high); - m_outputSlider->setIconSize(QSize(24, 24)); - - m_speakSlider->setTickInterval(1); - qDebug() << "speaker volume:" << m_model->speakerVolume(); - int val = static_cast(m_model->speakerVolume() * 100.0f + 0.000001); - if (val > maxRange) { - val = maxRange; - } - m_speakSlider->setValue(val); - m_outputSlider->setValueLiteral(QString::number(int(val)) + "%"); - m_speakSlider->setPageStep(1); - - //处理滑块位置变化的槽 - auto slotfunc1 = [ = ](int pos) { - m_outputSlider->slider()->qtSlider()->setSingleStep(1); - double vals = pos / 100.0; - //滑块位置改变时,发送设置音量的信号 - Q_EMIT requestSetSpeakerVolume(vals); - Q_EMIT requestMute(false); - }; - //当点击滑槽时不会有,sliderMoved消息,用这个补 - connect(m_speakSlider, &DCCSlider::valueChanged, slotfunc1); - //滑块移动消息处理 - connect(m_speakSlider, &DCCSlider::sliderMoved, slotfunc1); - //当扬声器开/关时,显示/隐藏控件 - //当底层数据改变后,更新滑动条显示的数据 - connect(m_model, &SoundModel::speakerVolumeChanged, this, [ = ](double v) { - m_speakSlider->blockSignals(true); - m_speakSlider->setValue(v * 100 + 0.000001); - m_speakSlider->blockSignals(false); - m_outputSlider->setValueLiteral(QString::number((int)(v * 100 + 0.000001)) + "%"); - }); - - connect(m_model, &SoundModel::maxUIVolumeChanged, this, [ = ](double maxvalue) { - m_speakSlider->setRange(0, static_cast(maxvalue * 100 + 0.000001)); - if (maxvalue > 1.0) { - qDebug() << m_outputSlider << maxvalue; - m_speakSlider->setSeparateValue(100); - } else { - m_speakSlider->setSeparateValue(0); - } - m_outputSlider->update(); - - m_speakSlider->blockSignals(true); - m_speakSlider->setValue(static_cast(m_model->speakerVolume() * 100 + 0.000001)); - m_speakSlider->blockSignals(false); - m_outputSlider->setValueLiteral(QString::number((int)(m_model->speakerVolume() * 100 + 0.000001))+ "%"); - }); - connect(m_volumeBtn, &SoundLabel::clicked, this, &SpeakerPage::clickLeftButton); - m_layout->addWidget(m_outputSlider); - - //音量增强 - auto hlayout = new QVBoxLayout(); - auto volumeBoost = new SwitchWidget(this); - volumeBoost->addBackground(); - volumeBoost->setChecked(m_model->isIncreaseVolume()); - - volumeBoost->setTitle(tr("Volume Boost")); - connect(m_model, &SoundModel::increaseVolumeChanged, volumeBoost, &SwitchWidget::setChecked); - connect(volumeBoost, &SwitchWidget::checkedChanged, this, &SpeakerPage::requestIncreaseVolume); - hlayout->addWidget(volumeBoost); - hlayout->setContentsMargins(0, 0, 0, 0); - - //下方提示 - auto volumeBoostTip = new DTipLabel(tr("If the volume is louder than 100%, it may distort audio and be harmful to output devices"), this); - volumeBoostTip->setWordWrap(true); - volumeBoostTip->setAlignment(Qt::AlignLeft); - volumeBoostTip->setContentsMargins(10, 0, 0, 0); - hlayout->addWidget(volumeBoostTip); - m_vbWidget = new QWidget(this); - m_vbWidget->setAccessibleName("SpeakerPage_vbWidget"); - m_vbWidget->setLayout(hlayout); - m_vbWidget->setVisible(m_model->isPortEnable()); - m_layout->addWidget(m_vbWidget); - - m_balanceSlider = new TitledSliderItem(tr("Left/Right Balance"), this); - m_balanceSlider->addBackground(); - - //信号处理与上面一致 - QStringList balanceList; - balanceList << tr("Left") << " "; - balanceList << tr("Right"); - DCCSlider *slider2 = m_balanceSlider->slider(); - slider2->setRange(-100, 100); - slider2->setType(DCCSlider::Vernier); - slider2->setTickPosition(QSlider::TicksBelow); - slider2->setTickInterval(1); - slider2->setSliderPosition(static_cast(m_model->speakerBalance() * 100 + 0.000001)); - slider2->setPageStep(1); - m_balanceSlider->setAnnotations(balanceList); - m_balance = !(m_model->currentBluetoothAudioMode().contains("headset")); - - auto slotfunc2 = [ = ](int pos) { - double value = pos / 100.0; - Q_EMIT requestSetSpeakerBalance(value); - }; - connect(slider2, &DCCSlider::valueChanged, slotfunc2); - connect(slider2, &DCCSlider::sliderMoved, slotfunc2); - connect(m_model, &SoundModel::speakerBalanceChanged, this, [ = ](double v) { - slider2->blockSignals(true); - slider2->setSliderPosition(static_cast(v * 100 + 0.000001)); - slider2->blockSignals(false); - }); - connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &SpeakerPage::refreshIcon); - connect(qApp, &DApplication::iconThemeChanged, this, &SpeakerPage::refreshIcon); - - m_layout->addWidget(m_balanceSlider); - - refreshIcon(); - showDevice(); -} - -void SpeakerPage::initCombox() -{ - m_blueSoundCbx->comboBox()->addItems(m_model->bluetoothAudioModeOpts()); - m_blueSoundCbx->comboBox()->setCurrentText(m_model->currentBluetoothAudioMode()); - connect(m_blueSoundCbx->comboBox(), static_cast(&QComboBox::activated), this, &SpeakerPage::changeBluetoothMode); - - m_outputSoundsGrp->getLayout()->setContentsMargins(0, 0, 0, 10); - m_outputSoundsGrp->appendItem(m_outputSoundCbx); - m_outputSoundsGrp->appendItem(m_blueSoundCbx); - - if (m_outputSoundsGrp->layout()) - m_outputSoundsGrp->layout()->setContentsMargins(0, 0, 0, 10); - - m_layout->addWidget(m_outputSoundsGrp); - m_layout->setSpacing(10); - m_layout->addStretch(10); -} - -void SpeakerPage::refreshIcon() -{ - m_volumeBtn->setIcon(DStyle::standardIcon(style(), (m_model->speakerOn() ? DStyle::SP_MediaVolumeMutedElement : DStyle::SP_MediaVolumeLowElement))); -} - -void SpeakerPage::showWaitSoundPortStatus(bool showStatus) -{ - if ((m_currentPort && !m_currentPort->isBluetoothPort()) || m_model->currentBluetoothAudioMode().isEmpty()) { - m_blueSoundCbx->setVisible(false); - } - m_outputSoundCbx->setEnabled(showStatus); - m_blueSoundCbx->setEnabled(showStatus); -} - -/** - * @brief SpeakerPage::showDevice - * 当无设备时,不显示设备信息 - * 当有多个设备,且未禁用时,显示设备信息 - * 跟随设备管理 - */ -void SpeakerPage::showDevice() -{ - if (!m_speakSlider || !m_vbWidget || !m_balanceSlider || !m_outputSlider) - return; - - if (1 > m_outputModel->rowCount()){ - setDeviceVisible(false); - setBlueModeVisible(false); - } else - setDeviceVisible(true); -} - -void SpeakerPage::setDeviceVisible(bool visible) -{ - m_speakSlider->setVisible(visible); - m_vbWidget->setVisible(visible); - m_balanceSlider->setVisible(visible); - m_outputSlider->setVisible(visible); -} - -void SpeakerPage::setBlueModeVisible(bool visible) -{ - // 模式的状态应该跟随 蓝牙端口显示的时机 - m_blueSoundCbx->setVisible(visible); - if (visible) - m_blueSoundCbx->comboBox()->setCurrentText(m_model->currentBluetoothAudioMode()); - -} diff --git a/dcc-old/src/plugin-sound/window/speakerpage.h b/dcc-old/src/plugin-sound/window/speakerpage.h deleted file mode 100644 index ccb3831d47..0000000000 --- a/dcc-old/src/plugin-sound/window/speakerpage.h +++ /dev/null @@ -1,125 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SPEAKERPAGE_H_V20 -#define SPEAKERPAGE_H_V20 - -#include "interface/namespace.h" -#include "soundmodel.h" - -#include - -DWIDGET_USE_NAMESPACE - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QTimer; -class QStandardItemModel; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class TitledSliderItem; -class SettingsGroup; -class DCCSlider; -class ComboxWidget; -} - - -#define ICON_SIZE 24 - -/** - * 该界面类对应 控制中心-声音模块-扬声器 界面 - * 界面包含一个 switch 控件用于 打开/关闭扬声器 - * 包含两个 slider 控件用于 调节输出音量和左/右声道平衡 - */ - -class SpeakerPage : public QWidget -{ - Q_OBJECT -public: - explicit SpeakerPage(QWidget *parent = nullptr); - ~SpeakerPage(); - void showDevice(); - void setDeviceVisible(bool visible); - void setBlueModeVisible(bool visible); - -public: - void setModel(SoundModel *model); - -Q_SIGNALS: - //请求改变输出音量 0-1.5 - void requestSetSpeakerVolume(double val); - //请求改变左右平衡 0-1.5 - void requestSetSpeakerBalance(double val); - //请求改变音量增强 - void requestIncreaseVolume(bool value); - void requestSetPort(const Port *); - //请求静音切换,flag为false时请求直接取消静音 - void requestMute(bool flag = true); - //请求切换蓝牙耳机模式 - void requstBluetoothMode(QString blueMode); - -private Q_SLOTS: - void removePort(const QString &portId, const uint &cardId, const Port::Direction &direction); - void addPort(const Port *port); - /** - * @brief changeComboxIndex 处理用户点击下拉框, 选择对应port端口操作, 需要对 setport 进行延时 - * @param idx - */ - void changeComboxIndex(const int idx); - /** - * @brief changeComboxStatus 仅处理port插拔时的延时置灰操作 - * @param idex - */ - void changeComboxStatus(); - void clickLeftButton(); - void changeBluetoothMode(const int idx); - -private: - void initSlider(); - void initCombox(); - void refreshIcon(); - void showWaitSoundPortStatus(bool showStatus); - /** - * @brief refreshActivePortShow 最终确认显示的端口下拉框 保证蓝牙下拉框与之匹配 - */ - void refreshActivePortShow(const Port *port); - -private: - //model类, 为后端数据来源及数据变化信号来源 - SoundModel *m_model{nullptr}; - DCC_NAMESPACE::SettingsGroup *m_outputSoundsGrp; - //输入列表的下拉框列表 - DCC_NAMESPACE::ComboxWidget *m_outputSoundCbx; - //蓝牙耳机下拉框 - DCC_NAMESPACE::ComboxWidget *m_blueSoundCbx; - - //界面的主layout - QVBoxLayout *m_layout{nullptr}; - DCC_NAMESPACE::TitledSliderItem *m_outputSlider; - DCC_NAMESPACE::DCCSlider *m_speakSlider; - QWidget* m_vbWidget; - DCC_NAMESPACE::TitledSliderItem *m_balanceSlider; - QStandardItemModel *m_outputModel{nullptr}; - //当前选中的音频 即activeport - const Port *m_currentPort{nullptr}; - int m_waitTimerValue; - int m_lastRmPortIndex; - //左/右平衡音界面是否显示 - bool m_balance; - SoundLabel *m_volumeBtn; - //启用端口但未设置为默认端口判断 - bool m_enablePort; - // 蓝牙模式信息 - QStringList m_bluetoothModeOpts; - // 确保第一次点击没有延时 - bool m_fristChangePort; - bool m_fristStatusChangePort; - - /** - * @brief m_waitStatusChangeTimer 端口切换等待延时 - */ - QTimer *m_waitStatusChangeTimer; -}; - -#endif // SPEAKERPAGE_H_V20 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_privacy_policy_32px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_privacy_policy_32px.svg deleted file mode 100644 index c34935e664..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_privacy_policy_32px.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - list2_icon/privacy_32px/normal - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_protocol_32px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_protocol_32px.svg deleted file mode 100644 index b3ee2eaf74..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_protocol_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_version_32px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_version_32px.svg deleted file mode 100644 index a6546c9970..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/actions/dcc_version_32px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/dark/icons/icon_about_laptop_128px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/dark/icons/icon_about_laptop_128px.svg deleted file mode 100644 index 6cf3e2a8d9..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/dark/icons/icon_about_laptop_128px.svg +++ /dev/null @@ -1,84 +0,0 @@ - - - icon_about_laptop_dark - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/dark/icons/icon_about_pc_128px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/dark/icons/icon_about_pc_128px.svg deleted file mode 100644 index 17ba655d60..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/dark/icons/icon_about_pc_128px.svg +++ /dev/null @@ -1,89 +0,0 @@ - - - icon_about_pc_dark - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-en_US-body.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-en_US-body.txt deleted file mode 100644 index 0f3bf7a120..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-en_US-body.txt +++ /dev/null @@ -1,216 +0,0 @@ -Copyright (C) 2007 Free Software Foundation, Inc. - -Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. - -Preamble -The GNU General Public License is a free, copyleft license for software and other kinds of works. - -The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. We, the Free Software Foundation, use the GNU General Public License for most of our software; it applies also to any other work released this way by its authors. You can apply it to your programs, too. - -When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. - -To protect your rights, we need to prevent others from denying you these rights or asking you to surrender the rights. Therefore, you have certain responsibilities if you distribute copies of the software, or if you modify it: responsibilities to respect the freedom of others. - -For example, if you distribute copies of such a program, whether gratis or for a fee, you must pass on to the recipients the same freedoms that you received. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. - -Developers that use the GNU GPL protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License giving you legal permission to copy, distribute and/or modify it. - -For the developers' and authors' protection, the GPL clearly explains that there is no warranty for this free software. For both users' and authors' sake, the GPL requires that modified versions be marked as changed, so that their problems will not be attributed erroneously to authors of previous versions. - -Some devices are designed to deny users access to install or run modified versions of the software inside them, although the manufacturer can do so. This is fundamentally incompatible with the aim of protecting users' freedom to change the software. The systematic pattern of such abuse occurs in the area of products for individuals to use, which is precisely where it is most unacceptable. Therefore, we have designed this version of the GPL to prohibit the practice for those products. If such problems arise substantially in other domains, we stand ready to extend this provision to those domains in future versions of the GPL, as needed to protect the freedom of users. - -Finally, every program is threatened constantly by software patents. States should not allow patents to restrict development and use of software on general-purpose computers, but in those that do, we wish to avoid the special danger that patents applied to a free program could make it effectively proprietary. To prevent this, the GPL assures that patents cannot be used to render the program non-free. - -The precise terms and conditions for copying, distribution and modification follow. - -TERMS AND CONDITIONS -0. Definitions. -“This License” refers to version 3 of the GNU General Public License. - -“Copyright” also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. - -“The Program” refers to any copyrightable work licensed under this License. Each licensee is addressed as “you”. “Licensees” and “recipients” may be individuals or organizations. - -To “modify” a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a “modified version” of the earlier work or a work “based on” the earlier work. - -A “covered work” means either the unmodified Program or a work based on the Program. - -To “propagate” a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. - -To “convey” a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. - -An interactive user interface displays “Appropriate Legal Notices” to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. - -1. Source Code. -The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work. - -A “Standard Interface” means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. - -The “System Libraries” of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A “Major Component”, in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. - -The “Corresponding Source” for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. - -The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. - -The Corresponding Source for a work in source code form is that same work. - -2. Basic Permissions. -All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. - -You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. - -Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. - -3. Protecting Users' Legal Rights From Anti-Circumvention Law. -No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. - -When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. - -4. Conveying Verbatim Copies. -You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. - -You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. - -5. Conveying Modified Source Versions. -You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: - -a) The work must carry prominent notices stating that you modified it, and giving a relevant date. -b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to “keep intact all notices”. -c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. -d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. -A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an “aggregate” if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. - -6. Conveying Non-Source Forms. -You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: - -a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. -b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. -c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. -d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. -e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. -A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. - -A “User Product” is either (1) a “consumer product”, which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, “normally used” refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. - -“Installation Information” for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. - -If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). - -The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. - -Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. - -7. Additional Terms. -“Additional permissions” are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. - -When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. - -Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: - -a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or -b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or -c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or -d) Limiting the use for publicity purposes of names of licensors or authors of the material; or -e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or -f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. -All other non-permissive additional terms are considered “further restrictions” within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. - -If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. - -Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. - -8. Termination. -You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). - -However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. - -Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. - -Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. - -9. Acceptance Not Required for Having Copies. -You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. - -10. Automatic Licensing of Downstream Recipients. -Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. - -An “entity transaction” is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. - -You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. - -11. Patents. -A “contributor” is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's “contributor version”. - -A contributor's “essential patent claims” are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, “control” includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. - -Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. - -In the following three paragraphs, a “patent license” is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To “grant” such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. - -If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. “Knowingly relying” means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. - -If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. - -A patent license is “discriminatory” if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. - -Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. - -12. No Surrender of Others' Freedom. -If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. - -13. Use with the GNU Affero General Public License. -Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU Affero General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the special requirements of the GNU Affero General Public License, section 13, concerning interaction through a network will apply to the combination as such. - -14. Revised Versions of this License. -The Free Software Foundation may publish revised and/or new versions of the GNU General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU General Public License “or any later version” applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU General Public License, you may choose any version ever published by the Free Software Foundation. - -If the Program specifies that a proxy can decide which future versions of the GNU General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. - -Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. - -15. Disclaimer of Warranty. -THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM “AS IS” WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - -16. Limitation of Liability. -IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - -17. Interpretation of Sections 15 and 16. -If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. - -END OF TERMS AND CONDITIONS - -How to Apply These Terms to Your New Programs -If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. - -To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the “copyright” line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . -Also add information on how to contact you by electronic and paper mail. - -If the program does terminal interaction, make it output a short notice like this when it starts in an interactive mode: - - Copyright (C) - This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. -The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, your program's commands might be different; for a GUI interface, you would use an “about box”. - -You should also get your employer (if you work as a programmer) or school, if any, to sign a “copyright disclaimer” for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see . - -The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read . diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-en_US-title.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-en_US-title.txt deleted file mode 100644 index 439e64477a..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-en_US-title.txt +++ /dev/null @@ -1,3 +0,0 @@ -GNU GENERAL PUBLIC LICENSE -Version 3, 29 June 2007 - diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_CN-body.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_CN-body.txt deleted file mode 100644 index 8fbad21421..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_CN-body.txt +++ /dev/null @@ -1,171 +0,0 @@ -版权所有 © 2007 自由软件基金会 -任何人皆可复制和发布本协议的完整副本,但不得修改 -【译者声明】 -  This is an unofficial translation of the GNU General Public License into Chinese. It was not published by the Free Software Foundation, and does not legally state the distribution terms for software that uses the GNU GPL--only the original English text of the GNU GPL does that. However, we hope that this translation will help Chinese speakers understand the GNU GPL better. -  这是GNU通用公共许可协议的一份非官方中文翻译,并非自由软件基金会所发表,不适用于使用GNU通用公共许可协议发布的软件的法律声明——只有GNU通用公共许可协议英文原版才具有法律效力。不过我们希望本翻译能够帮助中文读者更好地理解GNU通用公共许可协议。 - -You may publish this translation, modified or unmodified, only under the terms at https://www.gnu.org/licenses/translations.html. - -【引言】 -  GNU通用公共许可协议是一份面向软件及其他类型作品的,自由的版权共产协议。 -  就多数软件而言,许可协议被设计用于剥夺你分享和修改软件的自由。相反,GNU通用公共许可协议力图保障你分享和修改某程序全部版本的权利——确保自由软件对其用户来说是自由的。我们自由软件基金会将GNU通用公共许可协议用于我们的大多数软件,并为一些其他作品的作者效仿。你也可以将本协议用于你的程序。 -  所谓自由软件,强调自由,而非免费。本GNU通用公共许可协议设计用于确保你享有分发自由软件的自由(你可以为此服务收费),确保你可以在需要的时候获得这些软件的源码,确保你可以修改这些软件或者在新的自由软件中复用其中某些片段,并且确保你在这方面享有知情权。 -  为保障你的权益,我们需要作一些限定:禁止任何人否认你的上述权利,或者要求你放弃它们。因此,当你分发或修改这些软件时,你有一定的责任——尊重他人的自由。如果你分发这种程序的副本,无论收费还是免费,你必须给予与你同等的权利。你还要确保他们也能收到源码并了解他们的权利。 -  采用GNU通用公共许可协议的开发者通过两步保障你的权益:其一,申明软件的版权;其二,通过本协议使你可以合法地复制、分发和修改该软件。 -  为了保护每一位作者和开发者,GNU通用公共许可协议指明一点:自由软件并没有品质担保。为用户和作者双方着想,GNU通用公共许可协议要求修改版必须有标记,以免其问题被错误地归到先前版本的作者身上。 -  某些设备设计成拒绝用户安装运行修改过的软件,但厂商不受限。这和我们保护用户享有修改软件的自由的宗旨存在根本性矛盾。该滥用协议的模式出现于个人用品领域,这恰是最不可接受的。因此,我们设计了这版GNU通用公共许可协议来禁止这类产品。如果此类问题在其他领域涌现,我们时刻准备着在将来的版本中把规定扩展到相应领域,以保护用户的自由。 -  最后,每个程序都持续受到软件专利的威胁。政府不应该允许专利限制通用计算机软件的开发和应用,在做不到这点时,我们希望避免专利应用有效地使自由软件私有化的危险。就此,GNU通用公共许可协议保证专利不能使程序非自由化。 - -  下文是关于复制、分发和修改的严谨描述和实施条件。 - -【关于复制、分发和修改的术语和条件】 -〇、定义 - -  “本协议”指GNU通用公共许可协议第三版。 -  “版权”也指适用于诸如半导体掩模的其他类型作品的类似法律。 -  “本程序”指任何在本协议保护下的有版权的作品。每个许可获得者称作“你”。“许可获得者”和“接收者”可以是个人或组织。 -  “修改”一个作品指需要版权许可的复制及对作品全面的或部分的改编行为,有别于制作副本。所产生的作品称作前作的“修改版”,或“基于”前作的作品。 -  “受保护作品”指程序或其派生作品。 -  “传播”作品指那些未经许可就会在适用版权法律下构成直接或间接侵权的行为,不包括在计算机上运行和私下的修改。传播包括复制、分发(无论修改与否)、向公众公开,以及在某些国家的其他行为。 -  “转发”作品指让他方能够制作或者接收副本的行为。仅仅通过计算机网络和用户交互,没有传输副本,则不算转发。 -  一个显示“适当的法律声明”的交互式用户界面应包括一个便捷而醒目的可视化特性:(1)显示适当的版权声明;(2)告知用户没有品质担保(提供了品质担保的情况除外),许可获得者可以在本协议约束下转发该作品,及查看本协议副本的途径。如果该界面提供一个命令列表,如菜单,其表项应符合上述规范。 - -一、源码 - -  作品的源码指其可修改的首选形式,目标码指所有其他形式。 -  “标准接口”指标准化组织定义的官方标准中的接口,或针为某种编程语言设定的接口中为开发者广泛使用的接口。 -  可执行作品中的“系统库”不是指整个程序,而是涵盖此等内容:(a)以通常形式和主部件打包到一起却并非后者一部分,且(b)仅为和主部件一起使作品可用或实现某些已有公开实现源码的接口。“主部件”在这里指可执行作品运行依赖的操作系统(如果存在)的必要部件(内核、窗口系统等),生成该作品的编译器,或运行所需的目标码解释器。 -  目标码形式的作品中“相应的源码”指所有修改作品及生成、安装、运行(对可执行作品而言)目标码所需的源码,包括控制上述行为的脚本。可是,其中不包括系统库、通用工具、未修改直接用于支持上述行为却不是该作品一部分的通常可得的自由软件。例如,相应的源码包含配合作品源文件的接口定义,以及共享库和作品专门依赖的动态链接子程序的源码。这里的依赖体现为频密的数据交换或者该子程序和作品其他部分的控制流切换。 -  相应的源码不必包含那些用户可以通过源码其他部分自动生成的内容。 -  源码形式作品的相应源码即其本身。 - -二、基本许可 - -  本协议的一切授权都是对本程序的版权而言的,并且在所述条件都满足时不可撤销。本协议明确批准你不受限制地运行本程序的未修改版本。受保护作品的运行输出,仅当其内容构成一个受保护作品时,才会为本协议所约束。如版权法所赋予,本协议承认你正当使用或与之等价的权利。 -  只要你获得的许可仍有效,你可以制作、运行和传播那些你并不转发的受保护作品。只要你遵守本协议中关于转发你不占有版权的材料的条款,你可以向他人转发,仅仅以求对方为你做定制或向你提供运行这些作品的工具。那些为你制作或运行这些受保护作品的人,应该在你的指引和控制下,谨代表你工作,即禁止他们在双方关系之外制作任何你提供的受版权保护材料的副本。 -  仅当满足后文所述条件时,其他各种情况下的转发才是允许的。不允许再授权行为,而第十条的存在使再授权变得没有必要。 - -三、保护用户的合法权益免受反破解法限制 - -  在任何满足1996年12月20日通过的WIPO版权条约第11章要求的法律,或类似的禁止或限制技术手段破解的法律下,受保护作品不应该视为有效技术手段的一部分。 -  当你转发一个受保护作品时,你将失去任何通过法律途径限制技术手段破解的权力,乃至于通过行使本协议所予权利实现的破解。你即已表明无心通过限制用户操作或修改受保护作品来确保你或第三方关于禁止技术手段破解的法定权利。 - -四、转发完整副本 - -  你可以通过任何媒介发布你接收到的本程序的完整源码副本,但要做到:为每一个副本醒目而恰当地发布版权;完整地保留关于本协议及按第七条加入的非许可性条款;完整地保留免责声明;给接收者附上一份本协议的副本。 -  你可以免费或收费转发,也可以选择提供技术支持或品质担保以换取收入。 - -五、转发修改过的源码版本 - -  你可以以源码形式转发基于本程序的作品或修改的内容,除满足第四条外还需要满足以下几点要求: -  a)该作品必须带有醒目的修改声明及相应的日期。 -  b)该作品必须带有醒目的声明,指出其在本协议及任何符合第七条的附加条件下发布。这个要求修正了第四条关于“完整保留”的内容。 -  c)你必须按照本协议将该作品整体向想要获得许可的人授权,本协议及符合第七条的附加条款就此适用于整个作品,即其每一部分,不管如何建包。本协议不允许以其他形式授权该作品,但如果你收到别的许可则另当别论。 -  d)如果该作品有交互式用户界面,则其必须显示适当的法律声明。然而,当本程序有交互式用户界面却不显示适当的法律声明时,你的作品也不必。 -一个在存储或分发媒介上的受保护作品和其他分离的单体作品的联合作品,在既不是该受保护作品的自然扩展,也不以构筑更大的程序为目的,并且自身及其产生的版权并非用于限制单体作品给予联合作品用户的访问及其他合法权利时,称为“聚合体”。在聚合作品中包含受保护作品并不会使本协议影响聚合作品的其他部分。 - -六、以非源码形式转发 - -  你可以如第四条和第五条所述那样以目标码形式转发受保护作品,同时在本协议规范下以如下方式之一转发机器可读的对应源码: -  a)目标码通过实体产品(涵盖某种实体分发媒介)转发时,通过常用于软件交换的耐用型实体媒介随同转发相应的源码。 -  b)目标码通过实体产品(涵盖某种实体分发媒介)转发时,伴以具有至少三年且与售后服务等长有效期的书面承诺,给予目标码的持有者:(1)包含产品全部软件的相应源码的常用于软件交换的耐用型实体媒介,且收费不超过其合理的转发成本;或者(2)通过网络免费获得相应源码的途径。 -  c)单独转发目标码时,伴以提供源码的书面承诺。本选项仅在你收到目标码及b项形式的承诺的情况下可选。 -  d)通过在指定地点提供目标码获取服务(无论是否收费)的形式转发目标码时,在同一地点以同样的方式提供对等的源码获取服务,并不得额外收费。你不以要求接收者在复制目标码的同时复制源码。如果提供目标码复制的地点为网络服务器,相应的源码可以提供在另一个支持相同复制功能的服务器上(由你或者第三方运营),不过你要在目标码处指出相应源码的确切路径。不管你用什么源码服务器,你有义务要确保持续可用以满足这些要求。 -  e)通过点对点传输转发目标码时,告知其他节点目标码和源码在何处以d项形式向大众免费提供。 -  “面向用户的产品”指(1)“消费品”,即个人、家庭或日常用途的个人有形财产;或者(2)面向社会团体设计或销售,却落入居家之物。在判断一款产品是否消费品时,争议案例的判断将向利于扩大保护靠拢。就特定用户接收到特定产品而言,“正常使用”指对此类产品的典型或一般使用,不管该用户的身份,该用户对该产品的实际用法,以及该产品的预期用法。无论产品是否实质上具有商业上的,工业上的,及非面向消费者的用法,它都视为消费品,除非以上用法代表了它唯一的重要使用模式。 -  “安装信息”对面向用户的产品而言,指基于修改过的源码安装运行该产品中的受保护作品的修改版所需的方法、流程、认证码及其他信息。这些信息必须足以保证修改过的目标码不会仅仅因为被修改过而不能继续工作。 -  如果你根据本条在,或随,或针对一款面向用户的产品,以目标码形式转发某作品,且转发体现于该产品的所有权和使用权永久或者在一定时期内转让予接收者的过程(无论其有何特点),根据本条进行的源码转发必须伴有安装信息。不过,如果你和第三方都没有保留在该产品上安装修改后的目标码的能力(如作品安装在ROM上),这项要求不成立。   要求提供安装信息并不要求为修改或安装的作品,以及其载体产品继续提供技术支持、品质担保和升级。当修改本身对网络运行有实质上的负面影响,或违背了网络通信协议和规则时,可以拒绝其联网。 -  根据本条发布的源码及安装信息,必须以公共的文件格式(并且存在可用的空开源码的处理工具)存在,同时不得对解压、阅读和复制设置任何密码。 - -七、附加条款 - -  “附加许可”用于补充本协议,以允许一些例外情况。合乎适用法律的对整个程序适用的附加许可,应该被视为本协议的内容。如果附加许可作用于程序的某部分,则该部分受此附加许可约束,而其他部分不受其影响。 -  当你转发本程序时,你可以选择性删除副本或其部分的附加条款。(附加条款可以写明在某些情况下要求你修改时删除该条款。)在你拥有或可授予恰当版权许可的受保护作品中,你可以在你添加的材料上附加许可。 -  尽管已存在本协议的其他条款,对你添加到受保护作品的材料,你可以(如果你获得该材料版权持有人的授权)以如下条款补充本协议: -  a)表示不提供品质担保或有超出十五、十六条的责任。 -  b)要求在此材料中或在适当的法律声明中保留特定的合理法律声明或创作印记。 -  c)禁止误传材料的起源,或要求合理标示修改以别于原版。 -  d)限制以宣传为目的使用该材料的作者或授权人的名号。 -  e)降低约束以便赋予在商标法下使用商品名、商品标识及服务标识。 -  f)要求任何转发该材料(或其修改版)并对接收者提供契约性责任许诺的人,保证这种许诺不会给作者或授权人带来连带责任。 -  此外的非许可性附加条款都被视作第十条所说的“进一步的限制”。如果你接收到的程序或其部分,声称受本协议约束,却补充了这种进一步的限制条款,你可以去掉它们。如果某许可协议包含进一步的限制条款,但允许通过本协议再授权或转发,你可以通过本协议再授权或转发加入了受前协议管理的材料,不过要同时移除上述条款。 -  如果你根据本条向受保护作品添加了调控,你必须在相关的源文件中加入对应的声明,或者指出哪里可以找到它们。 -  附加条款,不管是许可性的还是非许可性的,可以以独立的书面协议出现,也可以声明为例外情况,两种做法都可以实现上述要求。 - -八、终止授权 - -  除非在本协议明确授权下,你不得传播或修改受保护作品。其他任何传播或修改受保护作品的企图都是无效的,并将自动中止你通过本协议获得的权利(包括第十一条第3段中提到的专利授权)。 -  然而,当你不再违反本协议时,你从特定版权持有人处获得的授权恢复:(1)暂时恢复,直到版权持有人明确终止;(2)永久恢复,如果版权持有人没能在60天内以合理的方式指出你的侵权行为。 -  再者,如果你第一次收到了特定版权持有人关于你违反本协议(对任意作品)的通告,且在收到通告后30天内改正,那你可以继续享此有授权。 -  当你享有的权利如本条所述被中止时,已经从你那根据本协议获得授权的他方的权利不会因此中止。在你的权利恢复之前,你没有资格凭第十条获得同一材料的授权。 - -九、持有副本无需接受协议 - -  你不必为接收或运行本程序而接受本协议。类似的,仅仅因点对点传输接收到副本引发的对受保护作品的辅助性传播,并不要求接受本协议。但是,除本协议外没有什么可以授权你传播或修改任何受保护作品。如果你不接受本协议,这些行为就侵犯了版权。因此,一旦修改和传播一个受保护作品,就表明你接受本协议。 - -十、对下游接收者的自动授权 - -  每当你转发一个受保护作品,其接收者自动获得来自初始授权人的授权,依照本协议可以运行、修改和传播此作。你没有要求第三方遵守该协议的义务。 -  “实体事务”指转移一个组织的控制权或全部资产、或拆分或合并组织的事务。如果实体事务导致一个受保护作品的传播,则事务中各收到作品副本方,都有获得前利益相关者享有或可以如前段所述提供的对该作品的任何授权,以及从前利益相关者处获得并拥有相应的源码的权利,如果前利益相关者享有或可以通过合理的努力获得此源码。 -  你不可以对本协议所授权利的行使施以进一步的限制。例如,你不可以索要授权费或版税,或就行使本协议所授权利征收其他费用;你也不能发起诉讼(包括交互诉讼和反诉),宣称制作、使用、零售、批发、引进本程序或其部分的行为侵犯了任何专利。 - -十一、专利 - -  “贡献人”指通过本协议对本程序或其派生作品进行使用认证的版权持有人。授权作品成为贡献人的“贡献者版”。 -  贡献人的“实质专利权限”指其拥有或掌控的,无论是已获得的还是将获得的全部专利权限中,可能被通过某种本协议允许的方式制作、使用或销售其贡献者版作品的行为侵犯的部分,不包括仅有修改其贡献者版作品才构成侵犯的部分。“掌控”所指包括享有和本协议相一致的专利再授权的权利。 -  每位贡献人皆其就实质专利权限,授予你一份全球有效的免版税的非独占专利许可,以制作、使用、零售、批发、引进,及运行、修改、传播其贡献者版的内容。 -  在以下三段中,“专利许可”指通过任何方式明确表达的不行使专利权(如对使用专利的明确许可和不起诉专利侵权的契约)的协议或承诺。对某方“授予”专利许可,指这种不对其行使专利权的协议或承诺。 -  如果你转发的受保护作品已知依赖于某专利,而其相应的源码并不是任何人都能根据本协议从网上或其他地方免费获得,那你必须(1)以上述方式提供相应的源码;或者(2)放弃从该程序的专利许可中获得利益;或者(3)以某种和本协议相一致的方式将专利许可扩展到下游接收者。“已知依赖于”指你实际上知道若没有专利许可,你在某国家转发受保护作品的行为,或者接收者在某国家使用受保护作品的行为,会侵犯一项或多项该国认定的专利,而这些专利你有理由相信它们的有效性。 -  如果根据一项事务或安排,抑或与之相关,你转发某受保护作品,或通过促成其转手以实现传播,并且该作品的接收方授予专利许可,以使指可以使用、传播、修改或转发该作品的特定副本,则此等专利许可将自动延伸及每一个收到该作品或其派生作品的人。 -  如果某专利在其涵盖范围内,不包含本协议专门赋予的一项或多项权利,禁止行使它们或以不行使它们为前提,则该专利是“歧视性”的。如果你和软件发布行业的第三方有合作,合作要求你就转发受保护作品的情况向其付费,并授予作品接收方歧视性专利,而且该专利(a)与你转发的副本(或在此基础上制作的副本)有关,或针对包含该受保护作品的产品或联合作品,你不得转发本程序,除非参加此项合作或取得该专利早于2007年3月28日。 -  本协议的任何部分不应被解释成在排斥或限制任何暗含的授权,或者其他在适用法律下对抗侵权的措施。 - -十二、不得牺牲他人的自由 - -  即便你面临与本协议条款冲突的条件(来自于法庭要求、协议或其他),那也不能成为你违背本协议的理由。倘若你不能在转发受保护作品时同时满足本协议和其他文件的要求,你就不能转发本程序。例如,当你同意了某些要求你就再转发问题向你的转发对象收取版税的条款时,唯一能同时满足它和本协议要求的做法便是不转发本程序。 - -十三、和GNU Affero通用公共许可协议一起使用 - -  尽管已存在本协议的一些条款,你可以将任何受保护作品与以GNU Affero通用公共许可协议管理的作品关联或组合成一个联合作品,并转发。本协议对其中的受保护作品部分仍然有效,但GNU Affero通用公共许可协议第十三条的关于网络交互的特别要求适用于整个联合作品。 - -十四、本协议的修订版 - -  自由软件联盟可能会不定时发布GNU通用公共许可协议的修订版或新版。新版将秉承当前版本的精神,但对问题或事项的描述细节不尽相同。 -  每一版都会有不同的版本号,如果本程序指定其使用的GNU通用公共许可协议的版本“或任何更新的版本”,你可以选择遵守该版本或者任何更新的版本的条款。如果本程序没有指定协议版本,你可以选用自由软件联盟发布的任意版本的GNU通用公共许可协议。 -  如果本程序指定代理来决定将来那个GNU通用公共许可协议版本适用,则该代理的公开声明将指导你选择协议版本。 -  新的版本可能会给予你额外或不同的许可。但是,任何作者或版权持有人的义务,不会因为你选择新的版本而增加。 - -十五、不提供品质担保 - -  本程序在适用法律范围内不提供品质担保。除非另作书面声明,版权持有人及其他程序提供者“概”不提供任何显式或隐式的品质担保,品质担保所指包括而不仅限于有经济价值和适合特定用途的保证。全部风险,如程序的质量和性能问题,皆由你承担。若程序出现缺陷,你将承担所有必要的修复和更正服务的费用。 - -十六、责任范围 - -  除非适用法律或书面协议要求,任何版权持有人或本程序按本协议可能存在的第三方修改和再发布者,都不对你的损失负有责任,包括由于使用或者不能使用本程序造成的任何一般的、特殊的、偶发的或重大的损失(包括而不仅限于数据丢失、数据失真、你或第三方的后续损失、其他程序无法与本程序协同运作),即使那些人声称会对此负责 - -十七、第十五条和第十六条的解释 - -  如果上述免责声明和责任范围声明不为地方法律所支持,上诉法庭应采用与之最接近的关于放弃本程序相关民事责任的地方法律,除非本程序附带收费的品质担保或责任许诺。 - -【附录:如何将上述条款应用到你的新程序】 -  如果你开发了一个新程序,并希望它能最大限度地为公众所使用,最好的办法是将其作为自由软件,以使每个人都能在本协议约束下对其再发布及修改。 -  为此,请在附上以下声明。最安全的做法是将其附在每份源码的开头,以便于最有效地传递免责信息。同时,每个文件至少包含一处“版权”声明和一个协议全文的链接。 - -  <用一行来标明程序名及其作用> -  版权所有(C)<年份> <作者姓名> -  本程序为自由软件,在自由软件联盟发布的GNU通用公共许可协议的约束下,你可以对其进行再发布及修改。协议版本为第三版或(随你)更新的版本。 -  我们希望发布的这款程序有用,但不保证,甚至不保证它有经济价值和适合特定用途。详情参见GNU通用公共许可协议。 -  你理当已收到一份GNU通用公共许可协议的副本,如果没有,请查阅 - -  同时提供你的电子邮件地址或传统的邮件联系方式。 - -  如果该程序是交互式的,让它在交互模式下输出类似下面的一段声明: - -  <程序名> 第69版,版权所有(C)<年份> <作者姓名> -  本程序从未提供品质担保,输入'show w'可查看详情。这是款自由软件,欢迎你在满足一定条件后对其再发布,输入'show c'可查看详情。 - -  例子中的命令'show w'和'show c'应用于显示GNU通用公共许可协议相应的部分。当然你也可以因地制宜地选用别的方式,对图形界面程序可以用“关于”菜单。 - -  如果你之上存在雇主(你是码农)或校方,你还应当让他们在必要时为此程序签署放弃版权声明。详情参见。 - -  本GNU通用公共许可协议不允许把你的程序并入私有程序。如果你的程序是某种库,且你想允许它被私有程序链接而使之更有用,请使用GNU较宽松通用公共许可协议。决定前请先查阅。 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_CN-title.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_CN-title.txt deleted file mode 100644 index e3d68c3c63..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_CN-title.txt +++ /dev/null @@ -1,2 +0,0 @@ -GNU通用公共授权 -第三版 2007年6月29日 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_TW-body.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_TW-body.txt deleted file mode 100644 index fd941ae046..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_TW-body.txt +++ /dev/null @@ -1,268 +0,0 @@ -版權所有(C)2007 Free Software Foundation, Inc. (http://fsf.org) -允許所有人複製和發佈本授權文件的完整版本 -但不允許對它進行任何修改 - -導言 - -GNU通用公共授權是一份針對軟體和其他種類作品的自由的、公共的授權文件。 - -大多數軟體授權申明被設計爲剝奪您共用和修改軟體的自由。相反地,GNU通用公共授權力圖保護您分享和修改自由軟體地自由——以確保軟體對所有使用者都是自由的。我們,自由軟體基金會,對我們的大多數軟體使用GNU通用公共授權;本授權同樣適用于任何其作者以這種方式發佈的軟體。您也可以讓您的軟體使用本授權。 - -當我們談論自由軟體時,我們指的是行爲的自由,而非價格免費。GNU通用公共授權被設計爲確保您擁有發佈自由軟體副本(以及爲此收費,如果您希望的話)的自由,確保您能收到源代碼或者在您需要時能獲取源代碼,確保您能修改軟體或者將它的一部分用於新的自由軟體,並且確保您知道您能做這些事情。 - -爲了保護您的權利,我們需要做出要求,禁止任何人否認您的這些權利或者要求您放棄這些權利。因此,如果您發佈此軟體的副本或者修改它,您就需要肩負起尊重他人自由的責任。 - -例如,如果您發佈自由軟體的副本,無論以免費還是以收費的模式,您都必須把您獲得的自由同樣的給予副本的接收者。您必須確保他們也能收到或者得到源代碼。而且您必須向他們展示這些條款,以使他們知道自己享有這樣的權利。 - -使用GNU通用公共授權的開發者通過兩項措施來保護您的權利:(1)聲明軟體的版權;(2)向您提供本授權文件以給您複製、發佈並且/或者修改軟體的法律許可。 - -爲了保護軟體發展者和作者,通用公共授權明確闡釋自由軟體沒有任何擔保責任。如用戶和軟體作者所希望的,通用公共授權要求軟體被修改過的版本必須明確標示,從而避免它們的問題被錯誤地歸咎於先前的版本。 - -某些設備被設計成拒絕用戶安裝或運行其內部軟體的修改版本,儘管製造商可以安裝和運行它們。這從根本上違背了通用公共授權保護用戶能修改軟體的自由的宗旨。此類濫用本授權的系統模式出現在了最讓人無法接受的個人用戶産品領域。因此,我們設計了這個版本的通用公共授權來禁止那些産品的侵權行爲。如果此類問題在其他領域大量出現,我們準備好了在將來的通用公共授權版本裏擴展這項規定,以保護用戶的自由。 - -最後,每個程式都經常受到軟體專利的威脅。政府不應該允許專利權限制通用電腦軟體的發展和使用,但是在政府確實允許這種事情的地區,我們希望避免應用于自由軟體的專利權使該軟體有效私有化的危險。爲了阻止這樣的事情的發生,通用公共授權確保沒有人能夠使用專利權使得自由軟體非自由化。 - -以下是複製,發佈和修改軟體的詳細條款和條件。 - -條款和條件 - -0.定義 - -“本授權”指GNU通用公共授權第三版 - -“版權”一詞同樣指適用於其他産品如半導體防護罩等的保護版權的法律。 - -“本程式”指任何在本授權下發佈的受版權保護的作品。被授權人稱爲“您”。“被授權人”和“版權接受者”可以是個人或組織。 - -“修改”作品是指從軟體中拷貝或者做出全部或一丁點兒的修改,這不同於逐字逐句的複製,是需要版權許可的。修改成果被稱爲先前作品的“修改版本”或者“基於”先前作品的軟體。 - -“覆蓋程式”指未被修改過的本程式或者基於本程式的程式。 - -“傳播”程式指使用該程式做任何如果沒有許可就會在適用的版權法下直接或間接侵權的事情,不包括在電腦上執行程式或者是做出您不與人共用的修改。傳播包括複製,分發(無論修改與否),向公衆共用,以及在某些國家的其他行爲。 - -“發佈”作品指任何讓其他組織製作或者接受副本的傳播行爲。僅僅通過電腦網路和一個用戶交流,且沒有發送程式拷貝的行爲不是發佈。 - -一個顯示“適當的法律通告”的交互的用戶介面應包括這樣一個方便而顯著的可視部件,它具有以下功能:(1)顯示一個合適的版權通告;(2)告訴用戶對本程式沒有任何擔保責任(除非有擔保明確告知),受權人可以在本授權下發佈本程式,以及如果閱讀本授權協定的副本。如果該介面顯示了一個用戶命令或選項列表,比如功能表,該列表中的選項需要符合上述規範。 - -1.源代碼 - -“源代碼”指修改程式常用的形式。“目標代碼”指程式的任何非源代碼形式。 - -“標準介面”有兩種含義,一是由標準組織分支定義的官方標準;二是針對某種語言專門定義的衆多介面中,在該類語言的開發者中廣爲使用的那種介面。 - -可執行程式的“系統庫”不是指整個程式,而是指任何包含於主要部件但不屬於該部件的部分,並且只是爲了使能該部件而開發,或者爲了實現某些已有公開源代碼的標準介面。“主要部件”在這裏指的是執行程式的特定作業系統(如果有的話)的主要的關鍵部件(內核,視窗系統等),或者生成該可執行程式時使用的編譯器,或者運行該程式的目標代碼解釋器。 - -目標代碼中的程式“對應的源代碼”指所有生成,安裝,(對可執行程式而言)運行該目標代碼和修改該程式所需要的源代碼,包括控制這些行爲的腳本。但是,它不包括程式需要的系統庫,通用目的的工具,以及程式在完成某些功能時不經修改地使用的那些不包括在程式中的普遍可用的自由軟體。例如,對應的源代碼包括與程式的原始檔案相關的介面定義文件,以及共用庫中的源代碼和該程式設計需要的通過如頻繁的資料交互或者這些副程式和該程式其他部分之間的控制流等方式獲得的動態鏈結副程式。 - -對應的源代碼不需要包含任何擁護可以從這些資源的其他部分自動再生的資源。 - -源代碼形式的程式對應的源代碼定義同上。 - - -2.基本的許可 - -所有在本授權協定下授予的權利都是對本程式的版權而言,並且只要所述的條件都滿足了,這些授權是不能收回的。本授權明確的確認您可以不受任何限制地運行本程式的未修改版本。運行一個本授權覆蓋的程式獲得的結果只有在該結果的內容構成一個覆蓋程式的時候才由本授權覆蓋。本授權承認您正當使用或版權法規定的其他類似行爲的權利。 - -只要您的授權仍然有效,您可以無條件地製作,運行和傳播那些您不發佈的覆蓋程式。只要您遵守本授權中關於發佈您不具有版權的資料的條款,您可以向別人發佈覆蓋程式,以要求他們爲您做出專門的修改或者向您提供運行這些程式的簡易設備。那些爲您製作或運行覆蓋程式的人作爲您專門的代表也必須在您的指示和控制下做到這些,請禁止他們在他們和您的關係之外製作任何您擁有版權的程式的副本。 - -當下述條件滿足的時候,在任何其他情況下的發佈都是允許的。 - -轉授許可證授權是不允許的,第10節讓它變的沒有必要了。 - - -3.保護用戶的合法權利不受反破解法侵犯 - -在任何實現1996年通過的世界知識産權組織版權條約第11章中所述任務的法律,或者是禁止或限制這種破解方法的類似法律下,覆蓋程式都不會被認定爲有效的技術手段的一部分。 - -當您發佈一個覆蓋程式時,您將放棄任何禁止技術手段破解的法律力量,甚至在本授權關於覆蓋程式的條款下執行權利也能完成破解。同時,您放棄任何限制用戶操作或修改該覆蓋程式以執行您禁止技術手段破解的合法權利的企圖。 - - -4.發佈完整副本 - -你可以通過任何媒介發佈本程式源代碼的未被修改過的完整副本,只要您顯著而適當地在每個副本上發佈一個合適的版權通告;保持完整所有敍述本授權和任何按照第7節加入的非許可的條款;保持完整所有的免責申明;並隨程式給所有的接受者一份本授權。 - -您可以爲您的副本收取任何價格的費用或者免費,你也可以提供技術支援或者責任擔保來收取費用。 - - -5.發佈修改過的源碼版本 - -您可以在第4節的條款下以源碼形式發佈一個基於本程式的軟體,或者從本程式中製作該軟體需要進行的修改,只要您同時滿足所有以下條件: - -* a)製作的軟體必須包含明確的通告說明您修改了它,並給出相應的修改日期。 - -* b)製作的軟體必須包含明確的通告,陳述它在本授權下發佈並指出任何按照第7節加入的條件。這條要求修改了第4節的“保持所有通知完整”的要求。 - -* c)您必須把整個軟體作爲一個整體向任何獲取副本的人按照本授權協定授權。本授權因此會和任何按照第7節加入的條款一起,對整個軟體及其所有部分,無論是以什麽形式打包的,起法律效力。本授權不允許以其他任何形式授權該軟體,但如果您個別地收到這樣的許可,本授權並不否定該許可。 - -* d)如果您製作的套裝軟體含交互的用戶介面,每個用戶介面都必須顯示適當的法律通告;但是,如果本套裝程式含沒有顯示適當的法律通告的交互介面,您的軟體沒有必要修改他們讓他們顯示。 - -如果一個覆蓋程式和其他本身不是該程式的擴展的程式的聯合體,這樣的聯合的目的不是爲了在某個存儲或發佈媒體上生成更大的程式,且聯合體程式和相應産生的版權沒有用來限制程式的使用或限制單個程式賦予的聯合程式的用戶的合法權利的時候,這樣的聯合體就被稱爲“聚集體”。在聚集體中包含覆蓋程式並不會使本授權應用於該聚集體的其他部分。 - - -6.發佈非源碼形式的副本 - -您可以在第4,5節條款下以目標代碼形式發佈程式,只要您同時以一下的一種方式在本授權條款下發佈機器可讀的對應的源代碼: - -* a)在物理産品(包括一個物理的發佈媒介)中或作爲其一部分發佈目標代碼,並在通常用於軟體交換的耐用的物理媒介中發佈對應的源代碼。 - -* b)在物理産品(包括一個物理的發佈媒介)中或作爲其一部分發佈目標代碼,並附上有效期至少3年且與您爲該産品模型提供配件或客戶服務的時間等長的書面承諾,給予每個擁有該目標代碼的人(1)要麽在通常用於軟體交換的耐用物理媒介中,以不高於您執行這種源碼的發佈行爲所花費的合理費用的價格,一份該産品中所有由本授權覆蓋的軟體的對應的源代碼的拷貝;(2)要麽通過網路服務器免費提供這些對應源代碼的訪問。 - -* c)單獨地發佈目標代碼的副本,並附上一份提供對應源代碼的書面承諾。這種行爲只允許偶爾發生並不能盈利,且在您收到的目標代碼附有第6節b規定的承諾的時候。 - -* d)在指定的地點(免費或收費地)提供發佈的目標代碼的訪問並在同樣的地點以不增加價格的方式提供對應源代碼的同樣的訪問權。您不需要要求接收者在複製目標代碼的時候一道複製對應的源代碼。如果複製目標代碼的地點是網路服務器,對應的源代碼可以在另外一個支援相同複製功能的伺服器上(由您或者第三方運作),只要您在目標代碼旁邊明確指出在哪里可以找到對應的源代碼。無論什麽樣的伺服器提供這些對應的源代碼,您都有義務保證它在任何有需求的時候都可用,從而滿足本條規定。 - -* e)用點對點傳輸發佈目標代碼,您需要告知其他的節點目標代碼和對應的源代碼在哪里按照第6節d的條款向大衆免費提供。 - -目標代碼中可分離的部分,其源代碼作爲系統庫不包含在對應的源代碼中,不需要包含在發佈目標代碼的行爲中。 - -“用戶産品”指(1)“消費品”,即通常用於個人的、家庭的或日常目的的有形個人財産;或者(2)任何爲公司設計或銷售卻賣給了個人的東西。在判斷一個産品是否消費品時,有疑點的案例將以有利於覆蓋面的結果加以判斷。對特定用戶接收到的特定産品,“正常使用”指該類産品的典型的或通常的使用,無論該用戶的特殊情況,或者該用戶實際使用該産品的情況,或者該産品要求的使用方式如何。一個産品是否是消費品與該産品是否具有實質的經濟上的、工業的或非消費品的用處無關,除非該用處是此類産品唯一的重要使用模式。 - -用戶産品的“安裝資訊”指從對應源碼的修改版本安裝和運行該用戶産品中包含的覆蓋程式的修改版本所需要的任何方法、過程、授權密鑰或其他資訊。這些資訊必須足以保證修改後的目標代碼不會僅僅因爲被修改過而不能繼續運行。 - -如果您在本節條款下在用戶産品中,或隨同,或專門爲了其中的使用,發佈目標代碼程式,而在發佈過程中用戶産品的所有權和使用權都永久地或在一定時期內(無論此項發佈的特點如何)傳遞給了接收者,在本節所述的條款下發佈的對應的源代碼必須包含安裝資訊。但是如果您或者任何第三方組織都沒有保留在用戶産品上安裝修改過的目標代碼的能力(比如程式被安裝在了ROM上),那麽這項要求不會生效。 - -提供安裝資訊的要求並沒有要求爲接收者修改或安裝過的程式,或者修改或安裝該程式的用戶産品,繼續提供支援服務、擔保或升級。當修改本身實際上相反地影響了網路的運行,或者違反了網路通信的規則和協定時,網路訪問可以被拒絕。 - -根據本節發佈的對應源代碼和提供的安裝資訊必須以公共的文件格式發佈(並附加一個該類型文檔的實現方法以源碼形式向公衆共用),解壓縮、閱讀或複製這些資訊不能要求任何密碼。 - - -7.附加條款 - -“附加許可”是通過允許一些本授權的特例來補充本授權的條款。只要它們在使用法律下合法,對整個程式都生效的附加許可就應當被認爲是本授權的內容。如果附加許可只是對本程式的一部分生效,那麽該部分可以在那些許可下獨立使用,但整個程式是在本授權管理下,無論附加許可如何。 - -當您發佈覆蓋程式的副本時,您可以選擇刪除該副本或其部分的任何附加許可。(當您修改程式時,附加許可可能要求在某些情況下將自身刪除)。您可以把附加許可放在材料上,加入到您擁有或能授予版權許可的覆蓋程式中。 - -儘管本授權在別處有提供,對於您加入到程式中的材料,您可以(如果您由該材料的版權所有者授權的話)用以下條款補充本授權: - -a. 拒絕擔保責任或以與本授權第15和16小節條款不同的方式限制責任;或者 - -b. 要求保留特定的合理法律通告,或者該材料中或包含於適當法律通告中的該程式的作者貢獻;或者 - -c. 禁止誤傳該材料的來源,或者要求該材料的修改版本以合理的方式標誌爲與原版本不同的版本;或者 - -d. 限制以宣傳爲目的的使用該材料作者或授權人的姓名;或者 - -e. 降低授權級別以在商標法下使用一些商品名稱,商標或服務標記;或者 - -f. 要求任何發佈該材料(或其修改版本)的人用對接收者的責任假設合同對授權人和材料作者進行保護,避免任何這樣的假設合同直接造成授權人和作者的責任。 - -所有其他不許可的附加條款都被認爲是第10節中的“進一步的約束”。如果您收到的程式或者其部分,聲稱自己由本授權管理,並補充了進一步約束,那麽您可以刪除這些約束。如果一個授權文件包含進一步約束,但是允許再次授權或者在本授權下發佈,只要這樣的進一步的約束在這樣的再次授權或發佈中無法保留下來,您就可以在覆蓋程式中加入該授權文件條款管理下的材料。 - -如果您依據本小節向覆蓋程式添加條款,您必須在相關的源碼文件中加入一個應用於那些文件的附加條款的聲明或者指明在哪里可以找到這些條款的通告。 - -附加的條款,無論是許可的還是非許可的條款,都可以寫在一個單獨的書面授權中,或者申明爲例外情況;這兩種方法都可以實現上述要求。 - -8.終止授權 - -您只有在本授權的明確授權下才能傳播或修改覆蓋程式。任何其他的傳播或修改覆蓋程式的嘗試都是非法的,並將自動終止您在本授權下獲取的權利(包括依據第11節第三段條款授予的任何專利授權)。 - -然而,如果您停止違反本授權,那麽您從某個特定版權所有者處獲取的授權許可能夠以以下方式恢復(a)您可以暫時地擁有授權,直到版權所有者明確地終止您的授權;(b)如果在您停止違反本授權後的60天內,版權所有者沒有以某種合理的方式告知您的違背行爲,那麽您可以永久地獲取該授權。 - -進一步地,如果某個版權所有者以某種合理的方式告知您違反本授權的行爲,而這是您第一次收到來自該版權所有者的違反本授權的通知(對任何軟體),並且在收到通知後30天內修正了違反行爲,那麽您從該版權所有者處獲取的授權將永久地恢復。 - -當您的授權在本節條款下被終止時,那些從您那獲取授權的組織只要保持不違反本授權協定,其授權就不會被終止。您只有在授權被版權所有者恢復了之後才有資格依據第10節的條款獲取該材料的新的授權。 - -9.獲取副本不需要接受本授權 - -您不需要爲了接收或運行本程式的副本而接受本授權協定。僅僅是因爲點對點傳輸獲取副本引起傳播行爲,也不要求您接受本授權協定。然而,除了本授權外,任何授權協定都不能授予您傳播或修改覆蓋程式的許可。因此,如果您修改或者傳播了本程式的副本,那麽您就默認地接受了本授權。 - - -10.下游接收者的自動授權 - -每次您發佈覆蓋程式,接收者都自動獲得一份來自原授權人的依照本授權協定運行、修改和傳播該程式的授權。依據本授權,您不爲執行任何第三方組織的要求負責。 - -“實體事務”指轉移一個組織的控制權或全部資産,或者拆分組織,或者合併組織的事務。如果覆蓋程式的傳播是實體事務造成的,該事務中每一個接收本程式副本的組織都將獲取一份其前身擁有的或者能夠依據前面的條款提供的任何授權,以及從其前身獲取程式對應的源代碼的權利,如果前身擁有或以合理的努力能夠獲取這些源代碼的話。 - -您不可以對從本授權協定獲取或確認的權利的執行強加任何約束。比如,您不可以要求授權費用,版稅要求或對從本授權獲取的權利的執行收取任何費用。您不可以發起訴訟(包括聯合訴訟和反訴)聲稱由於製作、使用、銷售、批發或者引進本程式或其任何一部分而侵犯了任何專利權。 - - -11.專利權 - -“貢獻者”是在本授權下授予本程式或者本程式所基於的程式的使用權的版權所有者。這樣的程式被成爲貢獻者的“貢獻者版本”。 - -一個貢獻者的“實質的專利申明”是該貢獻者所佔有和控制的全部專利,無論已經獲得的還是在將來獲得的,那些可能受到某種方式侵犯的專利權。本授權允許製作、使用和銷售其貢獻者版本,但不包括那些只會由於對貢獻者版本進一步的修改而受到侵犯的專利的申明。爲此,“控制”一詞包括以同本授權要求一致的方式給予從屬授權的權利。 - -每個貢獻者在該貢獻者的實質的專利申明下授予您非獨家的,全世界的,不需要版稅的專利授權,允許您製作、使用、銷售、批發、進口以及運行、修改和傳播其貢獻者版本內容。 - -在以下三個自然段中,“專利授權”指任何形式表達的不執行專利權的協定或承諾(例如使用專利權的口頭許可,或者不爲侵犯專利而起訴的契約)。向一個組織授予專利授權指做出這樣的不向該組織提出強制執行專利權的承諾。 - -如果您在自己明確知道的情況下發佈基於某個專利授權的覆蓋程式,而這個程式的對應的源代碼並不能在本授權條款下通過網路服務器或其他有效途徑免費地向公衆提供訪問,您必須做到:(1)使對應的源代碼按照上述方法可訪問;或者(2)放棄從該程式的專利授權獲取任何利益;或者(3)以某種與本授權要求一致的方法使該專利授權延伸到下游的接收者。“在自己明確知道的情況下”指您明確地知道除了獲取專利授權外,在某個國家您傳播覆蓋程式的行爲,或者接收者使用覆蓋程式的行爲,會由於該專利授權而侵犯一個或多個在該國可確認的專利權,而這些專利權您有足夠的理由相信它們是有效的。 - -在依照或者涉及某一次事務或安排時,如果您通過獲取發佈或傳播覆蓋程式的傳輸版本,並給予接收該覆蓋程式的某些組織專利授權,允許他們使用,傳播,修改或者發佈該覆蓋程式的特殊版本,那麽您賦予這些組織的專利授權將自動延伸到所有該覆蓋程式及基於該程式的作品的接收者。 - -一份專利授權是“有偏見的”,如果它沒有在自身所覆蓋的範圍內包含,禁止行使,或者要求不執行一個或多個本授權下明確認可的權利。以下情況,您不可以發佈一個覆蓋程式:如果您與軟體發佈行業的第三方組織有協定,而該協定要求您根據該程式的發佈情況向該組織付費,同時該組織在你們的協定中賦予任何從您那裏獲得覆蓋軟體的組織一份有偏見的專利授權,要麽(a)連同您所發佈的副本(或者從這些副本製作的副本);要麽(b)主要爲了並連同某個的産品或者包含該覆蓋程式的聯合體。如果您簽署該協定或獲得該專利授權的日期早於2007年3月28日,那麽您不受本條款約束。 - -本授權的任何部分不會被解釋爲拒絕或者限制任何暗含的授權或其他在適用專利權法下保護您的專利不受侵犯的措施。 - -12.不要放棄別人的自由 - -如果您遇到了與本授權向矛盾的情況(無論是法庭判決,合同或者其他情況),它們不能使您免去本授權的要求。如果您不能同時按照本授權中的義務和其他相關義務來發佈覆蓋程式,那麽您將不能發佈它們。比如,如果您接受了要求您向從您這裏或許本程式的人收取版稅的條款,您唯一能夠同時滿足本授權和那些條款的方法是完全不要發佈本程式。 - -13.和GNU Affero通用公共授權一起使用 - -儘管本協定有其他防備條款,您有權把任何覆蓋程式和基於第三版GNU Affero通用公共授權的程式鏈結起來,並且發佈該聯合程式。本授權的條款仍然對您的覆蓋程式有效,但是GNU Affero通用公共授權第13節關於通過網路交互的要求會對整個聯合體有效。 - -14.本授權的修訂版 - -自由軟體基金會有時候可能會發佈GNU通用軟體授權的修訂版本和/或新版本。這樣的新版本將會和現行版本保持精神上的一致性,但是可能會在細節上有所不同,以處理新的問題和情況。 - -每個版本都有一個單獨的版本號。如果本程式指出了應用於本程式的一個特定的GNU通用公共授權版本號“以及後續版本”,您將擁有選擇該版本或任何由自由軟體基金會發佈的後續版本中的條款和條件的權利。如果本程式沒有指定特定的GNU通用公共授權版本號,那麽您可以選擇任何自由軟體基金會已發佈的版本。 - -如果本程式指出某個代理可以決定將來的GNU通用公共授權是否可以應用於本程式,那麽該代理的接受任何版本的公開稱述都是您選擇該版本應用於本程式的永久認可。 - -後續的授權版本可能會賦予您額外的或者不同的許可。但是,您對後續版本的選擇不會對任何作者和版權所有者強加任何義務。 - - -15.免責申明 - -在適用法律許可下,本授權不對本程式承擔任何擔保責任。除非是書面申明,否則版權所有者和/或提供本程式的第三方組織,“照舊”不承擔任何形式的擔保責任,無論是承諾的還是暗含的,包括但不限於就適售性和爲某個特殊目的的適用性的默認擔保責任。有關本程式質量與效能的全部風險均由您承擔。如本程式被證明有瑕疵,您應承擔所有必要的服務、修復或更正的費用。 - - -16.責任範圍 - -除非受適用法律要求或者書面同意,任何版權所有者,或任何依前述方式修改和/或發佈本程式者,對於您因爲使用或不能使用本程式所造成的一般性、特殊性、意外性或間接性損失,不負任何責任(包括但不限於,資料損失,資料執行不精確,或應由您或第三人承擔的損失,或本程式無法與其他程式運作等),即便該版權所有者或其他組織已經被告知程式有此類損失的可能性也是如此。 - - -17.第15和16節的解釋 - -如果上述免責申明和責任範圍不能按照地方法律條款獲得法律效力,復審法庭應該採用最接近于完全放棄關於本程式的民事責任的法律,除非隨同本程式的責任擔保或責任假設合同是收費的。 - - --條款和條件結束- - -如何在您的新程式中應用這些條款? - -如果您開發了一個新程式,並且希望能夠讓它盡可能地被大衆使用,達成此目的的最好方式就是讓它成爲自由軟體。任何人都能夠依據這些條款對該軟體再次發佈和修改。 - -爲了做到這一點,請將以下聲明附加到程式上。最安全的作法,是將聲明放在每份源碼文件的起始處,以有效傳達無擔保責任的訊息;且每份文件至少應有「版權」列以及本份聲明全文位置的提示。 - - <用一行描述程序的名稱與其用途簡述> - 版權所有(C) <年份><作者姓名> - - 本程式爲自由軟體;您可依據自由軟體基金會所發表的GNU通用公共授權條款,對本程式再次發佈和/或修改;無論您依據的是本授權的第三版,或(您可選的)任一日後發行的版本。 - - 本程式是基於使用目的而加以發佈,然而不負任何擔保責任;亦無對適售性或特定目的適用性所爲的默示性擔保。詳情請參照GNU通用公共授權。 - - 您應已收到附隨於本程式的GNU通用公共授權的副本;如果沒有,請參照 - - . - -同時附上如何以電子及書面信件與您聯繫的資料。 - -如果程式進行終端對話模式運作,請在互動式模式開始時,輸出以下提示: - - <程序> 版權所有(C) <年份> <作者姓名> - - 本程式不負任何擔保責任,欲知詳情請鍵入'show w'。 - - 這是一個自由軟體,歡迎您在特定條件下再發佈本程式;欲知詳情請鍵入'show c'。 - -所假設的指令'show w'與'show c'應顯示通用公共授權的相對應條款。當然,您可以使用'show w'與'show c'以外的指令名稱;對於圖形用戶介面,您可以用“關於”項代實現此功能。 - -如有需要,您還應該取得您的雇主(若您的工作爲程式設計師)或學校就本程式所簽署的“版權放棄承諾書”。欲知這方面的詳情,以及如何應用和遵守GNU通用公共授權,請參考 - - - -GNU通用公共授權並不允許您將本程式合併到私有的程式中。若您的程式是一個子程式庫,您可能認爲允許私有的應用程式鏈結該庫會更有用。如果這是您所想做的,請使用GNU鬆弛通用公共授權代替本授權。但這樣做之前,請閱讀 - - diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_TW-title.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_TW-title.txt deleted file mode 100644 index f831aa025c..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/gpl/gpl-3.0-zh_TW-title.txt +++ /dev/null @@ -1,2 +0,0 @@ -GNU通用公共授權 -第三版 2007年6月29日 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/icons/dcc_nav_systeminfo_42px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/icons/dcc_nav_systeminfo_42px.svg deleted file mode 100644 index 7e82203a84..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/icons/dcc_nav_systeminfo_42px.svg +++ /dev/null @@ -1,59 +0,0 @@ - - - nav/dcc_nav_systeminfo_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/icons/dcc_nav_systeminfo_84px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/icons/dcc_nav_systeminfo_84px.svg deleted file mode 100644 index ac3b34d3f9..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/icons/dcc_nav_systeminfo_84px.svg +++ /dev/null @@ -1,60 +0,0 @@ - - - nav/dcc_nav_systeminfo_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_community_en_US.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_community_en_US.txt deleted file mode 100644 index f8e8e85e9d..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_community_en_US.txt +++ /dev/null @@ -1,244 +0,0 @@ -Deepin OS Privacy Policy - -Latest update date:December 8th, 2020 - -The Privacy Policy sets forth the personal information processed by UnionTech Software as well as its affiliates (including but not limited to Wuhan Deepin Technology Co., Ltd. (hereinafter referred to as “UnionTech Software” or “We”) as well as the way and purpose for processing the personal information. The Privacy Policy applies to the Deepin OS and the related applications (“the software”) that we provides to you, which will be listed and described one by one. - -You can contact us through the following ways: -UnionTech Software Technology Co., Ltd. -[Address] Floor 18, Building 12, Yard 10, Kegu First Street, Beijing Economic and Technological Development Zone, Beijing City, PRC -[Email] support@UnionTech.com -[Tel] 400-8588-488 - -We are deeply aware of the importance of your personal information to you and will try our utmost to maintain the reliability and security of your personal information. We are committed to maintaining your trust in us and will make unremitting efforts to protect your personal information strictly by the following principles: consistency of rights and responsibilities, clear purposes, choice of consent, minimum sufficiency, ensuring safety, subject participation, openness and transparency, etc. In the meantime, we promise to adopt corresponding security protection measures to protect your personal information according to the mature security standard in the industry. -We strive to present the Privacy Policy in a concise, clear and understandable manner. In order to facilitate your reading and understanding, we have defined the special terms about personal information protection. Please go to the “Appendix 1: Definition” in the Privacy Policy for the detailed information about these terms so that you can grasp the information we wish to convene to you accurately. - -The Privacy Policy will help you to understand the following: -I.How we collect and use your personal information -II.How we use Cookies and similar technologies -III.How we share, transfer and disclose to the public your personal information -IV.How we protect your personal information -V.How we store your personal information -VI.Your rights -VII.How we process the minor’s personal information -VIII.How we transfer your personal information globally -IX.How to update the Privacy Policy -X.Our personal information protection department/specialist -XI.Your rights to appeal and sue to the regulatory authority - -Before using our products and services, please read and understand carefully the Privacy Policy, in particular the black and bold part, so that you can better understand our products and services and make an appropriate choice. - -I. How We Collect and Use Your Personal Information -When you use the software products and services, your relevant personal information will be recorded and stored automatically in your local devices, including: -Network Identification Information -e.g. your IP address, MAC address, etc.; -Device Information -Including your device motherboard information, BIOS information, CPU information, memory information, hard disk information, partition information, network card information, etc.; -Operation System Information -Including the operation system software version, the latest update date of the system, system language, system sound effects, power supply, mouse, system theme, wallpaper, launcher, dock, configuration information for hot corners, daily login times and source for each download; -Application Software Information -For example, the version, installation location, start and exist time of your applications installed in the system. - -1.Personal Information You Voluntarily Authorize Us to Collect -Only when you actively enable the corresponding business feature, can information of this kind be transmitted through the server to UnionTech Software for processing. Your refusal to enable such features or provide corresponding personal information to UnionTech Software will not affect your normal use of the software. Such business features include: -1.1User Experience Program -If you enable the “User Experience Program”, we are authorized to read, record and store the information in your local devices. We will stop collecting such information after “User Experience Program” being disabled by you, including: -1.1.1.Device and System Information -The device information includes your device motherboard information, BIOS information, CPU information, memory information, hard disk information, partition information, network card information, etc. The system information includes the system software version, the latest update date of the system, system language, daily active users, source for each download and the operation system performance information during runtime. -1.1.2.Application Software Information -For example, the version, installation location, start and exist time of your applications installed in the system and the performance information during runtime. -1.1.3.Exception Information -The exception information of the operation system and/or the application during runtime. -1.2Deepin ID Service -You can register your Deepin ID in www.deepin.com and log into the software or the products provided by our partners. You can make synchronization of the software configuration and application software of the software between different devices after login. However, such synchronization will be expired after the Deepin ID service being disabled by you. -1.2.1.Deepin ID Registration -To realize the service feature and meet the relevant regulatory requirement in the P.R.C, personal mobile number is needed to complete the Deepin ID registration. Due to the regulatory requirements of the P.R.C, it will be unavailable for us to provide you with Deepin ID services if you refuse to provide your mobile number. If you are located outside the P.R.C, you need to provide your personal email address to complete the Deepin ID registration. -1.2.2.System Configuration Synchronization Service -You can log into the Deepin ID through the cloud synchronization module of the software control center and authorize to enable the "cloud synchronization" service to synchronize the software configuration between different devices under the same Deepin ID. For this synchronization purpose, the cloud synchronization service will read your device information and system information. Your refusal to provide the foregoing information will not affect the normal operation of other services in the software. -1.2.3.Application Software Synchronization Service -You can log into the Deepin ID through the cloud synchronization module of the software control center to synchronize the software application software between different devices under the same Deepin ID. For this synchronization purpose, the application software synchronization service will read your application software information, application software purchase information (including your real-name authentication information and bank account information necessary to complete the payment), history application review data and history reward data. Your refusal to provide the foregoing information will not affect the normal operation of other services in the software. -1.2.4.Browser Service -When you browse and visit the website and platform we provide with the pre-installed browser of the software, we will collect through cookies and other similar technologies your device information, system information and browsing information (including your browser version information, favorites information, browsed website records, browser settings, auto-populated data (we will save your user account and password filling record when permitted.) as well as your IP address. Please refer to [Part II] “How We Use Cookies and Similar Technologies” for details. -1.2.5.Application Store Service -We will collect your device information, system information and application information when you download, install and uninstall applications with the pre-installed application store of the software. You can comment on and/or rate the applications in the application store after login with your Deepin ID. The comments and/or rating information will be stored in association with your Deepin ID. - -2.Collecting Your Personal Information Automatically When You Use software Products and Services -When you use some features of the software products and services, we will automatically collect the relevant information, which may include your personal information. Such features include: -2.1.Desktop AI Assistant/Voice Notepad -The desktop AI assistant service is integrated into the software and co-provided by our partners and us. When you input texts via the desktop AI assistant or use the voice notepad feature, our partner will directly collect your voice content to conduct technical analysis and convert it to texts. As for the detailed description for the information shared to the partners, please refer to [Part III] “How We Share, Transfer and Disclose Your Personal Information” in Privacy Policy in detail. -2.2.System Upgrade -When you upgrade the Deepin OS products and services, we will collect your device ID, system mainline version, system version number and other information for us to clarify your system information, so as to help you update accurately. The collected information will be anonymized. - -3.Conducting Internal Audit, Big Data Analysis and Research -3.1.We will conduct necessary internal audit with the personal information collected within UnionTech Software. -3.2.We will use the personal information collected for big data analysis. For example, the collected information will be used to analyze and form statistical products excluding personal information, display the overall picture of UnionTech Software services, analyze the behavior patterns of different groups, etc. We may disclose to the public or share with our affiliates and partners the processed statistical big data information without identification. - -4.Safety and Security -We will use your personal information for purposes such as ensuring the security of your personal devices and accounts, the security of our operation as well as fulfilling our legal obligations (for example, saving the information that may involve illegal and criminal activities). - -5.Other Usage -5.1.We will seek your explicit consent in advance when using the information collected for a specific purpose for other purposes. -5.2.However, in accordance with the relevant laws and regulations as well as the national standards, we may collect and use your personal information without seeking your authorization and consent under the following circumstances: -5.2.1.personal information directly related to national security, national defence security and other national interests; personal information directly related to public safety, public health, public information and other major public interests; -5.2.2.personal information directly related to crime investigation, prosecution, trial and judgement execution, etc.; -5.2.3.for the purpose of protecting your and other individual’s important legal rights and interests such as life, property, reputation, etc. but difficult to get the person’s consent; -5.2.4.personal information collected that is disclosed to the public by yourself; -5.2.5.personal information collected from legally and publicly disclosed information, such as legal news report, government information disclosure, etc.; -5.2.6.personal information needed to sign and fulfil a contract at your request; -5.2.7.personal information needed for maintaining the safe and stable operation of the products and services provided, for example, finding and handling the faults of products and services; -5.2.8.personal information needed for legal news reporting; -5.2.9.personal information which is needed for conducting statistical and academic research in public interests but de-identified in the academic research results or its description results offered to the outside world; -5.2.10.other circumstances under the provisions of laws and regulations. - -II.How to Use Cookies and Similar Technologies - -6.Cookie -6.1.We will store on your computer or mobile device a small text file called Cookie, which usually contains the identifier, website name, some numbers and characters. With the assistance of Cookies, we can store your preferences in our web servers and provide you more personalized user experience and services. -6.1.1.We will not use Cookies for other purposes except for those described in this Privacy Policy. You can choose to manage or delete Cookies according to your preference. Please refer to AboutCookies.org for details. -6.1.2.You can clear all the Cookies saved on your computer. Most web browsers have the Cookie blocking feature and you can learn and set it in your browser settings. - -7.Do Not Track -Many web browsers have a Do Not Track feature that may send Do Not Track requests to websites. At present, major Internet standards organizations have not yet established policies to regulate how websites should respond to such requests. But if your browser has Do Not Track enabled, your choice will be respected in all of our sites. - -III.How We Share, Transfer and Disclose to the Public Your Personal Information - -1.Sharing -1.1.We will not share your personal information with any company, organization or individual other than UnionTech Software except for the flowing circumstances: -1.1.1.Sharing with explicit consent: We will share with others your personal information after obtaining your explicit consent. -1.1.2.We may share your personal information externally in accordance with the laws and regulations or the mandatory request of the government authorities. -1.1.3.Sharing with authorized partners: For the purpose of the Privacy Policy statement only, some of our services are jointly provided by our authorized partners. We may share with the partners some of your personal information in order to provide better custom services and user experiences. We will share your personal information necessary for providing services only for the legal, proper, necessary, specific and clear purposes. Our partners are not authorized to use the shared information for other purposes. For the company, organization or individual that we share information with, we will sign a strict confidentiality agreement demanding them to deal with the personal information according to our instructions, the Privacy Policy as well as other related confidentiality and security measures. -Please refer to the below for the detailed information of authorized partner sharing: -Cooperation Type: Voice service -Partner Name: IFLYTEK CO., LTD. -Cooperation Purpose: Speech content text conversion technology -Cooperation Mode: Transmitting the personal information by embedding third-party codes and plugins. -Shared Personal Information Field: Voice information content -Partner Data Security Capacity Description: National Information Security Level Protection Level 3 Certification -1.1.4.It should be specially noted that when related service providers provide services to you through third-party access such as page jumps to service provider pages, the corresponding service provider will directly reach the corresponding personal information authorization license with you and such information directly collected by the service provider is not within the scope of the information we share with them. In the case where the service is provided directly by a third party, we will clearly identify the third party information on the specific service page. To avoid ambiguity, you should be aware of and understand that the aforementioned links to websites, applications, products and services operated by independent third parties are provided only for the convenience of users to browse relevant pages. When you visit such third-party websites, applications, products and services, you should agree separately to the privacy policy and personal information protection clauses provided for you. We and such third-party websites, applications, products and services providers will assume independent personal information protection responsibilities respectively to you within the scope stipulated by law and agreed by both parties. - -2.Transfer -We will not transfer your personal information to any company, organization or individual except for the following circumstances: -2.1.Having obtained your explicit authorization and consent in advance; -2.2.When it comes to merger, acquisition or bankruptcy liquidation, if it involves personal information transfer, we will require the new company and organization holding your personal information continue to be bound by the Privacy Policy. Otherwise we will demand the company and organization to seek your authorization and consent again. - -3.Public Disclosure -We will disclose your personal information publicly only under the following circumstances and under the premise of adopting the security protection measures that conform to the industry standard: -3.1.Disclosing the specified personal information in the manner you explicitly consent according to your needs; -3.2.Where it is necessary to provide your personal information in accordance with the requirements of laws, regulations, mandatory administrative enforcement or judicial requirements, we may publicly disclose your personal information in accordance with the type of personal information and the manner of disclosure required. Subject to laws and regulations, when we receive the above request for information disclosure, we will require the corresponding legal documents, such as subpoenas or investigation letters. We firmly believe that the information we are required to provide should be as transparent as possible to the extent permitted by law. All requests are carefully reviewed to ensure that they have a legitimate basis and are limited to data obtained by law enforcement agencies for specific investigative purposes and with legal rights. To the extent permitted by laws and regulations, the files we disclose are protected by encryption keys. - -IV.How We Protect Your Personal Information - -1.Various security technologies and protective measures meeting the industry standard have been adopted in the website to prevent the personal information of users from unauthorized access, use or leakage. This website strictly complies with domestic and foreign security standards to build a security system and integrates cutting-edge and mainstream security technologies to prevent users' personal information from being accessed, used and leaked without authorization. The sound security protection system established makes it available to intercept the attack timely and actively when the website encounters external network attack and virus infection. Each application platform of this website uses the HTTPS encryption protocol for transmission during the network communication, which can effectively prevent the information from being stolen by third parties during the communication between the user and the platform. The user's privacy and sensitive data is stored in an encrypted manner and is backed up in real time in the website. - -2.A sound data security management system has been established in this website, including grading and classification of user information, encrypted storage as well as division of data access rights. Internal data management system and operation procedure haven been formulated in which the strict process requirements for data acquisition, use and destruction prevent the user information from being illegally used. Here are the details: defining the security management responsibility for each department and responsible personnel accessing the personal information of users; formulating the workflow and security management process for personal information collection and use and related activities of users; implementing authority management for staff and agents, reviewing the information exported, copied and destroyed in batch and adopting anti-leakage measures; properly keeping the paper media, optical media and electromagnetic media and other carriers that record the personal information of users and adopting corresponding security storage measures; implementing access review for the information system that stores personal information of users and adopting anti-intrusion and anti-virus measures, etc.; recording the processing information for the personal information of users, such as operation staff, time, place and events; holding security and privacy training periodically to raise the staff’s awareness of information protection. - -3.We will adopt all reasonable and feasible measures to ensure that irrelevant personal information is not collected. Unless permitted by law or the retention period needs to extend, we will only retain your personal information for the period needed to achieve the purposes in this Privacy Policy. - -4.We will regularly update and disclose the relevant contents of reports such as security risks and personal information security impact assessments in accordance with the laws and regulations and the requirements of competent authorities. - -5.The Internet environment is not 100% secure and we will try our utmost to ensure or guarantee the security of any information you send us. If our physical, technical, or management protection facilities are damaged, resulting in unauthorized access, public disclosure, tampering or destruction of information, resulting in damage to your legitimate rights and interests, we will assume corresponding legal responsibility. - -6.In the unfortunate event of a personal information security incident, we will promptly inform you of the basic situation and possible impact of the security incident, the emergency response taken or to be taken, other relevant disposal measures, remedies for you, etc. in accordance with the laws and regulations, through the station letter/the contact information you reserve, etc. in a timely manner. If it is difficult to notify the individual information subjects one by one, we will take a reasonable and effective way to issue an announcement and will actively report the disposition of personal information security incidents to the relevant regulatory authorities. - -7.If you have any questions about the protection of our personal information, you can contact us through the contact information in [Part X] of this Policy. If you find that your personal information has been leaked, please contact us immediately through the contact methods stipulated in this policy so that we can take appropriate measures in a timely manner. -V.How We Store Your Personal Information -We will adopt all reasonable and feasible measures to ensure that irrelevant personal information is not collected. We will store your personal information within the scope permitted by the laws and regulations and within the scope agreed by you. As for the information storage time exceeding the scope permitted by law, we delete or anonymize it. -If there is no other agreement, you commit that we can permanently store your personal information collected based on the “User Experience Program” to maintain and improve the stability and security of our services. Meanwhile, you agree that after disabling your Deepin ID account, we have the right to keep your purchase, comment and rating records in the Application Store generated during your use of Deepin ID till the expiration period of three years due to the transaction security requirements. The remaining personal information of the Deepin ID account will be deleted in time after you disable your account. - -VI.Your Rights -We will try our utmost to adopt appropriate technical measures to ensure that you can access, update and correct your registration information or other personal information provided when using the website services. - -1.Accessing Your Personal Information -Unless otherwise provided by the laws and regulations, you have the right to access your personal information. You can access your information yourself by: -1.1.Account Information/Basic User Information: If you want to access or edit basic personal information in your Deepin ID, such as mobile phone number, email address, gender, education information, career information or other personal information, you can log into the Deepin ID registration website and perform such operations in “[User Center]”. -1.2.Transaction Information: If you expect to access your history reward records, you can inquire your purchase records and other information related to application purchase in “Personal Center” in Application Store. -1.3.If you cannot access your personal information through the methods aforementioned, you can contact us at any time via the contact information described in [Part X] and we will respond to your access request within [15] days. -1.4.As for the personal information generated during your use of our products and services, we will provide it according to relevant arrangement in item (7) “Responding to Your Requests Aforementioned” of this part. - -2.Correcting Inaccurate or incomplete Personal Information -2.1.You can correct or supplement some of your personal information yourself in your [Personal Center]. In particular, please pay attention to verifying the authenticity, timeliness, completeness and accuracy of the personal information submitted, otherwise we will not be able to contact you effectively and provide you with some services. If we have reasonable grounds to suspect that your information provided is incorrect, incomplete or untrue, we have the right to ask you or notify you to correct it or even suspend or terminate some of the services provided to you. -2.2.Some special information may not be corrected by yourself. You can contact us through the contact information published in [Part X] of this Policy. We will respond to your access request within [15] days. To ensure the security of your account, we may require you to verify your identity. - -3.Revoking Consent or Processing Restrictions -3.1.You can change the scope of your personal information that you authorize us to collect and use by deleting information, turning off features of the device/tool or performing other feasible privacy settings (depending on the system version). -3.2.If you are unable to revoke your authorized consent through the methods aforementioned, you can contact us at any time via the contact information in [Part X] and explain which consent you expect to revoke to perform such operations. We will respond to your access request within [15] days. -3.3.When you revoke your consent, we will no longer process your corresponding personal information. However, your decision to revoke your consent will not affect the legality of the processing of personal information previously based on your authorization. - -4.Deleting Personal Information -4.1.You can raise your request to delete your personal information from the website under the following circumstances: -4.1.1.Our processing of personal information is inconsistent with the laws and regulations or the agreement with you; -4.1.2.Our collection and use of your personal information without your explicit consent; -4.1.3.We terminate to provide or you terminate actively the product and service of this website. -4.2.If we decide to respond to your request for deletion, we will also notify the third parties (including affiliates of this website) who have obtained your personal information from us at the same time and ask these third parties to delete your personal information in a timely manner, unless otherwise provided by the laws and regulations or such third parties have obtained your independent authorization. -4.3.We may not delete the corresponding information from our backup system after you delete your personal information from the website but will delete it when the backup is updated. -4.4.If you are unable to delete such personal information through the above path, you can contact us at any time through the customer service of this website. To ensure the security of your account, we may require you to verify your identity. - -5.Canceling Accounts -5.1.Deepin ID supports account cancellation. You can cancel it yourself by accessing [Account Information in Personal Center] or contact us to cancel your Deepin ID through the contact information published in [Part X] of this Policy. To ensure the security of your account, we may require you to verify your identity. -5.2.After canceling your account, we will terminate the services provided for you and delete your personal information at your request within the time limit stipulated by law unless otherwise provided by the laws and regulations or agreed between us. - -6.Obtaining the Copy of Personal Information -6.1.You have the right to send a written request to obtain your copy of personal information through the contact information published in the Policy. -6.2.As long as the technology is feasible, such as data interface matching, we can also directly transfer a copy of your personal information to your designated third party according to your requirements and existing common technologies. If the transmission fails due to the third-party’s refusal to receive a copy of your personal information, you should coordinate with these third parties to resolve it by yourself and we will not be responsible for it. - -7.Responding to Your Requests Aforementioned -7.1.To ensure the security of your account, you may need to offer a written request or otherwise verify your identity. We may demand you to verify your identity before processing your request. -7.2.We will respond within [15] days. If you are not satisfied, you can complain through the channels in [Part X] of this Policy. -7.3.For your reasonable request, we do not charge fees in principle, but for repeated requests that exceed a reasonable limit, we will charge a certain cost as appropriate. For those that are unreasonably repetitive, requiring excessive technical means (for example, needing to develop new systems or fundamentally changing existing practices), posing risks to the legitimate rights and interests of others or highly impractical (for example, involving information stored on backup tapes), we may reject them. -7.4.Subject to the laws and regulations, we will be unable to respond to your request under the following circumstances: -7.4.1.Directly related to national security and national defence security; -7.4.2.Directly related to public safety, public health and major public interests; -7.4.3.Directly related to crime investigation, prosecution, trial and judgment enforcement; -7.4.4.Having sufficient evidence to prove that you use your rights subjectively, maliciously and abusively; -7.4.5.Responding to your request will result in severe damage to your, other people or organization’s legitimate rights and interests; -7.4.6.Involving trade secrets; -7.4.7.Other circumstances stipulated by law. - -VII.How we Process the Minor’s Personal Information - -1.Our products and services are only available to users over 14 years old. If you are under 14 years, you should provide your legal guardian's contact information (such as email address and phone number). We will contact your legal guardian through the contact information and take reasonable steps to obtain the express authorization and consent of your legal guardian; you should clearly understand that if we discover or suspect that you are under the age of 14, we can suspend or terminate the service to you at any time until you provide us with proof that you are over 14 years old, or assist us in obtaining express authorization and consent from your legal guardian. - -2.For the collection of the minor's personal information with the consent of the legal guardian, including the legal guardian's insurance for minors, etc., we will only use or publicly disclose this information when it is permitted by law, expressly agreed by the legal guardian or necessary for the protection of minors. - -3.If we find that we have collected the personal information from a minor without the prior consent of a verifiable parent or other legal guardian, we will try to delete the data as soon as possible. - -VIII.How We Transfer Your Personal Information Globally - -1.We will store personal information collected in each country/region in accordance with the laws and regulations of each country/region. - -2.We will store personal information collected in China in accordance with Chinese laws and regulations. - -3.We reserve the right to transfer your personal information to other government jurisdictions. Your consent to this Privacy Policy and such data you submit or we collect represent your consent to any such transfer. In this case, we will transfer your personal information and provide adequate protection in accordance with the relevant laws and regulations and this Privacy Policy. - -IX.How to Update the Privacy Policy - -1.Our privacy policy may change. We will not reduce your rights under the Privacy Policy without your explicit consent. We will release an updated version of the Privacy Policy. - -2.For significant changes, we will also provide more prominent notices (including sending notifications via email for some services and explaining the specific changes to the Privacy Policy). - -3.Significant changes in Privacy Policy include but not limited to: -3.1.Significant changes in our products and service modes, including the purpose of processing the personal information, the type of the personal information processed, the way in which the personal information is used, etc.; -3.2.Significant changes in ownership structure, organization structure, etc., such as changes caused by business adjustments, bankruptcy, merger and acquisition; -3.3.Changes in the main object of personal information sharing, transfer or disclosure; -3.4.Significant changes in your right to participate in the processing of personal information and how you exercise it; -3.5.Changes in our responsible department for processing personal information security, contact methods and complaint channels; -3.6.Existence of high risks indicated by an impact assessment report on personal data security. - -X.Our Personal Information Protection Department/Specialist - -1.We have appointed a personal information protection organization to be responsible for coordinating and monitoring UnionTech Software in compliance with and implementation of the laws and regulations and internal policies and systems related to the protection of personal information. - -2.If you have any questions, comments or suggestions about this Privacy Policy, you can contact us through the following methods. In general, we will reply within 30 days or a longer period allowed by applicable laws and regulations. -Personal information protection department/specialist: [Legal Affairs Department] -Address: [Floor 18, Building 12, Yard 10, Kegu First Street, Beijing Economic and Technological Development Zone, Beijing City, PRC] -Tel: [010-62669253] -Email: [privacy@UnionTech.com] - -XI.Complaining and Suing to the Regulatory Department -If you are dissatisfied with our response, especially when you believe that our personal information processing actions have harmed your legitimate rights and interests and no agreement can be reached through negotiation, you have the right to lodge a complaint with the relevant personal information protection supervision authority or either party can bring a law suit to the People's Court located in [Daxing District, Beijing]. - -Appendix 1: Definition -Personal Information -Personal information refers to all kinds of information recorded electronically or otherwise that can identify the identity of a specific natural person or reflect the activity of a specific natural person either alone or in combination with other information, including but not limited to the name, date of birth, identification number, personal biometric information, address, and telephone number of a natural person. -Personal Sensitive Information -Personal sensitive information refers to the personal information that, if leaked, illegally provided or abused, may endanger personal and property safety and easily lead to damage to personal reputation, physical and mental health, or discriminatory treatment. For example, personal sensitive information includes personal phone numbers, ID numbers, web browsing records, personal biometric information, bank account numbers, communication records and content, property information, credit information, whereabouts, accommodation information, precise positioning information, physiological health Information, transaction information, personal information of minors under 14 years old (including minors of 14 years old), etc. diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_community_zh_CN.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_community_zh_CN.txt deleted file mode 100644 index e281d820c2..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_community_zh_CN.txt +++ /dev/null @@ -1,240 +0,0 @@ -深度操作系统隐私政策 - -最近更新日期:2020年【12】月【08】日。 - -本隐私政策阐述了统信软件技术有限公司及其关联公司(特别是武汉深之度科技有限公司)(以下简称“统信软件”或者“我们”)处理的个人信息以及我们处理个人数据的方式和目的。本隐私政策适用范围包括我们向您提供的深度操作系统及相关应用程序(以下简称为“本软件”),我们会在本隐私政策中逐一列举说明。 - -您可以通过以下方式与我们取得联系: - -统信软件技术有限公司 -【地址】北京市北京经济技术开发区科谷一街10号院12号楼18层 -【邮件】support@uniontech.com -【电话】400-8588-488 - -我们深知个人信息对您的重要性,并会尽全力保护您的个人信息安全可靠。我们致力于维持您对我们的信任,恪守以下原则,保护您的个人信息:权责一致原则、目的明确原则、选择同意原则、最少够用原则、确保安全原则、主体参与原则、公开透明原则等。同时,统信软件承诺,我们将按业界成熟的安全标准,采取相应的安全保护措施来保护您的个人信息。 - -我们努力以简明、清晰、易于理解的方式展现本隐私政策。为了便于您阅读及理解,我们将涉及个人信息保护的专门术语进行了定义,请前往本隐私政策“附录1:定义”来了解这些术语的具体内容,以便您准确掌握我们希望向您表达的信息。 - -本政策将帮助您了解以下内容: -一、我们如何收集和使用您的个人信息 -二、我们如何使用 Cookie 和同类技术 -三、我们如何共享、转让、公开披露您的个人信息 -四、我们如何保护您的个人信息 -五、我们如何存储您的个人信息 -六、您的权利 -七、我们如何处理未成年人的个人信息 -八、您的个人信息如何在全球范围转移 -九、本政策如何更新 -十、我们的个人信息保护部门/专员 -十一、您向监管部门申诉或者提起诉讼的权利 - -请在使用我们的产品或服务前,仔细阅读并了解本隐私政策,尤其是加黑加粗部分,以便您更好地了解我们提供的各项产品及服务,并作出适当的选择。 - -一、我们如何收集和使用您的个人信息 -当您使用本软件产品及服务时,相关个人信息将自动记录并存储于您的本地设备中。此类信息包括: -●网络标识信息 -例如您的IP地址,MAC地址等 -●设备信息 -包括您的设备主板信息、BIOS信息、CPU信息、内存信息、硬盘信息、分区信息、网卡信息等; -●操作系统信息 -包括操作系统软件版本、系统最后一次更新时间、系统语言、系统音效、电源、鼠标、系统主题、壁纸、启动器、任务栏、热区的配置信息、每日登录系统的次数、每次下载使用源信息。 -●应用软件信息 -例如您安装在系统内的各应用版本、安装位置、各应用启动/退出时间信息。 - -1.您主动授权我们收集的个人信息 -仅当您主动开启相应业务功能时,该类信息才会通过服务器传输到统信软件处理。您拒绝开启此类业务功能或向统信软件提供相应个人信息不会影响您使用本软件产品。此类业务功能包括: -1.1.用户体验计划 -若您开启“用户体验计划”,则您将授权我们读取记录并存储在您的本地设备中的相关信息。您关闭“用户体验计划”后我们将停止收集此类信息。该类信息包括: -1.1.1.设备及系统信息 -设备信息包括您的设备主板信息、BIOS信息、CPU信息、内存信息、硬盘信息、分区信息、网卡信息等;系统信息包括系统软件版本、系统最后一次更新时间、系统语言、日活用户、每次下载使用源信息;运行期间的操作系统性能信息。 -1.1.2.应用软件信息 -例如您安装在系统内的各应用版本、安装位置、各应用启动/退出时间信息,应用运行期间的性能信息。 -1.1.3 异常信息 -在操作系统运行期间发生异常和/或应用运行期间发生异常时的运行信息。 -1.2.Deepin ID服务 -您可以通过我们的网站(www.deepin.com)注册Deepin ID并登录到本软件或我们的合作伙伴提供的产品。在本软件中登录账户后,您可以在不同设备之间实现本软件的系统配置和应用软件同步。您关闭Deepin ID服务后,您的系统配置和应用软件将不能再继续在各设备之间同步。 -1.2.1.Deepin ID注册 -为实现本服务功能并符合中华人民共和国相关监管要求,您需要提供个人手机号码以完成Deepin ID注册。受限于中华人民共和国监管要求,若您拒绝提供手机号码,我们将无法向您提供Deepin ID服务。若您位于中华人民共和国以外的其他地区,您需要提供个人邮箱地址以完成Deepin ID注册。 -1.2.2.系统配置同步服务 -若您通过本软件控制中心的云同步模块登录Deepin ID并授权开启“云同步”开关,以实现您在使用同一Deepin ID下不同设备间的配置同步。出于该同步目的,云同步服务将会读取您的设备信息和系统信息。您拒绝提供前述信息不会导致本软件其他服务的正常提供。 -1.2.3.应用软件同步服务 -您可以通过本软件控制中心的云同步模块登录Deepin ID,以实现同一Deepin ID下不同设备间的本软件应用软件同步。出于该同步目的,应用软件同步服务将会读取您的应用软件信息、应用软件购买信息(包括您为完成支付所必须的实名认证信息和银行账户信息)、历史应用评论数据、历史打赏数据。您拒绝提供前述信息不会导致本软件其他服务的正常提供。 -1.2.4.浏览器服务 -若您使用本软件预装的浏览器并访问和浏览我们提供的网站或平台时,我们会通过cookie或其他技术方式收集您的设备信息、系统信息和浏览信息(包括您使用浏览器的版本信息、收藏夹信息、网页浏览记录、浏览器设置、自动填充数据(在您的许可下,我们将保存您的用户名和登录密码的填充记录)及您的IP地址,详见【第二部分】“我们如何使用 Cookie 和同类技术”。 -1.2.5. 应用商店服务 -若您使用本软件预装的应用商店来下载、安装和卸载应用软件时,我们会收集您的设备信息、系统信息和应用软件信息。您在登录了Deepin ID之后可以对应用商店中的应用进行评价和/或评分,该评价和/或评分信息会和您Deepin ID一起关联存储。 - -2.在您使用本软件产品及服务时我们自动收集的您的个人信息 -在您使用本软件产品及服务的部分功能,我们将自动收集相关信息,该等信息中可能包括您的个人信息。此类功能包括: -2.1.桌面智能助手/语音记事本 -桌面智能助手服务集成于本软件中,由我们联合我们的合作方向您提供。当您使用桌面智能助手通过语音输入文字,或使用语音记事本功能时,我们的合作方将会直接收集该等语音内容用以进行技术分析并转化为文字。有关此类信息共享至合作方的详细说明,详见本隐私政策【第三部分】“我们如何共享、转让、公开披露您的个人信息”的说明。 -2.2.系统更新 -当您升级本软件产品及服务时,我们将会收集您的设备ID、系统主线版本、系统版本号等信息,供我们明确您的系统信息从而帮助您准确更新。该等收集的信息均会进行匿名化处理。 - -3.开展内部审计、大数据分析和研究 -3.1.我们将使用收集的个人信息在统信软件内部进行必要的内部审计。 -3.2.我们会将所收集到的个人信息用于大数据分析。例如,我们将收集到的信息用于分析形成不包含任何个人信息的统计类产品,展示统信软件服务的整体全貌,分析不同群体的行为模式等。我们可能对外公开并与我们的关联方和合作伙伴分享经统计加工后不含身份识别内容的大数据分析信息。 - -4.安全保障 -我们还会将您的个人信息用于保障您的个人设备安全、账户安全、我们的运营安全及履行我们的法律义务(例如留存可能涉及违法犯罪活动信息)等用途。 - -5.其他使用 -5.1.当我们要将基于特定目的收集而来的信息用于其他目的时,会事先征求您的明确同意。 -5.2.但是,根据相关法律法规及国家标准,以下情形中,我们可能会收集、使用您的相关个人信息无需征求您的授权同意: -5.2.1.与国家安全、国防安全等国家利益直接相关的;与公共安全、公共卫生、公众知情等重大公共利益直接相关的; -5.2.2.与犯罪侦查、起诉、审判和判决执行等直接相关的; -5.2.3.出于维护您或其他个人的生命、财产、声誉等重大合法权益但又很难得到本人同意的; -5.2.4.所收集的个人信息是您自行向社会公众公开的; -5.2.5.从合法公开披露的信息中收集个人信息的,如合法的新闻报道、政府信息公开等渠道; -5.2.6.根据您要求签订和履行合同所必需的; -5.2.7.用于维护所提供的产品或服务的安全稳定运行所必需的,例如发现、处置产品或服务的故障; -5.2.8.为开展合法的新闻报道所必需的; -5.2.9.出于公共利益开展统计或学术研究所必要,且其对外提供学术研究或描述的结果时,对结果中所包含的个人信息进行去标识化处理的; -5.2.10.法律法规规定的其他情形。 - -二、我们如何使用 Cookie 和同类技术 - -1.Cookie -1.1.我们会在您的计算机或移动设备上存储称为 Cookie 的小文本文件。Cookie 通常包含标识符、站点名称以及一些号码和字符。借助于 Cookie,我们的网络服务器能够存储您的偏好,为您提供更个性化的用户体验和服务。 -1.1.1.我们不会将 Cookie 用于本政策所述目的之外的任何用途。您可根据自己的偏好管理或删除 Cookie。有关详情,请参见 AboutCookies.org。 -1.1.2.您可以清除计算机上保存的所有 Cookie,大部分网络浏览器都设有阻止 Cookie 的功能,您可在您使用的浏览器设置中了解和设置。 - -2.Do Not Track(请勿追踪) -很多网络浏览器均设有Do Not Track功能,该功能可向网站发布 Do Not Track 请求。目前,主要互联网标准组织尚未设立相关政策来规定网站应如何应对此类请求。但如果您的浏览器启用了Do Not Track,那么我们的所有网站都会尊重您的选择。 - -三、我们如何共享、转让、公开披露您的个人信息 - -1.共享 -1.1.我们不会与统信软件以外的任何公司、组织和个人分享您的个人信息,但以下情况除外: -1.1.1.在获取明确同意的情况下共享:获得您的明确同意后,我们会与其他方共享您的个人信息。 -1.1.2.我们可能会根据法律法规规定,或按政府主管部门的强制性要求,对外共享您的个人信息。 -1.1.3.与授权合作伙伴共享:仅为实现本隐私政策声明的目的,我们的某些服务将由我们授权合作伙伴共同提供。我们可能会与合作伙伴共享您的某些个人信息,以提供更好的客户服务和用户体验。我们仅会出于合法、正当、必要、特定、明确的目的共享您的个人信息,并且只会共享提供服务所必要的个人信息。我们的合作伙伴无权将共享的个人信息用于任何其他用途。对我们与之共享个人信息的公司、组织和个人,我们会与其签署严格的保密协定,要求他们按照我们的说明、本隐私政策以及其他任何相关的保密和安全措施来处理个人信息。 -授权合作伙伴共享的具体情况,请参见如下: - -语音服务 -合作伙伴名称:科大讯飞股份有限公司 -合作目的:语音内容文本转化技术 -合作方式:嵌入第三方代码、插件传输个人信息 -共享个人信息字段:语音信息内容 -合作伙伴数据安全能力描述:国家信息安全等级保护三级认证 -1.1.4.需要特别提请您注意的是,当相关服务提供商以页面跳转至服务商页面等第三方接入的方式向您提供服务时,相应的服务提供商将直接与您达成相应的个人信息授权使用许可,该等由服务提供商直接收集的个人信息并非我们向其共享的个人信息范围。该等由第三方直接提供服务的情形我们将会在具体服务页面中明确标识第三方信息。为避免歧义,您应知悉并了解,前述由独立第三方运营的网站、应用程序、产品和服务的链接,仅为方便用户浏览相关页面而提供。当您访问该等第三方网站、应用程序、产品和服务链接时,应另行同意其为您提供的隐私政策或个人信息保护条款。我们与该等第三方网站、应用程序、产品和服务提供者在法律规定和双方约定的范围内各自向您承担独立的个人信息保护责任。 - -2.转让 -我们不会将您的个人信息转让给任何公司、组织和个人,但以下情况除外: -2.1.事先获取您明确的授权同意; -2.2.在涉及合并、收购或破产清算时,如涉及到个人信息转让,我们会在要求新的持有您个人信息的公司、组织继续受此隐私政策的约束,否则我们将要求该公司、组织重新向您征求授权同意。 - -3.公开披露 -我们仅会在以下情况下,且采取符合业界标准的安全防护措施的前提下,公开披露您的个人信息: -3.1.根据您的需求,在您明确同意的披露方式下披露您所指定的个人信息; -3.2.根据法律、法规的要求、强制性的行政执法或司法要求所必须提供您个人信息的情况下,我们可能会依据所要求的个人信息类型和披露方式公开披露您的个人信息。在符合法律法规的前提下,当我们收到上述披露信息的请求时,我们会要求必须出具与之相应的法律文件,如传票或调查函。我们坚信,对于要求我们提供的信息,应该在法律允许的范围内尽可能保持透明。我们对所有的请求都进行了慎重的审查,以确保其具备合法依据,且仅限于执法部门因特定调查目的且有合法权利获取的数据。在法律法规许可的前提下,我们披露的文件均在加密密钥的保护之下。 - -四、我们如何保护您的个人信息 - -1.本网站已采用符合业界标准的各种安全技术和防护措施保护用户的个人信息不被未经授权地访问、使用或泄漏。本网站严格遵循国内外的安全标准进行安全体系搭建,并结合前沿、主流的安全技术进行落地,防止用户的个人信息在未经授权时被访问、使用、泄露。建立了完善的安全防御体系,当网站受到外部的网络攻击、病毒感染时,能对攻击行为进行及时主动拦截。本网站各应用平台均在网络通信过程中采用HTTPS加密协议传输,能够有效避免用户与平台通信过程中信息被第三方窃取。涉及到用户的隐私、敏感数据,在本网站系统中都采用加密的方式进行保存,并实时进行数据备份。 - -2.本网站已经建立了健全的数据安全管理体系,包括对用户信息进行分级分类、加密保存、数据访问权限划分。制定了内部数据管理制度和操作规程,从数据的获取、使用、销毁都有严格的流程要求,避免用户隐私数据被非法使用。确定接触用户个人信息的各部门及其负责人安全管理责任;建立用户个人信息收集、使用及其相关活动的工作流程和安全管理制度;对工作人员及代理人实行权限管理,对批量导出、复制、销毁信息实行审查,并采取防泄密措施;妥善保管记录用户个人信息的纸介质、光介质、电磁介质等载体,并采取相应的安全储存措施;对储存用户个人信息的信息系统实行接入审查,并采取防入侵、防病毒等措施;记录对用户个人信息进行操作的人员、时间、地点、事项等信息;定期举办安全和隐私保护培训,提高员工的个人信息保护意识。 - -3.我们会采取一切合理可行的措施,确保未收集无关的个人信息。我们只会在达成本政策所述目的所需的期限内保留您的个人信息,除非需要延长保留期或受到法律的允许。 - -4.我们将根据法律法规和主管部门的要求,定期更新并公开安全风险、个人信息安全影响评估等报告的有关内容。 - -5.互联网环境并非百分之百安全,我们将尽力确保或担保您发送给我们的任何信息的安全性。如果我们的物理、技术、或管理防护设施遭到破坏,导致信息被非授权访问、公开披露、篡改、或毁坏,导致您的合法权益受损,我们将承担相应的法律责任。 - -6.若不幸发生个人信息安全事件的,我们将按照法律法规要求,及时通过站内信/您预留的联系方式等向您告知安全事件的基本情况和可能的影响、我们已采取或将采取的应急响应及其他有关处置措施、对您的补救措施等。若难以逐一告知个人信息主体时,我们将采取合理、有效的方式发布公告并将主动向有关监管部门上报个人信息安全事件的处置情况。 - -7.如果您对我们的个人信息保护有任何疑问,可通过本政策【第十部分】的联系方式联系我们。若您发现您的个人信息泄露时,请您立即通过本政策约定的联系方式与我们联系,以便我们及时采取相应措施。 - -五、我们如何存储您的个人信息 - -1.我们会采取一切合理可行的措施,确保未收集无关的个人信息。我们将在法律法规允许的范围内及与您的约定范围内存储您的个人信息,存储时间如超出法律的允许范围外,我们将进行删除或匿名化处理。 - -2.若无其他约定,您同意在您注销Deepin ID账户后,出于交易安全需求,我们有权保留您在使用Deepin ID期间于应用商店产生的购买、评论及评分记录直至届满三年;其余Deepin ID账户个人信息我们将在您注销账户后及时删除。 - -六、您的权利 -我们将尽最大努力采取适当的技术手段,保障您可以访问、更新和更正自己的注册信息或使用本网站服务时提供的其他个人信息。 - -1.访问您的个人信息 -除法律法规另有规定,您有权访问您的个人信息。您可以通过以下方式自行访问您的信息: - -1.1.账户信息/用户基本信息:如果您希望访问或编辑您的Deepin ID中的个人基本信息,如手机号码、邮箱地址、性别、教育信息、职业信息或其他个人资料信息,您可以登录Deepin ID注册网站,通过“[用户中心]”执行此类操作 -1.2.交易信息:如果您希望访问您的历史打赏记录,您可以在应用商店“个人中心”查询您的购买记录及其他与应用购买相关的信息。 -1.3.如果您无法通过上述方式访问您的个人信息,您可以随时通过【第十部分】的联系方式联系我们。我们将在[15]天内回复您的访问请求。 -1.4.对于您在使用我们的产品或服务过程中产生的其他个人信息,我们将根据本部分第(7)项“响应您的上述请求”中的相关安排向您提供。 - -2.更正不准确或不完整的个人信息 -2.1.您可以通过您的[个人中心]自行进行更正或补充您的一些个人信息。特别提示的是,请您注意核对您提交的个人信息的真实、及时、完整和准确,否则会导致我们无法与您进行有效联系、无法向您提供部分服务。若我们有合理理由怀疑您提供的资料发生错误、不完整、不真实,我们有权向您询问或通知您改正,甚至暂停或中止对您提供部分服务。 -2.2.某些特殊信息的更正可能无法自行操作,您可以通过本政策【第十部分】公布的联系方式与我们联系。我们将在[15]天内回复您的访问请求。为保障您的账户安全,我们可能会要求您进行身份验证。 - -3.撤销同意或处理限制 -3.1.您可以通过删除信息、关闭有关设备/工具的功能或进行其他可行的隐私设置方式(视系统版本而定)等以变更您授权我们收集和使用的您的个人信息范围。 -3.2.如果您无法通过上述方式撤销您的授权同意的,您可以随时通过【第十部分】的联系方式联系我们并说明您要撤销哪一项同意以执行此类操作。我们将在[15]日内回复您的访问请求。 -3.3.当您撤销同意后,我们将不再处理相应的个人信息。但您撤销同意的决定,不会影响此前基于您的授权而开展的个人信息处理的合法性。 - -4.删除个人信息 -4.1.在下列情形中,您可以向本网站提出删除您的个人信息的请求: -4.1.1.我们处理个人信息的行为违反法律法规或与您的约定的; -4.1.2.我们对您的个人信息的收集和使用,未能获得您明确同意的; -4.1.3.我们终止向您提供或您主动终止使用本网站的产品或服务的。 -4.2.若我们决定响应您的删除请求,我们还将同时尽可能通知从我们分享获得您的个人信息的第三方(包括本网站的关联公司),要求该等第三方及时删除您的个人信息,除非法律法规另有规定,或该等第三方已获得您的独立授权。 -4.3.当您从本网站中删除个人信息后,我们可能不会立即从备份系统中删除相应的信息,但会在备份更新时删除这些信息。 -4.4.如果您无法通过上述路径删除该等个人信息,您可以随时通过本网站客服与我们取得联系。为保障您的账户安全,我们可能会要求您进行身份验证。 - -5.账户注销 -5.1.Deepin ID支持账户注销,您可以访问[个人中心中的账户信息] 页面自行操作或通过本政策【第十部分】公布的联系方式联系我们注销您的Deepin ID,我们可能要求您进行身份验证以保障您的账户安全。 -5.2.在注销账户之后,我们将停止为您提供服务,并依据您的要求,在适用法律规定的时限内删除您的个人信息,法律法规另有规定或您与我们达成其他一致意见的情况除外。 - -6.获取个人信息副本 -6.1.您有权通过本政策公布的联系方式向我们发出书面请求以获取您的个人信息副本。 -6.2.在技术可行的前提下,例如数据接口匹配,我们还可按您的要求和现有的通行技术,直接将您的个人信息副本传输给您指定的第三方。若因该等第三方拒绝接收您的个人信息副本而导致传输失败的,您应自行与该等第三方进行协调解决,我们对此不承担任何责任。 - -7.响应您的上述请求 -7.1.为保障您的账户安全,您可能需要提供书面请求,或以其他方式证明您的身份。我们可能会先要求您验证自己的身份,然后再处理您的请求。 -7.2.我们将在[15]天日做出答复。如您不满意,还可以按照本政策【第十部分】规定的途径投诉。 -7.3.对于您合理的请求,我们原则上不收取费用,但对多次重复、超出合理限度的请求,我们将视情收取一定成本费用。对于那些无端重复、需要过多技术手段(例如,需要开发新系统或从根本上改变现行惯例)、给他人合法权益带来风险或者非常不切实际(例如,涉及备份磁带上存放的信息)的请求,我们可能会予以拒绝。 -7.4.在以下情形中,按照法律法规要求,我们将无法响应您的请求: -7.4.1.与国家安全、国防安全直接相关的; -7.4.2.与公共安全、公共卫生、重大公共利益直接相关的; -7.4.3.与犯罪侦查、起诉、审判和判决执行等直接相关的; -7.4.4.有充分证据表明您存在主观恶意或滥用权利的; -7.4.5.响应您的请求将导致您或其他个人、组织的合法权益受到严重损害的。 -7.4.6.涉及商业秘密的; -7.4.7.其他适用法律规定的情形。 - -七、我们如何处理未成年人的个人信息 -1.我们的产品和服务仅限14周岁以上的用户使用,如果您未满14周岁,您应提供您的法定监护人的联络方式(例如电子邮箱、电话号码),我们将通过该联络方式联系您的法定监护人,并采取合理措施征得您的法定监护人的明示授权同意;您应明确了解,若我们在服务过程中发现或怀疑您未满14周岁的,则我们可以随时中止或终止向您提供服务,直至您向我们提供您已满14周岁的证明,或协助我们获得您的法定监护人的明示授权同意。 -2.对于经法定监护人同意而收集未成年人个人信息的情况,包括法定监护人为未成年人投保等,我们只会在受到法律允许、法定监护人明确同意或者保护未成年人所必要的情况下使用或公开披露此信息。 -3.如果我们发现自己在未事先获得可证实的父母或者其他法定监护人同意的情况下收集了未成年人的个人信息,则会设法尽快删除相关数据。 - -八、您的个人信息如何在全球范围转移 -1.我们将遵从各国家/地区的法律法规,对在各国家/地区收集的个人信息进行存储。 -2.我们会按照中国的法律法规规定,将中国境内收集的个人信息存储于中国境内。 -3.我们保留将您的个人信息传送到其他政府管辖区域的权利。您对本隐私政策的同意,以及您提交或我们收集的此类数据,代表您对任何此类转移的同意。在这种情况下,我们将依据相关法律规定及本政策来对您的个人信息进行转移并提供足够的保护。 - -九、本政策如何更新 -1.我们的隐私政策可能变更。未经您明确同意,我们不会削减您按照隐私政策所应享有的权利。我们会发布对隐私政策的更新版本。 -2.对于重大变更,我们还会提供更为显著的通知(包括对于某些服务,我们会通过电子邮件发送通知,说明隐私政策的具体变更内容)。 -3.隐私政策的重大变更包括但不限于: -3.1.我们的产品和服务模式发生重大变化。如处理个人信息的目的、处理的个人信息类型、个人信息的使用方式等; -3.2.我们在所有权结构、组织架构等方面发生重大变化。如业务调整、破产并购等引起的所有者变更等; -3.3.个人信息共享、转让或公开披露的主要对象发生变化; -3.4.您参与个人信息处理方面的权利及其行使方式发生重大变化; -3.5.我们负责处理个人信息安全的责任部门、联络方式及投诉渠道发生变化时; -3.6.个人信息安全影响评估报告表明存在高风险时。 - -十、我们的个人信息保护部门/专员 -1.我们已经任命个人信息保护机构,以负责统筹及监察统信软件遵守和实施与个人信息保护相关的法律法规及内部政策制度的情况。 -2.如果您对本隐私政策有任何疑问、意见或建议,您可以通过以下方式与其联系,一般情况下,我们将在三十天内或适用法律法规允许的更长时限内回复。 -个人信息保护部门/专员:【法务部】 -地址:【北京市北京经济技术开发区科谷一街10号院12号楼18层】 -电话:【010-62669253】 -电子邮件:【privacy@uniontech.com】 - -十一、向监管部门申诉或者提起诉讼 -如果您对我们的回复不满意,特别是认为我们的个人信息处理行为损害了您的合法权益,且协商无法达成一致的,您有权向有关个人信息保护监管部门提起申诉或者任何一方均可向【北京市大兴区】人民法院提起诉讼)。 - -附录1:定义 -●个人信息 -个人信息是指以电子或者其他方式记录的能够单独或者与其他信息结合识别特定自然人身份或者反映特定自然人活动情况的各种信息。 包括但不限于自然人的姓名、出生日期、身份证件号码、个人生物识别信息、住址、电话号码等。 -●个人敏感信息 -个人敏感信息是指一旦泄露、非法提供或滥用可能危害人身和财产安全,极易导致个人名誉、身心健康受到损害或歧视性待遇等的个人信息。例如,个人敏感信息包括个人电话号码、身份证件号码、网页浏览记录、个人生物识别信息、银行账号、通信记录和内容、财产信息、征信信息、行踪轨迹、住宿信息、精准定位信息、健康生理信息、交易信息、14岁以下(含)未成年人的个人信息等。 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_en_US.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_en_US.txt deleted file mode 100644 index 6f8252aea2..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_en_US.txt +++ /dev/null @@ -1,3 +0,0 @@ -Getting root access may cause data loss and system failure, and you will no longer be provided with the official after-sales service. Once it is allowed, you cannot exit the developer mode or return to normal user mode. Please carefully consider whether you need root privileges. - -To the maximum extent without any violation of the applicable laws, we do not take any liability for the damages and risks resulting from using or inability to use this product, including, but not limited to direct or indirect personal injuries, commercial profit loss, trade interruption, data loss, or any other economic loss. diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_CN.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_CN.txt deleted file mode 100644 index 34d3db27a4..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_CN.txt +++ /dev/null @@ -1,3 +0,0 @@ -开启本功能有可能导致您的数据丢失,系统无法启动或运行故障,且不再享有官方报修服务的风险。本功能一旦开启则无法退出或退回至普通用户模式,您应慎重考虑是否需要开启本功能。 - -在适用法律允许的最大范围内,对因使用或不能使用本产品所产生的损害及风险,包括但不限于直接或间接的个人损害、商业赢利的丧失、贸易中断、商业信息的丢失或任何其它经济损失,我们恕不承担任何责任。 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_HK.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_HK.txt deleted file mode 100644 index 2900f5d73c..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_HK.txt +++ /dev/null @@ -1,3 +0,0 @@ -開啟本功能有可能導致您的數據丟失,系統無法啟動或運行故障,且不再享有官方報修服務的風險。本功能一旦開啟則無法退出或退回至普通用戶模式,您應慎重考慮是否需要開啟本功能。 - -在適用法律允許的最大範圍內,對因使用或不能使用本產品所產生的損害及風險,包括但不限於直接或間接的個人損害、商業贏利的喪失、貿易中斷、商業訊息的丟失或任何其他經濟損失,我們恕不承擔任何責任。 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_TW.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_TW.txt deleted file mode 100644 index 0595c108f6..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_developer_community_zh_TW.txt +++ /dev/null @@ -1,3 +0,0 @@ -開啟本功能有可能導致您的資料遺失,系統無法啟動或執行故障,且不再享有官方報修服務的風險。本功能一旦開啟則無法退出或退回至普通使用者模式,您應慎重考慮是否需要開啟本功能。 - -在適用法律允許的最大範圍內,對因使用或不能使用本產品所產生的損害及風險,包括但不限於直接或間接的個人損害、商業贏利的喪失、貿易中斷、商業訊息的遺失或任何其它經濟損失,我們恕不承擔任何責任。 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_en_US.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_en_US.txt deleted file mode 100644 index 71b8f7c65a..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_en_US.txt +++ /dev/null @@ -1,49 +0,0 @@ -End User License Agreement for Deepin OS - -Updated date:December 8th, 2020 - -Welcome to use Deepin OS (“the software”), which is maintained and issued by Deepin Community. - -Based on Linux kernel, this software is integrated by open-source softwares selected, customized and developed by Deepin Community. This software is an open-source operating system and complies to software license agreements of all open-source software, components, and projects, on which the software relies. - -Deepin Community is a team founded by UnionTech Software Technology Co., Ltd. (“UnionTech Software”) and its affiliate (particularly Wuhan Deepin Technology Co., Ltd.(“Deepin Technology”)) and specialized on open-source technology. On behalf of UnionTech Software, Deepin Community enters into a legal agreement with users, and its rights and obligations under this agreement are ascribed to UnionTech Software. - -Please read all rights and limitations stated in this End User License Agreement ("EULA") carefully before using the software. This is a legal Agreement between UnionTech Software Technology Co., Ltd. ("UnionTech Software") and its affiliated companies (especially Wuhan Deepin Technology Co., Ltd. ("Deepin Technology") )and you (natural person, legal person or other organization). By installing, copying and/or otherwise using the software, you signify your assent to and acceptance of the EULA, and acknowledge that you have read and understood all the terms of the EULA. If you represent an entity, by installing, copying and/or otherwise using the software, you are deemed to accept these terms on behalf of the entity. If you DO NOT agree any term of this agreement, please do not install, download or use the software and its relevant services by any other means. - -Unless being replaced by a new version, the EULA applies to any version of Deepin software (community Version) and its related updates, and any usage of the source code, regardless the way how the software is delivered. - -Compared with their previous version in any components of the software, any part of the source code and object code that are created or modified by Deepin Technology, attached with the copyright declaration of Deepin Technology, are owned by UnionTech Software. For all purposes of this EULA, using the software includes downloading, installing, copying, redistributing or running a function in other ways. - -1.License Authorization. Subject to the following terms, UnionTech Software grants to you a perpetual, worldwide, and non-exclusive license to the software pursuant to this EULA and “GNU General Public License” (Version 3). The software may contain the components compiled by third-party developers in accordance with the corresponding open source licenses (hereinafter referred to as “open source software component”). Each software component is under a open source license located in its source code, which should be conformed to when you use it. Pertaining solely to the software, this EULA does not limit or change your rights or obligations under the license terms applicable to any particular open source software component. - -2.Intellectual Property Rights. The program owned by UnionTech Software in the software is protected under Copyright Law and other applicable laws. UnionTech Software and its affiliates have legal trademark rights to “统信” “深度” “UOS” “deepin” “统信UOS” trademarks and logos. (1) You shall not remove any copyright mark from the software, meanwhile you shall make the copyright mark exactly as is on all the copies of the software to duly announce the copyright of UnionTech Software and/or other licensors. (2) UnionTech Software owns the copyright and other intellectual property rights of the software (including but not limited to any image, picture, flash, video, record, music, word and additional program, color, user interface-design, structure), attached printing material and any copies of the software (except for trademarks and other rights owned by third parties), or UnionTech Software has the legitimate using rights. (3) The copyright of the software and printing documents are protected under the Copyright Law, Patent Law, Trademark Law, Anti-injustice Competition Law of PRC and international laws and treaties. (4) You shall not remove or destroy any copyright mark regarding the software. You guarantee that you shall also copy this copyright declaration in all copies of the software (whether in whole or part). (5) You agree to prevent any pirates of the software and the printing documents. (6) You shall not copy the printing material attached to the software. - -3.Redistribution. You can only redistribute the software when you have retained the copyright mark and copyright notice of the software in accordance with the requirements of Article 2 above, and have deleted and replaced the trademarks of all unified software. In addition to the above, this Agreement does not allow you to redistribute (including but not limited to software sales, pre-installation, bundling, etc.) the software or its components for any commercial purpose, regardless of whether the software or its components have been modified. You should be aware that modifying this software may cause damage to the application and may not work properly. - -4.Specification. The use of this software is subject to the laws and this EULA. You are not entitled to perform, including but not limited to, the following activities by using the software: -1)to publish, deliver, transmit or store any content that contravenes the laws and regulations belongs to the country where the user resides, or threatens the social security, social stability, or anything that is inappropriate, insulting, defamatory, obscene, violent and against the laws, regulations and policies belongs to the country where the user resides; -2)to publish, deliver, transmit or store content that infringes others intellectual property rights or trade secrets; -3)to issue, deliver or transmit bulk advertisements or spam; -4)to publish, transmit or distribute images, pictures, software or other materials (including but not limited to copyright, trademarks, patents, trade secrets, privacy and related personality rights) that infringe on third parties, unless you have obtained the necessary and effective authorization from the right holder in advance; -5)to take any actions to threaten the security of the network, including but not limited to, using data or entering the server/account without permission; entering public networks or private computers and deleting, copying, amending or adding stored information without permission; without permission, attempting to detect, scan or test the weakness of the Software system or the network or attempt to conduct any other activities to damage the network security system; attempting to intervene with, affect the normal operation of, the Software or the network; intentionally spreading malicious programs or viruses, and taking other actions to damage or intervene with the normal information service of the network; forging part or all of the titles of TCP/IP packages. -6)to use other services provided by the software and UnionTech Software in any illegal way, for any illegal purpose, or in any inconsistent way with the EULA. -If you fail to comply with the above provisions, Deepin Community does not assume any responsibility and has the right, in its sole discretion, to terminate, completely or partially suspend, or limit its normal function of the software, and reserves all rights to pursue your actions. - -5.Disclaimer of Warranty. No any other form of after-sales warranty is applied to the software. To the maximum extent permitted under the applicable law, the software is licensed "as is" by Deepin Community without any other assurance and warranties, whether express, implied or statutory, including, but not limited to, any implied warranties of merchantability, non-infringement or fitness for a particular purpose. -The software is designed and supplied as a general purpose product and not for the specific use of any user. No software is without errors, so you should always make a backup of your files, and solely be responsible for the risks of using the software. Deepin Community does not take any liability for the damages and risks resulting from using or inability to use the software, including, but not limited to direct or indirect personal injuries, commercial profit loss, trade interruption, data loss, or any other economic loss. Deepin Community does not take any liability for damages caused by telecommunication systems or Internet network failures, or any other force majeure reasons (including hacking attack). - -6.Limited Liability. Deepin Community, is not responsible for any claims or damages arising out of or in connection with the content of the software or others related to the content provided by you or a third party. - -7.Third Party Programs. Deepin Community may distribute third party software programs with the software, which are not the necessity to run the software, provided as a convenience to you, and are subject to their own license terms. In addition, any program you install and run based on the software is considered as the third party software program. If you do not agree to abide by the applicable license terms accompanied with the third party software programs, you should not install or run such Third Party Programs. If you wish to install the third party software programs on more than one system or transfer them to another party, then you must contact the licensors of the third party software programs. - -8.Right Reservation. All rights not expressly granted with the software are owned by Deepin Community. - -9.License Termination. (1) Deepin Community is entitled to terminate the EULA at any time, if any terms or conditions in the EULA are violated. (2) Provided that Deepin Community offers you any replaced, revised or upgraded Version of the software attached with a replacement of the EULA, which stipulates that you can use the replaced, revised or upgraded Version of the software under the condition that you accept the replacement of the EULA, Deepin Community may terminate this EULA. - -10.Jurisdiction and Applicable Law. The establishment, execution, interpretation and resolution of disputes with respect to the EULA shall be governed by the laws of the P.R.C. When any dispute arises between Deepin Community and the user due to the content or the implement of the EULA, the two parties shall resolve it through friendly negotiation; if the negotiation fails, the user hereby agrees that the dispute shall be resolved in the court located in the jurisdiction where UnionTech Software resides. - -11.Interpretation and Modification. Deepin Community has the right to interpret and modify this EULA to the maximum extent without any violation of all the applicable laws and regulations, as well as the agreements that the software complies with, including “GNU General Public License” (Version 3). It also reserves the right to modify this EULA at any time in accordance with the changes in relevant laws and regulations, as well as the open-source strategies of the community. The modified EULA will be shown in the new version of the software for acceptance before you use it. In the event of a dispute, this EULA terminates and the latest EULA shall prevail. If you do not agree with the changes in the EULA, you can uninstall and delete the software and destroy the relevant information. If you continue to use the software, you are deemed to have accepted the modifications in the EULA. - -12.This EULA is published in Simplified Chinese and English. No matter which language version you read, the Simplified Chinese version shall prevail. - -13.Contact Us. If you have any questions regarding this EULA, or need any information, please contact Deepin Community at: support@deepin.org. diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_zh_CN.txt b/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_zh_CN.txt deleted file mode 100644 index 75b35cb5b7..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/license/deepin-end-user-license-agreement_zh_CN.txt +++ /dev/null @@ -1,51 +0,0 @@ -深度操作系统最终用户许可协议 - -版本更新日期:[2020]年[12]月[08]日 - -欢迎使用深度操作系统(以下称为“本软件”),深度操作系统由深度社区维护和发行。 - -本软件基于Linux内核,并集成了深度社区选择、定制和开发的开源软件搭建而成。本软件为开源操作系统软件,并遵循本软件所依赖的各开源软件、组件和项目的软件许可协议。 - -深度社区是统信软件技术有限公司(以下简称“统信软件”)及其关联公司(特别是武汉深之度科技有限公司(以下简称为“深度科技”))成立的、专注于开源技术的团队。深度社区代表统信软件与用户达成法律协议,且深度社区在本协议下的权利和义务归属于统信软件。 - -请在使用本软件之前仔细阅读本最终用户许可协议(以下称为“本协议”)中规定的所有权利和限制。本协议是统信软件技术有限公司(以下简称“统信软件”)及其关联公司(特别是武汉深之度科技有限公司(以下简称为“深度科技”))与您(自然人、法人或其他组织)之间达成的法律协议。一旦您安装、复制或以其他方式使用本软件,即表明您同意并接受本协议,并且承认您已阅读和理解了本协议。若您为代表一个实体的个人,一旦您安装、复制或以其他方式使用本软件即承认您已被授权代表该实体接受本协议。如果您不同意本协议中的任何条款,请勿安装、下载或以其他方式使用本软件及其相关服务。 - -除非本协议被新协议版本替代,本协议规范适用于任一版本的深度操作系统,以及任何相关的更新、源代码的使用,无论交付的方式如何。 - -本软件中所包含的由深度社区提供并附有版权声明的源代码、目标码、以及由前述源代码和/或目标码所构成的所有组件当中,由深度社区创作的内容、或修改的有别于未修改之前版本的内容及形成的相关版权归统信软件所有。为本协议之目的,使用是指下载、安装、复制、再发布或以其它方式对本软件做功能性使用。 - -1.许可授权。在下面条款的约束下,统信软件根据本协议和《GNU通用公共许可协议》(第3版)授予您有关本软件永久的,全世界范围内,非独占性的许可。本软件可能包含由第三方开发者根据相应开源协议编制的软件组件(以下简称“开源软件组件”),每一个软件组件的许可协议均位于该软件组件的源代码中,您在使用这些软件组件时应遵守相应开源软件许可协议的规定。本协议仅适用于本软件,且不限制或改变您根据任何特定开源软件组件的许可条款享有的权利或义务。 - -2.知识产权。本软件中统信软件享有版权的部分受著作权法和其它相关适用法律的保护,并且统信软件及其关联公司对“统信”“统信UOS” “深度”和“deepin”商标及标识拥有合法商标权。(1)您不得去掉本软件上的任何版权标识和商标标识,并应在其所有复制品上依照其现有表述方式标注其版权属于统信软件及/或其他授权人。(2)本软件(包括但不限于本软件中所含的任何图像、照片、动画、录像、录音、音乐、文字和附加程序、色彩、界面设计、版面框架)、随附的文档印刷材料及本软件任何副本的著作权及其他知识产权,均由统信软件拥有(属于第三方所有之商标及第三方所有之其他权利除外)或统信软件拥有合法使用权。(3)本软件及文档印刷材料享有版权,并受中华人民共和国著作权法、商标法、专利法、反不正当竞争法及国际条约条款的保护。(4)您不可以从本软件中去掉其版权声明;并保证为本软件的复制品(全部或部分)复制版权声明。(5)您同意制止以任何形式非法复制本软件及文档印刷材料。(6)您不可复制本软件随附的文档印刷材料。 - -3.再发布。您仅在以下情况下方可进行再发布:您已按照上述第2条的要求保留本软件的版权标识以及版权声明,并且您已删除并替换所有统信软件的商标。除了以上情况之外,本协议不允许您为了任何商业目的再发布(包括但不限于软件销售、预装、捆绑等)本软件或其组件,不管本软件或其组件是否已被修改。您应了解,修改本软件可能造成应用程序受损以及无法正常使用。 - -4.使用规范。您在遵守法律及本协议的前提下可依本协议使用本软件。您无权实施包括但不限于下列行为: -1)利用本软件发表、传送、传播、储存违反您所在国家法律、危害社会安全、公序良俗的内容,或任何不当的、侮辱诽谤的、淫秽的、暴力的及任何违反使用者所在国家法律法规政策的内容; -2)利用本软件发表、传送、传播、储存侵害他人知识产权、商业秘密权等合法权利的内容; -3)利用本软件批量发表、传送、传播广告信息及垃圾信息; -4)利用本软件发表、传送或散布以其他方式实现传送含有侵犯第三方合法权利(包括但不限于版权、商标权、专利权、商业秘密、隐私权及相关人格权利)的图像、相片、软件或其他资料的文件,除非您已获得权利人充分有效的事先授权; -5)任何危害网络安全的行为,包括但不限于:使用未经许可的数据或进入未经许可的服务器/账户;未经允许进入公众网络或者他人操作系统并删除、修改、增加存储信息;未经许可,企图探查、扫描、测试本软件系统或网络的弱点或其它实施破坏网络安全的行为;企图干涉、破坏本软件系统正常运行,故意传播恶意程序或病毒以及其他破坏干扰正常网络信息服务的行为;伪造TCP/IP数据包名称或部分名称; -6)其他以任何不合法的方式、为任何不合法的目的、或以任何与本协议不一致的方式使用本软件。 - -您若违反上述规定,深度社区不承担因此导致的任何责任,有权自行决定采取终止、完全或部分中止、限制您使用本软件的相关功能并保留追究上述行为的一切权利。 - -5.免责说明。本软件不享受任何其他形式的售后担保。在适用法律允许的最大限度内,深度社区对本软件按“现状”向您进行授予许可。深度社区不提供任何明示、默示或法定的保证、保障或条件,包括但不限于有关适销性、针对特定目的的适用性和不侵权的默示保证。 - -本软件是作为一般用途的产品而不是为任何用户的具体用途而设计并提供的。您同意没有产品是无错误的,因此,您应该经常对您的文件做出备份。您须自行承担使用该软件的风险。对因使用或不能使用本软件所产生的损害及风险,包括但不限于直接或间接的个人损害、商业盈利的丧失、贸易中断、商业信息的丢失或任何其它经济损失,深度社区不承担任何责任。对于因电信系统或互联网网络故障、配套系统故障问题或其它任何不可抗力原因(包括黑客攻击行为)而产生的损失,深度社区不承担任何责任。 - -6.有限责任。深度社区对您或第三方提供的应用于或操作于本软件的内容或与该内容相关的其他内容而引起的任何索赔或损害不承担任何责任。 - -7.第三方软件程序。深度社区可能随本软件发行第三方软件程序。这类第三方软件程序不是本软件的运行所必须的,而是为方便您而提供的,且受其自身所带的许可条款约束。此外,您基于本软件安装和运行的其它应用程序,也属于第三方软件程序的范畴。该等许可条款随第三方软件程序附送。如果您不同意遵守第三方软件程序适用的许可条款,则无权安装和运行该等程序。如果您希望在一个以上的系统中安装第三方软件程序,或向其它人转让第三方软件程序,则必须自行联络第三方软件程序许可人。 - -8.权利的保留。未明示授予的与本软件相关的一切权利均为深度社区所有。 - -9.许可终止。(1)如您未遵守本协议的各项条款和条件,深度社区可终止本协议。(2)通过向您提供本软件的任何替换版本或修改版本或升级版本的一份取代协议,并规定您使用这类替换版本或修改版本或升级版本的条件是您接受这类取代协议,深度社区可以终止本协议。 - -10.管辖和法律适用。本协议的订立、执行和解释及争议的解决均应适用中华人民共和国法律。如您与深度社区就本协议内容或其执行发生任何争议,双方应进行友好协商;协商不成时,任何一方均可向统信软件所在地有管辖权的人民法院提起诉讼。 - -11.解释以及修改。深度社区在不违背本软件所遵守的包括《GNU通用公共许可协议》(第3版)在内的所有协议及法律规定所允许的最大范围内对本协议拥有解释权与修改权。深度社区有权随时根据有关法律、法规的变化以及社区开源策略的调整等修改本协议。修改后的协议会在随附于新版本软件中在您使用前阅读和选择接受。当发生有关争议时,本协议终止,以最新的协议文本为准。如果您不同意协议变更的内容,您可以自行卸载删除本软件并销毁其相关信息内容。如果您继续使用本软件,则视为您接受本协议的变更。 - -12.本协议以简体中文和英文文字书写,无论您收到的是其中哪种语言的版本,均以简体中文版本为最准确释义。 - -13.联系我们。如果您对本协议有任何疑问或者希望从深度社区获得任何信息,请按下列联系方式与深度社区直接联系:support@deepin.org。 diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/light/icons/icon_about_laptop_128px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/light/icons/icon_about_laptop_128px.svg deleted file mode 100644 index 811d7f02b8..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/light/icons/icon_about_laptop_128px.svg +++ /dev/null @@ -1,86 +0,0 @@ - - - icon_about_laptop_light - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/light/icons/icon_about_pc_128px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/light/icons/icon_about_pc_128px.svg deleted file mode 100644 index 2b0cdfe3c3..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/light/icons/icon_about_pc_128px.svg +++ /dev/null @@ -1,93 +0,0 @@ - - - icon_about_pc_light - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/systeminfo.qrc b/dcc-old/src/plugin-systeminfo/operation/qrc/systeminfo.qrc deleted file mode 100644 index f44d710631..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/systeminfo.qrc +++ /dev/null @@ -1,31 +0,0 @@ - - - - icons/dcc_nav_systeminfo_42px.svg - icons/dcc_nav_systeminfo_84px.svg - actions/dcc_privacy_policy_32px.svg - actions/dcc_protocol_32px.svg - actions/dcc_version_32px.svg - texts/dcc_edit_12px.svg - light/icons/icon_about_pc_128px.svg - light/icons/icon_about_laptop_128px.svg - dark/icons/icon_about_pc_128px.svg - dark/icons/icon_about_laptop_128px.svg - - - gpl/gpl-3.0-zh_CN-body.txt - gpl/gpl-3.0-zh_CN-title.txt - gpl/gpl-3.0-zh_TW-body.txt - gpl/gpl-3.0-zh_TW-title.txt - license/deepin-end-user-license-agreement_zh_CN.txt - license/deepin-end-user-license-agreement_en_US.txt - gpl/gpl-3.0-en_US-body.txt - gpl/gpl-3.0-en_US-title.txt - license/deepin-end-user-license-agreement_community_en_US.txt - license/deepin-end-user-license-agreement_community_zh_CN.txt - license/deepin-end-user-license-agreement_developer_community_en_US.txt - license/deepin-end-user-license-agreement_developer_community_zh_CN.txt - license/deepin-end-user-license-agreement_developer_community_zh_HK.txt - license/deepin-end-user-license-agreement_developer_community_zh_TW.txt - - diff --git a/dcc-old/src/plugin-systeminfo/operation/qrc/texts/dcc_edit_12px.svg b/dcc-old/src/plugin-systeminfo/operation/qrc/texts/dcc_edit_12px.svg deleted file mode 100644 index ef6823ccc1..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/qrc/texts/dcc_edit_12px.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/dcc-old/src/plugin-systeminfo/operation/systeminfodbusproxy.cpp b/dcc-old/src/plugin-systeminfo/operation/systeminfodbusproxy.cpp deleted file mode 100644 index daf599615c..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/systeminfodbusproxy.cpp +++ /dev/null @@ -1,69 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later - -#include "systeminfodbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include -#include -#include - -const QString HostnameService = QStringLiteral("org.freedesktop.hostname1"); -const QString HostnamePath = QStringLiteral("/org/freedesktop/hostname1"); -const QString HostnameInterface = QStringLiteral("org.freedesktop.hostname1"); - -const QString LicenseInfoService = QStringLiteral("com.deepin.license"); -const QString LicenseInfoPath = QStringLiteral("/com/deepin/license/Info"); -const QString LicenseInfoInterface = QStringLiteral("com.deepin.license.Info"); - -const QString LicenseActivatorService = QStringLiteral("com.deepin.license.activator"); -const QString LicenseActivatorPath = QStringLiteral("/com/deepin/license/activator"); -const QString LicenseActivatorInterface = QStringLiteral("com.deepin.license.activator"); - -const QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); -const QString PropertiesChanged = QStringLiteral("PropertiesChanged"); - -SystemInfoDBusProxy::SystemInfoDBusProxy(QObject *parent) - : QObject(parent) - , m_hostname1Inter(new DDBusInterface(HostnameService, HostnamePath, HostnameInterface, QDBusConnection::systemBus(), this)) - , m_licenseInfoInter(new DDBusInterface(LicenseInfoService, LicenseInfoPath, LicenseInfoInterface, QDBusConnection::systemBus(), this)) - , m_licenseActivatorInter(new DDBusInterface(LicenseActivatorService, LicenseActivatorPath, LicenseActivatorInterface, QDBusConnection::sessionBus(), this)) -{ -} - -QString SystemInfoDBusProxy::staticHostname() -{ - return qvariant_cast(m_hostname1Inter->property("StaticHostname")); -} - -void SystemInfoDBusProxy::setStaticHostname(const QString &value) -{ - QList argumentList; - argumentList << QVariant::fromValue(value) << QVariant::fromValue(true); - m_hostname1Inter->asyncCallWithArgumentList("SetStaticHostname", argumentList); -} - -void SystemInfoDBusProxy::setStaticHostname(const QString &value, QObject *receiver, const char *member, const char *errorSlot) -{ - QList argumentList; - argumentList << QVariant::fromValue(value) << QVariant::fromValue(true); - m_hostname1Inter->callWithCallback("SetStaticHostname", argumentList, receiver, member, errorSlot); -} - -int SystemInfoDBusProxy::authorizationState() -{ - return qvariant_cast(m_licenseInfoInter->property("AuthorizationState")); -} - -void SystemInfoDBusProxy::setAuthorizationState(const int value) -{ - m_licenseInfoInter->setProperty("AuthorizationState", QVariant::fromValue(value)); -} - -void SystemInfoDBusProxy::Show() -{ - m_licenseActivatorInter->asyncCall("Show"); -} diff --git a/dcc-old/src/plugin-systeminfo/operation/systeminfodbusproxy.h b/dcc-old/src/plugin-systeminfo/operation/systeminfodbusproxy.h deleted file mode 100644 index 2eebe5ef60..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/systeminfodbusproxy.h +++ /dev/null @@ -1,43 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SYSTEMINFODBUSPROXY_H -#define SYSTEMINFODBUSPROXY_H - -#include "interface/namespace.h" - -#include - -using Dtk::Core::DDBusInterface; - -#include - -class SystemInfoDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit SystemInfoDBusProxy(QObject *parent = nullptr); - - Q_PROPERTY(QString StaticHostname READ staticHostname WRITE setStaticHostname NOTIFY StaticHostnameChanged) - QString staticHostname(); - void setStaticHostname(const QString &value); - void setStaticHostname(const QString &value, QObject *receiver, const char *member, const char *errorSlot); - - Q_PROPERTY(int AuthorizationState READ authorizationState WRITE setAuthorizationState NOTIFY AuthorizationStateChanged) - int authorizationState(); - void setAuthorizationState(const int value); - -signals: - void StaticHostnameChanged(const QString &value) const; - void AuthorizationStateChanged(const int value) const; - -public slots: - void Show(); - -private: - DDBusInterface *m_hostname1Inter; - DDBusInterface *m_licenseInfoInter; - DDBusInterface *m_licenseActivatorInter; -}; - -#endif // SYSTEMINFODBUSPROXY_H diff --git a/dcc-old/src/plugin-systeminfo/operation/systeminfomodel.cpp b/dcc-old/src/plugin-systeminfo/operation/systeminfomodel.cpp deleted file mode 100644 index 4aca2538f3..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/systeminfomodel.cpp +++ /dev/null @@ -1,139 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "systeminfomodel.h" - -#include "math.h" - -namespace DCC_NAMESPACE{ - -static QString formatCap(qulonglong cap, const int size = 1024, quint8 precision = 1) -{ - static QStringList type = {" B", " KB", " MB", " GB", " TB"}; - qulonglong lc = cap; - double dc = cap; - double ds = size; - - for(int p = 0; p < type.count(); ++p) { - if (cap < pow(size, p + 1) || p == type.count() - 1) { - if (!precision) { -#ifdef __sw_64__ - return QString::number(ceil(lc / pow(size, p))) + type[p]; -#else - return QString::number(round(lc / pow(size, p))) + type[p]; -#endif - } - - return QString::number(dc / pow(ds, p), 'f', precision) + type[p]; - } - } - - return ""; -} - -SystemInfoModel::SystemInfoModel(QObject *parent) - : QObject(parent) - , m_type(64) - , m_endUserAgreementText(std::nullopt) - , m_gnuLicense(std::nullopt) - , m_licenseState(ActiveState::Unauthorized) -{ - -} - -void SystemInfoModel::setProductName(const QString& name) -{ - if(m_productName == name) - return; - - m_productName = name; - Q_EMIT productNameChanged(m_productName); -} -void SystemInfoModel::setVersionNumber(const QString& number) -{ - if(m_versionNumber == number) - return; - - m_versionNumber = number; - Q_EMIT versionNumberChanged(m_versionNumber); -} - -void SystemInfoModel::setVersion(const QString &version) -{ - if(m_version == version) - return; - - m_version = version; - Q_EMIT versionChanged(m_version); -} - -void SystemInfoModel::setType(qlonglong type) -{ - if(m_type == QString("%1").arg(type)) - return ; - - m_type = QString("%1").arg(type); - typeChanged(m_type); -} - -void SystemInfoModel::setProcessor(const QString &processor) -{ - if(m_processor == processor) - return; - - m_processor = processor; - processorChanged(processor); -} - -void SystemInfoModel::setHostName(const QString &hostName) -{ - m_hostName = hostName; - hostNameChanged(hostName); -} - -void SystemInfoModel::setEndUserAgreement(const QString &text) -{ - m_endUserAgreementText = text; -} - -void SystemInfoModel::setEndUserAgreementPath(const QString &path) -{ - m_endUserAgreementTextPath = path; -} - -void SystemInfoModel::setGnuLicense(const QPair& license) -{ - m_gnuLicense = license; -} - -void SystemInfoModel::setMemory(qulonglong totalMemory, qulonglong installedMemory) -{ - QString mem_device_size = formatCap(installedMemory, 1024, 0); - QString mem = formatCap(totalMemory); - if(m_memory == mem) - return ; - - m_memory = mem; - m_memory = QString("%1 (%2)").arg(mem, tr("available")); - memoryChanged(m_memory); -} - - -void SystemInfoModel::setKernel(const QString &kernel) -{ - if (m_kernel == kernel) - return; - - m_kernel = kernel; - kernelChanged(kernel); -} - -void SystemInfoModel::setLicenseState(DCC_NAMESPACE::ActiveState state) -{ - if (m_licenseState != state) { - m_licenseState = state; - Q_EMIT licenseStateChanged(state); - } -} - -} diff --git a/dcc-old/src/plugin-systeminfo/operation/systeminfomodel.h b/dcc-old/src/plugin-systeminfo/operation/systeminfomodel.h deleted file mode 100644 index 31f448d6c6..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/systeminfomodel.h +++ /dev/null @@ -1,87 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SYSTEMINFOMODEL_H -#define SYSTEMINFOMODEL_H - -#include - -#include "include/interface/namespace.h" -#include -namespace DCC_NAMESPACE{ - -enum ActiveState { - Unknown = -1, //未知 - Unauthorized = 0, //未授权 - Authorized, //已授权 - AuthorizedLapse, //授权失效 - TrialAuthorized, //试用期已授权 - TrialExpired //试用期已过期 -}; - -// !!! 不要用C++11的前置声明枚举类型,这里lupdate命令有个bug.具体见 -// https://stackoverflow.com/questions/6504902/lupdate-error-qualifying-with-unknown-namespace-class - -class SystemInfoModel : public QObject -{ - Q_OBJECT -public: - explicit SystemInfoModel(QObject *parent = nullptr); - - inline QString productName() const { return m_productName;} - inline QString versionNumber() const { return m_versionNumber;} - inline QString version() const { return m_version;} - inline QString type() const { return m_type;} - inline QString processor() const { return m_processor;} - inline QString memory() const { return m_memory;} - inline QString kernel() const { return m_kernel;} - inline QString hostName() const { return m_hostName;} - inline std::optional endUserAgreement() const { return m_endUserAgreementText; } - inline std::optional endUserAgreementPath() const { return m_endUserAgreementTextPath; } - inline std::optional> gnuLicense() const { return m_gnuLicense; }; - inline ActiveState licenseState() const { return m_licenseState; } - -Q_SIGNALS: - void productNameChanged(const QString& version); - void versionNumberChanged(const QString& version); - void versionChanged(const QString& version); - void typeChanged(const QString& type); - void processorChanged(const QString& processor); - void memoryChanged(const QString& memory); - void kernelChanged(const QString& kernel); - void licenseStateChanged(ActiveState state); - void hostNameChanged(const QString& hostName); - void setHostNameError(const QString& error); - -public Q_SLOTS: - void setProductName(const QString& name); - void setVersionNumber(const QString& number); - void setVersion(const QString& version); - void setType(qlonglong type); - void setProcessor(const QString& processor); - void setMemory(qulonglong totalMemory, qulonglong installedMemory); - void setKernel(const QString &kernel); - void setLicenseState(DCC_NAMESPACE::ActiveState state); - void setHostName(const QString& hostName); - void setEndUserAgreement(const QString &text); - void setEndUserAgreementPath(const QString &path); - void setGnuLicense(const QPair& license); - -private: - QString m_version; - QString m_productName; - QString m_versionNumber; - QString m_type; - QString m_processor; - QString m_memory; - QString m_kernel; - QString m_hostName; - std::optional m_endUserAgreementTextPath; - std::optional m_endUserAgreementText; - std::optional> m_gnuLicense; - DCC_NAMESPACE::ActiveState m_licenseState; -}; - -} -Q_DECLARE_METATYPE(DCC_NAMESPACE::ActiveState); -#endif // SYSTEMINFOMODEL_H diff --git a/dcc-old/src/plugin-systeminfo/operation/systeminfowork.cpp b/dcc-old/src/plugin-systeminfo/operation/systeminfowork.cpp deleted file mode 100644 index 44a3cfbdca..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/systeminfowork.cpp +++ /dev/null @@ -1,98 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "systeminfowork.h" -#include "systeminfomodel.h" -#include "systeminfodbusproxy.h" -#include "window/utils.h" - -#include - -DCORE_USE_NAMESPACE -namespace DCC_NAMESPACE{ - -SystemInfoWork::SystemInfoWork(SystemInfoModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_systemInfDBusProxy(new SystemInfoDBusProxy(this)) -{ - qRegisterMetaType("ActiveState"); - connect(m_systemInfDBusProxy, &SystemInfoDBusProxy::StaticHostnameChanged, m_model, &SystemInfoModel::setHostName); - connect(m_systemInfDBusProxy, &SystemInfoDBusProxy::AuthorizationStateChanged, m_model, [this] (const int state) { - m_model->setLicenseState(static_cast(state)); - }); -} - -void SystemInfoWork::activate() -{ - //获取主机名 - m_model->setHostName(m_systemInfDBusProxy->staticHostname()); - - if (DSysInfo::isDeepin()) { - m_model->setLicenseState(static_cast(m_systemInfDBusProxy->authorizationState())); - QString productName = QString("%1").arg(DSysInfo::uosSystemName()); - m_model->setProductName(productName); - QString versionNumber = QString("%1").arg(DSysInfo::majorVersion()); - m_model->setVersionNumber(versionNumber); - } - QString version; - if (DSysInfo::uosType() == DSysInfo::UosServer || DSysInfo::uosEditionType() == DSysInfo::UosEuler) { - version = QString("%1%2").arg(DSysInfo::minorVersion(), DSysInfo::uosEditionName()); - } else if (DSysInfo::isDeepin()) { - version = QString("%1 (%2)").arg(DSysInfo::uosEditionName(), DSysInfo::minorVersion()); - } else { - version = QString("%1 %2").arg(DSysInfo::productVersion(), DSysInfo::productTypeString()); - } - - m_model->setVersion(version); - - m_model->setType(QSysInfo::WordSize); - - m_model->setKernel(QSysInfo::kernelVersion()); - m_model->setProcessor(DSysInfo::cpuModelName()); - m_model->setMemory(static_cast(DSysInfo::memoryTotalSize()), static_cast(DSysInfo::memoryInstalledSize())); -} - -void SystemInfoWork::deactivate() -{ - -} - -QPair SystemInfoWork::getGNULicenseText() -{ - if (!m_model->gnuLicense().has_value()) { - m_model->setGnuLicense(DCC_LICENSE::loadLicenses()); - } - return m_model->gnuLicense().value(); -} - -QString SystemInfoWork::getEndUserAgreementText() -{ - if (!m_model->endUserAgreement().has_value()) { - if (DSysInfo::uosEditionType() == DSysInfo::UosEuler) { - m_model->setEndUserAgreement(DCC_LICENSE::getEulerEndUserAgreement()); - } else { - if (m_model->endUserAgreementPath().has_value()) { - m_model->setEndUserAgreement(DCC_LICENSE::getEndUserAgreement(m_model->endUserAgreementPath().value())); - } - } - } - return m_model->endUserAgreement().value(); -} - -void SystemInfoWork::showActivatorDialog() -{ - m_systemInfDBusProxy->Show(); -} - -void SystemInfoWork::onSetHostname(const QString &hostname) -{ - m_systemInfDBusProxy->setStaticHostname(hostname, this, SLOT(onSetHostnameFinish()), SLOT(onSetHostnameFinish())); -} - -void SystemInfoWork::onSetHostnameFinish() -{ - m_model->setHostName(m_systemInfDBusProxy->staticHostname()); -} - -} diff --git a/dcc-old/src/plugin-systeminfo/operation/systeminfowork.h b/dcc-old/src/plugin-systeminfo/operation/systeminfowork.h deleted file mode 100644 index 6705668724..0000000000 --- a/dcc-old/src/plugin-systeminfo/operation/systeminfowork.h +++ /dev/null @@ -1,45 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SYSTEMINFOWORK_H -#define SYSTEMINFOWORK_H - -#include -#include -#include - -class SystemInfoDBusProxy; -namespace DCC_NAMESPACE{ - -class SystemInfoModel; -class SystemInfoWork : public QObject -{ - Q_OBJECT -public: - explicit SystemInfoWork(SystemInfoModel* model, QObject* parent = nullptr); - - void activate(); - void deactivate(); - - //void loadGrubSettings(); - QPair getGNULicenseText(); - QString getEndUserAgreementText(); - -Q_SIGNALS: - void requestSetAutoHideDCC(const bool visible) const; - -public Q_SLOTS: - void showActivatorDialog(); - void onSetHostname(const QString &hostname); - void onSetHostnameFinish(); - -private: - void getLicenseState(); - -private: - SystemInfoModel *m_model; - SystemInfoDBusProxy *m_systemInfDBusProxy; -}; - -} -#endif // SYSTEMINFOWORK_H diff --git a/dcc-old/src/plugin-systeminfo/window/SystemInfoPlugin.json b/dcc-old/src/plugin-systeminfo/window/SystemInfoPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/SystemInfoPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-systeminfo/window/hostnameitem.cpp b/dcc-old/src/plugin-systeminfo/window/hostnameitem.cpp deleted file mode 100644 index 1d3d5126a7..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/hostnameitem.cpp +++ /dev/null @@ -1,269 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "hostnameitem.h" - -#include "dtkwidget_global.h" - -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -// if there is lid, it is laptop -inline bool islaptop() -{ - return QDir("/proc/acpi/button/lid").exists(); -} - -HostNameEdit::HostNameEdit(QWidget *parent) - : DLineEdit(parent) -{ - lineEdit()->setAcceptDrops(false); - lineEdit()->setContextMenuPolicy(Qt::NoContextMenu); - lineEdit()->installEventFilter(this); -} - -bool HostNameEdit::eventFilter(QObject *obj, QEvent *event) -{ - if (obj == lineEdit() && event->type() == QEvent::KeyPress) { - QKeyEvent *e = dynamic_cast(event); - if (e->matches(QKeySequence::Copy) || e->matches(QKeySequence::Cut) - || e->matches(QKeySequence::Paste)) { - return true; - } - - if (e->key() >= 0x20 && e->key() <= 0x0a1) { - // 首先判断键盘事件带的字符串是否为符合"^[A-Za-z0-9-]+$"规则 - QRegularExpression regx("^[A-Za-z0-9-]+$"); - QRegularExpressionValidator v(regx); - QString text = e->text(); - int pos = 0; - if (QValidator::Acceptable != v.validate(text, pos)) { - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } - } - } - return DLineEdit::eventFilter(obj, event); -} - -HostNameItem::HostNameItem(QWidget *parent) - : SettingsItem(parent) - , m_computerLabel(new QLabel(this)) - , m_hostNameLabel(new DLabel(this)) - , m_hostNameBtn(new QToolButton(this)) - , m_hostNameLineEdit(new HostNameEdit(this)) - , m_iconName{ islaptop() ? "icon_about_laptop" : "icon_about_pc" } -{ - initUI(); -} - -void HostNameItem::setHostName(const QString &name) -{ - m_hostname = name; - const QString &text = getElidedText(name); - m_hostNameLabel->setText(text); -} - -void HostNameItem::onSetError(const QString &error) -{ - m_hostNameLineEdit->setVisible(true); - m_hostNameLabel->setVisible(false); - m_hostNameBtn->setVisible(false); - m_hostNameLineEdit->setAlert(true); - m_hostNameLineEdit->showAlertMessage(error, this); - m_alertMessage = error; - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); -} - -void HostNameItem::resizeEvent(QResizeEvent *event) -{ - if (!m_hostNameLineEdit) - return; - - if (m_hostNameLineEdit->isAlert()) { - m_hostNameLineEdit->hideAlertMessage(); - m_hostNameLineEdit->showAlertMessage(m_alertMessage, this); - } - - if (m_hostNameLineEdit->lineEdit() && !m_hostnameEdit.isEmpty()) { - m_hostNameLineEdit->lineEdit()->setText(m_hostnameEdit); - QString txt = getElidedText(m_hostnameEdit); - m_hostNameLabel->setText(txt); - } - SettingsItem::resizeEvent(event); -} - -void HostNameItem::initUI() -{ - // 添加主机名称 - QVBoxLayout *hostNameLayout = new QVBoxLayout(this); - hostNameLayout->setSpacing(0); - hostNameLayout->setMargin(0); - m_computerLabel->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - m_computerLabel->setPixmap(DIconTheme::findQIcon(m_iconName).pixmap(200, 200)); - - hostNameLayout->addWidget(m_computerLabel); - - QHBoxLayout *editHostLayout = new QHBoxLayout; - m_hostNameLabel->setForegroundRole(DPalette::TextTips); - - m_hostNameBtn->setIcon(DIconTheme::findQIcon("dcc_edit")); - m_hostNameBtn->setIconSize(QSize(12, 12)); - m_hostNameBtn->setFixedSize(36, 36); - - QRegExp regx("^[A-Za-z0-9-]{0,64}$"); - QValidator *validator = new QRegExpValidator(regx, m_hostNameLineEdit); - m_hostNameLineEdit->lineEdit()->setValidator(validator); - m_hostNameLineEdit->setAlertMessageAlignment(Qt::AlignHCenter); - m_hostNameLineEdit->lineEdit()->setAlignment(Qt::AlignHCenter); - m_hostNameLineEdit->setFixedHeight(36); - m_hostNameLineEdit->lineEdit()->setTextMargins(0, 0, 0, 0); - m_hostNameLineEdit->hide(); - - editHostLayout->addStretch(); - editHostLayout->addWidget(m_hostNameLabel); - editHostLayout->addWidget(m_hostNameBtn); - editHostLayout->addWidget(m_hostNameLineEdit); - editHostLayout->addStretch(); - - hostNameLayout->addLayout(editHostLayout); - - setContentsMargins(0, 0, 0, 30); - // 点击编辑按钮 - connect(m_hostNameBtn, &QToolButton::clicked, this, &HostNameItem::onToolButtonButtonClicked); - connect(m_hostNameLineEdit, &DLineEdit::focusChanged, this, &HostNameItem::onFocusChanged); - connect(m_hostNameLineEdit, &DLineEdit::textEdited, this, &HostNameItem::onTextEdited); - connect(m_hostNameLineEdit, &DLineEdit::alertChanged, this, &HostNameItem::onAlertChanged); - connect(m_hostNameLineEdit->lineEdit(), - &QLineEdit::editingFinished, - this, - &HostNameItem::onEditingFinished); - connect(DGuiApplicationHelper::instance(), - &DGuiApplicationHelper::themeTypeChanged, - this, - [this] { - m_computerLabel->setPixmap(DIconTheme::findQIcon(m_iconName).pixmap(200, 200)); - }); -} - -QString HostNameItem::getElidedText(const QString &hostname) -{ - return m_hostNameLabel->fontMetrics().elidedText(hostname, - Qt::ElideRight, - m_computerLabel->width(), - 0); -} - -void HostNameItem::onEditingFinished() -{ - QString hostName = m_hostNameLineEdit->lineEdit()->text(); - if (hostName == m_hostname || hostName.simplified().isEmpty()) { - m_hostNameLineEdit->lineEdit()->clearFocus(); - m_hostnameEdit.clear(); - m_hostNameLineEdit->setVisible(false); - m_hostNameLabel->setVisible(true); - m_hostNameBtn->setVisible(true); - if (m_hostNameLineEdit->isAlert()) { - m_hostNameLineEdit->setAlert(false); - m_hostNameLineEdit->hideAlertMessage(); - } - return; - } - - if (!hostName.isEmpty()) { - if ((hostName.startsWith('-') || hostName.endsWith('-')) && hostName.size() <= 63) { - m_hostNameLineEdit->setAlert(true); - m_hostNameLineEdit->showAlertMessage(tr("It cannot start or end with dashes"), this); - m_alertMessage = tr("It cannot start or end with dashes"); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } else { - m_hostNameLineEdit->setAlert(false); - m_hostNameLineEdit->hideAlertMessage(); - } - - if (!m_hostNameLineEdit->isAlert()) { - m_hostNameLineEdit->lineEdit()->clearFocus(); - m_hostnameEdit.clear(); - m_hostNameLineEdit->setVisible(false); - m_hostNameLabel->setVisible(true); - m_hostNameBtn->setVisible(true); - Q_EMIT hostNameChanged(hostName); - } - } -} - -void HostNameItem::onAlertChanged() -{ - // 输入框保持透明背景 - QPalette palette = m_hostNameLineEdit->lineEdit()->palette(); - palette.setColor(QPalette::Button, Qt::transparent); - m_hostNameLineEdit->lineEdit()->setPalette(palette); -} - -void HostNameItem::onTextEdited(const QString &hostName) -{ - m_hostnameEdit = hostName; - if (!hostName.isEmpty()) { - if (hostName.size() > 63) { - m_hostNameLineEdit->lineEdit()->backspace(); - m_hostNameLineEdit->setAlert(true); - m_hostNameLineEdit->showAlertMessage(tr("1~63 characters please"), this); - m_alertMessage = tr("1~63 characters please"); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } else if (m_hostNameLineEdit->isAlert()) { - m_hostNameLineEdit->setAlert(false); - m_hostNameLineEdit->hideAlertMessage(); - } - } else if (m_hostNameLineEdit->isAlert()) { - m_hostNameLineEdit->setAlert(false); - m_hostNameLineEdit->hideAlertMessage(); - } -} - -void HostNameItem::onFocusChanged(const bool onFocus) -{ - QString hostName = m_hostNameLineEdit->lineEdit()->text(); - if (!onFocus && hostName.isEmpty()) { - m_hostnameEdit.clear(); - m_hostNameLineEdit->setVisible(false); - m_hostNameLabel->setVisible(true); - m_hostNameBtn->setVisible(true); - } else if (!onFocus && !hostName.isEmpty()) { - if ((hostName.startsWith('-') || hostName.endsWith('-')) && hostName.size() <= 63) { - m_hostNameLineEdit->setAlert(true); - m_hostNameLineEdit->showAlertMessage(tr("It cannot start or end with dashes"), this); - m_alertMessage = tr("It cannot start or end with dashes"); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } else if (hostName.size() > 63) { - m_hostNameLineEdit->setAlert(true); - m_hostNameLineEdit->showAlertMessage(tr("1~63 characters please"), this); - m_alertMessage = tr("1~63 characters please"); - DDesktopServices::playSystemSoundEffect(DDesktopServices::SSE_Error); - } - } -} - -void HostNameItem::onToolButtonButtonClicked() -{ - m_hostNameBtn->setVisible(false); - m_hostNameLabel->setVisible(false); - m_hostNameLineEdit->setVisible(true); - m_hostNameLineEdit->setAlert(false); - m_hostNameLineEdit->setText(m_hostname); - m_hostNameLineEdit->hideAlertMessage(); - m_hostNameLineEdit->lineEdit()->setFocus(); - m_hostNameLineEdit->lineEdit()->selectAll(); -} diff --git a/dcc-old/src/plugin-systeminfo/window/hostnameitem.h b/dcc-old/src/plugin-systeminfo/window/hostnameitem.h deleted file mode 100644 index 6233a27f86..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/hostnameitem.h +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include - -#include - -DWIDGET_BEGIN_NAMESPACE -class DLabel; -DWIDGET_END_NAMESPACE -class QLabel; -class QToolButton; - -class HostNameEdit : public DTK_WIDGET_NAMESPACE::DLineEdit -{ - Q_OBJECT -public: - explicit HostNameEdit(QWidget *parent = nullptr); - -protected: - bool eventFilter(QObject *, QEvent *) override; -}; - -class HostNameItem : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT -public: - explicit HostNameItem(QWidget *parent = nullptr); - - void setHostName(const QString &name); - void onSetError(const QString &error); - -Q_SIGNALS: - void hostNameChanged(const QString &name); - -protected: - void resizeEvent(QResizeEvent *event) override; - -private: - void initUI(); - QString getElidedText(const QString &string); - - void onToolButtonButtonClicked(); - void onFocusChanged(const bool onFocus); - void onTextEdited(const QString &hostName); - void onAlertChanged(); - void onEditingFinished(); - -private: - QLabel *m_computerLabel; - Dtk::Widget::DLabel *m_hostNameLabel; - QToolButton *m_hostNameBtn; - HostNameEdit *m_hostNameLineEdit; - QString m_alertMessage; - QString m_hostname; // 保存计算机的全名 - QString m_hostnameEdit; // 保存编辑时的数 - QString m_iconName; // -}; diff --git a/dcc-old/src/plugin-systeminfo/window/logoitem.cpp b/dcc-old/src/plugin-systeminfo/window/logoitem.cpp deleted file mode 100644 index d3f301d28a..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/logoitem.cpp +++ /dev/null @@ -1,60 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "logoitem.h" - -#include -#include -#include -#include -#include - -#include -DGUI_USE_NAMESPACE - -#define FRAME_WIDTH 408 -#define NAVBAR_WIDTH 56 - -namespace DCC_NAMESPACE { - -LogoItem::LogoItem(QFrame *parent) - : SettingsItem(parent) -{ - m_logo = new QLabel; - m_description = new QLabel; - m_description->setWordWrap(false); - - QHBoxLayout *layout = new QHBoxLayout; - layout->addStretch(); - layout->addWidget(m_logo); - layout->setSpacing(5); - layout->addWidget(m_description); - layout->addStretch(); - layout->setContentsMargins(0, 0, 0, 0); - - setLayout(layout); - - m_description->setVisible(false); -} - -void LogoItem::setDescription(const QString &des) -{ - m_description->setScaledContents(true); - m_description->setText(des); -} - -void LogoItem::setDescription(bool isVisible) -{ - m_description->setVisible(isVisible); -} - -void LogoItem::setLogo(const QString &logo) -{ - m_logo->setPixmap(DIconTheme::findQIcon(logo).pixmap(100, 20)); -} - -const QString LogoItem::logo() -{ - return m_logo->text(); -} -} // namespace DCC_NAMESPACE diff --git a/dcc-old/src/plugin-systeminfo/window/logoitem.h b/dcc-old/src/plugin-systeminfo/window/logoitem.h deleted file mode 100644 index 4086e440cf..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/logoitem.h +++ /dev/null @@ -1,31 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef LOGOITEM_H -#define LOGOITEM_H - -#include "widgets/settingsitem.h" - -class QLabel; -namespace DCC_NAMESPACE { - -class LogoItem : public SettingsItem -{ - Q_OBJECT - - Q_PROPERTY(QString logo READ logo WRITE setLogo DESIGNABLE true SCRIPTABLE true) - -public: - explicit LogoItem(QFrame *parent = 0); - void setDescription(const QString &des); - void setDescription(bool isVisible);//修改m_description是否默认不显示 - void setLogo(const QString &logo); - const QString logo(); - -private: - QLabel *m_logo; - QLabel *m_description; -}; - -} -#endif // LOGOITEM_H diff --git a/dcc-old/src/plugin-systeminfo/window/privacypolicywidget.cpp b/dcc-old/src/plugin-systeminfo/window/privacypolicywidget.cpp deleted file mode 100644 index 1d8aa6b001..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/privacypolicywidget.cpp +++ /dev/null @@ -1,61 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "privacypolicywidget.h" -#include "widgets/titlelabel.h" - -#include -#include -#include - -#include -#include -#include - - -DWIDGET_USE_NAMESPACE -DCORE_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -static bool useDeepinLicense () { - static bool useDeepinLicense = DSysInfo::productType() != DSysInfo::ProductType::Uos; - return useDeepinLicense; -} - -PrivacyPolicyWidget::PrivacyPolicyWidget(QWidget *parent) - : QWidget(parent) -{ - setAccessibleName("PrivacyPolicyWidget"); - QFrame *widget = new QFrame(this); - auto layout = new QVBoxLayout(this); - layout->setAlignment(Qt::AlignTop); - layout->addSpacing(20); - - TitleLabel *labelOutput = new TitleLabel(tr("Privacy Policy"),this); - DFontSizeManager::instance()->bind(labelOutput, DFontSizeManager::T5, QFont::DemiBold); - layout->addWidget(labelOutput, 0, Qt::AlignTop | Qt::AlignHCenter); - layout->addSpacing(20); - - QString text; - QString http = useDeepinLicense() ? tr("https://www.deepin.org/en/agreement/privacy/") : tr("https://www.uniontech.com/agreement/privacy-en"); - text = tr("

We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.

" - "

You can click here to view our latest privacy policy and/or view it online by visiting %1. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.

") - .arg(http); - - DTipLabel *label = new DTipLabel(text,this); - - label->setTextFormat(Qt::RichText); - label->setAlignment(Qt::AlignJustify | Qt::AlignLeft); - label->setWordWrap(true); - QObject::connect(label, &QLabel::linkActivated, this, &PrivacyPolicyWidget::onLinkActivated); - - layout->addWidget(label); - widget->setLayout(layout); - setLayout(layout); - setContentsMargins(0, 8, 0, 8); -} - -void PrivacyPolicyWidget::onLinkActivated(const QString link) -{ - QDesktopServices::openUrl(QUrl(link)); -} diff --git a/dcc-old/src/plugin-systeminfo/window/privacypolicywidget.h b/dcc-old/src/plugin-systeminfo/window/privacypolicywidget.h deleted file mode 100644 index 91a030b3d9..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/privacypolicywidget.h +++ /dev/null @@ -1,22 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include - -namespace DCC_NAMESPACE { - -class PrivacyPolicyWidget : public QWidget -{ - Q_OBJECT -public: - explicit PrivacyPolicyWidget(QWidget *parent = nullptr); - -public Q_SLOTS: - void onLinkActivated(const QString link); -}; - -} diff --git a/dcc-old/src/plugin-systeminfo/window/systeminfomodule.cpp b/dcc-old/src/plugin-systeminfo/window/systeminfomodule.cpp deleted file mode 100644 index 233927af0d..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/systeminfomodule.cpp +++ /dev/null @@ -1,326 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "systeminfomodule.h" - -#include "hostnameitem.h" -#include "interface/pagemodule.h" -#include "interface/vlistmodule.h" -#include "logoitem.h" -#include "operation/systeminfomodel.h" -#include "operation/systeminfowork.h" -#include "privacypolicywidget.h" -#include "src/frame/utils.h" -#include "userlicensewidget.h" -#include "versionprotocolwidget.h" -#include "widgets/settingsgroupmodule.h" -#include "widgets/titlevalueitem.h" -#include "widgets/widgetmodule.h" -#include "window/utils.h" - -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -DGUI_USE_NAMESPACE - -const QString PLATFORM_NAME = std::visit([]() -> QString { - QString platformname = QGuiApplication::platformName(); - if (platformname.contains("xcb")) { - platformname = "X11"; - } else if (platformname.contains("wayland")) { - platformname = "Wayland"; - } - return platformname; -}); - - -using namespace DCC_NAMESPACE; -DCORE_USE_NAMESPACE - -SystemInfoModule::SystemInfoModule(QObject *parent) - : HListModule(parent) - , m_model(new SystemInfoModel(this)) - , m_work(new SystemInfoWork(m_model, this)) -{ - initChildModule(); -} - -SystemInfoModule::~SystemInfoModule() -{ - m_model->deleteLater(); - m_work->deleteLater(); -} - -void SystemInfoModule::active() -{ - m_work->activate(); -} - -// clang-format off -void SystemInfoModule::initChildModule() -{ - // 二级菜单--关于本机 - ModuleObject *moduleAboutPc = new PageModule("aboutThisPc", tr("About This PC"), this); - appendChild(moduleAboutPc); - - moduleAboutPc->appendChild(new WidgetModule("hostName", tr("Computer Name"), this, &SystemInfoModule::initHostnameModule)); - SettingsGroupModule *sysInfoGroup = new SettingsGroupModule("systemInfo", tr("systemInfo")); - moduleAboutPc->appendChild(sysInfoGroup); - - // systemInfoGroup - if (DSysInfo::uosType() == DSysInfo::UosType::UosServer - || DSysInfo::uosType() == DSysInfo::UosType::UosDesktop) { - sysInfoGroup->appendChild( - new WidgetModule("osName", tr("OS Name"), this, &SystemInfoModule::initOSNameModule)); - sysInfoGroup->appendChild( - new WidgetModule("version", tr("Version"), this, &SystemInfoModule::initVersionModule)); - } - - sysInfoGroup->appendChild( - new WidgetModule("edition", tr("Edition"), this, &SystemInfoModule::initEditionModule)); - sysInfoGroup->appendChild( - new WidgetModule("type", tr("Type"), this, &SystemInfoModule::initTypeModule)); - if (!(IS_COMMUNITY_SYSTEM || DSysInfo::UosEditionUnknown == DSysInfo::uosEditionType()) - && DSysInfo::uosEditionType() != DSysInfo::UosEnterpriseC) { - sysInfoGroup->appendChild( - new WidgetModule("authorization", tr("Authorization"), this, &SystemInfoModule::initAuthorizationModule)); - } - sysInfoGroup->appendChild(new WidgetModule("processor", tr("Processor"), this, &SystemInfoModule::initProcessorModule)); - sysInfoGroup->appendChild(new WidgetModule("memory", tr("Memory"), this, &SystemInfoModule::initMemoryModule)); - sysInfoGroup->appendChild(new WidgetModule("graphics", tr("Graphics Platform"), this, &SystemInfoModule::initGraphicsPlatformModule)); - sysInfoGroup->appendChild(new WidgetModule("kernel", tr("Kernel"), this, &SystemInfoModule::initKernelModule)); - auto copyrightBottom = new WidgetModule("", "", this, &SystemInfoModule::initLogoModule); - copyrightBottom->setExtra(true); - - moduleAboutPc->appendChild(copyrightBottom); - - // 二级菜单--协议与隐私政策 - ModuleObject *moduleAgreement = new VListModule("agreement", tr("Agreements and Privacy Policy"), DIconTheme::findQIcon("dcc_version"), this); - - // 三级菜单--协议与隐私政策-版本协议 - ModuleObject *moduleEdition = new PageModule("editionLicense", tr("Edition License"), DIconTheme::findQIcon("dcc_version"), moduleAgreement); - moduleEdition->appendChild(new WidgetModule("editionLicense", tr("Edition License"), this, &SystemInfoModule::initGnuLicenseModule)); - moduleAgreement->appendChild(moduleEdition); - if (auto licensepath = DCC_LICENSE::isEndUserAgreementExist(); licensepath.exist) { - m_model->setEndUserAgreementPath(licensepath.path); - // 三级菜单--协议与隐私政策-最终用户许可协议 - ModuleObject *moduleUserAgreement = new PageModule("endUserLicenseAgreement", tr("End User License Agreement"), DIconTheme::findQIcon("dcc_protocol"), moduleAgreement); - moduleUserAgreement->appendChild(new WidgetModule("endUserLicenseAgreement", tr("End User License Agreement"), this, &SystemInfoModule::initUserLicenseModule)); - moduleAgreement->appendChild(moduleUserAgreement); - } - // 三级菜单--协议与隐私政策-隐私政策 - ModuleObject *modulePolicy = new PageModule("privacyPolicy", tr("Privacy Policy"), DIconTheme::findQIcon("dcc_privacy_policy"), moduleAgreement); - modulePolicy->appendChild(new WidgetModule()); - moduleAgreement->appendChild(modulePolicy); - - appendChild(moduleAgreement); -} - -static bool useDeepinCopyright () { - static bool useDeepinCopyright = DSysInfo::productType() != DSysInfo::ProductType::Uos; - return useDeepinCopyright; -} - -// clang-format on - -const QString systemCopyright() -{ - const QSettings settings("/etc/deepin-installer.conf", QSettings::IniFormat); - const QString &oem_copyright = settings.value("system_info_vendor_name").toString().toLatin1(); - if (oem_copyright.isEmpty()) { - if (useDeepinCopyright()) - return QApplication::translate("LogoModule", "Copyright© 2011-%1 Deepin Community") - .arg(QString(__DATE__).right(4)); - else - return QApplication::translate( - "LogoModule", - "Copyright© 2019-%1 UnionTech Software Technology Co., LTD") - .arg(QString(__DATE__).right(4)); - } else { - return oem_copyright; - } -} - -void SystemInfoModule::initLogoModule(LogoItem *item) -{ - item->setDescription(true); // 显示文字描述 - item->setDescription(systemCopyright()); // LogoItem构造函数: set the discription visible=false - item->setLogo(DSysInfo::distributionOrgLogo(DSysInfo::Distribution, DSysInfo::Normal)); -} - -void SystemInfoModule::initHostnameModule(HostNameItem *item) -{ - // 需要在初始化后进行设置,因为要获取width()属性 - QTimer::singleShot(0, item, [this, item] { - item->setHostName(m_model->hostName()); - }); - connect(m_model, &SystemInfoModel::hostNameChanged, item, &HostNameItem::setHostName); - connect(m_model, &SystemInfoModel::setHostNameError, item, &HostNameItem::onSetError); - connect(item, &HostNameItem::hostNameChanged, m_work, &SystemInfoWork::onSetHostname); -} - -void SystemInfoModule::initOSNameModule(TitleValueItem *item) -{ - item->addBackground(); - item->setTitle(tr("OS Name") + ':'); - item->setValue(m_model->productName()); - connect(m_model, &SystemInfoModel::productNameChanged, item, &TitleValueItem::setValue); -} - -void SystemInfoModule::initVersionModule(TitleValueItem *item) -{ - item->addBackground(); - item->setTitle(tr("Version") + ':'); - item->setValue(m_model->versionNumber()); - connect(m_model, &SystemInfoModel::versionNumberChanged, item, &TitleValueItem::setValue); -} - -void SystemInfoModule::initEditionModule(TitleValueItem *item) -{ - item->addBackground(); - item->setTitle(tr("Edition") + ':'); - item->setValue(m_model->version()); - connect(m_model, &SystemInfoModel::versionChanged, item, &TitleValueItem::setValue); -} - -void SystemInfoModule::initTypeModule(TitleValueItem *item) -{ - item->addBackground(); - item->setTitle(tr("Type") + ':'); - item->setValue(tr("%1-bit").arg(m_model->type())); - connect(m_model, &SystemInfoModel::typeChanged, item, &TitleValueItem::setValue); -} - -void setLicenseState(TitleAuthorizedItem *const authorized, DCC_NAMESPACE::ActiveState state) -{ - if (state == Authorized) { - authorized->setValue(QObject::tr("Activated")); - authorized->setValueForegroundRole(QColor(21, 187, 24)); - authorized->setButtonText(QObject::tr("View")); - } else if (state == Unauthorized) { - authorized->setValue(QObject::tr("To be activated")); - authorized->setValueForegroundRole(QColor(255, 87, 54)); - authorized->setButtonText(QObject::tr("Activate")); - } else if (state == AuthorizedLapse) { - authorized->setValue(QObject::tr("Expired")); - authorized->setValueForegroundRole(QColor(255, 87, 54)); - authorized->setButtonText(QObject::tr("View")); - } else if (state == TrialAuthorized) { - authorized->setValue(QObject::tr("In trial period")); - authorized->setValueForegroundRole(QColor(255, 170, 0)); - authorized->setButtonText(QObject::tr("Activate")); - } else if (state == TrialExpired) { - authorized->setValue(QObject::tr("Trial expired")); - authorized->setValueForegroundRole(QColor(255, 87, 54)); - authorized->setButtonText(QObject::tr("Activate")); - } -} - -void SystemInfoModule::initAuthorizationModule(TitleAuthorizedItem *item) -{ - item->addBackground(); - item->setTitle(tr("Authorization") + ':'); - setLicenseState(item, m_model->licenseState()); - connect(m_model, &SystemInfoModel::licenseStateChanged, item, [item](ActiveState state) { - setLicenseState(item, state); - }); - connect(item, &TitleAuthorizedItem::clicked, m_work, &SystemInfoWork::showActivatorDialog); -} - -void SystemInfoModule::initKernelModule(TitleValueItem *item) -{ - item->addBackground(); - item->setTitle(tr("Kernel") + ':'); - item->setValue(m_model->kernel()); - connect(m_model, &SystemInfoModel::kernelChanged, item, &TitleValueItem::setValue); -} - -void SystemInfoModule::initProcessorModule(TitleValueItem *item) -{ - item->addBackground(); - item->setTitle(tr("Processor") + ':'); - item->setValue(m_model->processor()); - connect(m_model, &SystemInfoModel::processorChanged, item, &TitleValueItem::setValue); -} - -void SystemInfoModule::initMemoryModule(TitleValueItem *item) -{ - item->addBackground(); - item->setTitle(tr("Memory") + ':'); - item->setValue(m_model->memory()); - connect(m_model, &SystemInfoModel::memoryChanged, item, &TitleValueItem::setValue); -} - -void SystemInfoModule::initGraphicsPlatformModule(TitleValueItem *item) -{ - item->addBackground(); - item->setTitle(tr("Graphics Platform") + ':'); - item->setValue(PLATFORM_NAME); -} - -void SystemInfoModule::initGnuLicenseModule(VersionProtocolWidget *item) -{ - if (m_model->gnuLicense().has_value()) { - item->setLicense(m_model->gnuLicense().value()); - } else { - QFutureWatcher> *w = - new QFutureWatcher>(this); - - connect(w, &QFutureWatcher>::finished, this, [=] { - const auto r = w->result(); - item->setLicense(r); - }); - - w->setFuture(QtConcurrent::run([this] { - return m_work->getGNULicenseText(); - })); - } -} - -void SystemInfoModule::initUserLicenseModule(UserLicenseWidget *item) -{ - if (m_model->endUserAgreement().has_value()) { - item->setUserLicense(m_model->endUserAgreement().value()); - } else { - QFutureWatcher *w = new QFutureWatcher(this); - - connect(w, &QFutureWatcher::finished, this, [=] { - const auto r = w->result(); - item->setUserLicense(r); - }); - - w->setFuture(QtConcurrent::run([this] { - return m_work->getEndUserAgreementText(); - })); - } -} - -QString SystemInfoPlugin::name() const -{ - return QStringLiteral("systeminfo"); -} - -ModuleObject *SystemInfoPlugin::module() -{ - // 一级菜单--系统信息 - SystemInfoModule *moduleInterface = new SystemInfoModule(); - moduleInterface->setName("systeminfo"); - moduleInterface->setDisplayName(tr("System Info")); - moduleInterface->setIcon(DIconTheme::findQIcon("dcc_nav_systeminfo")); - - return moduleInterface; -} - -QString SystemInfoPlugin::location() const -{ - return "21"; -} diff --git a/dcc-old/src/plugin-systeminfo/window/systeminfomodule.h b/dcc-old/src/plugin-systeminfo/window/systeminfomodule.h deleted file mode 100644 index 7b88c7fe09..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/systeminfomodule.h +++ /dev/null @@ -1,72 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "interface/hlistmodule.h" -#include "interface/plugininterface.h" -#include "window/userlicensewidget.h" -#include "window/versionprotocolwidget.h" - -class HostNameItem; - -namespace DCC_NAMESPACE { -class SystemInfoModel; -class SystemInfoWork; -class TitleValueItem; -class LogoItem; -class TitleAuthorizedItem; -class SystemInfoPlugin : public PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.SystemInfo" FILE "SystemInfoPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - virtual QString name() const override; - virtual ModuleObject *module() override; - virtual QString location() const override; -}; - -class SystemInfoModule : public HListModule -{ - Q_OBJECT -public: - enum SystemType { - Default = -1, - AboutThisPC, - EditionLicense, - EndUserLicenseAgreement, - PrivacyPolicy, - MaxType - }; - -public: - explicit SystemInfoModule(QObject *parent = nullptr); - ~SystemInfoModule(); - -protected: - virtual void active() override; - -private: - void initChildModule(); - void initLogoModule(LogoItem *item); - void initHostnameModule(HostNameItem *item); - void initOSNameModule(TitleValueItem *item); - void initVersionModule(TitleValueItem *item); - void initEditionModule(TitleValueItem *item); - void initTypeModule(TitleValueItem *item); - void initAuthorizationModule(TitleAuthorizedItem *item); - void initKernelModule(TitleValueItem *item); - void initProcessorModule(TitleValueItem *item); - void initMemoryModule(TitleValueItem *item); - void initGraphicsPlatformModule(TitleValueItem *item); - void initGnuLicenseModule(VersionProtocolWidget *item); - void initUserLicenseModule(UserLicenseWidget *item); - -private: - SystemInfoModel *m_model; - SystemInfoWork *m_work; -}; - -} diff --git a/dcc-old/src/plugin-systeminfo/window/userlicensewidget.cpp b/dcc-old/src/plugin-systeminfo/window/userlicensewidget.cpp deleted file mode 100644 index 1288c9c072..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/userlicensewidget.cpp +++ /dev/null @@ -1,33 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "userlicensewidget.h" -#include -#include -#include - -using namespace DCC_NAMESPACE; - -UserLicenseWidget::UserLicenseWidget(QWidget *parent) - : QWidget(parent) -{ - QFrame *widget = new QFrame(this); - QVBoxLayout *layout = new QVBoxLayout(this); - - m_body = new QLabel(this); - m_body->setWordWrap(true); - - layout->setContentsMargins(10,10,11,10); - layout->addWidget(m_body); - layout->addStretch(); - - widget->setLayout(layout); - setLayout(layout); - setContentsMargins(0, 8, 0, 8); -} - -void UserLicenseWidget::setUserLicense(const QString &text) -{ - m_body->setText(text); - emit loadTextFinished(); -} diff --git a/dcc-old/src/plugin-systeminfo/window/userlicensewidget.h b/dcc-old/src/plugin-systeminfo/window/userlicensewidget.h deleted file mode 100644 index 89470732fa..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/userlicensewidget.h +++ /dev/null @@ -1,27 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include -#include - - -namespace DCC_NAMESPACE { - -class UserLicenseWidget : public QWidget -{ - Q_OBJECT -public: - explicit UserLicenseWidget(QWidget *parent = nullptr); - void setUserLicense(const QString &text); -Q_SIGNALS: - void loadTextFinished(); - -private: - QLabel *m_body; -}; - -} diff --git a/dcc-old/src/plugin-systeminfo/window/utils.h b/dcc-old/src/plugin-systeminfo/window/utils.h deleted file mode 100644 index aa31968120..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/utils.h +++ /dev/null @@ -1,254 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UTILS_H -#define UTILS_H - -#include - -#include -#include -#include - -inline const static QString serverEnduserAgreement_new = - "/usr/share/protocol/enduser-agreement/End-User-License-Agreement-Server-CN-%1.%2"; -inline const static QString serverEnduserAgreement_old = - "/usr/share/deepin-deepinid-client/privacy/End-User-License-Agreement-Server/" - "End-User-License-Agreement-Server-CN-%1.%2"; -inline const static QString eulerServerEnduserAgreement_new = - "/usr/share/protocol/enduser-agreement/End-User-License-Agreement-Server-Euler-%1.%2"; -inline const static QString homeEnduserAgreement_new = - "/usr/share/protocol/enduser-agreement/End-User-License-Agreement-Home-CN-%1.%2"; -inline const static QString homeEnduserAgreement_old = - "/usr/share/deepin-deepinid-client/privacy/End-User-License-Agreement-Home/" - "End-User-License-Agreement-Home-CN-%1.%2"; -inline const static QString professionalEnduserAgreement_new = - "/usr/share/protocol/enduser-agreement/End-User-License-Agreement-Professional-CN-%1.%2"; -inline const static QString professionalEnduserAgreement_old = - "/usr/share/deepin-deepinid-client/privacy/End-User-License-Agreement-Professional/" - "End-User-License-Agreement-Professional-CN-%1.%2"; -inline const static QString educationEnduserAgreement = - "/usr/share/protocol/enduser-agreement/End-User-License-Agreement-Education-CN-%1.%2"; -inline const static QString oldAgreement = - "/usr/share/deepin-deepinid-client/privacy/End-User-License-Agreement-%1.%2"; -inline static const QStringList DCC_CONFIG_FILES{ - "/etc/deepin/dde-control-center.conf", "/usr/share/dde-control-center/dde-control-center.conf" -}; - -inline static const QMap SYSTEM_LOCAL_MAP{ - { "zh_CN", "zh_CN" }, - { "zh_HK", "zh_HK" }, - { "zh_TW", "zh_TW" }, -}; - -inline static const QStringList SYSTEM_LOCAL_LIST{ - "zh_CN", - "zh_HK", - "zh_TW", - "ug_CN", // 维语 - "bo_CN" // 藏语 -}; - -inline bool isFileExist(const QString &path) -{ - QFile file(path); - return file.exists(); -} - -namespace DCC_LICENSE { -using Dtk::Core::DSysInfo; - -static const QString getLicensePath(const QString &filePath, const QString &type) -{ - const QString &locale{ QLocale::system().name() }; - QString lang = SYSTEM_LOCAL_LIST.contains(locale) ? locale : "en_US"; - - QString path = QString(filePath).arg(lang).arg(type); - if (isFileExist(path)) - return path; - else - return QString(filePath).arg("en_US").arg(type); -} - -inline const QString getLicenseText(const QString &filePath, const QString &type) -{ - QFile license(getLicensePath(filePath, type)); - if (!license.open(QIODevice::ReadOnly)) - return QString(); - - const QByteArray buf = license.readAll(); - license.close(); - - return buf; -} - -[[maybe_unused]] inline const QString getDevelopModeLicense(const QString &filePath, - const QString &type) -{ - const QString &locale{ QLocale::system().name() }; - QString lang; - if (SYSTEM_LOCAL_MAP.keys().contains(locale)) { - lang = { SYSTEM_LOCAL_MAP.value(QLocale::system().name(), "en_US") }; - } - - if (lang.isEmpty()) { - lang = { SYSTEM_LOCAL_MAP.value(QLocale::system().name(), "en_US") }; - } - - QString path = QString(filePath).arg(lang).arg(type); - QFile license(path); - if (!license.open(QIODevice::ReadOnly)) - return QString(); - - const QByteArray buf = license.readAll(); - license.close(); - - return buf; -} - -[[maybe_unused]] inline void getPrivacyFile(QString &zhCNContent, QString &enUSContent) -{ - // 使用新的协议文档路径 - const QString newCNContent = "/usr/share/protocol/privacy-policy/Privacy-Policy-CN-zh_CN.md"; - const QString newENContent = "/usr/share/protocol/privacy-policy/Privacy-Policy-CN-en_US.md"; - - const QString oldCNContent = "/usr/share/deepin-deepinid-client/privacy/deepinid-CN-zh_CN.md"; - const QString oldENContent = "/usr/share/deepin-deepinid-client/privacy/deepinid-CN-en_US.md"; - - QFile privacyzhCNFile(newCNContent); - zhCNContent = privacyzhCNFile.exists() ? newCNContent : oldENContent; - QFile privacyenUSFile(newENContent); - enUSContent = privacyzhCNFile.exists() ? newENContent : oldENContent; - // 目前社区版的协议只放在这个路径下,后续如果修改了,再作适配 - if (DSysInfo::isCommunityEdition()) { - zhCNContent = "/usr/share/deepin-deepinid-client/privacy/Privacy-Policy-Community/" - "Privacy-Policy-CN-zh_CN.md"; - enUSContent = "/usr/share/deepin-deepinid-client/privacy/Privacy-Policy-Community/" - "Privacy-Policy-CN-en_US.md"; - } -} - -[[maybe_unused]] inline QString getUserExpContent() -{ - QString userExpContent = getLicensePath("/usr/share/protocol/userexperience-agreement/" - "User-Experience-Program-License-Agreement-CN-%1.%2", - "md"); - if (DSysInfo::isCommunityEdition()) { - userExpContent = getLicensePath("/usr/share/deepin-deepinid-client/privacy/" - "User-Experience-Program-License-Agreement-Community/" - "User-Experience-Program-License-Agreement-CN-%1.%2", - "md"); - return userExpContent; - } - QFile newfile(userExpContent); - if (false == newfile.exists()) { - userExpContent = getLicensePath("/usr/share/deepin-deepinid-client/privacy/" - "User-Experience-Program-License-Agreement/" - "User-Experience-Program-License-Agreement-CN-%1.%2", - "md"); - QFile file(userExpContent); - if (false == file.exists()) { - userExpContent = getLicensePath("/usr/share/deepin-deepinid-client/privacy/" - "User-Experience-Program-License-Agreement-%1.%2", - "md"); - } - } - return userExpContent; -} - -struct LicenseSearchInfo -{ - bool exist; - QString path; -}; - -inline LicenseSearchInfo isEndUserAgreementExist() -{ - static LicenseSearchInfo oldAgreementExist = std::visit([] { - QString oldLicenseLocal = getLicensePath(oldAgreement, "txt"); - return LicenseSearchInfo{ QFile::exists(oldLicenseLocal), oldLicenseLocal }; - }); - - if (DSysInfo::uosType() == DSysInfo::UosType::UosServer) { - const QString bodypath_new = getLicensePath(serverEnduserAgreement_new, "txt"); - return LicenseSearchInfo{ QFile::exists(bodypath_new), bodypath_new }; - - } else if (DSysInfo::uosEditionType() == DSysInfo::UosEdition::UosHome) { - const QString bodypath_new = getLicensePath(homeEnduserAgreement_new, ""); - return LicenseSearchInfo{ QFile::exists(bodypath_new), bodypath_new }; - } else if (DSysInfo::isCommunityEdition()) { - auto file_pa = getLicensePath( - "/usr/share/deepin-deepinid-client/privacy/End-User-License-Agreement-Community/" - "End-User-License-Agreement-CN-%1.%2", - "txt"); - return LicenseSearchInfo{ QFile::exists(file_pa), file_pa }; - } else if (DSysInfo::uosEditionType() == DSysInfo::UosEdition::UosEducation) { - const QString bodypath = getLicensePath(educationEnduserAgreement, "txt"); - return { QFile::exists(bodypath), bodypath }; - } else { - const QString bodypath_new = getLicensePath(professionalEnduserAgreement_new, "txt"); - return { QFile::exists(bodypath_new), bodypath_new }; - } - - if (auto oldlicense = oldAgreementExist; oldlicense.exist) { - return oldlicense; - } - - return { false, QString() }; -} - -inline QString getEndUserAgreement(const QString &licensePath) -{ - QFile license(licensePath); - if (!license.open(QIODevice::ReadOnly)) - return QString(); - - const QByteArray buf = license.readAll(); - license.close(); - - return buf; -} - -inline QString getEulerEndUserAgreement() -{ - const QString bodypath_new = getLicensePath(eulerServerEnduserAgreement_new, "txt"); - if (QFile::exists(bodypath_new)) { - return getLicenseText(eulerServerEnduserAgreement_new, "txt"); - } else { - return getLicenseText( - "/usr/share/deepin-deepinid-client/privacy/End-User-License-Agreement-%1.%2", - "txt"); - } -} - -inline QPair loadLicenses() -{ - const QString title = getLicenseText(":/systeminfo/gpl/gpl-3.0-%1-%2.txt", "title"); - const QString body = getLicenseText(":/systeminfo/gpl/gpl-3.0-%1-%2.txt", "body"); - return QPair(title, body); -} -} // namespace DCC_LICENSE - -template -T valueByQSettings(const QStringList &configFiles, - const QString &group, - const QString &key, - const QVariant &failback) -{ - for (const QString &path : configFiles) { - QSettings settings(path, QSettings::IniFormat); - if (!group.isEmpty()) { - settings.beginGroup(group); - } - - const QVariant &v = settings.value(key); - if (v.isValid()) { - T t = v.value(); - return t; - } - } - - return failback.value(); -} - -#endif // UTILS_H diff --git a/dcc-old/src/plugin-systeminfo/window/versionprotocolwidget.cpp b/dcc-old/src/plugin-systeminfo/window/versionprotocolwidget.cpp deleted file mode 100644 index 174f52f79b..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/versionprotocolwidget.cpp +++ /dev/null @@ -1,40 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "versionprotocolwidget.h" -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; - -VersionProtocolWidget::VersionProtocolWidget(QWidget *parent) - : QWidget(parent) - , m_mainLayout(new QVBoxLayout(this)) - , m_title(new QLabel(this)) - , m_body(new QLabel(this)) -{ - m_body->setWordWrap(true); - - QFrame *widget = new QFrame(this); - - m_mainLayout->setContentsMargins(10, 10, 11, 10); - m_mainLayout->addSpacing(15); - m_mainLayout->addWidget(m_title, 0, Qt::AlignCenter); - m_mainLayout->addSpacing(20); - m_mainLayout->addWidget(m_body); - m_mainLayout->addStretch(); - - widget->setLayout(m_mainLayout); - setLayout(m_mainLayout); - setContentsMargins(0, 8, 0, 8); -} - -void VersionProtocolWidget::setLicense(const QPair &license) -{ - m_title->setText(license.first); - m_body->setText(license.second); - Q_EMIT loadTextFinished(); -} diff --git a/dcc-old/src/plugin-systeminfo/window/versionprotocolwidget.h b/dcc-old/src/plugin-systeminfo/window/versionprotocolwidget.h deleted file mode 100644 index 524e3f1ae8..0000000000 --- a/dcc-old/src/plugin-systeminfo/window/versionprotocolwidget.h +++ /dev/null @@ -1,33 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" - -#include - -QT_BEGIN_NAMESPACE -class QVBoxLayout; -class QLabel; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { - -class VersionProtocolWidget : public QWidget -{ - Q_OBJECT -public: - explicit VersionProtocolWidget(QWidget *parent = nullptr); - void setLicense(const QPair &license); - -Q_SIGNALS: - void loadTextFinished(); - -private: - QVBoxLayout *m_mainLayout; - QLabel *m_title; - QLabel *m_body; -}; - -} diff --git a/dcc-old/src/plugin-touchscreen/operation/monitordbusproxy.cpp b/dcc-old/src/plugin-touchscreen/operation/monitordbusproxy.cpp deleted file mode 100644 index f9a2d78483..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/monitordbusproxy.cpp +++ /dev/null @@ -1,28 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "monitordbusproxy.h" - -#include -#include -#include -#include -#include -#include - -MonitorDBusProxy::MonitorDBusProxy(QString monitorPath, QObject *parent) - : QObject(parent) - , m_monitorUserPath(monitorPath) -{ - init(); -} - -void MonitorDBusProxy::init() -{ - m_dBusMonitorInter = new QDBusInterface("org.deepin.dde.Display1", m_monitorUserPath, "org.deepin.dde.Display1.Monitor", QDBusConnection::sessionBus(), this); -} - -QString MonitorDBusProxy::name() -{ - return qvariant_cast(m_dBusMonitorInter->property("Name")); -} diff --git a/dcc-old/src/plugin-touchscreen/operation/monitordbusproxy.h b/dcc-old/src/plugin-touchscreen/operation/monitordbusproxy.h deleted file mode 100644 index 0e44bf09b1..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/monitordbusproxy.h +++ /dev/null @@ -1,38 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MONITORDBUSPROXY_H -#define MONITORDBUSPROXY_H - -#include -#include -#include - -class QDBusInterface; -class QDBusMessage; - -class MonitorDBusProxy : public QObject -{ - Q_OBJECT -public: - static inline const char *staticInterfaceName() - { return "org.deepin.dde.Display1.Monitor"; } - -public: - explicit MonitorDBusProxy(QString monitorPath, QObject *parent = nullptr); - Q_PROPERTY(QString Name READ name NOTIFY NameChanged) - QString name(); - -private: - void init(); - -Q_SIGNALS: // SIGNALS - void NameChanged(const QString & value) const; - -private: - QDBusInterface *m_dBusMonitorInter; - QDBusInterface *m_dBusMonitorPropertiesInter; - QString m_monitorUserPath; -}; - -#endif // MONITORDBUSPROXY_H diff --git a/dcc-old/src/plugin-touchscreen/operation/qrc/icons/dcc_nav_touchscreen_42px.svg b/dcc-old/src/plugin-touchscreen/operation/qrc/icons/dcc_nav_touchscreen_42px.svg deleted file mode 100644 index 504d0e0731..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/qrc/icons/dcc_nav_touchscreen_42px.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-touchscreen/operation/qrc/icons/dcc_nav_touchscreen_84px.svg b/dcc-old/src/plugin-touchscreen/operation/qrc/icons/dcc_nav_touchscreen_84px.svg deleted file mode 100644 index 0190c0cab8..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/qrc/icons/dcc_nav_touchscreen_84px.svg +++ /dev/null @@ -1,61 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-touchscreen/operation/qrc/touchscreen.qrc b/dcc-old/src/plugin-touchscreen/operation/qrc/touchscreen.qrc deleted file mode 100644 index eb61d1149c..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/qrc/touchscreen.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - icons/dcc_nav_touchscreen_42px.svg - icons/dcc_nav_touchscreen_84px.svg - - diff --git a/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel.cpp b/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel.cpp deleted file mode 100644 index 0b092023ac..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel.cpp +++ /dev/null @@ -1,90 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchscreenmodel.h" -#include "touchscreenmodel_p.h" -#include "monitordbusproxy.h" - -#include - -#include -#include - -TouchScreenModel::TouchScreenModel(QObject *parent) - : QObject(parent) - , DCC_INIT_PRIVATE(TouchScreenModel) -{ - -} - -TouchScreenModel::~TouchScreenModel() -{ - -} - -const TouchscreenInfoList_V2 &TouchScreenModel::touchScreenList() const -{ - Q_D(const TouchScreenModel); - return d->m_touchScreenList; -} - -const QStringList &TouchScreenModel::monitors() -{ - Q_D(const TouchScreenModel); - return d->m_monitors; -} - -const TouchscreenMap &TouchScreenModel::touchMap() const -{ - Q_D(const TouchScreenModel); - return d->m_touchMap; -} - -void TouchScreenModel::assoiateTouch(const QString &monitor, const QString &touchscreenUUID) -{ - Q_D(TouchScreenModel); - d->assoiateTouch(monitor, touchscreenUUID); -} - -void TouchScreenModel::assoiateTouchNotify() -{ - Q_D(TouchScreenModel); - d->assoiateTouchNotify(); -} - -void TouchScreenModelPrivate::monitorsChanged(const QList &monitors) -{ - if (monitors.empty()) - return; - - Q_Q(TouchScreenModel); - m_monitors.clear(); - for (const QDBusObjectPath &path : monitors) { - MonitorDBusProxy *inter = new MonitorDBusProxy(path.path()); - m_monitors << inter->name(); - } - Q_EMIT q->monitorsChanged(m_monitors); -} - -void TouchScreenModelPrivate::assoiateTouch(const QString &monitor, const QString &touchscreenUUID) -{ - m_displayProxy->AssociateTouchByUUID(monitor, touchscreenUUID); -} - -void TouchScreenModelPrivate::assoiateTouchNotify() -{ - DDBusSender() - .service("org.freedesktop.Notifications") - .path("/org/freedesktop/Notifications") - .interface("org.freedesktop.Notifications") - .method("Notify") - .arg(QString("dde-control-center")) - .arg(static_cast(QDateTime::currentMSecsSinceEpoch())) - .arg(QString("preferences-system")) - .arg(QObject::tr("Touch Screen Settings")) - .arg(QObject::tr("The settings of touch screen changed")) - .arg(QStringList()) - .arg(QVariantMap()) - .arg(3000) - .call(); -} diff --git a/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel.h b/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel.h deleted file mode 100644 index 3f45c1a11a..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel.h +++ /dev/null @@ -1,44 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENMODEL_H -#define TOUCHSCREENMODEL_H - -#include "types/touchscreeninfolist_v2.h" -#include "types/touchscreenmap.h" -#include "namespace.h" - - -#include -class TouchScreenModelPrivate; - -class TouchScreenModel : public QObject -{ - Q_OBJECT - DCC_DECLARE_PRIVATE(TouchScreenModel) -public: - explicit TouchScreenModel(QObject *parent = nullptr); - ~TouchScreenModel(); - - Q_PROPERTY(const TouchscreenInfoList_V2 touchScreenList READ touchScreenList NOTIFY touchScreenListChanged) - Q_PROPERTY(const QStringList monitors READ monitors NOTIFY monitorsChanged) - Q_PROPERTY(TouchscreenMap touchMap READ touchMap NOTIFY touchMapChanged) - - const TouchscreenInfoList_V2 &touchScreenList() const; - - const QStringList &monitors(); - - const TouchscreenMap &touchMap() const; - - void assoiateTouch(const QString &monitor, const QString &touchscreenUUID); - void assoiateTouchNotify(); - -Q_SIGNALS: - void touchScreenListChanged(const TouchscreenInfoList_V2 &newTouchScreenList); - void monitorsChanged(const QStringList monitors); - void touchMapChanged(); - -private: - TouchscreenMap m_touchMap; -}; -#endif // TOUCHSCREENMODEL_H diff --git a/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel_p.h b/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel_p.h deleted file mode 100644 index 3d95048fa6..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/touchscreenmodel_p.h +++ /dev/null @@ -1,76 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENMODEL_P_H -#define TOUCHSCREENMODEL_P_H - -#include "touchscreenmodel.h" -#include "touchscreenproxy.h" - -#include - -class TouchScreenModelPrivate -{ - Q_DECLARE_PUBLIC(TouchScreenModel) -public: - explicit TouchScreenModelPrivate(TouchScreenModel *object) - : q_ptr(object) - , m_displayProxy(new TouchScreenProxy(q_ptr)) - { - init(); - } - -public: - TouchScreenModel *q_ptr; - -protected: - void touchScreenListChanged(const TouchscreenInfoList_V2 &newTouchScreenList) - { - Q_Q(TouchScreenModel); - if (m_touchScreenList == newTouchScreenList) - return; - m_touchScreenList = newTouchScreenList; - Q_EMIT q->touchScreenListChanged(m_touchScreenList); - } - - void touchMapChanged(const TouchscreenMap &newTouchMap) - { - Q_Q(TouchScreenModel); - if (m_touchMap == newTouchMap) - return; - m_touchMap = newTouchMap; - Q_EMIT q->touchMapChanged(); - } - - void init() - { - QObject::connect(m_displayProxy, &TouchScreenProxy::TouchscreensV2Changed, q_ptr, - [this] (const TouchscreenInfoList_V2 &newTouchScreenList) { - touchScreenListChanged({newTouchScreenList}); - }); - QObject::connect(m_displayProxy, &TouchScreenProxy::MonitorsChanged, q_ptr, - [this] (const QList & monitors) { - monitorsChanged(monitors); - }); - QObject::connect(m_displayProxy, &TouchScreenProxy::TouchMapChanged, q_ptr, - [this] (TouchscreenMap value) { - touchMapChanged(value); - }); - monitorsChanged(m_displayProxy->monitors()); - touchScreenListChanged(m_displayProxy->touchscreensV2()); - touchMapChanged(m_displayProxy->touchMap()); - return; - } - - void monitorsChanged(const QList & monitors); - void assoiateTouch(const QString &monitor, const QString &touchscreenUUID); - void assoiateTouchNotify(); - -private: - TouchScreenProxy *m_displayProxy; - TouchscreenInfoList_V2 m_touchScreenList; - QStringList m_monitors; - TouchscreenMap m_touchMap; -}; - -#endif // TOUCHSCREENMODEL_P_H diff --git a/dcc-old/src/plugin-touchscreen/operation/touchscreenproxy.cpp b/dcc-old/src/plugin-touchscreen/operation/touchscreenproxy.cpp deleted file mode 100644 index b04032debe..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/touchscreenproxy.cpp +++ /dev/null @@ -1,40 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchscreenproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include - -using namespace DCC_NAMESPACE; - -TouchScreenProxy::TouchScreenProxy(QObject *parent) - : QObject(parent) - , m_displayInter(new DDBusInterface("org.deepin.dde.Display1", "/org/deepin/dde/Display1", "org.deepin.dde.Display1", QDBusConnection::sessionBus(), this)) -{ - registerTouchscreenInfoList_V2MetaType(); -} - -TouchscreenInfoList_V2 TouchScreenProxy::touchscreensV2() -{ - return qvariant_cast(m_displayInter->property("TouchscreensV2")); -} - -TouchscreenMap TouchScreenProxy::touchMap() -{ - return qvariant_cast(m_displayInter->property("TouchMap")); -} - -QList TouchScreenProxy::monitors() -{ - return qvariant_cast>(m_displayInter->property("Monitors")); -} - -QDBusPendingReply<> TouchScreenProxy::AssociateTouchByUUID(const QString &in0, const QString &in1) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1); - return m_displayInter->asyncCallWithArgumentList(QStringLiteral("AssociateTouchByUUID"), argumentList); -} - diff --git a/dcc-old/src/plugin-touchscreen/operation/touchscreenproxy.h b/dcc-old/src/plugin-touchscreen/operation/touchscreenproxy.h deleted file mode 100644 index 32a4335d77..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/touchscreenproxy.h +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENPROXY_H -#define TOUCHSCREENPROXY_H - -#include "interface/namespace.h" -#include "types/touchscreeninfolist_v2.h" -#include "types/touchscreenmap.h" - -#include - -#include -#include - -using Dtk::Core::DDBusInterface; - -class QDBusMessage; - -class TouchScreenProxy : public QObject -{ - Q_OBJECT -public: - explicit TouchScreenProxy(QObject *parent = nullptr); - - Q_PROPERTY(TouchscreenInfoList_V2 TouchscreensV2 READ touchscreensV2 NOTIFY TouchscreensV2Changed) - TouchscreenInfoList_V2 touchscreensV2(); - - Q_PROPERTY(TouchscreenMap TouchMap READ touchMap NOTIFY TouchMapChanged) - TouchscreenMap touchMap(); - - Q_PROPERTY(QList Monitors READ monitors NOTIFY MonitorsChanged) - QList monitors(); - -Q_SIGNALS: - void TouchscreensV2Changed(TouchscreenInfoList_V2 value); - void MonitorsChanged(const QList & value); - void TouchMapChanged(TouchscreenMap value); - -public Q_SLOTS: - QDBusPendingReply<> AssociateTouchByUUID(const QString &in0, const QString &in1); - -private: - DDBusInterface *m_displayInter; - TouchscreenInfoList_V2 m_TouchscreensList; - QList m_Monitors; - TouchscreenMap m_TouchMap; -}; - -#endif // TOUCHSCREENPROXY_H diff --git a/dcc-old/src/plugin-touchscreen/operation/types/touchscreeninfolist_v2.cpp b/dcc-old/src/plugin-touchscreen/operation/types/touchscreeninfolist_v2.cpp deleted file mode 100644 index 1f51be8618..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/types/touchscreeninfolist_v2.cpp +++ /dev/null @@ -1,42 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchscreeninfolist_v2.h" - -QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo_V2 &info) -{ - arg.beginStructure(); - arg << info.id << info.name << info.deviceNode << info.serialNumber << info.UUID; - arg.endStructure(); - - return arg; -} - -const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo_V2 &info) -{ - arg.beginStructure(); - arg >> info.id >> info.name >> info.deviceNode >> info.serialNumber >> info.UUID; - arg.endStructure(); - - return arg; -} - -bool operator==(const TouchscreenInfo_V2 &info1, const TouchscreenInfo_V2 &info2) { -{ - return info1.id == info2.id && info1.name == info2.name && info1.deviceNode == info2.deviceNode && info1.serialNumber == info2.serialNumber && info1.UUID == info2.UUID; -} -} - -void registerTouchscreenInfoV2MetaType() -{ - qRegisterMetaType("TouchscreenInfo_V2"); - qDBusRegisterMetaType(); -} - -void registerTouchscreenInfoList_V2MetaType() -{ - registerTouchscreenInfoV2MetaType(); - - qRegisterMetaType("TouchscreenInfoList_V2"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-touchscreen/operation/types/touchscreeninfolist_v2.h b/dcc-old/src/plugin-touchscreen/operation/types/touchscreeninfolist_v2.h deleted file mode 100644 index d02eab721e..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/types/touchscreeninfolist_v2.h +++ /dev/null @@ -1,31 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENINFOLISTV2_H -#define TOUCHSCREENINFOLISTV2_H - -#include -#include -#include - -struct TouchscreenInfo_V2 { - qint32 id; - QString name; - QString deviceNode; - QString serialNumber; - QString UUID; -}; - -bool operator==(const TouchscreenInfo_V2 &info1, const TouchscreenInfo_V2 &info2); - -typedef QList TouchscreenInfoList_V2; - -Q_DECLARE_METATYPE(TouchscreenInfo_V2) -Q_DECLARE_METATYPE(TouchscreenInfoList_V2) - -QDBusArgument &operator<<(QDBusArgument &arg, const TouchscreenInfo_V2 &info); -const QDBusArgument &operator>>(const QDBusArgument &arg, TouchscreenInfo_V2 &info); - -void registerTouchscreenInfoList_V2MetaType(); - -#endif // !TOUCHSCREENINFOLISTV2_H diff --git a/dcc-old/src/plugin-touchscreen/operation/types/touchscreenmap.cpp b/dcc-old/src/plugin-touchscreen/operation/types/touchscreenmap.cpp deleted file mode 100644 index 6f191aa22c..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/types/touchscreenmap.cpp +++ /dev/null @@ -1,10 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchscreenmap.h" - -void registerTouchscreenMapMetaType() -{ - qRegisterMetaType("TouchscreenMap"); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-touchscreen/operation/types/touchscreenmap.h b/dcc-old/src/plugin-touchscreen/operation/types/touchscreenmap.h deleted file mode 100644 index 8a7c4f4345..0000000000 --- a/dcc-old/src/plugin-touchscreen/operation/types/touchscreenmap.h +++ /dev/null @@ -1,14 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENMAP_H -#define TOUCHSCREENMAP_H - -#include -#include - -typedef QMap TouchscreenMap; - -void registerTouchscreenMapMetaType(); - -#endif // TOUCHSCREENMAP_H diff --git a/dcc-old/src/plugin-touchscreen/window/TouchScreenPlugin.json b/dcc-old/src/plugin-touchscreen/window/TouchScreenPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-touchscreen/window/TouchScreenPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-touchscreen/window/touchscreenmodule.cpp b/dcc-old/src/plugin-touchscreen/window/touchscreenmodule.cpp deleted file mode 100644 index 92085fc960..0000000000 --- a/dcc-old/src/plugin-touchscreen/window/touchscreenmodule.cpp +++ /dev/null @@ -1,148 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "touchscreenmodule.h" -#include "dtiplabel.h" -#include "itemmodule.h" -#include "settingsgroupmodule.h" -#include "touchscreenmodel.h" -#include "buttontuple.h" - -#include -#include - -#include -#include - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -TouchScreenModule::TouchScreenModule(QObject *parent) - : PageModule("touchscreen", tr("Touch Screen"), tr("Touch Screen"), DIconTheme::findQIcon("dcc_nav_touchscreen"), parent) -{ - m_model = new TouchScreenModel(this); - init(); -} - -TouchScreenModule::~TouchScreenModule() -{ - -} - -void TouchScreenModule::save() -{ - bool changed = false; - for (auto item : qAsConst(m_itemMap)) { - QString UUID = item->property("touchScreeUUID").toString(); - QString monitor = item->currentText(); - TouchscreenMap map = m_model->touchMap(); - if (map.value(UUID) == monitor) - continue; - - m_model->assoiateTouch(monitor, UUID); - changed = true; - } - - if (changed) - m_model->assoiateTouchNotify(); -} - -void TouchScreenModule::init() -{ - m_monitors = m_model->monitors(); - m_touchScreens = m_model->touchScreenList(); - PageModule *page = new PageModule("touchScreenPage", tr("Touch Screen")); - page->setContentsMargins(0, 0, 0, 0); - appendChild(page); - page->appendChild(new ItemModule("touchScreenTipLabel", tr("Select your touch screen when connected or set it here."), - [] (ModuleObject *module) -> QWidget*{ - DTipLabel *tipLabel = new DTipLabel(module->displayName()); - tipLabel->setWordWrap(true); - tipLabel->setContentsMargins(10, 0, 0, 0); - tipLabel->setAlignment(Qt::AlignLeft); - return tipLabel; - }, false)); - m_settingGroup = new SettingsGroupModule("touchScreenSettingGroup", QString()); - page->appendChild(m_settingGroup); - - connect(m_model, &TouchScreenModel::touchMapChanged, this, &TouchScreenModule::resetItems); - connect(m_model, &TouchScreenModel::touchScreenListChanged, this, &TouchScreenModule::resetItems); - connect(m_model, &TouchScreenModel::monitorsChanged, this, &TouchScreenModule::resetItems); - resetItems(); - - ItemModule *cancel = new ItemModule("Cancel","Cancel",[this](ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - ButtonTuple *btnTuple = new ButtonTuple(ButtonTuple::Save); - btnTuple->setBackgroundRole(QPalette::Base); - QPushButton *confirm = btnTuple->rightButton(); - QPushButton *cancel = btnTuple->leftButton(); - confirm->setText(tr("Confirm")); - cancel->setText(tr("Cancel")); - confirm->setFixedSize(200, 36); - cancel->setFixedSize(200, 36); - confirm->setEnabled(false); - connect(confirm, &QPushButton::clicked, this, [this, confirm](){ - this->save(); - confirm->setEnabled(false); - }); - connect(cancel, &QPushButton::clicked, this, &TouchScreenModule::resetItems); - connect(this, &TouchScreenModule::onChanged, confirm, [confirm](){ - confirm->setEnabled(true); - }); - return btnTuple; - }, false); - cancel->setExtra(); - appendChild(cancel); -} - -void TouchScreenModule::resetItems() -{ - while (0 < m_settingGroup->getChildrenSize()) { - m_settingGroup->removeChild(0); - } - - - m_itemMap.clear(); - if (m_model->monitors().empty() || m_model->touchScreenList().empty()) { - this->setHidden(true); - } - else - this->setHidden(false); - - auto touchScreenAndMonitor = m_model->touchMap(); - - QStringList monitors = m_model->monitors(); - - for (const auto &touchScreen : m_model->touchScreenList()) { - ItemModule *item = new ItemModule("touchScreen", touchScreen.name, - [monitors, touchScreen, touchScreenAndMonitor, this] (ModuleObject *module) -> QWidget*{ - Q_UNUSED(module) - QComboBox *match = new QComboBox(); - match->addItems(monitors); - match->setProperty("touchScreeUUID",touchScreen.UUID); - if (touchScreenAndMonitor.contains(touchScreen.UUID)) - match->setCurrentText(touchScreenAndMonitor.value(touchScreen.UUID)); - m_itemMap.insert(touchScreen.name,match); - connect(match, &QComboBox::currentTextChanged, this, &TouchScreenModule::onChanged); - return match; - }); - - m_settingGroup->appendChild(item); - } -} - -QString dccV23::TouchScreenPlugin::name() const -{ - return QStringLiteral("touchscreen"); -} - -ModuleObject *TouchScreenPlugin::module() -{ - return new TouchScreenModule();; -} - -QString TouchScreenPlugin::location() const -{ - return "display"; -} diff --git a/dcc-old/src/plugin-touchscreen/window/touchscreenmodule.h b/dcc-old/src/plugin-touchscreen/window/touchscreenmodule.h deleted file mode 100644 index 983082f8f8..0000000000 --- a/dcc-old/src/plugin-touchscreen/window/touchscreenmodule.h +++ /dev/null @@ -1,56 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef TOUCHSCREENMODULE_H -#define TOUCHSCREENMODULE_H - -#include "interface/plugininterface.h" -#include "pagemodule.h" -#include "types/touchscreeninfolist_v2.h" - -#include -class TouchScreenModel; -class QPushButton; -class QComboBox; - -namespace DCC_NAMESPACE { -class SettingsGroupModule; - -class TouchScreenPlugin : public PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.TouchScreen" FILE "TouchScreenPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - virtual QString name() const override; - virtual ModuleObject *module() override; - virtual QString location() const override; -}; - - -class TouchScreenModule : public PageModule -{ - Q_OBJECT -public: - explicit TouchScreenModule(QObject *parent = nullptr); - ~TouchScreenModule(); - TouchScreenModel *model() { return m_model; } - -Q_SIGNALS: - void onChanged(); - -public Q_SLOTS: - void save(); - -private: - void init(); - void resetItems(); -private: - TouchScreenModel *m_model; - SettingsGroupModule *m_settingGroup; - QMap m_itemMap; - QStringList m_monitors; - TouchscreenInfoList_V2 m_touchScreens; -}; -} -#endif // TOUCHSCREENMODULE_H diff --git a/dcc-old/src/plugin-update/operation/appupdateinfolist.cpp b/dcc-old/src/plugin-update/operation/appupdateinfolist.cpp deleted file mode 100644 index b546551a41..0000000000 --- a/dcc-old/src/plugin-update/operation/appupdateinfolist.cpp +++ /dev/null @@ -1,54 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "appupdateinfolist.h" - -AppUpdateInfo::AppUpdateInfo() -{ - -} - -const QDBusArgument &operator>>(const QDBusArgument &argument, AppUpdateInfo &info) -{ - argument.beginStructure(); - argument >> info.m_packageId; - argument >> info.m_name; - argument >> info.m_icon; - argument >> info.m_currentVersion; - argument >> info.m_avilableVersion; - argument.endStructure(); - - return argument; -} - -QDBusArgument &operator<<(QDBusArgument &argument, const AppUpdateInfo &info) -{ - argument.beginStructure(); - argument << info.m_packageId; - argument << info.m_name; - argument << info.m_icon; - argument << info.m_currentVersion; - argument << info.m_avilableVersion; - argument.endStructure(); - - return argument; -} - -QDebug operator<<(QDebug argument, const AppUpdateInfo &info) -{ - argument << "packageId: " << info.m_packageId; - argument << "name: " << info.m_name; - argument << "icon: " << info.m_icon; - argument << "currentVer: " << info.m_currentVersion; - argument << "avilableVer: " << info.m_avilableVersion; - - return argument; -} - -void registerAppUpdateInfoListMetaType() -{ - qRegisterMetaType(); - qDBusRegisterMetaType(); - qRegisterMetaType(); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-update/operation/appupdateinfolist.h b/dcc-old/src/plugin-update/operation/appupdateinfolist.h deleted file mode 100644 index 3205c68c79..0000000000 --- a/dcc-old/src/plugin-update/operation/appupdateinfolist.h +++ /dev/null @@ -1,36 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef APPUPDATEINFO_H -#define APPUPDATEINFO_H - -#include -#include -#include -#include - -class AppUpdateInfo -{ -public: - AppUpdateInfo(); - - friend QDebug operator<<(QDebug argument, const AppUpdateInfo &info); - friend QDBusArgument &operator<<(QDBusArgument &argument, const AppUpdateInfo &info); - friend const QDBusArgument &operator>>(const QDBusArgument &argument, AppUpdateInfo &info); - -public: - QString m_packageId; - QString m_name; - QString m_icon; - QString m_currentVersion; - QString m_avilableVersion; - QString m_changelog; -}; - -typedef QList AppUpdateInfoList; -Q_DECLARE_METATYPE(AppUpdateInfo) -Q_DECLARE_METATYPE(AppUpdateInfoList) - -void registerAppUpdateInfoListMetaType(); - -#endif // APPUPDATEINFO_H diff --git a/dcc-old/src/plugin-update/operation/common.h b/dcc-old/src/plugin-update/operation/common.h deleted file mode 100644 index 10390e45da..0000000000 --- a/dcc-old/src/plugin-update/operation/common.h +++ /dev/null @@ -1,196 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef COMMON_H -#define COMMON_H - -#include - -#include -#include - -#include - -#include - -DCORE_USE_NAMESPACE - -inline constexpr double Epsion = 1e-6; -inline const QString SystemUpdateType = QStringLiteral("system_upgrade"); -inline const QString AppStoreUpdateType = QStringLiteral("appstore_upgrade"); -inline const QString SecurityUpdateType = QStringLiteral("security_upgrade"); -inline const QString UnknownUpdateType = QStringLiteral("unknown_upgrade"); - -inline const DSysInfo::UosType UosType = DSysInfo::uosType(); -inline const DSysInfo::UosEdition UosEdition = DSysInfo::uosEditionType(); -inline const bool IsServerSystem = (DSysInfo::UosServer == UosType); // 是否是服务器版 -inline const bool IsCommunitySystem = (DSysInfo::UosCommunity == UosEdition); // 是否是社区版 -inline const bool IsProfessionalSystem = (DSysInfo::UosProfessional == UosEdition); // 是否是专业版 -inline const bool IsHomeSystem = (DSysInfo::UosHome == UosEdition); // 是否是个人版 -inline const bool IsEducationSystem = (DSysInfo::UosEducation == UosEdition); // 是否是教育版 -inline const bool IsDeepinDesktop = - (DSysInfo::DeepinDesktop == DSysInfo::deepinType()); // 是否是Deepin桌面 - -inline const QString TestingChannelPackage = QStringLiteral("deepin-unstable-source"); -inline const QString ServiceLink = QStringLiteral("https://insider.deepin.org"); - -enum UpdatesStatus { - Default, - Checking, - Updated, - UpdatesAvailable, - Updating, - Downloading, - DownloadPaused, - Downloaded, - AutoDownloaded, - Installing, - UpdateSucceeded, - UpdateFailed, - NeedRestart, - WaitForRecoveryBackup, - RecoveryBackingup, - RecoveryBackingSuccessed, - RecoveryBackupFailed, - RecoveryBackupFailedDiskFull, - Inactive -}; - -enum UpdateErrorType { - NoError, - NoNetwork, - NoSpace, - DeependenciesBrokenError, - DpkgInterrupted, - UnKnown -}; - -enum ShowStatus { NoActive, IsSuccessed, IsFailed }; - -enum ClassifyUpdateType { - Invalid = -1, - SystemUpdate = 1, - AppStoreUpdate, - UnknownUpdate = 8, - SecurityUpdate = 16 -}; - -enum UpdateCtrlType { Start = 0, Pause }; - -// 备份状态 -enum BackupStatus { NoBackup, Backingup, Backuped, BackupFailed }; - -// 原子更新结果 后期更具需求拓展 -enum BackupResult { Success = 0, BackingUp = 1 }; - -enum UiActiveState { - Unknown = -1, // 未知 - Unauthorized = 0, // 未授权 - Authorized, // 已授权 - AuthorizedLapse, // 授权失效 - TrialAuthorized, // 试用期已授权 - TrialExpired // 试用期已过期 -}; - -enum TestingChannelStatus { - DeActive, - NotJoined, - WaitJoined, - WaitToLeave, - Joined, -}; - -enum CanExitTestingChannelStatus { - CheckOk, - Cancel, - CheckError, -}; - -[[maybe_unused]] static inline ClassifyUpdateType uintToclassifyUpdateType(uint type) -{ - ClassifyUpdateType value = ClassifyUpdateType::Invalid; - switch (type) { - case ClassifyUpdateType::SystemUpdate: - value = ClassifyUpdateType::SystemUpdate; - break; - case ClassifyUpdateType::SecurityUpdate: - value = ClassifyUpdateType::SecurityUpdate; - break; - case ClassifyUpdateType::UnknownUpdate: - value = ClassifyUpdateType::UnknownUpdate; - break; - default: - value = ClassifyUpdateType::Invalid; - break; - } - - return value; -} - -// equal : false -[[maybe_unused]] static inline bool compareDouble(const double value1, const double value2) -{ - return !((value1 - value2 >= -Epsion) && (value1 - value2 <= Epsion)); -} - -[[maybe_unused]] static inline QString formatCap(qulonglong cap, const int size = 1024) -{ - const static QString type[] = { "B", "KB", "MB", "GB", "TB" }; - - if (cap < qulonglong(size)) { - return QString::number(cap) + type[0]; - } - if (cap < qulonglong(size) * size) { - return QString::number(double(cap) / size, 'f', 2) + type[1]; - } - if (cap < qulonglong(size) * size * size) { - return QString::number(double(cap) / size / size, 'f', 2) + type[2]; - } - if (cap < qulonglong(size) * size * size * size) { - return QString::number(double(cap) / size / size / size, 'f', 2) + type[3]; - } - - return QString::number(double(cap) / size / size / size / size, 'f', 2) + type[4]; -} - -[[maybe_unused]] static inline std::vector getNumListFromStr(const QString &str) -{ - // 筛选出字符串中的数字 - QRegularExpression rx(R"(-?[1-9]\d*\.\d*|0+.[0-9]+|-?0\.\d*[1-9]\d*|-?\d+)"); - std::vector v; - QRegularExpressionMatchIterator i = rx.globalMatch(str); - while (i.hasNext()) { - QRegularExpressionMatch match = i.next(); - v.push_back(match.captured(0).toDouble()); - } - return v; -} - -[[maybe_unused]] static QString htmlToCorrectColor(const QString &data) -{ - const auto colorType = Dtk::Gui::DGuiApplicationHelper::instance()->themeType(); - const QString &textColor = (colorType == Dtk::Gui::DGuiApplicationHelper::LightType) ? "rgba(0, 0, 0, 0.6)" : "rgba(255, 255, 255, 0.6)"; - const QString colorRegexPattern("(background-color:\\s*rgba?\\((\\s*\\d+\\s*),\\s*(\\s*\\d+\\s*),\\s*(\\s*\\d+\\s*)(?:,\\s*(?:\\d*\\.)?\\d+\\s*)?\\);)|(rgba?\\((\\s*\\d+\\s*),\\s*(\\s*\\d+\\s*),\\s*(\\s*\\d+\\s*)(?:,\\s*(?:\\d*\\.)?\\d+\\s*)?\\))"); - - QRegularExpression regex(colorRegexPattern); - - QString result; - result.reserve(data.size()); - - int lastMatchEnd = 0; - for (auto it = regex.globalMatch(data); it.hasNext(); ) { - auto match = it.next(); - if (match.hasMatch() && match.captured(1).isEmpty()) { // 匹配到文字颜色,替换 - result.append(data.midRef(lastMatchEnd, match.capturedStart() - lastMatchEnd)); - result.append(textColor); - } else { // 匹配到背景颜色,删除 - result.append(data.midRef(lastMatchEnd, match.capturedStart() - lastMatchEnd)); - } - lastMatchEnd = match.capturedEnd(); - } - result.append(data.midRef(lastMatchEnd)); - - return result; -} - -#endif // COMMON_H diff --git a/dcc-old/src/plugin-update/operation/mirrorsourceitem.cpp b/dcc-old/src/plugin-update/operation/mirrorsourceitem.cpp deleted file mode 100644 index d0ffcff083..0000000000 --- a/dcc-old/src/plugin-update/operation/mirrorsourceitem.cpp +++ /dev/null @@ -1,98 +0,0 @@ -// SPDX-FileCopyrightText: 2024 - 2027 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: LGPL-3.0-or-later - -#include "mirrorsourceitem.h" - -using namespace DCC_NAMESPACE::update; - -MirrorSourceItem::MirrorSourceItem(QObject *parent) - : QObject(parent) - , m_leftLabel("") - , m_rightLabel(tr("Untested")) - , m_bSelect(false) - , m_speed(0) -{ - m_action = new DViewItemAction; - m_action->setText(m_rightLabel); - m_action->setFontSize(DFontSizeManager::T8); - this->setText(m_leftLabel); - this->setCheckState(Qt::CheckState::Unchecked); - this->setActionList(Qt::RightEdge, {m_action}); -} - -void MirrorSourceItem::setMirrorState(const QString &value) -{ - if ("" != value && m_rightLabel != value) { - m_rightLabel = value; - m_action->setText(m_rightLabel); - } -} - -void MirrorSourceItem::setMirrorName(const QString &value) -{ - if ("" != value && m_leftLabel != value) { - m_leftLabel = value; - this->setText(m_leftLabel); - } -} - -void MirrorSourceItem::setSelected(bool state) -{ - if (m_bSelect != state) { - m_bSelect = state; - this->setCheckState(m_bSelect ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); - } -} - -void MirrorSourceItem::setMirrorInfo(const MirrorInfo &info, const QString &defaultValue) -{ - m_info = info; - setMirrorName(info.m_name); - setMirrorState(defaultValue); -} - -MirrorInfo MirrorSourceItem::mirrorInfo() const -{ - return m_info; -} - -bool MirrorSourceItem::getSelectState() -{ - return m_bSelect; -} - -QString MirrorSourceItem::getMirrorName() -{ - return m_leftLabel; -} - -int MirrorSourceItem::speed() const -{ - return m_speed; -} - -void MirrorSourceItem::setSpeed(const int time) -{ - if (m_speed != time) { - m_speed = time; - - QString sp = ""; - if (time == 10000) { - sp = tr("Timeout"); - } else if (time > 2000) { - sp = tr("Slow"); - } else if (time > 200) - sp = tr("Medium"); - else { - sp = tr("Fast"); - } - - setMirrorState(sp); - } -} - -void MirrorSourceItem::setTesting() -{ - setMirrorState("..."); -} diff --git a/dcc-old/src/plugin-update/operation/mirrorsourceitem.h b/dcc-old/src/plugin-update/operation/mirrorsourceitem.h deleted file mode 100644 index 3c1797936f..0000000000 --- a/dcc-old/src/plugin-update/operation/mirrorsourceitem.h +++ /dev/null @@ -1,49 +0,0 @@ -// SPDX-FileCopyrightText: 2024 - 2027 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: LGPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" -#include "mirrorinfolist.h" - -#include - -#include - -DWIDGET_USE_NAMESPACE - -namespace DCC_NAMESPACE { -namespace update { - -class MirrorSourceItem : public QObject, public DStandardItem -{ - Q_OBJECT -public: - MirrorSourceItem(QObject *parent = nullptr); - - void setMirrorState(const QString &value); - void setMirrorName(const QString &value); - - void setSelected(bool state); - bool getSelectState(); - - void setMirrorInfo(const MirrorInfo &info, const QString &defaultValue = ""); - MirrorInfo mirrorInfo() const; - QString getMirrorName(); - - int speed() const; - void setSpeed(const int time); - void setTesting(); - -private: - DViewItemAction *m_action; - QString m_leftLabel; - QString m_rightLabel; - bool m_bSelect; - MirrorInfo m_info; - int m_speed; -}; - -} -} diff --git a/dcc-old/src/plugin-update/operation/qrc/config/mirrors.json b/dcc-old/src/plugin-update/operation/qrc/config/mirrors.json deleted file mode 100644 index 34ea163425..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/config/mirrors.json +++ /dev/null @@ -1,68 +0,0 @@ -[ -{"id":"default","name":"Official Mirror (CDN Acceleration)","url":"http://cdn.packages.deepin.com/deepin/","name_locale.zh_CN":"官方CDN(加速)源","name_locale.zh_TW":"官方CDN(加速)源","weight":4934,"country":"CN"}, -{"id":"0x.sg","name":"[SG]0x.sg","url":"http://mirror.0x.sg/deepin/","name_locale.zh_CN":"[SG] 0x.sg","name_locale.zh_TW":"[SG] 0x.sg","weight":4935,"country":"SG"}, -{"id":"AARNET","name":"[AU]AARNET","url":"https://mirror.aarnet.edu.au/pub/deepin/deepin/","name_locale.zh_CN":"[AU]AARNET","name_locale.zh_TW":"[AU]AARNET","weight":4936,"country":"AU"}, -{"id":"ACC","name":"[SE]Academic Computer Club","url":"https://ftp.acc.umu.se/mirror/linuxdeepin/packages/","name_locale.zh_CN":"[SE]Academic Computer Club","name_locale.zh_TW":"Academic Computer Club","weight":4937,"country":"SE"}, -{"id":"Aliyun","name":"[CN] Aliyun","url":"http://mirrors.aliyun.com/deepin/","name_locale.zh_CN":"[CN] 阿里云","name_locale.zh_TW":"[CN] 阿裏雲","weight":4938,"country":"CN"}, -{"id":"Alpix","name":"[DE]Alpix","url":"https://mirror.alpix.eu/deepin/","name_locale.zh_CN":"[DE]Alpix","name_locale.zh_TW":"[DE]Alpix","weight":4939,"country":"DE"}, -{"id":"BIT-edu","name":"[CN]北京理工大学","url":"http://mirror.bit.edu.cn/deepin","name_locale.zh_CN":"[CN]北京理工大学","name_locale.zh_TW":"[CN]北京理工大學","weight":4940,"country":"CN"}, -{"id":"Bytemark Hosting","name":"[GB] Bytemark Hosting","url":"http://mirror.bytemark.co.uk/linuxdeepin/deepin/","name_locale.zh_CN":"[GB] Bytemark Hosting","name_locale.zh_TW":"[GB] Bytemark Hosting","weight":4941,"country":"GB"}, -{"id":"c0urier","name":"[SE]c0urier","url":"https://mirrors.c0urier.net/linux/deepin/packages/","name_locale.zh_CN":"[SE]c0urier","name_locale.zh_TW":"[SE]c0urier","weight":4942,"country":"SE"}, -{"id":"CEDIA","name":"[EC]CEDIA","url":"http://mirror.cedia.org.ec/deepin/","name_locale.zh_CN":"[EC]CEDIA","name_locale.zh_TW":"[EC]CEDIA","weight":4943,"country":"EC"}, -{"id":"Centro Universitario Regional del Este","name":"[UY]Centro Universitario Regional del Este","url":"https://deepin.repo.cure.edu.uy/mirror/","name_locale.zh_CN":"[UY]Centro Universitario Regional del Este","name_locale.zh_TW":"[UY]Centro Universitario Regional del Este","weight":4944,"country":"UY"}, -{"id":"CQU","name":"[CN]重庆大学","url":"http://mirrors.cqu.edu.cn/deepin/","name_locale.zh_CN":"[CN]重庆大学","name_locale.zh_TW":"[CN]重庆大學","weight":4945,"country":"CN"}, -{"id":"DataMossa","name":"[AU]DataMossa","url":"http://mirror.datamossa.io/deepin/","name_locale.zh_CN":"[AU]DataMossa","name_locale.zh_TW":"[AU]DataMossa","weight":4946,"country":"AU"}, -{"id":"Datautama","name":"[ID] Datautama Net Id Company","url":"http://kartolo.sby.datautama.net.id/deepin/","name_locale.zh_CN":"[ID] Datautama Net Id Company","name_locale.zh_TW":"[ID] Datautama Net Id Company","weight":4947,"country":"ID"}, -{"id":"DGN","name":"[TR]DGN","url":"http://mirror.dgn.net.tr/deepin/","name_locale.zh_CN":"[TR]DGN","name_locale.zh_TW":"[TR]DGN","weight":4948,"country":"TR"}, -{"id":"Dotsrc.","name":"[DK]dotsrc","url":"https://mirrors.dotsrc.org/deepin/","name_locale.zh_CN":"[DK]dotsrc","name_locale.zh_TW":"[DK]dotsrc","weight":4949,"country":"DK"}, -{"id":"FAU","name":"[DE]FAU","url":"http://ftp.fau.de/deepin/","name_locale.zh_CN":"[DE]FAU","name_locale.zh_TW":"[DE]FAU","weight":4950,"country":"DE"}, -{"id":"FAU","name":"[DE] University of Erlangen-Nuremberg","url":"https://ftp.fau.de/deepin/","name_locale.zh_CN":"[DE] University of Erlangen-Nuremberg","name_locale.zh_TW":"[DE] University of Erlangen-Nuremberg","weight":4951,"country":"DE"}, -{"id":"GARR","name":"[IT] GARR MIRROR","url":"http://deepin.mirror.garr.it/mirrors/deepin/","name_locale.zh_CN":"[IT] GARR MIRROR","name_locale.zh_TW":"[IT] GARR MIRROR","weight":4952,"country":"IT"}, -{"id":"Genesis Adaptive","name":"[US]Genesis Adaptive","url":"http://mirror.genesisadaptive.com/deepin/","name_locale.zh_CN":"[US]Genesis Adaptive","name_locale.zh_TW":"[US]Genesis Adaptive","weight":4953,"country":"US"}, -{"id":"GR","name":"[GR]University of Crete Computer Center","url":"http://ftp.cc.uoc.gr/mirrors/linux/deepin/packages/","name_locale.zh_CN":"[GR]University of Crete Computer Center","name_locale.zh_TW":"[GR]University of Crete Computer Center","weight":4954,"country":"GR"}, -{"id":"GWDG","name":"[DE]GWDG","url":"http://ftp.gwdg.de/pub/linux/linuxdeepin/deepin/","name_locale.zh_CN":"[DE]GWDG","name_locale.zh_TW":"[DE]GWDG","weight":4955,"country":"DE"}, -{"id":"Harukasan(Pukyong National University)","name":"[KR]Harukasan(Pukyong National University)","url":"https://ftp.harukasan.org/deepin/","name_locale.zh_CN":"[KR]Harukasan(Pukyong National University)","name_locale.zh_TW":"[KR]Harukasan(Pukyong National University)","weight":4956,"country":"KR"}, -{"id":"HIT-edu","name":"[CN]哈尔滨工业大学","url":"http://mirrors.hit.edu.cn/deepin/","name_locale.zh_CN":"[CN]哈尔滨工业大学","name_locale.zh_TW":"[CN]哈爾濱工業大學","weight":4957,"country":"CN"}, -{"id":"Hostsuisse","name":"[CH]Hostsuisse","url":"http://mirror.hostsuisse.com/deepin/packages/","name_locale.zh_CN":"[CH]Hostsuisse","name_locale.zh_TW":"[CH]Hostsuisse","weight":4958,"country":"CH"}, -{"id":"HuaweiCloud","name":"[CN]华为云","url":"https://mirrors.huaweicloud.com/deepin/","name_locale.zh_CN":"[CN]华为云","name_locale.zh_TW":"[CN]華爲雲","weight":4959,"country":"CN"}, -{"id":"Hust-edu","name":"[CN]华中科技大学","url":"http://mirrors.hust.edu.cn/deepin/","name_locale.zh_CN":"[CN]华中科技大学","name_locale.zh_TW":"[CN]華中科技大學","weight":4960,"country":"CN"}, -{"id":"IPACCT","name":"[BG] IPACCT","url":"http://deepin.ipacct.com/deepin/","name_locale.zh_CN":"[BG] IPACCT","name_locale.zh_TW":"[BG] IPACCT","weight":4961,"country":"BG"}, -{"id":"IP-Connect","name":"[UA]IP-Connect ","url":"https://deepin.ip-connect.vn.ua/","name_locale.zh_CN":"[UA]IP-Connect ","name_locale.zh_TW":"[UA]IP-Connect ","weight":4962,"country":"UA"}, -{"id":"IRCAM","name":"[FR]IRCAM","url":"http://mirrors.ircam.fr/pub/deepin/","name_locale.zh_CN":"[FR]IRCAM","name_locale.zh_TW":"[FR]IRCAM","weight":4963,"country":"FR"}, -{"id":"JAIST","name":"[JP] JAIST","url":"http://ftp.jaist.ac.jp/pub/Linux/deepin/","name_locale.zh_CN":"[JP] JAIST","name_locale.zh_TW":"[JP] JAIST","weight":4964,"country":"JP"}, -{"id":"KDDI","name":"[JP]KDDI R&D Laboratories Inc.","url":"http://www.ftp.ne.jp/Linux/packages/deepin/deepin/","name_locale.zh_CN":"[JP]KDDI R&D Laboratories Inc.","name_locale.zh_TW":"[JP]KDDI R&D Laboratories Inc.","weight":4965,"country":"JP"}, -{"id":"Kernel","name":"[US] Linux Kernel Archives","url":"http://mirrors.kernel.org/deepin/","name_locale.zh_CN":"[US] Linux Kernel Archives","name_locale.zh_TW":"[US] Linux Kernel Archives","weight":4966,"country":"US"}, -{"id":"koyanet","name":"[LV]koyanet","url":"http://deepin.koyanet.lv/packages/","name_locale.zh_CN":"[LV]koyanet","name_locale.zh_TW":"[LV]koyanet","weight":4967,"country":"LV"}, -{"id":"LibrelabUCM","name":"[ES]LibrelabUCM","url":"http://mirror.librelabucm.org/deepin/","name_locale.zh_CN":"[ES]LibrelabUCM","name_locale.zh_TW":"[ES]LibrelabUCM","weight":4968,"country":"ES"}, -{"id":"LZU-edu","name":"[CN]兰州大学","url":"http://mirror.lzu.edu.cn/deepin/","name_locale.zh_CN":"[CN]兰州大学","name_locale.zh_TW":"[CN]蘭州大學","weight":4969,"country":"CN"}, -{"id":"NCNU-edu","name":"[CN]国立暨南国际大学","url":"http://ftp.ncnu.edu.tw/Linux/Deepin/deepin/","name_locale.zh_CN":"[CN]国立暨南国际大学","name_locale.zh_TW":"[CN]國立暨南國際大學","weight":4970,"country":"CN"}, -{"id":"NetEase","name":"[CN] NetEase","url":"http://mirrors.163.com/deepin/","name_locale.zh_CN":"[CN] 网易","name_locale.zh_TW":"[CN] 網易","weight":4971,"country":"CN"}, -{"id":"NLUUG","name":"[NL] NLUUG","url":"http://ftp.nluug.nl/os/Linux/distr/deepin/","name_locale.zh_CN":"[NL] NLUUG","name_locale.zh_TW":"[NL] NLUUG","weight":4972,"country":"NL"}, -{"id":"Onet","name":"[PL]Onet","url":"http://mirroronet.pl/pub/mirrors/deepin/","name_locale.zh_CN":"[PL]Onet","name_locale.zh_TW":"[PL]Onet","weight":4973,"country":"PL"}, -{"id":"Opin Kerfi","name":"[IS]Opin Kerfi","url":"http://mirrors.opensource.is/deepin/","name_locale.zh_CN":"[IS]Opin Kerfi","name_locale.zh_TW":"[IS]Opin Kerfi","weight":4974,"country":"IS"}, -{"id":"Piotrkosoft","name":"[PL]Piotrkosoft","url":"http://piotrkosoft.net/pub/mirrors/deepin/","name_locale.zh_CN":"[PL]Piotrkosoft","name_locale.zh_TW":"[PL]Piotrkosoft","weight":4975,"country":"PL"}, -{"id":"Princeton University","name":"[US]Princeton University","url":"http://mirror.math.princeton.edu/pub/deepin/","name_locale.zh_CN":"[US]Princeton University","name_locale.zh_TW":"[US]Princeton University","weight":4976,"country":"US"}, -{"id":"Quantum Mirror","name":"[HU]Quantum Mirror","url":"https://quantum-mirror.hu/mirrors/pub/deepin","name_locale.zh_CN":"[HU]Quantum Mirror","name_locale.zh_TW":"[HU]Quantum Mirror","weight":4977,"country":"HU"}, -{"id":"Rainside","name":"[SK] Rainside","url":"http://tux.rainside.sk/deepin/","name_locale.zh_CN":"[SK] Rainside","name_locale.zh_TW":"[SK] Rainside","weight":4978,"country":"SK"}, -{"id":"SJTU-edu","name":"[CN]上海交通大学","url":"http://ftp.sjtu.edu.cn/deepin/","name_locale.zh_CN":"[CN]上海交通大学","name_locale.zh_TW":"[CN]上海交通大學","weight":4979,"country":"CN"}, -{"id":"SNT","name":"[NT] Universiteit Twente","url":"http://ftp.snt.utwente.nl/pub/os/linux/deepin/","name_locale.zh_CN":"[NT] Universiteit Twente","name_locale.zh_TW":"[NT] Universiteit Twente","weight":4980,"country":"NL"}, -{"id":"SVWH","name":"[US] Silicon Valley Web Hosting LLC","url":"http://mirror1.sjc02.svwh.net/deepin/","name_locale.zh_CN":"[US] Silicon Valley Web Hosting LLC","name_locale.zh_TW":"[US] Silicon Valley Web Hosting LLC","weight":4981,"country":"US"}, -{"id":"Telkom SAIX","name":"[ZA] Telkom SAIX","url":"http://www.ftp.saix.net/linux/distributions/linux-deepin/deepin/","name_locale.zh_CN":"[ZA] Telkom SAIX","name_locale.zh_TW":"[ZA] Telkom SAIX","weight":4982,"country":"ZA"}, -{"id":"TencentCloud","name":"[CN]腾讯云","url":"https://mirrors.cloud.tencent.com/deepin/","name_locale.zh_CN":"[CN]腾讯云","name_locale.zh_TW":"[CN]騰訊雲","weight":4983,"country":"CN"}, -{"id":"Truenetwork","name":"[RU] Truenetwork Linux mirror","url":"http://mirror.truenetwork.ru/deepin/","name_locale.zh_CN":"[RU] Truenetwork Linux mirror","name_locale.zh_TW":"[RU] Truenetwork Linux mirror","weight":4984,"country":"RU"}, -{"id":"Tsukuba","name":"[JP] Tsukuba WIDE Public Mirror","url":"http://ftp.tsukuba.wide.ad.jp/Linux/deepin/","name_locale.zh_CN":"[JP] Tsukuba WIDE Public Mirror","name_locale.zh_TW":"[JP] Tsukuba WIDE Public Mirror","weight":4986,"country":"JP"}, -{"id":"TUNA","name":"[CN] Tsinghua University","url":"http://mirrors.tuna.tsinghua.edu.cn/deepin/","name_locale.zh_CN":"[CN] 清华大学","name_locale.zh_TW":"[CN] 清華大學","weight":4987,"country":"CN"}, -{"id":"Tuxinator","name":"[DE]Tuxinator","url":"http://mirror2.tuxinator.org/deepin/","name_locale.zh_CN":"[DE]Tuxinator","name_locale.zh_TW":"[DE]Tuxinator","weight":4988,"country":"DE"}, -{"id":"U. Porto","name":"[PT] University of Porto","url":"http://mirrors.up.pt/pub/deepin/","name_locale.zh_CN":"[PT] University of Porto","name_locale.zh_TW":"[PT] University of Porto","weight":4989,"country":"PT"}, -{"id":"ubuntu-tw","name":"[CN]Ubuntu正体中文站","url":"http://ftp.ubuntu-tw.org/mirror/deepin/","name_locale.zh_CN":"[CN]Ubuntu正体中文站","name_locale.zh_TW":"[CN]Ubuntu正體中文站","weight":4990,"country":"CN"}, -{"id":"UFPR","name":"[BR]Federal University of Parana","url":"http://deepin.c3sl.ufpr.br/deepin/","name_locale.zh_CN":"[BR]Federal University of Parana","name_locale.zh_TW":"[BR]Federal University of Parana","weight":4991,"country":"BR"}, -{"id":"University of Kent","name":"[GB] University of Kent","url":"http://www.mirrorservice.org/sites/packages.linuxdeepin.com/deepin/","name_locale.zh_CN":"[GB] University of Kent","name_locale.zh_TW":"[GB] University of Kent","weight":4992,"country":"GB"}, -{"id":"UPC Austria","name":"[AT] UPC Austria","url":"http://mirror.inode.at/data/deepin/","name_locale.zh_CN":"[AT] UPC Austria","name_locale.zh_TW":"[AT] UPC Austria","weight":4993,"country":"AT"}, -{"id":"USP","name":"[BR] University of Sao Paulo","url":"http://sft.if.usp.br/deepin/","name_locale.zh_CN":"[BR] University of Sao Paulo","name_locale.zh_TW":"[BR] University of Sao Paulo","weight":4994,"country":"BR"}, -{"id":"USTC","name":"[CN] USTC","url":"http://mirrors.ustc.edu.cn/deepin/","name_locale.zh_CN":"[CN] 中国科学技术大学","name_locale.zh_TW":"[CN] 中國科學技術大學","weight":4995,"country":"CN"}, -{"id":"vectranet","name":"[PL]vectranet","url":"http://ftp.vectranet.pl/deepin/","name_locale.zh_CN":"[PL]vectranet","name_locale.zh_TW":"[PL]vectranet","weight":4996,"country":"PL"}, -{"id":"VeriTeknik","name":"[TR] VeriTeknik","url":"http://mirror.veriteknik.net.tr/deepin/","name_locale.zh_CN":"[TR] VeriTeknik","name_locale.zh_TW":"[TR] VeriTeknik","weight":4997,"country":"TR"}, -{"id":"Yandex","name":"[RU] Yandex Linux Mirror","url":"http://mirror.yandex.ru/mirrors/deepin/packages/","name_locale.zh_CN":"[RU]Yandex Linux Mirror","name_locale.zh_TW":"[RU]Yandex Linux Mirror","weight":4998,"country":"RU"}, -{"id":"Zetup","name":"[SE] Zetup AB","url":"http://mirror.zetup.net/deepin/","name_locale.zh_CN":"[SE] Zetup AB","name_locale.zh_TW":"[SE] Zetup AB","weight":4999,"country":"SE"}, -{"id":"ZJU","name":"[CN] Zhejiang University","url":"http://mirrors.zju.edu.cn/deepin/","name_locale.zh_CN":"[CN] 浙江大学","name_locale.zh_TW":"[CN] 浙江大學","weight":5000,"country":"CN"}, -{"id":"DeepinES","name":"[ES] DeepinES","url":"https://mirror.deepines.com/deepin/","name_locale.zh_CN":"[ES] DeepinES","name_locale.zh_TW":"[ES] DeepinES","weight":5001,"country":"ES"}] \ No newline at end of file diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_all_updated.svg b/dcc-old/src/plugin-update/operation/qrc/icons/dcc_all_updated.svg deleted file mode 100644 index ebd80cd6ad..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_all_updated.svg +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_app_update.svg b/dcc-old/src/plugin-update/operation/qrc/icons/dcc_app_update.svg deleted file mode 100644 index 5c68353c0c..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_app_update.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - icon/更新/应用 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_checking_update.svg b/dcc-old/src/plugin-update/operation/qrc/icons/dcc_checking_update.svg deleted file mode 100644 index 858670ef35..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_checking_update.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_nav_update_42px.svg b/dcc-old/src/plugin-update/operation/qrc/icons/dcc_nav_update_42px.svg deleted file mode 100644 index e8fbd5b6d8..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_nav_update_42px.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - dcc_nav_update_42px - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_nav_update_84px.svg b/dcc-old/src/plugin-update/operation/qrc/icons/dcc_nav_update_84px.svg deleted file mode 100644 index 905841f57d..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_nav_update_84px.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - dcc_nav_update_84px - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_safe_update.svg b/dcc-old/src/plugin-update/operation/qrc/icons/dcc_safe_update.svg deleted file mode 100644 index 242b0965e5..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_safe_update.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - icon/更新/安全 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_system_update.svg b/dcc-old/src/plugin-update/operation/qrc/icons/dcc_system_update.svg deleted file mode 100644 index e2c70a4003..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_system_update.svg +++ /dev/null @@ -1,49 +0,0 @@ - - - icon/更新/系统 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_unknown_update.svg b/dcc-old/src/plugin-update/operation/qrc/icons/dcc_unknown_update.svg deleted file mode 100644 index f62215ee8e..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/dcc_unknown_update.svg +++ /dev/null @@ -1,55 +0,0 @@ - - - icon/更新/未知 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/failed.svg b/dcc-old/src/plugin-update/operation/qrc/icons/failed.svg deleted file mode 100644 index 323734da6c..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/failed.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/noactive.svg b/dcc-old/src/plugin-update/operation/qrc/icons/noactive.svg deleted file mode 100644 index f64e31903c..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/noactive.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/dcc-old/src/plugin-update/operation/qrc/icons/success.svg b/dcc-old/src/plugin-update/operation/qrc/icons/success.svg deleted file mode 100644 index 7e03506c4d..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/icons/success.svg +++ /dev/null @@ -1,19 +0,0 @@ - - - - - - - - - - - - - - - - - - - diff --git a/dcc-old/src/plugin-update/operation/qrc/update.qrc b/dcc-old/src/plugin-update/operation/qrc/update.qrc deleted file mode 100644 index 87641b5f1e..0000000000 --- a/dcc-old/src/plugin-update/operation/qrc/update.qrc +++ /dev/null @@ -1,18 +0,0 @@ - - - icons/dcc_nav_update_84px.svg - icons/dcc_nav_update_42px.svg - icons/failed.svg - icons/noactive.svg - icons/success.svg - icons/dcc_all_updated.svg - icons/dcc_app_update.svg - icons/dcc_checking_update.svg - icons/dcc_safe_update.svg - icons/dcc_system_update.svg - icons/dcc_unknown_update.svg - - - config/mirrors.json - - diff --git a/dcc-old/src/plugin-update/operation/updatedbusproxy.cpp b/dcc-old/src/plugin-update/operation/updatedbusproxy.cpp deleted file mode 100644 index 0870650dc4..0000000000 --- a/dcc-old/src/plugin-update/operation/updatedbusproxy.cpp +++ /dev/null @@ -1,320 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "updatedbusproxy.h" - -#include "widgets/dccdbusinterface.h" - -#include -#include -#include -#include -#include - -// HostName -const static QString HostnameService = QStringLiteral("org.freedesktop.hostname1"); -const static QString HostnamePath = QStringLiteral("/org/freedesktop/hostname1"); -const static QString HostnameInterface = QStringLiteral("org.freedesktop.hostname1"); - -// Updater -const static QString UpdaterService = QStringLiteral("org.deepin.dde.Lastore1"); -const static QString UpdaterPath = QStringLiteral("/org/deepin/dde/Lastore1"); -const static QString UpdaterInterface = QStringLiteral("org.deepin.dde.Lastore1.Updater"); - -// Manager -const static QString ManagerService = QStringLiteral("org.deepin.dde.Lastore1"); -const static QString ManagerPath = QStringLiteral("/org/deepin/dde/Lastore1"); -const static QString ManagerInterface = QStringLiteral("org.deepin.dde.Lastore1.Manager"); - -// PowerInter -const static QString PowerService = QStringLiteral("org.deepin.dde.Power1"); -const static QString PowerPath = QStringLiteral("/org/deepin/dde/Power1"); -const static QString PowerInterface = QStringLiteral("org.deepin.dde.Power1"); - -// Atomic Upgrade -const static QString AtomicUpdaterService = QStringLiteral("org.deepin.AtomicUpgrade1"); -const static QString AtomicUpdaterPath = QStringLiteral("/org/deepin/AtomicUpgrade1"); -const static QString AtomicUpdaterJobInterface = QStringLiteral("org.deepin.AtomicUpgrade1"); - -const static QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); -const static QString PropertiesChanged = QStringLiteral("PropertiesChanged"); - -UpdateDBusProxy::UpdateDBusProxy(QObject *parent) - : QObject(parent) - , m_hostname1Inter(new DDBusInterface( - HostnameService, HostnamePath, HostnameInterface, QDBusConnection::systemBus(), this)) - , m_updateInter(new DDBusInterface( - UpdaterService, UpdaterPath, UpdaterInterface, QDBusConnection::systemBus(), this)) - , m_managerInter(new DDBusInterface( - ManagerService, ManagerPath, ManagerInterface, QDBusConnection::systemBus(), this)) - , m_powerInter(new DDBusInterface( - PowerService, PowerPath, PowerInterface, QDBusConnection::sessionBus(), this)) - , m_atomicUpgradeInter(new DDBusInterface(AtomicUpdaterService, - AtomicUpdaterPath, - AtomicUpdaterJobInterface, - QDBusConnection::systemBus(), - this)) - , m_smartMirrorInter(new DDBusInterface("org.deepin.dde.Lastore1.Smartmirror", - "/org/deepin/dde/Lastore1/Smartmirror", - "org.deepin.dde.Lastore1.Smartmirror", - QDBusConnection::systemBus(), - this)) - -{ - qRegisterMetaType("LastoreUpdatePackagesInfo"); - qDBusRegisterMetaType(); - - qRegisterMetaType("BatteryPercentageInfo"); - qDBusRegisterMetaType(); -} - -UpdateDBusProxy::~UpdateDBusProxy() -{ - m_hostname1Inter->deleteLater(); - m_updateInter->deleteLater(); - m_managerInter->deleteLater(); - m_powerInter->deleteLater(); - m_atomicUpgradeInter->deleteLater(); -} - -QString UpdateDBusProxy::staticHostname() const -{ - return qvariant_cast(m_hostname1Inter->property("StaticHostname")); -} - -bool UpdateDBusProxy::updateNotify() -{ - return qvariant_cast(m_updateInter->property("UpdateNotify")); -} - -void UpdateDBusProxy::SetUpdateNotify(bool in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_updateInter->asyncCallWithArgumentList(QStringLiteral("SetUpdateNotify"), argumentList); -} - -LastoreUpdatePackagesInfo UpdateDBusProxy::classifiedUpdatablePackages() -{ - QDBusInterface updateInter(m_updateInter->service(), - m_updateInter->path(), - PropertiesInterface, - m_updateInter->connection()); - QDBusMessage mess = updateInter.call(QStringLiteral("Get"), - m_updateInter->interface(), - QStringLiteral("ClassifiedUpdatablePackages")); - QVariant v = mess.arguments().first(); - const QDBusArgument arg = v.value().variant().value(); - LastoreUpdatePackagesInfo packagesInfo; - arg >> packagesInfo; - return packagesInfo; -} - -double UpdateDBusProxy::GetCheckIntervalAndTime(QString &out1) -{ - QList argumentList; - QDBusMessage reply = - m_updateInter->callWithArgumentList(QDBus::Block, - QStringLiteral("GetCheckIntervalAndTime"), - argumentList); - if (reply.type() == QDBusMessage::ReplyMessage && reply.arguments().count() == 2) { - out1 = qdbus_cast(reply.arguments().at(1)); - } - return qdbus_cast(reply.arguments().at(0)); -} - -bool UpdateDBusProxy::autoDownloadUpdates() -{ - return qvariant_cast(m_updateInter->property("AutoDownloadUpdates")); -} - -bool UpdateDBusProxy::autoInstallUpdates() -{ - return qvariant_cast(m_updateInter->property("AutoInstallUpdates")); -} - -qulonglong UpdateDBusProxy::autoInstallUpdateType() -{ - return qvariant_cast(m_updateInter->property("AutoInstallUpdateType")); -} - -bool UpdateDBusProxy::autoCheckUpdates() -{ - return qvariant_cast(m_updateInter->property("AutoCheckUpdates")); -} - -void UpdateDBusProxy::SetAutoCheckUpdates(bool in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_updateInter->asyncCallWithArgumentList(QStringLiteral("SetAutoCheckUpdates"), argumentList); -} - -QString UpdateDBusProxy::mirrorSource() const -{ - return qvariant_cast(m_updateInter->property("MirrorSource")); -} - -void UpdateDBusProxy::SetAutoDownloadUpdates(bool in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_updateInter->asyncCallWithArgumentList(QStringLiteral("SetAutoDownloadUpdates"), - argumentList); -} - -void UpdateDBusProxy::setAutoInstallUpdates(bool value) -{ - m_updateInter->setProperty("AutoInstallUpdates", QVariant::fromValue(value)); -} - -void UpdateDBusProxy::SetMirrorSource(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_updateInter->asyncCallWithArgumentList(QStringLiteral("SetMirrorSource"), argumentList); -} - -bool UpdateDBusProxy::autoClean() -{ - return qvariant_cast(m_managerInter->property("AutoClean")); -} - -uint UpdateDBusProxy::updateMode() -{ - return qvariant_cast(m_managerInter->property("UpdateMode")); -} - -void UpdateDBusProxy::setUpdateMode(qulonglong value) -{ - m_managerInter->setProperty("UpdateMode", QVariant::fromValue(value)); -} - -QList UpdateDBusProxy::jobList() -{ - return qvariant_cast>(m_managerInter->property("JobList")); -} - -QString UpdateDBusProxy::hardwareId() -{ - return qvariant_cast(m_managerInter->property("HardwareId")); -} - -QDBusPendingReply UpdateDBusProxy::UpdateSource() -{ - QList argumentList; - return m_managerInter->asyncCallWithArgumentList(QStringLiteral("UpdateSource"), argumentList); -} - -void UpdateDBusProxy::CleanJob(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_managerInter->asyncCallWithArgumentList(QStringLiteral("CleanJob"), argumentList); -} - -void UpdateDBusProxy::SetAutoClean(bool in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_managerInter->asyncCallWithArgumentList(QStringLiteral("SetAutoClean"), argumentList); -} - -void UpdateDBusProxy::StartJob(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_managerInter->asyncCallWithArgumentList(QStringLiteral("StartJob"), argumentList); -} - -void UpdateDBusProxy::PauseJob(const QString &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - m_managerInter->asyncCallWithArgumentList(QStringLiteral("PauseJob"), argumentList); -} - -QDBusPendingReply UpdateDBusProxy::InstallPackage(const QString &jobname, - const QString &packages) -{ - QList argumentList; - argumentList << QVariant::fromValue(jobname) << QVariant::fromValue(packages); - return m_managerInter->asyncCallWithArgumentList(QStringLiteral("InstallPackage"), - argumentList); -} - -QDBusPendingReply UpdateDBusProxy::RemovePackage(const QString &jobname, - const QString &packages) -{ - QList argumentList; - argumentList << QVariant::fromValue(jobname) << QVariant::fromValue(packages); - return m_managerInter->asyncCallWithArgumentList(QStringLiteral("RemovePackage"), argumentList); -} - -QDBusPendingReply> UpdateDBusProxy::ClassifiedUpgrade(qulonglong in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_managerInter->asyncCallWithArgumentList(QStringLiteral("ClassifiedUpgrade"), - argumentList); -} - -QDBusPendingReply UpdateDBusProxy::PackagesDownloadSize(const QStringList &in0) -{ - QList argumentList; - argumentList << QVariant::fromValue(in0); - return m_managerInter->asyncCallWithArgumentList(QStringLiteral("PackagesDownloadSize"), - argumentList); -} - -QDBusPendingReply UpdateDBusProxy::PackageExists(const QString &pkgid) -{ - QList argumentList; - argumentList << QVariant::fromValue(pkgid); - return m_managerInter->asyncCallWithArgumentList(QStringLiteral("PackageExists"), argumentList); -} - -bool UpdateDBusProxy::onBattery() -{ - return qvariant_cast(m_powerInter->property("OnBattery")); -} - -BatteryPercentageInfo UpdateDBusProxy::batteryPercentage() -{ - QDBusInterface powerInter(m_powerInter->service(), - m_powerInter->path(), - PropertiesInterface, - m_powerInter->connection()); - QDBusMessage mess = powerInter.call(QStringLiteral("Get"), - m_powerInter->interface(), - QStringLiteral("BatteryPercentage")); - QVariant v = mess.arguments().first(); - const QDBusArgument arg = v.value().variant().value(); - BatteryPercentageInfo packagesInfo; - arg >> packagesInfo; - return packagesInfo; -} - -void UpdateDBusProxy::commit(const QString &commitDate) -{ - QList argumentList; - argumentList << QVariant::fromValue(commitDate); - m_atomicUpgradeInter->asyncCallWithArgumentList(QStringLiteral("Commit"), argumentList); -} - -bool UpdateDBusProxy::atomBackupIsRunning() -{ - return qvariant_cast(m_atomicUpgradeInter->property("Running")); -} - -bool UpdateDBusProxy::enable() const -{ - return qvariant_cast(m_smartMirrorInter->property("Enable")); -} - -void UpdateDBusProxy::SetEnable(bool enable) -{ - QList argumentList; - argumentList << QVariant::fromValue(enable); - m_smartMirrorInter->asyncCallWithArgumentList(QStringLiteral("SetEnable"), argumentList); -} diff --git a/dcc-old/src/plugin-update/operation/updatedbusproxy.h b/dcc-old/src/plugin-update/operation/updatedbusproxy.h deleted file mode 100644 index c18a3ca6cf..0000000000 --- a/dcc-old/src/plugin-update/operation/updatedbusproxy.h +++ /dev/null @@ -1,131 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UPDATEDBUSPROXY_H -#define UPDATEDBUSPROXY_H - -#include "interface/namespace.h" - -#include - -#include -#include -#include - -typedef QMap LastoreUpdatePackagesInfo; -typedef QMap BatteryPercentageInfo; - -using Dtk::Core::DDBusInterface; - -class QDBusMessage; -class QDBusInterface; - -class UpdateDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit UpdateDBusProxy(QObject *parent = nullptr); - ~UpdateDBusProxy(); - -public: - // hostname - QString staticHostname() const; - - // updater - Q_PROPERTY(bool UpdateNotify READ updateNotify NOTIFY UpdateNotifyChanged) - bool updateNotify(); - void SetUpdateNotify(bool in0); - LastoreUpdatePackagesInfo classifiedUpdatablePackages(); - double GetCheckIntervalAndTime(QString &out1); - - Q_PROPERTY(bool AutoDownloadUpdates READ autoDownloadUpdates NOTIFY AutoDownloadUpdatesChanged) - bool autoDownloadUpdates(); - void SetAutoDownloadUpdates(bool in0); - - Q_PROPERTY(bool AutoInstallUpdates READ autoInstallUpdates WRITE setAutoInstallUpdates NOTIFY - AutoInstallUpdatesChanged) - bool autoInstallUpdates(); - void setAutoInstallUpdates(bool value); - - qulonglong autoInstallUpdateType(); - - Q_PROPERTY(bool AutoCheckUpdates READ autoCheckUpdates NOTIFY AutoCheckUpdatesChanged) - bool autoCheckUpdates(); - void SetAutoCheckUpdates(bool in0); - Q_PROPERTY(QString MirrorSource READ mirrorSource NOTIFY MirrorSourceChanged) - QString mirrorSource() const; - void SetMirrorSource(const QString &in0); - - // ManagerInter - Q_PROPERTY(bool AutoClean READ autoClean NOTIFY AutoCleanChanged) - bool autoClean(); - - Q_PROPERTY(qulonglong UpdateMode READ updateMode WRITE setUpdateMode NOTIFY UpdateModeChanged) - uint updateMode(); - void setUpdateMode(qulonglong value); - - Q_PROPERTY(QList JobList READ jobList NOTIFY JobListChanged) - QList jobList(); - - QString hardwareId(); - - QDBusPendingReply UpdateSource(); - void CleanJob(const QString &in0); - void SetAutoClean(bool in0); - void StartJob(const QString &in0); - void PauseJob(const QString &in0); - QDBusPendingReply InstallPackage(const QString &jobname, - const QString &packages); - QDBusPendingReply RemovePackage(const QString &jobname, - const QString &packages); - QDBusPendingReply > ClassifiedUpgrade(qulonglong in0); - QDBusPendingReply PackagesDownloadSize(const QStringList &in0); - QDBusPendingReply PackageExists(const QString &pkgid); - - // Power - bool onBattery(); - BatteryPercentageInfo batteryPercentage(); - - // Atomic Upgrade - void commit(const QString &commitDate); - - bool atomBackupIsRunning(); - // Smart Mirror - Q_PROPERTY(bool Enable READ enable NOTIFY EnableChanged) - bool enable() const; - void SetEnable(bool enable); -signals: - // updater - void UpdateNotifyChanged(bool value) const; - void AutoDownloadUpdatesChanged(bool value) const; - void AutoInstallUpdatesChanged(bool value) const; - void AutoInstallUpdateTypeChanged(qulonglong value) const; - void MirrorSourceChanged(const QString &value) const; - void AutoCheckUpdatesChanged(bool value) const; - void ClassifiedUpdatablePackagesChanged(LastoreUpdatePackagesInfo value) const; - - // ManagerInter - void JobListChanged(const QList &value) const; - void AutoCleanChanged(bool value) const; - void UpdateModeChanged(qulonglong value) const; - - // Power - void OnBatteryChanged(bool value) const; - void BatteryPercentageChanged(BatteryPercentageInfo value) const; - - // Atomic Upgrade - void StateChanged(int operate, int state, QString version, QString message); - void RunningChanged(bool value) const; - // Smart Mirror - void EnableChanged(bool enable); - -private: - DDBusInterface *m_hostname1Inter; - DDBusInterface *m_updateInter; - DDBusInterface *m_managerInter; - DDBusInterface *m_powerInter; - DDBusInterface *m_atomicUpgradeInter; - DDBusInterface *m_smartMirrorInter; -}; - -#endif // UPDATEDBUSPROXY_H diff --git a/dcc-old/src/plugin-update/operation/updatejobdbusproxy.cpp b/dcc-old/src/plugin-update/operation/updatejobdbusproxy.cpp deleted file mode 100644 index bcbba25d0c..0000000000 --- a/dcc-old/src/plugin-update/operation/updatejobdbusproxy.cpp +++ /dev/null @@ -1,99 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "updatejobdbusproxy.h" - -#include -#include -#include -#include -#include - -// Updater Job -const static QString UpdaterService = QStringLiteral("org.deepin.dde.Lastore1"); -const static QString UpdaterJobInterface = QStringLiteral("org.deepin.dde.Lastore1.Job"); - -// Atomic Upgrade -const static QString AtomicUpdaterService = QStringLiteral("org.deepin.AtomicUpgrade1"); -const static QString AtomicUpdaterJobInterface = QStringLiteral("org.deepin.AtomicUpgrade1"); - -const static QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); -const static QString PropertiesChanged = QStringLiteral("PropertiesChanged"); - -UpdateJobDBusProxy::UpdateJobDBusProxy(const QString &jobPath, QObject *parent) - : QObject(parent) - , m_updateJobInter(new DDBusInterface( - UpdaterService, jobPath, UpdaterJobInterface, QDBusConnection::systemBus(), this)) -{ -} - -UpdateJobDBusProxy::~UpdateJobDBusProxy() -{ - m_updateJobInter->deleteLater(); - m_updateJobInter = nullptr; -} - -bool UpdateJobDBusProxy::isValid() const -{ - return m_updateJobInter->isValid(); -} - -bool UpdateJobDBusProxy::cancelable() -{ - return qvariant_cast(m_updateJobInter->property("Cancelable")); -} - -qlonglong UpdateJobDBusProxy::createTime() -{ - return qvariant_cast(m_updateJobInter->property("CreateTime")); -} - -QString UpdateJobDBusProxy::description() -{ - return qvariant_cast(m_updateJobInter->property("Description")); -} - -int UpdateJobDBusProxy::elapsedTime() -{ - return qvariant_cast(m_updateJobInter->property("ElapsedTime")); -} - -QString UpdateJobDBusProxy::id() -{ - return qvariant_cast(m_updateJobInter->property("Id")); -} - -QString UpdateJobDBusProxy::name() -{ - return qvariant_cast(m_updateJobInter->property("Name")); -} - -QString UpdateJobDBusProxy::packageId() -{ - return qvariant_cast(m_updateJobInter->property("PackageId")); -} - -QStringList UpdateJobDBusProxy::packages() -{ - return qvariant_cast(m_updateJobInter->property("Packages")); -} - -double UpdateJobDBusProxy::progress() -{ - return qvariant_cast(m_updateJobInter->property("Progress")); -} - -qlonglong UpdateJobDBusProxy::speed() -{ - return qvariant_cast(m_updateJobInter->property("Speed")); -} - -QString UpdateJobDBusProxy::status() -{ - return qvariant_cast(m_updateJobInter->property("Status")); -} - -QString UpdateJobDBusProxy::type() -{ - return qvariant_cast(m_updateJobInter->property("Type")); -} diff --git a/dcc-old/src/plugin-update/operation/updatejobdbusproxy.h b/dcc-old/src/plugin-update/operation/updatejobdbusproxy.h deleted file mode 100644 index 00b46a3f0d..0000000000 --- a/dcc-old/src/plugin-update/operation/updatejobdbusproxy.h +++ /dev/null @@ -1,79 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UPDATEJOBDBUSPROXY_H -#define UPDATEJOBDBUSPROXY_H - -#include -#include - -using Dtk::Core::DDBusInterface; - -class QDBusMessage; -class QDBusInterface; -class UpdateJobDBusProxy : public QObject -{ - Q_OBJECT -public: - explicit UpdateJobDBusProxy(const QString &jobPath, QObject *parent = nullptr); - ~UpdateJobDBusProxy(); - - bool isValid() const; -public: - Q_PROPERTY(bool Cancelable READ cancelable NOTIFY CancelableChanged) - bool cancelable(); - - Q_PROPERTY(qlonglong CreateTime READ createTime NOTIFY CreateTimeChanged) - qlonglong createTime(); - - Q_PROPERTY(QString Description READ description NOTIFY DescriptionChanged) - QString description(); - - Q_PROPERTY(int ElapsedTime READ elapsedTime NOTIFY ElapsedTimeChanged) - int elapsedTime(); - - Q_PROPERTY(QString Id READ id NOTIFY IdChanged) - QString id(); - - Q_PROPERTY(QString Name READ name NOTIFY NameChanged) - QString name(); - - Q_PROPERTY(QString PackageId READ packageId NOTIFY PackageIdChanged) - QString packageId(); - - Q_PROPERTY(QStringList Packages READ packages NOTIFY PackagesChanged) - QStringList packages(); - - Q_PROPERTY(double Progress READ progress NOTIFY ProgressChanged) - double progress(); - - Q_PROPERTY(qlonglong Speed READ speed NOTIFY SpeedChanged) - qlonglong speed(); - - Q_PROPERTY(QString Status READ status NOTIFY StatusChanged) - QString status(); - - Q_PROPERTY(QString Type READ type NOTIFY TypeChanged) - QString type(); - -signals: - void Notify(int in0); - // begin property changed signals - void CancelableChanged(bool value) const; - void CreateTimeChanged(qlonglong value) const; - void DescriptionChanged(const QString & value) const; - void ElapsedTimeChanged(int value) const; - void IdChanged(const QString & value) const; - void NameChanged(const QString & value) const; - void PackageIdChanged(const QString & value) const; - void PackagesChanged(const QStringList & value) const; - void ProgressChanged(double value) const; - void SpeedChanged(qlonglong value) const; - void StatusChanged(const QString & value) const; - void TypeChanged(const QString & value) const; - -private: - DDBusInterface *m_updateJobInter; -}; - -#endif // UPDATEJOBDBUSPROXY_H diff --git a/dcc-old/src/plugin-update/operation/updatemodel.cpp b/dcc-old/src/plugin-update/operation/updatemodel.cpp deleted file mode 100644 index 7681e3d063..0000000000 --- a/dcc-old/src/plugin-update/operation/updatemodel.cpp +++ /dev/null @@ -1,724 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "updatemodel.h" - -#include - -Q_LOGGING_CATEGORY(DdcUpdateModel, "dcc-update-model") - -DownloadInfo::DownloadInfo(const qlonglong &downloadSize, - const QList &appInfos, - QObject *parent) - : QObject(parent) - , m_downloadSize(downloadSize) - , m_downloadProgress(0) - , m_appInfos(appInfos) -{ -} - -void DownloadInfo::setDownloadProgress(double downloadProgress) -{ - if (compareDouble(m_downloadProgress, downloadProgress)) { - m_downloadProgress = downloadProgress; - Q_EMIT downloadProgressChanged(downloadProgress); - } -} - -UpdateModel::UpdateModel(QObject *parent) - : QObject(parent) - , m_status(UpdatesStatus::Default) - , m_systemUpdateStatus(UpdatesStatus::Default) - , m_safeUpdateStatus(UpdatesStatus::Default) - , m_unkonowUpdateStatus(UpdatesStatus::Default) - , m_downloadInfo(nullptr) - , m_systemUpdateInfo(nullptr) - , m_safeUpdateInfo(nullptr) - , m_unknownUpdateInfo(nullptr) - , m_updateProgress(0.0) - , m_upgradeProgress(0.0) - , m_lowBattery(false) - , m_netselectExist(false) - , m_autoCleanCache(false) - , m_autoDownloadUpdates(false) - , m_autoInstallUpdates(false) - , m_autoInstallUpdateType(0) - , m_backupUpdates(true) - , m_autoCheckUpdates(false) - , m_updateMode(0) - , m_autoCheckSecureUpdates(false) - , m_autoCheckSystemUpdates(false) - , m_autoCheckAppUpdates(false) - , m_autoCheckThirdpartyUpdates(false) - , m_updateNotify(false) - , m_mirrorId(QString()) - , m_systemVersionInfo(QString()) - , m_metaEnum(QMetaEnum::fromType()) - , m_bSystemActivation(UiActiveState::Unknown) - , m_lastCheckUpdateTime(QString()) - , m_autoCheckUpdateCircle(0) - , m_isUpdatablePackages(false) - , m_testingChannelStatus(TestingChannelStatus::DeActive) -{ - - qRegisterMetaType("TestingChannelStatus"); -} - -UpdateModel::~UpdateModel() -{ - deleteUpdateInfo(m_systemUpdateInfo); - deleteUpdateInfo(m_safeUpdateInfo); - deleteUpdateInfo(m_unknownUpdateInfo); -} - -DownloadInfo *UpdateModel::downloadInfo() const -{ - return m_downloadInfo; -} - -UpdateItemInfo *UpdateModel::systemDownloadInfo() const -{ - return m_systemUpdateInfo; -} - -UpdateItemInfo *UpdateModel::safeDownloadInfo() const -{ - return m_safeUpdateInfo; -} - -UpdateItemInfo *UpdateModel::unknownDownloadInfo() const -{ - return m_unknownUpdateInfo; -} - -QMap UpdateModel::allDownloadInfo() const -{ - return m_allUpdateInfos; -} - -void UpdateModel::setDownloadInfo(DownloadInfo *downloadInfo) -{ - if (m_downloadInfo) { - m_downloadInfo->deleteLater(); - m_downloadInfo = nullptr; - } - - m_downloadInfo = downloadInfo; - Q_EMIT downloadInfoChanged(downloadInfo); -} - -void UpdateModel::setSystemDownloadInfo(UpdateItemInfo *updateItemInfo) -{ - if (!updateItemInfo) { - return; - } - - deleteUpdateInfo(m_systemUpdateInfo); - - m_systemUpdateInfo = updateItemInfo; - connect(m_systemUpdateInfo, - &UpdateItemInfo::downloadProgressChanged, - this, - &UpdateModel::systemUpdateProgressChanged); - connect(m_systemUpdateInfo, - &UpdateItemInfo::downloadSizeChanged, - this, - &UpdateModel::systemUpdateDownloadSizeChanged); - - Q_EMIT systemUpdateInfoChanged(updateItemInfo); -} - -void UpdateModel::setSafeDownloadInfo(UpdateItemInfo *updateItemInfo) -{ - if (!updateItemInfo) { - return; - } - - deleteUpdateInfo(m_safeUpdateInfo); - m_safeUpdateInfo = updateItemInfo; - connect(m_safeUpdateInfo, - &UpdateItemInfo::downloadProgressChanged, - this, - &UpdateModel::safeUpdateProgressChanged); - connect(m_safeUpdateInfo, - &UpdateItemInfo::downloadSizeChanged, - this, - &UpdateModel::safeUpdateDownloadSizeChanged); - - Q_EMIT safeUpdateInfoChanged(updateItemInfo); -} - -void UpdateModel::setUnknownDownloadInfo(UpdateItemInfo *updateItemInfo) -{ - if (!updateItemInfo) { - return; - } - - deleteUpdateInfo(m_unknownUpdateInfo); - m_unknownUpdateInfo = updateItemInfo; - connect(m_unknownUpdateInfo, - &UpdateItemInfo::downloadProgressChanged, - this, - &UpdateModel::unkonowUpdateProgressChanged); - connect(m_unknownUpdateInfo, - &UpdateItemInfo::downloadSizeChanged, - this, - &UpdateModel::unkonowUpdateDownloadSizeChanged); - - Q_EMIT unknownUpdateInfoChanged(updateItemInfo); -} - -void UpdateModel::setAllDownloadInfo(QMap &allUpdateInfoInfo) -{ - m_allUpdateInfos = allUpdateInfoInfo; - - setSystemDownloadInfo(allUpdateInfoInfo.value(ClassifyUpdateType::SystemUpdate)); - setSafeDownloadInfo(allUpdateInfoInfo.value(ClassifyUpdateType::SecurityUpdate)); - setUnknownDownloadInfo(allUpdateInfoInfo.value(ClassifyUpdateType::UnknownUpdate)); -} - -bool UpdateModel::lowBattery() const -{ - return m_lowBattery; -} - -void UpdateModel::setLowBattery(bool lowBattery) -{ - if (lowBattery != m_lowBattery) { - m_lowBattery = lowBattery; - Q_EMIT lowBatteryChanged(lowBattery); - } -} - -bool UpdateModel::autoDownloadUpdates() const -{ - return m_autoDownloadUpdates; -} - -void UpdateModel::setAutoDownloadUpdates(bool autoDownloadUpdates) -{ - if (m_autoDownloadUpdates != autoDownloadUpdates) { - m_autoDownloadUpdates = autoDownloadUpdates; - Q_EMIT autoDownloadUpdatesChanged(autoDownloadUpdates); - } -} - -UpdatesStatus UpdateModel::status() const -{ - return m_status; -} - -void UpdateModel::setStatus(const UpdatesStatus &status) -{ - if (getIsRecoveryBackingup(status)) - return; - - if (m_status != status) { - m_status = status; - Q_EMIT statusChanged(status); - } -} - -void UpdateModel::setStatus(const UpdatesStatus &status, int line) -{ - qCDebug(DdcUpdateModel) << " from work set status : " << m_metaEnum.valueToKey(status) - << " , set place in work line : " << line; - setStatus(status); -} - -double UpdateModel::upgradeProgress() const -{ - return m_upgradeProgress; -} - -void UpdateModel::setUpgradeProgress(double upgradeProgress) -{ - if (compareDouble(m_upgradeProgress, upgradeProgress)) { - m_upgradeProgress = upgradeProgress; - Q_EMIT upgradeProgressChanged(upgradeProgress); - } -} - -bool UpdateModel::autoCleanCache() const -{ - return m_autoCleanCache; -} - -void UpdateModel::setAutoCleanCache(bool autoCleanCache) -{ - if (m_autoCleanCache == autoCleanCache) - return; - - m_autoCleanCache = autoCleanCache; - Q_EMIT autoCleanCacheChanged(autoCleanCache); -} - -double UpdateModel::updateProgress() const -{ - return m_updateProgress; -} - -void UpdateModel::setUpdateProgress(double updateProgress) -{ - if (compareDouble(m_updateProgress, updateProgress)) { - m_updateProgress = updateProgress; - Q_EMIT updateProgressChanged(updateProgress); - } -} - -bool UpdateModel::netselectExist() const -{ - return m_netselectExist; -} - -void UpdateModel::setNetselectExist(bool netselectExist) -{ - if (m_netselectExist == netselectExist) { - return; - } - - m_netselectExist = netselectExist; - - Q_EMIT netselectExistChanged(netselectExist); -} - -void UpdateModel::setAutoCheckUpdates(bool autoCheckUpdates) -{ - if (autoCheckUpdates == m_autoCheckUpdates) - return; - - m_autoCheckUpdates = autoCheckUpdates; - - Q_EMIT autoCheckUpdatesChanged(autoCheckUpdates); -} - -void UpdateModel::setUpdateMode(qulonglong updateMode) -{ - qCDebug(DdcUpdateModel) << Q_FUNC_INFO << "get UpdateMode from dbus:" << updateMode; - - if (m_updateMode == updateMode) { - return; - } - - m_updateMode = updateMode; - - setAutoCheckSystemUpdates(m_updateMode & ClassifyUpdateType::SystemUpdate); - setAutoCheckAppUpdates(m_updateMode & ClassifyUpdateType::AppStoreUpdate); - setAutoCheckSecureUpdates(m_updateMode & ClassifyUpdateType::SecurityUpdate); - setAutoCheckThirdpartyUpdates(m_updateMode & ClassifyUpdateType::UnknownUpdate); -} - -void UpdateModel::setAutoCheckSecureUpdates(bool autoCheckSecureUpdates) -{ - if (autoCheckSecureUpdates == m_autoCheckSecureUpdates) - return; - - m_autoCheckSecureUpdates = autoCheckSecureUpdates; - - Q_EMIT autoCheckSecureUpdatesChanged(autoCheckSecureUpdates); -} - -void UpdateModel::setAutoCheckSystemUpdates(bool autoCheckSystemUpdates) -{ - if (autoCheckSystemUpdates == m_autoCheckSystemUpdates) - return; - - m_autoCheckSystemUpdates = autoCheckSystemUpdates; - - Q_EMIT autoCheckSystemUpdatesChanged(autoCheckSystemUpdates); -} - -void UpdateModel::setAutoCheckAppUpdates(bool autoCheckAppUpdates) -{ - if (autoCheckAppUpdates == m_autoCheckAppUpdates) - return; - - m_autoCheckAppUpdates = autoCheckAppUpdates; - - Q_EMIT autoCheckAppUpdatesChanged(autoCheckAppUpdates); -} - -void UpdateModel::setSystemVersionInfo(const QString &systemVersionInfo) -{ - if (m_systemVersionInfo == systemVersionInfo) - return; - - m_systemVersionInfo = systemVersionInfo; - - Q_EMIT systemVersionChanged(systemVersionInfo); -} - -void UpdateModel::setSystemActivation(const UiActiveState &systemactivation) -{ - if (m_bSystemActivation == systemactivation) { - return; - } - m_bSystemActivation = systemactivation; - - Q_EMIT systemActivationChanged(systemactivation); -} - -void UpdateModel::isUpdatablePackages(bool isUpdatablePackages) -{ - if (m_isUpdatablePackages == isUpdatablePackages) - return; - - m_isUpdatablePackages = isUpdatablePackages; - Q_EMIT updatablePackagesChanged(isUpdatablePackages); -} - -// 判断当前是否正在备份中,若正在备份则不能再设置其他状态,直到备份有结果了才能继续设置其他状态 -bool UpdateModel::getIsRecoveryBackingup(UpdatesStatus state) const -{ - bool ret = true; - - if (m_status == UpdatesStatus::RecoveryBackingup) { - if (state == UpdatesStatus::RecoveryBackingSuccessed - || state == UpdatesStatus::RecoveryBackupFailed - || state == UpdatesStatus::RecoveryBackupFailedDiskFull) { - ret = false; - qCDebug(DdcUpdateModel) << " Backing up End ! , state : " << state; - } else { - qCDebug(DdcUpdateModel) << " Now is Backing up , can't set other status. Please wait..." - << m_metaEnum.valueToKey(state); - } - } else { - ret = false; - } - - return ret; -} - -void UpdateModel::setLastCheckUpdateTime(const QString &lastTime) -{ - qCDebug(DdcUpdateModel) << "Last check time:" << lastTime; - m_lastCheckUpdateTime = lastTime.left(QString("0000-00-00 00:00:00").size()); -} - -void UpdateModel::setHistoryAppInfos(const QList &infos) -{ - m_historyAppInfos = infos; -} - -void UpdateModel::setAutoCheckUpdateCircle(const int interval) -{ - m_autoCheckUpdateCircle = interval; -} - -bool UpdateModel::enterCheckUpdate() -{ - qCDebug(DdcUpdateModel) << "last update time:" << m_lastCheckUpdateTime - << "check circle:" << m_autoCheckUpdateCircle; - return QDateTime::fromString(m_lastCheckUpdateTime, "yyyy-MM-dd hh:mm:ss") - .secsTo(QDateTime::currentDateTime()) - > m_autoCheckUpdateCircle * 3600; -} - -void UpdateModel::setUpdateNotify(const bool notify) -{ - if (m_updateNotify == notify) { - return; - } - - m_updateNotify = notify; - - Q_EMIT updateNotifyChanged(notify); -} - -UpdatesStatus UpdateModel::getUnkonowUpdateStatus() const -{ - return m_unkonowUpdateStatus; -} - -void UpdateModel::setUnkonowUpdateStatus(const UpdatesStatus &unkonowUpdateStatus) -{ - if (m_unkonowUpdateStatus != unkonowUpdateStatus) { - m_unkonowUpdateStatus = unkonowUpdateStatus; - Q_EMIT unkonowUpdateStatusChanged(unkonowUpdateStatus); - } -} - -UpdatesStatus UpdateModel::getSafeUpdateStatus() const -{ - return m_safeUpdateStatus; -} - -void UpdateModel::setSafeUpdateStatus(const UpdatesStatus &safeUpdateStatus) -{ - if (m_safeUpdateStatus != safeUpdateStatus) { - m_safeUpdateStatus = safeUpdateStatus; - Q_EMIT safeUpdateStatusChanged(safeUpdateStatus); - } -} - -UpdatesStatus UpdateModel::getSystemUpdateStatus() const -{ - return m_systemUpdateStatus; -} - -void UpdateModel::setSystemUpdateStatus(const UpdatesStatus &systemUpdateStatus) -{ - if (m_systemUpdateStatus != systemUpdateStatus) { - m_systemUpdateStatus = systemUpdateStatus; - Q_EMIT systemUpdateStatusChanged(systemUpdateStatus); - } -} - -void UpdateModel::setClassifyUpdateTypeStatus(ClassifyUpdateType type, UpdatesStatus status) -{ - switch (type) { - case ClassifyUpdateType::SystemUpdate: - setSystemUpdateStatus(status); - break; - case ClassifyUpdateType::SecurityUpdate: - setSafeUpdateStatus(status); - break; - case ClassifyUpdateType::UnknownUpdate: - setUnkonowUpdateStatus(status); - break; - default: - break; - } -} - -void UpdateModel::setAllClassifyUpdateStatus(UpdatesStatus status) -{ - setSystemUpdateStatus(status); - setSafeUpdateStatus(status); - setUnkonowUpdateStatus(status); -} - -void UpdateModel::deleteUpdateInfo(UpdateItemInfo *updateItemInfo) -{ - if (updateItemInfo != nullptr) { - updateItemInfo->deleteLater(); - } -} - -bool UpdateModel::getAutoInstallUpdates() const -{ - return m_autoInstallUpdates; -} - -void UpdateModel::setAutoInstallUpdates(bool autoInstallUpdates) -{ - if (m_autoInstallUpdates != autoInstallUpdates) { - m_autoInstallUpdates = autoInstallUpdates; - Q_EMIT autoInstallUpdatesChanged(autoInstallUpdates); - } -} - -bool UpdateModel::getBackupUpdates() const -{ - return m_backupUpdates; -} - -void UpdateModel::setBackupUpdates(bool backupsUpdates) -{ - if (m_backupUpdates != backupsUpdates) { - m_backupUpdates = backupsUpdates; - Q_EMIT backupUpdatesChanged(backupsUpdates); - } -} - -quint64 UpdateModel::getAutoInstallUpdateType() const -{ - return m_autoInstallUpdateType; -} - -void UpdateModel::setAutoInstallUpdateType(const quint64 &autoInstallUpdateType) -{ - if (m_autoInstallUpdateType != autoInstallUpdateType) { - m_autoInstallUpdateType = autoInstallUpdateType; - Q_EMIT autoInstallUpdateTypeChanged(autoInstallUpdateType); - } -} - -QMap UpdateModel::getAllUpdateInfos() const -{ - return m_allUpdateInfos; -} - -void UpdateModel::setAllUpdateInfos( - const QMap &allUpdateInfos) -{ - m_allUpdateInfos = allUpdateInfos; -} - -UpdateJobErrorMessage UpdateModel::getSystemUpdateJobError() const -{ - return m_systemUpdateJobError; -} - -void UpdateModel::setSystemUpdateJobError(const UpdateJobErrorMessage &systemUpdateJobError) -{ - m_systemUpdateJobError = systemUpdateJobError; -} - -UpdateJobErrorMessage UpdateModel::getSafeUpdateJobError() const -{ - return m_safeUpdateJobError; -} - -void UpdateModel::setSafeUpdateJobError(const UpdateJobErrorMessage &safeUpdateJobError) -{ - m_safeUpdateJobError = safeUpdateJobError; -} - -UpdateJobErrorMessage UpdateModel::getUnkonwUpdateJobError() const -{ - return m_UnkonwUpdateJobError; -} - -void UpdateModel::setUnkonwUpdateJobError(const UpdateJobErrorMessage &UnkonwUpdateJobError) -{ - m_UnkonwUpdateJobError = UnkonwUpdateJobError; -} - -void UpdateModel::setClassityUpdateJonError(ClassifyUpdateType type, UpdateErrorType errorType) -{ - if (m_updateErrorTypeMap.contains(type)) { - m_updateErrorTypeMap.remove(type); - } - m_updateErrorTypeMap.insert(type, errorType); - - Q_EMIT classityUpdateJobErrorChanged(type, errorType); -} - -QMap UpdateModel::getUpdateErrorTypeMap() const -{ - return m_updateErrorTypeMap; -} - -bool UpdateModel::getAutoCheckThirdpartyUpdates() const -{ - return m_autoCheckThirdpartyUpdates; -} - -void UpdateModel::setAutoCheckThirdpartyUpdates(bool autoCheckThirdpartyUpdates) -{ - if (m_autoCheckThirdpartyUpdates != autoCheckThirdpartyUpdates) { - m_autoCheckThirdpartyUpdates = autoCheckThirdpartyUpdates; - Q_EMIT autoCheckThirdpartyUpdatesChanged(m_autoCheckThirdpartyUpdates); - } -} - -QString UpdateModel::commitSubmissionTime() -{ - // 显示时间,⼗位时间度为秒; - QString currentTime = QByteArray::number(QDateTime::currentDateTime().toTime_t()); - return currentTime; -} - -QString UpdateModel::systemVersion() -{ - QString systemVer = QString("uos-%1-%2-%3") - .arg(DSysInfo::majorVersion()) - .arg(DSysInfo::minorVersion()) - .arg(DSysInfo::buildVersion()); - return systemVer; -} - -int32_t UpdateModel::submissionType() -{ - // 控制中心 默认 0 - // 0系统提交 1⽤户提交 2装器提交 - return 0; -} - -QString UpdateModel::UUID() -{ - return "02eb924f-4f35-4880-b839-096c3a65f525"; -} - -QString UpdateModel::utcDateTime2LocalDate(const QString &utcDateTime) -{ - if (utcDateTime.isEmpty()) - return ""; - - QDateTime dateTime = QDateTime::fromString(utcDateTime, "yyyy-MM-ddTHH:mm:ss+08:00"); - if (!dateTime.isValid()) - return ""; - - return dateTime.toLocalTime().toString("yyyy-MM-dd"); -} - -UpdatesStatus UpdateModel::getClassifyUpdateStatus(ClassifyUpdateType type) -{ - UpdatesStatus status = UpdatesStatus::Default; - switch (type) { - case ClassifyUpdateType::SystemUpdate: - status = getSystemUpdateStatus(); - break; - case ClassifyUpdateType::SecurityUpdate: - status = getSafeUpdateStatus(); - break; - case ClassifyUpdateType::UnknownUpdate: - status = getUnkonowUpdateStatus(); - break; - default: - break; - } - return status; -} - -TestingChannelStatus UpdateModel::getTestingChannelStatus() const -{ - return m_testingChannelStatus; -} - -void UpdateModel::setTestingChannelStatus(const TestingChannelStatus &status) -{ - m_testingChannelStatus = status; - Q_EMIT TestingChannelStatusChanged(m_testingChannelStatus); -} - -void UpdateModel::setMirrorInfos(const MirrorInfoList &list) -{ - m_mirrorList = list; -} - -MirrorInfo UpdateModel::defaultMirror() const -{ - QList::const_iterator it = m_mirrorList.begin(); - for (; it != m_mirrorList.end(); ++it) { - if ((*it).m_id == m_mirrorId) { - return *it; - } - } - - return m_mirrorList.at(0); -} - -void UpdateModel::setDefaultMirror(const QString &mirrorId) -{ - if (mirrorId == "") - return; - - m_mirrorId = mirrorId; - - QList::iterator it = m_mirrorList.begin(); - for (; it != m_mirrorList.end(); ++it) { - if ((*it).m_id == mirrorId) { - Q_EMIT defaultMirrorChanged(*it); - } - } -} - -void UpdateModel::setSmartMirrorSwitch(bool smartMirrorSwitch) -{ - if (m_smartMirrorSwitch == smartMirrorSwitch) - return; - - m_smartMirrorSwitch = smartMirrorSwitch; - - Q_EMIT smartMirrorSwitchChanged(smartMirrorSwitch); -} - -void UpdateModel::setMirrorSpeedInfo(const QMap &mirrorSpeedInfo) -{ - m_mirrorSpeedInfo = mirrorSpeedInfo; - - if (mirrorSpeedInfo.keys().length()) - Q_EMIT mirrorSpeedInfoAvailable(mirrorSpeedInfo); -} diff --git a/dcc-old/src/plugin-update/operation/updatemodel.h b/dcc-old/src/plugin-update/operation/updatemodel.h deleted file mode 100644 index 2d5fefa6bf..0000000000 --- a/dcc-old/src/plugin-update/operation/updatemodel.h +++ /dev/null @@ -1,347 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UPDATEMODEL_H -#define UPDATEMODEL_H - -#include "appupdateinfolist.h" -#include "common.h" -#include "mirrorinfolist.h" -#include "widgets/updateiteminfo.h" -#include "widgets/utils.h" - -#include - -class DownloadInfo : public QObject -{ - Q_OBJECT -public: - explicit DownloadInfo(const qlonglong &downloadSize, - const QList &appInfos, - QObject *parent = 0); - - virtual ~DownloadInfo() { } - - inline qulonglong downloadSize() const { return m_downloadSize; } - - double downloadProgress() const { return m_downloadProgress; } - - QList appInfos() const { return m_appInfos; } - - void setDownloadProgress(double downloadProgress); - -Q_SIGNALS: - void downloadProgressChanged(const double &progress); - -private: - qlonglong m_downloadSize; - double m_downloadProgress; - QList m_appInfos; -}; - -struct UpdateJobErrorMessage -{ - QString jobErrorType; - QString jobErrorMessage; -}; - -class UpdateModel : public QObject -{ - Q_OBJECT -public: - explicit UpdateModel(QObject *parent = nullptr); - ~UpdateModel(); - -public: - // ModelUpdatesStatus仅用于log显示; - // common.h UpdatesStatu更新后,此处需要同步更新 - enum ModelUpdatesStatus { - Default, - Checking, - Updated, - UpdatesAvailable, - Updating, - Downloading, - DownloadPaused, - Downloaded, - AutoDownloaded, - Installing, - UpdateSucceeded, - UpdateFailed, - NeedRestart, - WaitForRecoveryBackup, - RecoveryBackingup, - RecoveryBackingSuccessed, - RecoveryBackupFailed, - Inactive - }; - Q_ENUM(ModelUpdatesStatus) - - UpdatesStatus status() const; - void setStatus(const UpdatesStatus &status); - void setStatus(const UpdatesStatus &status, int line); - - DownloadInfo *downloadInfo() const; - void setDownloadInfo(DownloadInfo *downloadInfo); - - UpdateItemInfo *systemDownloadInfo() const; - void setSystemDownloadInfo(UpdateItemInfo *updateItemInfo); - - UpdateItemInfo *safeDownloadInfo() const; - void setSafeDownloadInfo(UpdateItemInfo *updateItemInfo); - - UpdateItemInfo *unknownDownloadInfo() const; - void setUnknownDownloadInfo(UpdateItemInfo *updateItemInfo); - - QMap allDownloadInfo() const; - void setAllDownloadInfo(QMap &allUpdateItemInfo); - - bool lowBattery() const; - void setLowBattery(bool lowBattery); - - bool autoDownloadUpdates() const; - void setAutoDownloadUpdates(bool autoDownloadUpdates); - - double upgradeProgress() const; - void setUpgradeProgress(double upgradeProgress); - - bool autoCleanCache() const; - void setAutoCleanCache(bool autoCleanCache); - - double updateProgress() const; - void setUpdateProgress(double updateProgress); - - bool netselectExist() const; - void setNetselectExist(bool netselectExist); - - inline bool autoCheckUpdates() const { return m_autoCheckUpdates; } - - void setAutoCheckUpdates(bool autoCheckUpdates); - - inline qulonglong updateMode() const { return m_updateMode; } - - void setUpdateMode(qulonglong updateMode); - - inline bool autoCheckSecureUpdates() const { return m_autoCheckSecureUpdates; } - - void setAutoCheckSecureUpdates(bool autoCheckSecureUpdates); - - inline bool autoCheckSystemUpdates() const { return m_autoCheckSystemUpdates; } - - void setAutoCheckSystemUpdates(bool autoCheckSystemUpdates); - - inline bool autoCheckAppUpdates() const { return m_autoCheckAppUpdates; } - - void setAutoCheckAppUpdates(bool autoCheckAppUpdates); - - inline QString systemVersionInfo() const { return m_systemVersionInfo; } - - void setSystemVersionInfo(const QString &systemVersionInfo); - - bool getIsRecoveryBackingup(UpdatesStatus state) const; - - inline UiActiveState systemActivation() const { return m_bSystemActivation; } - - void setSystemActivation(const UiActiveState &systemactivation); - - inline bool getUpdatablePackages() const { return m_isUpdatablePackages; } - - void isUpdatablePackages(bool isUpdatablePackages); - - const QString &lastCheckUpdateTime() const { return m_lastCheckUpdateTime; } - - void setLastCheckUpdateTime(const QString &lastTime); - - const QList &historyAppInfos() const { return m_historyAppInfos; } - - void setHistoryAppInfos(const QList &infos); - - int autoCheckUpdateCircle() const { return m_autoCheckUpdateCircle; } - - void setAutoCheckUpdateCircle(const int interval); - bool enterCheckUpdate(); - - inline bool updateNotify() { return m_updateNotify; } - - void setUpdateNotify(const bool notify); - - UpdatesStatus getSystemUpdateStatus() const; - void setSystemUpdateStatus(const UpdatesStatus &systemUpdateStatus); - - UpdatesStatus getSafeUpdateStatus() const; - void setSafeUpdateStatus(const UpdatesStatus &safeUpdateStatus); - - UpdatesStatus getUnkonowUpdateStatus() const; - void setUnkonowUpdateStatus(const UpdatesStatus &unkonowUpdateStatus); - - void setClassifyUpdateTypeStatus(ClassifyUpdateType type, UpdatesStatus status); - void setAllClassifyUpdateStatus(UpdatesStatus status); - - void deleteUpdateInfo(UpdateItemInfo *updateItemInfo); - UpdatesStatus getClassifyUpdateStatus(ClassifyUpdateType type); - - bool getAutoInstallUpdates() const; - void setAutoInstallUpdates(bool autoInstallUpdates); - - bool getBackupUpdates() const; - void setBackupUpdates(bool backupsUpdates); - - quint64 getAutoInstallUpdateType() const; - void setAutoInstallUpdateType(const quint64 &autoInstallUpdateType); - - QMap getAllUpdateInfos() const; - void setAllUpdateInfos(const QMap &allUpdateInfos); - - UpdateJobErrorMessage getSystemUpdateJobError() const; - void setSystemUpdateJobError(const UpdateJobErrorMessage &systemUpdateJobError); - - UpdateJobErrorMessage getSafeUpdateJobError() const; - void setSafeUpdateJobError(const UpdateJobErrorMessage &safeUpdateJobError); - - UpdateJobErrorMessage getUnkonwUpdateJobError() const; - void setUnkonwUpdateJobError(const UpdateJobErrorMessage &UnkonwUpdateJobError); - - void setClassityUpdateJonError(ClassifyUpdateType type, UpdateErrorType errorType); - - QMap getUpdateErrorTypeMap() const; - - bool getAutoCheckThirdpartyUpdates() const; - void setAutoCheckThirdpartyUpdates(bool autoCheckThirdpartyUpdates); - - // TODO : commit date update - QString commitSubmissionTime(); - QString systemVersion(); - int32_t submissionType(); - QString UUID(); - - QString utcDateTime2LocalDate(const QString &utcDateTime); - // Testing Channel - TestingChannelStatus getTestingChannelStatus() const; - void setTestingChannelStatus(const TestingChannelStatus &status); - // 智能镜像源 - void setMirrorInfos(const MirrorInfoList& list); - MirrorInfoList mirrorInfos() const { return m_mirrorList; } - - MirrorInfo defaultMirror() const; - void setDefaultMirror(const QString& mirrorId); - - bool smartMirrorSwitch() const { return m_smartMirrorSwitch; } - void setSmartMirrorSwitch(bool smartMirrorSwitch); - - QMap mirrorSpeedInfo() const { return m_mirrorSpeedInfo; } - void setMirrorSpeedInfo(const QMap& mirrorSpeedInfo); - -Q_SIGNALS: - void autoDownloadUpdatesChanged(const bool &autoDownloadUpdates); - void autoInstallUpdatesChanged(const bool &autoInstallUpdates); - void autoInstallUpdateTypeChanged(const quint64 &autoInstallUpdateType); - - void backupUpdatesChanged(const bool &backupUpdates); - - void lowBatteryChanged(const bool &lowBattery); - void statusChanged(const UpdatesStatus &status); - - void systemUpdateStatusChanged(const UpdatesStatus &status); - void safeUpdateStatusChanged(const UpdatesStatus &status); - void unkonowUpdateStatusChanged(const UpdatesStatus &status); - - void systemUpdateDownloadSizeChanged(const qlonglong updateSize); - void safeUpdateDownloadSizeChanged(const qlonglong updateSize); - void unkonowUpdateDownloadSizeChanged(const qlonglong updateSize); - - void mirrorSpeedInfoAvaiable(const QMap &mirrorSpeedInfo); - - void downloadInfoChanged(DownloadInfo *downloadInfo); - - void systemUpdateInfoChanged(UpdateItemInfo *updateItemInfo); - void safeUpdateInfoChanged(UpdateItemInfo *updateItemInfo); - void unknownUpdateInfoChanged(UpdateItemInfo *updateItemInfo); - - void classityUpdateJobErrorChanged(const ClassifyUpdateType &type, - const UpdateErrorType &errorType); - - void systemUpdateProgressChanged(const double &updateProgress); - void safeUpdateProgressChanged(const double &updateProgress); - void unkonowUpdateProgressChanged(const double &updateProgress); - - void updateProgressChanged(const double &updateProgress); - void upgradeProgressChanged(const double &upgradeProgress); - void autoCleanCacheChanged(const bool autoCleanCache); - void netselectExistChanged(const bool netselectExist); - void autoCheckUpdatesChanged(const bool autoCheckUpdates); - void autoCheckSystemUpdatesChanged(const bool autoCheckSystemUpdate); - void autoCheckAppUpdatesChanged(const bool autoCheckAppUpdate); - void autoCheckSecureUpdatesChanged(const bool autoCheckSecureUpdate); - void autoCheckThirdpartyUpdatesChanged(const bool autoCheckThirdpartyUpdate); - void recoverRestoringChanged(bool recoverRestoring); - void systemVersionChanged(QString version); - void systemActivationChanged(UiActiveState systemactivation); - void beginCheckUpdate(); - void updateCheckUpdateTime(); - void updateNotifyChanged(const bool notify); - void updatablePackagesChanged(const bool isUpdatablePackages); - - // Testing Channel - void TestingChannelStatusChanged(const TestingChannelStatus &status); - - void longlongAutoUpdateChanged(const bool longlongAutoUpdate); - - void defaultMirrorChanged(const MirrorInfo& mirror); - void smartMirrorSwitchChanged(bool smartMirrorSwitch); - void mirrorSpeedInfoAvailable(const QMap& mirrorSpeedInfo); - -private: - UpdatesStatus m_status; - - UpdatesStatus m_systemUpdateStatus; - UpdatesStatus m_safeUpdateStatus; - UpdatesStatus m_unkonowUpdateStatus; - - DownloadInfo *m_downloadInfo; - - QMap m_allUpdateInfos; - UpdateItemInfo *m_systemUpdateInfo; - UpdateItemInfo *m_safeUpdateInfo; - UpdateItemInfo *m_unknownUpdateInfo; - - double m_updateProgress; - double m_upgradeProgress; - - bool m_lowBattery; - bool m_netselectExist; - bool m_autoCleanCache; - bool m_autoDownloadUpdates; - bool m_autoInstallUpdates; - quint64 m_autoInstallUpdateType; - bool m_backupUpdates; - bool m_autoCheckUpdates; - qulonglong m_updateMode; - bool m_autoCheckSecureUpdates; - bool m_autoCheckSystemUpdates; - bool m_autoCheckAppUpdates; - bool m_autoCheckThirdpartyUpdates; - bool m_updateNotify; - QString m_mirrorId; - QMap m_mirrorSpeedInfo; - - QString m_systemVersionInfo; - QMetaEnum m_metaEnum; - UiActiveState m_bSystemActivation; - - QString m_lastCheckUpdateTime; // 上次检查更新时间 - QList m_historyAppInfos; // 历史更新应用列表 - int m_autoCheckUpdateCircle; // 决定进入检查更新界面是否自动检查,单位:小时 - bool m_isUpdatablePackages; - - QMap m_updateErrorTypeMap; - - UpdateJobErrorMessage m_systemUpdateJobError; - UpdateJobErrorMessage m_safeUpdateJobError; - UpdateJobErrorMessage m_UnkonwUpdateJobError; - - TestingChannelStatus m_testingChannelStatus; - MirrorInfoList m_mirrorList; - bool m_smartMirrorSwitch; -}; - -#endif // UPDATEMODEL_H diff --git a/dcc-old/src/plugin-update/operation/updatework.cpp b/dcc-old/src/plugin-update/operation/updatework.cpp deleted file mode 100644 index 269cf835ac..0000000000 --- a/dcc-old/src/plugin-update/operation/updatework.cpp +++ /dev/null @@ -1,2241 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "updatework.h" - -#include "common.h" -#include "mirrorinfolist.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -Q_LOGGING_CATEGORY(DccUpdateWork, "dcc-update-work") - -#define MIN_NM_ACTIVE 50 -#define UPDATE_PACKAGE_SIZE 0 - -const QString ChangeLogFile = "/usr/share/deepin/release-note/UpdateInfo.json"; -const QString ChangeLogDic = "/usr/share/deepin/"; -const QString UpdateLogTmpFile = "/tmp/deepin-update-log.json"; - -constexpr int LogTypeSystem = 1; // 系统更新 -constexpr int LogTypeSecurity = 2; // 安全更新 -constexpr int DesktopProfessionalPlatform = 1; // 桌面专业版 -constexpr int DesktopCommunityPlatform = 3; // 桌面社区版 -constexpr int ServerPlatform = 6; // 服务器版 - -constexpr int RecoveryBackupFailedDistFull = -2; // Not enough disk space - -#define CHECK_JOBS_ENV "DCC_PACKAGE_CHECK_JOBS" - -// NOTE: start with ii, any space, anychar, any space, anychar, at least one space, anykind of char -static const QString PACKAGE_REGEX = QStringLiteral("^ii [ \t]+([^ ]+)[ \t]+([^ ]+)[ \t]+.*$"); - -using Dtk::Widget::DDialog; -using Dtk::Widget::DLabel; -using Dtk::Widget::DWaterProgress; - -std::mutex CHECK_CANEXIST_GUARD; - -inline void notifyError(const QString &summary, const QString &body) -{ - DUtil::DNotifySender(summary) - .appIcon("dde-control-center") - .appName("dde-control-center") - .appBody(body) - .timeOut(5000) - .call(); -} - -inline void notifyErrorWithoutBody(const QString &summary) -{ - DUtil::DNotifySender(summary) - .appIcon("dde-control-center") - .appName("dde-control-center") - .timeOut(5000) - .call(); -} - -static int getPlatform() -{ - if (IsServerSystem) { - return ServerPlatform; - } - - if (IsCommunitySystem) { - return DesktopCommunityPlatform; - } - - return DesktopProfessionalPlatform; -} - - -static int TestMirrorSpeedInternal(const QString& url, QPointer baseObject) -{ - if (!baseObject || QCoreApplication::closingDown()) { - return -1; - } - - QStringList args; - args << url << "-s" - << "1"; - - QProcess process; - process.start("netselect", args); - - if (!process.waitForStarted()) { - return 10000; - } - - do { - if (!baseObject || QCoreApplication::closingDown()) { - process.kill(); - process.terminate(); - process.waitForFinished(1000); - - return -1; - } - - if (process.waitForFinished(500)) - break; - } while (process.state() == QProcess::Running); - - const QString output = process.readAllStandardOutput().trimmed(); - const QStringList result = output.split(' '); - - if (!result.first().isEmpty()) { - return result.first().toInt(); - } - - return 10000; -} - -UpdateWorker::UpdateWorker(UpdateModel *model, QObject *parent) - : QObject(parent) - , m_model(model) - , m_checkUpdateJob(nullptr) - , m_fixErrorJob(nullptr) - , m_sysUpdateDownloadJob(nullptr) - , m_safeUpdateDownloadJob(nullptr) - , m_unknownUpdateDownloadJob(nullptr) - , m_sysUpdateInstallJob(nullptr) - , m_safeUpdateInstallJob(nullptr) - , m_unknownUpdateInstallJob(nullptr) - , m_updateInter(new UpdateDBusProxy(this)) - , m_onBattery(true) - , m_batteryPercentage(0.0) - , m_batterySystemPercentage(0.0) - , m_jobPath("") - , m_downloadSize(0) - , m_backupStatus(BackupStatus::NoBackup) - , m_backupingClassifyType(ClassifyUpdateType::Invalid) - , m_machineid(std::nullopt) - , m_testingChannelUrl(std::nullopt) - , m_isFirstActive(true) - , m_updateConfig(DConfig::create("org.deepin.dde.control-center", QStringLiteral("org.deepin.dde.control-center.update"), QString(), this)) -{ -} - -UpdateWorker::~UpdateWorker() -{ - deleteJob(m_sysUpdateDownloadJob); - deleteJob(m_sysUpdateInstallJob); - deleteJob(m_safeUpdateDownloadJob); - deleteJob(m_safeUpdateInstallJob); - deleteJob(m_unknownUpdateDownloadJob); - deleteJob(m_unknownUpdateInstallJob); - deleteJob(m_checkUpdateJob); - deleteJob(m_fixErrorJob); -} - -void UpdateWorker::preInitialize() -{ - // 是否开启更新提示 - connect(m_updateInter, - &UpdateDBusProxy::UpdateNotifyChanged, - m_model, - &UpdateModel::setUpdateNotify); - m_model->setUpdateMode(m_updateInter->updateMode()); - m_model->setUpdateNotify(m_updateInter->updateNotify()); - - QFutureWatcher> *packagesWatcher = - new QFutureWatcher>(this); - connect(packagesWatcher, &QFutureWatcher::finished, this, [=] { - QMap updatablePackages = packagesWatcher->result(); - checkUpdatablePackages(updatablePackages); - packagesWatcher->deleteLater(); - }); - - packagesWatcher->setFuture(QtConcurrent::run([=]() -> QMap { - QMap map; - map = m_updateInter->classifiedUpdatablePackages(); - return map; - })); -} - -void UpdateWorker::init() -{ - qRegisterMetaType("UpdatesStatus"); - qRegisterMetaType("UiActiveState"); - qRegisterMetaType("TestingChannelStatus"); - - QString sVersion = - QString("%1 %2").arg(DSysInfo::uosProductTypeName()).arg(DSysInfo::majorVersion()); - if (!IsServerSystem) - sVersion.append(" " + DSysInfo::uosEditionName()); - m_model->setSystemVersionInfo(sVersion); - - // clang-format off - connect(m_updateInter, &UpdateDBusProxy::JobListChanged, this, &UpdateWorker::onJobListChanged); - connect(m_updateInter, &UpdateDBusProxy::AutoCleanChanged, - m_model, &UpdateModel::setAutoCleanCache); - - connect(m_updateInter, &UpdateDBusProxy::AutoDownloadUpdatesChanged, - m_model, &UpdateModel::setAutoDownloadUpdates); - connect(m_updateInter, &UpdateDBusProxy::AutoInstallUpdatesChanged, - m_model, &UpdateModel::setAutoInstallUpdates); - connect(m_updateInter, &UpdateDBusProxy::AutoInstallUpdateTypeChanged, - m_model, &UpdateModel::setAutoInstallUpdateType); - connect(m_updateInter, &UpdateDBusProxy::AutoCheckUpdatesChanged, - m_model, &UpdateModel::setAutoCheckUpdates); - connect(m_updateConfig, &DConfig::valueChanged, m_model, [=](const QString &key){ - if (key == "backup") { - m_model->setBackupUpdates(m_updateConfig->value("backup", true).toBool()); - } - }); - connect(m_updateInter, &UpdateDBusProxy::UpdateModeChanged, m_model, [=](qulonglong value) { - m_model->setUpdateMode(value); - QMap updatablePackages = m_updateInter->classifiedUpdatablePackages(); - checkUpdatablePackages(updatablePackages); - }); - - connect(m_updateInter, &UpdateDBusProxy::ClassifiedUpdatablePackagesChanged, - this, &UpdateWorker::onClassifiedUpdatablePackagesChanged); - connect(m_updateInter, &UpdateDBusProxy::OnBatteryChanged, this, &UpdateWorker::setOnBattery); - connect(m_updateInter, &UpdateDBusProxy::BatteryPercentageChanged, - this, &UpdateWorker::setBatteryPercentage); - connect(m_updateInter, &UpdateDBusProxy::StateChanged, - this, &UpdateWorker::handleAtomicStateChanged); - // clang-format on - if (IsCommunitySystem) { - refreshMirrors(); - m_model->setSmartMirrorSwitch(m_updateInter->enable()); - connect(m_updateInter, &UpdateDBusProxy::EnableChanged, m_model, &UpdateModel::setSmartMirrorSwitch); - connect(m_updateInter, &UpdateDBusProxy::MirrorSourceChanged, m_model, &UpdateModel::setDefaultMirror); - } -} - -void UpdateWorker::licenseStateChangeSlot() -{ - QFutureWatcher *watcher = new QFutureWatcher(); - connect(watcher, &QFutureWatcher::finished, watcher, &QFutureWatcher::deleteLater); - - QFuture future = QtConcurrent::run(this, &UpdateWorker::getLicenseState); - watcher->setFuture(future); -} - -void UpdateWorker::testingChannelChangeSlot() -{ - if (!IsCommunitySystem) { - m_model->setTestingChannelStatus(TestingChannelStatus::DeActive); - return; - } - QDBusPendingCall call = m_updateInter->PackageExists(TestingChannelPackage); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [watcher, call, this] { - if (!call.isError()) { - QDBusPendingReply reply = call.reply(); - if (reply.value()) { - m_model->setTestingChannelStatus(TestingChannelStatus::Joined); - }; - } - watcher->deleteLater(); - }); -} - -void UpdateWorker::getLicenseState() -{ - if (DSysInfo::DeepinDesktop == DSysInfo::deepinType()) { - m_model->setSystemActivation(UiActiveState::Authorized); - return; - } - QDBusInterface licenseInfo("com.deepin.license", - "/com/deepin/license/Info", - "com.deepin.license.Info", - QDBusConnection::systemBus()); - if (!licenseInfo.isValid()) { - qCDebug(DccUpdateWork) << "com.deepin.license error ," << licenseInfo.lastError().name(); - return; - } - UiActiveState reply = - static_cast(licenseInfo.property("AuthorizationState").toInt()); - qCDebug(DccUpdateWork) << "Authorization State:" << reply; - m_model->setSystemActivation(reply); -} - -void UpdateWorker::activate() -{ - if (m_isFirstActive) { - init(); - preInitialize(); - m_isFirstActive = false; - } - QString checkTime; - double interval = m_updateInter->GetCheckIntervalAndTime(checkTime); - m_model->setLastCheckUpdateTime(checkTime); - m_model->setAutoCheckUpdateCircle(static_cast(interval)); - - m_model->setAutoCleanCache(m_updateInter->autoClean()); - m_model->setAutoDownloadUpdates(m_updateInter->autoDownloadUpdates()); - m_model->setAutoInstallUpdates(m_updateInter->autoInstallUpdates()); - m_model->setAutoInstallUpdateType(m_updateInter->autoInstallUpdateType()); - m_model->setBackupUpdates(m_updateConfig->value("backup", true).toBool()); - m_model->setAutoCheckUpdates(m_updateInter->autoCheckUpdates()); - m_model->setUpdateMode(m_updateInter->updateMode()); - m_model->setUpdateNotify(m_updateInter->updateNotify()); - - setOnBattery(m_updateInter->onBattery()); - setBatteryPercentage(m_updateInter->batteryPercentage()); - - const QList jobs = m_updateInter->jobList(); - if (jobs.count() > 0) { - for (QDBusObjectPath dBusObjectPath : jobs) { - if (dBusObjectPath.path().contains("upgrade")) { - qCDebug(DccUpdateWork) - << "UpdateWorker::activate, jobs.count() == " << jobs.count(); - setUpdateInfo(); - break; - } - } - } - - onJobListChanged(m_updateInter->jobList()); - - testingChannelChangeSlot(); - - licenseStateChangeSlot(); - - QDBusConnection::systemBus().connect("com.deepin.license", - "/com/deepin/license/Info", - "com.deepin.license.Info", - "LicenseStateChange", - this, - SLOT(licenseStateChangeSlot())); -} - -void UpdateWorker::deactivate() { } - -void UpdateWorker::checkForUpdates() -{ - setOnBattery(m_updateInter->onBattery()); - if (checkDbusIsValid()) { - qCDebug(DccUpdateWork) << " checkDbusIsValid . do nothing"; - return; - } - - QDBusPendingCall call = m_updateInter->UpdateSource(); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, [this, call] { - if (!call.isError()) { - QDBusReply reply = call.reply(); - const QString jobPath = reply.value().path(); - setCheckUpdatesJob(jobPath); - } else { - m_model->setStatus(UpdatesStatus::UpdateFailed, __LINE__); - resetDownloadInfo(); - if (!m_checkUpdateJob.isNull()) { - m_updateInter->CleanJob(m_checkUpdateJob->id()); - } - qCDebug(DccUpdateWork) - << "UpdateFailed, check for updates error: " << call.error().message(); - } - }); - // 每次检查更新的时候都从服务器请求一次更新日志 - requestUpdateLog(); -} - -void UpdateWorker::requestUpdateLog() -{ - qInfo() << "Get update info"; - // 接收并处理respond - QNetworkAccessManager *http = new QNetworkAccessManager(this); - connect(http, &QNetworkAccessManager::finished, this, [this, http](QNetworkReply *reply) { - handleUpdateLogsReply(reply); - reply->deleteLater(); - http->deleteLater(); - }); - - // 请求头 - QNetworkRequest request; - QUrl url(getUpdateLogAddress()); - QUrlQuery urlQuery; - urlQuery.addQueryItem("platformType", QByteArray::number(getPlatform())); - urlQuery.addQueryItem("isUnstable", QByteArray::number(isUnstableResource())); - urlQuery.addQueryItem("mainVersion", QString("V%1").arg(DSysInfo::majorVersion())); - - url.setQuery(urlQuery); - request.setUrl(url); - request.setHeader(QNetworkRequest::ContentTypeHeader, "application/json"); - qCDebug(DccUpdateWork) << "request url : " << url; - http->get(request); -} - -void UpdateWorker::setUpdateInfo() -{ - m_updatePackages.clear(); - m_systemPackages.clear(); - m_safePackages.clear(); - m_unknownPackages.clear(); - - qCDebug(DccUpdateWork) << " UpdateWorker::setUpdateInfo() "; - m_updatePackages = m_updateInter->classifiedUpdatablePackages(); - m_systemPackages = m_updatePackages.value(SystemUpdateType); - m_safePackages = m_updatePackages.value(SecurityUpdateType); - m_unknownPackages = m_updatePackages.value(UnknownUpdateType); - - qCDebug(DccUpdateWork) << "systemUpdate packages:" << m_systemPackages; - qCDebug(DccUpdateWork) << "safeUpdate packages:" << m_safePackages; - qCDebug(DccUpdateWork) << "unkonowUpdate packages:" << m_unknownPackages; - - if (m_model->status() == UpdatesStatus::UpdateFailed) { - qCDebug(DccUpdateWork) << " [UpdateWork] The status is error. Current status : " - << m_model->status(); - return; - } - - int updateCount = m_systemPackages.count() + m_safePackages.count() + m_unknownPackages.count(); - if (updateCount < 1) { - QFile file("/tmp/.dcc-update-successd"); - if (file.exists()) { - m_model->setStatus(UpdatesStatus::NeedRestart, __LINE__); - return; - } - } - - // 如果内存中没有日志数据,那么从文件里面读取 - do { - if (!m_updateLogs.isEmpty() || !QFile::exists(UpdateLogTmpFile)) - break; - - qInfo() << "Update log is empty, read logs from temporary file"; - QFile logFile(UpdateLogTmpFile); - if (!logFile.open(QFile::ReadOnly)) { - qWarning() << "Can not open update log file:" << UpdateLogTmpFile; - break; - } - - QJsonParseError err_rpt; - QJsonDocument updateInfoDoc = QJsonDocument::fromJson(logFile.readAll(), &err_rpt); - logFile.close(); - if (err_rpt.error != QJsonParseError::NoError) { - qWarning() << "Parse update log error: " << err_rpt.errorString(); - break; - } - setUpdateLogs(updateInfoDoc.array()); - qInfo() << "Update logs size: " << m_updateLogs.size(); - } while (0); - - QMap updateInfoMap = getAllUpdateInfo(); - m_model->setAllDownloadInfo(updateInfoMap); - - qCDebug(DccUpdateWork) << " UpdateWorker::setUpdateInfo: updateInfoMap.count()" - << updateInfoMap.count(); - - if (updateInfoMap.count() == 0) { - m_model->setStatus(UpdatesStatus::Updated, __LINE__); - } else { - qCDebug(DccUpdateWork) << "UpdateWorker::setAppUpdateInfo: downloadSize = " - << m_downloadSize; - for (uint type = ClassifyUpdateType::SystemUpdate; - type <= ClassifyUpdateType::SecurityUpdate; - type++) { - ClassifyUpdateType classifyType = uintToclassifyUpdateType(type); - if (updateInfoMap.contains(classifyType)) { - if (updateInfoMap.value(classifyType) != nullptr) { - m_downloadSize += updateInfoMap.value(classifyType)->downloadSize(); - if (m_model->getClassifyUpdateStatus(classifyType) != UpdatesStatus::Downloading - && m_model->getClassifyUpdateStatus(classifyType) - != UpdatesStatus::DownloadPaused - && m_model->getClassifyUpdateStatus(classifyType) - != UpdatesStatus::Downloaded - && m_model->getClassifyUpdateStatus(classifyType) - != UpdatesStatus::Installing) { - m_model->setClassifyUpdateTypeStatus(classifyType, - UpdatesStatus::UpdatesAvailable); - } - } - } else { - m_model->setClassifyUpdateTypeStatus(classifyType, UpdatesStatus::Default); - } - } - m_model->setStatus(UpdatesStatus::UpdatesAvailable, __LINE__); - } -} - -QMap UpdateWorker::getAllUpdateInfo() -{ - qCDebug(DccUpdateWork) << "getAllUpdateInfo"; - QMap resultMap; - - QMap updateDailyKeyMap; - updateDailyKeyMap.insert(ClassifyUpdateType::SystemUpdate, "systemUpdateInfo"); - updateDailyKeyMap.insert(ClassifyUpdateType::SecurityUpdate, "safeUpdateInfo"); - updateDailyKeyMap.insert(ClassifyUpdateType::UnknownUpdate, "otherUpdateInfo"); - - qulonglong updateMode = m_model->updateMode(); - - if (m_systemPackages.count() > 0 && (updateMode & ClassifyUpdateType::SystemUpdate)) { - UpdateItemInfo *systemItemInfo = new UpdateItemInfo; - systemItemInfo->setName(tr("System Updates")); - systemItemInfo->setExplain(tr("Fixed some known bugs and security vulnerabilities")); - setUpdateItemDownloadSize(systemItemInfo, m_systemPackages); - resultMap.insert(ClassifyUpdateType::SystemUpdate, systemItemInfo); - } - - if (m_safePackages.count() > 0 && (updateMode & ClassifyUpdateType::SecurityUpdate)) { - UpdateItemInfo *safeItemInfo = new UpdateItemInfo; - safeItemInfo->setName(tr("Security Updates")); - safeItemInfo->setExplain(tr("Fixed some known bugs and security vulnerabilities")); - setUpdateItemDownloadSize(safeItemInfo, m_safePackages); - resultMap.insert(ClassifyUpdateType::SecurityUpdate, safeItemInfo); - } - - if (m_unknownPackages.count() > 0 && (updateMode & ClassifyUpdateType::UnknownUpdate)) { - UpdateItemInfo *unkownItemInfo = new UpdateItemInfo; - unkownItemInfo->setName(tr("Third-party Repositories")); - setUpdateItemDownloadSize(unkownItemInfo, m_unknownPackages); - resultMap.insert(ClassifyUpdateType::UnknownUpdate, unkownItemInfo); - } - - // 将更新日志根据`系统更新`or`安全更新`进行分类,并保存留用 - for (ClassifyUpdateType type : resultMap.keys()) { - int logType = -1; - if (type == ClassifyUpdateType::SecurityUpdate) { - logType = LogTypeSecurity; - } else if (type == ClassifyUpdateType::SystemUpdate) { - logType = LogTypeSystem; - } else { - continue; - } - - UpdateItemInfo *itemInfo = resultMap.value(type); - if (!itemInfo) - continue; - - for (UpdateLogItem logItem : m_updateLogs) { - if (!logItem.isValid() || logItem.logType != logType) - continue; - - updateItemInfo(logItem, resultMap.value(type)); - } - } - - return resultMap; -} - -void UpdateWorker::getItemInfo(QJsonValue jsonValue, UpdateItemInfo *itemInfo) -{ - if (jsonValue.isNull() || itemInfo == nullptr) { - return; - } - - QStringList language = QLocale::system().name().split('_'); - QString languageType = "CN"; - if (language.count() > 1) { - languageType = language.value(1); - if (languageType == "CN" || languageType == "TW" || languageType == "HK") { - languageType = "CN"; - } else { - languageType = "US"; - } - } - - QJsonObject jsonObject = jsonValue.toObject(); - - itemInfo->setPackageId(jsonObject.value("package_id").toString()); - itemInfo->setCurrentVersion(jsonObject.value("current_version_" + languageType).toString()); - itemInfo->setAvailableVersion(jsonObject.value("available_version_" + languageType).toString()); - itemInfo->setExplain(jsonObject.value("update_explain_" + languageType).toString()); - - if (jsonObject.contains("update_time_" + languageType)) { - itemInfo->setUpdateTime( - jsonValue.toObject().value("update_time_" + languageType).toString()); - } else { - itemInfo->setUpdateTime(jsonValue.toObject().value("update_time").toString()); - } - - qCDebug(DccUpdateWork) << "UpdateWorker::getItemInfo itemInfo->name() == " << itemInfo->name(); - - QJsonValue dataValue = jsonValue.toObject().value("data_info"); - if (dataValue.isArray()) { - QJsonArray array = dataValue.toArray(); - QList itemList; - int count = array.count(); - for (int i = 0; i < count; ++i) { - DetailInfo detailInfo; - detailInfo.name = - array.at(i).toObject().value("name_" + languageType).toString().trimmed(); - detailInfo.updateTime = - array.at(i).toObject().value("update_time").toString().trimmed(); - detailInfo.info = array.at(i) - .toObject() - .value("detail_info_" + languageType) - .toString() - .trimmed(); - detailInfo.link = array.at(i).toObject().value("link").toString().trimmed(); - if (detailInfo.name.isEmpty() && detailInfo.updateTime.isEmpty() - && detailInfo.info.isEmpty() && detailInfo.link.isEmpty()) { - continue; - } - itemList.append(detailInfo); - } - - if (itemList.count() > 0) { - itemInfo->setDetailInfos(itemList); - } - } -} - -bool UpdateWorker::checkDbusIsValid() -{ - - if (!checkJobIsValid(m_checkUpdateJob) || !checkJobIsValid(m_sysUpdateDownloadJob) - || !checkJobIsValid(m_sysUpdateInstallJob) || !checkJobIsValid(m_safeUpdateDownloadJob) - || !checkJobIsValid(m_safeUpdateInstallJob) || !checkJobIsValid(m_unknownUpdateDownloadJob) - || !checkJobIsValid(m_unknownUpdateInstallJob)) { - - return false; - } - - return true; -} - -// 处于以下状态时,就不能再去设置其他更新的状态了,直接显示对应错误提示 -bool UpdateWorker::getNotUpdateState() -{ - UpdatesStatus state = m_model->status(); - - return state != UpdatesStatus::RecoveryBackupFailed - && state != UpdatesStatus::RecoveryBackupFailedDiskFull - && state != UpdatesStatus::UpdateFailed; -} - -void UpdateWorker::resetDownloadInfo(bool state) -{ - m_downloadSize = 0; - m_updatableApps.clear(); - m_updatablePackages.clear(); - - m_updatePackages.clear(); - m_systemPackages.clear(); - m_safePackages.clear(); - m_unknownPackages.clear(); - - if (!state) { - deleteJob(m_sysUpdateDownloadJob); - deleteJob(m_sysUpdateInstallJob); - deleteJob(m_safeUpdateDownloadJob); - deleteJob(m_safeUpdateInstallJob); - deleteJob(m_unknownUpdateDownloadJob); - deleteJob(m_unknownUpdateInstallJob); - deleteJob(m_checkUpdateJob); - } -} - -CheckUpdateJobRet UpdateWorker::createCheckUpdateJob(const QString &jobPath) -{ - CheckUpdateJobRet ret; - ret.status = "failed"; - if (m_checkUpdateJob != nullptr) { - return ret; - } - - m_checkUpdateJob = new UpdateJobDBusProxy(jobPath, this); - - connect(m_checkUpdateJob, - &UpdateJobDBusProxy::StatusChanged, - this, - &UpdateWorker::onCheckUpdateStatusChanged); - connect(qApp, &QApplication::aboutToQuit, this, [=] { - if (m_checkUpdateJob) { - delete m_checkUpdateJob.data(); - } - }); - - connect(m_checkUpdateJob, - &UpdateJobDBusProxy::ProgressChanged, - m_model, - &UpdateModel::setUpdateProgress, - Qt::QueuedConnection); - m_checkUpdateJob->ProgressChanged(m_checkUpdateJob->progress()); - m_checkUpdateJob->StatusChanged(m_checkUpdateJob->status()); - ret.jobID = m_checkUpdateJob->id(); - ret.jobDescription = m_checkUpdateJob->description(); - qCDebug(DccUpdateWork) << " Get Job: " << ret.jobID << ret.jobDescription - << m_checkUpdateJob->progress() << m_checkUpdateJob->status(); - return ret; -} - -void UpdateWorker::distUpgrade(ClassifyUpdateType updateType) -{ - UpdatesStatus status = m_model->getClassifyUpdateStatus(updateType); - - if (m_backupStatus == BackupStatus::Backingup) { - QPointer job = getDownloadJob(updateType); - if (job != nullptr) { - m_updateInter->CleanJob(job->id()); - deleteJob(job); - } - m_model->setClassifyUpdateTypeStatus(updateType, UpdatesStatus::WaitForRecoveryBackup); - return; - } - if (m_backupStatus == BackupStatus::Backuped) { - downloadAndInstallUpdates(updateType); - return; - } - - if (status == UpdatesStatus::Downloading) { - QPointer job = getDownloadJob(updateType); - if (job != nullptr) { - m_updateInter->CleanJob(job->id()); - deleteJob(job); - } - } - - m_backupingClassifyType = updateType; - // 开始进行原子更新 原子更新只有在失败 或者 第二此更新才可以进行备份 - qCDebug(DccUpdateWork) << "distUpgrade:" - << " == start Atomic Upgrade == "; - // 条件不足 1. 分区空间 就是 state = -2 2. 分区格式不支持仓库存储(忽略) 3. - // 第二更新后的失败更新 - - auto var = m_updateConfig->value("backup", true); - if (var.toBool() && !m_updateInter->atomBackupIsRunning()) { - backupToAtomicUpgrade(); - } else { - // 系统环境配置不满足,则直接跳到下一步下载数据 - m_backupStatus = BackupStatus::Backuped; - downloadAndInstallUpdates(updateType); - } -} - -void UpdateWorker::setAutoCheckUpdates(const bool autoCheckUpdates) -{ - m_updateInter->SetAutoCheckUpdates(autoCheckUpdates); -} - -void UpdateWorker::setUpdateMode(const quint64 updateMode) -{ - qCDebug(DccUpdateWork) << "setUpdateMode" - << "set UpdateMode to dbus:" << updateMode; - - m_updateInter->setUpdateMode(updateMode); -} - -void UpdateWorker::setAutoDownloadUpdates(const bool &autoDownload) -{ - m_updateInter->SetAutoDownloadUpdates(autoDownload); - if (autoDownload == false) { - m_updateInter->setAutoInstallUpdates(false); - } -} - -void UpdateWorker::setAutoInstallUpdates(const bool &autoInstall) -{ - m_updateInter->setAutoInstallUpdates(autoInstall); -} - -void UpdateWorker::setBackupUpdates(const bool &backupUpdates) -{ - m_updateConfig->setValue("backup", backupUpdates); -} - -void UpdateWorker::handleUpdateLogsReply(QNetworkReply *reply) -{ - qCInfo(DccUpdateWork) << "Handle reply of update log"; - if (reply->error() != QNetworkReply::NoError) { - qWarning() << "Network Error" << reply->errorString(); - return; - } - QByteArray respondBody = reply->readAll(); - if (respondBody.isEmpty()) { - qCWarning(DccUpdateWork) << "Request body is empty"; - return; - } - - const QJsonDocument &doc = QJsonDocument::fromJson(respondBody); - const QJsonObject &obj = doc.object(); - if (obj.isEmpty()) { - qWarning() << "Request body json object is empty"; - return; - } - if (obj.value("code").toInt() != 0) { - qWarning() << "Request update log failed"; - return; - } - - const QJsonArray array = obj.value("data").toArray(); - setUpdateLogs(array); - // 保存一个临时文件,在没有获取到在线日志的时候展示文件中的内容 - QFile::remove(UpdateLogTmpFile); - QFile file(UpdateLogTmpFile); - if (file.open(QIODevice::WriteOnly)) { - QJsonDocument dataDoc; - dataDoc.setArray(array); - file.write(dataDoc.toJson()); - file.close(); - } -} - -QString UpdateWorker::getUpdateLogAddress() const -{ - QScopedPointer dconfig(DConfig::create("org.deepin.dde.control-center", - QStringLiteral("org.deepin.dde.control-center.update"))); - - const QString fallbackAddr("https://update-platform.uniontech.com/api/v1/systemupdatelogs"); - if (dconfig) { - const QString &updateLogAddress = dconfig->value("updateLogAddress", fallbackAddr).toString(); - if (!updateLogAddress.isEmpty()) { - qCDebug(DccUpdateWork) << " updateLogAddress " << updateLogAddress; - return updateLogAddress; - } - } - - return fallbackAddr; -} - -/** - * @brief 发行版or内测版 - * - * @return 1: 发行版,2:内测版 - */ -int UpdateWorker::isUnstableResource() const -{ - qInfo() << Q_FUNC_INFO; - const int RELEASE_VERSION = 1; - const int UNSTABLE_VERSION = 2; - QScopedPointer config(DConfig::create("org.deepin.unstable", "org.deepin.unstable")); - if (!config) { - qInfo() << "Can not find org.deepin.unstable or an error occurred in DTK"; - return RELEASE_VERSION; - } - - if (!config->keyList().contains("updateUnstable")) { - qInfo() << "Key(updateUnstable) was not found "; - return RELEASE_VERSION; - } - - const QString &value = config->value("updateUnstable", "Enabled").toString(); - qInfo() << "Config(updateUnstable) value: " << value; - return "Enabled" == value ? UNSTABLE_VERSION : RELEASE_VERSION; -} - -void UpdateWorker::setUpdateLogs(const QJsonArray &array) -{ - if (array.isEmpty()) - return; - - m_updateLogs.clear(); - for (const QJsonValue &value : array) { - QJsonObject obj = value.toObject(); - if (obj.isEmpty()) - continue; - - UpdateLogItem item; - item.id = obj.value("id").toInt(); - item.systemVersion = obj.value("systemVersion").toString(); - item.cnLog = obj.value("cnLog").toString(); - item.enLog = obj.value("enLog").toString(); - item.publishTime = m_model->utcDateTime2LocalDate(obj.value("publishTime").toString()); - item.platformType = obj.value("platformType").toInt(); - item.serverType = obj.value("serverType").toInt(); - item.logType = obj.value("logType").toInt(); - m_updateLogs.append(std::move(item)); - } - qInfo() << "m_updateLogs size: " << m_updateLogs.size(); -} - -void UpdateWorker::checkNetselect() -{ - QProcess *process = new QProcess; - process->start("netselect", QStringList() << "127.0.0.1"); - connect(process, &QProcess::errorOccurred, this, [this, process](QProcess::ProcessError error) { - if ((error == QProcess::FailedToStart) || (error == QProcess::Crashed)) { - m_model->setNetselectExist(false); - process->deleteLater(); - } - }); - connect(process, - static_cast(&QProcess::finished), - this, - [this, process](int result, QProcess::ExitStatus) { - bool isNetselectExist = 0 == result; - if (!isNetselectExist) { - qCDebug(DccUpdateWork) - << "[wubw UpdateWorker] netselect 127.0.0.1 : " << isNetselectExist; - } - m_model->setNetselectExist(isNetselectExist); - process->deleteLater(); - }); -} - -void UpdateWorker::setCheckUpdatesJob(const QString &jobPath) -{ - qCDebug(DccUpdateWork) << "[setCheckUpdatesJob] start status : " << m_model->status(); - UpdatesStatus state = m_model->status(); - if (UpdatesStatus::Downloading != state && UpdatesStatus::DownloadPaused != state - && UpdatesStatus::Installing != state) { - m_model->setStatus(UpdatesStatus::Checking, __LINE__); - } else if (UpdatesStatus::UpdateFailed == state) { - resetDownloadInfo(); - } - - createCheckUpdateJob(jobPath); -} - -void UpdateWorker::setDownloadJob(const QString &jobPath, ClassifyUpdateType updateType) -{ - QMutexLocker locker(&m_downloadMutex); - if (m_model->status() == UpdatesStatus::Default - || m_model->status() == UpdatesStatus::Checking) { - setUpdateInfo(); - } - - m_model->setStatus(UpdatesStatus::Updating, __LINE__); - QPointer job = new UpdateJobDBusProxy(jobPath, this); - switch (updateType) { - case ClassifyUpdateType::SystemUpdate: - m_sysUpdateDownloadJob = job; - connect(m_sysUpdateDownloadJob, - &UpdateJobDBusProxy::ProgressChanged, - this, - &UpdateWorker::onSysUpdateDownloadProgressChanged); - connect(m_sysUpdateDownloadJob, - &UpdateJobDBusProxy::NameChanged, - this, - &UpdateWorker::setSysUpdateDownloadJobName); - break; - - case ClassifyUpdateType::SecurityUpdate: - m_safeUpdateDownloadJob = job; - connect(m_safeUpdateDownloadJob, - &UpdateJobDBusProxy::ProgressChanged, - this, - &UpdateWorker::onSafeUpdateDownloadProgressChanged); - connect(m_safeUpdateDownloadJob, - &UpdateJobDBusProxy::NameChanged, - this, - &UpdateWorker::setSafeUpdateDownloadJobName); - break; - - case ClassifyUpdateType::UnknownUpdate: - m_unknownUpdateDownloadJob = job; - connect(m_unknownUpdateDownloadJob, - &UpdateJobDBusProxy::ProgressChanged, - this, - &UpdateWorker::onUnkonwnUpdateDownloadProgressChanged); - connect(m_unknownUpdateDownloadJob, - &UpdateJobDBusProxy::NameChanged, - this, - &UpdateWorker::setUnknownUpdateDownloadJobName); - break; - - default: - break; - } - - connect(job, &UpdateJobDBusProxy::StatusChanged, this, [=](QString status) { - onClassityDownloadStatusChanged(updateType, status); - }); - - job->StatusChanged(job->status()); - job->ProgressChanged(job->progress()); - job->NameChanged(job->name()); -} - -void UpdateWorker::setDistUpgradeJob(const QString &jobPath, ClassifyUpdateType updateType) -{ - QMutexLocker locker(&m_mutex); - m_model->setStatus(UpdatesStatus::Updating, __LINE__); - QPointer job = new UpdateJobDBusProxy(jobPath, this); - switch (updateType) { - case ClassifyUpdateType::SystemUpdate: - m_sysUpdateInstallJob = job; - connect(m_sysUpdateInstallJob, - &UpdateJobDBusProxy::ProgressChanged, - this, - &UpdateWorker::onSysUpdateInstallProgressChanged); - break; - case ClassifyUpdateType::SecurityUpdate: - m_safeUpdateInstallJob = job; - connect(m_safeUpdateInstallJob, - &UpdateJobDBusProxy::ProgressChanged, - this, - &UpdateWorker::onSafeUpdateInstallProgressChanged); - break; - case ClassifyUpdateType::UnknownUpdate: - m_unknownUpdateInstallJob = job; - connect(m_unknownUpdateInstallJob, - &UpdateJobDBusProxy::ProgressChanged, - this, - &UpdateWorker::onUnkonwnUpdateInstallProgressChanged); - break; - default: - break; - } - - connect(job, &UpdateJobDBusProxy::StatusChanged, this, [=](QString status) { - onClassityInstallStatusChanged(updateType, status); - }); - - job->StatusChanged(job->status()); - job->ProgressChanged(job->progress()); -} - -void UpdateWorker::setUpdateItemProgress(UpdateItemInfo *itemInfo, double value) -{ - // 异步加载数据,会导致下载信息还未获取就先取到了下载进度 - if (itemInfo) { - if (!getNotUpdateState()) { - qCDebug(DccUpdateWork) << " Now can't to update continue..."; - resetDownloadInfo(); - return; - } - itemInfo->setDownloadProgress(value); - - } else { - // 等待下载信息加载后,再通过 onNotifyDownloadInfoChanged() - // 设置"UpdatesStatus::Downloading"状态 - qCDebug(DccUpdateWork) << "[wubw download] DownloadInfo is nullptr , waitfor download info"; - } -} - -void UpdateWorker::setAutoCleanCache(const bool autoCleanCache) -{ - m_updateInter->SetAutoClean(autoCleanCache); -} - -void UpdateWorker::onJobListChanged(const QList &jobs) -{ - if (!hasRepositoriesUpdates()) { - return; - } - for (const auto &job : jobs) { - m_jobPath = job.path(); - - UpdateJobDBusProxy jobInter(m_jobPath, this); - - // id maybe scrapped - const QString &id = jobInter.id(); - // 防止刚打开控制中心的时候获取joblist的时候job还存在,由于构建jobInter可能会花销一定时间导致构建完成后job已经完成,这个时候需要设置对应的更新状态为更新成功 - if (id.isEmpty() && !m_jobPath.isEmpty()) { - if (m_jobPath.contains("system_upgrade")) { - m_model->setClassifyUpdateTypeStatus(ClassifyUpdateType::SystemUpdate, - UpdatesStatus::UpdateSucceeded); - } else if (m_jobPath.contains("security_upgrade")) { - m_model->setClassifyUpdateTypeStatus(ClassifyUpdateType::SecurityUpdate, - UpdatesStatus::UpdateSucceeded); - } else if (m_jobPath.contains("unknown_upgrade")) { - m_model->setClassifyUpdateTypeStatus(ClassifyUpdateType::UnknownUpdate, - UpdatesStatus::UpdateSucceeded); - } - continue; - } - - if (!jobInter.isValid()) - continue; - - qCDebug(DccUpdateWork) << "[wubw] onJobListChanged, id : " << id - << " , m_jobPath : " << m_jobPath; - if ((id == "update_source" || id == "custom_update") && m_checkUpdateJob == nullptr) { - setCheckUpdatesJob(m_jobPath); - } else if (id == "prepare_system_upgrade" && m_sysUpdateDownloadJob == nullptr) { - setDownloadJob(m_jobPath, ClassifyUpdateType::SystemUpdate); - } else if (id == "prepare_security_upgrade" && m_safeUpdateDownloadJob == nullptr) { - setDownloadJob(m_jobPath, ClassifyUpdateType::SecurityUpdate); - } else if (id == "prepare_unknown_upgrade" && m_unknownUpdateDownloadJob == nullptr) { - setDownloadJob(m_jobPath, ClassifyUpdateType::UnknownUpdate); - } else if (id == "system_upgrade" && m_sysUpdateInstallJob == nullptr) { - setDistUpgradeJob(m_jobPath, ClassifyUpdateType::SystemUpdate); - } else if (id == "security_upgrade" && m_safeUpdateInstallJob == nullptr) { - setDistUpgradeJob(m_jobPath, ClassifyUpdateType::SecurityUpdate); - } else if (id == "unknown_upgrade" && m_unknownUpdateInstallJob == nullptr) { - setDistUpgradeJob(m_jobPath, ClassifyUpdateType::UnknownUpdate); - } else { - qCDebug(DccUpdateWork) << "Install id: " + id + ", nothing to do"; - } - } -} - -void UpdateWorker::onSysUpdateDownloadProgressChanged(double value) -{ - UpdateItemInfo *itemInfo = m_model->systemDownloadInfo(); - setUpdateItemProgress(itemInfo, value); -} - -void UpdateWorker::onSafeUpdateDownloadProgressChanged(double value) -{ - UpdateItemInfo *itemInfo = m_model->safeDownloadInfo(); - - setUpdateItemProgress(itemInfo, value); -} - -void UpdateWorker::onUnkonwnUpdateDownloadProgressChanged(double value) -{ - UpdateItemInfo *itemInfo = m_model->unknownDownloadInfo(); - - setUpdateItemProgress(itemInfo, value); -} - -void UpdateWorker::onSysUpdateInstallProgressChanged(double value) -{ - UpdateItemInfo *itemInfo = m_model->systemDownloadInfo(); - if (itemInfo == nullptr || qFuzzyIsNull(value)) { - return; - } - - setUpdateItemProgress(itemInfo, value); -} - -void UpdateWorker::onSafeUpdateInstallProgressChanged(double value) -{ - UpdateItemInfo *itemInfo = m_model->safeDownloadInfo(); - if (itemInfo == nullptr || qFuzzyIsNull(value)) { - return; - } - - setUpdateItemProgress(itemInfo, value); -} - -void UpdateWorker::onUnkonwnUpdateInstallProgressChanged(double value) -{ - UpdateItemInfo *itemInfo = m_model->unknownDownloadInfo(); - if (itemInfo == nullptr || qFuzzyIsNull(value)) { - return; - } - - qCDebug(DccUpdateWork) << "onUnkonwnUpdateInstallProgressChanged : " << value; - setUpdateItemProgress(itemInfo, value); -} - -void UpdateWorker::onCheckUpdateStatusChanged(const QString &value) -{ - qCDebug(DccUpdateWork) << "[setCheckUpdatesJob]status is: " << value; - if (value == "failed" || value.isEmpty()) { - qWarning() << "check for updates job failed"; - if (m_checkUpdateJob != nullptr) { - m_updateInter->CleanJob(m_checkUpdateJob->id()); - checkDiskSpace(m_checkUpdateJob->description()); - deleteJob(m_checkUpdateJob); - } - } else if (value == "success" || value == "succeed") { - setUpdateInfo(); - } else if (value == "end") { - deleteJob(m_checkUpdateJob); - setUpdateInfo(); - } -} - -void UpdateWorker::checkDiskSpace(const QString &jobDescription) -{ - qCDebug(DccUpdateWork) << "job description: " << jobDescription; - - m_model->setClassityUpdateJonError(ClassifyUpdateType::Invalid, - analyzeJobErrorMessage(jobDescription)); - m_model->setStatus(UpdatesStatus::UpdateFailed, __LINE__); - qCDebug(DccUpdateWork) << Q_FUNC_INFO << "UpdateFailed , jobDescription : " << jobDescription; - - // 以上错误均需重置更新信息 - resetDownloadInfo(); -} - -void UpdateWorker::setBatteryPercentage(const BatteryPercentageInfo &info) -{ - m_batteryPercentage = info.value("Display", 0); - const bool low = m_onBattery && m_batteryPercentage < 50; - m_model->setLowBattery(low); -} - -// Now D-Bus only in system power have BatteryPercentage data -void UpdateWorker::setSystemBatteryPercentage(const double &value) -{ - m_batterySystemPercentage = value; - const bool low = m_onBattery && m_batterySystemPercentage < 50; - m_model->setLowBattery(low); -} - -void UpdateWorker::setOnBattery(bool onBattery) -{ - m_onBattery = onBattery; - const bool low = m_onBattery && m_batteryPercentage < 50; - // const bool low = m_onBattery ? m_batterySystemPercentage < 50 : false; - m_model->setLowBattery(low); -} - -void UpdateWorker::refreshLastTimeAndCheckCircle() -{ - QString checkTime; - double interval = m_updateInter->GetCheckIntervalAndTime(checkTime); - - m_model->setAutoCheckUpdateCircle(static_cast(interval)); - m_model->setLastCheckUpdateTime(checkTime); -} - -void UpdateWorker::setUpdateNotify(const bool notify) -{ - m_updateInter->SetUpdateNotify(notify); -} - -void UpdateWorker::OnDownloadJobCtrl(ClassifyUpdateType type, int updateCtrlType) -{ - QPointer job = getDownloadJob(type); - - if (job == nullptr) { - return; - } - - switch (updateCtrlType) { - case UpdateCtrlType::Start: - m_updateInter->StartJob(job->id()); - break; - case UpdateCtrlType::Pause: - m_updateInter->PauseJob(job->id()); - break; - } -} - -void UpdateWorker::downloadAndInstallUpdates(ClassifyUpdateType updateType) -{ - uint64_t type = (uint64_t)updateType; - QDBusPendingCallWatcher *watcher = - new QDBusPendingCallWatcher(m_updateInter->ClassifiedUpgrade(type), this); - connect(watcher, &QDBusPendingCallWatcher::finished, [this, watcher, updateType] { - if (!watcher->isError()) { - watcher->reply().path(); - QDBusPendingReply> reply = watcher->reply(); - QList data = reply.value(); - if (data.count() < 1) { - qCDebug(DccUpdateWork) - << "UpdateFailed, download updates error: " << watcher->error().message(); - return; - } - setDownloadJob(reply.value().at(0).path(), updateType); - } else { - m_model->setClassifyUpdateTypeStatus(updateType, UpdatesStatus::UpdateFailed); - resetDownloadInfo(); - QPointer job = getDownloadJob(updateType); - if (!job.isNull()) { - m_updateInter->CleanJob(job->id()); - } - - job = getInstallJob(updateType); - if (!job.isNull()) { - m_updateInter->CleanJob(job->id()); - } - qCDebug(DccUpdateWork) - << "UpdateFailed, download updates error: " << watcher->error().message(); - } - }); -} - -QPointer UpdateWorker::getDownloadJob(ClassifyUpdateType updateType) -{ - QPointer job; - switch (updateType) { - case ClassifyUpdateType::SystemUpdate: - job = m_sysUpdateDownloadJob; - break; - case ClassifyUpdateType::SecurityUpdate: - job = m_safeUpdateDownloadJob; - break; - case ClassifyUpdateType::UnknownUpdate: - job = m_unknownUpdateDownloadJob; - break; - default: - job = nullptr; - break; - } - - return job; -} - -QPointer UpdateWorker::getInstallJob(ClassifyUpdateType updateType) -{ - QPointer job; - switch (updateType) { - case ClassifyUpdateType::SystemUpdate: - job = m_sysUpdateInstallJob; - break; - case ClassifyUpdateType::SecurityUpdate: - job = m_safeUpdateInstallJob; - break; - case ClassifyUpdateType::UnknownUpdate: - job = m_unknownUpdateInstallJob; - break; - default: - job = nullptr; - break; - } - - return job; -} - -bool UpdateWorker::checkJobIsValid(QPointer dbusJob) -{ - if (!dbusJob.isNull()) { - if (dbusJob->isValid() && getNotUpdateState()) { - return true; - } else { - dbusJob->deleteLater(); - return false; - } - } - - return false; -} - -void UpdateWorker::deleteJob(QPointer dbusJob) -{ - if (!dbusJob.isNull()) { - dbusJob->deleteLater(); - dbusJob = nullptr; - } -} - -void UpdateWorker::deleteClassityDownloadJob(ClassifyUpdateType type) -{ - switch (type) { - case ClassifyUpdateType::SystemUpdate: - deleteJob(m_sysUpdateDownloadJob); - break; - case ClassifyUpdateType::SecurityUpdate: - deleteJob(m_safeUpdateDownloadJob); - break; - case ClassifyUpdateType::UnknownUpdate: - deleteJob(m_unknownUpdateDownloadJob); - break; - default: - break; - } -} - -void UpdateWorker::deleteClassityInstallJob(ClassifyUpdateType type) -{ - switch (type) { - case ClassifyUpdateType::SystemUpdate: - deleteJob(m_sysUpdateInstallJob); - break; - case ClassifyUpdateType::SecurityUpdate: - deleteJob(m_safeUpdateInstallJob); - break; - case ClassifyUpdateType::UnknownUpdate: - deleteJob(m_unknownUpdateInstallJob); - break; - default: - break; - } -} - -bool UpdateWorker::checkUpdateSuccessed() -{ - if ((m_model->getSystemUpdateStatus() == UpdatesStatus::UpdateSucceeded - || m_model->getSystemUpdateStatus() == UpdatesStatus::Default) - && (m_model->getSafeUpdateStatus() == UpdatesStatus::UpdateSucceeded - || m_model->getSafeUpdateStatus() == UpdatesStatus::Default) - && (m_model->getUnkonowUpdateStatus() == UpdatesStatus::UpdateSucceeded - || m_model->getUnkonowUpdateStatus() == UpdatesStatus::Default)) { - QFile file("/tmp/.dcc-update-successd"); - if (file.exists()) - return true; - file.open(QIODevice::WriteOnly); - file.close(); - return true; - } - - return false; -} - -void UpdateWorker::cleanLastoreJob(QPointer dbusJob) -{ - if (dbusJob != nullptr) { - m_updateInter->CleanJob(dbusJob->id()); - deleteJob(dbusJob); - } -} - -void UpdateWorker::setUnknownUpdateDownloadJobName(const QString &unknownUpdateDownloadJobName) -{ - m_unknownUpdateDownloadJobName = unknownUpdateDownloadJobName; -} - -void UpdateWorker::setSafeUpdateDownloadJobName(const QString &safeUpdateDownloadJobName) -{ - m_safeUpdateDownloadJobName = safeUpdateDownloadJobName; -} - -void UpdateWorker::setSysUpdateDownloadJobName(const QString &sysUpdateDownloadJobName) -{ - m_sysUpdateDownloadJobName = sysUpdateDownloadJobName; -} - -void UpdateWorker::onRequestOpenAppStore() -{ - QDBusInterface appStore("com.home.appstore.client", - "/com/home/appstore/client", - "com.home.appstore.client", - QDBusConnection::sessionBus()); - QVariant value = "tab/update"; - QDBusMessage reply = appStore.call("openBusinessUri", value); - qCDebug(DccUpdateWork) << reply.errorMessage(); -} - -UpdateErrorType UpdateWorker::analyzeJobErrorMessage(QString jobDescription) -{ - QJsonParseError err_rpt; - QJsonDocument jobErrorMessage = QJsonDocument::fromJson(jobDescription.toUtf8(), &err_rpt); - - if (err_rpt.error != QJsonParseError::NoError) { - qCDebug(DccUpdateWork) << "更新失败JSON格式错误"; - return UpdateErrorType::NoError; - } - const QJsonObject &object = jobErrorMessage.object(); - QString errorType = object.value("ErrType").toString(); - if (errorType.contains("fetchFailed", Qt::CaseInsensitive) - || errorType.contains("IndexDownloadFailed", Qt::CaseInsensitive)) { - return UpdateErrorType::NoNetwork; - } - if (errorType.contains("unmetDependencies", Qt::CaseInsensitive) - || errorType.contains("dependenciesBroken", Qt::CaseInsensitive)) { - return UpdateErrorType::DeependenciesBrokenError; - } - if (errorType.contains("insufficientSpace", Qt::CaseInsensitive)) { - return UpdateErrorType::NoSpace; - } - if (errorType.contains("interrupted", Qt::CaseInsensitive)) { - return UpdateErrorType::DpkgInterrupted; - } - - return UpdateErrorType::UnKnown; -} - -void UpdateWorker::onClassityDownloadStatusChanged(const ClassifyUpdateType type, - const QString &value) -{ - qCDebug(DccUpdateWork) << "onClassityDownloadStatusChanged ::" << type << "status :: " << value; - if (value == "running" || value == "ready") { - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::Downloading); - } else if (value == "failed") { - QPointer job = getDownloadJob(type); - qCDebug(DccUpdateWork) << "onClassityDownloadStatusChanged ::" << type - << "job->description() :: " << job->description(); - m_model->setClassityUpdateJonError(type, analyzeJobErrorMessage(job->description())); - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::UpdateFailed); - cleanLastoreJob(job); - } else if (value == "succeed") { - if (getClassityUpdateDownloadJobName(type).contains("OnlyDownload")) { - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::AutoDownloaded); - } else { - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::Downloaded); - } - } else if (value == "paused") { - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::DownloadPaused); - } else if (value == "end") { - deleteClassityDownloadJob(type); - } -} - -void UpdateWorker::onClassityInstallStatusChanged(const ClassifyUpdateType type, - const QString &value) -{ - qCDebug(DccUpdateWork) << "onClassityInstallStatusChanged ::" << type << "status :: " << value; - if (value == "ready") { - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::Downloaded); - } else if (value == "running") { - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::Installing); - } else if (value == "failed") { - QPointer job = getInstallJob(type); - qCDebug(DccUpdateWork) << "onClassityInstallStatusChanged ::" << type - << "job->description() :: " << job->description(); - m_model->setClassityUpdateJonError(type, analyzeJobErrorMessage(job->description())); - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::UpdateFailed); - cleanLastoreJob(job); - } else if (value == "succeed") { - m_model->setClassifyUpdateTypeStatus(type, UpdatesStatus::UpdateSucceeded); - // update updateState ==> setBadge(false) - m_model->isUpdatablePackages(false); - } else if (value == "end") { - if (checkUpdateSuccessed()) { - m_model->setStatus(UpdatesStatus::UpdateSucceeded); - } - deleteClassityInstallJob(type); - } -} - -QString UpdateWorker::getClassityUpdateDownloadJobName(ClassifyUpdateType updateType) -{ - QString value = ""; - switch (updateType) { - case ClassifyUpdateType::SystemUpdate: - value = m_sysUpdateDownloadJobName; - break; - case ClassifyUpdateType::SecurityUpdate: - value = m_safeUpdateDownloadJobName; - break; - case ClassifyUpdateType::UnknownUpdate: - value = m_unknownUpdateDownloadJobName; - break; - default: - break; - } - return value; -} - -void UpdateWorker::checkUpdatablePackages(const QMap &updatablePackages) -{ - qCDebug(DccUpdateWork) << " ---- UpdatablePackages = " << updatablePackages.count(); - QMap keyMap; - keyMap.insert(ClassifyUpdateType::SystemUpdate, SystemUpdateType); - keyMap.insert(ClassifyUpdateType::UnknownUpdate, UnknownUpdateType); - keyMap.insert(ClassifyUpdateType::SecurityUpdate, SecurityUpdateType); - bool showUpdateNotify = false; - for (auto item : keyMap.keys()) { - if ((m_model->updateMode() & static_cast(item)) - && updatablePackages.value(keyMap.value(item)).count() > UPDATE_PACKAGE_SIZE) { - showUpdateNotify = true; - break; - } - } - m_model->isUpdatablePackages(showUpdateNotify); -} - -// 可进行原子更新 -void UpdateWorker::backupToAtomicUpgrade() -{ - m_model->setStatus(UpdatesStatus::Updating, __LINE__); - m_model->setClassifyUpdateTypeStatus(m_backupingClassifyType, UpdatesStatus::RecoveryBackingup); - /* - "{"SubmissionTime":"1653034897","SystemVersion":"UOS-V23-2000-107","SubmissionType":0,"UUID":"02eb924f-4f35-4880-b839-096c3a65f525","Note":"系统更新"}" - */ - // 拼接json - QMap commitDate; - commitDate.insert("SubmissionTime", m_model->commitSubmissionTime()); - commitDate.insert("SystemVersion", m_model->systemVersion()); - commitDate.insert("SubmissionType", m_model->submissionType()); - commitDate.insert("UUID", m_model->UUID()); - commitDate.insert("Note", "System Update"); - - QJsonDocument docCommitDate = QJsonDocument::fromVariant(QVariant(commitDate)); - QJsonObject jsonObj = docCommitDate.object(); - QString strjson = QJsonDocument(jsonObj).toJson(QJsonDocument::Compact); - - // 异步调用 commit - onAtomicUpdateing(); - m_updateInter->commit(strjson); -} - -void UpdateWorker::updateItemInfo(const UpdateLogItem &logItem, UpdateItemInfo *itemInfo) -{ - if (!logItem.isValid() || !itemInfo) { - return; - } - - QStringList language = QLocale::system().name().split('_'); - QString languageType = "CN"; - if (language.count() > 1) { - languageType = language.value(1); - if (languageType == "CN" || languageType == "TW" || languageType == "HK") { - languageType = "CN"; - } else { - languageType = "US"; - } - } - - // 安全更新只会更新与当前系统版本匹配的内容,例如,105X的系统版本只会更新105X的安全更新,而不会更新106X的 - // 更新日志也需要与之匹配,只显示与当前系统版本相同的安全更新日志 - if (logItem.logType == LogTypeSecurity) { - const QString ¤tSystemVer = IsCommunitySystem ? Dtk::Core::DSysInfo::deepinVersion() - : Dtk::Core::DSysInfo::minorVersion(); - QString tmpSystemVersion = logItem.systemVersion; - tmpSystemVersion.replace(tmpSystemVersion.length() - 1, 1, '0'); - if (currentSystemVer.compare(tmpSystemVersion) != 0) { - return; - } - } - - const QString &explain = languageType == "CN" ? logItem.cnLog : logItem.enLog; - // 写入最近的更新 - if (itemInfo->currentVersion().isEmpty()) { - itemInfo->setCurrentVersion(logItem.systemVersion); - itemInfo->setAvailableVersion(logItem.systemVersion); - itemInfo->setExplain(explain); - itemInfo->setUpdateTime(logItem.publishTime); - } else { - DetailInfo detailInfo; - const QString &systemVersion = logItem.systemVersion; - // 专业版不不在详细信息中显示维护线版本 - if (!IsProfessionalSystem || (!systemVersion.isEmpty() && systemVersion.back() == '0')) { - detailInfo.name = logItem.systemVersion; - detailInfo.updateTime = logItem.publishTime; - detailInfo.info = explain; - itemInfo->addDetailInfo(detailInfo); - } - } -} - -bool UpdateWorker::hasRepositoriesUpdates() -{ - qulonglong mode = m_model->updateMode(); - return (mode & ClassifyUpdateType::SystemUpdate) || (mode & ClassifyUpdateType::UnknownUpdate) - || (mode & ClassifyUpdateType::SecurityUpdate); -} - -void UpdateWorker::handleAtomicStateChanged(int operate, - int state, - QString version, - QString message) -{ - /* - Int32 state: 当序⾏结束时状态码; - 1: 当序⾏中; - 0: 成功; - -1: 存放仓库路径不存在; - -2: 存放仓库磁盘间不⾜; - -3: grub更失败; - -4: 统磁盘挂载或载失败; - -5: ostree仓库初失败; - -6: ostree提交本发⽣错误; - -7: ostree检出本发⽣错误; - -8: 本作的仓库本不允许除; - -9: 本作的仓库本不存在; - */ - qCDebug(DccUpdateWork) << " Atomic State : " << state << "operate: " << operate - << " version: " << version << " message: " << message; - switch (state) { - case BackupResult::Success: - m_backupStatus = BackupStatus::Backuped; - m_model->setClassifyUpdateTypeStatus(m_backupingClassifyType, - UpdatesStatus::RecoveryBackingSuccessed); - onAtomicUpdateFinshed(true); - break; - case BackupResult::BackingUp: - m_backupStatus = BackupStatus::Backingup; - onAtomicUpdateing(); - break; - default: - m_backupStatus = BackupStatus::BackupFailed; - if (state == RecoveryBackupFailedDistFull) { - m_model->setClassifyUpdateTypeStatus(m_backupingClassifyType, - UpdatesStatus::RecoveryBackupFailedDiskFull); - } else { - m_model->setClassifyUpdateTypeStatus(m_backupingClassifyType, - UpdatesStatus::RecoveryBackupFailed); - } - qCDebug(DccUpdateWork) << "handleAtomicStateChanged" - << " [Atomic Backup] 备份失败 , message : " << message; - m_backupStatus = BackupStatus::BackupFailed; - onAtomicUpdateFinshed(false); - break; - } -} - -void UpdateWorker::onAtomicUpdateFinshed(bool successed) -{ - auto requestUpdate = [=](ClassifyUpdateType type) -> bool { - if (m_model->getClassifyUpdateStatus(type) == UpdatesStatus::WaitForRecoveryBackup - || m_model->getClassifyUpdateStatus(type) == UpdatesStatus::RecoveryBackingup - || m_model->getClassifyUpdateStatus(type) == UpdatesStatus::RecoveryBackingSuccessed) { - distUpgrade(type); - return true; - } - return false; - }; - if (successed) { - requestUpdate(ClassifyUpdateType::SystemUpdate); - requestUpdate(ClassifyUpdateType::SecurityUpdate); - requestUpdate(ClassifyUpdateType::UnknownUpdate); - } else { - if (requestUpdate(ClassifyUpdateType::SystemUpdate) - || requestUpdate(ClassifyUpdateType::SecurityUpdate) - || requestUpdate(ClassifyUpdateType::UnknownUpdate)) { - return; - } - } -} - -void UpdateWorker::onAtomicUpdateing() -{ - // 处理正在备份的状态 - qCDebug(DccUpdateWork) << Q_FUNC_INFO << " [AtomicUpdateing] 可以备份, 开始备份..."; - switch (m_backupingClassifyType) { - case ClassifyUpdateType::SystemUpdate: - setUpdateItemProgress(m_model->systemDownloadInfo(), 0.7); - m_model->setSystemUpdateStatus(UpdatesStatus::RecoveryBackingup); - break; - case ClassifyUpdateType::SecurityUpdate: - setUpdateItemProgress(m_model->safeDownloadInfo(), 0.7); - m_model->setSafeUpdateStatus(UpdatesStatus::RecoveryBackingup); - break; - case ClassifyUpdateType::UnknownUpdate: - setUpdateItemProgress(m_model->unknownDownloadInfo(), 0.7); - m_model->setUnkonowUpdateStatus(UpdatesStatus::RecoveryBackingup); - break; - default: - break; - } -} - -void UpdateWorker::onClassifiedUpdatablePackagesChanged(QMap packages) -{ - m_systemPackages = packages.value(SystemUpdateType); - if (m_systemPackages.count() == 0) { - m_model->setClassifyUpdateTypeStatus(ClassifyUpdateType::SystemUpdate, - UpdatesStatus::Default); - } - m_safePackages = packages.value(SecurityUpdateType); - if (m_safePackages.count() == 0) { - m_model->setClassifyUpdateTypeStatus(ClassifyUpdateType::SecurityUpdate, - UpdatesStatus::Default); - } - m_unknownPackages = packages.value(UnknownUpdateType); - if (m_unknownPackages.count() == 0) { - m_model->setClassifyUpdateTypeStatus(ClassifyUpdateType::UnknownUpdate, - UpdatesStatus::Default); - } - checkUpdatablePackages(packages); -} - -void UpdateWorker::onFixError(const ClassifyUpdateType &updateType, const QString &errorType) -{ - m_fixErrorUpdate.append(updateType); - if (m_fixErrorJob != nullptr) { - return; - } - QDBusInterface lastoreManager("org.deepin.dde.Lastore1", - "/org/deepin/dde/Lastore1", - "org.deepin.dde.Lastore1.Manager", - QDBusConnection::systemBus()); - if (!lastoreManager.isValid()) { - qCDebug(DccUpdateWork) << "com.deepin.license error ," << lastoreManager.lastError().name(); - return; - } - - QDBusReply reply = lastoreManager.call("FixError", errorType); - if (reply.isValid()) { - QString path = reply.value().path(); - m_fixErrorJob = new UpdateJobDBusProxy(path, this); - connect(m_fixErrorJob, &UpdateJobDBusProxy::StatusChanged, this, [=](const QString status) { - if (status == "succeed" || status == "failed" || status == "end") { - qCDebug(DccUpdateWork) << "m_fixErrorJob ---status :" << status; - for (auto type : m_fixErrorUpdate) { - distUpgrade(type); - } - m_fixErrorUpdate.clear(); - deleteJob(m_fixErrorJob); - } - }); - } -} - -void UpdateWorker::setUpdateItemDownloadSize(UpdateItemInfo *updateItem, QStringList packages) -{ - QDBusPendingCall call = m_updateInter->PackagesDownloadSize(packages); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, updateItem, [updateItem, call, watcher] { - if (!call.isError()) { - QDBusReply reply = call.reply(); - qlonglong value = reply.value(); - updateItem->setDownloadSize(value); - } - watcher->deleteLater(); - }); -} - -void UpdateWorker::onRequestLastoreHeartBeat() -{ - QDBusInterface lastoreManager("org.deepin.dde.Lastore1", - "/org/deepin/dde/Lastore1", - "org.deepin.dde.Lastore1.Updater", - QDBusConnection::systemBus()); - if (!lastoreManager.isValid()) { - qCDebug(DccUpdateWork) << "com.deepin.license error ," << lastoreManager.lastError().name(); - return; - } - lastoreManager.asyncCall("GetCheckIntervalAndTime"); -} - -std::optional UpdateWorker::getMachineId() -{ - if (m_machineid.has_value()) { - return m_machineid.value(); - } - QString machineid = m_updateInter->hardwareId(); - if (!machineid.isEmpty()) { - m_machineid = machineid; - return machineid; - } - return std::nullopt; -} - -std::optional UpdateWorker::updateTestingChannelUrl() -{ - QString hostname = m_updateInter->staticHostname(); - auto machineid = getMachineId(); - if (!machineid.has_value()) { - return std::nullopt; - } - QUrl testingUrl = QUrl(ServiceLink + "/internal-testing"); - auto query = QUrlQuery(testingUrl.query()); - query.addQueryItem("h", hostname); - query.addQueryItem("m", machineid.value()); - query.addQueryItem("v", DSysInfo::minorVersion()); - testingUrl.setQuery(query); - return testingUrl; -} - -std::optional UpdateWorker::getTestingChannelUrl() -{ - if (!m_testingChannelUrl.has_value()) { - m_testingChannelUrl = updateTestingChannelUrl(); - } - return m_testingChannelUrl; -} - -std::optional UpdateWorker::getTestingChannelSource() -{ - auto sourceFile = QString("/etc/apt/sources.list.d/%1.list").arg(TestingChannelPackage); - qCDebug(DccUpdateWork) << "sourceFile" << sourceFile; - QFile f(sourceFile); - if (!f.open(QFile::ReadOnly | QFile::Text)) { - return std::nullopt; - } - QTextStream in(&f); - while (!in.atEnd()) { - auto line = in.readLine(); - if (line.startsWith("deb")) { - auto fields = line.split(" ", Qt::SkipEmptyParts); - if (fields.length() >= 2) { - auto sourceURL = fields[1]; - if (sourceURL.endsWith("/")) { - sourceURL.truncate(sourceURL.length() - 1); - } - return sourceURL; - } - } - } - return std::nullopt; -} - -// get all sources of the package -QStringList UpdateWorker::getSourcesOfPackage(const QString &pkg, const QString &version) -{ - QStringList sources; - QProcess aptCacheProcess; - QStringList args; - args.append("madison"); - args.append(pkg); - // exec apt-cache madison $pkg - aptCacheProcess.start("apt-cache", args); - aptCacheProcess.waitForFinished(); - while (aptCacheProcess.canReadLine()) { - QString line(aptCacheProcess.readLine()); - auto fields = line.split("|", Qt::SkipEmptyParts); - for (QString &field : fields) { - field = field.trimmed(); - } - if (fields.length() <= 2) { - continue; - } - auto p = fields[0], ver = fields[1], src = fields[2]; - src.truncate(fields[2].indexOf(" ")); - if (p == pkg) { - if (version.length() == 0 || version == ver) { - sources.append(src); - } - } - } - return sources; -} - -CanExitTestingChannelStatus UpdateWorker::checkCanExitTestingChannelDialog() -{ - auto dialog = new DDialog; - dialog->setFixedWidth(400); - dialog->setFixedHeight(280); - - auto label = new DLabel(dialog); - label->setWordWrap(true); - label->setText(QObject::tr("Checking system versions, please wait...")); - - auto progress = new DWaterProgress(dialog); - progress->setFixedSize(100, 100); - progress->setTextVisible(false); - progress->setValue(50); - progress->start(); - - QWidget *content = new QWidget(dialog); - QVBoxLayout *layout = new QVBoxLayout; - layout->setContentsMargins(0, 0, 0, 0); - content->setLayout(layout); - dialog->addContent(content); - dialog->addButton(QObject::tr("Leave"), false, DDialog::ButtonWarning); - dialog->addButton(QObject::tr("Cancel"), true, DDialog::ButtonRecommend); - - layout->addStretch(); - layout->addWidget(label, 0, Qt::AlignHCenter); - layout->addSpacing(20); - layout->addWidget(progress, 0, Qt::AlignHCenter); - layout->addStretch(); - CanExitTestingChannelStatus wantexit = CanExitTestingChannelStatus::Cancel; - connect(dialog, - &DDialog::buttonClicked, - this, - [&wantexit, dialog](int index, const QString &text) { - Q_UNUSED(text) - if (index == 0) { - // clicked the leave button - wantexit = CanExitTestingChannelStatus::CheckOk; - } else { - // clicked the cancel button - wantexit = CanExitTestingChannelStatus::Cancel; - } - dialog->deleteLater(); - }); - dialog->setDisabled(true); - - auto canExit = CanExitTestingChannelStatus::CheckOk; - auto testChannelSrc = getTestingChannelSource(); - if (!testChannelSrc.has_value()) { - qCDebug(DccUpdateWork) << "Not have source file"; - return CanExitTestingChannelStatus::CheckError; - } - QString testingChannelSource = testChannelSrc.value(); - - QProcess dpkgL; - dpkgL.start("dpkg", { "-l" }); - dpkgL.waitForFinished(-1); - - if (dpkgL.exitStatus() == QProcess::CrashExit) { - qCWarning(DccUpdateWork) << "run dpkg error:" << dpkgL.readAllStandardError(); - return CanExitTestingChannelStatus::CheckError; - } - - QString data = dpkgL.readAllStandardOutput(); - QStringList listpkgpre = data.split('\n'); - - QList> listpkg; - - QRegularExpression re(PACKAGE_REGEX); - - for (const QString &line : listpkgpre) { - QRegularExpressionMatch match = re.match(line); - if (!match.hasMatch()) { - continue; - } - QString pkg = match.captured(1); - QString version = match.captured(2); - // skip non system software - if (!pkg.contains("dde") && !pkg.contains("deepin") && !pkg.contains("dtk") - && !pkg.contains("uos")) { - continue; - } - listpkg.push_back({ pkg, version }); - } - - int taskUnitJobs = 20; - - if (qEnvironmentVariableIsSet(CHECK_JOBS_ENV)) { - auto env = qgetenv(CHECK_JOBS_ENV); - int settedJobs = env.toInt(); - if (settedJobs > 0) { - taskUnitJobs = settedJobs; - } - } - - int pkglen = listpkg.length() / taskUnitJobs; - - if (listpkg.length() % taskUnitJobs != 0) { - pkglen += 1; - } - - QList>> inputValues; - - for (int i = 0; i < pkglen; i++) { - int start_pos = i * taskUnitJobs; - inputValues.push_back(listpkg.mid(start_pos, taskUnitJobs)); - } - - std::function> list)> checkCanExit = - [this, &canExit, testingChannelSource](const QList> list) { - for (const auto &[pkg, version] : list) { - { - std::lock_guard guard(CHECK_CANEXIST_GUARD); - if (canExit != CanExitTestingChannelStatus::CheckOk) { - return true; - } - } - - // Does the package exists only in the internal test source - auto sources = getSourcesOfPackage(pkg, version); - if (sources.length() == 1 && sources[0].contains(testingChannelSource)) { - std::lock_guard guard(CHECK_CANEXIST_GUARD); - canExit = CanExitTestingChannelStatus::CheckError; - return true; - } - } - return true; - }; - QFutureWatcher *check_watcher = new QFutureWatcher(this); - - QFuture check_future = QtConcurrent::mapped(inputValues, checkCanExit); - - connect(check_watcher, - &QFutureWatcher::finished, - this, - [check_watcher, dialog, label, &canExit] { - check_watcher->deleteLater(); - std::lock_guard guard(CHECK_CANEXIST_GUARD); - if (canExit == CanExitTestingChannelStatus::CheckError) { - label->setText(tr("It may be unsafe for you to leave the internal testing " - "channel now, do you still want to leave?")); - } else { - label->setText(tr("Your are safe to leave the internal testing channel")); - } - dialog->setDisabled(false); - }); - check_watcher->setFuture(check_future); - dialog->exec(); - return wantexit; -} - -void UpdateWorker::setTestingChannelEnable(const bool &enable) -{ - if (enable) { - // To Join - m_model->setTestingChannelStatus(TestingChannelStatus::WaitJoined); - } else { - // To Leave - m_model->setTestingChannelStatus(TestingChannelStatus::WaitToLeave); - } - - auto machineidopt = getMachineId(); - if (!machineidopt.has_value()) { - notifyErrorWithoutBody(tr("Cannot find machineid")); - - // INFO: 99lastore-token.conf is not generated, need wait for lastore to generating it, if - // it is not generated for a long time, please post a issue to lastore - qCInfo(DccUpdateWork) - << "machineid need to read /etc/apt/apt.conf.d/99lastore-token.conf, the file is " - "generated by lastore. Maybe you need wait for the file to be generated."; - m_model->setTestingChannelStatus(TestingChannelStatus::NotJoined); - return; - } - - QString machineid = machineidopt.value(); - const QString server = ServiceLink; - - // every time, clear the machineid in server - auto http = new QNetworkAccessManager(this); - QNetworkRequest request; - request.setUrl(QUrl(ServiceLink + "/api/v2/public/testing/machine/" + machineid)); - - QEventLoop loop; - connect(http, &QNetworkAccessManager::finished, this, [http, &loop](QNetworkReply *reply) { - reply->deleteLater(); - http->deleteLater(); - loop.quit(); - }); - http->deleteResource(request); - loop.exec(); - - // Disable Testing Channel - if (!enable) { - if (m_updateInter->PackageExists(TestingChannelPackage)) { - qCDebug(DccUpdateWork) << "Testing:" - << "Uninstall testing channel package"; - auto exitStatus = checkCanExitTestingChannelDialog(); - if (exitStatus == CanExitTestingChannelStatus::CheckOk) { - QDBusPendingCall call = - m_updateInter->RemovePackage("testing Channel", TestingChannelPackage); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, call] { - if (call.isError()) { - notifyError(tr("Cannot Uninstall package") + TestingChannelPackage, - call.error().message()); - qWarning() << "Cannot Uninstall package " << TestingChannelPackage << " :" - << call.error(); - m_model->setTestingChannelStatus(TestingChannelStatus::Joined); - return; - } - m_model->setTestingChannelStatus(TestingChannelStatus::NotJoined); - }); - } else { - if (exitStatus == CanExitTestingChannelStatus::CheckError) { - notifyError(tr("Error when exit testingChannel"), - tr("try to manually uninstall package") + TestingChannelPackage); - } - m_model->setTestingChannelStatus(TestingChannelStatus::Joined); - qCDebug(DccUpdateWork) << "Cancel to leave testingChannel"; - return; - } - } - - return; - } - auto testChannelUrlOpt = getTestingChannelUrl(); - if (!testChannelUrlOpt.has_value()) { - m_model->setTestingChannelStatus(TestingChannelStatus::NotJoined); - return; - } - QUrl testChannelUrl = testChannelUrlOpt.value(); - qCDebug(DccUpdateWork) << "Testing:" - << "open join page" << testChannelUrl.toString(); - QDesktopServices::openUrl(testChannelUrl); - // Loop to check if user hava joined - QTimer::singleShot(1000, this, &UpdateWorker::checkTestingChannelStatus); -} - -void UpdateWorker::checkTestingChannelStatus() -{ - // Leave page - if (m_model->getTestingChannelStatus() == TestingChannelStatus::DeActive) { - return; - } - if (!m_machineid.has_value()) { - return; - } - - qCDebug(DccUpdateWork) << "Testing:" - << "check testing join status"; - QString machineid = m_machineid.value(); - auto http = new QNetworkAccessManager(this); - QNetworkRequest request; - request.setUrl(QUrl(ServiceLink + "/api/v2/public/testing/machine/status/" + machineid)); - request.setRawHeader("content-type", "application/json"); - connect(http, &QNetworkAccessManager::finished, this, [=](QNetworkReply *reply) { - reply->deleteLater(); - http->deleteLater(); - - if (reply->error() != QNetworkReply::NoError) { - qCDebug(DccUpdateWork) << "Testing:" - << "Network Error" << reply->errorString(); - return; - } - auto data = reply->readAll(); - qCDebug(DccUpdateWork) << "Testing:" - << "machine status body" << data; - auto doc = QJsonDocument::fromJson(data); - auto obj = doc.object(); - auto status = obj["data"].toObject()["status"].toString(); - // Exit the loop if switch status is disable - if (m_model->getTestingChannelStatus() != TestingChannelStatus::WaitJoined) { - return; - } - // If user has joined then install testing source package; - if (status == "joined") { - qCDebug(DccUpdateWork) << "Testing:" - << "Install testing channel package"; - QDBusPendingCall call = - m_updateInter->InstallPackage("testing Channel", TestingChannelPackage); - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(call, this); - connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, call] { - if (call.isError()) { - qWarning() << "Cannot install package" << TestingChannelPackage << ": " - << call.error(); - notifyError(tr("Cannot install package") + TestingChannelPackage, - call.error().message()); - m_model->setTestingChannelStatus(TestingChannelStatus::NotJoined); - return; - } - m_model->setTestingChannelStatus(TestingChannelStatus::Joined); - }); - return; - } - // Run again after sleep - QTimer::singleShot(5000, this, &UpdateWorker::checkTestingChannelStatus); - }); - http->get(request); -} - -void UpdateWorker::refreshMirrors() -{ - qDebug() << QDir::currentPath(); - QFile file(":/config/mirrors.json"); - if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) { - qDebug() << file.errorString(); - return; - } - QJsonArray array = QJsonDocument::fromJson(file.readAll()).array(); - QList list; - for (auto item : array) { - QJsonObject obj = item.toObject(); - MirrorInfo info; - info.m_id = obj.value("id").toString(); - QString locale = QLocale::system().name(); - if (!(QLocale::system().name() == "zh_CN" || QLocale::system().name() == "zh_TW")) { - locale = "zh_CN"; - } - info.m_name = obj.value(QString("name_locale.%1").arg(locale)).toString(); - info.m_url = obj.value("url").toString(); - list << info; - } - m_model->setMirrorInfos(list); - m_model->setDefaultMirror(list[0].m_id); - m_model->setDefaultMirror(m_updateInter->mirrorSource()); -} - -void UpdateWorker::setSmartMirror(bool enable) -{ - m_updateInter->SetEnable(enable); -} - -void UpdateWorker::setMirrorSource(const MirrorInfo &mirror) -{ - m_updateInter->SetMirrorSource(mirror.m_id); -} - -void UpdateWorker::testMirrorSpeed() -{ - QList mirrors = m_model->mirrorInfos(); - - QStringList urlList; - for (MirrorInfo& info : mirrors) { - urlList << info.m_url; - } - - // reset the data; - m_model->setMirrorSpeedInfo(QMap()); - - QFutureWatcher* watcher = new QFutureWatcher(); - connect(watcher, &QFutureWatcher::resultReadyAt, [this, urlList, watcher, mirrors](int index) { - QMap speedInfo = m_model->mirrorSpeedInfo(); - - int result = watcher->resultAt(index); - QString mirrorId = mirrors.at(index).m_id; - speedInfo[mirrorId] = result; - - m_model->setMirrorSpeedInfo(speedInfo); - }); - - QPointer guest(this); - QFuture future = QtConcurrent::mapped(urlList, std::bind(TestMirrorSpeedInternal, std::placeholders::_1, guest)); - watcher->setFuture(future); -} diff --git a/dcc-old/src/plugin-update/operation/updatework.h b/dcc-old/src/plugin-update/operation/updatework.h deleted file mode 100644 index f0654908d0..0000000000 --- a/dcc-old/src/plugin-update/operation/updatework.h +++ /dev/null @@ -1,237 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UPDATEWORK_H -#define UPDATEWORK_H - -#include "common.h" -#include "updatedbusproxy.h" -#include "updatejobdbusproxy.h" -#include "updatemodel.h" - -#include -#include -#include - -#include - -struct CheckUpdateJobRet -{ - QString status; - QString jobID; - QString jobDescription; -}; - -/** - * @brief 更新日志中一个版本的信息 - * - * 示例数据: - * { - "id": 1, - "platformType": 1, - "cnLog": "

中文日志

", - "enLog": "

英文日志

", - "serverType": 0, - "systemVersion": "1070U1", - "createdAt": "2023-08-10T17:45:54+08:00", - "logType": 1, - "publishTime": "2023-08-06T00:00:00+08:00" - } - */ -struct UpdateLogItem -{ - int id = -1; - int platformType = 1; - int serverType = 0; - int logType = 1; - QString systemVersion = ""; - QString cnLog = ""; - QString enLog = ""; - QString publishTime = ""; - - bool isValid() const { return -1 != id; } -}; - -class UpdateWorker : public QObject -{ - Q_OBJECT -public: - explicit UpdateWorker(UpdateModel *model, QObject *parent = nullptr); - ~UpdateWorker(); - /** - * @brief preInitialize 更新预加载 用于获取加载前更新红点状态 - */ - void preInitialize(); - void activate(); - void deactivate(); - void setOnBattery(bool onBattery); - void setBatteryPercentage(const BatteryPercentageInfo &info); - void setSystemBatteryPercentage(const double &value); - void getLicenseState(); - - void setSysUpdateDownloadJobName(const QString &sysUpdateDownloadJobName); - void setSafeUpdateDownloadJobName(const QString &safeUpdateDownloadJobName); - void setUnknownUpdateDownloadJobName(const QString &unknownUpdateDownloadJobName); - - bool hasRepositoriesUpdates(); - - void handleAtomicStateChanged(int operate, int state, QString version, QString message); - void onAtomicUpdateFinshed(bool successed); - void onAtomicUpdateing(); - -Q_SIGNALS: - void requestInit(); - void requestActive(); - void requestRefreshLicenseState(); - void releaseNoteInstallCompleted(); - -public Q_SLOTS: - void init(); - void checkForUpdates(); - void requestUpdateLog(); - void distUpgrade(ClassifyUpdateType updateType); - void setAutoCheckUpdates(const bool autoCheckUpdates); - void setUpdateMode(const quint64 updateMode); - void setAutoCleanCache(const bool autoCleanCache); - void setAutoDownloadUpdates(const bool &autoDownload); - void setAutoInstallUpdates(const bool &autoInstall); - void setBackupUpdates(const bool &backupUpdates); - - void handleUpdateLogsReply(QNetworkReply *reply); - QString getUpdateLogAddress() const; - int isUnstableResource() const; - void setUpdateLogs(const QJsonArray &array); - - void checkNetselect(); - - void licenseStateChangeSlot(); - void testingChannelChangeSlot(); - void refreshLastTimeAndCheckCircle(); - void setUpdateNotify(const bool notify); - - void OnDownloadJobCtrl(ClassifyUpdateType type, int updateCtrlType); - void onRequestOpenAppStore(); - void onClassifiedUpdatablePackagesChanged(QMap packages); - void onFixError(const ClassifyUpdateType &updateType, const QString &errorType); - void onRequestLastoreHeartBeat(); - - std::optional updateTestingChannelUrl(); - std::optional getTestingChannelUrl(); - std::optional getMachineId(); - - void setTestingChannelEnable(const bool &enable); - void checkTestingChannelStatus(); - - void refreshMirrors(); - void setSmartMirror(bool enable); - void setMirrorSource(const MirrorInfo& mirror); - void testMirrorSpeed(); - -private Q_SLOTS: - void setCheckUpdatesJob(const QString &jobPath); - void onJobListChanged(const QList &jobs); - void checkDiskSpace(const QString &jobDescription); - - void onCheckUpdateStatusChanged(const QString &value); - void onClassityDownloadStatusChanged(const ClassifyUpdateType type, const QString &value); - void onClassityInstallStatusChanged(const ClassifyUpdateType type, const QString &value); - - void onSysUpdateDownloadProgressChanged(double value); - void onSafeUpdateDownloadProgressChanged(double value); - void onUnkonwnUpdateDownloadProgressChanged(double value); - - void onSysUpdateInstallProgressChanged(double value); - void onSafeUpdateInstallProgressChanged(double value); - void onUnkonwnUpdateInstallProgressChanged(double value); - -private: - QMap getAllUpdateInfo(); - void getItemInfo(QJsonValue jsonValue, UpdateItemInfo *itemInfo); - void setUpdateInfo(); - void setUpdateItemDownloadSize(UpdateItemInfo *updateItem, QStringList packages); - - inline bool checkDbusIsValid(); - bool getNotUpdateState(); - void resetDownloadInfo(bool state = false); - CheckUpdateJobRet createCheckUpdateJob(const QString &jobPath); - - void downloadAndInstallUpdates(ClassifyUpdateType updateType); - - void setDownloadJob(const QString &jobPath, ClassifyUpdateType updateType); - void setDistUpgradeJob(const QString &jobPath, ClassifyUpdateType updateType); - void setUpdateItemProgress(UpdateItemInfo *itemInfo, double value); - - QPointer getDownloadJob(ClassifyUpdateType updateType); - QPointer getInstallJob(ClassifyUpdateType updateType); - - bool checkJobIsValid(QPointer dbusJob); - void deleteJob(QPointer dbusJob); - void deleteClassityDownloadJob(ClassifyUpdateType type); - void deleteClassityInstallJob(ClassifyUpdateType type); - bool checkUpdateSuccessed(); - void cleanLastoreJob(QPointer dbusJob); - UpdateErrorType analyzeJobErrorMessage(QString jobDescription); - QString getClassityUpdateDownloadJobName(ClassifyUpdateType updateType); - void checkUpdatablePackages(const QMap &updatablePackages); - - void backupToAtomicUpgrade(); - void updateItemInfo(const UpdateLogItem &logItem, UpdateItemInfo *itemInfo); - - // testingChannel - CanExitTestingChannelStatus checkCanExitTestingChannelDialog(); - std::optional getTestingChannelSource(); - QStringList getSourcesOfPackage(const QString &pkg, const QString &version); - -private: - UpdateModel *m_model; - QPointer m_checkUpdateJob; - QPointer m_fixErrorJob; - - QPointer m_sysUpdateDownloadJob; - QPointer m_safeUpdateDownloadJob; - QPointer m_unknownUpdateDownloadJob; - - QPointer m_sysUpdateInstallJob; - QPointer m_safeUpdateInstallJob; - QPointer m_unknownUpdateInstallJob; - - QPointer m_releaseNoteInstallJob; - - QString m_sysUpdateDownloadJobName; - QString m_safeUpdateDownloadJobName; - QString m_unknownUpdateDownloadJobName; - - UpdateDBusProxy *m_updateInter; - bool m_onBattery; - double m_batteryPercentage; - double m_batterySystemPercentage; - QList m_updatableApps; - QList m_updatablePackages; - QString m_jobPath; - qlonglong m_downloadSize; - - QMap m_updatePackages; - QStringList m_systemPackages; - QStringList m_safePackages; - QStringList m_unknownPackages; - - // 当前备份状态 - BackupStatus m_backupStatus; - // 当前正在备份的更新分类类型 - ClassifyUpdateType m_backupingClassifyType; - QList m_fixErrorUpdate; - - QMutex m_mutex; - QMutex m_downloadMutex; - - QList m_updateLogs; - - std::optional m_machineid; - std::optional m_testingChannelUrl; - - bool m_isFirstActive; - - DConfig *m_updateConfig; -}; - -#endif // UPDATEWORK_H diff --git a/dcc-old/src/plugin-update/window/mirrorinfolist.cpp b/dcc-old/src/plugin-update/window/mirrorinfolist.cpp deleted file mode 100644 index cba4043554..0000000000 --- a/dcc-old/src/plugin-update/window/mirrorinfolist.cpp +++ /dev/null @@ -1,49 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "mirrorinfolist.h" - - -MirrorInfo::MirrorInfo() -{ - -} - -const QDBusArgument &operator>>(const QDBusArgument &argument, MirrorInfo &info) -{ - argument.beginStructure(); - argument >> info.m_id; - argument >> info.m_url; - argument >> info.m_name; - argument.endStructure(); - - return argument; -} - -QDBusArgument &operator<<(QDBusArgument &argument, const MirrorInfo &info) -{ - argument.beginStructure(); - argument << info.m_id; - argument << info.m_url; - argument << info.m_name; - argument.endStructure(); - - return argument; -} - -QDebug operator<<(QDebug argument, const MirrorInfo &info) -{ - argument << "mirror id: " << info.m_id; - argument << "mirror url: " << info.m_url; - argument << "mirror name: " << info.m_name; - - return argument; -} - -void registerMirrorInfoListMetaType() -{ - qRegisterMetaType(); - qDBusRegisterMetaType(); - qRegisterMetaType(); - qDBusRegisterMetaType(); -} diff --git a/dcc-old/src/plugin-update/window/mirrorinfolist.h b/dcc-old/src/plugin-update/window/mirrorinfolist.h deleted file mode 100644 index 0fdd836a75..0000000000 --- a/dcc-old/src/plugin-update/window/mirrorinfolist.h +++ /dev/null @@ -1,33 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef MIRRORINFO_H -#define MIRRORINFO_H - -#include -#include -#include -#include - -class MirrorInfo -{ -public: - MirrorInfo(); - - friend QDebug operator<<(QDebug argument, const MirrorInfo &info); - friend QDBusArgument &operator<<(QDBusArgument &argument, const MirrorInfo &info); - friend const QDBusArgument &operator>>(const QDBusArgument &argument, MirrorInfo &info); - -public: - QString m_id; - QString m_name; - QString m_url; -}; - -typedef QList MirrorInfoList; -Q_DECLARE_METATYPE(MirrorInfo) -Q_DECLARE_METATYPE(MirrorInfoList) - -void registerMirrorInfoListMetaType(); - -#endif // MIRRORINFO_H diff --git a/dcc-old/src/plugin-update/window/mirrorswidget.cpp b/dcc-old/src/plugin-update/window/mirrorswidget.cpp deleted file mode 100644 index fa2dd06030..0000000000 --- a/dcc-old/src/plugin-update/window/mirrorswidget.cpp +++ /dev/null @@ -1,210 +0,0 @@ -// SPDX-FileCopyrightText: 2024 - 2027 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: LGPL-3.0-or-later - -#include "mirrorswidget.h" -#include "updatemodel.h" -#include "widgets/settingsgroup.h" -#include "mirrorsourceitem.h" - -#include -#include -#include - -#include - -using namespace DCC_NAMESPACE::update; -using namespace Dtk::Widget; - -MirrorsWidget::MirrorsWidget(UpdateModel *model, QWidget *parent) - : DAbstractDialog(false, parent) - , m_testProgress(NotStarted) - , m_testButton(new QPushButton) - , m_view(nullptr) - , m_model(nullptr) - , m_mirrorSourceNo(0) - , m_listWidget(new QWidget) -{ - setWindowTitle(tr("Mirror List")); - - m_testButton->setText(tr("Test Speed")); - - QVBoxLayout *layout = new QVBoxLayout; - layout->setMargin(0); - layout->setSpacing(0); - auto titleBar = new DTitlebar(this); - titleBar->setFrameStyle(QFrame::NoFrame); - titleBar->setBackgroundTransparent(true); - titleBar->setMenuVisible(false); - titleBar->setIcon(qApp->windowIcon()); - layout->addWidget(titleBar); - - QLabel *title = new QLabel; - QFont font; - font.setPointSizeF(16); - title->setFont(font); - title->setText(tr("Mirror List")); - - m_testButton->setFixedSize(120, 36); - m_testButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - - layout->addWidget(title, 0, Qt::AlignHCenter); - layout->addSpacing(5); - layout->addWidget(m_testButton, 0, Qt::AlignCenter); - layout->addSpacing(5); - - m_view = new DListView(); - m_model = new QStandardItemModel(this); - m_view->setBackgroundType(DStyledItemDelegate::BackgroundType::RoundedBackground); - m_view->setSelectionMode(DListView::NoSelection); - m_view->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - m_view->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - m_view->setFrameShape(QFrame::NoFrame); - m_view->setEditTriggers(QListView::NoEditTriggers); - m_view->setModel(m_model); - m_view->setViewportMargins(10, 0, 10, 0); - -#ifdef QT_SCROLL_WHEEL_ANI - QScrollBar *bar = m_view->verticalScrollBar(); - bar->setSingleStep(1); - m_view->setVerticalScrollBarPolicy(Qt::ScrollBarSlideAnimationOn); -#endif - - QVBoxLayout *listLayout= new QVBoxLayout; - listLayout->setContentsMargins(2, 0, 2, 0); - listLayout->addWidget(m_view); - m_listWidget->setLayout(listLayout); - layout->addWidget(m_listWidget); - setLayout(layout); - - setModel(model); - - connect(m_testButton, &QPushButton::clicked, - this, &MirrorsWidget::testButtonClicked); - resize(660, 660); -} - -MirrorsWidget::~MirrorsWidget() -{ - //资源销毁,通知module,需将module中的MirrorsWidget对象赋值为空 - Q_EMIT notifyDestroy(); -} - -void MirrorsWidget::setModel(UpdateModel *model) -{ - m_updateModel = model; - if (!model->mirrorInfos().isEmpty()) { - setDefaultMirror(model->defaultMirror()); - } - - setMirrorInfoList(model->mirrorInfos()); - qRegisterMetaType>("QMap"); - connect(model, &UpdateModel::defaultMirrorChanged, this, &MirrorsWidget::setDefaultMirror); - connect(model, &UpdateModel::netselectExistChanged, m_testButton, &QPushButton::setVisible); - m_testButton->setVisible(model->netselectExist()); -} - -//close the window can do it -void MirrorsWidget::closeEvent(QCloseEvent *event) -{ - Q_UNUSED(event) - disconnect(m_updateModel, &UpdateModel::mirrorSpeedInfoAvailable, this, &MirrorsWidget::onSpeedInfoAvailable); -} - -void MirrorsWidget::showEvent(QShowEvent *event) -{ - Q_UNUSED(event) - connect(m_updateModel, &UpdateModel::mirrorSpeedInfoAvailable, this, &MirrorsWidget::onSpeedInfoAvailable, Qt::QueuedConnection); - onSpeedInfoAvailable(m_updateModel->mirrorSpeedInfo()); -} - -void MirrorsWidget::setDefaultMirror(const MirrorInfo &mirror) -{ - if (mirror.m_id != m_defaultMirror.m_id) { - m_defaultMirror = mirror; - } -} - -void MirrorsWidget::setMirrorInfoList(const MirrorInfoList &list) -{ - int num = 0; - QList::const_iterator it = list.begin(); - for (; it != list.end(); ++it) { - MirrorSourceItem *item = new MirrorSourceItem; - - if ((*it).m_id == m_defaultMirror.m_id) { - item->setSelected(true); - m_mirrorSourceNo = num; - } - num++; - item->setMirrorInfo((*it), tr("Untested")); - - m_model->appendRow(item); - } - - connect(m_view, &DListView::clicked, this, [this](const QModelIndex &index) { - //将旧的选中item的指针地址取出,转化为(MirrorSourceItem *),赋值setSelected(false),model->setItem更新select的值 - MirrorSourceItem *item = dynamic_cast(m_model->item(m_mirrorSourceNo)); - item->setSelected(false); - m_model->setItem(m_mirrorSourceNo, item); - - //获取新的值在list里面的位置 - m_mirrorSourceNo = index.row(); - - //将新的选中item的指针地址取出,转化为(MirrorSourceItem *),赋值setSelected(true),model->setItem更新select的值 - item = dynamic_cast(m_model->item(m_mirrorSourceNo)); - item->setSelected(true); - m_model->setItem(m_mirrorSourceNo, item); - - MirrorInfo info = item->mirrorInfo(); - Q_EMIT requestSetDefaultMirror(info); - - m_view->update(); - }); -} - -void MirrorsWidget::onSpeedInfoAvailable(const QMap &info) -{ - if (info.isEmpty()) { - return; - } - m_testProgress = Done; - m_testButton->setText(tr("Retest")); - int count = m_model->rowCount(); - MirrorSourceItem *item; - for (int i = 0; i < count; i++) { - item = dynamic_cast(m_model->item(i)); - const QString id = item->mirrorInfo().m_id; - - if (info.contains(id)) - item->setSpeed(info.value(id, -1)); - } - - m_view->update(); -} - -void MirrorsWidget::testButtonClicked() -{ - if (m_testProgress == Running) - return; - - Q_EMIT requestTestMirrorSpeed(); - - m_testProgress = Running; - - for (int i = 0; i < m_model->rowCount(); i++) { - dynamic_cast(m_model->item(i))->setTesting(); - } -} - -void MirrorsWidget::sortMirrorsBySpeed() -{ - QList items; - int count = m_model->rowCount(); - for (int i = 0; i < count; i++) { - items.append(dynamic_cast(m_model->item(i))); - } - qSort(items.begin(), items.end(), [](const MirrorSourceItem * one, const MirrorSourceItem * two) { - return one->speed() > two->speed(); - }); -} diff --git a/dcc-old/src/plugin-update/window/mirrorswidget.h b/dcc-old/src/plugin-update/window/mirrorswidget.h deleted file mode 100644 index a7be483297..0000000000 --- a/dcc-old/src/plugin-update/window/mirrorswidget.h +++ /dev/null @@ -1,81 +0,0 @@ -// SPDX-FileCopyrightText: 2024 - 2027 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: LGPL-3.0-or-later - -#pragma once - -#include "interface/namespace.h" - -#include "mirrorinfolist.h" - -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE - -class UpdateModel; -namespace dcc { -class MirrorItem; - -namespace widgets { -class SettingsGroup; -} -} - -namespace DCC_NAMESPACE { -namespace update { - -class MirrorSourceItem; - -class MirrorsWidget : public DAbstractDialog -{ - Q_OBJECT - -public: - explicit MirrorsWidget(UpdateModel *model, QWidget *parent = 0); - ~MirrorsWidget(); - - void setModel(UpdateModel *model); - -protected: - void closeEvent(QCloseEvent *event) override; - void showEvent(QShowEvent *event) override; - -Q_SIGNALS: - void requestSetDefaultMirror(const MirrorInfo &mirror); - void requestTestMirrorSpeed(); - void notifyDestroy(); - -private Q_SLOTS: - void onSpeedInfoAvailable(const QMap &info); - void testButtonClicked(); - - void sortMirrorsBySpeed(); - -private: - void setDefaultMirror(const MirrorInfo &mirror); - void setMirrorInfoList(const MirrorInfoList &list); - -private: - enum TestProgress { - NotStarted, - Running, - Done - }; - - MirrorInfo m_defaultMirror; - TestProgress m_testProgress; - QPushButton *m_testButton; - Dtk::Widget::DListView *m_view; - QStandardItemModel *m_model; - UpdateModel *m_updateModel; - int m_mirrorSourceNo; - QWidget *m_listWidget; -}; - -} // namespace update -} // namespace DCC_NAMESPACE - diff --git a/dcc-old/src/plugin-update/window/update.json b/dcc-old/src/plugin-update/window/update.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-update/window/update.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-update/window/updatectrlwidget.cpp b/dcc-old/src/plugin-update/window/updatectrlwidget.cpp deleted file mode 100644 index b52793becc..0000000000 --- a/dcc-old/src/plugin-update/window/updatectrlwidget.cpp +++ /dev/null @@ -1,786 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "updatectrlwidget.h" -#include "updatemodel.h" -#include "widgets/loadingitem.h" -#include "widgets/settingsgroup.h" -#include "widgets/summaryitem.h" -#include "widgets/downloadprogressbar.h" -#include "widgets/resultitem.h" -#include "widgets/loadingitem.h" -#include "widgets/updatesettingitem.h" -#include "widgets/systemupdateitem.h" -#include "widgets/safeupdateitem.h" -#include "widgets/unknownupdateitem.h" -#include "widgets/downloadprogressbar.h" -#include "widgets/updateiteminfo.h" -#include "widgets/resultitem.h" -#include "widgets/safeupdateitem.h" -#include "widgets/summaryitem.h" -#include "widgets/systemupdateitem.h" -#include "widgets/unknownupdateitem.h" -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcUpdateCtrlWidget, "dcc-update-ctrlwidget") - -#define UpgradeWarningSize 500 -#define FullUpdateBtnWidth 92 - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -UpdateCtrlWidget::UpdateCtrlWidget(UpdateModel *model, QWidget *parent) - : QWidget(parent) - , m_model(model) - , m_status(UpdatesStatus::Updated) - , m_checkUpdateItem(new LoadingItem()) - , m_resultItem(new ResultItem()) - , m_progress(new DownloadProgressBar(parent)) - , m_fullProcess(new DownloadProgressBar(parent)) - , m_upgradeWarningGroup(new DCC_NAMESPACE::SettingsGroup) - , m_summary(new SummaryItem) - , m_upgradeWarning(new SummaryItem) - , m_powerTip(new QLabel) - , m_reminderTip(new QLabel) - , m_noNetworkTip(new QLabel) - , m_qsettings(new QSettings(this)) - , m_activeState(UiActiveState::Unknown) - , m_updateList(new QWidget(parent)) - , m_authorizationPrompt(new QLabel(parent)) - , m_isUpdateingAll(false) - , m_checkUpdateBtn(new QPushButton(parent)) - , m_lastCheckTimeTip(new QLabel(parent)) - , m_CheckAgainBtn(new QPushButton(tr("Check Again"))) - , m_lastCheckAgainTimeTip(new QLabel(parent)) - , m_versionTip(new DLabel(parent)) - , m_spinner(new DSpinner(parent)) - , m_updateTipsLab(new DLabel(parent)) - , m_updateSizeLab(new DLabel(parent)) - , m_updateingTipsLab(new DLabel(parent)) - , m_fullUpdateBtn(new QPushButton) - , m_updateSize(0) - , m_systemUpdateItem(new SystemUpdateItem(parent)) - , m_safeUpdateItem(new SafeUpdateItem(parent)) - , m_unknownUpdateItem(new UnknownUpdateItem(parent)) - , m_updateSummaryGroup(new SettingsGroup) -{ - setAccessibleName("UpdateCtrlWidget"); - m_checkUpdateItem->setAccessibleName("checkUpdateItem"); - m_checkUpdateItem->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - m_UpdateErrorInfoMap.insert(UpdateErrorType::NoError, { UpdateErrorType::NoError, "", "" }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::NoSpace, { UpdateErrorType::NoSpace, tr("Update failed: insufficient disk space"), tr("") }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::UnKnown, { UpdateErrorType::UnKnown, "", "" }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::NoNetwork, { UpdateErrorType::NoNetwork, tr("Dependency error, failed to detect the updates"), tr("") }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::DpkgInterrupted, { UpdateErrorType::DpkgInterrupted, "", "" }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::DeependenciesBrokenError, { UpdateErrorType::DeependenciesBrokenError, "", "" }); - - m_updateList->setAccessibleName("updateList"); - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - m_reminderTip->setText(tr("Restart the computer to use the system and the applications properly")); - m_noNetworkTip->setText(tr("Network disconnected, please retry after connected")); - - m_progress->setVisible(false); - - QVBoxLayout *fullProcesslayout = new QVBoxLayout(); - - m_fullProcess->setVisible(false); - m_fullProcess->setProcessValue(100); - - m_authorizationPrompt->setText(tr("Your system is not authorized, please activate first")); - m_authorizationPrompt->setAlignment(Qt::AlignHCenter); - m_authorizationPrompt->setVisible(false); - fullProcesslayout->addWidget(m_fullProcess); - fullProcesslayout->addWidget(m_authorizationPrompt); - - m_powerTip->setWordWrap(true); - m_powerTip->setAlignment(Qt::AlignHCenter); - m_powerTip->setVisible(false); - - m_reminderTip->setWordWrap(true); - m_reminderTip->setAlignment(Qt::AlignHCenter); - m_reminderTip->setVisible(false); - - m_noNetworkTip->setWordWrap(true); - m_noNetworkTip->setAlignment(Qt::AlignHCenter); - m_noNetworkTip->setVisible(false); - - m_upgradeWarning->setTitle(tr("This update may take a long time, please do not shut down or reboot during the process")); - m_upgradeWarning->setContentsMargins(20, 0, 20, 0); - m_upgradeWarningGroup->setVisible(false); - m_upgradeWarningGroup->appendItem(m_upgradeWarning); - - m_checkUpdateBtn->setFixedSize(QSize(300, 36)); - m_checkUpdateBtn->setVisible(false); - m_lastCheckTimeTip->setAlignment(Qt::AlignCenter); - m_lastCheckTimeTip->setVisible(false); - DFontSizeManager::instance()->bind(m_lastCheckTimeTip, DFontSizeManager::T8); - m_lastCheckTimeTip->setForegroundRole(DPalette::BrightText); - - QHBoxLayout *updateTitleHLay = new QHBoxLayout; - QVBoxLayout *updateTitleFirstVLay = new QVBoxLayout; - - m_updateTipsLab->setText(tr("Updates Available")); - DFontSizeManager::instance()->bind(m_updateTipsLab, DFontSizeManager::T5, QFont::DemiBold); - m_updateTipsLab->setForegroundRole(DPalette::TextTitle); - m_updateTipsLab->setVisible(false); - - DFontSizeManager::instance()->bind(m_versionTip, DFontSizeManager::T8); - m_versionTip->setForegroundRole(DPalette::BrightText); - m_versionTip->setEnabled(false); - connect(m_model, &UpdateModel::systemVersionChanged, this, &UpdateCtrlWidget::updateSystemVersionLabel, Qt::UniqueConnection); - connect(m_model, &UpdateModel::systemActivationChanged, this, &UpdateCtrlWidget::updateSystemVersionLabel, Qt::UniqueConnection); - updateSystemVersionLabel(); - - updateTitleFirstVLay->addWidget(m_updateTipsLab); - - DFontSizeManager::instance()->bind(m_updateSizeLab, DFontSizeManager::T8); - m_updateSizeLab->setForegroundRole(DPalette::TextTips); - updateTitleFirstVLay->addWidget(m_updateSizeLab); - - updateTitleHLay->setContentsMargins(QMargins(22, 50, 20, 12)); - updateTitleHLay->addLayout(updateTitleFirstVLay); - updateTitleHLay->addWidget(m_spinner, 1, Qt::AlignRight); - m_spinner->setVisible(false); - m_spinner->setFixedSize(16, 16); - m_updateingTipsLab->setText(tr("Updating...")); - m_updateingTipsLab->setVisible(false); - DFontSizeManager::instance()->bind(m_updateingTipsLab, DFontSizeManager::T8); - m_updateingTipsLab->setForegroundRole(DPalette::TextTips); - updateTitleHLay->addSpacing(5); - updateTitleHLay->addWidget(m_updateingTipsLab); - QString text = tr("Download Updates"); - - m_fullUpdateBtn->setText(text); - m_fullUpdateBtn->setVisible(false); - updateTitleHLay->addStretch(); - updateTitleHLay->addWidget(m_fullUpdateBtn); - - QVBoxLayout *layout = new QVBoxLayout(); - layout->setMargin(0); - layout->setSpacing(0); - layout->addSpacing(10); - layout->addWidget(m_versionTip, 0, Qt::AlignHCenter); - layout->setAlignment(Qt::AlignTop | Qt::AlignHCenter); - layout->addWidget(m_upgradeWarningGroup); - layout->addWidget(m_powerTip); - layout->addWidget(m_summary); - layout->addWidget(m_progress); - layout->addLayout(fullProcesslayout); - - layout->addStretch(); - layout->addWidget(m_resultItem); - layout->addWidget(m_checkUpdateItem); - layout->addWidget(m_reminderTip); - layout->addWidget(m_noNetworkTip); - - layout->addSpacing(20); - layout->addWidget(m_checkUpdateBtn, 0, Qt::AlignCenter); - layout->addSpacing(5); - layout->addWidget(m_lastCheckTimeTip); - layout->addLayout(updateTitleHLay); - layout->addWidget(m_updateList, 1); - layout->addStretch(); - setLayout(layout); - - QVBoxLayout *contentLayout = new QVBoxLayout; - - m_systemUpdateItem->setVisible(false); - m_updateSummaryGroup->appendItem(m_systemUpdateItem); - - m_safeUpdateItem->setVisible(false); - m_updateSummaryGroup->appendItem(m_safeUpdateItem); - - m_unknownUpdateItem->setVisible(false); - m_updateSummaryGroup->appendItem(m_unknownUpdateItem); - - m_updateSummaryGroup->setVisible(false); - contentLayout->addWidget(m_updateSummaryGroup); - contentLayout->addStretch(); - - m_CheckAgainBtn->setVisible(false); - m_lastCheckAgainTimeTip->setVisible(false); - m_CheckAgainBtn->setFixedSize(QSize(300, 36)); - m_lastCheckAgainTimeTip->setAlignment(Qt::AlignCenter); - DFontSizeManager::instance()->bind(m_lastCheckAgainTimeTip, DFontSizeManager::T8); - m_lastCheckAgainTimeTip->setForegroundRole(DPalette::BrightText); - m_lastCheckAgainTimeTip->setEnabled(false); - - contentLayout->addSpacing(20); - contentLayout->addWidget(m_CheckAgainBtn, 0, Qt::AlignCenter); - contentLayout->addSpacing(5); - contentLayout->addWidget(m_lastCheckAgainTimeTip); - - m_updateList->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - m_updateList->setLayout(contentLayout); - initModel(); - - initConnect(); -} - - -void UpdateCtrlWidget::initConnect() -{ - auto initUpdateItemConnect = [ = ](UpdateSettingItem * updateItem) { - connect(updateItem, &UpdateSettingItem::requestUpdate, this, &UpdateCtrlWidget::requestUpdates); - connect(updateItem, &UpdateSettingItem::requestUpdateCtrl, this, &UpdateCtrlWidget::requestUpdateCtrl); - connect(updateItem, &UpdateSettingItem::requestRefreshSize, this, &UpdateCtrlWidget::onRequestRefreshSize); - connect(updateItem, &UpdateSettingItem::requestRefreshWidget, this, &UpdateCtrlWidget::onRequestRefreshWidget); - connect(updateItem, &UpdateSettingItem::requestFixError, this, &UpdateCtrlWidget::requestFixError); - }; - - initUpdateItemConnect(m_systemUpdateItem); - initUpdateItemConnect(m_safeUpdateItem); - initUpdateItemConnect(m_unknownUpdateItem); - - connect(m_fullUpdateBtn, &QPushButton::clicked, this, &UpdateCtrlWidget::onFullUpdateClicked); - connect(m_checkUpdateBtn, &QPushButton::clicked, m_model, &UpdateModel::beginCheckUpdate); - connect(m_checkUpdateBtn, &QPushButton::clicked, [this] { - this->setFocus(); - m_isUpdateingAll = false; - }); - connect(m_CheckAgainBtn, &QPushButton::clicked, m_model, &UpdateModel::beginCheckUpdate); - connect(m_CheckAgainBtn, &QPushButton::clicked, [this] { - this->setFocus(); - m_isUpdateingAll = false; - }); -} - -UpdateCtrlWidget::~UpdateCtrlWidget() -{ -} - -void UpdateCtrlWidget::setShowInfo(const UiActiveState value) -{ - bool activation; - if (UiActiveState::Authorized == value || UiActiveState::TrialAuthorized == value || UiActiveState::AuthorizedLapse == value) { - activation = true; - } else { - activation = false; - } - - m_fullProcess->setEnabled(activation); - m_authorizationPrompt->setVisible(UpdatesStatus::UpdatesAvailable == m_model->status() && !activation); -} - -void UpdateCtrlWidget::setStatus(const UpdatesStatus &status) -{ - m_status = status; - - qCDebug(DdcUpdateCtrlWidget) << " ========= UpdateCtrlWidget::setStatus " << status; - if (m_model->systemActivation() == UiActiveState::Unauthorized || m_model->systemActivation() == UiActiveState::TrialExpired) { - m_status = Inactive; - } - - Q_EMIT notifyUpdateState(m_status); - - m_powerTip->setVisible(false); - m_noNetworkTip->setVisible(false); - m_resultItem->setVisible(false); - m_progress->setVisible(false); - m_fullProcess->setVisible(false); - m_authorizationPrompt->setVisible(false); - m_updateList->setVisible(false); - m_upgradeWarningGroup->setVisible(false); - m_reminderTip->setVisible(false); - m_checkUpdateItem->setVisible(false); - m_checkUpdateItem->setProgressBarVisible(false); - m_checkUpdateItem->setImageAndTextVisible(false); - m_summary->setVisible(false); - m_checkUpdateBtn->setVisible(false); - m_lastCheckTimeTip->setVisible(false); - m_updateSummaryGroup->setVisible(false); - - m_CheckAgainBtn->setVisible(false); - m_lastCheckAgainTimeTip->setVisible(false); - m_versionTip->setVisible(false); - m_updateTipsLab->setVisible(false); - m_updateSizeLab->setVisible(false); - m_fullUpdateBtn->setVisible(false); - m_spinner->setVisible(false); - m_updateingTipsLab->setVisible(false); - - auto showCheckButton = [this](const QString & caption) { - emit m_model->updateCheckUpdateTime(); - m_checkUpdateBtn->setText(caption); - m_checkUpdateBtn->setVisible(true); - m_lastCheckTimeTip->setText(tr("Last checking time: ") + m_model->lastCheckUpdateTime()); - m_lastCheckTimeTip->setVisible(true); - }; - - switch (m_status) { - case UpdatesStatus::Default: - m_checkUpdateItem->setVisible(true); - m_checkUpdateItem->setMessage(tr("Your system is up to date")); - m_checkUpdateItem->setImageOrTextVisible(true); - m_checkUpdateItem->setSystemVersion(m_systemVersion); - showCheckButton(tr("Check for Updates")); - break; - case UpdatesStatus::Inactive: - m_resultItem->setVisible(true); - m_resultItem->setSuccess(ShowStatus::NoActive); - break; - case UpdatesStatus::Checking: - m_model->beginCheckUpdate(); - m_checkUpdateItem->setVisible(true); - m_checkUpdateItem->setProgressBarVisible(true); - m_checkUpdateItem->setMessage(tr("Checking for updates, please wait...")); - m_checkUpdateItem->setImageOrTextVisible(false); - break; - case UpdatesStatus::UpdatesAvailable: - onChangeUpdatesAvailableStatus(); - break; - case UpdatesStatus::Updating: - showUpdateInfo(); - onRequestRefreshSize(); - onRequestRefreshWidget(); - break; - case UpdatesStatus::UpdateSucceeded: - m_resultItem->setVisible(true); - m_resultItem->setSuccess(ShowStatus::IsSuccessed); - m_reminderTip->setVisible(true); - break; - case UpdatesStatus::UpdateFailed: - setUpdateFailedInfo(updateJobErrorMessage()); - showCheckButton(tr("Check Again")); - break; - case UpdatesStatus::RecoveryBackupFailed: - case UpdatesStatus::RecoveryBackupFailedDiskFull: - showUpdateInfo(); - m_CheckAgainBtn->setEnabled(false); - break; - case UpdatesStatus::Updated: - m_checkUpdateItem->setVisible(true); - m_checkUpdateItem->setMessage(tr("Your system is up to date")); - m_checkUpdateItem->setImageOrTextVisible(true); - m_checkUpdateItem->setSystemVersion(m_systemVersion); - showCheckButton(tr("Check for Updates")); - break; - case UpdatesStatus::NeedRestart: - m_checkUpdateItem->setVisible(true); - m_checkUpdateItem->setMessage(tr("The newest system installed, restart to take effect")); - break; - default: - qCDebug(DdcUpdateCtrlWidget) << "unknown status!!!"; - break; - } -} - -void UpdateCtrlWidget::setSystemUpdateStatus(const UpdatesStatus &status) -{ - m_systemUpdateItem->setStatus(status); -} - -void UpdateCtrlWidget::setSafeUpdateStatus(const UpdatesStatus &status) -{ - m_safeUpdateItem->setStatus(status); -} - -void UpdateCtrlWidget::setUnkonowUpdateStatus(const UpdatesStatus &status) -{ - m_unknownUpdateItem->setStatus(status); -} - -void UpdateCtrlWidget::setProgressValue(const double value) -{ - m_progress->setProcessValue(static_cast(value * 100)); - - if (m_status == UpdatesStatus::Downloading) { - m_progress->setMessage(tr("%1% downloaded (Click to pause)").arg(qFloor(value * 100))); - } else if (m_status == UpdatesStatus::DownloadPaused) { - m_progress->setMessage(tr("%1% downloaded (Click to continue)").arg(qFloor(value * 100))); - } -} - -void UpdateCtrlWidget::setLowBattery(const bool &lowBattery) -{ - if (m_status == UpdatesStatus::Updating || m_status == UpdatesStatus::UpdatesAvailable) { - bool activation = false; - const UiActiveState value = m_model->systemActivation(); - if (UiActiveState::Authorized == value || UiActiveState::TrialAuthorized == value || UiActiveState::AuthorizedLapse == value) { - activation = true; - } - if (lowBattery) { - m_powerTip->setText(tr("Your battery is lower than 50%, please plug in to continue")); - } else { - m_powerTip->setText(tr("Please ensure sufficient power to restart, and don't power off or unplug your machine")); - } - //电量和授权共同决定 - bool enable = false; - if (lowBattery) - enable = !lowBattery; - else - enable = activation; - - m_fullUpdateBtn->setEnabled(enable); - - m_powerTip->setVisible(lowBattery); - } -} - -void UpdateCtrlWidget::setUpdateProgress(const double value) -{ - m_checkUpdateItem->setProgressValue(static_cast(value * 100)); -} - - -void UpdateCtrlWidget::setActiveState(const UiActiveState &activestate) -{ - if (m_activeState != activestate) { - m_activeState = activestate; - } - - if (m_model->enterCheckUpdate()) { - setStatus(UpdatesStatus::Checking); - } else { - setStatus(m_model->status()); - } -} - - -void UpdateCtrlWidget::initModel() -{ - qRegisterMetaType("UpdateErrorType"); - - connect(m_model, &UpdateModel::statusChanged, this, &UpdateCtrlWidget::setStatus); - - connect(m_model, &UpdateModel::systemUpdateStatusChanged, m_systemUpdateItem, &UpdateSettingItem::onUpdateStatuChanged); - connect(m_model, &UpdateModel::safeUpdateStatusChanged, m_safeUpdateItem, &UpdateSettingItem::onUpdateStatuChanged); - connect(m_model, &UpdateModel::unkonowUpdateStatusChanged, m_unknownUpdateItem, &UpdateSettingItem::onUpdateStatuChanged); - - connect(m_model, &UpdateModel::lowBatteryChanged, this, &UpdateCtrlWidget::setLowBattery); - - connect(m_model, &UpdateModel::upgradeProgressChanged, this, &UpdateCtrlWidget::setProgressValue); - connect(m_model, &UpdateModel::updateProgressChanged, this, &UpdateCtrlWidget::setUpdateProgress); - - connect(m_model, &UpdateModel::systemActivationChanged, this, &UpdateCtrlWidget::setActiveState); - connect(m_model, &UpdateModel::classityUpdateJobErrorChanged, this, &UpdateCtrlWidget::onClassityUpdateJonErrorChanged); - - connect(m_model, &UpdateModel::systemUpdateInfoChanged, this, &UpdateCtrlWidget::setSystemUpdateInfo); - connect(m_model, &UpdateModel::safeUpdateInfoChanged, this, &UpdateCtrlWidget::setSafeUpdateInfo); - connect(m_model, &UpdateModel::unknownUpdateInfoChanged, this, &UpdateCtrlWidget::setUnkonowUpdateInfo); - - connect(m_model, &UpdateModel::systemUpdateProgressChanged, m_systemUpdateItem, &UpdateSettingItem::onUpdateProgressChanged); - connect(m_model, &UpdateModel::safeUpdateProgressChanged, m_safeUpdateItem, &UpdateSettingItem::onUpdateProgressChanged); - connect(m_model, &UpdateModel::unkonowUpdateProgressChanged, m_unknownUpdateItem, &UpdateSettingItem::onUpdateProgressChanged); - - connect(m_model, &UpdateModel::systemUpdateDownloadSizeChanged, m_systemUpdateItem, &UpdateSettingItem::setUpdateSize); - connect(m_model, &UpdateModel::safeUpdateDownloadSizeChanged, m_safeUpdateItem, &UpdateSettingItem::setUpdateSize); - connect(m_model, &UpdateModel::unkonowUpdateDownloadSizeChanged, m_unknownUpdateItem, &UpdateSettingItem::setUpdateSize); - - m_updateingItemMap.clear(); - - setUpdateProgress(m_model->updateProgress()); - setProgressValue(m_model->upgradeProgress()); - - setSystemUpdateStatus(m_model->getSystemUpdateStatus()); - setUnkonowUpdateStatus(m_model->getUnkonowUpdateStatus()); - setSystemUpdateInfo(m_model->systemDownloadInfo()); - setSafeUpdateInfo(m_model->safeDownloadInfo()); - setUnkonowUpdateInfo(m_model->unknownDownloadInfo()); - - QMap errorInfoMap = m_model->getUpdateErrorTypeMap(); - for (ClassifyUpdateType type : m_updateingItemMap.keys()) { - if (errorInfoMap.contains(type)) { - m_updateingItemMap.value(type)->setUpdateJobErrorMessage(errorInfoMap.value(type)); - } - } - - if (errorInfoMap.contains(ClassifyUpdateType::Invalid) && errorInfoMap.contains(ClassifyUpdateType::Invalid)) { - setUpdateJobErrorMessage(errorInfoMap.value(ClassifyUpdateType::Invalid)); - } - - qCDebug(DdcUpdateCtrlWidget) << "setModel" << m_model->status(); - qCDebug(DdcUpdateCtrlWidget) << "setModel" << "getSystemUpdateStatus" << m_model->getSystemUpdateStatus(); - qCDebug(DdcUpdateCtrlWidget) << "setModel" << "getSafeUpdateStatus" << m_model->getSafeUpdateStatus(); - qCDebug(DdcUpdateCtrlWidget) << "setModel" << "getUnkonowUpdateStatus" << m_model->getUnkonowUpdateStatus(); - - if (m_model->enterCheckUpdate()) { - setStatus(UpdatesStatus::Checking); - } else { - setStatus(m_model->status()); - } - - setLowBattery(m_model->lowBattery()); -} - -void UpdateCtrlWidget::updateSystemVersionLabel() -{ -#ifndef DISABLE_ACTIVATOR - if (m_model->systemActivation() == UiActiveState::Authorized || m_model->systemActivation() == UiActiveState::TrialAuthorized || m_model->systemActivation() == UiActiveState::AuthorizedLapse) { - m_versionTip->setText(QString("%1: %2").arg(tr("Current Edition")).arg(m_model->systemVersionInfo())); - } else { - m_versionTip->clear(); - } -#else - m_versionTip->setText(QString("%1: %2").arg(tr("Current Edition")).arg(m_model->systemVersionInfo())); -#endif -} - -void UpdateCtrlWidget::setSystemUpdateInfo(UpdateItemInfo *updateItemInfo) -{ - m_updateingItemMap.remove(ClassifyUpdateType::SystemUpdate); - if (nullptr == updateItemInfo) { - m_systemUpdateItem->setVisible(false); - return; - } - - initUpdateItem(m_systemUpdateItem); - m_systemUpdateItem->setData(updateItemInfo); - m_updateingItemMap.insert(ClassifyUpdateType::SystemUpdate, m_systemUpdateItem); -} - - -void UpdateCtrlWidget::setSafeUpdateInfo(UpdateItemInfo *updateItemInfo) -{ - m_updateingItemMap.remove(ClassifyUpdateType::SecurityUpdate); - if (nullptr == updateItemInfo) { - m_safeUpdateItem->setVisible(false); - return; - } - - initUpdateItem(m_safeUpdateItem); - m_safeUpdateItem->setData(updateItemInfo); - m_updateingItemMap.insert(ClassifyUpdateType::SecurityUpdate, m_safeUpdateItem); -} - -void UpdateCtrlWidget::setUnkonowUpdateInfo(UpdateItemInfo *updateItemInfo) -{ - m_updateingItemMap.remove(ClassifyUpdateType::UnknownUpdate); - if (nullptr == updateItemInfo) { - m_unknownUpdateItem->setVisible(false); - return; - } - - initUpdateItem(m_unknownUpdateItem); - m_unknownUpdateItem->setData(updateItemInfo); - m_updateingItemMap.insert(ClassifyUpdateType::UnknownUpdate, m_unknownUpdateItem); -} - -void UpdateCtrlWidget::setAllUpdateInfo(QMap updateInfoMap) -{ - m_updateingItemMap.clear(); - setSystemUpdateInfo(updateInfoMap.value(ClassifyUpdateType::SystemUpdate)); - setSafeUpdateInfo(updateInfoMap.value(ClassifyUpdateType::SecurityUpdate)); - setUnkonowUpdateInfo(updateInfoMap.value(ClassifyUpdateType::UnknownUpdate)); -} - -void UpdateCtrlWidget::showUpdateInfo() -{ - m_fullProcess->setVisible(false); - m_updateList->setVisible(true); - m_summary->setVisible(false); - m_powerTip->setVisible(false); - - showAllUpdate(); - - m_updateTipsLab->setVisible(true); - m_updateSizeLab->setVisible(true); - m_versionTip->setVisible(true); - - m_CheckAgainBtn->setVisible(true); - emit m_model->updateCheckUpdateTime(); - m_lastCheckAgainTimeTip->setText(tr("Last checking time: ") + m_model->lastCheckUpdateTime()); - m_lastCheckAgainTimeTip->setVisible(true); - m_updateSummaryGroup->setVisible(true); - - setSystemUpdateStatus(m_model->getSystemUpdateStatus()); - setSafeUpdateStatus(m_model->getSafeUpdateStatus()); - setUnkonowUpdateStatus(m_model->getUnkonowUpdateStatus()); - - if (m_systemUpdateItem->status() == UpdatesStatus::Default || m_systemUpdateItem->status() == UpdatesStatus::UpdateSucceeded) { - m_systemUpdateItem->setVisible(false); - } - - if (m_safeUpdateItem->status() == UpdatesStatus::Default || m_safeUpdateItem->status() == UpdatesStatus::UpdateSucceeded) { - m_safeUpdateItem->setVisible(false); - } - - if (m_unknownUpdateItem->status() == UpdatesStatus::Default || m_unknownUpdateItem->status() == UpdatesStatus::UpdateSucceeded) { - m_unknownUpdateItem->setVisible(false); - } - -} - -void UpdateCtrlWidget::onChangeUpdatesAvailableStatus() -{ - showUpdateInfo(); - setAllUpdateInfo(m_model->allDownloadInfo()); - - setLowBattery(m_model->lowBattery()); - setShowInfo(m_model->systemActivation()); - - onRequestRefreshSize(); - onRequestRefreshWidget(); -} - -void UpdateCtrlWidget::onFullUpdateClicked() -{ - if (!m_model->getBackupUpdates()) { - DDialog dialog; - dialog.setFixedWidth(420); - dialog.setTitle(tr("The backup update function is currently disabled. If the upgrade fails, the system cannot be rolled back!")); - dialog.addButton(tr("Cancel")); - dialog.addButton(tr("Update Now"), false, DDialog::ButtonWarning); - int ret = dialog.exec(); - if (ret != DDialog::Accepted) { - return; - } - } - for (UpdateSettingItem *updateItem : m_updateingItemMap.values()) { - if (updateItem->status() == UpdatesStatus::UpdatesAvailable - || updateItem->status() == UpdatesStatus::UpdateFailed - || updateItem->status() == UpdatesStatus::Downloaded - || updateItem->status() == UpdatesStatus::Downloading - || updateItem->status() == UpdatesStatus::DownloadPaused - || updateItem->status() == UpdatesStatus::UpdateFailed - || updateItem->status() == UpdatesStatus::AutoDownloaded) { - Q_EMIT requestUpdates(updateItem->classifyUpdateType()); - } - } -} - -void UpdateCtrlWidget::onRequestRefreshSize() -{ - m_updateSize = 0; - - for (UpdateSettingItem *updateItem : m_updateingItemMap.values()) { - if (updateItem->status() != UpdatesStatus::Default - && updateItem->status() != UpdatesStatus::Downloaded - && updateItem->status() != UpdatesStatus::AutoDownloaded - && updateItem->status() != UpdatesStatus::Installing - && updateItem->status() != UpdatesStatus::Updated) { - m_updateSize += updateItem->updateSize(); - } - } - - if (m_updateSize == 0) { - m_upgradeWarningGroup->setVisible(false); - } else if ((static_cast(m_updateSize) / 1024) / 1024 >= m_qsettings->value("upgrade_waring_size", UpgradeWarningSize).toInt()) { - m_upgradeWarningGroup->setVisible(true); - } else { - m_upgradeWarningGroup->setVisible(false); - } - - QString updateSize = formatCap(m_updateSize); - updateSize = tr("Size") + ": " + updateSize; - m_updateSizeLab->setText(updateSize); -} - -void UpdateCtrlWidget::onRequestRefreshWidget() -{ - m_isUpdateingAll = true; - bool isUpdateing = false; - QList removeItem; - for (UpdateSettingItem *updateItem : m_updateingItemMap.values()) { - if (updateItem->status() == UpdatesStatus::Default || updateItem->status() == UpdatesStatus::UpdateSucceeded) { - removeItem.append(updateItem->classifyUpdateType()); - continue; - } - - if (updateItem->status() == UpdatesStatus::AutoDownloaded - || updateItem->status() == UpdatesStatus::UpdatesAvailable - || updateItem->status() == UpdatesStatus::UpdateFailed - || updateItem->status() == UpdatesStatus::RecoveryBackupFailed - || updateItem->status() == UpdatesStatus::RecoveryBackupFailedDiskFull) { - m_isUpdateingAll = false; - } else { - isUpdateing = true; - } - } - - for (ClassifyUpdateType type : removeItem) { - m_updateingItemMap.remove(type); - } - - if (isUpdateing) { - m_CheckAgainBtn->setEnabled(false); - } else { - m_CheckAgainBtn->setEnabled(true); - } - - showAllUpdate(); -} - -void UpdateCtrlWidget::showAllUpdate() -{ - m_spinner->setVisible(m_isUpdateingAll); - if (m_isUpdateingAll) { - m_spinner->start(); - } else { - m_spinner->stop(); - } - - m_updateingTipsLab->setVisible(m_isUpdateingAll); - m_fullUpdateBtn->setVisible(!m_isUpdateingAll); -} - -UpdateErrorType UpdateCtrlWidget::updateJobErrorMessage() const -{ - return m_updateJobErrorMessage; -} - -void UpdateCtrlWidget::setUpdateJobErrorMessage(const UpdateErrorType &updateJobErrorMessage) -{ - m_updateJobErrorMessage = updateJobErrorMessage; -} - -void UpdateCtrlWidget::setUpdateFailedInfo(const UpdateErrorType &errorType) -{ - m_resultItem->setVisible(true); - m_resultItem->setSuccess(ShowStatus::IsFailed); - if (errorType == UpdateErrorType::NoNetwork) { - m_noNetworkTip->setVisible(true); - return; - } - m_resultItem->setMessage(m_UpdateErrorInfoMap.contains(errorType) ? m_UpdateErrorInfoMap.value(errorType).errorMessage : tr("")); -} - -void UpdateCtrlWidget::initUpdateItem(UpdateSettingItem *updateItem) -{ - updateItem->setIconVisible(true); -} - -void UpdateCtrlWidget::onClassityUpdateJonErrorChanged(const ClassifyUpdateType &type, const UpdateErrorType &errorType) -{ - switch (type) { - case ClassifyUpdateType::Invalid: - setUpdateJobErrorMessage(errorType); - break; - case ClassifyUpdateType::SystemUpdate: - m_systemUpdateItem->setUpdateJobErrorMessage(errorType); - break; - case ClassifyUpdateType::SecurityUpdate: - m_safeUpdateItem->setUpdateJobErrorMessage(errorType); - break; - case ClassifyUpdateType::UnknownUpdate: - m_unknownUpdateItem->setUpdateJobErrorMessage(errorType); - break; - default: - break; - } -} - -void UpdateCtrlWidget::onShowUpdateCtrl() -{ - if (m_model->getUpdatablePackages() && m_model->status() == UpdatesStatus::Default) { - Q_EMIT m_model->beginCheckUpdate(); - } -} - - - diff --git a/dcc-old/src/plugin-update/window/updatectrlwidget.h b/dcc-old/src/plugin-update/window/updatectrlwidget.h deleted file mode 100644 index c47114249c..0000000000 --- a/dcc-old/src/plugin-update/window/updatectrlwidget.h +++ /dev/null @@ -1,154 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "widgets/updatesettingitem.h" -#include "widgets/utils.h" -#include "common.h" - - -#include -#include - -QT_BEGIN_NAMESPACE -class QSettings; -class QPushButton; -class QLabel; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class SettingsGroup; -} - -DWIDGET_BEGIN_NAMESPACE -class DSpinner; -class DLabel; -DWIDGET_END_NAMESPACE - -class LoadingItem; -class AppUpdateInfo; -class SystemUpdateItem; -class SafeUpdateItem; -class UnknownUpdateItem; -class DownloadProgressBar; -class UpdateItemInfo; -class ResultItem; -class SafeUpdateItem; -class LoadingItem; -class SummaryItem; -class SystemUpdateItem; -class UnknownUpdateItem; -class UpdateModel; -class UpdateCtrlWidget : public QWidget -{ - Q_OBJECT - -public: - explicit UpdateCtrlWidget(UpdateModel *model, QWidget *parent = 0); - ~UpdateCtrlWidget(); - - void initConnect(); - void initModel(); - void updateSystemVersionLabel(); - - UpdateErrorType updateJobErrorMessage() const; - void setUpdateJobErrorMessage(const UpdateErrorType &updateJobErrorMessage); - void setUpdateFailedInfo(const UpdateErrorType &errorType); - -Q_SIGNALS: - void notifyUpdateState(int); - void requestUpdates(ClassifyUpdateType type); - void requestUpdateCtrl(ClassifyUpdateType type, int ctrlType); - void requestOpenAppStroe(); - void requestFixError(const ClassifyUpdateType &updateType, const QString &error); - -public Q_SLOTS: - void onShowUpdateCtrl(); - -private Q_SLOTS: - void onFullUpdateClicked(); - void onRequestRefreshSize(); - void onRequestRefreshWidget(); - void onClassityUpdateJonErrorChanged(const ClassifyUpdateType &type, const UpdateErrorType &errorType); - -private: - void setStatus(const UpdatesStatus &status); - - void setSystemUpdateStatus(const UpdatesStatus &status); - void setSafeUpdateStatus(const UpdatesStatus &status); - void setUnkonowUpdateStatus(const UpdatesStatus &status); - - void setSystemUpdateInfo(UpdateItemInfo *updateItemInfo); - void setSafeUpdateInfo(UpdateItemInfo *updateItemInfo); - void setUnkonowUpdateInfo(UpdateItemInfo *updateItemInfo); - void setAllUpdateInfo(QMap updateInfoMap); - - void setProgressValue(const double value); - void setLowBattery(const bool &lowBattery); - void setUpdateProgress(const double value); - void setRecoverConfigValid(const bool value); - void setRecoverRestoring(const bool value); - void setShowInfo(const UiActiveState value); - void setActiveState(const UiActiveState &activestate); - void showUpdateInfo(); - - void onChangeUpdatesAvailableStatus(); - void onRecoverBackupFinshed(); - void onRecoverBackupFailed(); - void onUpdateSuccessed(); - void onUpdateFailed(); - - void initUpdateItem(UpdateSettingItem *updateItem); - bool checkUpdateItemIsUpdateing(UpdateSettingItem *updateItem, ClassifyUpdateType type); - void showAllUpdate(); - -private: - UpdateModel *m_model; - UpdatesStatus m_status; - LoadingItem *m_checkUpdateItem; - ResultItem *m_resultItem; - DownloadProgressBar *m_progress; - DownloadProgressBar *m_fullProcess; - DCC_NAMESPACE::SettingsGroup *m_upgradeWarningGroup; - SummaryItem *m_summary; - SummaryItem *m_upgradeWarning; - QLabel *m_powerTip; - QLabel *m_reminderTip; - QLabel *m_noNetworkTip; - QSettings *m_qsettings; - QString m_systemVersion; - - UiActiveState m_activeState; - QWidget *m_updateList; - QLabel *m_authorizationPrompt; - bool m_isUpdateingAll; - - QPushButton *m_checkUpdateBtn; - QLabel *m_lastCheckTimeTip; - - QPushButton *m_CheckAgainBtn; - QLabel *m_lastCheckAgainTimeTip; - - DTK_WIDGET_NAMESPACE::DLabel *m_versionTip; - - DTK_WIDGET_NAMESPACE::DSpinner *m_spinner; - DTK_WIDGET_NAMESPACE::DLabel *m_updateTipsLab; - DTK_WIDGET_NAMESPACE::DLabel *m_updateSizeLab; - DTK_WIDGET_NAMESPACE::DLabel *m_updateingTipsLab; - QPushButton *m_fullUpdateBtn; - - qlonglong m_updateSize; - - SystemUpdateItem *m_systemUpdateItem; - SafeUpdateItem *m_safeUpdateItem; - UnknownUpdateItem *m_unknownUpdateItem; - - QMap m_updateingItemMap; - DCC_NAMESPACE::SettingsGroup *m_updateSummaryGroup; - - UpdateErrorType m_updateJobErrorMessage; - QMap m_UpdateErrorInfoMap; -}; - diff --git a/dcc-old/src/plugin-update/window/updateplugin.cpp b/dcc-old/src/plugin-update/window/updateplugin.cpp deleted file mode 100644 index e3d762fab1..0000000000 --- a/dcc-old/src/plugin-update/window/updateplugin.cpp +++ /dev/null @@ -1,148 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "updateplugin.h" -#include "common.h" -#include "updatesettingsmodule.h" -#include "interface/pagemodule.h" - -#include "updatemodel.h" -#include "updatewidget.h" -#include "updatectrlwidget.h" -#include "updatework.h" -#include "widgets/titlelabel.h" -#include "widgets/switchwidget.h" - -#include -#include - -#include - -Q_LOGGING_CATEGORY(DdcUpdatePlugin, "dcc-update-plugin") - -using namespace DCC_NAMESPACE; -DGUI_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -QString UpdatePlugin::name() const -{ - return QStringLiteral("Update"); -} - -ModuleObject *UpdatePlugin::module() -{ - if (DSysInfo::uosEditionType() == DSysInfo::UosEuler) { - return nullptr; - } - // 一级页面 - UpdateModule *updateInterface = new UpdateModule; - - // 检查更新 - ModuleObject *moduleUpdate = new PageModule("checkForUpdates", tr("Check for Updates")); - checkUpdateModule *checkUpdatePage = new checkUpdateModule(updateInterface->model(), updateInterface->work(), moduleUpdate); - moduleUpdate->appendChild(checkUpdatePage); - updateInterface->appendChild(moduleUpdate); - - // 更新设置 - UpdateSettingsModule *moduleUpdateSettings = new UpdateSettingsModule(updateInterface->model(), updateInterface->work(), updateInterface); - updateInterface->appendChild(moduleUpdateSettings); - - return updateInterface; -} - -QString UpdatePlugin::location() const -{ - return "13"; -} - -UpdateModule::UpdateModule(QObject *parent) - : HListModule("update", tr("Updates"), DIconTheme::findQIcon("dcc_nav_update"), parent) - , m_model(new UpdateModel(this)) - , m_work(new UpdateWorker(m_model, this)) -{ - // TODO: 初始化更新小红点处理 - connect(m_model, &UpdateModel::updatablePackagesChanged, this, &UpdateModule::syncUpdatablePackagesChanged); -} - -UpdateModule::~UpdateModule() -{ - m_model->deleteLater(); - m_work->deleteLater(); -} - -void UpdateModule::active() -{ - m_work->activate(); - // 相应授权状态 com.deepin.license.Info -// m_work->requestRefreshLicenseState(); - - connect(m_model, &UpdateModel::beginCheckUpdate, m_work, &UpdateWorker::checkForUpdates); - connect(m_model, &UpdateModel::updateCheckUpdateTime, m_work, &UpdateWorker::refreshLastTimeAndCheckCircle); - connect(m_model, &UpdateModel::updateNotifyChanged, this, [this](const bool state) { - qCDebug(DdcUpdatePlugin) << " ---- updateNotifyChanged" << state; - //关闭“自动提醒”,隐藏提示角标 - if (!state) { - syncUpdatablePackagesChanged(false); - } else { - UpdatesStatus status = m_model->status(); - if (status == UpdatesStatus::UpdatesAvailable || status == UpdatesStatus::Updating || status == UpdatesStatus::Downloading || status == UpdatesStatus::DownloadPaused || status == UpdatesStatus::Downloaded || - status == UpdatesStatus::Installing || status == UpdatesStatus::RecoveryBackingup || status == UpdatesStatus::RecoveryBackingSuccessed || m_model->getUpdatablePackages()) { - syncUpdatablePackagesChanged(true); - } - } - }); -} - -void UpdateModule::deactive() -{ - if (m_model->getTestingChannelStatus() != TestingChannelStatus::Joined) { - m_model->setTestingChannelStatus(TestingChannelStatus::DeActive); - } -} - -void UpdateModule::syncUpdatablePackagesChanged(const bool isUpdatablePackages) -{ - setBadge(isUpdatablePackages && m_model->updateNotify()); -} - -QWidget *checkUpdateModule::page() -{ - UpdateWidget *updateWidget = new UpdateWidget; - updateWidget->setModel(m_model, m_worker); - connect(updateWidget, &UpdateWidget::requestLastoreHeartBeat, m_worker, &UpdateWorker::onRequestLastoreHeartBeat); - connect(updateWidget, &UpdateWidget::requestUpdates, m_worker, &UpdateWorker::distUpgrade); - connect(updateWidget, &UpdateWidget::requestUpdateCtrl, m_worker, &UpdateWorker::OnDownloadJobCtrl); - connect(updateWidget, &UpdateWidget::requestOpenAppStroe, m_worker, &UpdateWorker::onRequestOpenAppStore); - connect(updateWidget, &UpdateWidget::requestFixError, m_worker, &UpdateWorker::onFixError); - updateWidget->displayUpdateContent(UpdateWidget::UpdateType::UpdateCheck); - return updateWidget; -} - -UpdateTitleModule::UpdateTitleModule(const QString &name, const QString &title, QObject *parent) - : ModuleObject(parent) -{ - setName(name); - setDescription(title); - addContentText(title); -} -QWidget *UpdateTitleModule::page() -{ - TitleLabel *titleLabel = new TitleLabel(description()); - DFontSizeManager::instance()->bind(titleLabel, DFontSizeManager::T5, QFont::DemiBold); // 设置字体 - return titleLabel; -} - -SwitchWidgetModule::SwitchWidgetModule(const QString &name, const QString &title, QObject *parent) - : ModuleObject(parent) -{ - setName(name); - setDescription(title); - addContentText(title); -} - -QWidget *SwitchWidgetModule::page() -{ - SwitchWidget *sw_widget = new SwitchWidget(description()); - return sw_widget; -} - diff --git a/dcc-old/src/plugin-update/window/updateplugin.h b/dcc-old/src/plugin-update/window/updateplugin.h deleted file mode 100644 index 420e776636..0000000000 --- a/dcc-old/src/plugin-update/window/updateplugin.h +++ /dev/null @@ -1,82 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UPDATEPLUGIN_H -#define UPDATEPLUGIN_H - -#include "interface/hlistmodule.h" -#include "interface/plugininterface.h" - - -class UpdateWorker; -class UpdateModel; -class UpdatePlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Update" FILE "update.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) - -public: - explicit UpdatePlugin() {} - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; -}; - -// 一级页面 -class UpdateModule : public DCC_NAMESPACE::HListModule -{ - Q_OBJECT -public: - explicit UpdateModule(QObject *parent = nullptr); - ~UpdateModule(); - - UpdateWorker *work() { return m_work; } - UpdateModel *model() { return m_model; } - -protected: - virtual void active() override; - virtual void deactive() override; - void syncUpdatablePackagesChanged(const bool isUpdatablePackages); - -private: - UpdateModel *m_model; - UpdateWorker *m_work; -}; - -// 检查更新 -class checkUpdateModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - explicit checkUpdateModule(UpdateModel *model, UpdateWorker *worker, QObject *parent = nullptr) - : ModuleObject(parent), m_model(model), m_worker(worker) {} - virtual QWidget *page() override; - -private: - UpdateModel *m_model; - UpdateWorker *m_worker; -}; - -// 控件module -class UpdateTitleModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - UpdateTitleModule(const QString &name, const QString &title, QObject *parent = nullptr); - virtual QWidget *page() override; -}; - -class SwitchWidgetModule : public DCC_NAMESPACE::ModuleObject -{ - Q_OBJECT -public: - SwitchWidgetModule(const QString &name, const QString &title, QObject *parent = nullptr); - virtual QWidget *page() override; - -private: - -}; - -#endif // UPDATEPLUGIN_H diff --git a/dcc-old/src/plugin-update/window/updatesettingsmodule.cpp b/dcc-old/src/plugin-update/window/updatesettingsmodule.cpp deleted file mode 100644 index 9f2cd2d2b8..0000000000 --- a/dcc-old/src/plugin-update/window/updatesettingsmodule.cpp +++ /dev/null @@ -1,525 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "updatesettingsmodule.h" - -#include "common.h" -#include "dsysinfo.h" -#include "interface/moduleobject.h" -#include "itemmodule.h" -#include "mirrorswidget.h" -#include "updatemodel.h" -#include "updateplugin.h" -#include "updatework.h" -#include "widgets/internalbuttonitem.h" -#include "widgets/settingsgroup.h" -#include "widgets/switchwidget.h" -#include "widgets/titlelabel.h" -#include "widgets/widgetmodule.h" - -#include -#include - -#include - -DCORE_USE_NAMESPACE -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -using namespace DCC_NAMESPACE::update; - -UpdateSettingsModule::UpdateSettingsModule(UpdateModel *model, UpdateWorker *work, QObject *parent) - : PageModule(parent) - , m_model(model) - , m_work(work) -{ - setName("updateSettings"); - setDisplayName(tr("Update Settings")); - - initConnection(); - initModuleList(); - uiMethodChanged(SettingsMethod::Init); -} - -UpdateSettingsModule::~UpdateSettingsModule() { } - -void UpdateSettingsModule::active() -{ - setAutoCheckEnable(m_model->autoCheckSecureUpdates() || m_model->getAutoCheckThirdpartyUpdates() - || m_model->autoCheckSystemUpdates()); -} - -void UpdateSettingsModule::initModuleList() -{ - // 可从仓库更新 - appendChild(new UpdateTitleModule("updateSettings", tr("Update Settings"))); - appendChild(new WidgetModule( - "updateSystemUpdate", - tr("System"), - [this](SwitchWidget *systemSwitch) { - m_autoCheckUniontechUpdate = systemSwitch; - connect(m_model, - &UpdateModel::autoCheckSystemUpdatesChanged, - m_autoCheckUniontechUpdate, - [=](const bool status) { - m_autoCheckUniontechUpdate->setChecked(status); - setAutoCheckEnable(m_model->autoCheckSecureUpdates() - || m_model->getAutoCheckThirdpartyUpdates() - || m_autoCheckUniontechUpdate->checked()); - }); - connect(m_autoCheckUniontechUpdate, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::onAutoUpdateCheckChanged); - - m_autoCheckUniontechUpdate->setTitle(tr("System")); - m_autoCheckUniontechUpdate->addBackground(); - m_autoCheckUniontechUpdate->setChecked(m_model->autoCheckSystemUpdates()); - })); - - if (IsProfessionalSystem) { - appendChild(new WidgetModule( - "securityUpdatesOnly", - tr("Security Updates Only"), - [this](SwitchWidget *systemSwitch) { - m_autoCheckSecureUpdate = systemSwitch; - connect(m_model, - &UpdateModel::autoCheckSecureUpdatesChanged, - m_autoCheckSecureUpdate, - [=](const bool status) { - m_autoCheckSecureUpdate->setChecked(status); - setAutoCheckEnable(m_autoCheckSecureUpdate->checked() - || m_autoCheckUniontechUpdate->checked()); - }); - connect(m_autoCheckSecureUpdate, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::onAutoSecureUpdateCheckChanged); - - m_autoCheckSecureUpdate->setTitle(tr("Security Updates Only")); - m_autoCheckSecureUpdate->addBackground(); - m_autoCheckSecureUpdate->setChecked(m_model->autoCheckSecureUpdates()); - })); - appendChild(new WidgetModule( - "securityUpdatesOnlyTips", - tr("Switch it on to only update security vulnerabilities and compatibility issues"), - [this](DTipLabel *systemLabel) { - m_autoCheckSecureUpdateTips = systemLabel; - m_autoCheckSecureUpdateTips->setWordWrap(true); - m_autoCheckSecureUpdateTips->setAlignment(Qt::AlignLeft); - m_autoCheckSecureUpdateTips->setContentsMargins(10, 0, 10, 0); - m_autoCheckSecureUpdateTips->setText( - tr("Switch it on to only update security vulnerabilities and " - "compatibility issues")); - })); - } - - if (IsCommunitySystem) { - appendChild(new WidgetModule( - "thirdpartyRepositories", - tr("Third-party Repositories"), - [this](SwitchWidget *systemSwitch) { - m_autoCheckThirdpartyUpdate = systemSwitch; - connect(m_model, - &UpdateModel::autoCheckThirdpartyUpdatesChanged, - m_autoCheckThirdpartyUpdate, - [=](const bool status) { - m_autoCheckThirdpartyUpdate->setChecked(status); - setAutoCheckEnable(m_autoCheckThirdpartyUpdate->checked() - || m_autoCheckUniontechUpdate->checked()); - }); - connect(m_autoCheckThirdpartyUpdate, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::onAutoUpdateCheckChanged); - - m_autoCheckThirdpartyUpdate->setTitle(tr("Third-party Repositories")); - m_autoCheckThirdpartyUpdate->addBackground(); - m_autoCheckThirdpartyUpdate->setChecked( - m_model->getAutoCheckThirdpartyUpdates()); - })); - } - // 其他设置 - appendChild(new UpdateTitleModule("otherSettings", tr("Other settings"))); - m_autoCheckUpdateModule = new WidgetModule( - "updateAutoCheck", - tr("Auto Check for Updates"), - [this](SwitchWidget *systemSwitch) { - m_autoCheckUpdate = systemSwitch; - connect(m_model, - &UpdateModel::autoCheckUpdatesChanged, - m_autoCheckUpdate, - &SwitchWidget::setChecked); - connect(m_autoCheckUpdate, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::requestSetAutoCheckUpdates); - - m_autoCheckUpdate->setTitle(tr("Auto Check for Updates")); - m_autoCheckUpdate->addBackground(); - m_autoCheckUpdate->setChecked(m_model->autoCheckUpdates()); - }); - appendChild(m_autoCheckUpdateModule); - - m_autoDownloadUpdateModule = new WidgetModule( - "updateAutoDownlaod", - tr("Auto Download Updates"), - [this](SwitchWidget *systemSwitch) { - m_autoDownloadUpdate = systemSwitch; - connect(m_model, - &UpdateModel::autoDownloadUpdatesChanged, - m_autoDownloadUpdate, - &SwitchWidget::setChecked); - connect(m_autoDownloadUpdate, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::requestSetAutoDownloadUpdates); - connect(m_autoDownloadUpdate, &SwitchWidget::checkedChanged, this, [=](bool state) { - uiMethodChanged(state ? SettingsMethod::Init : SettingsMethod::autoDownload); - }); - - m_autoDownloadUpdate->setTitle(tr("Auto Download Updates")); - m_autoDownloadUpdate->addBackground(); - m_autoDownloadUpdate->setChecked(m_model->autoDownloadUpdates()); - }); - appendChild(m_autoDownloadUpdateModule); - - m_autoDownloadUpdateTipsModule = new WidgetModule< - DTipLabel>("updateAutoDownlaodTips", tr(""), [this](DTipLabel *systemLabel) { - m_autoDownloadUpdateTips = systemLabel; - m_autoDownloadUpdateTips->setWordWrap(true); - m_autoDownloadUpdateTips->setAlignment(Qt::AlignLeft); - m_autoDownloadUpdateTips->setContentsMargins(10, 0, 10, 0); - m_autoDownloadUpdateTips->setText(tr( - "Switch it on to automatically download the updates in wireless or wired network")); - }); - appendChild(m_autoDownloadUpdateTipsModule); - - m_autoInstallUpdateModule = new WidgetModule( - "autoInstallUpdates", - tr("Auto Install Updates"), - [this](SwitchWidget *systemSwitch) { - m_autoInstallUpdate = systemSwitch; - connect(m_model, - &UpdateModel::autoInstallUpdatesChanged, - m_autoInstallUpdate, - &SwitchWidget::setChecked); - connect(m_autoInstallUpdate, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::requestSetAutoInstall); - m_autoInstallUpdate->setTitle(tr("Auto Install Updates")); - m_autoInstallUpdate->addBackground(); - m_autoInstallUpdate->setChecked(m_model->getAutoInstallUpdates()); - }); - appendChild(m_autoInstallUpdateModule); - m_autoInstallUpdatesTipsModule = new WidgetModule( - "autoInstallUpdatesTips", - tr(""), - [this](DTipLabel *systemLabel) { - m_autoInstallUpdatesTips = systemLabel; - connect(m_model, - &UpdateModel::autoInstallUpdateTypeChanged, - this, - [=](quint64 type) { - m_autoInstallUpdatesTips->setText(getAutoInstallUpdateType(type)); - }); - m_autoInstallUpdatesTips->setWordWrap(true); - m_autoInstallUpdatesTips->setAlignment(Qt::AlignLeft); - m_autoInstallUpdatesTips->setContentsMargins(10, 0, 10, 0); - m_autoInstallUpdatesTips->setText( - getAutoInstallUpdateType(m_model->getAutoInstallUpdateType())); - }); - appendChild(m_autoInstallUpdatesTipsModule); - m_backupUpdatesModule = new WidgetModule( - "backupUpdates", - tr("Backup updates"), - [this](SwitchWidget *systemSwitch) { - m_backupUpdates = systemSwitch; - connect(m_model, - &UpdateModel::backupUpdatesChanged, - m_backupUpdates, - &SwitchWidget::setChecked); - connect(m_backupUpdates, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::requestSetBackupUpdates); - m_backupUpdates->setTitle(tr("Backup updates")); - m_backupUpdates->addBackground(); - m_backupUpdates->setChecked(m_model->getBackupUpdates()); - }); - appendChild(m_backupUpdatesModule); - - m_backupUpdatesTipModule = new WidgetModule( - "backupsUpdateTip", - tr(""), - [this](DTipLabel *systemLabel) { - m_backupUpdatesTip = systemLabel; - m_backupUpdatesTip->setWordWrap(true); - m_backupUpdatesTip->setAlignment(Qt::AlignLeft); - m_backupUpdatesTip->setContentsMargins(10, 0, 10, 0); - m_backupUpdatesTip->setText(tr("Ensuring normal system rollback in case of upgrade failure")); - }); - appendChild(m_backupUpdatesTipModule); - - m_updateNotifyModule = new WidgetModule( - "updateUpdateNotify", - tr("Updates Notification"), - [this](SwitchWidget *systemSwitch) { - m_updateNotify = systemSwitch; - connect(m_model, - &UpdateModel::updateNotifyChanged, - m_updateNotify, - &SwitchWidget::setChecked); - connect(m_updateNotify, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::requestSetUpdateNotify); - - m_updateNotify->setTitle(tr("Updates Notification")); - m_updateNotify->addBackground(); - m_updateNotify->setChecked(m_model->updateNotify()); - }); - appendChild(m_updateNotifyModule); - - appendChild(new WidgetModule( - "updateCleanCache", - tr("Clear Package Cache"), - [this](SwitchWidget *systemSwitch) { - m_autoCleanCache = systemSwitch; - connect(m_model, - &UpdateModel::autoCleanCacheChanged, - m_autoCleanCache, - &SwitchWidget::setChecked); - connect(m_autoCleanCache, - &SwitchWidget::checkedChanged, - this, - &UpdateSettingsModule::requestSetAutoCleanCache); - - m_autoCleanCache->setTitle(tr("Clear Package Cache")); - m_autoCleanCache->addBackground(); - m_autoCleanCache->setChecked(m_model->autoCleanCache()); - })); - - if (IsCommunitySystem) { - // 智能镜像源 - appendChild(new WidgetModule("smartMirrorSwitch", tr("Smart Mirror Switch"), [this](SwitchWidget *smartMirrorBtn) { - m_smartMirrorBtn = smartMirrorBtn; - connect(m_model, &UpdateModel::smartMirrorSwitchChanged, smartMirrorBtn, [smartMirrorBtn](const bool smartMirrorSwitch) { - smartMirrorBtn->setChecked(smartMirrorSwitch); - }); - connect(smartMirrorBtn, &SwitchWidget::checkedChanged, this, [this](const bool checked) { - m_work->setSmartMirror(checked); - }); - - smartMirrorBtn->setTitle(tr("Smart Mirror Switch")); - smartMirrorBtn->addBackground(); - smartMirrorBtn->setChecked(m_model->smartMirrorSwitch()); - })); - appendChild(new ItemModule( - "smartTips", - tr("Switch it on to connect to the quickest mirror site automatically"), - [](ModuleObject *object) { - DTipLabel *label = new DTipLabel(); - label->setWordWrap(true); - label->setAlignment(Qt::AlignLeft); - label->setContentsMargins(10, 0, 10, 0); - label->setText(object->displayName()); - return label; - }, - false)); - auto updateMirrors = new ItemModule("mirrorList", tr("Mirror List"), [this](ModuleObject *) { - QWidget *widget = new QWidget(); - QHBoxLayout *layout = new QHBoxLayout(widget); - layout->setMargin(0); - layout->addStretch(); - - QLabel *mirrors = new QLabel(widget); - layout->addWidget(mirrors); - mirrors->setText(m_model->defaultMirror().m_name); - connect(m_model, &UpdateModel::defaultMirrorChanged, mirrors, [mirrors](const MirrorInfo& mirror){ - mirrors->setText(mirror.m_name); - }); - QLabel *enterIcon = new QLabel(widget); - enterIcon->setPixmap(DStyle::standardIcon(widget->style(), DStyle::SP_ArrowEnter).pixmap(16, 16)); - layout->addWidget(enterIcon); - return widget; - }); - updateMirrors->setBackground(true); - updateMirrors->setClickable(true); - appendChild(updateMirrors); - connect(m_model, &UpdateModel::smartMirrorSwitchChanged, updateMirrors, [updateMirrors](const bool smartMirrorSwitch) { - updateMirrors->setVisible(!smartMirrorSwitch); - }); - updateMirrors->setVisible(!m_model->smartMirrorSwitch()); - connect(updateMirrors, &ItemModule::clicked, this, [this]() { - if (m_mirrorsWidget.isNull()) { - m_mirrorsWidget.reset(new MirrorsWidget(m_model)); - m_mirrorsWidget->setWindowModality(Qt::ApplicationModal); - m_mirrorsWidget->setVisible(false); - m_mirrorsWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - - connect(m_mirrorsWidget.get(), &MirrorsWidget::requestSetDefaultMirror, m_work, &UpdateWorker::setMirrorSource); - connect(m_mirrorsWidget.get(), &MirrorsWidget::requestTestMirrorSpeed, m_work, &UpdateWorker::testMirrorSpeed); - } - m_work->checkNetselect(); - m_mirrorsWidget->show(); - }); - - appendChild(new UpdateTitleModule("InternalUpdateSetting", - tr("Updates from Internal Testing Sources"))); - appendChild(new WidgetModule( - "internal update", - tr("internal update"), - [this](InternalButtonItem *internalBtn) { - internalBtn->addBackground(); - internalBtn->onModelTestingStatusChanged(m_model->getTestingChannelStatus()); - connect(internalBtn, - &InternalButtonItem::requestInternalChannel, - this, - [this, internalBtn](bool enable) { - if (enable) { - auto url = m_work->getTestingChannelUrl(); - if (url.has_value()) { - internalBtn->setLink(url.value()); - m_work->setTestingChannelEnable(true); - return; - } - } - m_work->setTestingChannelEnable(false); - }); - connect(m_model, - &UpdateModel::TestingChannelStatusChanged, - internalBtn, - &InternalButtonItem::onModelTestingStatusChanged); - })); - auto internalUpdateTip = new WidgetModule( - "internalUpdateTip", - tr(""), - [](DTipLabel *internalUpdateLabel) { - internalUpdateLabel->setWordWrap(true); - internalUpdateLabel->setAlignment(Qt::AlignLeft); - internalUpdateLabel->setContentsMargins(10, 0, 10, 0); - internalUpdateLabel->setText(tr("Join the internal testing channel to get deepin latest updates")); - }); - appendChild(internalUpdateTip); - } -} - -void UpdateSettingsModule::uiMethodChanged(SettingsMethod uiMethod) -{ - // v23自动安装开关始终隐藏 - m_autoInstallUpdateModule->setHidden(true); - m_autoInstallUpdatesTipsModule->setHidden(true); -} - -void UpdateSettingsModule::initConnection() -{ - connect(this, - &UpdateSettingsModule::requestSetUpdateMode, - m_work, - &UpdateWorker::setUpdateMode); - - connect(this, - &UpdateSettingsModule::requestSetAutoCheckUpdates, - m_work, - &UpdateWorker::setAutoCheckUpdates); - connect(this, - &UpdateSettingsModule::requestSetAutoDownloadUpdates, - m_work, - &UpdateWorker::setAutoDownloadUpdates); - connect(this, - &UpdateSettingsModule::requestSetAutoInstall, - m_work, - &UpdateWorker::setAutoInstallUpdates); - connect(this, - &UpdateSettingsModule::requestSetBackupUpdates, - m_work, - &UpdateWorker::setBackupUpdates); - connect(this, - &UpdateSettingsModule::requestSetUpdateNotify, - m_work, - &UpdateWorker::setUpdateNotify); - - connect(this, - &UpdateSettingsModule::requestSetAutoCleanCache, - m_work, - &UpdateWorker::setAutoCleanCache); -} - -QString UpdateSettingsModule::getAutoInstallUpdateType(quint64 type) -{ - QString text = ""; - if (type & ClassifyUpdateType::SystemUpdate) { - text = tr("System Updates"); - } - if (type & ClassifyUpdateType::SecurityUpdate) { - if (text.isEmpty()) { - text += tr("Security Updates"); - } else { - text = text + "," + tr("Security Updates"); - } - } - if (type & ClassifyUpdateType::UnknownUpdate) { - if (text.isEmpty()) { - text += tr("Third-party Repositories"); - } else { - text = text + "," + tr("Third-party Repositories"); - } - } - - if (DSysInfo::isCommunityEdition()) { - text = tr("Install updates automatically when the download is complete"); - } else { - text = QString(tr("Install \"%1\" automatically when the download is complete").arg(text)); - } - return text; -} - -void UpdateSettingsModule::setAutoCheckEnable(bool checkstatus) -{ - auto setCheckEnable = [=](DCC_NAMESPACE::ModuleObject *widgetModule) { - widgetModule->setEnabled(checkstatus); - }; - - setCheckEnable(m_autoCheckUpdateModule); - setCheckEnable(m_autoDownloadUpdateModule); - setCheckEnable(m_autoDownloadUpdateTipsModule); - setCheckEnable(m_autoInstallUpdateModule); - setCheckEnable(m_autoInstallUpdatesTipsModule); - setCheckEnable(m_backupUpdatesModule); - setCheckEnable(m_backupUpdatesTipModule); - setCheckEnable(m_updateNotifyModule); -} - -void UpdateSettingsModule::setUpdateMode() -{ - quint64 updateMode = 0; - bool autoCheck = IsProfessionalSystem ? m_autoCheckSecureUpdate->checked() : false; - updateMode = updateMode | autoCheck; - bool checkThird = IsCommunitySystem ? m_autoCheckThirdpartyUpdate->checked() : false; - updateMode = (updateMode << 1) | checkThird; - updateMode = (updateMode << 2); - updateMode = (updateMode << 1) | m_autoCheckUniontechUpdate->checked(); - - setAutoCheckEnable(m_model->autoCheckSecureUpdates() || m_model->getAutoCheckThirdpartyUpdates() - || m_model->autoCheckSystemUpdates()); - requestSetUpdateMode(updateMode); -} - -void UpdateSettingsModule::onAutoUpdateCheckChanged() -{ - if (IsProfessionalSystem && m_autoCheckSecureUpdate->checked()) { - m_autoCheckSecureUpdate->setChecked(false); - } - - setUpdateMode(); -} - -void UpdateSettingsModule::onAutoSecureUpdateCheckChanged() -{ - if (IsProfessionalSystem && m_autoCheckSecureUpdate->checked()) { - m_autoCheckUniontechUpdate->setChecked(false); - } - - setUpdateMode(); -} diff --git a/dcc-old/src/plugin-update/window/updatesettingsmodule.h b/dcc-old/src/plugin-update/window/updatesettingsmodule.h deleted file mode 100644 index 491dd34aed..0000000000 --- a/dcc-old/src/plugin-update/window/updatesettingsmodule.h +++ /dev/null @@ -1,106 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/pagemodule.h" -#include "mirrorswidget.h" - -#include - -namespace DCC_NAMESPACE { -class SwitchWidget; -class SettingsGroup; -} // namespace DCC_NAMESPACE - -class UpdateModel; -class UpdateWorker; - -class UpdateSettingsModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - enum class SettingsMethod { - Init = -1, // 初始化状态,用来对数据进行初始化 - autoDownload = 0, // 自动下载 =》 自动安装开关 - }; - -public: - explicit UpdateSettingsModule(UpdateModel *model, - UpdateWorker *work, - QObject *parent = nullptr); - virtual ~UpdateSettingsModule(); - void active() override; - - /** - * @brief UpdateSettingsModule::initModuleList 初始化页面mouleObj - */ - void initModuleList(); - - /** - * @brief uiMethodChanged 界面展示变跟 - */ - void uiMethodChanged(SettingsMethod uiMethod); - -Q_SIGNALS: - void requestSetAutoCheckUpdates(const bool autocheckUpdate); - void requestSetUpdateMode(const quint64 updateMode); - void requestSetAutoCheckSystemUpdates(const bool &autoUpdate); - void requestSetAutoCheckAppUpdates(const bool &autoUpdate); - void requestSetAutoCheckSecureUpdates(const bool &autoUpdate); - void requestSetUpdateNotify(bool notify); - void requestSetAutoDownloadUpdates(const bool &autoUpdate); - void requestSetAutoCleanCache(const bool autoClean); -#ifndef DISABLE_SYS_UPDATE_SOURCE_CHECK - void requestSetSourceCheck(const bool check); -#endif - void requestShowMirrorsView(); - void requestSetAutoInstall(const bool &autoInstall); - void requestSetBackupUpdates(const bool &backupUpdates); - -private Q_SLOTS: - void setUpdateMode(); - void onAutoUpdateCheckChanged(); - void onAutoSecureUpdateCheckChanged(); - -private: - void initConnection(); - QString getAutoInstallUpdateType(quint64 type); - /** - * @brief setAutoCheckEnable 更新全部关闭 显示关闭 - */ - void setAutoCheckEnable(bool checkstatus); - -private: - UpdateModel *m_model; - UpdateWorker *m_work; - - DCC_NAMESPACE::SwitchWidget *m_autoCheckUniontechUpdate; // 检查系统更新 - DCC_NAMESPACE::SwitchWidget *m_autoCheckSecureUpdate; // 检查安全更新 - DTK_WIDGET_NAMESPACE::DTipLabel *m_autoCheckSecureUpdateTips; - DCC_NAMESPACE::SwitchWidget *m_autoCheckThirdpartyUpdate; // 第三方仓库更新 - - DCC_NAMESPACE::SwitchWidget *m_autoCheckUpdate; // 自动检查 - DCC_NAMESPACE::SwitchWidget *m_autoDownloadUpdate; // 自动下载 - DTK_WIDGET_NAMESPACE::DTipLabel *m_autoDownloadUpdateTips; - - DCC_NAMESPACE::SwitchWidget *m_autoInstallUpdate; // 自动安装 - DTK_WIDGET_NAMESPACE::DTipLabel *m_autoInstallUpdatesTips; - - DCC_NAMESPACE::SwitchWidget *m_backupUpdates; // 备份更新 - DTK_WIDGET_NAMESPACE::DTipLabel *m_backupUpdatesTip; - - DCC_NAMESPACE::SwitchWidget *m_updateNotify; // 更新提醒 - DCC_NAMESPACE::SwitchWidget *m_autoCleanCache; // 清除软件包 - DCC_NAMESPACE::SwitchWidget *m_smartMirrorBtn; // 智能镜像源 - - DCC_NAMESPACE::ModuleObject *m_autoCheckUpdateModule; - DCC_NAMESPACE::ModuleObject *m_autoDownloadUpdateModule; - DCC_NAMESPACE::ModuleObject *m_autoDownloadUpdateTipsModule; - DCC_NAMESPACE::ModuleObject *m_autoInstallUpdateModule; - DCC_NAMESPACE::ModuleObject *m_autoInstallUpdatesTipsModule; - DCC_NAMESPACE::ModuleObject *m_backupUpdatesModule; - DCC_NAMESPACE::ModuleObject *m_backupUpdatesTipModule; - DCC_NAMESPACE::ModuleObject *m_updateNotifyModule; - QScopedPointer m_mirrorsWidget; -}; diff --git a/dcc-old/src/plugin-update/window/updatewidget.cpp b/dcc-old/src/plugin-update/window/updatewidget.cpp deleted file mode 100644 index 60644f7633..0000000000 --- a/dcc-old/src/plugin-update/window/updatewidget.cpp +++ /dev/null @@ -1,171 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "updatewidget.h" -#include "updatemodel.h" -#include "updatework.h" -#include "widgets/settingsgroup.h" -#include "widgets/settingsgroup.h" - -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DCORE_USE_NAMESPACE -DWIDGET_USE_NAMESPACE - -UpdateWidget::UpdateWidget(QWidget *parent) - : QWidget(parent) - , m_layout(new QVBoxLayout) - , m_model(nullptr) - , m_work(nullptr) - , m_centerLayout(new QVBoxLayout) - , m_label(new QLabel) - , m_lastoreHeartBeatTimer(new QTimer) - , m_updateState(UpdatesStatus::Default) -{ - m_layout->setMargin(0); - - QWidget *recentHistoryWidget = new QWidget; - recentHistoryWidget->setAccessibleName("Update_Widget"); - QVBoxLayout *bottomLayout = new QVBoxLayout; - recentHistoryWidget->setLayout(bottomLayout); - - bottomLayout->setMargin(0); - bottomLayout->setSpacing(0); - bottomLayout->addWidget(m_label, 0, Qt::AlignCenter); - - m_layout->addWidget(recentHistoryWidget); - - m_label->setVisible(false); - setLayout(m_layout); - - m_lastoreHeartBeatTimer->setInterval(60000); - m_lastoreHeartBeatTimer->start(); - connect(m_lastoreHeartBeatTimer, &QTimer::timeout, this, &UpdateWidget::requestLastoreHeartBeat); -} - -UpdateWidget::~UpdateWidget() -{ - delete m_centerLayout; - m_centerLayout = nullptr; - - if (m_lastoreHeartBeatTimer != nullptr) { - if (m_lastoreHeartBeatTimer->isActive()) { - m_lastoreHeartBeatTimer->stop(); - } - delete m_lastoreHeartBeatTimer; - m_lastoreHeartBeatTimer = nullptr; - } -} - -void UpdateWidget::setModel(const UpdateModel *model, const UpdateWorker *work) -{ - m_model = const_cast(model); - m_work = const_cast(work); - qRegisterMetaType("ClassifyUpdateType"); - connect(m_model, &UpdateModel::systemVersionChanged, this, &UpdateWidget::updateSystemVersionLabel, Qt::UniqueConnection); - connect(m_model, &UpdateModel::systemActivationChanged, this, &UpdateWidget::updateSystemVersionLabel, Qt::UniqueConnection); - updateSystemVersionLabel(); - - UpdateCtrlWidget *updateWidget = new UpdateCtrlWidget(m_model); - updateWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - connect(this, &UpdateWidget::showUpdateCtrl, updateWidget, &UpdateCtrlWidget::onShowUpdateCtrl); - connect(updateWidget, &UpdateCtrlWidget::notifyUpdateState, this, &UpdateWidget::onNotifyUpdateState); - connect(updateWidget, &UpdateCtrlWidget::requestUpdates, this, &UpdateWidget::requestUpdates); - connect(updateWidget, &UpdateCtrlWidget::requestUpdateCtrl, this, &UpdateWidget::requestUpdateCtrl); - connect(updateWidget, &UpdateCtrlWidget::requestOpenAppStroe, this, &UpdateWidget::requestOpenAppStroe); - connect(updateWidget, &UpdateCtrlWidget::requestFixError, this, &UpdateWidget::requestFixError); - - m_layout->addWidget(updateWidget); -} - -void UpdateWidget::updateSystemVersionLabel() -{ -#ifndef DISABLE_ACTIVATOR - if (m_model->systemActivation() == UiActiveState::Authorized || m_model->systemActivation() == UiActiveState::TrialAuthorized || m_model->systemActivation() == UiActiveState::AuthorizedLapse) { - m_label->setText(QString("%1: %2").arg(tr("Current Edition")).arg(m_model->systemVersionInfo())); - } else { - m_label->clear(); - } -#else - m_label->setText(QString("%1: %2").arg(tr("Current Edition")).arg(m_model->systemVersionInfo())); -#endif -} - -void UpdateWidget::showCheckUpdate() -{ - const UpdatesStatus &status = m_model->status(); - qDebug() << Q_FUNC_INFO << " current update status : " << status; - - if (status == Checking) { - m_label->setVisible(true); - } - Q_EMIT showUpdateCtrl(); -} - -void UpdateWidget::showUpdateSetting() -{ - qDebug() << Q_FUNC_INFO; - m_work->checkNetselect(); -} - -void UpdateWidget::displayUpdateContent(UpdateType index) -{ - QLayoutItem *item; - while ((item = m_centerLayout->layout()->takeAt(0)) != nullptr) { - item->widget()->deleteLater(); - delete item; - item = nullptr; - } - - switch (static_cast(index)) { - case UpdateCheck: - showCheckUpdate(); - break; - case UpdateSetting: - case UpdateSettingMir: - showUpdateSetting(); - break; - default: - break; - } -} - -void UpdateWidget::onNotifyUpdateState(int state) -{ - if (m_updateState == static_cast(state)) { - return; - } else { - m_updateState = static_cast(state); - } - - m_label->setVisible(false); - - switch (m_updateState) { - case UpdatesStatus::Default: - case Checking: - m_label->setVisible(true); - break; - case Updated: - case UpdateSucceeded: - case NeedRestart: - //更新历史,暂时屏蔽显示入口,待后期再觉得是否需要此功能 -// m_historyBtn->setVisible(true); - break; - case UpdatesAvailable: - case Downloading: - case DownloadPaused: - case Downloaded: - case Installing: - case UpdateFailed: - //now donothing - break; - default: - break; - } -} diff --git a/dcc-old/src/plugin-update/window/updatewidget.h b/dcc-old/src/plugin-update/window/updatewidget.h deleted file mode 100644 index 48c1bf8b99..0000000000 --- a/dcc-old/src/plugin-update/window/updatewidget.h +++ /dev/null @@ -1,77 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once - -#include "interface/namespace.h" -#include "updatectrlwidget.h" -#include "updatemodel.h" - -#include - -QT_BEGIN_NAMESPACE -class QStackedLayout; -class QLayoutItem; -class QVBoxLayout; -class QLabel; -QT_END_NAMESPACE - -namespace DCC_NAMESPACE { -class SettingsGroup; -} - -class UpdateCtrlWidget; -class UpdateHistoryButton; -class RecentHistoryApplist; -class AppUpdateInfo; - -class UpdateModel; -class UpdateWorker; -class UpdateWidget : public QWidget -{ - Q_OBJECT -public: - enum UpdateType { - Default = -1, - UpdateCheck, - UpdateSetting, - UpdateSettingMir, - Count - }; -public: - explicit UpdateWidget(QWidget *parent = nullptr); - ~UpdateWidget(); - - void setModel(const UpdateModel *model, const UpdateWorker *work); - void updateSystemVersionLabel(); - void displayUpdateContent(UpdateType index); - -private: - void showCheckUpdate(); - void showUpdateSetting(); - -Q_SIGNALS: - void topListviewChanged(const QModelIndex &index); - void pushMirrorsView(); - void showUpdateCtrl(); - void requestLastoreHeartBeat(); - - void requestUpdates(ClassifyUpdateType type); - void requestUpdateCtrl(ClassifyUpdateType type, int ctrlType); - void requestOpenAppStroe(); - void requestFixError(const ClassifyUpdateType &updateType, const QString &error); - -public Q_SLOTS: - void onNotifyUpdateState(int state); - -private: - QVBoxLayout *m_layout; - UpdateModel *m_model; - UpdateWorker *m_work; - QVBoxLayout *m_centerLayout; - QLabel *m_label;//System Version display - QString m_systemVersion; - QTimer *m_lastoreHeartBeatTimer; // lastore-daemon 心跳信号,防止lastore-daemon自动退出 - UpdatesStatus m_updateState; -}; - diff --git a/dcc-old/src/plugin-update/window/widgets/downloadprogressbar.cpp b/dcc-old/src/plugin-update/window/widgets/downloadprogressbar.cpp deleted file mode 100644 index 3767cece15..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/downloadprogressbar.cpp +++ /dev/null @@ -1,51 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "downloadprogressbar.h" - -#include -#include -#include -#include - -DownloadProgressBar::DownloadProgressBar(QWidget *parent) - : QProgressBar(parent) - , m_currentValue(0) -{ - setAccessibleName("DownloadProgressBar"); - setFixedHeight(36); - setTextVisible(true); - setTextDirection(QProgressBar::TopToBottom); - setRange(0, 100); - setAlignment(Qt::AlignCenter); -} - -void DownloadProgressBar::setMessage(const QString &message) -{ - setFormat(message); - setValue(m_currentValue); -} - -void DownloadProgressBar::setProcessValue(const int progress) -{ - if (m_currentValue == progress || progress < minimum() || progress > maximum()) - return; - - m_currentValue = progress; - - setValue(progress); -} - -void DownloadProgressBar::mouseReleaseEvent(QMouseEvent *e) -{ - if (!isEnabled()) { - return; - } - - e->accept(); - if (e->button() == Qt::LeftButton) { - Q_EMIT clicked(); - } - - QWidget::mouseReleaseEvent(e); -} diff --git a/dcc-old/src/plugin-update/window/widgets/downloadprogressbar.h b/dcc-old/src/plugin-update/window/widgets/downloadprogressbar.h deleted file mode 100644 index d2e79c7381..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/downloadprogressbar.h +++ /dev/null @@ -1,35 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DOWNLOADPROGRESSBAR_H -#define DOWNLOADPROGRESSBAR_H - -#include -#include "common.h" - -class DownloadProgressBar : public QProgressBar -{ - Q_OBJECT - -public: - explicit DownloadProgressBar(QWidget *parent = nullptr); - - void setMessage(const QString &message); - void setProcessValue(const int progress); - - inline int value() const { return m_currentValue; } - inline int minimum() const { return 0; } - inline int maximum() const { return 100; } - -protected: - void mouseReleaseEvent(QMouseEvent *e) Q_DECL_OVERRIDE; - -Q_SIGNALS: - void clicked(); - -private: - int m_currentValue; - QString m_message; -}; - -#endif // DOWNLOADPROGRESSBAR_H diff --git a/dcc-old/src/plugin-update/window/widgets/internalbuttonitem.cpp b/dcc-old/src/plugin-update/window/widgets/internalbuttonitem.cpp deleted file mode 100644 index 93f1d33664..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/internalbuttonitem.cpp +++ /dev/null @@ -1,83 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#include "internalbuttonitem.h" - -#include -#include -#include -#include - -InternalButtonItem::InternalButtonItem(QWidget *parent) - : SettingsItem(parent) - , m_internalLabel(new QLabel(tr("Internal testing channel"), this)) - , m_switchbtn(new DSwitchButton(this)) - , m_commandlink(new DCommandLinkButton(tr("click here open the link"), this)) -{ - initUi(); - initConnection(); -} - -void InternalButtonItem::setLink(const QUrl &link) -{ - m_link = link; -} - -void InternalButtonItem::initUi() -{ - QHBoxLayout *mainlayout = new QHBoxLayout(this); - mainlayout->setSpacing(0); - mainlayout->setContentsMargins(10, 1, 10, 1); - mainlayout->addWidget(m_internalLabel); - mainlayout->addStretch(); - mainlayout->addWidget(m_commandlink); - mainlayout->addWidget(m_switchbtn); - - m_commandlink->setVisible(false); -} - -void InternalButtonItem::initConnection() -{ - connect(m_commandlink, &DCommandLinkButton::clicked, this, [this] { - QDesktopServices::openUrl(m_link); - }); - connect(m_switchbtn, &DSwitchButton::checkedChanged, this, [this](auto value) { - if (m_switchbtn->isEnabled()) { - m_switchbtn->setEnabled(false); - emit InternalButtonItem::requestInternalChannel(value); - } - }); -} - -void InternalButtonItem::onModelTestingStatusChanged(const TestingChannelStatus &status) -{ - switch (status) { - case TestingChannelStatus::NotJoined: - m_commandlink->hide(); - m_switchbtn->setChecked(false); - m_switchbtn->setEnabled(true); - break; - case TestingChannelStatus::WaitJoined: - m_switchbtn->setChecked(false); - m_commandlink->show(); - m_switchbtn->setEnabled(false); - break; - case TestingChannelStatus::WaitToLeave: - m_switchbtn->setChecked(true); - m_commandlink->hide(); - m_switchbtn->setEnabled(false); - break; - case TestingChannelStatus::Joined: - m_commandlink->hide(); - m_switchbtn->setChecked(true); - m_switchbtn->setEnabled(true); - break; - case TestingChannelStatus::DeActive: - m_switchbtn->setChecked(false); - m_switchbtn->setEnabled(true); - break; - default: - break; - } -} diff --git a/dcc-old/src/plugin-update/window/widgets/internalbuttonitem.h b/dcc-old/src/plugin-update/window/widgets/internalbuttonitem.h deleted file mode 100644 index 9c9770ad44..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/internalbuttonitem.h +++ /dev/null @@ -1,43 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later - -#pragma once - -#include "widgets/settingsitem.h" -#include "common.h" - -#include -#include - -#include -#include - -using DCC_NAMESPACE::SettingsItem; -using Dtk::Widget::DCommandLinkButton; -using Dtk::Widget::DSwitchButton; - -class InternalButtonItem final : public SettingsItem -{ - Q_OBJECT - -public: - explicit InternalButtonItem(QWidget *parent = nullptr); - -public slots: - void setLink(const QUrl &link); - void onModelTestingStatusChanged(const TestingChannelStatus &status); - -signals: - void requestInternalChannel(bool); - -private: - void initUi(); - void initConnection(); - -private: - QLabel *m_internalLabel; - DSwitchButton *m_switchbtn; - DCommandLinkButton *m_commandlink; - QUrl m_link; -}; diff --git a/dcc-old/src/plugin-update/window/widgets/loadingitem.cpp b/dcc-old/src/plugin-update/window/widgets/loadingitem.cpp deleted file mode 100644 index fadd91506b..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/loadingitem.cpp +++ /dev/null @@ -1,107 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "loadingitem.h" - -#include -#include -#include -#include -#include -#include - -DGUI_USE_NAMESPACE -DCORE_USE_NAMESPACE - -LoadingItem::LoadingItem(QFrame *parent) - : QWidget(parent) - , m_messageLabel(new QLabel) - , m_progress(new QProgressBar(this)) -{ - QVBoxLayout *layout = new QVBoxLayout(); - layout->setMargin(0); - layout->setSpacing(10); - - m_progress->setAccessibleName("LoadingItem_progress"); - m_progress->setRange(0, 100); - m_progress->setFixedWidth(200); - m_progress->setFixedHeight(7); - m_progress->setTextVisible(false); - - QVBoxLayout *imgLayout = new QVBoxLayout; - imgLayout->setAlignment(Qt::AlignCenter); - m_labelImage = new QLabel; - m_labelImage->setMinimumSize(128, 128); - imgLayout->addWidget(m_labelImage, 0, Qt::AlignTop); - - QHBoxLayout *txtLayout = new QHBoxLayout; - txtLayout->setAlignment(Qt::AlignCenter); - m_labelText = new QLabel; - txtLayout->addWidget(m_labelText); - - layout->addStretch(); - layout->addLayout(imgLayout); - layout->addLayout(txtLayout); - layout->addWidget(m_progress, 0, Qt::AlignHCenter); - layout->addWidget(m_messageLabel, 0, Qt::AlignHCenter); - layout->addStretch(); - - setLayout(layout); -} - -void LoadingItem::setProgressValue(int value) -{ - m_progress->setValue(value); -} - -void LoadingItem::setProgressBarVisible(bool visible) -{ - m_progress->setVisible(visible); -} - -void LoadingItem::setMessage(const QString &message) -{ - m_messageLabel->setText(message); -} - -void LoadingItem::setVersionVisible(bool state) -{ - m_labelText->setVisible(state); -} - -void LoadingItem::setSystemVersion(const QString &version) -{ - Q_UNUSED(version); - QString uVersion = DSysInfo::uosProductTypeName() + " " + DSysInfo::majorVersion(); - if (DSysInfo::uosType() != DSysInfo::UosServer) - uVersion.append(" " + DSysInfo::uosEditionName()); - m_labelText->setText(uVersion); -} - -void LoadingItem::setImageVisible(bool state) -{ - m_labelImage->setVisible(state); -} - -//image or text only use one -void LoadingItem::setImageOrTextVisible(bool state) -{ - qDebug() << Q_FUNC_INFO << state; - - setVersionVisible(state); - setImageVisible(true); - - QString path = ""; - if (state) { - m_labelImage->setPixmap(DIconTheme::findQIcon("icon_success").pixmap({128, 128})); - } else { - m_labelImage->setPixmap(QIcon(":/icons/deepin/builtin/icons/dcc_checking_update.svg").pixmap({128, 128})); - } -} - -//image and text all use or not use -void LoadingItem::setImageAndTextVisible(bool state) -{ - setVersionVisible(state); - setImageVisible(state); -} diff --git a/dcc-old/src/plugin-update/window/widgets/loadingitem.h b/dcc-old/src/plugin-update/window/widgets/loadingitem.h deleted file mode 100644 index c0f5e465f4..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/loadingitem.h +++ /dev/null @@ -1,30 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#pragma once -#include "interface/namespace.h" -#include "widgets/settingsitem.h" - -#include -#include - -class LoadingItem : public QWidget -{ - Q_OBJECT -public: - explicit LoadingItem(QFrame *parent = 0); - void setProgressValue(int value); - void setProgressBarVisible(bool visible); - void setMessage(const QString &message); - void setVersionVisible(bool state); - void setSystemVersion(const QString &version); - void setImageVisible(bool state); - void setImageOrTextVisible(bool state); - void setImageAndTextVisible(bool state); - -private: - QLabel *m_messageLabel; - QProgressBar *m_progress; - QLabel *m_labelImage; - QLabel *m_labelText; -}; diff --git a/dcc-old/src/plugin-update/window/widgets/resultitem.cpp b/dcc-old/src/plugin-update/window/widgets/resultitem.cpp deleted file mode 100644 index 3be6c7527a..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/resultitem.cpp +++ /dev/null @@ -1,65 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "resultitem.h" - -#include -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE - -ResultItem::ResultItem(QFrame *parent) - : SettingsItem(parent), - m_message(new QLabel), - m_icon(new QLabel), - m_pix("") -{ - m_icon->setFixedSize(128, 128); - - m_message->setWordWrap(true); - - QVBoxLayout* layout = new QVBoxLayout(); - layout->setMargin(0); - layout->setSpacing(0); - - layout->addSpacing(15); - layout->addWidget(m_icon, 0, Qt::AlignHCenter); - layout->addSpacing(15); - layout->addWidget(m_message, 0, Qt::AlignHCenter); - layout->addSpacing(15); - - setLayout(layout); -} - -void ResultItem::setSuccess(ShowStatus type) -{ - switch (type) { - case ShowStatus::NoActive: - m_pix = ":/icons/deepin/builtin/icons/noactive.svg"; - m_icon->setPixmap(DIcon::loadNxPixmap(m_pix)); - setMessage(tr("Your system is not authorized, please activate first")); - break; - case ShowStatus::IsSuccessed: - m_pix = ":/icons/deepin/builtin/icons/success.svg"; - m_icon->setPixmap(DIcon::loadNxPixmap(m_pix)); - setMessage(tr("Update successful")); - break; - case ShowStatus::IsFailed: - m_pix = ":/icons/deepin/builtin/icons/failed.svg"; - m_icon->setPixmap(DIcon::loadNxPixmap(m_pix)); - setMessage(tr("Failed to update")); - break; - default: - qDebug() << "unknown status!!!"; - break; - } -} - -void ResultItem::setMessage(const QString &message) -{ - m_message->setText(message); -} diff --git a/dcc-old/src/plugin-update/window/widgets/resultitem.h b/dcc-old/src/plugin-update/window/widgets/resultitem.h deleted file mode 100644 index db729ea502..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/resultitem.h +++ /dev/null @@ -1,29 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCC_UPDATE_RESULTITEM_H -#define DCC_UPDATE_RESULTITEM_H - -#include "widgets/settingsitem.h" - -#include "dimagebutton.h" -#include "common.h" - -class ResultItem : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT - -public: - explicit ResultItem(QFrame* parent = 0); - - void setSuccess(ShowStatus type); - void setMessage(const QString &message); - -private: - QLabel* m_message; - QLabel *m_icon; - QString m_pix; -}; - - -#endif // DCC_UPDATE_RESULTITEM_H diff --git a/dcc-old/src/plugin-update/window/widgets/safeupdateitem.cpp b/dcc-old/src/plugin-update/window/widgets/safeupdateitem.cpp deleted file mode 100644 index 1fef93dd43..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/safeupdateitem.cpp +++ /dev/null @@ -1,28 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "safeupdateitem.h" - -SafeUpdateItem::SafeUpdateItem(QWidget *parent) - : UpdateSettingItem(parent) -{ - init(); -} - -void SafeUpdateItem::init() -{ - setIcon(":/icons/deepin/builtin/icons/dcc_safe_update.svg"); - setClassifyUpdateType(SecurityUpdate); - m_controlWidget->setDetailEnable(false); - m_controlWidget->setShowMoreButtonVisible(false); - m_controlWidget->setVersionVisible(false); -} - -void SafeUpdateItem::setData(UpdateItemInfo *updateItemInfo) -{ - UpdateSettingItem::setData(updateItemInfo); - - m_controlWidget->setDatetimeVisible(false); -} - - diff --git a/dcc-old/src/plugin-update/window/widgets/safeupdateitem.h b/dcc-old/src/plugin-update/window/widgets/safeupdateitem.h deleted file mode 100644 index cf1a751a6b..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/safeupdateitem.h +++ /dev/null @@ -1,20 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SAFEUPDATEITEM_H -#define SAFEUPDATEITEM_H - -#include "updatesettingitem.h" - -class SafeUpdateItem: public UpdateSettingItem -{ - Q_OBJECT -public: - explicit SafeUpdateItem(QWidget *parent = nullptr); - - void init(); - - void setData(UpdateItemInfo *updateItemInfo) override; -}; - -#endif // SAFEUPDATEITEM_H diff --git a/dcc-old/src/plugin-update/window/widgets/summaryitem.cpp b/dcc-old/src/plugin-update/window/widgets/summaryitem.cpp deleted file mode 100644 index ee5b705975..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/summaryitem.cpp +++ /dev/null @@ -1,42 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "summaryitem.h" - -#include - -SummaryItem::SummaryItem(QFrame *parent) - : DCC_NAMESPACE::SettingsItem(parent) - , m_title(new QLabel) - , m_details(new QLabel) -{ - setFixedHeight(36 * 3); - - m_title->setObjectName("UpdateSummary"); - - QVBoxLayout* layout = new QVBoxLayout; - layout->setMargin(0); - layout->setSpacing(0); - - m_title->setAlignment(Qt::AlignHCenter); - m_title->setWordWrap(true); - m_details->setAlignment(Qt::AlignHCenter); - - layout->addStretch(); - layout->addWidget(m_title); - layout->addSpacing(4); - layout->addWidget(m_details); - layout->addStretch(); - - setLayout(layout); -} - -void SummaryItem::setTitle(const QString &title) -{ - m_title->setText(title); -} - -void SummaryItem::setDetails(const QString &details) -{ - m_details->setText(details); -} diff --git a/dcc-old/src/plugin-update/window/widgets/summaryitem.h b/dcc-old/src/plugin-update/window/widgets/summaryitem.h deleted file mode 100644 index 3dd446ceb1..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/summaryitem.h +++ /dev/null @@ -1,25 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SUMMARYITEM_H -#define SUMMARYITEM_H - -#include "widgets/settingsitem.h" -#include - -class SummaryItem : public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT - -public: - explicit SummaryItem(QFrame * parent = 0); - - void setTitle(const QString& title); - void setDetails(const QString& details); - -private: - QLabel *m_title; - QLabel *m_details; -}; - -#endif // SUMMARYITEM_H diff --git a/dcc-old/src/plugin-update/window/widgets/systemupdateitem.cpp b/dcc-old/src/plugin-update/window/widgets/systemupdateitem.cpp deleted file mode 100644 index 76724ff4e0..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/systemupdateitem.cpp +++ /dev/null @@ -1,154 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "systemupdateitem.h" -#include "common.h" - -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -SystemUpdateItem::SystemUpdateItem(QWidget *parent) - : UpdateSettingItem(parent) - , m_line(new QFrame) - , m_lineWidget(new QWidget) -{ - setIcon(":/icons/deepin/builtin/icons/dcc_system_update.svg"); - setClassifyUpdateType(SystemUpdate); - - QVBoxLayout *lineLay = new QVBoxLayout; - lineLay->setMargin(0); - lineLay->addSpacing(10); - lineLay->addWidget(m_line); - m_lineWidget->setLayout(lineLay); - m_settingsGroup->insertWidget(m_lineWidget); - m_lineWidget->setVisible(false); - if (m_updateDetailItemList.count() > 0) { - for (DetailInfoItem *item : m_updateDetailItemList) { - m_settingsGroup->appendItem(item); - } - } -} - -void SystemUpdateItem::showMore() -{ - m_controlWidget->setShowMoreButtonVisible(false); - for (int i = 0; i < m_updateDetailItemList.count(); i++) { - m_updateDetailItemList.at(i)->setVisible(true); - if (i == m_updateDetailItemList.count() - 1) { - m_updateDetailItemList.at(i)->setContentsMargins(5, 15, 20, 30); - } else { - m_updateDetailItemList.at(i)->setContentsMargins(5, 15, 20, 10); - } - m_lineWidget->setVisible(true); - } -} - -void SystemUpdateItem::setData(UpdateItemInfo *updateItemInfo) -{ - UpdateSettingItem::setData(updateItemInfo); - if (updateItemInfo->availableVersion().isEmpty() && updateItemInfo->updateTime().isEmpty()) { - m_controlWidget->setDetailLabelVisible(false); - m_controlWidget->setDetailEnable(false); - m_controlWidget->setShowMoreButtonVisible(false); - m_controlWidget->setDatetimeVisible(false); - DLabel *vesrionLabel = m_controlWidget->findChild("versionLabel"); - vesrionLabel->setVisible(true); - vesrionLabel->setText(updateItemInfo->explain()); - vesrionLabel->setContentsMargins(0, 4, 0, 0); - DFontSizeManager::instance()->bind(vesrionLabel, DFontSizeManager::T8); - vesrionLabel->setForegroundRole(DPalette::TextTips); - } - - QList detailInfoList = updateItemInfo->detailInfos(); - - if (!m_updateDetailItemList.isEmpty()) { - for (DetailInfoItem *item : m_updateDetailItemList) { - m_settingsGroup->removeItem(item); - } - qDeleteAll(m_updateDetailItemList); - m_updateDetailItemList.clear(); - } - - int lastIndex = -1; - - const QString systemVer = IsCommunitySystem ? Dtk::Core::DSysInfo::deepinVersion() : Dtk::Core::DSysInfo::minorVersion(); - for (int i = 0; i < detailInfoList.count(); i++) { - const QString currentVersion = detailInfoList.at(i).name; - if (subVersion(systemVer, currentVersion) > DBL_MIN || subVersion(currentVersion, updateItemInfo->availableVersion()) > DBL_MIN) { - continue; - } - - if (IsProfessionalSystem && getLastNumForString(currentVersion) != '0') { - if (lastIndex < 0 || subVersion(currentVersion, detailInfoList.at(lastIndex).name) > DBL_MIN) { - lastIndex = i; - } - continue; - } - - createDetailInfoItem(detailInfoList, i); - } - - if (lastIndex > -1 && getLastNumForString(updateItemInfo->availableVersion()) != '0') { - std::vector firstVersionVec = getNumListFromStr(updateItemInfo->availableVersion()); - std::vector secondVersionVec = getNumListFromStr(detailInfoList.at(lastIndex).name); - // 当前版本是 1061的话 则不显示1051等类似的小版本 - if (static_cast(firstVersionVec.at(0) / 10) == static_cast(secondVersionVec.at(0) / 10)) { - createDetailInfoItem(detailInfoList, lastIndex, 0); - } - } - - m_controlWidget->setShowMoreButtonVisible(m_updateDetailItemList.count()); -} - -char SystemUpdateItem::getLastNumForString(const QString &value) -{ - QChar lastNum = QChar::Null; - for (QChar item : value) { - if (item.toLatin1() >= '0' && item.toLatin1() <= '9') { - lastNum = item; - } - } - - return lastNum.toLatin1(); -} - -double SystemUpdateItem::subVersion(const QString &firstVersion, const QString &secondVersion) -{ - std::vector firstVersionVec = getNumListFromStr(firstVersion); - std::vector secondVersionVec = getNumListFromStr(secondVersion); - if (firstVersionVec.empty() || secondVersionVec.empty()) { - return -1; - } - - return firstVersionVec.at(0) - secondVersionVec.at(0); -} - -void SystemUpdateItem::createDetailInfoItem(const QList &detailInfoList, int index, int groupIndex) -{ - if (index >= detailInfoList.count() || index < 0) { - return; - } - DetailInfo item = detailInfoList.at(index); - DetailInfoItem *detailInfoItem = new DetailInfoItem(this); - // 根据需求,将最后一个字符替换为0(原因是不想用户看到版本频繁的更新) - if (IsProfessionalSystem) - item.name.replace(item.name.length() - 1, 1, '0'); - detailInfoItem->setTitle(item.name); - detailInfoItem->setDate(item.updateTime); - detailInfoItem->setLinkData(item.link); - detailInfoItem->setDetailData(item.info); - detailInfoItem->setVisible(false); - if (groupIndex < 0) { - m_updateDetailItemList.append(detailInfoItem); - m_settingsGroup->appendItem(detailInfoItem); - } else { - m_updateDetailItemList.insert(groupIndex, detailInfoItem); - m_settingsGroup->insertItem(groupIndex + 2, detailInfoItem); - } -} diff --git a/dcc-old/src/plugin-update/window/widgets/systemupdateitem.h b/dcc-old/src/plugin-update/window/widgets/systemupdateitem.h deleted file mode 100644 index 203cdd34c4..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/systemupdateitem.h +++ /dev/null @@ -1,31 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef SYSTEMUPDATEITEM_H -#define SYSTEMUPDATEITEM_H - -#include "updatesettingitem.h" - -#include -#include -#include - -class SystemUpdateItem: public UpdateSettingItem -{ - Q_OBJECT -public: - explicit SystemUpdateItem(QWidget *parent = nullptr); - void showMore() override; - void setData(UpdateItemInfo *updateItemInfo) override; - char getLastNumForString(const QString &value); - double subVersion(const QString &firstVersion, const QString &secondVersion); - void createDetailInfoItem(const QList &detailInfoList, int index, int groupIndex = -1); - -private: - QList m_updateDetailItemList; - QFrame *m_line; - QWidget *m_lineWidget; - -}; - -#endif // SYSTEMUPDATEITEM_H diff --git a/dcc-old/src/plugin-update/window/widgets/unknownupdateitem.cpp b/dcc-old/src/plugin-update/window/widgets/unknownupdateitem.cpp deleted file mode 100644 index 9802fb6d94..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/unknownupdateitem.cpp +++ /dev/null @@ -1,49 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "unknownupdateitem.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE - -UnknownUpdateItem::UnknownUpdateItem(QWidget *parent) - : UpdateSettingItem(parent) -{ - init(); -} - -void UnknownUpdateItem::init() -{ - setIcon(":/icons/deepin/builtin/icons/dcc_unknown_update.svg"); - setClassifyUpdateType(ClassifyUpdateType::UnknownUpdate); - m_controlWidget->setDetailLabelVisible(false); - m_controlWidget->setDetailEnable(false); - m_controlWidget->setShowMoreButtonVisible(false); - m_controlWidget->setDatetimeVisible(false); - DLabel *vesrionLabel = m_controlWidget->findChild("versionLabel"); - vesrionLabel->setEnabled(false); - auto pal = vesrionLabel->palette(); - QColor base_color = pal.text().color(); - base_color.setAlpha(255 / 10 * 6); - pal.setColor(QPalette::Text, base_color); - vesrionLabel->setPalette(pal); - DFontSizeManager::instance()->bind(vesrionLabel, DFontSizeManager::T8); - m_controlWidget->layout()->setSpacing(5); -} - -void UnknownUpdateItem::setData(UpdateItemInfo *updateItemInfo) -{ - if (updateItemInfo == nullptr) { - return; - } - - m_controlWidget->setVersion(updateItemInfo->updateTime().isEmpty() ? "" : tr("Release date: ") + updateItemInfo->updateTime()); - m_controlWidget->setTitle(updateItemInfo->name()); - - setProgressVlaue(updateItemInfo->downloadProgress()); - setUpdateSize(updateItemInfo->downloadSize()); -} diff --git a/dcc-old/src/plugin-update/window/widgets/unknownupdateitem.h b/dcc-old/src/plugin-update/window/widgets/unknownupdateitem.h deleted file mode 100644 index 4d0ec22365..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/unknownupdateitem.h +++ /dev/null @@ -1,20 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UNKNOWNUPDATEITEM_H -#define UNKNOWNUPDATEITEM_H - -#include "updatesettingitem.h" - -class UnknownUpdateItem: public UpdateSettingItem -{ - Q_OBJECT -public: - explicit UnknownUpdateItem(QWidget *parent = nullptr); - void init(); - void setData(UpdateItemInfo *updateItemInfo) override; - -}; - - -#endif // UNKNOWNUPDATEITEM_H diff --git a/dcc-old/src/plugin-update/window/widgets/updatecontrolpanel.cpp b/dcc-old/src/plugin-update/window/widgets/updatecontrolpanel.cpp deleted file mode 100644 index cd162357e6..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/updatecontrolpanel.cpp +++ /dev/null @@ -1,382 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "updatecontrolpanel.h" -#include "common.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE - -static constexpr int ProcessBarFixedWidth = 130; - -updateControlPanel::updateControlPanel(QWidget *parent) - : SettingsItem(parent) - , m_titleLable(new DLabel(this)) - , m_versionLabel(new DLabel(this)) - , m_detailLabel(new DTipLabel("", this)) - , m_dateLabel(new DLabel(this)) - , m_progressLabel(new DLabel(this)) - , m_showMoreBUtton(new DCommandLinkButton("", this)) - , m_startButton(new DIconButton(this)) - , m_Progess(new DProgressBar(this)) - , m_buttonStatus(ButtonStatus::invalid) - , m_progressType(UpdateDProgressType::InvalidType) - , m_currentValue(0) -{ - initUi(); - initConnect(); -} - -void updateControlPanel::onStartUpdate() -{ - showUpdateProcess(true); - - setButtonStatus(ButtonStatus::pause); - - Q_EMIT startUpdate(); -} - -void updateControlPanel::setProgressValue(int value) -{ - if (value < 0 || value > 100) - return; - - if (value == 0 && m_currentValue != 100) { - return; - } - - m_currentValue = value; - - m_Progess->setValue(value); - QString text; - switch (m_progressType) { - case UpdateDProgressType::Download: - text = tr("Downloading ") + QString("%1%").arg(value); - break; - case UpdateDProgressType::Paused: - text = tr("Waiting ") + QString("%1%").arg(value); - break; - case UpdateDProgressType::Install: - text = tr("Installing ") + QString("%1%").arg(value); - break; - case UpdateDProgressType::Backup: - text = tr("Backing up ") + QString("%1%").arg(value); - break; - default: - text = ""; - break; - } - - setProgressText(text); -} - -void updateControlPanel::setButtonIcon(ButtonStatus status) -{ - switch (status) { - case ButtonStatus::start: - m_startButton->setIcon(DIconTheme::findQIcon("dcc_start")); - break; - case ButtonStatus::pause: - m_startButton->setIcon(DIconTheme::findQIcon("dcc_pause")); - break; - case ButtonStatus::retry: - m_startButton->setIcon(DIconTheme::findQIcon("dcc_retry")); - break; - default: - m_startButton->setIcon(static_cast(-1)); - break; - - } -} - -UpdateDProgressType updateControlPanel::getProgressType() const -{ - return m_progressType; -} - -void updateControlPanel::setProgressType(const UpdateDProgressType &progressType) -{ - m_progressType = progressType; -} - -void updateControlPanel::showUpdateProcess(bool visible) -{ - m_Progess->setVisible(visible); - m_startButton->setVisible(visible); - m_progressLabel->setVisible(visible); -} - -int updateControlPanel::getCurrentValue() const -{ - return m_currentValue; -} - -void updateControlPanel::setCurrentValue(int currentValue) -{ - m_currentValue = currentValue; -} - -void updateControlPanel::showButton(bool visible) -{ - m_startButton->setVisible(visible); -} - -void updateControlPanel::setCtrlButtonEnabled(bool enabled) -{ - m_startButton->setEnabled(enabled); -} - -void updateControlPanel::setDetailEnable(bool enable) -{ - m_showMoreBUtton->setEnabled(enable); -} -void updateControlPanel::setShowMoreButtonVisible(bool visible) -{ - m_showMoreBUtton->setVisible(visible); -} - -void updateControlPanel::setDetailLabelVisible(bool visible) -{ - m_detailLabel->setVisible(visible); -} - -void updateControlPanel::setVersionVisible(bool visible) -{ - m_versionLabel->setVisible(visible); -} - -ButtonStatus updateControlPanel::getButtonStatus() const -{ - return m_buttonStatus; -} - -void updateControlPanel::setButtonStatus(const ButtonStatus &value) -{ - m_buttonStatus = value; - setButtonIcon(value); - if (value == ButtonStatus::invalid) { - m_startButton->setEnabled(false); - } -} - -void updateControlPanel::setTitle(QString title) -{ - m_titleLable->setText(title); -} - -void updateControlPanel::setVersion(QString version) -{ - m_versionLabel->setVisible(!version.isEmpty()); - if (!version.isEmpty()) { - m_versionLabel->setText(version); - } -} - -void updateControlPanel::setDetail(QString detail) -{ - m_detailLabel->setVisible(!detail.isEmpty()); - if (!detail.isEmpty()) { - m_detailLabel->setText(htmlToCorrectColor(detail)); - } -} - -void updateControlPanel::setDate(QString date) -{ - m_dateLabel->setVisible(!date.isEmpty()); - if (!date.isEmpty()) { - m_dateLabel->setText(date); - } -} - -void updateControlPanel::setProgressText(const QString &text, const QString &toolTip) -{ - m_progressLabel->setText(getElidedText(m_progressLabel, text, Qt::ElideRight, m_progressLabel->maximumWidth() - 10, 0, __LINE__)); - m_progressLabel->setToolTip(toolTip); -} - -//used to display long string: "12345678" -> "12345..." -const QString updateControlPanel::getElidedText(QWidget *widget, QString data, Qt::TextElideMode mode, int width, int flags, int line) -{ - QString retTxt = data; - if (retTxt == "") - return retTxt; - - QFontMetrics fontMetrics(font()); - int fontWidth = fontMetrics.horizontalAdvance(data); - - qInfo() << Q_FUNC_INFO << " [Enter], data, width, fontWidth : " << data << width << fontWidth << line; - - if (fontWidth > width) { - retTxt = widget->fontMetrics().elidedText(data, mode, width, flags); - } - - qInfo() << Q_FUNC_INFO << " [End], retTxt : " << retTxt; - - return retTxt; -} - -void updateControlPanel::setShowMoreButtomText(QString text) -{ - m_showMoreBUtton->setText(text); -} - -void updateControlPanel::onButtonClicked() -{ - int value = m_Progess->value(); - QString text = tr("Downloading ") + QString("%1%").arg(value); - if (value <= 0 || value >= 100) { - text = ""; - } - - ButtonStatus status = ButtonStatus::invalid; - switch (m_buttonStatus) { - case ButtonStatus::start: - status = ButtonStatus::pause; - setProgressText(text); - Q_EMIT StartDownload(); - break; - case ButtonStatus::pause: - status = ButtonStatus::start; - setProgressText(text); - Q_EMIT PauseDownload(); - break; - case ButtonStatus::retry: - status = ButtonStatus::invalid; - setProgressText(""); - Q_EMIT RetryUpdate(); - break; - default: - break; - } - - setButtonStatus(status); -} - -void updateControlPanel::setDatetimeVisible(bool visible) -{ - m_dateLabel->setVisible(visible); -} - -void updateControlPanel::initUi() -{ - QVBoxLayout *titleLay = new QVBoxLayout(); - titleLay->setMargin(0); - m_titleLable->setForegroundRole(DPalette::TextTitle); - m_titleLable->setWordWrap(true); - DFontSizeManager::instance()->bind(m_titleLable, DFontSizeManager::T6, QFont::DemiBold); - titleLay->addWidget(m_titleLable, 0, Qt::AlignTop); - - DFontSizeManager::instance()->bind(m_versionLabel, DFontSizeManager::T8); - m_versionLabel->setForegroundRole(DPalette::TextTitle); - m_versionLabel->setObjectName("versionLabel"); - titleLay->addWidget(m_versionLabel); - titleLay->addStretch(); - QHBoxLayout *hlay = new QHBoxLayout(); - hlay->addLayout(titleLay); - - QVBoxLayout *buttonLay = new QVBoxLayout(); - buttonLay->setSpacing(0); - buttonLay->setContentsMargins(0, 0, 8, 0); - - m_startButton->setIcon(DIconTheme::findQIcon("dcc_start")); - m_startButton->setIconSize(QSize(32, 32)); - m_startButton->setFlat(true);//设置背景透明 - m_startButton->setFixedSize(32, 32); - m_startButton->hide(); - - QHBoxLayout *progressLay = new QHBoxLayout; - m_Progess->setFixedHeight(8); - m_Progess->setRange(0, 100); - m_Progess->setAlignment(Qt::AlignRight); - m_Progess->setFixedWidth(ProcessBarFixedWidth); - - m_progressLabel->setVisible(false); - DFontSizeManager::instance()->bind(m_progressLabel, DFontSizeManager::T10); - m_progressLabel->setFixedWidth(ProcessBarFixedWidth); - m_progressLabel->setScaledContents(true); - m_progressLabel->setAlignment(Qt::AlignHCenter); - - - QVBoxLayout *progressVlay = new QVBoxLayout; - progressVlay->setSpacing(0); - progressVlay->addWidget(m_progressLabel); - progressVlay->addSpacing(2); - - progressVlay->addWidget(m_Progess); - progressVlay->addStretch(); - progressLay->addLayout(progressVlay); - - QVBoxLayout *ctrlButtonVlay = new QVBoxLayout; - int progressHeight = m_progressLabel->height(); - ctrlButtonVlay->addSpacing(progressHeight - 24); - ctrlButtonVlay->addWidget(m_startButton, 0, Qt::AlignTop); - ctrlButtonVlay->addStretch(); - progressLay->addLayout(ctrlButtonVlay); - - buttonLay->addLayout(progressLay); - - hlay->addLayout(buttonLay); - - DFontSizeManager::instance()->bind(m_detailLabel, DFontSizeManager::T8); - m_detailLabel->setForegroundRole(DPalette::TextTips); - m_detailLabel->adjustSize(); - m_detailLabel->setTextFormat(Qt::RichText); - m_detailLabel->setAlignment(Qt::AlignJustify | Qt::AlignLeft); - m_detailLabel->setWordWrap(true); - m_detailLabel->setOpenExternalLinks(true); - - QHBoxLayout *dateLay = new QHBoxLayout(); - DFontSizeManager::instance()->bind(m_dateLabel, DFontSizeManager::T8); - m_dateLabel->setObjectName("dateLable"); - m_dateLabel->setEnabled(false); - - auto pal = m_dateLabel->palette(); - QColor base_color = pal.text().color(); - base_color.setAlpha(255 / 10 * 6); - pal.setColor(QPalette::Text, base_color); - m_dateLabel->setPalette(pal); - dateLay->addWidget(m_dateLabel, 0, Qt::AlignLeft | Qt::AlignTop); - dateLay->setSpacing(0); - - m_showMoreBUtton->setText(tr("Learn more")); - DFontSizeManager::instance()->bind(m_showMoreBUtton, DFontSizeManager::T8); - m_showMoreBUtton->setForegroundRole(DPalette::Button); - dateLay->addStretch(); - dateLay->addWidget(m_showMoreBUtton, 0, Qt::AlignTop); - dateLay->setContentsMargins(0, 0, 8, 0); - - QVBoxLayout *main = new QVBoxLayout(); - main->setSpacing(0); - main->addLayout(hlay); - main->addWidget(m_detailLabel); - m_detailLabel->setContentsMargins(0, 5, 0, 0); - main->addLayout(dateLay); - main->addStretch(); - - setLayout(main); -} - -void updateControlPanel::initConnect() -{ - connect(m_showMoreBUtton, &DCommandLinkButton::clicked, this, &updateControlPanel::showDetail); - connect(m_startButton, &DIconButton::clicked, this, &updateControlPanel::onButtonClicked); - connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &updateControlPanel::onThemeChanged); -} - -void updateControlPanel::onThemeChanged() -{ - m_detailLabel->setText(htmlToCorrectColor(m_detailLabel->text())); -} \ No newline at end of file diff --git a/dcc-old/src/plugin-update/window/widgets/updatecontrolpanel.h b/dcc-old/src/plugin-update/window/widgets/updatecontrolpanel.h deleted file mode 100644 index d13193c310..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/updatecontrolpanel.h +++ /dev/null @@ -1,112 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -// -// Created by swq on 2021/9/7. -// - -#ifndef UPDATECONTROLPANEL_H -#define UPDATECONTROLPANEL_H - -#include -#include "widgets/settingsitem.h" - -QT_BEGIN_NAMESPACE -class QWidget; -class QLabel; -QT_END_NAMESPACE - -DWIDGET_BEGIN_NAMESPACE -class DCommandLinkButton; -class DLabel; -class DIconButton; -class DProgressBar; -DWIDGET_END_NAMESPACE - -enum ButtonStatus { - invalid, - start, - pause, - retry -}; - -enum UpdateDProgressType { - InvalidType, - Download, - Paused, - Install, - Backup -}; - -class updateControlPanel: public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT -public: - explicit updateControlPanel(QWidget *parent = nullptr); - - void initUi(); - void initConnect(); - - ButtonStatus getButtonStatus() const; - void setButtonStatus(const ButtonStatus &value); - - void setTitle(QString title); - void setVersion(QString version); - void setDetail(QString detail); - void setDate(QString date); - void setProgressText(const QString &text, const QString &toolTip = ""); - void setShowMoreButtomText(QString text); - - int getCurrentValue() const; - void setCurrentValue(int currentValue); - - void showButton(bool visible); - void setCtrlButtonEnabled(bool enabled); - void setDetailEnable(bool enable); - void setShowMoreButtonVisible(bool visible); - void setDetailLabelVisible(bool visible); - void setVersionVisible(bool visible); - void setDatetimeVisible(bool visible); - - const QString getElidedText(QWidget *widget, QString data, Qt::TextElideMode mode = Qt::ElideRight, int width = 100, int flags = 0, int line = 0); - - - UpdateDProgressType getProgressType() const; - void setProgressType(const UpdateDProgressType &progressType); - void showUpdateProcess(bool visible); - void requestRetry(); - -Q_SIGNALS: - void showDetail(); - void startUpdate(); - void StartDownload(); - void PauseDownload(); - void RetryUpdate(); - -public Q_SLOTS: - void onStartUpdate(); - void onButtonClicked(); - - void setProgressValue(int value); - void setButtonIcon(ButtonStatus status); - -private Q_SLOTS: - void onThemeChanged(); - -private: - DTK_WIDGET_NAMESPACE::DLabel *m_titleLable; - DTK_WIDGET_NAMESPACE::DLabel *m_versionLabel; - DTK_WIDGET_NAMESPACE::DLabel *m_detailLabel; - DTK_WIDGET_NAMESPACE::DLabel *m_dateLabel; - DTK_WIDGET_NAMESPACE::DLabel *m_progressLabel; - DTK_WIDGET_NAMESPACE::DCommandLinkButton *m_showMoreBUtton; - - DTK_WIDGET_NAMESPACE::DIconButton *m_startButton; - DTK_WIDGET_NAMESPACE::DProgressBar *m_Progess; - - ButtonStatus m_buttonStatus; - UpdateDProgressType m_progressType; - int m_currentValue; -}; - -#endif //UPDATECONTROLPANEL_H diff --git a/dcc-old/src/plugin-update/window/widgets/updateiteminfo.cpp b/dcc-old/src/plugin-update/window/widgets/updateiteminfo.cpp deleted file mode 100644 index 8383dfeb16..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/updateiteminfo.cpp +++ /dev/null @@ -1,120 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "updateiteminfo.h" - -UpdateItemInfo::UpdateItemInfo(QObject *parent) - : QObject(parent) - , m_downloadSize(0) - , m_downloadProgress(0) - , m_installProgress(0) - , m_packageId("") - , m_name("") - , m_currentVersion("") - , m_availableVersion("") - , m_explain("") - , m_updateTime("") -{ - -} - -void UpdateItemInfo::setDownloadProgress(double downloadProgress) -{ - if (downloadProgress != m_downloadProgress) { - m_downloadProgress = downloadProgress; - Q_EMIT downloadProgressChanged(downloadProgress); - } -} - -void UpdateItemInfo::setDownloadSize(qlonglong downloadSize) -{ - if (downloadSize != m_downloadSize) { - m_downloadSize = downloadSize; - Q_EMIT downloadSizeChanged(downloadSize); - } -} - -void UpdateItemInfo::setInstallProgress(double installProgress) -{ - if (installProgress != m_installProgress) { - m_installProgress = installProgress; - Q_EMIT installProgressChanged(installProgress); - } -} - -QString UpdateItemInfo::packageId() const -{ - return m_packageId; -} - -void UpdateItemInfo::setPackageId(const QString &packageId) -{ - m_packageId = packageId; -} - -QString UpdateItemInfo::name() const -{ - return m_name; -} - -void UpdateItemInfo::setName(const QString &name) -{ - m_name = name; -} - -QString UpdateItemInfo::currentVersion() const -{ - return m_currentVersion; -} - -void UpdateItemInfo::setCurrentVersion(const QString ¤tVersion) -{ - m_currentVersion = currentVersion; -} - -QString UpdateItemInfo::availableVersion() const -{ - return m_availableVersion; -} - -void UpdateItemInfo::setAvailableVersion(const QString &availableVersion) -{ - m_availableVersion = availableVersion; -} - -QString UpdateItemInfo::explain() const -{ - return m_explain; -} - -void UpdateItemInfo::setExplain(const QString &explain) -{ - m_explain = explain; -} - - -QString UpdateItemInfo::updateTime() const -{ - return m_updateTime; -} - -void UpdateItemInfo::setUpdateTime(const QString &updateTime) -{ - m_updateTime = updateTime; -} - -QList UpdateItemInfo::detailInfos() const -{ - return m_detailInfos; -} - -void UpdateItemInfo::setDetailInfos(QList &detailInfos) -{ - m_detailInfos.clear(); - m_detailInfos = detailInfos; -} - -void UpdateItemInfo::addDetailInfo(DetailInfo detailInfo) -{ - m_detailInfos.append(std::move(detailInfo)); -} diff --git a/dcc-old/src/plugin-update/window/widgets/updateiteminfo.h b/dcc-old/src/plugin-update/window/widgets/updateiteminfo.h deleted file mode 100644 index 168d9b3aa6..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/updateiteminfo.h +++ /dev/null @@ -1,78 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UPDATEITEMINFO_H -#define UPDATEITEMINFO_H - - -#include "common.h" -#include "widgets/utils.h" - -struct DetailInfo { - QString name; - QString updateTime; - QString info; - QString link; - - DetailInfo() {} -}; - -class UpdateItemInfo: public QObject -{ - Q_OBJECT -public: - - explicit UpdateItemInfo(QObject *parent = nullptr); - virtual ~UpdateItemInfo() {} - - inline qlonglong downloadSize() const { return m_downloadSize; } - void setDownloadSize(qlonglong downloadSize); - - double downloadProgress() const { return m_downloadProgress; } - void setDownloadProgress(double downloadProgress); - - double installProgress() const { return m_installProgress; } - void setInstallProgress(double installProgress); - - QString packageId() const; - void setPackageId(const QString &packageId); - - QString name() const; - void setName(const QString &name); - - QString currentVersion() const; - void setCurrentVersion(const QString ¤tVersion); - - QString availableVersion() const; - void setAvailableVersion(const QString &availableVersion); - - QString explain() const; - void setExplain(const QString &explain); - - QString updateTime() const; - void setUpdateTime(const QString &updateTime); - - QList detailInfos() const; - void setDetailInfos(QList &detailInfos); - void addDetailInfo(DetailInfo detailInfo); - -Q_SIGNALS: - void downloadProgressChanged(const double &progress); - void installProgressChanged(const double &progress); - void downloadSizeChanged(const qlonglong &size); - -private: - qlonglong m_downloadSize; - double m_downloadProgress; - double m_installProgress; - - QString m_packageId; - QString m_name; - QString m_currentVersion; - QString m_availableVersion; - QString m_explain; - QString m_updateTime; - QList m_detailInfos; -}; - -#endif // UPDATEITEMINFO_H diff --git a/dcc-old/src/plugin-update/window/widgets/updatesettingitem.cpp b/dcc-old/src/plugin-update/window/widgets/updatesettingitem.cpp deleted file mode 100644 index d9c1a22f4b..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/updatesettingitem.cpp +++ /dev/null @@ -1,346 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "updatesettingitem.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -UpdateSettingItem::UpdateSettingItem(QWidget *parent) - : SettingsItem(parent) - , m_icon(new QLabel(this)) - , m_status(UpdatesStatus::Default) - , m_updateSize(0) - , m_progressVlaue(0) - , m_updateJobErrorMessage(UpdateErrorType::NoError) - , m_controlWidget(new updateControlPanel(this)) - , m_settingsGroup(new DCC_NAMESPACE::SettingsGroup(this, DCC_NAMESPACE::SettingsGroup::BackgroundStyle::NoneBackground)) -{ - m_UpdateErrorInfoMap.insert(UpdateErrorType::NoError, { UpdateErrorType::NoError, "", "" }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::NoSpace, { UpdateErrorType::NoSpace, tr("Insufficient disk space"), tr("Update failed: insufficient disk space") }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::UnKnown, { UpdateErrorType::UnKnown, tr("Update failed"), "" }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::NoNetwork, { UpdateErrorType::NoNetwork, tr("Network error"), tr("Network error, please check and try again") }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::DpkgInterrupted, { UpdateErrorType::DpkgInterrupted, tr("Packages error"), tr("Packages error, please try again") }); - m_UpdateErrorInfoMap.insert(UpdateErrorType::DeependenciesBrokenError, { UpdateErrorType::DeependenciesBrokenError, tr("Dependency error"), tr("Unmet dependencies") }); - - initUi(); - initConnect(); -} - -void UpdateSettingItem::initUi() -{ - m_icon->setFixedSize(48, 48); - m_icon->setVisible(false); - QWidget *widget = new QWidget(); - QVBoxLayout *vboxLay = new QVBoxLayout(widget); - vboxLay->addWidget(m_icon); - vboxLay->setContentsMargins(10, 6, 10, 10); - widget->setLayout(vboxLay); - - QHBoxLayout *main = new QHBoxLayout; - main->setMargin(0); - main->setSpacing(0); - main->setContentsMargins(10, 10, 0, 0); - m_settingsGroup->appendItem(m_controlWidget); - m_settingsGroup->setSpacing(0); - main->addWidget(widget, 0, Qt::AlignTop); - main->addWidget(m_settingsGroup, 0, Qt::AlignTop); - setLayout(main); - -} - -void UpdateSettingItem::setIconVisible(bool show) -{ - m_icon->setVisible(show); -} - -void UpdateSettingItem::setIcon(QString path) -{ - const qreal ratio = devicePixelRatioF(); - QPixmap pix = loadPixmap(path).scaled(m_icon->size() * ratio, - Qt::KeepAspectRatioByExpanding, - Qt::SmoothTransformation); - m_icon->setPixmap(pix); -} - -void UpdateSettingItem::showMore() -{ - return; -} - -ClassifyUpdateType UpdateSettingItem::classifyUpdateType() const -{ - return m_classifyUpdateType; -} - -void UpdateSettingItem::setClassifyUpdateType(const ClassifyUpdateType &classifyUpdateType) -{ - m_classifyUpdateType = classifyUpdateType; -} - -UpdatesStatus UpdateSettingItem::status() const -{ - return m_status; -} - -void UpdateSettingItem::setStatus(const UpdatesStatus &status) -{ - qDebug() << "UpdateSettingItem::setStatus: " << status; - - m_status = status; - this->setVisible(true); - - switch (m_status) { - case UpdatesStatus::Default: - this->setVisible(false); - break; - case UpdatesStatus::UpdatesAvailable: - m_controlWidget->showUpdateProcess(false); - setVisible(true); - break; - case UpdatesStatus::Downloading: - m_controlWidget-> setButtonStatus(ButtonStatus::pause); - m_controlWidget->showUpdateProcess(true); - m_controlWidget->setProgressType(UpdateDProgressType::Download); - setProgress(m_progressVlaue); - m_controlWidget->setCtrlButtonEnabled(true); - break; - case UpdatesStatus::DownloadPaused: - m_controlWidget->showUpdateProcess(true); - m_controlWidget->setProgressType(UpdateDProgressType::Paused); - m_controlWidget->setButtonStatus(ButtonStatus::start); - break; - case UpdatesStatus::Downloaded: - m_controlWidget->showUpdateProcess(true); - m_controlWidget->setProgressType(UpdateDProgressType::Download); - setProgressVlaue(1.0); - m_controlWidget->setButtonStatus(ButtonStatus::invalid); - Q_EMIT requestRefreshSize(); - break; - case UpdatesStatus::AutoDownloaded: - m_controlWidget->showUpdateProcess(false); - Q_EMIT requestRefreshSize(); - break; - case UpdatesStatus::Installing: - m_controlWidget->showUpdateProcess(true); - m_controlWidget->setProgressType(UpdateDProgressType::Install); - setProgressVlaue(0.0); - m_controlWidget->setButtonStatus(ButtonStatus::invalid); - m_controlWidget->setCtrlButtonEnabled(false); - break; - case UpdatesStatus::UpdateSucceeded: - m_controlWidget->setProgressType(UpdateDProgressType::Install); - m_controlWidget->setButtonStatus(ButtonStatus::invalid); - this->setVisible(false); - break; - case UpdatesStatus::UpdateFailed: - m_controlWidget->showUpdateProcess(true); - setUpdateFailedInfo(); - m_controlWidget->showButton(true); - m_controlWidget->setCtrlButtonEnabled(true); - m_controlWidget->setButtonStatus(ButtonStatus::retry); - break; - case UpdatesStatus::NeedRestart: - m_controlWidget->setProgressText(tr("The newest system installed, restart to take effect")); - m_controlWidget->showButton(false); - break; - case UpdatesStatus::WaitForRecoveryBackup: - m_controlWidget->showUpdateProcess(true); - m_controlWidget->setProgressText(tr("Waiting")); - m_controlWidget->setButtonStatus(ButtonStatus::invalid); - break; - case UpdatesStatus::RecoveryBackingup: - m_controlWidget->showUpdateProcess(true); - m_controlWidget->setButtonStatus(ButtonStatus::invalid); - m_controlWidget->setProgressType(UpdateDProgressType::Backup); - m_controlWidget->setProgressText(tr("Backing up")); - break; - case UpdatesStatus::RecoveryBackingSuccessed: - m_controlWidget->showUpdateProcess(true); - setProgressVlaue(1.0); - m_controlWidget->setProgressType(UpdateDProgressType::Backup); - m_controlWidget->setButtonStatus(ButtonStatus::invalid); - break; - case UpdatesStatus::RecoveryBackupFailed: - m_controlWidget->showUpdateProcess(true); - m_controlWidget->setProgressType(UpdateDProgressType::Backup); - m_controlWidget->setProgressText(tr("System backup failed")); - m_controlWidget->showButton(true); - m_controlWidget->setCtrlButtonEnabled(true); - m_controlWidget->setButtonStatus(ButtonStatus::retry); - break; - case UpdatesStatus::RecoveryBackupFailedDiskFull: - m_controlWidget->showUpdateProcess(true); - m_controlWidget->setProgressType(UpdateDProgressType::Backup); - m_controlWidget->setProgressText(tr("System backup failed, space is full")); - m_controlWidget->showButton(true); - m_controlWidget->setCtrlButtonEnabled(true); - m_controlWidget->setButtonStatus(ButtonStatus::retry); - break; - default: - qDebug() << "unknown status!!!"; - break; - } - - // 默认状态 不用刷新页面按钮 - if (m_status != UpdatesStatus::Default) { - Q_EMIT requestRefreshWidget(); - } -} - -void UpdateSettingItem::setProgress(double value) -{ - m_controlWidget->setProgressValue(static_cast(value * 100)); -} - -ButtonStatus UpdateSettingItem::getCtrlButtonStatus() -{ - return m_controlWidget->getButtonStatus(); -} - -void UpdateSettingItem::setData(UpdateItemInfo *updateItemInfo) -{ - if (updateItemInfo == nullptr) { - return; - } - - QString value = updateItemInfo->updateTime().isEmpty() ? "" : tr("Release date: ") + updateItemInfo->updateTime(); - m_controlWidget->setDate(value); - const QString &systemVersionType = IsServerSystem ? tr("Server") : tr("Desktop"); - QString version; - if (!updateItemInfo->availableVersion().isEmpty()) { - QString avaVersion = updateItemInfo->availableVersion(); - QString tmpVersion = avaVersion; - if (IsProfessionalSystem) - tmpVersion = avaVersion.replace(avaVersion.length() - 1, 1, '0'); // 替换版本号的最后一位为‘0‘ - version = tr("Version") + ": " + systemVersionType + tmpVersion; - } - m_controlWidget->setVersion(version); - m_controlWidget->setTitle(updateItemInfo->name()); - m_controlWidget->setDetail(updateItemInfo->explain()); - - setProgressVlaue(updateItemInfo->downloadProgress()); - setUpdateSize(updateItemInfo->downloadSize()); -} - -void UpdateSettingItem::onUpdateStatuChanged(const UpdatesStatus &status) -{ - if (m_status != status) { - setStatus(status); - } -} - -void UpdateSettingItem::onUpdateProgressChanged(const double &value) -{ - setProgressVlaue(value); -} - -UpdateErrorType UpdateSettingItem::getUpdateJobErrorMessage() const -{ - return m_updateJobErrorMessage; -} - -void UpdateSettingItem::setUpdateJobErrorMessage(const UpdateErrorType &updateJobErrorMessage) -{ - m_updateJobErrorMessage = updateJobErrorMessage; -} - -void UpdateSettingItem::setUpdateFailedInfo() -{ - QString failedInfo = ""; - QString failedTips = ""; - UpdateErrorType errorType = getUpdateJobErrorMessage(); - if (m_UpdateErrorInfoMap.contains(errorType)) { - Error_Info info = m_UpdateErrorInfoMap.value(errorType); - failedInfo = info.errorMessage; - failedTips = info.errorTips; - } - - m_controlWidget->setProgressText(failedInfo, failedTips); -} - -double UpdateSettingItem::getProgressVlaue() const -{ - return m_progressVlaue; -} - -void UpdateSettingItem::setProgressVlaue(double progressVlaue) -{ - if (progressVlaue < 0.0 || progressVlaue > 1.0) - return; - - m_progressVlaue = progressVlaue; - setProgress(progressVlaue); -} - -qlonglong UpdateSettingItem::updateSize() const -{ - return m_updateSize; -} - -void UpdateSettingItem::setUpdateSize(const qlonglong &updateSize) -{ - if (m_updateSize != updateSize) { - m_updateSize = updateSize; - Q_EMIT requestRefreshSize(); - Q_EMIT requestRefreshWidget(); - } -} - -void UpdateSettingItem::initConnect() -{ - connect(m_controlWidget, &updateControlPanel::showDetail, this, &UpdateSettingItem::showMore); - connect(m_controlWidget, &updateControlPanel::startUpdate, this, &UpdateSettingItem::onStartUpdate); - connect(m_controlWidget, &updateControlPanel::StartDownload, this, &UpdateSettingItem::onStartDownload); - connect(m_controlWidget, &updateControlPanel::PauseDownload, this, &UpdateSettingItem::onPauseDownload); - connect(m_controlWidget, &updateControlPanel::RetryUpdate, this, &UpdateSettingItem::onRetryUpdate); -} - -void UpdateSettingItem::onStartUpdate() -{ - Q_EMIT requestUpdate(m_classifyUpdateType); -} - -void UpdateSettingItem::onStartDownload() -{ - int ctrlType = UpdateCtrlType::Start; - Q_EMIT requestUpdateCtrl(m_classifyUpdateType, ctrlType); -} - -void UpdateSettingItem::onPauseDownload() -{ - int ctrlType = UpdateCtrlType::Pause; - Q_EMIT requestUpdateCtrl(m_classifyUpdateType, ctrlType); -} - -void UpdateSettingItem::onRetryUpdate() -{ - m_controlWidget->setProgressType(UpdateDProgressType::InvalidType); - setProgressVlaue(0); - m_controlWidget->setButtonStatus(ButtonStatus::invalid); - - if (m_updateJobErrorMessage == UpdateErrorType::DpkgInterrupted) { - Q_EMIT requestFixError(m_classifyUpdateType, "dpkgInterrupted"); - return; - } - - if (m_updateJobErrorMessage == UpdateErrorType::DeependenciesBrokenError) { - Q_EMIT requestFixError(m_classifyUpdateType, "dependenciesBroken"); - return; - } - - onStartUpdate(); -} diff --git a/dcc-old/src/plugin-update/window/widgets/updatesettingitem.h b/dcc-old/src/plugin-update/window/widgets/updatesettingitem.h deleted file mode 100644 index 8368ba33e3..0000000000 --- a/dcc-old/src/plugin-update/window/widgets/updatesettingitem.h +++ /dev/null @@ -1,103 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef UpdateSettingItem_H -#define UpdateSettingItem_H - -#include "widgets/settingsgroup.h" -#include "widgets/settingsitem.h" -#include "widgets/detailinfoitem.h" -#include "widgets/updatecontrolpanel.h" -#include "widgets/updateiteminfo.h" - -QT_BEGIN_NAMESPACE -class QWidget; -QT_END_NAMESPACE - -DTK_BEGIN_NAMESPACE -class DFloatingButton; -class DCommandLinkButton; -class DLabel; -class DLineEdit; -class DTextEdit; -class DTipLabel; -class DShadowLine; -DTK_END_NAMESPACE - -struct Error_Info { - UpdateErrorType ErrorType; - QString errorMessage; - QString errorTips; -}; - -class UpdateSettingItem: public DCC_NAMESPACE::SettingsItem -{ - Q_OBJECT -public: - explicit UpdateSettingItem(QWidget *parent = nullptr); - void initUi(); - void initConnect(); - - void setIconVisible(bool show); - void setIcon(QString path); - void setProgress(double value); - - ButtonStatus getCtrlButtonStatus(); - - virtual void setData(UpdateItemInfo *updateItemInfo); - - UpdatesStatus status() const; - void setStatus(const UpdatesStatus &status); - - ClassifyUpdateType classifyUpdateType() const; - void setClassifyUpdateType(const ClassifyUpdateType &classifyUpdateType); - - qlonglong updateSize() const; - void setUpdateSize(const qlonglong &updateSize); - - double getProgressVlaue() const; - void setProgressVlaue(double progressVlaue); - - UpdateErrorType getUpdateJobErrorMessage() const; - void setUpdateJobErrorMessage(const UpdateErrorType &updateJobErrorMessage); - - void setUpdateFailedInfo(); - -Q_SIGNALS: - void UpdateSuccessed(); - void UpdateFailed(); - void recoveryBackupFailed(); - void recoveryBackupSuccessed(); - void requestRefreshSize(); - void requestRefreshWidget(); - void requestFixError(const ClassifyUpdateType &updateType, const QString &error); - - void requestUpdate(ClassifyUpdateType type); - void requestUpdateCtrl(ClassifyUpdateType type, int ctrlType); - -public Q_SLOTS: - virtual void showMore(); - - void onStartUpdate(); - void onStartDownload(); - void onPauseDownload(); - void onRetryUpdate(); - - void onUpdateStatuChanged(const UpdatesStatus &status); - void onUpdateProgressChanged(const double &value); - -private: - QLabel *m_icon; - UpdatesStatus m_status; - ClassifyUpdateType m_classifyUpdateType; - qlonglong m_updateSize; - double m_progressVlaue; - UpdateErrorType m_updateJobErrorMessage; - QMap m_UpdateErrorInfoMap; - -protected: - updateControlPanel *m_controlWidget; - DCC_NAMESPACE::SettingsGroup *m_settingsGroup; -}; - -#endif //UpdateSettingItem_H diff --git a/dcc-old/src/plugin-wacom/operation/qrc/icons/dcc_nav_wacom_42px.svg b/dcc-old/src/plugin-wacom/operation/qrc/icons/dcc_nav_wacom_42px.svg deleted file mode 100644 index 62c26553b7..0000000000 --- a/dcc-old/src/plugin-wacom/operation/qrc/icons/dcc_nav_wacom_42px.svg +++ /dev/null @@ -1,43 +0,0 @@ - - - dcc_nav_wacom_42px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-wacom/operation/qrc/icons/dcc_nav_wacom_84px.svg b/dcc-old/src/plugin-wacom/operation/qrc/icons/dcc_nav_wacom_84px.svg deleted file mode 100644 index 87e8eaca82..0000000000 --- a/dcc-old/src/plugin-wacom/operation/qrc/icons/dcc_nav_wacom_84px.svg +++ /dev/null @@ -1,54 +0,0 @@ - - - dcc_nav_wacom_84px - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/dcc-old/src/plugin-wacom/operation/qrc/wacom.qrc b/dcc-old/src/plugin-wacom/operation/qrc/wacom.qrc deleted file mode 100644 index af4c0a2c64..0000000000 --- a/dcc-old/src/plugin-wacom/operation/qrc/wacom.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - icons/dcc_nav_wacom_42px.svg - icons/dcc_nav_wacom_84px.svg - - diff --git a/dcc-old/src/plugin-wacom/operation/wacomdbusproxy.cpp b/dcc-old/src/plugin-wacom/operation/wacomdbusproxy.cpp deleted file mode 100644 index ccee15873f..0000000000 --- a/dcc-old/src/plugin-wacom/operation/wacomdbusproxy.cpp +++ /dev/null @@ -1,58 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "wacomdbusproxy.h" -#include "widgets/dccdbusinterface.h" - -#include -#include -#include -#include - -const static QString WacomService = "org.deepin.dde.InputDevices1"; -const static QString WacomPath = "/org/deepin/dde/InputDevice1/Wacom"; -const static QString WacomInterface = "org.deepin.dde.InputDevice1.Wacom"; - -using namespace DCC_NAMESPACE; - -WacomDBusProxy::WacomDBusProxy(QObject *parent) - : QObject (parent) - , m_inputWacomInter(new DDBusInterface(WacomService, WacomPath, WacomInterface, QDBusConnection::sessionBus(), this)) -{ - -} - -bool WacomDBusProxy::exist() -{ - return qvariant_cast(m_inputWacomInter->property("Exist")); -} - -uint WacomDBusProxy::stylusPressureSensitive() -{ - return qvariant_cast(m_inputWacomInter->property("StylusPressureSensitive")); -} - -void WacomDBusProxy::setStylusPressureSensitive(uint value) -{ - m_inputWacomInter->setProperty("StylusPressureSensitive", QVariant::fromValue(value)); -} - -bool WacomDBusProxy::cursorMode() -{ - return qvariant_cast(m_inputWacomInter->property("CursorMode")); -} - -void WacomDBusProxy::setCursorMode(bool value) -{ - m_inputWacomInter->setProperty("CursorMode", value); -} - -uint WacomDBusProxy::eraserPressureSensitive() -{ - return qvariant_cast(m_inputWacomInter->property("EraserPressureSensitive")); -} - -void WacomDBusProxy::setEraserPressureSensitive(uint value) -{ - m_inputWacomInter->setProperty("EraserPressureSensitive", value); -} diff --git a/dcc-old/src/plugin-wacom/operation/wacomdbusproxy.h b/dcc-old/src/plugin-wacom/operation/wacomdbusproxy.h deleted file mode 100644 index dcebda318f..0000000000 --- a/dcc-old/src/plugin-wacom/operation/wacomdbusproxy.h +++ /dev/null @@ -1,50 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef WACOMDBUSPROXY_H -#define WACOMDBUSPROXY_H - -#include "interface/namespace.h" - -#include - -#include - -class QDBusInterface; -class QDBusMessage; -class QDBusObjectPath; - -using Dtk::Core::DDBusInterface; - -class WacomDBusProxy :public QObject -{ - Q_OBJECT -public: - explicit WacomDBusProxy(QObject *parent = nullptr); - - Q_PROPERTY(bool Exist READ exist NOTIFY ExistChanged) - bool exist(); - - Q_PROPERTY(uint StylusPressureSensitive READ stylusPressureSensitive WRITE setStylusPressureSensitive NOTIFY StylusPressureSensitiveChanged) - uint stylusPressureSensitive(); - void setStylusPressureSensitive(uint value); - - Q_PROPERTY(bool CursorMode READ cursorMode WRITE setCursorMode NOTIFY CursorModeChanged) - bool cursorMode(); - void setCursorMode(bool value); - - Q_PROPERTY(uint EraserPressureSensitive READ eraserPressureSensitive WRITE setEraserPressureSensitive NOTIFY EraserPressureSensitiveChanged) - uint eraserPressureSensitive(); - void setEraserPressureSensitive(uint value); - -Q_SIGNALS: - void ExistChanged(bool value) const; - void StylusPressureSensitiveChanged(uint value) const; - void CursorModeChanged(bool value) const; - void EraserPressureSensitiveChanged(uint value) const; - -private: - DDBusInterface *m_inputWacomInter; -}; - -#endif // WACOMDBUSPROXY_H diff --git a/dcc-old/src/plugin-wacom/operation/wacommodel.cpp b/dcc-old/src/plugin-wacom/operation/wacommodel.cpp deleted file mode 100644 index 036778dd7e..0000000000 --- a/dcc-old/src/plugin-wacom/operation/wacommodel.cpp +++ /dev/null @@ -1,54 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "wacommodel.h" -#include "wacommodelprivate_p.h" - -WacomModel::WacomModel(QObject *parent) - : QObject(parent) - , d_ptr(new WacomModelPrivate(this)) -{ -} - -WacomModel::~WacomModel() -{ - -} - -bool WacomModel::exist() const -{ - Q_D(const WacomModel); - return d->m_exist; -} - -bool WacomModel::CursorMode() const -{ - Q_D(const WacomModel); - return d->m_cursorMode; -} - -void WacomModel::setCursorMode(bool value) -{ - Q_D(WacomModel); - d->setCursorMode(value); -} - -uint WacomModel::eraserPressureSensitive() -{ - Q_D(const WacomModel); - return d->m_pressureValue; -} - -void WacomModel::setEraserPressureSensitive(uint value) -{ - Q_D(WacomModel); - d->setEraserPressureSensitive(value); -} - -void WacomModelPrivate::setCursorMode(bool value) { - m_wacomInterfaceProxy->setCursorMode(value); -} - -void WacomModelPrivate::setEraserPressureSensitive(uint value) { - m_wacomInterfaceProxy->setEraserPressureSensitive(value); -} diff --git a/dcc-old/src/plugin-wacom/operation/wacommodel.h b/dcc-old/src/plugin-wacom/operation/wacommodel.h deleted file mode 100644 index 5d6b928cc1..0000000000 --- a/dcc-old/src/plugin-wacom/operation/wacommodel.h +++ /dev/null @@ -1,38 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef WACOMMODEL_H -#define WACOMMODEL_H - -#include - -class WacomModelPrivate; -class WacomModel : public QObject -{ - Q_OBJECT -public: - explicit WacomModel(QObject *parent = nullptr); - ~WacomModel(); - - Q_PROPERTY(bool Exist READ exist NOTIFY ExistChanged) - bool exist() const; - - Q_PROPERTY(bool CursorMode READ CursorMode WRITE setCursorMode NOTIFY CursorModeChanged) - bool CursorMode() const; - void setCursorMode(bool value); - - Q_PROPERTY(uint EraserPressureSensitive READ eraserPressureSensitive WRITE setEraserPressureSensitive NOTIFY EraserPressureSensitiveChanged) - uint eraserPressureSensitive(); - void setEraserPressureSensitive(uint value); - -Q_SIGNALS: - void ExistChanged(bool exist); - void CursorModeChanged(const bool cursorMode); - void EraserPressureSensitiveChanged(const uint value); - -private: - QScopedPointer d_ptr; - Q_DECLARE_PRIVATE_D(qGetPtrHelper(d_ptr), WacomModel) -}; - -#endif // WACOMMODEL_H diff --git a/dcc-old/src/plugin-wacom/operation/wacommodelprivate_p.h b/dcc-old/src/plugin-wacom/operation/wacommodelprivate_p.h deleted file mode 100644 index afd0d6a65b..0000000000 --- a/dcc-old/src/plugin-wacom/operation/wacommodelprivate_p.h +++ /dev/null @@ -1,81 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef WACOMMODELPRIVATE_P_H -#define WACOMMODELPRIVATE_P_H - -#include -#include "wacomdbusproxy.h" -#include "wacommodel.h" - -class WacomModelPrivate -{ - Q_DECLARE_PUBLIC(WacomModel) -public: - explicit WacomModelPrivate (WacomModel *object) - : q_ptr(object) - , m_wacomInterfaceProxy(new WacomDBusProxy(q_ptr)) - { - initConnect(); - } - -public: - WacomModel *q_ptr; - -protected: - void existChanged(bool exist) { - Q_Q(WacomModel); - if (m_exist == exist) return; - m_exist = exist; - Q_EMIT q->ExistChanged(exist); - }; - - void cursorModeChanged(const bool cursorMode) { - Q_Q(WacomModel); - if (m_cursorMode == cursorMode) - return; - - m_cursorMode = cursorMode; - Q_EMIT q->CursorModeChanged(cursorMode); - } - - void pressureValueChanged(const uint value) { - Q_Q(WacomModel); - if (m_pressureValue == value) - return; - - m_pressureValue = value; - - Q_EMIT q->EraserPressureSensitiveChanged(value); - } - - void initConnect() { - QObject::connect(m_wacomInterfaceProxy, &WacomDBusProxy::ExistChanged, q_ptr, [this](bool value) -> void { - existChanged(value); - }); - - QObject::connect(m_wacomInterfaceProxy, &WacomDBusProxy::CursorModeChanged, q_ptr, [this](bool value) ->void { - cursorModeChanged(value); - }); - - QObject::connect(m_wacomInterfaceProxy, &WacomDBusProxy::EraserPressureSensitiveChanged, q_ptr, [this](uint value) ->void { - pressureValueChanged(value); - }); - - existChanged(m_wacomInterfaceProxy->exist()); - cursorModeChanged(m_wacomInterfaceProxy->cursorMode()); - pressureValueChanged(m_wacomInterfaceProxy->eraserPressureSensitive()); - return; - } - - void setCursorMode(bool value); - void setEraserPressureSensitive(uint value); - -private: - WacomDBusProxy *m_wacomInterfaceProxy; - bool m_exist; - bool m_cursorMode; - uint m_pressureValue; -}; - -#endif // WACOMMODELPRIVATE_P_H diff --git a/dcc-old/src/plugin-wacom/window/WacomPlugin.json b/dcc-old/src/plugin-wacom/window/WacomPlugin.json deleted file mode 100644 index f53d699afe..0000000000 --- a/dcc-old/src/plugin-wacom/window/WacomPlugin.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "api": "1.0.0" -} \ No newline at end of file diff --git a/dcc-old/src/plugin-wacom/window/wacommodule.cpp b/dcc-old/src/plugin-wacom/window/wacommodule.cpp deleted file mode 100644 index 81e21c4a30..0000000000 --- a/dcc-old/src/plugin-wacom/window/wacommodule.cpp +++ /dev/null @@ -1,97 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "wacommodule.h" -#include "widgets/widgetmodule.h" -#include "widgets/itemmodule.h" -#include -#include -#include -#include -#include "widgets/dccslider.h" - -#include -#include - -#include -#include -#include - -Q_LOGGING_CATEGORY(DdcWacomModule, "dcc-wacom-module") - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE - -WacomModule::WacomModule(QObject *parent) - : PageModule("wacom", tr("Drawing Tablet") , tr("Drawing Tablet"), DIconTheme::findQIcon("dcc_nav_wacom"), parent) - , m_model(new WacomModel(this)) -{ - connect(m_model, &WacomModel::ExistChanged, this, [this](bool exist){ - this->setHidden(!exist); - qCInfo(DdcWacomModule) << "Wacom is exist ?:" << m_model->exist(); - }); - // Mode - appendChild(new ItemModule("Mode", tr("Mode"), this, &WacomModule::initModeModule,true)); - // Pressure - appendChild(new ItemModule("Pressure",tr("Pressure Sensitivity"),this, &WacomModule::initPressureModule,false)); - setHidden(!m_model->exist()); - qCInfo(DdcWacomModule) << "Wacom is exist ?:" << m_model->exist(); -} - -QWidget* WacomModule::initModeModule(ModuleObject *module) -{ - Q_UNUSED(module); - - QComboBox *modeComboBox = new QComboBox; - auto onCursorModeChanged = [modeComboBox](const bool curMode) -> void { - modeComboBox->blockSignals(true); - modeComboBox->setCurrentIndex(curMode ? 1 : 0); - modeComboBox->blockSignals(false); - }; - - connect(m_model, &WacomModel::CursorModeChanged, modeComboBox, [onCursorModeChanged](const bool curMode){ - onCursorModeChanged(curMode); - }); - connect(modeComboBox, &QComboBox::currentTextChanged, this, [ = ](const QString curMode) { - Q_UNUSED(curMode); - QVariant curData = modeComboBox->currentData(); - m_model->setCursorMode(curData.toBool()); - }); - - modeComboBox->addItem(tr("Pen"), false); - modeComboBox->addItem(tr("Mouse"), true); - modeComboBox->setCurrentIndex(0); - - onCursorModeChanged(m_model->CursorMode()); - return modeComboBox; -} - -QWidget *WacomModule::initPressureModule(ModuleObject *module) -{ - Q_UNUSED(module); - SettingsGroup *group = new SettingsGroup; - - connect(m_model, &WacomModel::CursorModeChanged, group, [group](const bool curMode){ - group->setVisible(!curMode); - }); - - DCC_NAMESPACE::TitledSliderItem *pressureSlider = new DCC_NAMESPACE::TitledSliderItem(tr("Pressure Sensitivity")); - pressureSlider->slider()->setType(DCCSlider::Vernier); - pressureSlider->slider()->setTickPosition(QSlider::TicksBelow); - pressureSlider->slider()->setRange(1, 7); - pressureSlider->slider()->setTickInterval(1); - pressureSlider->slider()->setPageStep(1); - - QStringList delays; - delays<setAnnotations(delays); - group->appendItem(pressureSlider); - - DSlider * preSlider = qobject_cast(pressureSlider->slider()); - connect(m_model, &WacomModel::EraserPressureSensitiveChanged, preSlider, &DSlider::setValue); - connect(preSlider, &DSlider::valueChanged, m_model, &WacomModel::setEraserPressureSensitive); - preSlider->setValue(static_cast(m_model->eraserPressureSensitive())); - group->setVisible(!m_model->CursorMode()); - return group; -} diff --git a/dcc-old/src/plugin-wacom/window/wacommodule.h b/dcc-old/src/plugin-wacom/window/wacommodule.h deleted file mode 100644 index 6a3fd39cb9..0000000000 --- a/dcc-old/src/plugin-wacom/window/wacommodule.h +++ /dev/null @@ -1,26 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef WACOMMODULE_H -#define WACOMMODULE_H - -#include -#include "interface/pagemodule.h" - -class WacomModel; - -class WacomModule : public DCC_NAMESPACE::PageModule -{ - Q_OBJECT -public: - explicit WacomModule(QObject *parent = nullptr); - ~WacomModule() override {} - - QWidget *initModeModule(ModuleObject *module); - QWidget *initPressureModule(ModuleObject *module); - -private: - WacomModel *m_model; -}; - -#endif // WACOMMODULE_H diff --git a/dcc-old/src/plugin-wacom/window/wacomplugin.cpp b/dcc-old/src/plugin-wacom/window/wacomplugin.cpp deleted file mode 100644 index b2f11fd1ff..0000000000 --- a/dcc-old/src/plugin-wacom/window/wacomplugin.cpp +++ /dev/null @@ -1,44 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "wacommodel.h" -#include "wacomplugin.h" -#include "widgets/widgetmodule.h" - -#include "wacommodule.h" - -/*数位板*/ - -using namespace DCC_NAMESPACE; - -WacomPlugin::WacomPlugin() - : PluginInterface() - , m_moduleRoot(nullptr) -{ -} - -WacomPlugin::~WacomPlugin() -{ - m_moduleRoot = nullptr; -} - -QString WacomPlugin::name() const -{ - return QStringLiteral("wacom"); -} - -ModuleObject *WacomPlugin::module() -{ - if (m_moduleRoot) - return m_moduleRoot; - - m_moduleRoot = new WacomModule; - return m_moduleRoot; -} - -QString WacomPlugin::location() const -{ - return "14"; -} - - diff --git a/dcc-old/src/plugin-wacom/window/wacomplugin.h b/dcc-old/src/plugin-wacom/window/wacomplugin.h deleted file mode 100644 index 0dfc44cc39..0000000000 --- a/dcc-old/src/plugin-wacom/window/wacomplugin.h +++ /dev/null @@ -1,32 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef WacomPLUGIN_H -#define WacomPLUGIN_H - -#include "interface/pagemodule.h" -#include "interface/plugininterface.h" - -#include - -class WacomModel; - -class WacomPlugin : public DCC_NAMESPACE::PluginInterface -{ - Q_OBJECT - Q_PLUGIN_METADATA(IID "com.deepin.dde.ControlCenter.Wacom" FILE "WacomPlugin.json") - Q_INTERFACES(DCC_NAMESPACE::PluginInterface) -public: - explicit WacomPlugin(); - ~WacomPlugin() override; - - virtual QString name() const override; - virtual DCC_NAMESPACE::ModuleObject *module() override; - virtual QString location() const override; - -private: - DCC_NAMESPACE::ModuleObject *m_moduleRoot; -}; - - -#endif // DatetimePLUGIN_H diff --git a/dcc-old/src/widgets/accessiblefactoryinterface.h b/dcc-old/src/widgets/accessiblefactoryinterface.h deleted file mode 100644 index 5a559b92f1..0000000000 --- a/dcc-old/src/widgets/accessiblefactoryinterface.h +++ /dev/null @@ -1,16 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef ACCESSIBLEFACTORYINTERFACE_H -#define ACCESSIBLEFACTORYINTERFACE_H -class AccessibleFactoryBase; - -class AccessibleFactoryInterface -{ -public: - explicit AccessibleFactoryInterface(); - virtual ~AccessibleFactoryInterface(); - virtual AccessibleFactoryBase * registerAccessibleFactory(const char *factoryName, AccessibleFactoryBase *factory) = 0; - static void RegisterInstance(AccessibleFactoryInterface *inter); -}; -#endif // ACCESSIBLEFACTORYINTERFACE_H diff --git a/dcc-old/src/widgets/accessibleinterface.cpp b/dcc-old/src/widgets/accessibleinterface.cpp deleted file mode 100644 index f250656e5f..0000000000 --- a/dcc-old/src/widgets/accessibleinterface.cpp +++ /dev/null @@ -1,45 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/accessibleinterface.h" - -#include "accessiblefactoryinterface.h" - -#include - -static AccessibleFactoryInterface *s_accessibleFactoryInterface = nullptr; - -auto &get_cacheFactory() -{ - static QList> s_cacheFactory; - return s_cacheFactory; -} - -AccessibleFactoryBase *AccessibleFactoryManager::RegisterAccessibleFactory( - const char *factoryName, AccessibleFactoryBase *factory) -{ - if (s_accessibleFactoryInterface) { - s_accessibleFactoryInterface->registerAccessibleFactory(factoryName, factory); - } else { - auto &s_cacheFactory = get_cacheFactory(); - s_cacheFactory.append({ factoryName, factory }); - } - return factory; -} - -AccessibleFactoryInterface::AccessibleFactoryInterface() { } - -AccessibleFactoryInterface::~AccessibleFactoryInterface() { } - -void AccessibleFactoryInterface::RegisterInstance(AccessibleFactoryInterface *inter) -{ - if (!s_accessibleFactoryInterface) { - auto &s_cacheFactory = get_cacheFactory(); - s_accessibleFactoryInterface = inter; - for (auto &&factory : s_cacheFactory) { - s_accessibleFactoryInterface->registerAccessibleFactory(factory.first.toLatin1().data(), - factory.second); - } - s_cacheFactory.clear(); - } -} diff --git a/dcc-old/src/widgets/buttontuple.cpp b/dcc-old/src/widgets/buttontuple.cpp deleted file mode 100644 index 13b1dc936f..0000000000 --- a/dcc-old/src/widgets/buttontuple.cpp +++ /dev/null @@ -1,83 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/buttontuple.h" -#include "widgets/accessibleinterface.h" - -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(ButtonTuple,"ButtonTuple") -ButtonTuple::ButtonTuple(ButtonType type, QWidget *parent) - : QWidget(parent) - , m_leftButton(new QPushButton(this)) - , m_rightButton(nullptr) -{ - setAccessibleName("ButtonTuple"); - initUI(); - setButtonType(type); -} - -void ButtonTuple::setButtonType(const ButtonType type) -{ - if (m_rightButton) { - layout()->removeWidget(m_rightButton); - m_rightButton->setVisible(false); - m_rightButton->setParent(nullptr); - m_rightButton->deleteLater(); - } - switch (type) { - case Save: - m_rightButton = new DSuggestButton(this); - break; - case Delete: - m_rightButton = new DWarningButton(this); - break; - case Normal: - Q_FALLTHROUGH(); - default: - m_rightButton = new DPushButton(this); - break; - } - layout()->addWidget(m_rightButton); - connect(m_rightButton, &QPushButton::clicked, this, &ButtonTuple::rightButtonClicked); -} - -QPushButton *ButtonTuple::leftButton() -{ - return m_leftButton; -} - -QPushButton *ButtonTuple::rightButton() -{ - return m_rightButton; -} - -void ButtonTuple::removeSpacing() -{ - if (!this->layout()) - return; - //第二个控件为space - if (this->layout()->itemAt(1)) { - this->layout()->removeItem(this->layout()->itemAt(1)); - } -} - -void ButtonTuple::initUI() -{ - QHBoxLayout *layout = new QHBoxLayout; - layout->setMargin(0); - layout->setSpacing(0); - layout->addWidget(m_leftButton); - layout->addSpacing(10); - // m_rightButton在setButtonType中初始化 - setLayout(layout); - - connect(m_leftButton, &QPushButton::clicked, this, &ButtonTuple::leftButtonClicked); -} diff --git a/dcc-old/src/widgets/comboxwidget.cpp b/dcc-old/src/widgets/comboxwidget.cpp deleted file mode 100644 index fa83f95bdc..0000000000 --- a/dcc-old/src/widgets/comboxwidget.cpp +++ /dev/null @@ -1,184 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/comboxwidget.h" -#include "widgets/utils.h" -#include "widgets/accessibleinterface.h" - -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(ComboxWidget,"ComboxWidget") -ComboxWidget::ComboxWidget(QFrame *parent) - : ComboxWidget(new QLabel, parent) -{ - -} - -ComboxWidget::ComboxWidget(const QString &title, QFrame *parent) - : ComboxWidget(new QLabel(title), parent) -{ - -} - -ComboxWidget::ComboxWidget(QWidget *widget, QFrame *parent) - : SettingsItem(parent) - , m_leftWidget(widget) - , m_switchComboBox(new AlertComboBox(this)) - , m_str("") -{ - // FIXME: 默认统一控件高度 - setFixedHeight(ComboxWidgetHeight); - QHBoxLayout *mainLayout = new QHBoxLayout; - m_titleLabel = qobject_cast(m_leftWidget); - if (m_titleLabel) { - m_str = m_titleLabel->text(); - } - mainLayout->addWidget(m_leftWidget, 0, Qt::AlignVCenter); - mainLayout->setStretchFactor(m_leftWidget,3); - mainLayout->addWidget(m_switchComboBox, 0, Qt::AlignVCenter); - mainLayout->setStretchFactor(m_switchComboBox,7); - mainLayout->setContentsMargins(10, 0, 10, 0); - - m_leftWidget->setFixedWidth(ComboxTitleWidth); - setLayout(mainLayout); - - connect(m_switchComboBox, static_cast(&QComboBox::currentIndexChanged), this, &ComboxWidget::onIndexChanged); - connect(m_switchComboBox, &QComboBox::currentTextChanged, this, &ComboxWidget::onSelectChanged); - connect(m_switchComboBox, &QComboBox::currentTextChanged, this, [this] { - Q_EMIT dataChanged(m_switchComboBox->currentData()); - }); -} - -void ComboxWidget::setComboxOption(const QStringList &options) -{ - m_switchComboBox->blockSignals(true); - m_switchComboBox->clear(); - for (QString item : options) { - m_switchComboBox->addItem(item); - } - m_switchComboBox->blockSignals(false); -} - -void ComboxWidget::setCurrentText(const QString &curText) -{ - m_switchComboBox->blockSignals(true); - m_switchComboBox->setCurrentText(curText); - m_switchComboBox->blockSignals(false); -} - -void ComboxWidget::setCurrentIndex(const int index) -{ - m_switchComboBox->blockSignals(true); - m_switchComboBox->setCurrentIndex(index); - m_switchComboBox->blockSignals(false); -} - -void ComboxWidget::setTitle(const QString &title) -{ - QLabel *label = qobject_cast(m_leftWidget); - if (label) { - label->setWordWrap(true); - label->setText(title); - m_str = title; - } - - setAccessibleName(m_str); -} - -AlertComboBox *ComboxWidget::comboBox() -{ - return m_switchComboBox; -} - -void ComboxWidget::mouseReleaseEvent(QMouseEvent *event) -{ - if (!m_switchComboBox->geometry().contains(event->pos())) { - Q_EMIT clicked(); - } - - return SettingsItem::mouseReleaseEvent(event); -} - -void ComboxWidget::resizeEvent(QResizeEvent *event) -{ - Q_UNUSED(event); - if (event->type() == QEvent::Resize) { - if (m_titleLabel) { - QFontMetrics fontMetrics(m_titleLabel->font()); - int fontSize = fontMetrics.horizontalAdvance(m_str); - if (fontSize > m_titleLabel->width()) { - m_titleLabel->setText(fontMetrics.elidedText(m_str, Qt::ElideRight, m_titleLabel->width())); - - m_titleLabel->setToolTip(m_str); - } else { - m_titleLabel->setText(m_str); - m_titleLabel->setToolTip(""); - } - } - } -} -SET_FORM_ACCESSIBLE(AlertComboBox,"AlertComboBox") -/** - * @brief 错误提示下拉框 - * @param parent - */ -AlertComboBox::AlertComboBox(QWidget *parent) - : QComboBox (parent) - , m_isWarning(false) -{ - installEventFilter(this); - connect(this, &AlertComboBox::currentTextChanged, this, &AlertComboBox::onValueChange); -} - -AlertComboBox::~AlertComboBox() -{ -} - -void AlertComboBox::setIsWarning(bool isWarning) -{ - m_isWarning = isWarning; - update(); -} - -bool AlertComboBox::isWarning() -{ - return m_isWarning; -} - -bool AlertComboBox::eventFilter(QObject *o, QEvent *e) -{ - if (e->type() == QEvent::Type::MouseButtonPress) { - Q_EMIT clicked(); - } - return QComboBox::eventFilter(o, e); -} - -void AlertComboBox::onValueChange(const QString &text) -{ - if (!m_isWarning) - return; - - if (!text.isEmpty()) - setIsWarning(false); -} - -void AlertComboBox::paintEvent(QPaintEvent *e) -{ - QComboBox::paintEvent(e); - if (m_isWarning) { - QPainter painter(this); - painter.save(); - painter.setPen(Qt::NoPen); - painter.setBrush(QColor(241, 57, 50, qRound(0.15 * 255))); - QRect r = rect().adjusted(2,2,-2,-2); - painter.drawRoundedRect(r, 8, 8); - painter.restore(); - } -} diff --git a/dcc-old/src/widgets/dccdbusinterface.cpp b/dcc-old/src/widgets/dccdbusinterface.cpp deleted file mode 100644 index b1f33f459a..0000000000 --- a/dcc-old/src/widgets/dccdbusinterface.cpp +++ /dev/null @@ -1,214 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/dccdbusinterface.h" -#include "dccdbusinterface_p.h" - -#include -#include -#include -#include -#include -#include -#include - -const QString DBusService = QStringLiteral("org.freedesktop.DBus"); -const QString DBusPath = QStringLiteral("/org/freedesktop/DBus"); -const QString DBusInterface = QStringLiteral("org.freedesktop.DBus"); -const QString NameOwnerChanged = QStringLiteral("NameOwnerChanged"); - -const QString PropertiesInterface = QStringLiteral("org.freedesktop.DBus.Properties"); -const QString PropertiesChanged = QStringLiteral("PropertiesChanged"); -const static char *PropertyName = "propname"; - -using namespace DCC_NAMESPACE; - -DCCDBusInterfacePrivate::DCCDBusInterfacePrivate(DCCDBusInterface *interface) - : QObject(interface) - , m_parent(nullptr) - , m_serviceValid(false) - , q_ptr(interface) -{ -} - -void DCCDBusInterfacePrivate::init(QObject *parent) -{ - Q_Q(DCCDBusInterface); - m_parent = parent; - QDBusMessage message = QDBusMessage::createMethodCall(DBusService, DBusPath, DBusInterface, "NameHasOwner"); - message << q->service(); - q->connection().callWithCallback(message, this, SLOT(onDBusNameHasOwner(bool))); - - QStringList argumentMatch; - argumentMatch << q->interface(); - q->connection().connect(q->service(), q->path(), PropertiesInterface, PropertiesChanged, argumentMatch, QString(), this, SLOT(onPropertiesChanged(QString, QVariantMap, QStringList))); -} - -QVariant DCCDBusInterfacePrivate::demarshall(const QMetaProperty &metaProperty, const QVariant &value) -{ - if (value.userType() == metaProperty.userType()) - return value; - - QVariant result = QVariant(metaProperty.userType(), nullptr); - if (value.userType() == qMetaTypeId()) { - QDBusArgument dbusArg = value.value(); - QDBusMetaType::demarshall(dbusArg, metaProperty.userType(), result.data()); - } - - return result; -} - -QVariant DCCDBusInterfacePrivate::updateProp(const char *propname, const QVariant &value) -{ - QVariant result = value; - const QMetaObject *metaObj = m_parent->metaObject(); - int i = metaObj->indexOfProperty(propname); - if (i != -1) { - QMetaProperty metaProperty = metaObj->property(i); - result = demarshall(metaProperty, value); - m_propertyMap.insert(propname, result); - QMetaObject::invokeMethod(m_parent, propname + QString("Changed").toLatin1(), Qt::DirectConnection, QGenericArgument(result.typeName(), result.data())); - } - - return result; -} - -void DCCDBusInterfacePrivate::initDBusConnection() -{ - Q_Q(DCCDBusInterface); - if (q->path().isEmpty() || q->interface().isEmpty()) { - qWarning() << "not valid DBus:" << q->service() << q->path() << q->interface() << q->connection().name(); - return; - } - QDBusConnection connection = q->connection(); - QStringList signalList; - QDBusInterface inter(q->service(), q->path(), q->interface(), connection); - const QMetaObject *meta = inter.metaObject(); - for (int i = meta->methodOffset(); i < meta->methodCount(); ++i) { - const QMetaMethod &method = meta->method(i); - if (method.methodType() == QMetaMethod::Signal) { - signalList << method.methodSignature(); - } - } - const QMetaObject *parentMeta = m_parent->metaObject(); - for (const QString &signal : signalList) { - int i = parentMeta->indexOfSignal(QMetaObject::normalizedSignature(signal.toLatin1())); - if (i != -1) { - const QMetaMethod &parentMethod = parentMeta->method(i); - connection.connect(q->service(), q->path(), q->interface(), parentMethod.name(), m_parent, QT_STRINGIFY(QSIGNAL_CODE) + parentMethod.methodSignature()); - } - } -} - -void DCCDBusInterfacePrivate::onPropertiesChanged(const QString &interfaceName, const QVariantMap &changedProperties, const QStringList &invalidatedProperties) -{ - Q_UNUSED(interfaceName) - Q_UNUSED(invalidatedProperties) - for (QVariantMap::const_iterator it = changedProperties.cbegin(); it != changedProperties.cend(); ++it) { - updateProp((it.key() + m_suffix).toLatin1(), it.value()); - } -} - -void DCCDBusInterfacePrivate::onAsyncPropertyFinished(QDBusPendingCallWatcher *w) -{ - QDBusPendingReply reply = *w; - if (!reply.isError()) { - updateProp(w->property(PropertyName).toString().toLatin1(), reply.value()); - } - w->deleteLater(); -} - -void DCCDBusInterfacePrivate::setServiceValid(bool valid) -{ - if (m_serviceValid != valid) { - Q_Q(DCCDBusInterface); - m_serviceValid = valid; - Q_EMIT q->serviceValidChanged(m_serviceValid); - } -} - -void DCCDBusInterfacePrivate::onDBusNameHasOwner(bool valid) -{ - Q_Q(DCCDBusInterface); - setServiceValid(valid); - if (valid) - initDBusConnection(); - else - q->connection().connect(DBusService, DBusPath, DBusInterface, NameOwnerChanged, this, SLOT(onDBusNameOwnerChanged(QString, QString, QString))); -} - -void DCCDBusInterfacePrivate::onDBusNameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOWner) -{ - Q_Q(DCCDBusInterface); - if (name == q->service() && oldOwner.isEmpty()) { - initDBusConnection(); - q->connection().disconnect(DBusService, DBusPath, DBusInterface, NameOwnerChanged, this, SLOT(onDBusNameOwnerChanged(QString, QString, QString))); - setServiceValid(true); - } else if (name == q->service() && newOWner.isEmpty()) - setServiceValid(false); -} -////////////////////////////////////////////////////////// -DCCDBusInterface::DCCDBusInterface(const QString &service, const QString &path, const QString &interface, const QDBusConnection &connection, QObject *parent) - : QDBusAbstractInterface(service, path, interface.toLatin1(), connection, parent) - , DCC_INIT_PRIVATE(DCCDBusInterface) -{ - Q_D(DCCDBusInterface); - d->init(parent); -} - -DCCDBusInterface::~DCCDBusInterface() -{ -} - -bool DCCDBusInterface::serviceValid() const -{ - Q_D(const DCCDBusInterface); - return d->m_serviceValid; -} - -QString DCCDBusInterface::suffix() const -{ - Q_D(const DCCDBusInterface); - return d->m_suffix; -} - -void DCCDBusInterface::setSuffix(const QString &suffix) -{ - Q_D(DCCDBusInterface); - d->m_suffix = suffix; -} - -inline QString originalPropname(const char *propname, QString suffix) -{ - QString propStr(propname); - return propStr.left(propStr.length() - suffix.length()); -} - -QVariant DCCDBusInterface::property(const char *propname) -{ - Q_D(DCCDBusInterface); - if (d->m_propertyMap.contains(propname)) - return d->m_propertyMap.value(propname); - - QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), PropertiesInterface, QStringLiteral("Get")); - msg << interface() << originalPropname(propname, d->m_suffix); - QDBusPendingReply prop = connection().asyncCall(msg); - if (prop.value().isValid()) - return d->updateProp(propname, prop.value()); - - QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(prop, this); - watcher->setProperty(PropertyName, propname); - connect(watcher, &QDBusPendingCallWatcher::finished, d, &DCCDBusInterfacePrivate::onAsyncPropertyFinished); - if (d->m_propertyMap.contains(propname)) - return d->m_propertyMap.value(propname); - - return QVariant(); -} - -void DCCDBusInterface::setProperty(const char *propname, const QVariant &value) -{ - Q_D(const DCCDBusInterface); - QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), PropertiesInterface, QStringLiteral("Set")); - msg << interface() << originalPropname(propname, d->m_suffix) << QVariant::fromValue(QDBusVariant(value)); - connection().asyncCall(msg); -} diff --git a/dcc-old/src/widgets/dccdbusinterface_p.h b/dcc-old/src/widgets/dccdbusinterface_p.h deleted file mode 100644 index df680bb681..0000000000 --- a/dcc-old/src/widgets/dccdbusinterface_p.h +++ /dev/null @@ -1,43 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#ifndef DCCDBUSINTERFACE_P_H -#define DCCDBUSINTERFACE_P_H - -#include "widgets/dccdbusinterface.h" - -class QDBusPendingCallWatcher; - -namespace DCC_NAMESPACE { - -class DCCDBusInterfacePrivate : public QObject -{ - Q_OBJECT - -public: - explicit DCCDBusInterfacePrivate(DCCDBusInterface *interface); - void init(QObject *parent); - QVariant demarshall(const QMetaProperty &metaProperty, const QVariant &value); - QVariant updateProp(const char *propname, const QVariant &value); - void initDBusConnection(); - void setServiceValid(bool valid); - -private Q_SLOTS: - void onPropertiesChanged(const QString &interfaceName, const QVariantMap &changedProperties, const QStringList &invalidatedProperties); - void onAsyncPropertyFinished(QDBusPendingCallWatcher *w); - void onDBusNameHasOwner(bool valid); - void onDBusNameOwnerChanged(const QString &name, const QString &oldOwner, const QString &newOWner); - -public: - QObject *m_parent; - QString m_suffix; - QVariantMap m_propertyMap; - bool m_serviceValid; - - DCCDBusInterface *q_ptr; - Q_DECLARE_PUBLIC(DCCDBusInterface) -}; - -} - -#endif // DCCDBUSINTERFACE_P_H diff --git a/dcc-old/src/widgets/dcclistview.cpp b/dcc-old/src/widgets/dcclistview.cpp deleted file mode 100644 index a41d009c16..0000000000 --- a/dcc-old/src/widgets/dcclistview.cpp +++ /dev/null @@ -1,28 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/dcclistview.h" -#include "widgets/accessibleinterface.h" - -#include - -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(DCCListView, "DCCListView"); -DCCListView::DCCListView(QWidget *parent) - : DTK_WIDGET_NAMESPACE::DListView(parent) -{ - setEditTriggers(QAbstractItemView::NoEditTriggers); - setBackgroundType(DTK_WIDGET_NAMESPACE::DStyledItemDelegate::BackgroundType::ClipCornerBackground); - setSelectionMode(QAbstractItemView::NoSelection); - setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); - setSpacing(1); -} - -void DCCListView::updateGeometries() -{ - DListView::updateGeometries(); - QRect r = rectForIndex(model()->index(model()->rowCount() - 1, 0)); - QMargins margins = viewportMargins(); - setFixedHeight(r.y() + r.height() + margins.top() + margins.bottom() + 1); -} diff --git a/dcc-old/src/widgets/dccslider.cpp b/dcc-old/src/widgets/dccslider.cpp deleted file mode 100644 index 1b179e6c72..0000000000 --- a/dcc-old/src/widgets/dccslider.cpp +++ /dev/null @@ -1,156 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/dccslider.h" -#include "widgets/accessibleinterface.h" - -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -//SET_SLIDER_ACCESSIBLE(DCCSlider,"DCCSlider") -DCCSlider::DCCSlider(DCCSlider::SliderType type, QWidget *parent) - : DSlider(Qt::Horizontal, parent) - , m_separateValue(0) -{ - setType(type); - DSlider::slider()->setTracking(false); -} - -DCCSlider::DCCSlider(Qt::Orientation orientation, QWidget *parent) - : DSlider(orientation, parent) -{ - DSlider::slider()->setTracking(false); -} - -void DCCSlider::setType(DCCSlider::SliderType type) -{ - switch (type) { - case Vernier: setProperty("handleType", "Vernier"); break; - case Progress: setProperty("handleType", "None"); break; - default: setProperty("handleType", "Normal"); break; - } -} - -QSlider *DCCSlider::qtSlider() -{ - return DSlider::slider(); -} - -void DCCSlider::setRange(int min, int max) -{ - setMinimum(min); - setMaximum(max); -} - -void DCCSlider::setTickPosition(QSlider::TickPosition tick) -{ - tickPosition = tick; -} - -void DCCSlider::setTickInterval(int ti) -{ - DSlider::slider()->setTickInterval(ti); -} - -void DCCSlider::setSliderPosition(int Position) -{ - DSlider::slider()->setSliderPosition(Position); -} - -void DCCSlider::setAnnotations(const QStringList &annotations) -{ - switch (tickPosition) { - case QSlider::TicksLeft: - setLeftTicks(annotations); - break; - case QSlider::TicksRight: - setRightTicks(annotations); - break; - default: - break; - } -} - -void DCCSlider::setOrientation(Qt::Orientation orientation) -{ - Q_UNUSED(orientation) -} - -void DCCSlider::setSeparateValue(int value) -{ - m_separateValue = value; -} - -void DCCSlider::wheelEvent(QWheelEvent *e) -{ - e->ignore(); -} - -void DCCSlider::paintEvent(QPaintEvent *e) -{ - Q_UNUSED(e) - - if (m_separateValue <= 0) - return; - - QPainter pa(this); - auto dpa = DPaletteHelper::instance()->palette(this); - QPen penLine = QPen(dpa.color(DPalette::ObviousBackground), 2); - - //超过间隔线后需要更换间隔线颜色为活动色 - if (qtSlider()->value() >= m_separateValue ) { - QPalette pe = this->palette(); - QColor brushColor(pe.color(QPalette::Highlight)); - penLine.setColor(brushColor); - } - - int margin = DStyle::pixelMetric(style(), DStyle::PM_FocusBorderSpacing) + DStyle::pixelMetric(style(), DStyle::PM_FocusBorderSpacing); - int offsetSize = style()->pixelMetric(QStyle::PM_SliderLength, nullptr, this) / 2; - int width = this->qtSlider()->width(); - - width -= 2 * offsetSize + margin * 2; - Qt::Orientation orient = this->orientation(); - QSlider::TickPosition tick = tickPosition; - QSlider* slider = DSlider::slider(); - qreal percentage = (m_separateValue - slider->minimum()) * 1.0 / (slider->maximum() - slider->minimum()); - - pa.setPen(penLine); - int leftIconwidth = 0; - //获取左边声音图标宽度 - QGridLayout *gridLayout = dynamic_cast(this->layout()); - if (!gridLayout) - return; - QLayoutItem* item = gridLayout->itemAtPosition(1, 0); - if (item) { - leftIconwidth = item->geometry().size().width(); - } - - qreal startX = offsetSize + margin + leftIconwidth + this->contentsMargins().left(); - qreal startY = slider->y() + 10; - //分别绘制滑动条上方矩形和下方矩形,避免与滑动条重叠, - //画笔宽为2个像素,设置绘制时矩形高设为3,可达到高度为5的效果 - if (orient == Qt::Horizontal) { - qreal sliderX = percentage * width; - if (slider->value() >= m_separateValue) { - int num = (sliderX + 2) / 3; - qAbs(3 * num + 1 - sliderX) - qAbs(sliderX - (3 * num - 2)) >= 0 ? num : num++; - sliderX = 3 * num - 2; - } else { - //将分割线左、右的滚动条进行比较获取距离最相近的位置,绘制分割线 - sliderX = (slider->maximum() - m_separateValue) * 1.0 * width / slider->maximum(); - int num = (sliderX + 1) / 3; - qAbs(3 * num - sliderX) - qAbs(sliderX - 3 * (num - 1)) >= 0 ? num : num++; - sliderX = width - (3 * num - 1); - } - if (tick == QSlider::TicksAbove || tick == QSlider::TicksBelow || tick == QSlider::NoTicks) { - pa.drawLine(QPointF(startX + sliderX, startY), QPointF(startX + sliderX, startY + 3)); - pa.drawLine(QPointF(startX + sliderX, startY + 9), QPointF(startX + sliderX, startY + 12)); - } - } -} diff --git a/dcc-old/src/widgets/detailinfoitem.cpp b/dcc-old/src/widgets/detailinfoitem.cpp deleted file mode 100644 index 52ab39e228..0000000000 --- a/dcc-old/src/widgets/detailinfoitem.cpp +++ /dev/null @@ -1,128 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/detailinfoitem.h" -#include "src/plugin-update/operation/common.h" -#include "widgets/accessibleinterface.h" - -#include -#include - -#include -#include - -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(DetailInfoItem,"DetailInfoItem"); -DetailInfoItem::DetailInfoItem(QWidget *parent) - : SettingsItem(parent) - , m_dateLabel(new DLabel(this)) - , m_explainTitle(new DLabel(this)) - , m_linkDataLabel(new DLabel(this)) - , m_dataLable(new DLabel(this)) - , m_linkLable(new DLabel(this)) - , m_title(new DLabel(this)) -{ - initUi(); - - connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &DetailInfoItem::onThemeChanged); -} - -void DetailInfoItem::initUi() -{ - QVBoxLayout *mainlayout = new QVBoxLayout; - - mainlayout->setSpacing(0); - mainlayout->setMargin(0); - - QHBoxLayout *hboxlayout = new QHBoxLayout; - - QPalette titleClolrPal; - titleClolrPal.setColor(QPalette::WindowText, QColor(titleColor)); - - QPalette grayColorPal; - grayColorPal.setColor(QPalette::WindowText, QColor(grayColor)); - - m_title->setFixedWidth(220); - DFontSizeManager::instance()->bind(m_title, DFontSizeManager::T7, QFont::DemiBold); - m_title->setForegroundRole(DPalette::TextTitle); - - DFontSizeManager::instance()->bind(m_dateLabel, DFontSizeManager::T8); - m_dateLabel->setForegroundRole(DPalette::TextTips); - - hboxlayout->addWidget(m_title, 0, Qt::AlignLeft | Qt::AlignTop); - hboxlayout->addWidget(m_dateLabel, 0, Qt::AlignRight | Qt::AlignTop); - - DFontSizeManager::instance()->bind(m_dataLable, DFontSizeManager::T8); - m_dataLable->setForegroundRole(DPalette::TextTips); - m_dataLable->setWordWrap(true); - m_dataLable->setOpenExternalLinks(true); - - QHBoxLayout *bomboxlayout = new QHBoxLayout; - m_linkDataLabel->setText(tr("For more details, visit:")); - DFontSizeManager::instance()->bind(m_linkDataLabel, DFontSizeManager::T8); - m_linkDataLabel->setForegroundRole(DPalette::TextTips); - m_linkDataLabel->setMaximumWidth(250); - - m_linkLable->setOpenExternalLinks(true); - DFontSizeManager::instance()->bind(m_linkLable, DFontSizeManager::T8); - m_linkLable->setForegroundRole(DPalette::LinkVisited); - bomboxlayout->addWidget(m_linkDataLabel, 0, Qt::AlignLeft); - bomboxlayout->addWidget(m_linkLable, 10, Qt::AlignLeft); - - m_linkDataLabel->setVisible(false); - m_linkLable->setVisible(false); - - mainlayout->addLayout(hboxlayout); - mainlayout->addSpacing(5); - mainlayout->addWidget(m_dataLable); - mainlayout->addSpacing(5); - mainlayout->addLayout(bomboxlayout); - - setLayout(mainlayout); -} - -void DetailInfoItem::setDate(QString date) -{ - m_dateLabel->clear(); - m_dateLabel->setText(date); -} - -void DetailInfoItem::setTitle(QString title) -{ - m_title->clear(); - m_title->setText(title); -} - -void DetailInfoItem::setExplaintTitle(QString title) -{ - m_explainTitle->clear(); - m_explainTitle->setText(title); -} - -void DetailInfoItem::setLinkData(QString data) -{ - m_linkLable->clear(); - if (data.isEmpty()) { - m_linkDataLabel->setVisible(false); - m_linkLable->setVisible(false); - return; - } - - QString value = QString("%2").arg(data, data); - m_linkLable->setText(value); - m_linkDataLabel->setVisible(true); - m_linkLable->setVisible(true); -} - -void DetailInfoItem::setDetailData(QString data) -{ - m_dataLable->clear(); - m_dataLable->setText(htmlToCorrectColor(data)); -} - -void DetailInfoItem::onThemeChanged() -{ - m_dataLable->setText(htmlToCorrectColor(m_dataLable->text())); -} \ No newline at end of file diff --git a/dcc-old/src/widgets/horizontalmodule.cpp b/dcc-old/src/widgets/horizontalmodule.cpp deleted file mode 100644 index e363c1e5fd..0000000000 --- a/dcc-old/src/widgets/horizontalmodule.cpp +++ /dev/null @@ -1,206 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/horizontalmodule.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; - -namespace DCC_NAMESPACE { -class HorizontalModulePrivate -{ -public: - explicit HorizontalModulePrivate(HorizontalModule *object) - : q_ptr(object) - , m_stretchType(HorizontalModule::NoStretch) - , m_spacing(-1) - { - } - void insertModule(ModuleObject *const module, int stretch, Qt::Alignment alignment) - { - m_mapModules.insert(module, { stretch, alignment }); - } - void removeModule(ModuleObject *const module) - { - m_mapModules.remove(module); - } - QPair layoutParam(ModuleObject *const module) - { - if (m_mapModules.contains(module)) - return m_mapModules.value(module); - return { 0, Qt::Alignment() }; - } - - QWidget *page() - { - Q_Q(HorizontalModule); - QWidget *w = new QWidget(); - m_mapWidget.clear(); - QObject::connect(w, &QObject::destroyed, q, [this]() { m_mapWidget.clear(); }); - - m_layout = new QHBoxLayout(w); - m_layout->setMargin(0); - m_layout->setSpacing(m_spacing); - if (m_stretchType & HorizontalModule::LeftStretch) - m_layout->addStretch(); - for (auto &&tmpChild : q->childrens()) { - QWidget *childPage = tmpChild->activePage(); - if (childPage) { - QPair param = layoutParam(tmpChild); - m_layout->addWidget(childPage, param.first, param.second); - m_mapWidget.insert(tmpChild, childPage); - } - } - if (m_stretchType & HorizontalModule::RightStretch) - m_layout->addStretch(); - - // 监听子项的添加、删除、状态变更,动态的更新界面 - QObject::connect(q, &ModuleObject::insertedChild, w, [this](ModuleObject *const childModule) { onAddChild(childModule); }); - QObject::connect(q, &ModuleObject::removedChild, w, [this](ModuleObject *const childModule) { onRemoveChild(childModule); }); - QObject::connect(q, &ModuleObject::childStateChanged, w, [this](ModuleObject *const tmpChild, uint32_t flag, bool state) { - if (ModuleObject::IsHiddenFlag(flag)) { - if (state) - onRemoveChild(tmpChild); - else - onAddChild(tmpChild); - } - }); - return w; - } - -private: - void onRemoveChild(DCC_NAMESPACE::ModuleObject *const childModule) - { - if (m_mapWidget.contains(childModule)) { - QWidget *w = m_mapWidget.value(childModule); - int index = m_layout->indexOf(w); - if (-1 != index) { - w->deleteLater(); - delete m_layout->takeAt(index); - m_mapWidget.remove(childModule); - return; - } - } - } - void onAddChild(DCC_NAMESPACE::ModuleObject *const childModule) - { - if (ModuleObject::IsHidden(childModule) || m_mapWidget.contains(childModule)) - return; - - Q_Q(HorizontalModule); - bool isExtra = childModule->extra(); - int index = (m_stretchType & HorizontalModule::LeftStretch) ? 1 : 0; - for (auto &&child : q->childrens()) { - if (child == childModule) - break; - if (!ModuleObject::IsHidden(child) && child->extra() == isExtra) - index++; - } - auto newPage = childModule->activePage(); - if (newPage) { - QPair param = layoutParam(childModule); - m_layout->insertWidget(index, newPage, param.first, param.second); - m_mapWidget.insert(childModule, newPage); - } - } - -public: - HorizontalModule *q_ptr; - Q_DECLARE_PUBLIC(HorizontalModule) - QMap> m_mapModules; - QMap m_mapWidget; - QHBoxLayout *m_layout; - HorizontalModule::StretchType m_stretchType; - int m_spacing; -}; -} - -HorizontalModule::HorizontalModule(const QString &name, const QString &displayName, QObject *parent) - : ModuleObject(name, displayName, parent) - , DCC_INIT_PRIVATE(HorizontalModule) -{ -} - -HorizontalModule::~HorizontalModule() -{ -} - -void HorizontalModule::setStretchType(StretchType stretchType) -{ - Q_D(HorizontalModule); - d->m_stretchType = stretchType; -} - -void HorizontalModule::setSpacing(const int spacing) -{ - Q_D(HorizontalModule); - d->m_spacing = spacing; -} - -void HorizontalModule::appendChild(ModuleObject *const module) -{ - appendChild(module, 0, Qt::Alignment()); -} - -void HorizontalModule::insertChild(QList::iterator before, ModuleObject *const module) -{ - insertChild(before, module, 0, Qt::Alignment()); -} - -void HorizontalModule::insertChild(const int index, ModuleObject *const module) -{ - insertChild(index, module, 0, Qt::Alignment()); -} - -void HorizontalModule::removeChild(ModuleObject *const module) -{ - Q_D(HorizontalModule); - d->removeModule(module); - ModuleObject::removeChild(module); -} - -void HorizontalModule::removeChild(const int index) -{ - Q_D(HorizontalModule); - d->removeModule(children(index)); - ModuleObject::removeChild(index); -} - -void HorizontalModule::appendChild(ModuleObject *const module, int stretch, Qt::Alignment alignment) -{ - if (childrens().contains(module)) - return; - - Q_D(HorizontalModule); - d->insertModule(module, stretch, alignment); - ModuleObject::appendChild(module); -} - -void HorizontalModule::insertChild(QList::iterator before, ModuleObject *const module, int stretch, Qt::Alignment alignment) -{ - if (childrens().contains(module)) - return; - - Q_D(HorizontalModule); - d->insertModule(module, stretch, alignment); - ModuleObject::insertChild(before, module); -} - -void HorizontalModule::insertChild(const int index, ModuleObject *const module, int stretch, Qt::Alignment alignment) -{ - if (childrens().contains(module)) - return; - - Q_D(HorizontalModule); - d->insertModule(module, stretch, alignment); - ModuleObject::insertChild(index, module); -} - -QWidget *HorizontalModule::page() -{ - Q_D(HorizontalModule); - return d->page(); -} diff --git a/dcc-old/src/widgets/itemmodule.cpp b/dcc-old/src/widgets/itemmodule.cpp deleted file mode 100644 index aa59780f92..0000000000 --- a/dcc-old/src/widgets/itemmodule.cpp +++ /dev/null @@ -1,152 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/itemmodule.h" - -#include -#include -#include -#include -#include -#include - -#include - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -namespace DCC_NAMESPACE { -class ItemModulePrivate -{ -public: - explicit ItemModulePrivate(ItemModule *object) - : q_ptr(object) - , m_callback(nullptr) - , m_background(false) - , m_wordWrap(true) - , m_isTitle(false) - , m_leftVisible(true) - , m_clickable(false) - { - } - void setCallback(std::function callback) - { - m_callback = callback; - } - -public: - ItemModule *q_ptr; - std::function m_callback; - bool m_background; - bool m_wordWrap; - bool m_isTitle; - bool m_leftVisible; - bool m_clickable; - Q_DECLARE_PUBLIC(ItemModule) -}; -} - -ItemModule::ItemModule(QObject *parent) - : ModuleObject(parent) - , DCC_INIT_PRIVATE(ItemModule) -{ -} - -ItemModule::ItemModule(const QString &name, const QString &displayName, bool isTitle) - : ItemModule(nullptr) -{ - setName(name); - setDisplayName(displayName); - setTitleItem(isTitle); -} - -ItemModule::~ItemModule() -{ -} - -void ItemModule::setTitleItem(bool isTitle) -{ - Q_D(ItemModule); - d->m_isTitle = isTitle; -} - -void ItemModule::setBackground(bool has) -{ - Q_D(ItemModule); - d->m_background = has; -} - -void ItemModule::setWordWrap(bool on) -{ - Q_D(ItemModule); - d->m_wordWrap = on; -} - -bool ItemModule::wordWrap() const -{ - Q_D(const ItemModule); - return d->m_wordWrap; -} - -void ItemModule::setLeftVisible(bool visible) -{ - Q_D(ItemModule); - d->m_leftVisible = visible; -} - -bool ItemModule::clickable() const -{ - Q_D(const ItemModule); - return d->m_clickable; -} - -void ItemModule::setClickable(const bool clickable) -{ - Q_D(ItemModule); - d->m_clickable = clickable; -} - -QWidget *ItemModule::page() -{ - Q_D(ItemModule); - QWidget *ret = nullptr; - if (d->m_callback) - ret = d->m_callback(); - - if (d->m_leftVisible || d->m_background || d->m_clickable) { - SettingsItem *w = new SettingsItem(); - w->setAccessibleName(name()); - w->setClickable(d->m_clickable); - if (d->m_clickable) - connect(w, &SettingsItem::clicked, this, &ItemModule::clicked); - if (d->m_background) - w->addBackground(); - QHBoxLayout *layout = new QHBoxLayout(w); - if (d->m_leftVisible) { - DLabel *leftWidget = new DLabel(displayName()); - leftWidget->setAccessibleName(name()); - leftWidget->setWordWrap(d->m_wordWrap); - if (d->m_isTitle) { - leftWidget->setForegroundRole(DPalette::TextTitle); - DFontSizeManager::instance()->bind(leftWidget, DFontSizeManager::T5, QFont::DemiBold); - layout->addWidget(leftWidget, 0, Qt::AlignVCenter); - layout->setContentsMargins(8, 6, 8, 6); - if (ret) - layout->addWidget(ret, 0, Qt::AlignVCenter | Qt::AlignRight); - } else { - layout->addWidget(leftWidget, 3, Qt::AlignVCenter); - if (ret) - layout->addWidget(ret, 7, Qt::AlignVCenter); - } - } else if (ret) { - layout->addWidget(ret); - } - ret = w; - } - return ret; -} - -void ItemModule::setCallback(std::function callback) -{ - Q_D(ItemModule); - d->setCallback(callback); -} diff --git a/dcc-old/src/widgets/lineeditwidget.cpp b/dcc-old/src/widgets/lineeditwidget.cpp deleted file mode 100644 index ae98c51af9..0000000000 --- a/dcc-old/src/widgets/lineeditwidget.cpp +++ /dev/null @@ -1,172 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/lineeditwidget.h" -#include "widgets/accessibleinterface.h" - -#include -#include - -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; - -SET_FORM_ACCESSIBLE(ErrorTip,"ErrorTip"); -ErrorTip::ErrorTip(QWidget *parent) : - DArrowRectangle(DArrowRectangle::ArrowTop, parent), - m_label(new QLabel) -{ - m_label->setObjectName("New_Account_errorTip"); - m_label->setAccessibleName(m_label->objectName()); - m_label->setStyleSheet("padding: 5px 10px; color: #f9704f"); - m_label->setWordWrap(true); - setContent(m_label); -} - -void ErrorTip::setText(QString text) -{ - m_label->setText(text); - m_label->setAccessibleDescription(text); - m_label->adjustSize(); - resizeWithContent(); -} - -void ErrorTip::clear() -{ - m_label->clear(); - hide(); -} - -bool ErrorTip::isEmpty() const -{ - return m_label->text().isEmpty(); -} - -void ErrorTip::appearIfNotEmpty() -{ - if (!isEmpty() && !isVisible()) - QWidget::show(); -} - -LineEditWidget::LineEditWidget(QFrame *parent) - : SettingsItem(parent) - , m_title(new QLabel) - , m_edit(new DLineEdit) - , m_errTip(new ErrorTip(this)) -{ - - m_title->setAccessibleName("title"); - m_title->setFixedWidth(110); - m_edit->setContextMenuPolicy(Qt::NoContextMenu); - m_edit->setAccessibleName("LineEditWidget"); - - m_mainLayout = new QHBoxLayout; - m_mainLayout->addWidget(m_title, 0, Qt::AlignVCenter); - m_mainLayout->addWidget(m_edit, 0, Qt::AlignVCenter); - - setLayout(m_mainLayout); - setObjectName("LineEditWidget"); - - connect(m_edit, &DLineEdit::textChanged, this, &LineEditWidget::hideAlertMessage); -} - -LineEditWidget::LineEditWidget(bool isPasswordMode, QWidget *parent) - : SettingsItem(parent) - , m_title(new QLabel) - , m_errTip(new ErrorTip(this)) -{ - if (isPasswordMode) { - m_edit = new DPasswordEdit; - m_edit->setCopyEnabled(false); - m_edit->setCutEnabled(false); - } else { - m_edit = new DLineEdit; - } - m_title->setFixedWidth(110); - m_edit->setContextMenuPolicy(Qt::NoContextMenu); - - m_mainLayout = new QHBoxLayout; - m_mainLayout->addWidget(m_title, 0, Qt::AlignVCenter); - m_mainLayout->addWidget(m_edit, 0, Qt::AlignVCenter); - - setLayout(m_mainLayout); - setObjectName("LineEditWidget"); - - connect(m_edit, &DLineEdit::textChanged, this, &LineEditWidget::hideAlertMessage); -} - -QLineEdit *LineEditWidget::textEdit() const -{ - return m_edit->lineEdit(); -} - -QString LineEditWidget::text() const -{ - return m_edit->text(); -} - -void LineEditWidget::setTitleVisible(const bool visible) -{ - m_title->setVisible(visible); -} - -void LineEditWidget::addRightWidget(QWidget *widget) -{ - m_mainLayout->addWidget(widget); -} - -void LineEditWidget::setReadOnly(const bool state) -{ - m_edit->lineEdit()->setReadOnly(state); -} - -void LineEditWidget::setIsErr(const bool err) -{ - dTextEdit()->setAlert(err); -} - -void LineEditWidget::showAlertMessage(const QString &message) -{ - if (message.isEmpty()) return; - - const QPoint &p = m_edit->mapToGlobal(m_edit->rect().bottomLeft()); - m_errTip->setText(message); - m_errTip->show(p.x(), p.y()); -} - -void LineEditWidget::hideAlertMessage() -{ - setIsErr(false); - m_errTip->hide(); -} - -void LineEditWidget::setTitle(const QString &title) -{ - m_title->setText(title); - m_title->setWordWrap(true); - - setAccessibleName(title); - m_edit->setAccessibleName(title); -} - -void LineEditWidget::setText(const QString &text) -{ - m_edit->setText(text); -} - -void LineEditWidget::setPlaceholderText(const QString &text) -{ - m_edit->lineEdit()->setPlaceholderText(text); -} - -void LineEditWidget::mousePressEvent(QMouseEvent *e) -{ - SettingsItem::mousePressEvent(e); - - if (e->button() != Qt::LeftButton) { - return; - } - - m_edit->setFocus(); -} diff --git a/dcc-old/src/widgets/listviewmodule.cpp b/dcc-old/src/widgets/listviewmodule.cpp deleted file mode 100644 index 6f897bf209..0000000000 --- a/dcc-old/src/widgets/listviewmodule.cpp +++ /dev/null @@ -1,56 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/listviewmodule.h" - -#include -#include -#include - -#include - -using namespace DCC_NAMESPACE; - -namespace DCC_NAMESPACE { -class ListViewModulePrivate -{ -public: - explicit ListViewModulePrivate(ListViewModule *object) - : q_ptr(object) - , m_model(new ModuleListModel(object)) - { - } - -public: - ListViewModule *q_ptr; - Q_DECLARE_PUBLIC(ListViewModule) - ModuleListModel *m_model; -}; -} - -ListViewModule::ListViewModule(const QString &name, const QString &displayName, QObject *parent) - : ModuleObject(name, displayName, parent) - , DCC_INIT_PRIVATE(ListViewModule) -{ -} - -ListViewModule::~ListViewModule() -{ -} - -QWidget *ListViewModule::page() -{ - Q_D(ListViewModule); - DCCListView *view = new DCCListView(); - view->setModel(d->m_model); - connect(view, &DCCListView::clicked, this, [this](const QModelIndex &index) { - ModuleObject *module = static_cast(index.internalPointer()); - if (!module || ModuleObject::IsDisabled(module)) - return; - emit clicked(module); - ModuleObjectItem *item = qobject_cast(module); - if (item) - emit item->clicked(); - }); - return view; -} diff --git a/dcc-old/src/widgets/modulelistmodel.cpp b/dcc-old/src/widgets/modulelistmodel.cpp deleted file mode 100644 index e49c96a698..0000000000 --- a/dcc-old/src/widgets/modulelistmodel.cpp +++ /dev/null @@ -1,165 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/modulelistmodel.h" -#include "widgets/moduleobjectitem.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; -namespace DCC_NAMESPACE { -class ModuleListModelPrivate -{ -public: - explicit ModuleListModelPrivate(ModuleListModel *object) - : q_ptr(object) - , m_module(nullptr) - { - } - - void init(ModuleObject *module) - { - m_module = module; - QObject::connect(m_module, &ModuleObject::insertedChild, q_ptr, [this](ModuleObject *const module) { onInsertChild(module); }); - QObject::connect(m_module, &ModuleObject::removedChild, q_ptr, [this](ModuleObject *const module) { onRemovedChild(module); }); - QObject::connect(m_module, &ModuleObject::childStateChanged, q_ptr, [this](ModuleObject *const tmpChild, uint32_t flag, bool state) { - onDataChanged(tmpChild, flag, state); - }); - for (auto &&childModule : m_module->childrens()) { - QObject::connect(childModule, &ModuleObject::moduleDataChanged, q_ptr, [this]() { - ModuleObject *module = qobject_cast(q_ptr->sender()); - int row = m_data.indexOf(module); - QModelIndex i = q_ptr->index(row, 0); - emit q_ptr->dataChanged(i, i); - }); - } - } - - void onInsertChild(ModuleObject *const module) - { - if (ModuleObject::IsHidden(module) || m_data.contains(module)) - return; - QObject::connect(module, &ModuleObject::moduleDataChanged, q_ptr, [this]() { - ModuleObject *module = qobject_cast(q_ptr->sender()); - int row = m_data.indexOf(module); - QModelIndex i = q_ptr->index(row, 0); - emit q_ptr->dataChanged(i, i); - }); - Q_Q(ModuleListModel); - int row = 0; - for (auto &&tmpModule : m_module->childrens()) { - if (tmpModule == module) - break; - row++; - } - q->beginInsertRows(QModelIndex(), row, row); - m_data.insert(row, module); - q->endInsertRows(); - } - void onRemovedChild(ModuleObject *const module) - { - QObject::disconnect(module, nullptr, q_ptr, nullptr); - Q_Q(ModuleListModel); - int row = m_data.indexOf(module); - if (row >= 0 && row < m_data.size()) { - q->beginRemoveRows(QModelIndex(), row, row); - m_data.removeAt(row); - q->endRemoveRows(); - } - } - void onDataChanged(ModuleObject *const module, uint32_t flag, bool state) - { - Q_Q(ModuleListModel); - if (ModuleObject::IsHiddenFlag(flag)) { - if (state) - onRemovedChild(module); - else - onInsertChild(module); - } - int row = m_data.indexOf(module); - QModelIndex i = q->index(row, 0); - emit q->dataChanged(i, i); - } - -public: - ModuleListModel *q_ptr; - Q_DECLARE_PUBLIC(ModuleListModel) - ModuleObject *m_module; - QList m_data; -}; -} - -ModuleListModel::ModuleListModel(ModuleObject *parent) - : QAbstractItemModel(parent) - , DCC_INIT_PRIVATE(ModuleListModel) -{ - Q_D(ModuleListModel); - d->init(parent); -} - -ModuleListModel::~ModuleListModel() -{ -} - -QModelIndex ModuleListModel::index(int row, int column, const QModelIndex &parent) const -{ - Q_UNUSED(parent); - Q_D(const ModuleListModel); - if (row < 0 || row >= d->m_data.size()) - return QModelIndex(); - return createIndex(row, column, d->m_data.at(row)); -} - -QModelIndex ModuleListModel::parent(const QModelIndex &index) const -{ - Q_UNUSED(index); - return QModelIndex(); -} - -int ModuleListModel::rowCount(const QModelIndex &parent) const -{ - Q_D(const ModuleListModel); - if (!parent.isValid()) - return d->m_data.size(); - - return 0; -} - -int ModuleListModel::columnCount(const QModelIndex &parent) const -{ - Q_UNUSED(parent); - return 1; -} - -QVariant ModuleListModel::data(const QModelIndex &index, int role) const -{ - ModuleObject *module = static_cast(index.internalPointer()); - if (!module) - return QVariant(); - - ModuleObjectItem *item = module->getClassID() == ITEM ? qobject_cast(module) : nullptr; - if (item) - return item->data(role); - - switch (role) { - case Qt::DisplayRole: - return module->displayName(); - case Qt::DecorationRole: - return module->icon(); - case Qt::StatusTipRole: - return module->description(); - default: - break; - } - return QVariant(); -} - -Qt::ItemFlags ModuleListModel::flags(const QModelIndex &index) const -{ - Qt::ItemFlags flag = QAbstractItemModel::flags(index); - ModuleObject *module = static_cast(index.internalPointer()); - flag.setFlag(Qt::ItemIsEnabled, !ModuleObject::IsDisabled(module)); - return flag; -} diff --git a/dcc-old/src/widgets/moduleobjectitem.cpp b/dcc-old/src/widgets/moduleobjectitem.cpp deleted file mode 100644 index 4affc993e4..0000000000 --- a/dcc-old/src/widgets/moduleobjectitem.cpp +++ /dev/null @@ -1,167 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/moduleobjectitem.h" - -#include -#include -#include - -#include - -#if DTK_VERSION >= DTK_VERSION_CHECK(5, 6, 0, 0) -# define USE_DCIICON -#endif - -using namespace DCC_NAMESPACE; -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE - -namespace DCC_NAMESPACE { -class ModuleObjectItemPrivate -{ -public: - explicit ModuleObjectItemPrivate(ModuleObjectItem *object) - : q_ptr(object) - , m_item(new DStandardItem()) - { - } - ~ModuleObjectItemPrivate() - { - delete m_item; - } - void setRightIcon(const QIcon &icon, int index = -1) - { - getRightItem(index)->setIcon(icon); - q_ptr->update(); - } - - void setRightText(const QString &text, int index = -1) - { - getRightItem(index)->setText(text); - q_ptr->update(); - } - DViewItemAction *getRightItem(int index) - { - int minCount = index; - if (index < 0) { - minCount = -index; - } - DViewItemActionList actions = m_item->actionList(Qt::RightEdge); - if (actions.size() < minCount) { - DViewItemActionList newActions; - for (auto &&action : actions) { - DViewItemAction *newAction = new DViewItemAction(action->alignment(), action->iconSize(), action->maximumSize(), action->isClickable()); - newAction->setText(action->text()); - newAction->setIcon(action->icon()); -#ifdef USE_DCIICON - newAction->setDciIcon(action->dciIcon()); -#endif - if (static_cast(action->textColorRole()) != -1) { - newAction->setTextColorRole(action->textColorRole()); - } - if (static_cast(action->textColorType()) != -1) { - newAction->setTextColorRole(action->textColorType()); - } - - newActions.append(newAction); - } - - for (int i = minCount - actions.size(); i > 0; --i) { - if (index < 0) - newActions.prepend(new DViewItemAction(Qt::AlignVCenter, QSize(16, 16), QSize(16, 16), false)); - else - newActions.append(new DViewItemAction(Qt::AlignVCenter, QSize(16, 16), QSize(16, 16), false)); - } - m_item->setActionList(Qt::RightEdge, newActions); - } - const DViewItemActionList itemActions = m_item->actionList(Qt::RightEdge); - int itemIndex = index < 0 ? itemActions.size() + index : index; - return itemActions.at(itemIndex); - } - -public: - ModuleObjectItem *q_ptr; - Q_DECLARE_PUBLIC(ModuleObjectItem) - DStandardItem *m_item; -}; -} - -ModuleObjectItem::ModuleObjectItem(const QString &name, const QString &displayName, QObject *parent) - : ModuleObject(name, displayName, parent) - , DCC_INIT_PRIVATE(ModuleObjectItem) -{ -} - -ModuleObjectItem::~ModuleObjectItem() -{ -} - -void ModuleObjectItem::setRightIcon(DStyle::StandardPixmap st, int index) -{ - setRightIcon(DStyle::standardIcon(qApp->style(), st), index); -} - -void ModuleObjectItem::setRightIcon(const QString &icon, int index) -{ - QIcon ico = DIconTheme::findQIcon(icon); - if (ico.isNull()) - ico = QIcon(icon); - - setRightIcon(ico, index); -} - -void ModuleObjectItem::setRightIcon(const QIcon &icon, int index) -{ - Q_D(ModuleObjectItem); - d->setRightIcon(icon, index); -} - -void ModuleObjectItem::setRightText(const QString &text, int index) -{ - Q_D(ModuleObjectItem); - d->setRightText(text, index); -} - -DViewItemAction *ModuleObjectItem::getRightItem(int index) -{ - Q_D(ModuleObjectItem); - return d->getRightItem(index); -} - -void ModuleObjectItem::update() -{ - emit moduleDataChanged(); -} - -void ModuleObjectItem::setData(int role, const QVariant &value) -{ - Q_D(ModuleObjectItem); - switch (role) { - case Qt::DisplayRole: - setDisplayName(value.toString()); - break; - case Qt::DecorationRole: - setIcon(value.value()); - break; - default: - d->m_item->setData(value, role); - break; - } - update(); -} - -QVariant ModuleObjectItem::data(int role) const -{ - Q_D(const ModuleObjectItem); - switch (role) { - case Qt::DisplayRole: - return displayName(); - case Qt::DecorationRole: - return icon(); - default: - return d->m_item->data(role); - break; - } - return QVariant(); -} diff --git a/dcc-old/src/widgets/settingsgroup.cpp b/dcc-old/src/widgets/settingsgroup.cpp deleted file mode 100644 index ce5286d3da..0000000000 --- a/dcc-old/src/widgets/settingsgroup.cpp +++ /dev/null @@ -1,181 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/settingsgroup.h" -#include "widgets/settingsitem.h" -#include "widgets/settingsheaderitem.h" -#include "widgets/utils.h" -#include "widgets/accessibleinterface.h" - -#include -#include - -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(SettingsGroup,"SettingsGroup"); -SettingsGroup::SettingsGroup(QFrame *parent, BackgroundStyle bgStyle) - : QFrame(parent) - , m_layout(nullptr) - , m_headerItem(nullptr) -{ - setBackgroundStyle(bgStyle); -} - -SettingsGroup::SettingsGroup(const QString &title, QFrame *parent) - : SettingsGroup(parent) -{ - setHeaderVisible(!title.isEmpty()); - setAccessibleName(title); - - m_headerItem->setTitle(title); -} - -SettingsGroup::~SettingsGroup() -{ - if (m_headerItem) - m_headerItem->deleteLater(); -} - -void SettingsGroup::setHeaderVisible(const bool visible) -{ - if (visible) { - if (!m_headerItem) - m_headerItem = new SettingsHeaderItem; - insertItem(0, m_headerItem); - } else { - if (m_headerItem) { - m_headerItem->deleteLater(); - m_headerItem = nullptr; - } - } -} - -void SettingsGroup::insertItem(const int index, SettingsItem *item) -{ - if (ItemBackground == m_bgStyle) { - //当SettingsItem 被加入 SettingsGroup 时,为其加入背景 - item->addBackground(); - } - m_layout->insertWidget(index, item); - item->installEventFilter(this); -} - -void SettingsGroup::appendItem(SettingsItem *item) -{ - insertItem(m_layout->count(), item); -} - -void SettingsGroup::appendItem(SettingsItem *item, BackgroundStyle bgStyle) -{ - if ((ItemBackground == bgStyle) && (m_bgStyle == ItemBackground)) { - //当SettingsItem 被加入 SettingsGroup 时,为其加入背景 - item->addBackground(); - } - - m_layout->insertWidget(m_layout->count(), item); - item->installEventFilter(this); -} - -void SettingsGroup::removeItem(SettingsItem *item) -{ - m_layout->removeWidget(item); - item->removeEventFilter(this); - item->deleteLater(); -} - -void SettingsGroup::moveItem(SettingsItem *item, const int index) -{ - const int oldIndex = m_layout->indexOf(item); - if (oldIndex == index) - return; - - m_layout->removeWidget(item); - m_layout->insertWidget(index, item); -} - -void SettingsGroup::setSpacing(const int spacing) -{ - m_layout->setSpacing(spacing); - if (m_bggroup) - m_bggroup->setItemSpacing(spacing); -} - -int SettingsGroup::itemCount() const -{ - return m_layout->count(); -} - -void SettingsGroup::clear() -{ - const int index = m_headerItem ? 1 : 0; - const int count = m_layout->count(); - - for (int i(index); i != count; ++i) { - QLayoutItem *item = m_layout->takeAt(index); - QWidget *w = item->widget(); - w->removeEventFilter(this); - w->setParent(nullptr); - delete item; - w->deleteLater(); - } -} - -SettingsItem *SettingsGroup::getItem(int index) -{ - if (index < 0) - return nullptr; - - if (index < itemCount()) { - return qobject_cast(m_layout->itemAt(index)->widget()); - } - - return nullptr; -} - -void SettingsGroup::insertWidget(QWidget *widget) -{ - m_layout->insertWidget(m_layout->count(), widget); -} - -void SettingsGroup::resizeEvent(QResizeEvent *event) -{ - // TODO: maybe here not resize layout, this fixed is not property enough - QSizePolicy policy; - policy.setVerticalPolicy(QSizePolicy::Expanding); - policy.setHorizontalPolicy(QSizePolicy::Expanding); - setSizePolicy(policy); - - QFrame::resizeEvent(event); -} - -void SettingsGroup::setBackgroundStyle(BackgroundStyle bgStyle) -{ - if (m_layout) - delete m_layout; - if (layout()) - delete layout(); - - - m_layout = new QVBoxLayout; - m_layout->setSpacing(10); - m_layout->setContentsMargins(0, 0, 0, 0); - - QVBoxLayout *vLayout = m_layout; - if (GroupBackground == bgStyle) { - vLayout = new QVBoxLayout; - m_bggroup = new DBackgroundGroup(m_layout); - m_bggroup->setAccessibleName("bggroup"); - m_bggroup->setBackgroundRole(QPalette::Window); - m_bggroup->setItemSpacing(1); - m_bggroup->setUseWidgetBackground(false); - vLayout->addWidget(m_bggroup); - vLayout->setContentsMargins(0, 0, 0, 0); - } - - setLayout(vLayout); - m_bgStyle = bgStyle; -} diff --git a/dcc-old/src/widgets/settingsgroupmodule.cpp b/dcc-old/src/widgets/settingsgroupmodule.cpp deleted file mode 100644 index 17d5ce5cd7..0000000000 --- a/dcc-old/src/widgets/settingsgroupmodule.cpp +++ /dev/null @@ -1,156 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/settingsgroupmodule.h" - -#include -#include -#include - -using namespace DCC_NAMESPACE; - -namespace DCC_NAMESPACE { -class SettingsGroupModulePrivate -{ -public: - explicit SettingsGroupModulePrivate(SettingsGroupModule *object) - : q_ptr(object) - , settingsGroup(nullptr) - , bgStyle(SettingsGroup::GroupBackground) - , hor(QSizePolicy::Expanding) - , ver(QSizePolicy::Fixed) - , spacing(1) - , headerVisible(false) - { - } - - QWidget *page() - { - Q_Q(SettingsGroupModule); - settingsGroup = new SettingsGroup(nullptr, bgStyle); - m_mapWidget.clear(); - QObject::connect(settingsGroup, &QObject::destroyed, q, [this]() { m_mapWidget.clear(); }); - settingsGroup->setHeaderVisible(headerVisible); - settingsGroup->setSpacing(spacing); - - settingsGroup->getLayout()->setContentsMargins(0, 0, 0, 0); - settingsGroup->layout()->setMargin(0); - settingsGroup->setSizePolicy(hor, ver); - - for (auto &&tmpChild : q->childrens()) { - QWidget *childPage = tmpChild->activePage(); - if (childPage) { - settingsGroup->insertWidget(childPage); - m_mapWidget.insert(tmpChild, childPage); - } - } - - QObject::connect(q, &ModuleObject::insertedChild, settingsGroup, [this](ModuleObject *const childModule) { onAddChild(childModule); }); - QObject::connect(q, &ModuleObject::removedChild, settingsGroup, [this](ModuleObject *const childModule) { onRemoveChild(childModule); }); - QObject::connect(q, &ModuleObject::childStateChanged, settingsGroup, [this](ModuleObject *const tmpChild, uint32_t flag, bool state) { - if (ModuleObject::IsHiddenFlag(flag)) { - if (state) - onRemoveChild(tmpChild); - else - onAddChild(tmpChild); - } - }); - return settingsGroup; - } - -private: - void onRemoveChild(DCC_NAMESPACE::ModuleObject *const childModule) - { - if (m_mapWidget.contains(childModule)) { - QWidget *w = m_mapWidget.value(childModule); - QVBoxLayout *layout = settingsGroup->getLayout(); - int index = layout->indexOf(w); - if (-1 != index) { - w->deleteLater(); - delete layout->takeAt(index); - m_mapWidget.remove(childModule); - return; - } - } - } - void onAddChild(DCC_NAMESPACE::ModuleObject *const childModule) - { - if (ModuleObject::IsHidden(childModule) || m_mapWidget.contains(childModule)) - return; - - Q_Q(SettingsGroupModule); - bool isExtra = childModule->extra(); - int index = 0; - for (auto &&child : q->childrens()) { - if (child == childModule) - break; - if (!ModuleObject::IsHidden(child) && child->extra() == isExtra) - index++; - } - auto newPage = childModule->activePage(); - if (newPage) { - QVBoxLayout *layout = settingsGroup->getLayout(); - layout->insertWidget(index, newPage); - m_mapWidget.insert(childModule, newPage); - } - } - -public: - SettingsGroupModule *q_ptr; - SettingsGroup *settingsGroup; - QMap m_mapWidget; - SettingsGroup::BackgroundStyle bgStyle; - QSizePolicy::Policy hor; - QSizePolicy::Policy ver; - int spacing; - bool headerVisible; - Q_DECLARE_PUBLIC(SettingsGroupModule) -}; -} - -SettingsGroupModule::SettingsGroupModule(const QString &name, const QString &displayName, QObject *parent) - : ModuleObject(name, displayName, parent) - , DCC_INIT_PRIVATE(SettingsGroupModule) -{ -} - -SettingsGroupModule::~SettingsGroupModule() -{ -} - -void SettingsGroupModule::setHeaderVisible(const bool visible) -{ - Q_D(SettingsGroupModule); - d->headerVisible = visible; -} - -void SettingsGroupModule::setSpacing(const int spacing) -{ - Q_D(SettingsGroupModule); - d->spacing = spacing; -} - -void SettingsGroupModule::setBackgroundStyle(SettingsGroup::BackgroundStyle bgStyle) -{ - Q_D(SettingsGroupModule); - d->bgStyle = bgStyle; -} - -SettingsGroup::BackgroundStyle SettingsGroupModule::backgroundStyle() const -{ - Q_D(const SettingsGroupModule); - return d->bgStyle; -} - -void SettingsGroupModule::setSizePolicy(QSizePolicy::Policy hor, QSizePolicy::Policy ver) -{ - Q_D(SettingsGroupModule); - d->hor = hor; - d->ver = ver; -} - -QWidget *SettingsGroupModule::page() -{ - Q_D(SettingsGroupModule); - return d->page(); -} diff --git a/dcc-old/src/widgets/settingshead.cpp b/dcc-old/src/widgets/settingshead.cpp deleted file mode 100644 index db53b334f9..0000000000 --- a/dcc-old/src/widgets/settingshead.cpp +++ /dev/null @@ -1,86 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/settingshead.h" -#include "widgets/titlelabel.h" -#include "widgets/accessibleinterface.h" - -#include - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(SettingsHead,"SettingsHead"); -SettingsHead::SettingsHead(QFrame *parent) - : SettingsItem(parent) - , m_title(new TitleLabel) - , m_edit(new DCommandLinkButton("")) - , m_state(Cancel) -{ - m_title->setObjectName("SettingsHeadTitle"); - - // can not translate correctly just using tr() - m_edit->setText(tr("Edit")); - DFontSizeManager::instance()->bind(m_title, DFontSizeManager::T5, QFont::DemiBold); - QHBoxLayout *mainLayout = new QHBoxLayout; - mainLayout->setMargin(0); - mainLayout->setSpacing(0); - mainLayout->setContentsMargins(0, 0, 10, 0); - mainLayout->addWidget(m_title); - mainLayout->addStretch(); - mainLayout->addWidget(m_edit); - m_title->setContentsMargins(0, 0, 0, 0); - - setLayout(mainLayout); - - connect(m_edit, &DCommandLinkButton::clicked, this, &SettingsHead::onClicked); -} - -void SettingsHead::setTitle(const QString &title) -{ - m_title->setText(title); - m_edit->setAccessibleName(title); -} - -void SettingsHead::setEditEnable(bool state) -{ - m_edit->setVisible(state); -} - -void SettingsHead::toEdit() -{ - m_state = Edit; - refershButton(); - - Q_EMIT editChanged(true); -} - -void SettingsHead::toCancel() -{ - m_state = Cancel; - refershButton(); - - Q_EMIT editChanged(false); -} - -void SettingsHead::onClicked() -{ - if (m_state == Cancel) { - toEdit(); - } else { - toCancel(); - } -} - -void SettingsHead::refershButton() -{ - if (m_state == Cancel) { - m_edit->setText(tr("Edit")); - } else { - m_edit->setText(tr("Done")); - } -} diff --git a/dcc-old/src/widgets/settingsheaderitem.cpp b/dcc-old/src/widgets/settingsheaderitem.cpp deleted file mode 100644 index d3b28f31e0..0000000000 --- a/dcc-old/src/widgets/settingsheaderitem.cpp +++ /dev/null @@ -1,41 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/settingsheaderitem.h" - -#include "widgets/titlelabel.h" -#include "widgets/accessibleinterface.h" - -#include - -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(SettingsHeaderItem,"SettingsHeaderItem"); -SettingsHeaderItem::SettingsHeaderItem(QWidget *parent) - : SettingsItem(parent), - m_mainLayout(new QHBoxLayout), - m_headerText(new TitleLabel) -{ - m_headerText->setObjectName("SettingsHeaderItemTitle"); - - m_mainLayout->addSpacing(20); - m_mainLayout->addWidget(m_headerText); - m_mainLayout->addStretch(); - - setFixedHeight(24); - m_mainLayout->setSpacing(0); - m_mainLayout->setMargin(0); - - setLayout(m_mainLayout); -} - -void SettingsHeaderItem::setTitle(const QString &title) -{ - m_headerText->setText(title); -} - -void SettingsHeaderItem::setRightWidget(QWidget *widget) -{ - Q_ASSERT(widget); - - m_mainLayout->addWidget(widget, 0, Qt::AlignRight); -} diff --git a/dcc-old/src/widgets/settingsitem.cpp b/dcc-old/src/widgets/settingsitem.cpp deleted file mode 100644 index 0e720b25fc..0000000000 --- a/dcc-old/src/widgets/settingsitem.cpp +++ /dev/null @@ -1,103 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/settingsitem.h" -#include "widgets/accessibleinterface.h" - -#include -#include -#include - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -DGUI_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(SettingsItem, "SettingsItem"); -SettingsItem::SettingsItem(QWidget *parent) - : QFrame(parent) - , m_isErr(false) - , m_hasBack(false) - , m_hover(false) - , m_clickable(false) -{ -} - -bool SettingsItem::isErr() const -{ - return m_isErr; -} - -void SettingsItem::setIsErr(const bool err) -{ - if (m_isErr == err) - return; - m_isErr = err; - - style()->unpolish(this); - style()->polish(this); -} - -void SettingsItem::addBackground() -{ - m_hasBack = true; - update(); -} - -void SettingsItem::removeBackground() -{ - m_hasBack = false; - update(); -} - -bool SettingsItem::clickable() const -{ - return m_clickable; -} - -void SettingsItem::setClickable(const bool clickable) -{ - m_clickable = clickable; -} - -void SettingsItem::resizeEvent(QResizeEvent *event) -{ - QFrame::resizeEvent(event); -} - -void SettingsItem::paintEvent(QPaintEvent *event) -{ - Q_UNUSED(event) - if (m_hasBack) { - const DPalette &dp = DPaletteHelper::instance()->palette(this); - QPainter p(this); - p.setPen(Qt::NoPen); - p.setBrush(dp.brush((m_clickable && m_hover) ? DPalette::ObviousBackground : DPalette::ItemBackground)); - p.drawRoundedRect(rect(), 8, 8); - } - return QFrame::paintEvent(event); -} - -void SettingsItem::enterEvent(QEvent *event) -{ - Q_UNUSED(event) - m_hover = true; - update(); -} - -void SettingsItem::leaveEvent(QEvent *event) -{ - Q_UNUSED(event) - m_hover = false; - update(); -} - -void SettingsItem::mousePressEvent(QMouseEvent *event) -{ - Q_UNUSED(event) - if (m_clickable) - Q_EMIT clicked(this); -} diff --git a/dcc-old/src/widgets/switchwidget.cpp b/dcc-old/src/widgets/switchwidget.cpp deleted file mode 100644 index 905d8b7555..0000000000 --- a/dcc-old/src/widgets/switchwidget.cpp +++ /dev/null @@ -1,135 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/switchwidget.h" -#include "widgets/utils.h" -#include "widgets/accessibleinterface.h" - -#include - -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_LABEL_ACCESSIBLE(SwitchLabel,"SwitchLabel"); -SwitchLabel::SwitchLabel(QWidget *parent, Qt::WindowFlags f) - : QLabel (parent,f) -{ - setAccessibleName("SwitchLabel"); -} - -void SwitchLabel::resizeEvent(QResizeEvent *event) -{ - if(m_sourceText.isEmpty()) - m_sourceText = this->text(); - - m_actualSize = event->size(); - QFontMetrics fontMetrics(this->font()); - - QString str = m_sourceText; - int len = fontMetrics.horizontalAdvance(m_sourceText); - if(len > m_actualSize.width()) { - str = fontMetrics.elidedText(str, Qt::ElideRight, m_actualSize.width()); - this->setText(str); - this->setToolTip(m_sourceText); - } - else { - this->setText(m_sourceText); - this->setToolTip(""); - } - - QLabel::resizeEvent(event); -} - -SET_FORM_ACCESSIBLE(SwitchWidget,"SwitchWidget"); -SwitchWidget::SwitchWidget(const QString &title, QWidget *parent) - : SettingsItem(parent) - , m_leftWidget(new SwitchLabel) - , m_switchBtn(new DSwitchButton) -{ - m_switchBtn->setAccessibleName(title); - qobject_cast(m_leftWidget)->setText(title); - init(); -} - -SwitchWidget::SwitchWidget(QWidget *parent, QWidget *widget) - : SettingsItem(parent) - , m_leftWidget(widget) - , m_switchBtn(new DSwitchButton) -{ - if (!m_leftWidget) - m_leftWidget = new SwitchLabel(); - - init(); -} - -void SwitchWidget::init() -{ - setFixedHeight(SwitchWidgetHeight); - QHBoxLayout *lableLayout = new QHBoxLayout; - lableLayout->addWidget(m_leftWidget); - m_mainLayout = new QHBoxLayout(this); - m_mainLayout->setSpacing(0); - m_mainLayout->setContentsMargins(10, 0, 10, 0); - - m_mainLayout->addLayout(lableLayout, 0); - m_mainLayout->addWidget(m_switchBtn, 0, Qt::AlignVCenter); - setLayout(m_mainLayout); - - connect(m_switchBtn, &DSwitchButton::toggled, this, &SwitchWidget::checkedChanged); -} - -void SwitchWidget::setChecked(const bool checked) -{ - m_switchBtn->blockSignals(true); - m_switchBtn->setChecked(checked); - m_switchBtn->blockSignals(false); -} - -QString SwitchWidget::title() const -{ - QLabel *label = qobject_cast(m_leftWidget); - if (label) { - return label->text(); - } - - return QString(); -} - -void SwitchWidget::setTitle(const QString &title) -{ - SwitchLabel *label = qobject_cast(m_leftWidget); - if (label) { - label->setWordWrap(true); - label->setText(title); - label->setWordWrap(true); - } - setAccessibleName(title); - m_switchBtn->setAccessibleName(title); -} - -bool SwitchWidget::checked() const -{ - return m_switchBtn->isChecked(); -} - -void SwitchWidget::setLeftWidget(QWidget *widget) -{ - if (!widget) - return; - QLayout *lableLayout = m_mainLayout->itemAt(0)->layout(); - lableLayout->removeWidget(m_leftWidget); - m_leftWidget->deleteLater(); - m_leftWidget = widget; - lableLayout->addWidget(m_leftWidget); -} - -void SwitchWidget::mouseReleaseEvent(QMouseEvent *event) -{ - if (!m_switchBtn->geometry().contains(event->pos())) { - Q_EMIT clicked(); - } - - return SettingsItem::mouseReleaseEvent(event); -} diff --git a/dcc-old/src/widgets/titledslideritem.cpp b/dcc-old/src/widgets/titledslideritem.cpp deleted file mode 100644 index 4681e3476a..0000000000 --- a/dcc-old/src/widgets/titledslideritem.cpp +++ /dev/null @@ -1,104 +0,0 @@ -// SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/titledslideritem.h" - -#include "widgets/accessibleinterface.h" -#include "widgets/dccslider.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(TitledSliderItem, "TitledSliderItem"); - -TitledSliderItem::TitledSliderItem(QString title, QWidget *parent) - : SettingsItem(parent) - , m_titleLabel(new QLabel(title)) - , m_valueLabel(new QLabel) - , m_slider(new DCCSlider) -{ - m_slider->qtSlider()->setAccessibleName(title); - - QMargins zeroMg(8, 8, 8, 8); - - QHBoxLayout *topLayout = new QHBoxLayout; - topLayout->setContentsMargins(zeroMg); - topLayout->addWidget(m_titleLabel); - topLayout->addStretch(); - topLayout->addWidget(m_valueLabel); - topLayout->setMargin(0); - topLayout->setSpacing(0); - - QHBoxLayout *bottomLayout = new QHBoxLayout; - bottomLayout->setContentsMargins(zeroMg); - bottomLayout->addWidget(m_slider, 0); - bottomLayout->setMargin(0); - bottomLayout->setSpacing(0); - m_bottomLayout = bottomLayout; - - QVBoxLayout *mainLayout = new QVBoxLayout(this); - mainLayout->setMargin(0); - mainLayout->setSpacing(0); - mainLayout->setContentsMargins(10, 8, 10, 8); - mainLayout->addLayout(topLayout); - mainLayout->addSpacing(10); - mainLayout->addLayout(bottomLayout); - - setAccessibleName(title); -} - -DCCSlider *TitledSliderItem::slider() const -{ - return m_slider->slider(); -} - -void TitledSliderItem::setAnnotations(const QStringList &annotations) -{ - m_slider->setAnnotations(annotations); -} - -QString TitledSliderItem::valueLiteral() const -{ - return m_valueLiteral; -} - -void TitledSliderItem::setValueLiteral(const QString &valueLiteral) -{ - if (valueLiteral != m_valueLiteral) { - m_valueLiteral = valueLiteral; - m_valueLabel->setText(m_valueLiteral); - } -} - -QString TitledSliderItem::title() const -{ - return m_titleLabel->text(); -} - -void TitledSliderItem::setTitle(const QString &title) -{ - m_titleLabel->setText(title); -} - -void TitledSliderItem::setLeftIcon(const QIcon &leftIcon) -{ - m_slider->setLeftIcon(leftIcon); -} - -void TitledSliderItem::setRightIcon(const QIcon &rightIcon) -{ - m_slider->setRightIcon(rightIcon); -} - -void TitledSliderItem::setIconSize(const QSize &size) -{ - m_slider->setIconSize(size); -} diff --git a/dcc-old/src/widgets/titlelabel.cpp b/dcc-old/src/widgets/titlelabel.cpp deleted file mode 100644 index 00fbf08da3..0000000000 --- a/dcc-old/src/widgets/titlelabel.cpp +++ /dev/null @@ -1,42 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/titlelabel.h" -#include "widgets/accessibleinterface.h" - -#include - -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_LABEL_ACCESSIBLE(TitleLabel,"TitleLabel"); -TitleLabel::TitleLabel(QWidget *parent, Qt::WindowFlags f) - : DLabel(parent, f) -{ - auto tf = this->font(); - tf.setWeight(QFont::Medium); - setFont(tf); - - setContentsMargins(10, 0, 0, 0); - setForegroundRole(DPalette::TextTitle); - DFontSizeManager::instance()->bind(this,DFontSizeManager::T5, QFont::DemiBold); -} - -TitleLabel::TitleLabel(const QString &text, QWidget *parent, Qt::WindowFlags f) - : TitleLabel(parent, f) -{ - setText(text); -} - -bool TitleLabel::event(QEvent *e) -{ - if (e->type() == QEvent::ApplicationFontChange) { - auto tf = this->font(); - tf.setWeight(QFont::Medium); - setFont(tf); - } - - return QLabel::event(e); -} diff --git a/dcc-old/src/widgets/titlevalueitem.cpp b/dcc-old/src/widgets/titlevalueitem.cpp deleted file mode 100644 index 91af1847a0..0000000000 --- a/dcc-old/src/widgets/titlevalueitem.cpp +++ /dev/null @@ -1,205 +0,0 @@ -//SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd. -// -//SPDX-License-Identifier: GPL-3.0-or-later -#include "widgets/titlevalueitem.h" -#include "widgets/accessibleinterface.h" - -#include - -#include -#include -#include -#include - -DWIDGET_USE_NAMESPACE -using namespace DCC_NAMESPACE; -SET_FORM_ACCESSIBLE(TitleValueItem,"TitleValueItem") -ResizeEventFilter::ResizeEventFilter(QObject *parent) : QObject(parent) {} - -bool ResizeEventFilter::eventFilter(QObject *watched, QEvent *event) -{ - if(event->type() == QEvent::Resize) { - QLabel* l = qobject_cast(watched); - if (l) { - //as we are not interested in the y offset of the rendered text, height of the rectangle doesn't matter. - QRect r = l->fontMetrics().boundingRect(QRect(0, 0, l->width(), 100), Qt::TextWordWrap, l->text()); - l->setMinimumHeight(r.height()); - return true; - } - } - return QObject::eventFilter(watched, event); -} - -TitleValueItem::TitleValueItem(QFrame *parent) - : SettingsItem(parent), - m_title(new QLabel), - m_value(new ItemTitleTipsLabel("")) -{ - QHBoxLayout* layout = new QHBoxLayout(this); - - m_value->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - m_value->setWordWrap(true); - - layout->setContentsMargins(10, 10, 10, 10); - - layout->addWidget(m_title); - layout->addWidget(m_value); - - m_value->installEventFilter(new ResizeEventFilter(this)); - - setLayout(layout); -} - -TitleValueItem::~TitleValueItem() -{ - delete m_title; - delete m_value; -} - -void TitleValueItem::setTitle(const QString &title) -{ - m_title->setText(title); -} - -void TitleValueItem::setValue(const QString &value) -{ - m_value->setText(value); -} - -void TitleValueItem::setWordWrap(const bool enable) -{ - m_value->setWordWrap(enable); -} - -QString TitleValueItem::value() const -{ - return m_value->text(); -} - -void TitleValueItem::setValueAligment(const Qt::Alignment aligment) -{ - m_value->setAlignment(aligment); -} - -void TitleValueItem::setValueBackground(bool showBackground) -{ - if (showBackground) { - m_value->addBackground(); - layout()->setContentsMargins(5, 5, 5, 5); - } else { - m_value->removeBackground(); - layout()->setContentsMargins(10, 10, 10, 10); - } -} - -void TitleValueItem::resizeEvent(QResizeEvent *event) -{ - if (m_value->hasBackground()) { - // 如果存在背景色,则让背景色的部分占满右侧的部分 - m_value->setFixedWidth(static_cast(width() * 0.62)); - } - SettingsItem::resizeEvent(event); -} - - -TitleAuthorizedItem::TitleAuthorizedItem(QFrame *parent) - : SettingsItem(parent) - , m_title(new QLabel) - , m_value(new DTipLabel("")) - , m_pActivatorBtn(new QPushButton) -{ - QHBoxLayout* layout = new QHBoxLayout; - - m_value->setAlignment(Qt::AlignRight | Qt::AlignVCenter); - m_value->setWordWrap(true); - - layout->setContentsMargins(10, 10, 10, 10); - - layout->addWidget(m_title); - layout->addWidget(m_value); - layout->addWidget(m_pActivatorBtn); - m_pActivatorBtn->setFocusPolicy(Qt::NoFocus); - - m_value->installEventFilter(new ResizeEventFilter(this)); - - setLayout(layout); - - //传递button的点击信号 - connect(m_pActivatorBtn, SIGNAL(clicked()), this, SIGNAL(clicked())); -} - -void TitleAuthorizedItem::setTitle(const QString& title) -{ - m_title->setText(title); -} - -void TitleAuthorizedItem::setValue(const QString& value) -{ - m_value->setText(value); -} - -void TitleAuthorizedItem::setWordWrap(bool enable) -{ - m_value->setWordWrap(enable); -} - -void TitleAuthorizedItem::setButtonText(const QString &str) -{ - m_pActivatorBtn->setText(str); -} - -void TitleAuthorizedItem::setVisable(bool value) -{ - m_pActivatorBtn->setVisible(value); -} - -void TitleAuthorizedItem::setValueForegroundRole(const QColor &color) -{ - auto pa = DPaletteHelper::instance()->palette(m_value); - pa.setBrush(DPalette::TextTips, color); - DPaletteHelper::instance()->setPalette(m_value, pa); -} - -/** - * @brief ItemTitleTipsLabel::ItemTitleTipsLabel - * @param text - * @param parent - */ -ItemTitleTipsLabel::ItemTitleTipsLabel(const QString &text, QWidget *parent) - : DTipLabel (text, parent) - , m_hasBackground(false) -{ -} - -ItemTitleTipsLabel::~ItemTitleTipsLabel() -{ -} - -void ItemTitleTipsLabel::addBackground() -{ - m_hasBackground = true; - update(); -} - -void ItemTitleTipsLabel::removeBackground() -{ - m_hasBackground = false; - update(); -} - -bool ItemTitleTipsLabel::hasBackground() const -{ - return m_hasBackground; -} - -void ItemTitleTipsLabel::paintEvent(QPaintEvent *event) -{ - if (m_hasBackground) { - const DPalette &dp = DPaletteHelper::instance()->palette(this); - QPainter p(this); - p.setPen(Qt::NoPen); - p.setBrush(dp.brush(DPalette::FrameShadowBorder)); - p.drawRoundedRect(rect(), 8, 8); - } - DTipLabel::paintEvent(event); -} diff --git a/dcc-old/translations/dde-control-center_ady.ts b/dcc-old/translations/dde-control-center_ady.ts deleted file mode 100644 index 228a997249..0000000000 --- a/dcc-old/translations/dde-control-center_ady.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_af.ts b/dcc-old/translations/dde-control-center_af.ts deleted file mode 100644 index 171a9e60a0..0000000000 --- a/dcc-old/translations/dde-control-center_af.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Koppel - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Kanselleer - - - Next - Volgende - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Gedoen - - - Failed to enroll your face - - - - Try Again - - - - Close - Maak toe - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Kanselleer - - - Next - Volgende - - - Iris enrolled - - - - Done - Gedoen - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Verbind - - - Not connected - - - - - BluetoothModule - - Bluetooth - Bloutand - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Kanselleer - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Kanselleer - - - Confirm - button - Bevestig - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Gebruikersnaam - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - Administrateur - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Kanselleer - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Kanselleer - - - Save - Stoor - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - Opdatering... - - - Startup Delay - - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - Selflaaikieslys - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - Kanselleer - - - Confirm - button - Bevestig - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - Helderheid - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - Selflaaikieslys - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - Kanselleer - - - Create - - - - New User - - - - User Type - - - - Username - Gebruikersnaam - - - Full Name - - - - Password - Wagwoord - - - Repeat Password - Herhaal Wagwoord - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - Administrateur - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - Naam - - - Required - - - - Command - Instruksie - - - Cancel - Kanselleer - - - Add - Voeg by - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - Kanselleer - - - Save - Stoor - - - Shortcut - - - - Name - Naam - - - Command - Instruksie - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Volgende - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Kanselleer - - - Restart Now - Herlaai Nou - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Vertoonskerm - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Herhaal vertraging - - - Short - - - - Long - - - - Repeat Rate - Herhaal Tempo - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Dubbel-kliek Spoed - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Sleutelbord Uitleg - - - Edit - Stel - - - Add Keyboard Layout - - - - Done - Gedoen - - - - dccV23::KeyboardLayoutDialog - - Cancel - Kanselleer - - - Add - Voeg by - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Sleutelbord en Taal - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Sleutelbord Uitleg - - - Language - Taal - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - Nuwe Wagwoord - - - Repeat Password - Herhaal Wagwoord - - - Password Hint - - - - Cancel - Kanselleer - - - Save - Stoor - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - Algemeen - - - Touchpad - Raakblok - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - Wyser Spoed - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Natuurlike Blaai - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Modus - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Dupliseer - - - Extend - Verleng - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Kanselleer - - - Delete - Verwyder - - - - dccV23::ResolutionWidget - - Resolution - Resolusie - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Standaard - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - Rotasie - /display/Rotation - - - Standard - Standaard - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - Helderheid - - - - dccV23::SecurityLevelItem - - Weak - Swak - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Kanselleer - - - Confirm - Bevestig - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Stel - - - Done - Gedoen - - - - dccV23::ShortCutSettingWidget - - System - Stelsel - - - Window - Venster - - - Workspace - Werkspasie - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Kanselleer - - - Replace - Vervang - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - Weergawe - - - Edition - - - - Type - Tipe - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Kanselleer - - - Add - Voeg by - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Stel - - - Language List - - - - Add Language - - - - Done - Gedoen - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Bevestig - - - Cancel - Kanselleer - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Wyser Spoed - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Standaard Toepassings - - - - DefAppPlugin - - Webpage - - - - Mail - Pos - - - Text - Teks - - - Music - Musiek - - - Video - Video - - - Picture - Prent - - - Terminal - Terminaal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Kanselleer - - - Next - Volgende - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - Modus - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - Grootte - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - Links - - - Right - Regs - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Stel - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Gedoen - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Kanselleer - - - Next - Volgende - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Stel - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - Gedoen - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - Algemeen - - - Balanced - Gebalanseerd - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Stel - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Gedoen - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Geen - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Invoer Volume - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Lessenaarblad - - - Window - Venster - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - Verpersoonliking - - - - PersonalizationThemeList - - Cancel - Kanselleer - - - Save - Stoor - - - Light - - - - Dark - - - - Auto - Outo - - - Default - Standaard - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - Outo - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - Outo - General - /personalization/General - - - Default - Standaard - - - - PersonalizationWorker - - Custom - Verspersoonlik - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Kanselleer - - - Confirm - Bevestig - - - - PowerModule - - Power - Krag - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mifrofoon - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - Beheersentrum - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Kanselleer - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - Skakel af - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - Maak Asblik Leeg - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Klank - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Modus - - - Output Volume - Uitset Volume - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Links/Regs Balans - - - Left - Links - - - Right - Regs - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - Terugstel - - - Save - Stoor - - - Server - Bediener - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Kanselleer - - - Confirm - Bevestig - - - Add Timezone - - - - Add - Voeg by - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Keer terug - - - Save - Stoor - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Kanselleer - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - Opdatering... - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Grootte - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Bediener - - - Desktop - Lessenaarblad - - - Version - Weergawe - - - - UpdateSettingsModule - - Update Settings - - - - System - Stelsel - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Nooit - - - Shut down - Skakel af - - - Suspend - Opskort - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 Minuut - - - %1 Minutes - - - - 1 Hour - 1 Uur - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 Minuut - - - %1 Minutes - - - - 1 Hour - 1 Uur - - - Never - Nooit - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Skakel af - - - Suspend - Opskort - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Modus - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_af_ZA.ts b/dcc-old/translations/dde-control-center_af_ZA.ts deleted file mode 100644 index 10a936889d..0000000000 --- a/dcc-old/translations/dde-control-center_af_ZA.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ak.ts b/dcc-old/translations/dde-control-center_ak.ts deleted file mode 100644 index e0b6aa7146..0000000000 --- a/dcc-old/translations/dde-control-center_ak.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Connect - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Cancel - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Cancel - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Cancel - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Cancel - - - Confirm - button - Confirm - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Cancel - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Cancel - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - Cancel - - - Confirm - button - Confirm - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - Cancel - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - Password - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - Cancel - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - Cancel - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Cancel - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancel - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - Cancel - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Duplicate - - - Extend - Extend - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Cancel - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Search - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Cancel - - - Confirm - Confirm - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Cancel - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancel - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Confirm - - - Cancel - Cancel - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - Nnwom - - - Video - Video - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Cancel - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Cancel - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - Cancel - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Cancel - - - Confirm - Confirm - - - - PowerModule - - Power - Power - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Cancel - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Search - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - Shut down - - - Log out - Log out - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Cancel - - - Confirm - Confirm - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Cancel - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - System - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - Shut down - - - Suspend - Suspend - - - Hibernate - Hibernate - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Shut down - - - Suspend - Suspend - - - Hibernate - Hibernate - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_am.ts b/dcc-old/translations/dde-control-center_am.ts deleted file mode 100644 index 60f8aed4bc..0000000000 --- a/dcc-old/translations/dde-control-center_am.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_am_ET.ts b/dcc-old/translations/dde-control-center_am_ET.ts deleted file mode 100644 index 57ee4e3bd1..0000000000 --- a/dcc-old/translations/dde-control-center_am_ET.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - መገናኛ - - - Disconnect - መለያያ - - - Rename - እንደገና መሰየሚያ - - - Send Files - - - - Ignore this device - - - - Connecting - በ መገናኘት ላይ - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - መክፈቻ የ ዴስክቶፕ ፋይል - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - መሰረዣ - - - Next - ይቀጥሉ - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - ተፈጽሟል - - - Failed to enroll your face - - - - Try Again - - - - Close - መዝጊያ - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - መሰረዣ - - - Next - ይቀጥሉ - - - Iris enrolled - - - - Done - ተፈጽሟል - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - የ ጣት አሻራ - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - ተገናኝቷል - - - Not connected - አልተገናኘም - - - - BluetoothModule - - Bluetooth - ብሉቱዝ - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - መሰረዣ - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - መሰረዣ - - - Confirm - button - ማረጋገጫ - - - - dccV23::AccountSpinBox - - Always - ሁል ጊዜ - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - የ ተጠቃሚ ስም - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - በራሱ መግቢያ - - - Login Without Password - - - - Validity Days - - - - Group - ቡድን - - - The full name is too long - - - - Standard User - - - - Administrator - አስተዳዳሪ - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - መሰረዣ - - - OK - እሺ - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - መሰረዣ - - - Save - ማስቀመጫ - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - ምስሎች - - - - dccV23::BootWidget - - Updating... - በማሻሻል ላይ... - - - Startup Delay - ማስጀመሪያ ማዘግያ - - - Theme - ገጽታ - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - የ ማስነሻ ዝርዝር - - - Change GRUB password - - - - Username: - የ ተጠቃሚ ስም: - - - root - - - - New password: - - - - Repeat password: - - - - Required - ያስፈልጋል - - - Cancel - button - መሰረዣ - - - Confirm - button - ማረጋገጫ - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - ብሩህነት - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - የ ማስነሻ ዝርዝር - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - ቡድን - - - Cancel - መሰረዣ - - - Create - መፍጠሪያ - - - New User - - - - User Type - - - - Username - የ ተጠቃሚ ስም - - - Full Name - - - - Password - የ መግቢያ ቃል - - - Repeat Password - የ መግቢያ ቃሉን እንደገና ይጻፉ - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - አስተዳዳሪ - - - Customized - - - - Required - ያስፈልጋል - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - ምስሎች - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - አቋራጭ ማስተካከያ መጨመሪያ - - - Name - ስም - - - Required - ያስፈልጋል - - - Command - ትእዛዝ - - - Cancel - መሰረዣ - - - Add - መጨመሪያ - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - ይህ አቋራጭ ይጋጫል ከ %1, ይጫኑ መጨመሪያ ላይ ይህን አቋራጭ ተግባራዊ ለማድረግ - - - - dccV23::CustomEdit - - Required - ያስፈልጋል - - - Cancel - መሰረዣ - - - Save - ማስቀመጫ - - - Shortcut - አቋራጭ - - - Name - ስም - - - Command - ትእዛዝ - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - ይህ አቋራጭ ይጋጫል ከ %1, ይጫኑ መጨመሪያ ላይ ይህን አቋራጭ ተግባራዊ ለማድረግ - - - - dccV23::CustomItem - - Shortcut - አቋራጭ - - - Please enter a shortcut - እባክዎን አቋራጭ ያስገቡ - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - ይቀጥሉ - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - መሰረዣ - - - Restart Now - አሁን እንደገና ማስጀመሪያ - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - ማሳያ - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - የ ሁለት ጊዜ-መጫኛ መሞከሪያ - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - ማዘግያውን መድገሚያ - - - Short - አጭር - - - Long - ረጅም - - - Repeat Rate - መጠን መድገሚያ - - - Slow - ዝግተኛ - - - Fast - ፋጣን - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - Caps Lock Prompt - - - - dccV23::GeneralSettingWidget - - Left Hand - ለ ግራ እጅ - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - የ ሁለት ጊዜ-መጫኛ ፍጥነት - - - Slow - ዝግተኛ - - - Fast - ፋጣን - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - የ ፊደል ገበታ አቀራረብ - - - Edit - ማረሚያ - - - Add Keyboard Layout - የ ፊደል ገበታ እቅድ መጨመሪያ - - - Done - ተፈጽሟል - - - - dccV23::KeyboardLayoutDialog - - Cancel - መሰረዣ - - - Add - መጨመሪያ - - - Add Keyboard Layout - የ ፊደል ገበታ እቅድ መጨመሪያ - - - - dccV23::KeyboardPlugin - - Keyboard and Language - የፊደል ገበታ እና ቋንቋ - - - Keyboard - የፊደል ገበታ - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - የ ፊደል ገበታ አቀራረብ - - - Language - ቋንቋ - - - Shortcuts - አቋራጭ - - - - dccV23::MainWindow - - Help - እርዳታ - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - የ አሁኑ የ መግቢያ ቃል - - - Forgot password? - - - - New Password - አዲስ የ መግቢያ ቃል - - - Repeat Password - የ መግቢያ ቃሉን እንደገና ይጻፉ - - - Password Hint - - - - Cancel - መሰረዣ - - - Save - ማስቀመጫ - - - Passwords do not match - - - - Required - ያስፈልጋል - - - Optional - ምርጫ - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - የተሳሳተ የመግቢያ ቃል - - - New password should differ from the current one - አዲሱ የ መግቢያ ቃል መለየት አለበት ከ አሁኑ ጋር - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - አይጥ - - - General - ባጠቃላይ - - - Touchpad - ተችፓድ - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - የ መጠቆሚያው ፍጥነት - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - መሸብለያ - - - Slow - ዝግተኛ - - - Fast - ፋጣን - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - ዘዴ - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - ማባዣ - - - Extend - ማስፋፊያ - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - የ መግለጫ ዳይሬክቶሪ ማጥፊያ - - - Cancel - መሰረዣ - - - Delete - ማጥፊያ - - - - dccV23::ResolutionWidget - - Resolution - ሪዞሊሽን - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - ነባር - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - ማዞሪያ - /display/Rotation - - - Standard - መደበኛ - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - መፈለጊያ - - - - dccV23::SecondaryScreenDialog - - Brightness - ብሩህነት - - - - dccV23::SecurityLevelItem - - Weak - ደካማ - - - Medium - መካከለኛ - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - መሰረዣ - - - Confirm - ማረጋገጫ - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - ማረሚያ - - - Done - ተፈጽሟል - - - - dccV23::ShortCutSettingWidget - - System - ስርአት - - - Window - መስኮት - - - Workspace - የስራ ቦታ - - - Assistive Tools - - - - Custom Shortcut - አቋራጭ ማስተካከያ - - - Restore Defaults - ነባር እንደ ነበር መመለሻ - - - Shortcut - አቋራጭ - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - እባክዎን አቋራጭ እንደ ነበር ይመልሱ - - - Cancel - መሰረዣ - - - Replace - መቀየሪያ - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - ይህ አቋራጭ ይጋጫል ከ %1, ይጫኑ መጨመሪያ ላይ ይህን አቋራጭ ተግባራዊ ለማድረግ - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - የ ኮምፒዩተሩ ስም - - - systemInfo - - - - OS Name - - - - Version - እትም - - - Edition - - - - Type - አይነት - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - የ ፍቃድ እትም - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - መሰረዣ - - - Add - መጨመሪያ - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - ማረሚያ - - - Language List - - - - Add Language - - - - Done - ተፈጽሟል - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - ማረጋገጫ - - - Cancel - መሰረዣ - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - የ መጠቆሚያው ፍጥነት - - - Slow - ዝግተኛ - - - Fast - ፋጣን - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - አመት - - - Month - ወር - - - Day - ቀን - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - ነባር መተግበሪያዎች - - - - DefAppPlugin - - Webpage - - - - Mail - ደብዳቤ - - - Text - ጽሁፍ - - - Music - ሙዚቃ - - - Video - ቪዲዮ - - - Picture - ስእል - - - Terminal - ተርሚናል - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - መሰረዣ - - - Next - ይቀጥሉ - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - ዘዴ - - - Position - ቦታ - - - Status - ሁኔታው - - - Show recent apps in Dock - - - - Size - መጠን - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - ከ ላይ - - - Bottom - ከ ታች - - - Left - የ ግራ - - - Right - የ ቀኝ - - - Location - አካባቢ - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - ትንሽ - - - Large - ትልቅ - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - ማረሚያ - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - ተፈጽሟል - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - የ ጣት አሻራ መጨመሪያ - - - Cancel - መሰረዣ - - - Next - ይቀጥሉ - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - ማረሚያ - - - Fingerprint Password - የ ጣት አሻራ የ መግቢያ ቃል - - - You can add up to 10 fingerprints - - - - Done - ተፈጽሟል - - - The name already exists - - - - Add Fingerprint - የ ጣት አሻራ መጨመሪያ - - - - GeneralModule - - General - ባጠቃላይ - - - Balanced - መደበኛ - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - ማረሚያ - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - ተፈጽሟል - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - ምንም - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - የ መጠን ማሳገቢያ - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - ዴስክቶፕ - - - Window - መስኮት - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - ትንሽ - - - Middle - - - - Large - ትልቅ - - - - PersonalizationModule - - Personalization - የ ግል ማድረጊያ - - - - PersonalizationThemeList - - Cancel - መሰረዣ - - - Save - ማስቀመጫ - - - Light - ብርሀን - - - Dark - - - - Auto - በራሱ - - - Default - ነባር - - - - PersonalizationThemeModule - - Theme - ገጽታ - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - የ ምልክት ገጽታ - - - Cursor Theme - የ መጠቆሚያው ገጽታ - - - Text Settings - - - - Font Size - የ ፊደል መጠን: - - - Standard Font - መደበኛ ፊደል - - - Monospaced Font - ነጠላ ክፍተት ፊደል - - - Light - ብርሀን - - - Auto - በራሱ - - - Dark - - - - - PersonalizationThemeWidget - - Light - ብርሀን - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - በራሱ - General - /personalization/General - - - Default - ነባር - - - - PersonalizationWorker - - Custom - ማስተካከያ - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - ፒን ከ ብሉቱዝ አካል ጋር ለ መገናኘት: - - - Cancel - መሰረዣ - - - Confirm - ማረጋገጫ - - - - PowerModule - - Power - ሐይል - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - ካሜራ - - - Microphone - ማይክሮፎን - - - User Folders - - - - Calendar - ቀን መቁጠሪያ - - - Screen Capture - - - - - QObject - - Control Center - መቆጣጠሪያ ማእከል - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - መመልከቻ - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - መሰረዣ - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - ማሻሻል አልተቻለም - - - - SearchInput - - Search - መፈለጊያ - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - የ ድምፅ ውጤቶች - - - - SoundModel - - Boot up - - - - Shut down - ማጥፊያ - - - Log out - መውጫ - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - ቆሻሻውን ባዶ ማድረጊያ - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - ድምፅ - - - - SoundPlugin - - Output - ውጤት - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - ማስገቢያ - - - Sound Effects - የ ድምፅ ውጤቶች - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - ዘዴ - - - Output Volume - የ መጠን ውጤት - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - ግራ/ቀኝ ማካካሻ - - - Left - የ ግራ - - - Right - የ ቀኝ - - - - TimeSettingModule - - Time Settings - ሰአት ማሰናጃ - - - Time - - - - Auto Sync - - - - Reset - እንደ ነበር መመለሻ - - - Save - ማስቀመጫ - - - Server - ሰርቨር - - - Address - አድራሻ - - - Required - ያስፈልጋል - - - Customize - - - - Year - አመት - - - Month - ወር - - - Day - ቀን - - - - TimeZoneChooser - - Cancel - መሰረዣ - - - Confirm - ማረጋገጫ - - - Add Timezone - የ ሰአት ክልል መጨመሪያ - - - Add - መጨመሪያ - - - Change Timezone - የ ሰአት ክልል መቀየሪያ - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - ወደ ነበረበት መመለሻ - - - Save - ማስቀመጫ - - - - TimezoneItem - - Tomorrow - ነገ - - - Yesterday - ትናንትና - - - Today - ዛሬ - - - %1 hours earlier than local - %1 ሰአት ቀደም ብሎ ከ አካባቢው - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - የ ሰአት ክልል ዝርዝር - - - System Timezone - - - - Add Timezone - የ ሰአት ክልል መጨመሪያ - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - መሰረዣ - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - በማሻሻል ላይ... - - - Update All - - - - Last checking time: - - - - Your system is up to date - የ እርስዎ ስርአት ዘመናዊ ነው - - - Check for Updates - - - - Checking for updates, please wait... - ማሻሻያ በ መመርመር ላይ: እባክዎን ይቆዩ... - - - The newest system installed, restart to take effect - አዲሱ ስርአት ተገጥሟል: እንደገና ያስነሱ ተግባራዊ እንዲሆን - - - %1% downloaded (Click to pause) - %1 ወርዷል (ይጫኑ ለማስቆም) - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - የ እርስዎ ባትሪ ከ 50%, በታች ነው: እባክዎን ለ መሙላት ይሰኩት - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - እባክዎን እርግጠኛ ይሁኑ እንደገና ማስነሻ በቂ ሀይልክ እንዳለ: ወይንም የ ኮምፒዩተሩን ሀይል አይንቀሉ - - - Size - መጠን - - - - UpdateModule - - Updates - ማሻሻያ - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - አዲሱ ስርአት ተገጥሟል: እንደገና ያስነሱ ተግባራዊ እንዲሆን - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - ሰርቨር - - - Desktop - ዴስክቶፕ - - - Version - እትም - - - - UpdateSettingsModule - - Update Settings - ማሻሻያ ማሰናጃ - - - System - ስርአት - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - በፍጹም - - - Shut down - ማጥፊያ - - - Suspend - ማገጃ - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 ደቂቃ - - - %1 Minutes - %1 ደቂቃዎች - - - 1 Hour - 1 ሰአት - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - ኮምፒዩተር ይታገዳል ከ - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 ደቂቃ - - - %1 Minutes - %1 ደቂቃዎች - - - 1 Hour - 1 ሰአት - - - Never - በፍጹም - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - ማጥፊያ - - - Suspend - ማገጃ - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - ዘዴ - - - Pressure Sensitivity - - - - Pen - ብዕር - - - Mouse - አይጥ - - - Light - ብርሀን - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ar.ts b/dcc-old/translations/dde-control-center_ar.ts deleted file mode 100644 index 68557f8998..0000000000 --- a/dcc-old/translations/dde-control-center_ar.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - تفعيل البلوتوث لإيجاد أجهزة قريبة (سماعات خارجية،لوحة مفاتيح،فأرة) - - - My Devices - أجهزتي - - - Other Devices - أجهزة أخرى - - - Show Bluetooth devices without names - - - - Connect - اتصال - - - Disconnect - قطع الاتصال - - - Rename - إعادة تسمية - - - Send Files - - - - Ignore this device - تجاهل هذا الجهاز - - - Connecting - يتصل - - - Disconnecting - - - - - AddButtonWidget - - Add Application - إضافة تطبيق - - - Open Desktop file - فتح ملف سطح المكتب - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - إلغاء - - - Next - التالي - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - تم - - - Failed to enroll your face - - - - Try Again - - - - Close - إغلاق - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - إلغاء - - - Next - التالي - - - Iris enrolled - - - - Done - تم - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - بصمة الإصبع - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - متصل - - - Not connected - غير متصل - - - - BluetoothModule - - Bluetooth - البلوتوث - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - تحرك الإصبع بسرعة كبيرة. الرجاء عدم رفع إصبعك حتى يطلب منك - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - نظف إصبعك أو اضبط موضع الإصبع وحاول مرة أخرى - - - Already scanned - تم المسح بالفعل - - - Adjust the finger position to scan your fingerprint fully - اضبط موضع الإصبع لمسح بصمة إصبعك بالكامل - - - Finger moved too fast. Please do not lift until prompted - تحرك الإصبع بسرعة كبيرة. من فضلك لا ترفع حتى يطلب منك - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - إلغاء - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - إلغاء - - - Confirm - button - تأكيد - - - - dccV23::AccountSpinBox - - Always - دائماً - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - اسم المستخدم - - - Change Password - تغيير كلمة المرور - - - Delete User - - - - User Type - - - - Auto Login - دخول تلقائي - - - Login Without Password - تسجيل الدخول دون كلمة مرور - - - Validity Days - أيام الصلاحية - - - Group - مجموعة - - - The full name is too long - الاسم الكامل طويل جداً - - - Standard User - مستخدم قياسي - - - Administrator - مسؤول - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - الاسم بالكامل - - - Go to Settings - إذهب للإعدادات - - - Cancel - إلغاء - - - OK - موافق - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - أزيل مضيفك من خادوم النطاقات بنجاح. - - - Your host joins the domain server successfully - انضم مضيفك إلى خادوم النطاقات بنجاح. - - - Your host failed to leave the domain server - فشلت إزالة مضيفك من خادوم النطاقات. - - - Your host failed to join the domain server - فشل انضمام مضيفك إلى خادوم النطاقات. - - - AD domain settings - إعدادات نطاق الدليل النشط - - - Password not match - كلممتا المرور غير متطابقتان - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - إلغاء - - - Save - حفظ - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - صور - - - - dccV23::BootWidget - - Updating... - يتم الآن التحديث... - - - Startup Delay - تأخير في بدء التشغيل - - - Theme - السمة - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - إختر الخيار في قائمة إقلاع الجهاز لجعله الأول في الإقلاع، وإختر صورة واسحبها لتغيير الخلفية - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - غير السمة لتراها في قائمة إقلاع الجهاز - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - تغيير كلمة المرور - - - Boot Menu - قائمة الإقلاع - - - Change GRUB password - - - - Username: - اسم المستخدم: - - - root - - - - New password: - - - - Repeat password: - - - - Required - مطلوب - - - Cancel - button - إلغاء - - - Confirm - button - تأكيد - - - Password cannot be empty - لا يمكن ترك كلمة المرور فارغة - - - Passwords do not match - كلمتا المرور غير متطابقتان - - - - dccV23::BrightnessWidget - - Brightness - السطوع - - - Color Temperature - - - - Auto Brightness - سطوع تلقائى - - - Night Shift - الوضع الليلي - - - The screen hue will be auto adjusted according to your location - سيتم ضبط تدرج الشاشة تلقائيًا وفقًا لموقعك - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - أجهزتي - - - Other Devices - أجهزة أخرى - - - - dccV23::CommonInfoPlugin - - General Settings - الإعدادات العامة - - - Boot Menu - قائمة الإقلاع - - - Developer Mode - وضع المطور - - - User Experience Program - برنامج تجربة المستخدم - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - الموافقة والانضمام إلى برنامج تجربة المستخدم - - - The Disclaimer of Developer Mode - إخلاء المسؤولية عن وضع المطور - - - Agree and Request Root Access - الموافقة وطلب الوصول إلى الجذر - - - Failed to get root access - فشل في الحصول على صلاحية الجذر - - - Please sign in to your Union ID first - - - - Cannot read your PC information - تعذرت قراءة بيانات حاسبك - - - No network connection - لا اتصال بالشبكة - - - Certificate loading failed, unable to get root access - فشل تحميل الشهادة ، غير قادر على الحصول على وصول الجذر - - - Signature verification failed, unable to get root access - فشل التحقق من التوقيع ، غير قادر على الوصول إلى الجذر - - - - dccV23::CreateAccountPage - - Group - مجموعة - - - Cancel - إلغاء - - - Create - إنشاء - - - New User - - - - User Type - - - - Username - اسم المستخدم - - - Full Name - الاسم بالكامل - - - Password - كلمة المرور - - - Repeat Password - إعادة كلمة المرور - - - Password Hint - - - - The full name is too long - الاسم الكامل طويل جداً - - - Passwords do not match - كلمتا المرور غير متطابقتان - - - Standard User - مستخدم قياسي - - - Administrator - مسؤول - - - Customized - يعدل أو يكيف - - - Required - مطلوب - - - optional - اختياري - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - يجب أن يكون اسم المستخدم بين 3-32 حرفاً - - - The first character must be a letter or number - المحرف اﻷول يجب أن يكون رقم أو حرف - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - صور - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - إضافة اختصار مخصص - - - Name - الاسم - - - Required - مطلوب - - - Command - أمر - - - Cancel - إلغاء - - - Add - إضافة - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - هذا الإختصار يتعارض مع %1، انقر على إضافة لجعل هذا الإختصار فعال على الفور - - - - dccV23::CustomEdit - - Required - مطلوب - - - Cancel - إلغاء - - - Save - حفظ - - - Shortcut - إختصار - - - Name - الاسم - - - Command - أمر - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - هذا الإختصار يتعارض مع %1، انقر على إضافة لجعل هذا الإختصار فعال على الفور - - - - dccV23::CustomItem - - Shortcut - إختصار - - - Please enter a shortcut - الرجاء إدخال اختصار - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - طلب وصول الجذر - - - Online - متصل - - - Offline - منفصل - - - Please sign in to your Union ID first and continue - - - - Next - التالي - - - Export PC Info - تصدير بيانات الحاسب - - - Import Certificate - استيراد شهادة - - - 1. Export your PC information - 1. استخراج المعلومات عن حاسوبك - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. انتقل إلى https://www.chinauos.com/developMode لتنزيل شهادة في وضع عدم الاتصال - - - 3. Import the certificate - 3. استيراد الشهادة - - - - dccV23::DeveloperModeWidget - - Request Root Access - طلب وصول الجذر - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - يتيح لك وضع المطور الحصول على امتيازات الجذر ، وتثبيت التطبيقات غير الموقعة وتشغيلها حتى لو كانت غير المدرجة في متجر التطبيقات ، ولكن قد يتضرر تكامل النظام الخاص بك أيضًا ، يرجى استخدامه بعناية. - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - فشل في الحصول على صلاحية الجذر - - - Please sign in to your Union ID first - - - - Cannot read your PC information - تعذرت قراءة بيانات حاسبك - - - No network connection - لا اتصال بالشبكة - - - Certificate loading failed, unable to get root access - فشل تحميل الشهادة ، غير قادر على الحصول على وصول الجذر - - - Signature verification failed, unable to get root access - فشل التحقق من التوقيع ، غير قادر على الوصول إلى الجذر - - - To make some features effective, a restart is required. Restart now? - لجعل بعض الميزات فعالة ، يلزم إعادة التشغيل. اعد التشغيل الان؟ - - - Cancel - إلغاء - - - Restart Now - إعادة التشغيل الآن - - - Root Access Allowed - تم السماح بوصول الجذر - - - - dccV23::DisplayPlugin - - Display - عرض - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - اختبار النقر المزدوج - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - مهلة التأخير - - - Short - قصير - - - Long - طويل - - - Repeat Rate - معدل التكرار - - - Slow - بطيء - - - Fast - سريع - - - Test here - تجربة هنا - - - Numeric Keypad - لوحة اﻷرقام - - - Caps Lock Prompt - تفعيل مفتاح "Caps Lock" - - - - dccV23::GeneralSettingWidget - - Left Hand - اليد اليسرى - - - Disable touchpad while typing - تعطيل لوحة اللمس أثناء الكتابة - - - Scrolling Speed - سرعة التمرير - - - Double-click Speed - سرعة النقر المزدوج - - - Slow - بطيء - - - Fast - سريع - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - تخطيط لوحة المفاتيح - - - Edit - تحرير - - - Add Keyboard Layout - إضافة تخطيط لوحة مفاتيح - - - Done - تم - - - - dccV23::KeyboardLayoutDialog - - Cancel - إلغاء - - - Add - إضافة - - - Add Keyboard Layout - إضافة تخطيط لوحة مفاتيح - - - - dccV23::KeyboardPlugin - - Keyboard and Language - اللغة ولوحة المفاتيح - - - Keyboard - لوحة المفاتيح - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - تخطيط لوحة المفاتيح - - - Language - اللغة - - - Shortcuts - الإختصارات - - - - dccV23::MainWindow - - Help - مساعدة - - - - dccV23::ModifyPasswdPage - - Change Password - تغيير كلمة المرور - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - كلمة المرور الحالية - - - Forgot password? - - - - New Password - كلمة المرور الجديدة - - - Repeat Password - إعادة كلمة المرور - - - Password Hint - - - - Cancel - إلغاء - - - Save - حفظ - - - Passwords do not match - كلمتا المرور غير متطابقتان - - - Required - مطلوب - - - Optional - اختياري - - - Password cannot be empty - لا يمكن ترك كلمة المرور فارغة - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - كلمة المرور خاطئة - - - New password should differ from the current one - كلمة المرور الجديدة يجب أن تختلف عن الحالية - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - الفأرة - - - General - عام - - - Touchpad - لوحة اللمس - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - سرعة المؤشر - - - Mouse Acceleration - تسارع الفأرة - - - Disable touchpad when a mouse is connected - تعطيل لوحة اللمس عند توصيل فأرة - - - Natural Scrolling - تمرير طبيعي - - - Slow - بطيء - - - Fast - سريع - - - - dccV23::MultiScreenWidget - - Multiple Displays - شاشات متعددة - /display/Multiple Displays - - - Mode - النمط - /display/Mode - - - Main Screen - الشاشة الرئيسية - /display/Main Scree - - - Duplicate - مكرر - - - Extend - تمديد - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - اشعارات - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - اكتشاف راحة اليد - - - Minimum Contact Surface - أدنى مساحة تلامس - - - Minimum Pressure Value - أدنى مقدار للضغط - - - Disable the option if touchpad doesn't work after enabled - يُرجى تعطيل الخيار إن لم تعمل لوحة اللمس بعد تمكينها. - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - لا يمكن ترك كلمة المرور فارغة - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - كلمة المرور يجب أن لا تقل عن 1 حرف - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - معدل التحديث - - - Hz - هرتز - - - Recommended - مستحسن - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - هل أنت متأكد من حذف هذا الحساب؟ - - - Delete account directory - حذف دليل الحساب - - - Cancel - إلغاء - - - Delete - حذف - - - - dccV23::ResolutionWidget - - Resolution - الدقة - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - افتراضي - - - Fit - - - - Stretch - - - - Center - - - - Recommended - مستحسن - - - - dccV23::RotateWidget - - Rotation - دوران - /display/Rotation - - - Standard - قياسي - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - الشاشة تدعم فقط 100% من التكبير - - - Display Scaling - عرض الشاشة - - - - dccV23::SearchInput - - Search - بحث - - - - dccV23::SecondaryScreenDialog - - Brightness - السطوع - - - - dccV23::SecurityLevelItem - - Weak - ضعيف - - - Medium - متوسط - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - إلغاء - - - Confirm - تأكيد - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - تحرير - - - Done - تم - - - - dccV23::ShortCutSettingWidget - - System - النظام - - - Window - النافذة - - - Workspace - مساحة العمل - - - Assistive Tools - اﻷدوات المساعِدة - - - Custom Shortcut - اختصار مخصص - - - Restore Defaults - استعادة الافتراضيات - - - Shortcut - إختصار - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - الرجاء إعادة تعيين الاختصار - - - Cancel - إلغاء - - - Replace - استبدال - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - هذا الإختصار يتعارض مع %1، انقر على إضافة لجعل هذا الإختصار فعال على الفور - - - - dccV23::ShortcutItem - - Enter a new shortcut - أدخل اختصارًا جديدًا - - - - dccV23::SystemInfoModel - - available - متاح - - - - dccV23::SystemInfoModule - - About This PC - عن هذا الجهاز - - - Computer Name - اسم الحاسوب - - - systemInfo - - - - OS Name - - - - Version - الإصدار - - - Edition - - - - Type - النوع - - - Authorization - تفويض - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - رخصة النسخة - - - End User License Agreement - اتفاقية ترخيص المستخدم النهائي - - - Privacy Policy - - - - %1-bit - %1 بت - - - - dccV23::SystemInfoPlugin - - System Info - معلومات النظام - - - - dccV23::SystemLanguageSettingDialog - - Cancel - إلغاء - - - Add - إضافة - - - Add System Language - إضافة لغة النظام - - - - dccV23::SystemLanguageWidget - - Edit - تحرير - - - Language List - قائمة اللغات - - - Add Language - - - - Done - تم - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - شاشة اللمس - - - Select your touch screen when connected or set it here. - اختر شاشة اللمس عندما تقوم بتوصيلها أو قم بضبطها هنا - - - Confirm - تأكيد - - - Cancel - إلغاء - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - سرعة المؤشر - - - Slow - بطيء - - - Fast - سريع - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - الانضمام إلى برنامج تجربة المستخدم - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - سنة - - - Month - شهر - - - Day - يوم - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - مطلوب المصادقة لتغيير خادم NTP - - - - DefAppModule - - Default Applications - التطبيقات الافتراضية - - - - DefAppPlugin - - Webpage - صفحة الويب - - - Mail - البريد - - - Text - نص - - - Music - موسيقى - - - Video - الفيديو - - - Picture - صورة - - - Terminal - الطرفية - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - إلغاء - - - Next - التالي - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - الرف - - - Multiple Displays - شاشات متعددة - - - Show Dock - - - - Mode - النمط - - - Position - الموضع - - - Status - الحالة - - - Show recent apps in Dock - - - - Size - الحجم - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - النمط الحداثي - - - Efficient mode - النمط الفعال - - - Top - أعلى - - - Bottom - أسفل - - - Left - يسار - - - Right - يمين - - - Location - الموقع - - - Keep shown - - - - Keep hidden - اﻹبقاء مخفياً - - - Smart hide - الاخفاء الذكي - - - Small - صغير - - - Large - كبير - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - تحرير - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - تم - - - Add Face - - - - The name already exists - الاسم موجود بالفعل - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - إضافة بصمة الإصبع - - - Cancel - إلغاء - - - Next - التالي - - - - FingerInfoWidget - - Place your finger - ضع اصبعك - - - Place your finger firmly on the sensor until you're asked to lift it - ضع إصبعك بإحكام على المستشعر حتى يُطلب منك رفعه - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - ضع حواف بصمة إصبعك على المستشعر - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - تمت إضافة بصمة الإصبع - - - - FingerWidget - - Edit - تحرير - - - Fingerprint Password - كلمة المرور ببصمة الأصبع - - - You can add up to 10 fingerprints - - - - Done - تم - - - The name already exists - الاسم موجود بالفعل - - - Add Fingerprint - إضافة بصمة الإصبع - - - - GeneralModule - - General - عام - - - Balanced - متوازن - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - تحرير - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - تم - - - Add Iris - - - - The name already exists - الاسم موجود بالفعل - - - Iris - - - - - KeyLabel - - None - لا شيء - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - حجم الإدخال - - - Input Level - مستوى اﻹدخال - - - - PersonalizationDesktopModule - - Desktop - سطح المكتب - - - Window - النافذة - - - Window Effect - تأثيرات النوافذ - - - Window Minimize Effect - - - - Transparency - الشفافية - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - صغير - - - Middle - - - - Large - كبير - - - - PersonalizationModule - - Personalization - التخصيص - - - - PersonalizationThemeList - - Cancel - إلغاء - - - Save - حفظ - - - Light - إضاءة - - - Dark - مظلم - - - Auto - تلقائي - - - Default - افتراضي - - - - PersonalizationThemeModule - - Theme - السمة - - - Appearance - - - - Accent Color - تدرج لوني - - - Icon Settings - - - - Icon Theme - سمة الأيقونات - - - Cursor Theme - سمة المؤشر - - - Text Settings - - - - Font Size - حجم الخط: - - - Standard Font - خط قياسي - - - Monospaced Font - خط أحادي المسافة - - - Light - إضاءة - - - Auto - تلقائي - - - Dark - مظلم - - - - PersonalizationThemeWidget - - Light - إضاءة - General - /personalization/General - - - Dark - مظلم - General - /personalization/General - - - Auto - تلقائي - General - /personalization/General - - - Default - افتراضي - - - - PersonalizationWorker - - Custom - مخصص - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - رمز PIN للتوصيل مع جهاز البلوتوث هو: - - - Cancel - إلغاء - - - Confirm - تأكيد - - - - PowerModule - - Power - الطاقة - - - Battery low, please plug in - البطارية منخفضة، رجاءً اشبك السلك الكهربائي - - - Battery critically low - مستوى البطارية منخفض - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - كاميرا - - - Microphone - المايكروفون - - - User Folders - - - - Calendar - التقويم - - - Screen Capture - - - - - QObject - - Control Center - مركز التحكم - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - مفعّل - - - View - عرض - - - To be activated - ليتم تفعيلها - - - Activate - تفعيل - - - Expired - منتهي الصلاحية - - - In trial period - في مدة التجريب - - - Trial expired - انتهت التجربة - - - Touch Screen Settings - إعدادات شاشة اللمس - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - إلغاء - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - نظامك غير مصرح به، يرجى تفعيله أولاً - - - Update successful - نجح التحديث - - - Failed to update - فشل التحديث - - - - SearchInput - - Search - بحث - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - مؤثرات الصوت - - - - SoundModel - - Boot up - الاقلاع - - - Shut down - إيقاف التشغيل - - - Log out - تسجيل الخروج - - - Wake up - إيقاظ - - - Volume +/- - مستوى الصوت +/- - - - Notification - اشعارات - - - Low battery - البطارية ضعيفة - - - Send icon in Launcher to Desktop - أرسل الأيقونة من التطبيقات إلى سطح المكتب - - - Empty Trash - أفراغ سلة المهملات - - - Plug in - إدخال - - - Plug out - إخراج - - - Removable device connected - تم توصيل جهاز قابل للإزالة - - - Removable device removed - تم إزالة جهاز قابل للإزالة - - - Error - خطأ - - - - SoundModule - - Sound - الصوت - - - - SoundPlugin - - Output - الإخراج - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - الإدخال - - - Sound Effects - مؤثرات الصوت - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - النمط - - - Output Volume - حجم اﻹخراج - - - Volume Boost - تضخيم الصوت - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - تبديل يمين/يسار - - - Left - يسار - - - Right - يمين - - - - TimeSettingModule - - Time Settings - إعدادات الوقت - - - Time - - - - Auto Sync - مزامنة تلقائية - - - Reset - إعادة تعيين - - - Save - حفظ - - - Server - الخادم - - - Address - عنوان - - - Required - مطلوب - - - Customize - تخصيص - - - Year - سنة - - - Month - شهر - - - Day - يوم - - - - TimeZoneChooser - - Cancel - إلغاء - - - Confirm - تأكيد - - - Add Timezone - إضافة المنطقة الزمنية - - - Add - إضافة - - - Change Timezone - تغيير المنطقة الزمنية - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - إرجاع - - - Save - حفظ - - - - TimezoneItem - - Tomorrow - غدا - - - Yesterday - أمس - - - Today - اليوم - - - %1 hours earlier than local - أبكر ب %1 ساعات من المحلي - - - %1 hours later than local - متأخر %1 ساعات عن المحلي - - - - TimezoneModule - - Timezone List - قائمة المنطقة الزمنية - - - System Timezone - المنطقة الزمنية للنظام - - - Add Timezone - إضافة المنطقة الزمنية - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - إلغاء - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - فشل التحديث: مساحة القرص غير كافية - - - Dependency error, failed to detect the updates - خطأ في الملفات المعتمد عليها، فشل في تحديد التحديثات - - - Restart the computer to use the system and the applications properly - أعد تشغيل الحاسوب كي يشتغل النظام و البرامج كم ينبغي - - - Network disconnected, please retry after connected - قُطع الاتصال الشبكي، يُرجى إعادة المحاولة بعد إعادة الاتصال. - - - Your system is not authorized, please activate first - نظامك غير مصرح به، يرجى تفعيله أولاً - - - This update may take a long time, please do not shut down or reboot during the process - هذا التحديث قد يأخذ وقتًا طويًا، رجاءً لا تقم بإلغاء أو إعادة التشغيل خلال هذه العملية - - - Updates Available - - - - Current Edition - الإصدار الحالي - - - Updating... - يتم الآن التحديث... - - - Update All - - - - Last checking time: - - - - Your system is up to date - نظامك محدث حتى الآن - - - Check for Updates - - - - Checking for updates, please wait... - التحقق من وجود تحديثات، يرجى الانتظار ... - - - The newest system installed, restart to take effect - النظام الأحدث مثبت الآن ، إعادة التشغيل - - - %1% downloaded (Click to pause) - %1% تم تحميله (انقر للإيقاف) - - - %1% downloaded (Click to continue) - %1% تم تحميله (أنقر للإستمرار) - - - Your battery is lower than 50%, please plug in to continue - البطارية أقل من 50٪، يرجى التوصيل للمتابعة - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - الرجاء التأكد من أن الطاقة كافية لإعادة التشغيل، وعدم فصل الجهاز من الطاقة - - - Size - الحجم - - - - UpdateModule - - Updates - التحديثات - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - فشل التحديث: مساحة القرص غير كافية - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - النظام الأحدث مثبت الآن ، إعادة التشغيل - - - Waiting - انتظار - - - Backing up - - - - System backup failed - فشل النسخ الاحتياطي للنظام - - - Release date: - - - - Server - الخادم - - - Desktop - سطح المكتب - - - Version - الإصدار - - - - UpdateSettingsModule - - Update Settings - إعدادات التحديث - - - System - النظام - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - تحميل تلقائي للتحديثات - - - Switch it on to automatically download the updates in wireless or wired network - فعله ليتم تنزيل التحديثات تلقائيًا من خلال الشبكة السلكية أو اللاسلكية - - - Auto Install Updates - - - - Updates Notification - الإشعارات الخاصة بالتحديثات - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - الإصدار الحالي - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - على البطارية - - - Never - أبدا - - - Shut down - إيقاف التشغيل - - - Suspend - إسبات - - - Hibernate - وضع السكون - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - دقيقة واحدة - - - %1 Minutes - %1 دقائق - - - 1 Hour - ساعة 1 - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - قفل الشاشة بعد - - - Computer suspends after - - - - Computer will suspend after - الحاسوب سيدخل وضع الإسبات بعد - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - السعة القصوى - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - وضع الطاقة - - - 1 Minute - دقيقة واحدة - - - %1 Minutes - %1 دقائق - - - 1 Hour - ساعة 1 - - - Never - أبدا - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - قفل الشاشة بعد - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - إيقاف التشغيل - - - Suspend - إسبات - - - Hibernate - وضع السكون - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - لوح الرسم - - - Mode - النمط - - - Pressure Sensitivity - حساسية الضغط - - - Pen - القلم - - - Mouse - الفأرة - - - Light - إضاءة - - - Heavy - ثقيل - - - - main - - Control Center provides the options for system settings. - مركز التحكم يقدم الخيارات لإعداد النظام. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ar_EG.ts b/dcc-old/translations/dde-control-center_ar_EG.ts deleted file mode 100644 index 86636ab620..0000000000 --- a/dcc-old/translations/dde-control-center_ar_EG.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - أغلق - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - أغلق - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - أغلق - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - أغلق - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - أغلق - - - OK - حسنا - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - أغلق - - - Save - إحفظ - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - أغلق - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - أغلق - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - أغلق - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - أغلق - - - Save - إحفظ - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - أغلق - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - عدِّل - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - أغلق - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - أغلق - - - Save - إحفظ - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - خطأ في الشبكة - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - أغلق - - - Delete - إمسح - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - أغلق - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - عدِّل - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - أغلق - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - أغلق - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - عدِّل - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - أغلق - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - أغلق - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - عدِّل - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - أغلق - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - عدِّل - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - عدِّل - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - أغلق - - - Save - إحفظ - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - أغلق - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - أغلق - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - إحفظ - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - أغلق - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - إحفظ - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - أغلق - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - خطأ في الشبكة - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - أبداً - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - أبداً - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ast.ts b/dcc-old/translations/dde-control-center_ast.ts deleted file mode 100644 index 134ec25edf..0000000000 --- a/dcc-old/translations/dde-control-center_ast.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Coneutar - - - Disconnect - Desconeutar - - - Rename - Renomar - - - Send Files - - - - Ignore this device - - - - Connecting - Coneutando - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Encaboxar - - - Next - Siguiente - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Fecho - - - Failed to enroll your face - - - - Try Again - - - - Close - Zarrar - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Encaboxar - - - Next - Siguiente - - - Iris enrolled - - - - Done - Fecho - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Buelga - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Coneutáu - - - Not connected - Nun se coneutó - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Encaboxar - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Encaboxar - - - Confirm - button - Confirmar - - - - dccV23::AccountSpinBox - - Always - Siempres - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Nome del usuariu - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - Aniciar sesión automáticamente - - - Login Without Password - - - - Validity Days - - - - Group - Grupu - - - The full name is too long - - - - Standard User - - - - Administrator - Alministrador - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Encaboxar - - - OK - Aceutar - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Encaboxar - - - Save - Guardar - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Imáxenes - - - - dccV23::BootWidget - - Updating... - Anovando... - - - Startup Delay - Retradu d'aniciu - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - Menú d'arranque - - - Change GRUB password - - - - Username: - Nome del usuariu: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Ríquese - - - Cancel - button - Encaboxar - - - Confirm - button - Confirmar - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - Rellumu - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - Cambéu nocherniegu - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - Menú d'arranque - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Grupu - - - Cancel - Encaboxar - - - Create - Crear - - - New User - - - - User Type - - - - Username - Nome del usuariu - - - Full Name - - - - Password - Contraseña - - - Repeat Password - Repitir contraseña - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - Alministrador - - - Customized - - - - Required - Ríquese - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Imáxenes - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - Nome - - - Required - Ríquese - - - Command - Comandu - - - Cancel - Encaboxar - - - Add - Amestar - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Ríquese - - - Cancel - Encaboxar - - - Save - Guardar - - - Shortcut - Atayu - - - Name - Nome - - - Command - Comandu - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - Atayu - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Siguiente - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Encaboxar - - - Restart Now - Reaniciar agora - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Pantalla - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Prueba del clic doblu - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Retrasu de repitición - - - Short - - - - Long - - - - Repeat Rate - Tasa de repitición - - - Slow - Lento - - - Fast - Rápido - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - Manzorga - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Velocidá del clic doblu - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Distribución de tecláu - - - Edit - Editar - - - Add Keyboard Layout - Amestar distribución de tecláu - - - Done - Fecho - - - - dccV23::KeyboardLayoutDialog - - Cancel - Encaboxar - - - Add - Amestar - - - Add Keyboard Layout - Amestar distribución de tecláu - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tecláu y llingua - - - Keyboard - Tecláu - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Distribución de tecláu - - - Language - Llingua - - - Shortcuts - Atayos - - - - dccV23::MainWindow - - Help - Ayuda - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Contraseña actual - - - Forgot password? - - - - New Password - Contraseña nueva - - - Repeat Password - Repitir contraseña - - - Password Hint - - - - Cancel - Encaboxar - - - Save - Guardar - - - Passwords do not match - - - - Required - Ríquese - - - Optional - Opcional - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Contraseña incorreuta - - - New password should differ from the current one - La contraseña nueva debería estremase l'actual - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Mur - - - General - Xeneral - - - Touchpad - Panel táutil - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Velocidá'l punteru - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Desplazamientu natural - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Mou - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Duplicar - - - Extend - Estender - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Desaniciar el direutoriu de la cuenta - - - Cancel - Encaboxar - - - Delete - Desaniciar - - - - dccV23::ResolutionWidget - - Resolution - Resolución - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Por defeutu - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - Rotación - /display/Rotation - - - Standard - Estándar - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Guetar - - - - dccV23::SecondaryScreenDialog - - Brightness - Rellumu - - - - dccV23::SecurityLevelItem - - Weak - Feble - - - Medium - Medio - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Encaboxar - - - Confirm - Confirmar - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Editar - - - Done - Fecho - - - - dccV23::ShortCutSettingWidget - - System - Sistema - - - Window - Ventana - - - Workspace - Estaya de trabayu - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - Reafitar valores - - - Shortcut - Atayu - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Encaboxar - - - Replace - Trocar - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - Nome del ordenador - - - systemInfo - - - - OS Name - - - - Version - Versión - - - Edition - - - - Type - Triba - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Llicencia d'edición - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Encaboxar - - - Add - Amestar - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Editar - - - Language List - - - - Add Language - - - - Done - Fecho - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Confirmar - - - Cancel - Encaboxar - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Velocidá'l punteru - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Añu - - - Month - Mes - - - Day - Día - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Aplicaciones predeterminaes - - - - DefAppPlugin - - Webpage - - - - Mail - Corréu - - - Text - Testu - - - Music - Música - - - Video - Videu - - - Picture - Semeyes - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Encaboxar - - - Next - Siguiente - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - Mou - - - Position - Posición - - - Status - Estáu - - - Show recent apps in Dock - - - - Size - Tamañu - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - Arriba - - - Bottom - Abaxo - - - Left - Izquierda - - - Right - Drecha - - - Location - Allugamientu - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - Pequeñu - - - Large - Llargu - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Editar - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Fecho - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Encaboxar - - - Next - Siguiente - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Editar - - - Fingerprint Password - Contraseña per buelga - - - You can add up to 10 fingerprints - - - - Done - Fecho - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - Xeneral - - - Balanced - Balanceáu - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Editar - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Fecho - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Nada - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Volume d'entrada - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Escritoriu - - - Window - Ventana - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Pequeñu - - - Middle - - - - Large - Llargu - - - - PersonalizationModule - - Personalization - Personalización - - - - PersonalizationThemeList - - Cancel - Encaboxar - - - Save - Guardar - - - Light - - - - Dark - - - - Auto - Auto - - - Default - Por defeutu - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Tema d'iconos - - - Cursor Theme - Tema del cursor - - - Text Settings - - - - Font Size - Tamañu de la fonte - - - Standard Font - Fonte estándar - - - Monospaced Font - Fonte monoespaciada - - - Light - - - - Auto - Auto - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Por defeutu - - - - PersonalizationWorker - - Custom - Personalizáu - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - El PIN pa coneutase col preséu Bluetooth ye: - - - Cancel - Encaboxar - - - Confirm - Confirmar - - - - PowerModule - - Power - Enerxía - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Cámara - - - Microphone - Micrófonu - - - User Folders - - - - Calendar - Calendariu - - - Screen Capture - - - - - QObject - - Control Center - Centru de control - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - Ver - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Encaboxar - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - Fallu al anovar - - - - SearchInput - - Search - Guetar - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Efeutos de soníu - - - - SoundModel - - Boot up - - - - Shut down - Apagar - - - Log out - Zarrar sesión - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - Balerar papelera - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - Fallu - - - - SoundModule - - Sound - Soníu - - - - SoundPlugin - - Output - Salida - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Entrada - - - Sound Effects - Efeutos de soníu - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Mou - - - Output Volume - Volume de salida - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Balance izquierda/drecha - - - Left - Izquierda - - - Right - Drecha - - - - TimeSettingModule - - Time Settings - Axustes d'hora - - - Time - - - - Auto Sync - - - - Reset - Reaniciar - - - Save - Guardar - - - Server - Sirvidor - - - Address - Direición - - - Required - Ríquese - - - Customize - - - - Year - Añu - - - Month - Mes - - - Day - Día - - - - TimeZoneChooser - - Cancel - Encaboxar - - - Confirm - Confirmar - - - Add Timezone - Amestar fusu horariu - - - Add - Amestar - - - Change Timezone - Camudar fusu horariu - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Desfacer - - - Save - Guardar - - - - TimezoneItem - - Tomorrow - Mañana - - - Yesterday - Ayeri - - - Today - Güei - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Llista de fusos horarios - - - System Timezone - - - - Add Timezone - Amestar fusu horariu - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Encaboxar - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - Anovando... - - - Update All - - - - Last checking time: - - - - Your system is up to date - El to sistema ta anováu - - - Check for Updates - - - - Checking for updates, please wait... - Comprobando anovamientos, espera por favor... - - - The newest system installed, restart to take effect - Instaláronse los anovamientos, reanicia pa que faigan efeutu - - - %1% downloaded (Click to pause) - Baxóse'l %1% (clic pa posar) - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - La to batería tien menos del 50%, coneuta'l cargador pa siguir - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Tamañu - - - - UpdateModule - - Updates - Anovamientos - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Instaláronse los anovamientos, reanicia pa que faigan efeutu - - - Waiting - Esperando - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Sirvidor - - - Desktop - Escritoriu - - - Version - Versión - - - - UpdateSettingsModule - - Update Settings - Axustes d'anovamientu - - - System - Sistema - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Enxamás - - - Shut down - Apagar - - - Suspend - Suspender - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 minuntu - - - %1 Minutes - %1 minutos - - - 1 Hour - 1 hora - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - L'ordenador suspenderáse dempués de - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 minuntu - - - %1 Minutes - %1 minutos - - - 1 Hour - 1 hora - - - Never - Enxamás - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Apagar - - - Suspend - Suspender - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Mou - - - Pressure Sensitivity - - - - Pen - Llápiz - - - Mouse - Mur - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_az.ts b/dcc-old/translations/dde-control-center_az.ts deleted file mode 100644 index 980eca26a5..0000000000 --- a/dcc-old/translations/dde-control-center_az.ts +++ /dev/null @@ -1,3997 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Digər Bluetooth cihazlarına bu cihazı tapmağa icazə verin - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Yaxılıqdakı cihazları (səsucaldıcılar, klaviatura, siçan) tapmaq üçün bluetooth'u açın - - - My Devices - Mənim cihazlarım - - - Other Devices - Digər cihazlar - - - Show Bluetooth devices without names - Bluetooth cihazlarını adsız göstərmək - - - Connect - Bağlan - - - Disconnect - Bağlantını ləğv et - - - Rename - Yenidən adlandır - - - Send Files - Fayllar göndərmək - - - Ignore this device - Bu cihazı nəzərə almayın - - - Connecting - Qoşulur - - - Disconnecting - Bağlantı ayrılır - - - - AddButtonWidget - - Add Application - Tətbiq əlavə edin - - - Open Desktop file - İş Masası faylını açmaq - - - Apps (*.desktop) - Tətbiqlər (*.desktop) - - - All files (*) - Bütün fayllar (*) - - - - AddFaceInfoDialog - - Enroll Face - Üzü qeydə alın - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Üzünüzü hər hansı bir əşya ilə örtülmədiyindən onun təmiz göründüyündən əmin olun. Üzünüz yaxşı işıqlanmalıdır. - - - Cancel - İmtina - - - Next - Sonrakı - - - Face enrolled - Üzün qeydə alınması - - - Use your face to unlock the device and make settings later - Cihazı kiliddən çıxartmaq üçün üzünüzdən istifadə edin və ayarları sonra dəyişdirin - - - Done - Tamamlandı - - - Failed to enroll your face - Üz qeydiyyatı alınmadı - - - Try Again - Yenidən cəhd edin - - - Close - Bağlayın - - - - AddFingerDialog - - Cancel - İmtina - - - Done - Tamamlandı - - - Scan Again - Yenidən oxudun - - - Scan Suspended - Oxutma dayandırılıb - - - - AddIrisInfoDialog - - Enroll Iris - Gözü qeydiyyatdan keçirin - - - Cancel - İmtina - - - Next - Sonrakı - - - Iris enrolled - Göz qişasnın qeydiyyatı - - - Done - Tamamlandı - - - Failed to enroll your iris - Göz tanınmasının qeydiyyatı alınmadı - - - Try Again - Yenidən cəhd edin - - - - AdvancedSettingModule - - Advanced Setting - - - - Audio Framework - - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - - - - - AuthenticationInfoItem - - No more than 15 characters - 15 simvoldan çox olmayaraq - - - Use letters, numbers and underscores only, and no more than 15 characters - 15 simvoldan çox olmayaraq hərflərdən, saylardan, və alt xətlərdən istifadə edin - - - Use letters, numbers and underscores only - Hərflərdən, saylardan, və alt xətlərdən istifadə edin - - - - AuthenticationModule - - Biometric Authentication - Biometrik Kimlik Doğrulaması - - - - AuthenticationPlugin - - Fingerprint - Barmaq izi - - - Face - Üz - - - Iris - Göz qişası - - - - BluetoothDeviceModel - - Connected - Qoşuldu - - - Not connected - Qoşulmayıb - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Bluetooth cihaz idarəetməsi - - - - CharaMangerModel - - Fingerprint1 - Barmaq izi1 - - - Fingerprint2 - Barmaq izi2 - - - Fingerprint3 - Barmaq izi3 - - - Fingerprint4 - Barmaq izi4 - - - Fingerprint5 - Barmaq izi5 - - - Fingerprint6 - Barmaq izi6 - - - Fingerprint7 - Barmaq izi7 - - - Fingerprint8 - Barmaq izi8 - - - Fingerprint9 - Barmaq izi9 - - - Fingerprint10 - Barmaq izi10 - - - Scan failed - Oxuna bilməsi - - - The fingerprint already exists - Bu barmaq izi artıq mövcuddur - - - Please scan other fingers - Lütfən, digər barmaqları oxudun - - - Unknown error - Naməlum xəta - - - Scan suspended - Oxutma dayandırıldı - - - Cannot recognize - Tanınmır - - - Moved too fast - Çox sürətli hərəkət edir - - - Finger moved too fast, please do not lift until prompted - Barmağı çox tez qaldırdınız, lütfən, cihaz kiliddən çıxana qədər barmağı qaldırmayın - - - Unclear fingerprint - Aydın olmayan barmaq izi - - - Clean your finger or adjust the finger position, and try again - Barmağınızı təmizləyin və ya barmaq yerini ayarlayın və yenidən cəhd edin - - - Already scanned - Artıq oxundu - - - Adjust the finger position to scan your fingerprint fully - Barmaq izinin tam oxunması üçün barmaq yerini ayarlayın - - - Finger moved too fast. Please do not lift until prompted - Barmağı çox tez qaldırdınız, lütfən, cihaz kiliddən çıxana qədər barmağı qaldırmayın - - - Lift your finger and place it on the sensor again - Barmağınızı qaldırın və onu yenidən sensorun üzərinə qoyun - - - Position your face inside the frame - Üzünüzü çərçivə daxilinə yerləşdirin - - - Face enrolled - Üzün qeydə alınması - - - Position a human face please - Lütfən insan üzü yerləşdirin - - - Keep away from the camera - Kameradan aralı tutm - - - Get closer to the camera - Kameraya yaxın tutun - - - Do not position multiple faces inside the frame - Bir çərçivə daxilində bir neçə üz yerləşdirməyin - - - Make sure the camera lens is clean - Kamera linzasının təmiz olduğuna əmin olun - - - Do not enroll in dark, bright or backlit environments - Qeydiyyatı qaranlıq, parlaq və arxa işıqlanma mühitində etməyin - - - Keep your face uncovered - üzünüzü açıq saxlayın - - - Scan timed out - Oxuma vaxtı bitdi - - - Device crashed, please scan again! - Cihazda xəta baş verdi, yenidən cəhd edin! - - - Cancel - İmtina - - - - CooperationSettingsDialog - - Collaboration Settings - Birgə iş ayarları - - - Share mouse and keyboard - Siçan və klaviaturadan birgə istifadə - - - Share your mouse and keyboard across devices - Cihazlarınızda siçan və klaviaturadan birgə istifadə edin - - - Share clipboard - Mübadilə yaddaşından birgə istifadə - - - Storage path for shared files - Paylaşılan faylları saxlamaq üçün yer - - - Share the copied content across devices - Ciahazlarınızda mübadilə yaddaşını birgə istifadə edin - - - Cancel - button - İmtina edirəm - - - Confirm - button - Təsdiq edirəm - - - - dccV23::AccountSpinBox - - Always - Həmişə - - - - dccV23::AccountsModule - - Users - İstifadəçilər - - - User management - İstifadəçinin idarə edilməsi - - - Create User - İstifadəçi yaradın - - - Username - İstifadəçi adı - - - Change Password - Şifrəni dəyişin - - - Delete User - İstifadəçini silin - - - User Type - İstifadəçi növü - - - Auto Login - Avtomatik giriş - - - Login Without Password - Şifrəsiz daxil olmaq - - - Validity Days - Etibarlılıq müddəti - - - Group - Qrup - - - The full name is too long - Tam ad çox uzundur - - - Standard User - Standart istifadəçi - - - Administrator - Administrator - - - Reset Password - Şifrəni sıfırlayın - - - The full name has been used by other user accounts - Tam ad başqa istifadəçi hesabları tərəfindən istifadə olunub - - - Full Name - Tam ad - - - Go to Settings - Ayarlara keçin - - - Cancel - İmtina - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - "Avtomatik giriş" yalnız bir hesab üçün aktiv edilə bilər, Lütfən oncə onu "%1" hesabı üçün söndürün - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Sizin host, domen serverindən uğurla silindi - - - Your host joins the domain server successfully - Sizin host, domen serverinə uğurla qoşuldu - - - Your host failed to leave the domain server - Sizin host, domen serverini tərk edə bilmədi - - - Your host failed to join the domain server - Sizin host, domen serverinə qoşula bilmədi - - - AD domain settings - AD domen ayarları - - - Password not match - Şifrələr oxşar deyil - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - İş Masasında və bildiriş mərkəzində %1 bildirişlərini göstərmək - - - Play a sound - Səsləndirmək - - - Show messages on lockscreen - Kilid ekranında ismarıcları göstərmək - - - Show in notification center - Bildiriş mərkəzində göstərmək - - - Show message preview - İsmarıc öncədən baxışını göstərmək - - - - dccV23::AvatarListDialog - - Person - Fərd - - - Animal - Heyvan - - - Illustration - İllüstrasiya - - - Expression - İfadə - - - Custom Picture - Xüsusi şəkil - - - Cancel - İmtina - - - Save - Saxla - - - - dccV23::AvatarListFrame - - Dimensional Style - Ölçülü üslub - - - Flat Style - Düz üslub - - - - dccV23::AvatarListView - - Images - Şəkillər - - - - dccV23::BootWidget - - Updating... - Yenilənir... - - - Startup Delay - Başlama gecikməsi - - - Theme - Mövzu - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Önyükləmə (boot) menyusundakı seçimlərə vurmaqla onu birinci önyükləmə kimi təyin edin və şəkili buraya atmaqla arxa fonu dəyişin - - - Click the option in boot menu to set it as the first boot - Birinci önyükləməni qurmaq üçün önyükləmə menyusundakı seçimə vurun - - - Switch theme on to view it in boot menu - Önyükləmə menyusunda mövzunu görmək üçün onu aktivləşdirin - - - GRUB Authentication - GRUB kimlik doğrulaması - - - GRUB password is required to edit its configuration - GRUB şifrəsi, onun tənzimləmələrinə düzəliş etməyi tələb edir - - - Change Password - Şifrəni dəyişin - - - Boot Menu - Önyükləmə menyusu - - - Change GRUB password - GRUB şifrəsini dəyişin - - - Username: - İstifadəçi adı: - - - root - kök - - - New password: - Yeni şifrə: - - - Repeat password: - Şifrəni təkrarlayın - - - Required - Tələb olunur - - - Cancel - button - İmtina - - - Confirm - button - Təsdiqləyin - - - Password cannot be empty - Şifrə boş ola bilməz - - - Passwords do not match - Şifrələr eyni deyil - - - - dccV23::BrightnessWidget - - Brightness - Parlaqlıq - - - Color Temperature - Rəng temperaturu - - - Auto Brightness - Avto parlaqlıq - - - Night Shift - Gecə rejimi - - - The screen hue will be auto adjusted according to your location - Ekran tonu yerləşdiyiniz yerə görə avtomatik tənzimlənəcəkdir - - - Change Color Temperature - Rəng temperaturunu dəyişmək - - - Cool - Sərin - - - Warm - İsti - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Çoxekranlı mübadilə - - - PC Collaboration - PC ilə birgə iş - - - Connect to - Qoşul: - - - Select a device for collaboration - Mübadilə üçün bu cihazı seç - - - Device Orientation - Cihazın dönmə istiqaməti - - - On the top - Yuxarıda - - - On the right - Sağda - - - On the bottom - Aşağıda - - - On the left - Solda - - - My Devices - Cihazlarım - - - Other Devices - Digər cihazlar - - - - dccV23::CommonInfoPlugin - - General Settings - Ümumi ayarlar - - - Boot Menu - Önyükləmə menyusu - - - Developer Mode - Tərtibatçı rejimi - - - User Experience Program - İstifadəçi Təcrübəsi Proqramı - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Qəbul etmək və İstifadəçi Təcrübəsi Proqramına qoşulmaq - - - The Disclaimer of Developer Mode - Təcrübəçi Rejimi məsuliyyətindən imtina - - - Agree and Request Root Access - Kök icazəsini qəbul etmək və tələb etmək - - - Failed to get root access - Kök (root) giriş icazələri alına bilmədi - - - Please sign in to your Union ID first - Lütfən, öncə Union İD'nizə daxil olun - - - Cannot read your PC information - Fərdi komputerinizin məlumatları oxuna bilmir - - - No network connection - Şəbəkə bağlantısı yoxdur - - - Certificate loading failed, unable to get root access - Sertifikat yüklənə bilmədi, kök (root) icazələri almaq mümkün deyil - - - Signature verification failed, unable to get root access - İmzanı doğrulamaq baş tutmadı, kök (root) icazəsi verilmir - - - - dccV23::CreateAccountPage - - Group - Qrup - - - Cancel - İmtina - - - Create - Yarat - - - New User - Yeni istifadəçi - - - User Type - İstifadəçi növü - - - Username - İstifadəçi adı - - - Full Name - Tam ad - - - Password - Şifrə - - - Repeat Password - Şifrəni təkrarlayın - - - Password Hint - Şifrə ipucu - - - The full name is too long - Tam ad çox uzundur - - - Passwords do not match - Şifrələr eyni deyil - - - Standard User - Standart istifadəçi - - - Administrator - Administrator - - - Customized - Özəlləşdirilmiş - - - Required - Tələb olunur - - - optional - ixtiyari - - - The hint is visible to all users. Do not include the password here. - İpucunu bütün istifadəçilər görür. Buraya şifrəni daxil etməyin. - - - Policykit authentication failed - Policykit doğrulaması baş tutmadı - - - Username must be between 3 and 32 characters - İstifadəçi adı 3-dən 32-yədək simvollar arasında olmalıdır - - - The first character must be a letter or number - İlk simvol hərf və ya rəqəm olmalıdır - - - Your username should not only have numbers - İstifadəçi adınız yalnız rəqəmlər ola bilməz - - - The username has been used by other user accounts - İstifadəçi adı başqa istifadəçi hesabları tərəfindən istifadə olunub - - - The full name has been used by other user accounts - Tam ad başqa istifadəçi hesabları tərəfindən istifadə olunub - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Heç bir şəkil yüklənməyib, bir şəkil yükləmək üçün vurun və ya onu buraya atın - - - Uploaded file type is incorrect, please upload again - Yüklənmiş fayl növü dəstəklənmir, yenidən yükləməniz xahiş olunur - - - Images - Şəkillər - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Özünüzə aid qısayol əlavə edin - - - Name - Ad - - - Required - Tələb olunur - - - Command - Əmr - - - Cancel - İmtina - - - Add - Əlavə edin - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Bu qısayol %1 ilə ziddiyətlidir, bu qısayolun dərhal qüvvəyə minməsi üçün Əlavə etmək düyməsinə vurun - - - - dccV23::CustomEdit - - Required - Tələb olunur - - - Cancel - İmtina - - - Save - Saxla - - - Shortcut - Qısayol - - - Name - Ad - - - Command - Əmr - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Bu qısayol %1 ilə ziddiyətlidir, bu qısayolun dərhal qüvvəyə minməsi üçün Əlavə etmək düyməsinə vurun - - - - dccV23::CustomItem - - Shortcut - Qısayol - - - Please enter a shortcut - Qısayolu daxil edin - - - - dccV23::CustomRegionFormatDialog - - Custom format - Xüsusi format - - - First day of week - Həftənin ilk günü - - - Short date - Qısa tarix formatı - - - Long date - Uzun tarix formatı - - - Short time - Qısa vaxt formatı - - - Long time - Uzun vaxt formatı - - - Currency symbol - Pul vahidi simvolu - - - Numbers - Saylar - - - Paper - Kağız - - - Cancel - İmtina - - - Save - Saxlayın - - - - dccV23::DetailInfoItem - - For more details, visit: - Daha genişməlumat üçün, baxın: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Kök icazəsi tələb etmək - - - Online - Şəbəkədə - - - Offline - Şəbəkədən kənar - - - Please sign in to your Union ID first and continue - Lütfən, öncə Union İD'nizə daxil olun və davam edin - - - Next - Sonrakı - - - Export PC Info - Fərdi komputer məlumatlarının ixracı - - - Import Certificate - Sertifikatın idxalı - - - 1. Export your PC information - 1. Fərdi komputerinizin məlumatlarını ixrac edin - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Oflayn sertifikatları endirmək üçün https://www.chinauos.com/developMode səhifəsinə keçin - - - 3. Import the certificate - 3. Sertifikatı idxal edin - - - - dccV23::DeveloperModeWidget - - Request Root Access - Kök icazəsi tələb etmək - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Tərtibatçı rejimi sizə tətbiq mağazasında olmayan imzalanmamış tətbiqləri quraşdırmaq və işə salmaq üçün kök (root) icazəsini aktivləşdirir, lakin bu sisiteminizi zədələyə bilər, lütfən, bunu istifadə edərkən ehtiyyatlı olun. - - - The feature is not available at present, please activate your system first - Hal-hazırda bu funksiya əlçatan deyil, öncə sisteminizi açın - - - Failed to get root access - Kök (root) giriş icazələri alına bilmədi - - - Please sign in to your Union ID first - Lütfən, öncə Union İD'nizə daxil olun - - - Cannot read your PC information - Fərdi komputerinizin məlumatları oxuna bilmir - - - No network connection - Şəbəkə bağlantısı yoxdur - - - Certificate loading failed, unable to get root access - Sertifikat yüklənə bilmədi, kök (root) icazələri almaq mümkün deyil - - - Signature verification failed, unable to get root access - İmzanı doğrulamaq baş tutmadı, kök (root) icazəsi verilmir - - - To make some features effective, a restart is required. Restart now? - Bəzi funksiyaların qüvvəyə minməsi üçün yenidən başlatmaq tələb olunur. İndi yenidən başlatmaq? - - - Cancel - İmtina - - - Restart Now - İndi yenidən başlat - - - Root Access Allowed - Kök icazəsi qəbul edildi - - - - dccV23::DisplayPlugin - - Display - Ekran - - - Light, resolution, scaling and etc - İşıqlanma, təsvir icazəsi və s - - - - dccV23::DouTestWidget - - Double-click Test - Cüt klik sınağı - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Klaviatura ayarları - - - Repeat Delay - Təkrarlanma gecikməsi - - - Short - Qısa - - - Long - Uzun - - - Repeat Rate - Təkrarlanma tezliyi - - - Slow - Zəif - - - Fast - Sürətli - - - Test here - Sınaq sahəsi - - - Numeric Keypad - Rəqəmsal klaviatura - - - Caps Lock Prompt - Böyük Hərf göstəricisi - - - - dccV23::GeneralSettingWidget - - Left Hand - Sol əl - - - Disable touchpad while typing - Yazan zaman toxunma paneli sönür - - - Scrolling Speed - Sürüşdürmə sürəti - - - Double-click Speed - Cüt klikləmə sürəti - - - Slow - Zəif - - - Fast - Sürətli - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Klaviatura qatı - - - Edit - Düzəliş edin - - - Add Keyboard Layout - Klaviatura qatı əlavə edin - - - Done - Tamamlandı - - - - dccV23::KeyboardLayoutDialog - - Cancel - İmtina - - - Add - Əlavə edin - - - Add Keyboard Layout - Klaviatura qatı əlavə edin - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Klaviatura və Dil - - - Keyboard - Klaviatura - - - Keyboard Settings - Klaviatura ayarları - - - keyboard Layout - klaviatura qatı - - - Keyboard Layout - Klaviatura qatı - - - Language - Dil - - - Shortcuts - Qısayollar - - - - dccV23::MainWindow - - Help - Kömək - - - - dccV23::ModifyPasswdPage - - Change Password - Şifrəni dəyişin - - - Reset Password - Şifrəni sıfırlayın - - - Resetting the password will clear the data stored in the keyring. - Şifrənin sıfırlanması açar bağında saxlanılan bütün verilənlərin silinməsi ilə nəticələnəcək. - - - Current Password - Hazırki şifrə - - - Forgot password? - Şifrəni unutmusunuz? - - - New Password - Yeni şifrə - - - Repeat Password - Şifrəni təkrarlayın - - - Password Hint - Şifrə ipucu - - - Cancel - İmtina - - - Save - Saxla - - - Passwords do not match - Şifrələr eyni deyil - - - Required - Tələb olunur - - - Optional - İstəyə görə - - - Password cannot be empty - Şifrə boş ola bilməz - - - The hint is visible to all users. Do not include the password here. - İpucunu bütün istifadəçilər görür. Buraya şifrəni daxil etməyin. - - - Wrong password - Səhv şifrə - - - New password should differ from the current one - Yeni şifrə hazırkı şifrədən fərqlənməlidir - - - System error - Sistem xətası - - - Network error - Şəbəkə xətası - - - - dccV23::MonitorControlWidget - - Identify - Müəyyən et - - - Gather Windows - Pəncərələri toplayın - - - Screen rearrangement will take effect in %1s after changes - Ekranın təkrar düzləndirilməsi dəyişiklərdən sonra %1san ərzində qüvvəyə minəcəkdir - - - - dccV23::MousePlugin - - Mouse - Siçan - - - General - Ümumi - - - Touchpad - Toxunma paneli - - - TrackPoint - İzləmə nöqtəsi - - - - dccV23::MouseSettingWidget - - Pointer Speed - Kursorun sürəti - - - Mouse Acceleration - Siçanın sürətləndirilməsi - - - Disable touchpad when a mouse is connected - Siçan qoşulduqda toxunma panelini söndürmək - - - Natural Scrolling - Təbii sürüşdürmə - - - Slow - Zəif - - - Fast - Sürətli - - - - dccV23::MultiScreenWidget - - Multiple Displays - Çoxsaylı ekran - /display/Multiple Displays - - - Mode - Rejim - /display/Mode - - - Main Screen - Əsas ekran - /display/Main Scree - - - Duplicate - Dublikat - - - Extend - Genişlət - - - Only on %1 - Yalnız %1 -də/da - - - - dccV23::NotificationModule - - AppNotify - Tətbiq bildirişi - - - Notification - Bildiriş - - - SystemNotify - Sistem bildirişi - - - - dccV23::PalmDetectSetting - - Palm Detection - Ovucun aşkarlanması - - - Minimum Contact Surface - Minimum təmas sahəsi - - - Minimum Pressure Value - Minimum təzyiq dəyəri - - - Disable the option if touchpad doesn't work after enabled - Aktiv edildikdən sonra toxunma paneli işləmirsə bu seçimi söndürün - - - - dccV23::PluginManager - - following plugins load failed - bu plaqinləri yükləmək mümkün olmadı - - - plugins cannot loaded in time - plaqinlər vaxtında yüklənmədi - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Məxfilik Siyasəti - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Məlumatlarınızın sizin üçün nə qədər vacib olduğunu yaxşı bilirik. Belə ki, bizim, sizin məlumatlarınızı necə topladığımızı, necə istifadə etdiyimizi, göndərdiyimizi və paylaşdığımızı əks etdirən Məxfilik Siyasətimiz var.</p><p> <a href="%1">Buraya vurun</a> və sonuncu məxfilik siyasətimizlə tanış olun və ya onu <a href="%1">%1</a> səhifəsindən onlayn öyrəninin. Lütfən müştəri məxfiliyi qaydalarımızı diqqətlə oxuyun və tam anlamağa çalışın. Hər-hansı sualınız varsa bizə müraciət edin: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Şifrə boş ola bilməz - - - Password must have at least %1 characters - Şifrə ən az %1 simvoldan ibarət olmalıdır - - - Password must be no more than %1 characters - Şifrə %1 simvoldan böyük olmamalıdır - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Şifrə yalnız İngilis hərfləri (böyük, kiçik hərfə həsas), saylar və ya xüsusi simvollardan (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) ibarət olmalıdır - - - No more than %1 palindrome characters please - %1 palondrom simvoldan artıq olmasın - - - No more than %1 monotonic characters please - %1 monoton simvoldan çox olmasın - - - No more than %1 repeating characters please - %1 təkrarlanan simvoldan artıq olmasın - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Şifrə böyük, kiçik hərflərdən, saylardan və simvollardan (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) ibarət olmalıdır - - - Password must not contain more than 4 palindrome characters - Şifrə 4 simvoldan çox palindromdan ibarət olmamalıdır - - - Do not use common words and combinations as password - Şifrə olaraq ümumi sözlərdən və söz birləşmələrindən istifadə etməyin - - - Create a strong password please - Lütfən güclü şifrə yaradın - - - It does not meet password rules - Bu, şifrə qaydalarına uyğun deyil - - - - dccV23::RefreshRateWidget - - Refresh Rate - Yeniləmə tezliyi - - - Hz - Hz - - - Recommended - Tövsiyə olunan - - - - dccV23::RegionFormatDialog - - Region format - Bölgə formatı - - - Default format - İlkin format - - - First of day - İlk gün - - - Short date - Qısa tarix formatı - - - Long date - Uzun tarix formatı - - - Short time - Qısa vaxt formatı - - - Long time - Uzun vaxt formatı - - - Currency symbol - Pul vahidi simvolu - - - Numbers - Saylar - - - Paper - Kağız - - - Cancel - İmtina - - - Save - Saxlayın - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Bu hesabı silmək isətdiyinizə əminsiniz? - - - Delete account directory - Hesab qovluğunu silmək - - - Cancel - İmtina - - - Delete - Silin - - - - dccV23::ResolutionWidget - - Resolution - Görüntü imkanı - /display/Resolution - - - Resize Desktop - İş Masasının ölçüsünü dəyişin - /display/Resize Desktop - - - Default - Varsayılan - - - Fit - Uyğun - - - Stretch - Dartmaq - - - Center - Mərkəz - - - Recommended - Tövsiyə olunan - - - - dccV23::RotateWidget - - Rotation - Döndərin - /display/Rotation - - - Standard - Standard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Monitor yalnız 100% miqyaslamanı dəstəkləyir - - - Display Scaling - Ekran miqyası - - - - dccV23::SearchInput - - Search - Axtar - - - - dccV23::SecondaryScreenDialog - - Brightness - Parlaqlıq - - - - dccV23::SecurityLevelItem - - Weak - Zəif - - - Medium - Orta - - - Strong - Güclü - - - - dccV23::SecurityQuestionsPage - - Security Questions - Təhlükəsizlik sualları - - - These questions will be used to help reset your password in case you forget it. - Bu suallar, şifrəni itirdiyiniz hallarda onu bərpa etmək üçün istifadə olunacaq. - - - Security question 1 - Təhlükəsizlik sualı 1 - - - Security question 2 - Təhlükəsizlik sualı 2 - - - Security question 3 - Təhlükəsizlik sualı 3 - - - Cancel - İmtina - - - Confirm - Təsdiqləyin - - - Keep the answer under 30 characters - Cavab 30 simvoldan artıq olmasın - - - Do not choose a duplicate question please - Təkrarlanan sual seçməyin - - - Please select a question - Buyurun sualı seçin - - - What's the name of the city where you were born? - Doğulduğunuz şəhərin adı nədir? - - - What's the name of the first school you attended? - Daxil olduğunuz ilk məktəbin adı nədir? - - - Who do you love the most in this world? - Həyatınızda ən çox nəyi sevirsiniz? - - - What's your favorite animal? - Sevdiyiniz heyvanın adı? - - - What's your favorite song? - Sevdiyiniz musiqi? - - - What's your nickname? - Ləqəbiniz nədir? - - - It cannot be empty - Bura boş buraxıla bilməz - - - - dccV23::SettingsHead - - Edit - Düzəliş edin - - - Done - Tamamlandı - - - - dccV23::ShortCutSettingWidget - - System - Sistem - - - Window - Pəncərə - - - Workspace - İş sahəsi - - - Assistive Tools - Köməkçi vasitələr - - - Custom Shortcut - Fərdi qısayol - - - Restore Defaults - Varsayəlanların bərpası - - - Shortcut - Qısayol - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Qısayolu sıfırlayın - - - Cancel - İmtina - - - Replace - Əvəz et - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Bu qısayol %1 ilə ziddiyyətlidir, bu qısayolun dərhal qüvvəyə minməsi üçün "Əvəz edin" vurun - - - - dccV23::ShortcutItem - - Enter a new shortcut - Yeni qısayol daxil edin - - - - dccV23::SystemInfoModel - - available - mövcud - - - - dccV23::SystemInfoModule - - About This PC - Bu kompyuter haqqında - - - Computer Name - Kompyuterin adı - - - systemInfo - sistem məlumatı - - - OS Name - ƏS adı - - - Version - Versiya - - - Edition - Buraxılış - - - Type - Növ - - - Authorization - Səlahiyyət - - - Processor - Prosessor - - - Memory - Yaddaş - - - Graphics Platform - Qrafik platforma - - - Kernel - Nüvə - - - Agreements and Privacy Policy - Razılaşma və məxfilik qaydaları - - - Edition License - Buraxılış Lisenziyası - - - End User License Agreement - Son İstifadəçi Lisenziyası Müqaviləsi - - - Privacy Policy - Məxfilik Siyasəti - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Sistem məlumatı - - - - dccV23::SystemLanguageSettingDialog - - Cancel - İmtina - - - Add - Əlavə edin - - - Add System Language - Sistem dili əlavə etmək - - - - dccV23::SystemLanguageWidget - - Edit - Düzəliş edin - - - Language List - Dil siyahısı - - - Add Language - Dil əlavə edin - - - Done - Tamamlandı - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Narahat etməmək - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Tətbiq bildirişləri iş masasında göstərilməyəcək və səs susdurulacaq, lakin, bütün ismarıcları bildiriş mərkəzində gırə bilərsiniz. - - - When the screen is locked - Ekran kilidləndiyi zaman - - - - dccV23::TimeSlotItem - - From - Buradan: - - - To - Buraya: - - - - dccV23::TouchScreenModule - - Touch Screen - Toxunma ekranı - - - Select your touch screen when connected or set it here. - Qoşulduğu zaman toxunma ekranını seçin və ya onu burada təyin edin. - - - Confirm - Təsdiqləyin - - - Cancel - İmtina - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Kursorun sürəti - - - Enable TouchPad - Toxunma panelini aktiv edin - - - Tap to Click - Klik üçün vurun - - - Natural Scrolling - Təbii sürüşdürmə - - - Slow - Zəif - - - Fast - Sürətli - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Kursorun sürəti - - - Slow - Zəif - - - Fast - Sürətli - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - İstifadəçi Təcrübəsi Proqramına qoşulmaq - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>İstifadəçi Təcrübəsi Proqramına qoşulmaq o deməkdir ki, siz bizə cihazınız, sisteminiz və tətbiqləriniz haqqındakı məlumatlarını toplamağımıza və istifadə etməyimizə icazə verirsiniz. Əgər yuxarıdakı məlumatları toplamağımızı və istifadə etməyimizi qəbul etmirsinizsə o zaman İstifadəçi Təcrübəsi Proqramına qoşulmayın. Daha ətraflı məlumatı üçün Deepin Məxfilik Siyasəti-nə (<a href="%1"> %1 </a>) baxın.</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>İstifadəçi Təcrübəsi Proqramına qoşulmaq o deməkdir ki, siz bizə cihazınız, sisteminiz və tətbiqləriniz haqqındakı məlumatlarını toplamağımıza və istifadə etməyimizə icazə verirsiniz. Əgər yuxarıdakı məlumatları toplamağımızı və istifadə etməyimizi qəbul etmirsinizsə o zaman İstifadəçi Təcrübəsi Proqramına qoşulmayın. Məlumatlarınızın idarə edilməsi haqqında daha çox öyrənmək üçün UnionTech OS Məxfilik Siyasəti-nə (<a href="%1"> %1</a>) baxın. </p> - - - - DateWidget - - Year - İl - - - Month - Ay - - - Day - Gün - - - - DatetimeModule - - Time and Format - Tarix və format - - - - DatetimeWorker - - Authentication is required to change NTP server - NTP serverini dəyişdirmək üçün doğrulama tələb olunur - - - - DefAppModule - - Default Applications - Varsayılan proqramlar - - - - DefAppPlugin - - Webpage - Veb səhifə - - - Mail - Poçt - - - Text - Mətn - - - Music - Musiqi - - - Video - Video - - - Picture - Şəkil - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Cavabdehlikdən imtina - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Üz tnınmasından istifadə etmədən öncə nəzərə alın ki: -1. Cihazınız sizə oxşar digər insanların və ya əşyaların köməyi ilə kiliddən çıxarıla bilər. -2. Üz tanınması rəqəmsal və qarışıq şifrədən daha zəif təhlükəsizliyə malikdir. -3. Üz tanınması ilə cihazın uğurla kiliddən çıxarılması ehtimalı, zəif işıqlanma, parlaq işıqlanma, ətraf işıqlanması, böyük bucaq altında olduqda və digər hallarda zəifləyə bilər. -4. Üz tanınmasından sui-istifadəsinə yol verməmək üçün cihazınızı kimə gəldi verməməniz xahis olunur. -5. Yuxarıdakı hallara əlavə olaraq üz tanınmasının normal istifadə olunmasına mənfi təsir edəcək digər vəziyyətləri də diqqətdə saxlayın. - -Üz tanınmasından daha yaxşı istifadə etmək üçün, üz tanınması məlumatlarının qeydiyyatı zamanı aşağıdakılara diqqət yetirin: -1. Yaxşı işıqlanmış, lakin birbaşa günəş şüaları olmayan yerdə olun və çəkiliş zamanı digər insanların kadra düşməməsinə çalışın. -2. Üzün qeydiyyatı zamanı üzün doğru vəziyyətdə olmasına və baş örtüyü, saç, günəş eynəyi, maska və digər amillərin üzünüzü örtməsinə imkan verməmənizə diqqət yetirin. -3. Lütfən, başınızı əymək və ya aşağı salmaqdan, gözlərinizi yummaqdan və ya üzünüzün yalnız bir tərəfini göstərməkdən çəkinin və üzünüzün ön tərəfinin kadrda aydın və tam göründüyünə əmin olun. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - "Biometrik kimlik doğrulaması", UnionTech Software Technology Co., Ltd tərəfindən istifadəçi kimliyinin doğrulanması üçün bir funksiyadır. "Biometrik doğrulama" vasitəsi ilə toplanmış məlumatlar cihazda saxlanılanlarla tutuşdurulacaq və istifadəçinin kimliyi müqayisənin nəticələrinə əsasən təsdiq olunacaqdır. Nəzərə alın ki, UnionTech Software, sizin cihazınızda saxlanılan biometrik məlumatlarınızı toplamaycaq və ya onlara baxmayacaqdır. Yalnız sizə aid olan cihzda biometrik kimlik doğrulamasını aktiv edin və lazımi əməliyyatlar üçün öz biometrik məlumatlarınızdan istifadə edin, həmçinin cihazınızda başqalarına aid biometrik kimlik doğrulamasını dərhal söndürün, əks halda yaranacaq təhlükələr üçün siz cavabdehsiniz. -UnionTech Software, biometrik kimlik doğrulamasının təhlükəsizlik, stabillik və düzgün işləməsi ilə bağlı məsələləri araşdırmağa və onları aradan qaldırmağa can atır. Ətraf mühit, avadanlıq texniki və digər amillər və həmçinin nəzarət riski səbəbindən müvəqqəti kimlik doğrulamasından keçməniz mümkün olmaya bilər. Buna görə də UnionTech ƏS-nə giriş üçün biometrik doğrulama ilə yanaşı digər giriş vasitələrindən də istifadə edin. Əgər biometrik doğrulamanın istifadəsi ilə bağlı hər hansı bir sualınız və ya təklifiniz varsa UnionTech ƏS-nin "Xidmət və Dəstək" bölməsində öz rəyinizi bildirin. - - - - Cancel - İmtina - - - Next - Sonrakı - - - - DisclaimersItem - - I have read and agree to the - Oxudum və qəbul edirəm: - - - Disclaimer - Cavabdehlikdən imtina - - - - DockModuleObject - - Dock - Dok panel - - - Multiple Displays - Çoxsaylı ekran - - - Show Dock - Dok paneli göstərmək - - - Mode - Rejim - - - Position - Mövqe - - - Status - Vəziyyəti - - - Show recent apps in Dock - Sonuncu tətbiqlər Dok paneldə göstərilsin - - - Size - Ölçü - - - Plugin Area - Plaqin sahəsi - - - Select which icons appear in the Dock - Dok paneldə görünəcək nişanları seçin - - - Fashion mode - Müasir rejim - - - Efficient mode - Səmərəli rejim - - - Top - Yuxarı - - - Bottom - Aşağı - - - Left - Sol - - - Right - Sağ - - - Location - Yerləşmə - - - Keep shown - Görünsün - - - Keep hidden - Gizli qalsın - - - Smart hide - Ağıllı gizlənmə - - - Small - Kiçik - - - Large - Geniş - - - On screen where the cursor is - Kursorun olduğu ekranda - - - Only on main screen - Yalnız əsas ekranda - - - - FaceInfoDialog - - Enroll Face - Üzü qeydə alın - - - Position your face inside the frame - Üzünüzü çərçivə daxilinə yerləşdirin - - - - FaceWidget - - Edit - Düzəliş edin - - - Manage Faces - Üz qeydlərini idarə edin - - - You can add up to 5 faces - 5-dən çox üz tanınması əlavə edə bilərsiniz - - - Done - Tamamlandı - - - Add Face - Üz əlavə edin - - - The name already exists - Ad artıq mövcuddur - - - Faceprint - Üz izi - - - - FaceidDetailWidget - - No supported devices found - Dəstəklənən cihazlar tapılmadı - - - - FingerDetailWidget - - No supported devices found - Dəstəklənən cihazlar tapılmadı - - - - FingerDisclaimer - - Add Fingerprint - Barmaq izi daxil et - - - Cancel - İmtina - - - Next - Sonrakı - - - - FingerInfoWidget - - Place your finger - Barmağınızı qoyun - - - Place your finger firmly on the sensor until you're asked to lift it - Barmağınızı qaldırmaq istənənə qədər onu möhkəm bir şəkildə sensorun üzərinə qoyun - - - Scan the edges of your fingerprint - Barmağınızın kənarlarını oxudun - - - Place the edges of your fingerprint on the sensor - Barmağınızın kənarlarını sonsorun üzərinə qoyun - - - Lift your finger - Barmağınızı qaldırın - - - Lift your finger and place it on the sensor again - Barmağınızı qaldırın və onu yenidən sensorun üzərinə qoyun - - - Adjust the position to scan the edges of your fingerprint - Barmaq izinin kənarlarının oxunması üçün yerini ayarlayın - - - Lift your finger and do that again - Barmağınızı qaldırın və bunu yenidən edin - - - Fingerprint added - Barmaq izi əlavə edildi - - - - FingerWidget - - Edit - Düzəliş edin - - - Fingerprint Password - Barmaq izi şifrəsi - - - You can add up to 10 fingerprints - Ən çox 10 barmaq izi əlavə edə bilərsiniz - - - Done - Tamamlandı - - - The name already exists - Ad artıq mövcuddur - - - Add Fingerprint - Barmaq izi daxil et - - - - GeneralModule - - General - Ümumi - - - Balanced - Tarazlaşdırılmış - - - Balance Performance - Tarazlaşdırılmış məhsuldarlıq - - - High Performance - Yüksək məhsuldarlıq - - - Power Saver - Elektrik enerjisinə qənaət - - - Power Plans - Elektrik enerjisi planları - - - Power Saving Settings - Elektrik enerjisinə qənaət ayarları - - - Auto power saving on low battery - Batareya zəif olduqda avtomatik enerjiyə qənaət - - - Decrease Brightness - Parlaqlığı azaltmaq - - - Low battery threshold - Aşağı batareya həddi - - - Auto power saving on battery - Batareyadan qidalandıqda avtomatik enerjiyə qənaət - - - Wakeup Settings - Oyatma ayarları - - - Unlocking is required to wake up the computer - Kiliddən çıxartmaq üçün kompyuteri oyatmaq tələb olunur - - - Unlocking is required to wake up the monitor - Kiliddən çıxartmaq üçün monitoru oyatmaq lazımdır - - - - HostNameItem - - It cannot start or end with dashes - Tire ilə başlaya və ya bitə bilməz - - - 1~63 characters please - 1~63 somvollardan istifadə edin - - - - InternalButtonItem - - Internal testing channel - Daxili sınaq kanalı - - - click here open the link - keçidi açmaq üçün buraya vur - - - - IrisDetailWidget - - No supported devices found - Dəstəklənən cihazlar tapılmadı - - - - IrisWidget - - Edit - Düzəliş edin - - - Manage Irises - Göz qişası qeydlərini idarə edin - - - You can add up to 5 irises - 5-dən artıq göz tanınması əlavə edə bilərsiniz - - - Done - Tamamlandı - - - Add Iris - Göz qişası əlavə edin - - - The name already exists - Ad artıq mövcuddur - - - Iris - Göz qişası - - - - KeyLabel - - None - Heç biri - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Müəllif Hüquqları© 2011-%1 Deepin Cəmiyyəti - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Müəllif Hüquqları© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Giriş cihazı - - - Automatic Noise Suppression - Avtomatik səs-küy boğma - - - Input Volume - Səs girişi - - - Input Level - Giriş səviyyəsi - - - - PersonalizationDesktopModule - - Desktop - İş masası - - - Window - Pəncərə - - - Window Effect - Pəncərə effekti - - - Window Minimize Effect - Pəncərə yığma effekti - - - Transparency - Şəffaflıq - - - Rounded Corner - Dəyirmi künc - - - Scale - Miqyas - - - Magic Lamp - Sehirli çıraq - - - Small - Kiçik - - - Middle - Orta - - - Large - Böyük - - - - PersonalizationModule - - Personalization - Fərdiləşdirmə - - - - PersonalizationThemeList - - Cancel - İmtina - - - Save - Saxla - - - Light - İşıqlı - - - Dark - Tünd - - - Auto - Avtomatik - - - Default - Varsayılan - - - - PersonalizationThemeModule - - Theme - Mövzu - - - Appearance - Xarici görünüş - - - Accent Color - Vurğu rəngi - - - Icon Settings - Nişan ayarları - - - Icon Theme - Nişan mövzusu - - - Cursor Theme - Kursor mövzusu - - - Text Settings - Mətn ayarları - - - Font Size - Şrift ölçüsü - - - Standard Font - Standart şrift - - - Monospaced Font - Genişləndirilmiş şrift - - - Light - İşıqlı - - - Auto - Avtomatik - - - Dark - Tünd - - - - PersonalizationThemeWidget - - Light - İşıqlı - General - /personalization/General - - - Dark - Tünd - General - /personalization/General - - - Auto - Avtomatik - General - /personalization/General - - - Default - Varsayılan - - - - PersonalizationWorker - - Custom - Şəxsi - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Bluetooth cihazına qoşulmaq üçün PİN kod: - - - Cancel - İmtina - - - Confirm - Təsdiqləyin - - - - PowerModule - - Power - Elektrik qidalanması - - - Battery low, please plug in - Batareya zəifdir, elektrik şəbəkəsinə qoşun - - - Battery critically low - Batareya çox zəifləyib - - - - PrivacyModule - - Privacy and Security - Məxfilik və təhlükəsizlik - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - İstifadəçi qovluqları - - - Calendar - Kalendar - - - Screen Capture - Ekran şəkli çək - - - - QObject - - Control Center - İdarə Etmə Mərkəzi - - - , - , - - - Error occurred when reading the configuration files of password rules! - Şifrə qaydaları üçün tənzimləmə faylının oxunması zamanı xəta baş verdi! - - - Auto adjust CPU operating frequency based on CPU load condition - Yüklənmə şərtlərinə əsasən mərkəzi prosessorun işləmə tezliyinin avtomatik tənzimlənməsi - - - Aggressively adjust CPU operating frequency based on CPU load condition - Yüklənmə şərtlərinə əsasən mərkəzi prosessorun tezliyinin aqresiv tənzimlənməsi - - - Be good to imporving performance, but power consumption and heat generation will increase - Məhsuldarlığı yaxşılaşdırmağa hazır olun, lakin bu, enerji sərfiyyatını artıracaq və qızmaya səbəb olacaq - - - CPU always works under low frequency, will reduce power consumption - Mərkəzi prosessor həmişə aşağı tezlikdə işləyir, enerji sərfiyyatını azaldır - - - Activated - Aktivləşdirildi - - - View - Baxış - - - To be activated - Aktivləşdirmək üçün - - - Activate - Aktivləşdirmək - - - Expired - Vaxtı bitmiş - - - In trial period - Sınaq dövründə - - - Trial expired - Sınaq dövrü başa çadı - - - Touch Screen Settings - Toxunma ekranı ayarları - - - The settings of touch screen changed - Toxunma ekranı ayarları dəyişdirildi - - - Checking system versions, please wait... - Sistem versiyası yoxlanılır, lütfən gösləyin... - - - Leave - Tərk et - - - Cancel - İmtina - - - - RegionModule - - Region and format - Bölgə və format - - - Country or Region - Bölgə - - - Format - Format - - - Provide localized services based on your region. - Bölgənizə uyğun yerli dil xidmətlərini təqdim edin. - - - Select matching date and time formats based on language and region - Dil və bölgənizə uyğun tarix və vaxt formatlarını seçin - - - Region format - Dil və bölgə - - - First day of week - Həftənin ilk günü - - - Short date - Qısa tarix - - - Long date - Uzun tarix - - - Short time - Qısa vaxt - - - Long time - Uzun vaxt - - - Currency symbol - Pul vahidi simvolu - - - Numbers - Saylar - - - Paper - Kağız - - - Custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Sisteminiz səlahiyyətli deyil, öncə aktivləşdirin - - - Update successful - Yenilənmə uğurlu oldu - - - Failed to update - Yenilənmə baş tutmadı - - - - SearchInput - - Search - Axtar - - - - ServiceSettingsModule - - Apps can access your camera: - Kameranızı istifadə edə biləcək tətbiqlər: - - - Apps can access your microphone: - Mikrofonunuzu istifadə edə biləcək tətbiqlər: - - - Apps can access user folders: - İstifadəçi qovluqlarına daxil ola biləcək tətbiqlər: - - - Apps can access Calendar: - Təqvimə daxil ola biləcək tətbiqlər: - - - Apps can access Screen Capture: - Ekran şəkli çəkə biləcək tətbiqlər: - - - No apps requested access to the camera - Heç bir tətbiq kameraya giriş tələb etməyib - - - No apps requested access to the microphone - Heç bir tətbiq mikrofona giriş tələb etməyib - - - No apps requested access to user folders - Heç bir tətbiq istifadəçi qovluğuna giriş tələb etməyib - - - No apps requested access to Calendar - Heç bir tətbiq təqvimə giriş tələb etməyib - - - No apps requested access to Screen Capture - Heç bir tətbiq ekran şəkli çəkmək tələb etməyib - - - - SoundEffectsPage - - Sound Effects - Səs effektləri - - - - SoundModel - - Boot up - Önyükləmə - - - Shut down - Sistemi söndür - - - Log out - Çıxış - - - Wake up - Oyatmaq - - - Volume +/- - Səs +/- - - - Notification - Bildiriş - - - Low battery - Batareya zəifdir - - - Send icon in Launcher to Desktop - Başladıcıdakı nişanı İş Masasına göndərin - - - Empty Trash - Zibil Qutusunu Boşalt - - - Plug in - Elektrik şəbəkəsinə qoşun - - - Plug out - Elektrik şəbəkəsindən ayırın - - - Removable device connected - Çıxarılabilən cihaz qoşuldu - - - Removable device removed - Çıxarılabilən cihaz çıxarıldı - - - Error - Xəta - - - - SoundModule - - Sound - Səs - - - - SoundPlugin - - Output - Çıxış - - - Auto pause - Avtomatik fasilə - - - Whether the audio will be automatically paused when the current audio device is unplugged - Cari səs cihazı çıxarılan zaman səsə avtomatik fasilə veriləcəkdir - - - Input - Giriş - - - Sound Effects - Səs effektləri - - - Devices - Cihazlar - - - Input Devices - Giriş cihazı - - - Output Devices - Çıxış cihazları - - - - SpeakerPage - - Output Device - Çıxış cihazı - - - Mode - Rejim - - - Output Volume - Səs çıxışı - - - Volume Boost - Səs artımı - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Əgər səs səviyyəsi 100%-dən çox olarsa, bu, səsi təhrif edə və səsucaldıcıları zədələyə bilər - - - Left/Right Balance - Sol/Sağ tarazlığı - - - Left - Sol - - - Right - Sağ - - - - TimeSettingModule - - Time Settings - Vaxt ayarları - - - Time - Vaxt - - - Auto Sync - Avtomatik eyniləşdirmə - - - Reset - Sıfırlayın - - - Save - Saxla - - - Server - Sever - - - Address - Address - - - Required - Tələb olunur - - - Customize - Fərdiləşdirmək - - - Year - İl - - - Month - Ay - - - Day - Gün - - - - TimeZoneChooser - - Cancel - İmtina - - - Confirm - Təsdiqləyin - - - Add Timezone - Saat qurşağı əlavə etmək - - - Add - Əlavə edin - - - Change Timezone - Saat qurşağını dəyişmək - - - - TimeoutDialog - - Save the display settings? - Ekran ayarları saxlanılsın? - - - Settings will be reverted in %1s. - Ayarlar %1san ərzində geri qaytarılacaq. - - - Revert - Geri qaytarın - - - Save - Saxla - - - - TimezoneItem - - Tomorrow - Sabah - - - Yesterday - Dünən - - - Today - Bu gün - - - %1 hours earlier than local - Yerli vaxtdan %1 saat qabaq - - - %1 hours later than local - Yerli vaxtdan %1 saat sonra - - - - TimezoneModule - - Timezone List - Saat qurşaqları siyahısı - - - System Timezone - Sistem saat qurşağı - - - Add Timezone - Saat qurşağı əlavə edin - - - - TreeCombox - - Collaboration Settings - Birgə iş ayarları - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - İstifadə hesabı Union İD ilə əlaqələndirilməyib - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Şifrələri sıfırlamaq üçün öncə Union İD ilə daxil olmalısınız. Ayarlamanı tamamlamaq üçün "Keçidi açın" üzərinə vurun. - - - Cancel - İmtina - - - Go to Link - Keçidi açın - - - - UnknownUpdateItem - - Release date: - Buraxılış tarixi: - - - - UpdateCtrlWidget - - Check Again - Yenidən yoxlamaq - - - Update failed: insufficient disk space - Yenilənmə baş tutmadı: disk sahəsi kifayət deyil - - - Dependency error, failed to detect the updates - Asılılıq xətası, yenilənmələr aşkarlanmadı - - - Restart the computer to use the system and the applications properly - Sistemdən və tətbiqlərdən lazımi qaydada istifadə etmək üçün kompüteri yenidən başladın - - - Network disconnected, please retry after connected - Şəbəkə bağlantısı kəsildi, qoşulduqdan sonra yenidən cəhd edin - - - Your system is not authorized, please activate first - Sisteminiz səlahiyyətli deyil, öncə aktivləşdirin - - - This update may take a long time, please do not shut down or reboot during the process - Bu yenilənmə çox vaxt apara bilər, lütfən bu əməliyyat zamanı komputerinizi söndürməyin və ya yenidən başlatmayın - - - Updates Available - Yenilənmələr var - - - Current Edition - Cari buraxılış - - - Updating... - Yenilənir... - - - Update All - Hamısını yeniləyin - - - Last checking time: - Sonuncu yoxlanılma vaxtı: - - - Your system is up to date - Sisteminiz yenilənib - - - Check for Updates - Yenilənmələri yoxlamaq - - - Checking for updates, please wait... - Yenilənmələr yoxlanılır, lütfən, gözləyin... - - - The newest system installed, restart to take effect - Ən yeni sistem quraşdırıldı, qüvvəyə minməsi üçün yenidən başladın - - - %1% downloaded (Click to pause) - %1% endirildi (Fasilə üçün vurun) - - - %1% downloaded (Click to continue) - %1% endirildi (Davam etmək üçün vurun) - - - Your battery is lower than 50%, please plug in to continue - Batareyanız 50% azdır, davam etmək üçün elektrik şəbəkəsinə qoşun - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Yenidən başlatmaq üçün kifayət qədər güc təmin edin və cihazınızı elektrik şəbəkəsindən ayırmayın və söndürməyin - - - Size - Ölçü - - - - UpdateModule - - Updates - Yeniləmələr - - - - UpdatePlugin - - Check for Updates - Yenilənmələri yoxlamaq - - - - UpdateSettingItem - - Insufficient disk space - Diskdə kifayət qədər yer yoxdur - - - Update failed: insufficient disk space - Yenilənmə baş tutmadı: disk sahəsi kifayət deyil - - - Update failed - Yenilənmə baş tutmadı - - - Network error - Şəbəkə xətası - - - Network error, please check and try again - Şəbəkə xətası, bağlantını yoxlayın və yenidən cəhd edin - - - Packages error - Paketləmə xətası - - - Packages error, please try again - Paketləmə xətası, yenidən cəhd edin - - - Dependency error - Asılılıq xətası - - - Unmet dependencies - Qarşılanmamış asılılıqlar - - - The newest system installed, restart to take effect - Ən yeni sistem quraşdırıldı, qüvvəyə minməsi üçün yenidən başladın - - - Waiting - Gözlənilir - - - Backing up - Ehtiyyat nüsxələmə - - - System backup failed - Sistemin bərpası baş tutmadı - - - Release date: - Buraxılış tarixi: - - - Server - Server - - - Desktop - İş masası - - - Version - Versiya - - - - UpdateSettingsModule - - Update Settings - Yenilənmə ayarları - - - System - Sistem - - - Security Updates Only - Yalnız təhlükəszlik yenilənmələri - - - Switch it on to only update security vulnerabilities and compatibility issues - Yalnız zəif təhlükəsizlik və uyğunluq problemləri yenilənmələri üçün bunu açın - - - Third-party Repositories - Üçüncü tərəf repazitoriyaları - - - linglong update - Linglong yenilənmə - - - Linglong Package Update - Linglong paket yenilənməsi - - - If there is update for linglong package, system will update it for you - Əgər linglong paketi üçün yenilənmə varsa, sistem onu sizin üçün yeniləyəcək - - - Other settings - Digər ayarlar - - - Auto Check for Updates - Yenilənmələr avtomatik yoxlanılsın - - - Auto Download Updates - Yenilənmələr avtomatik endirilsin - - - Switch it on to automatically download the updates in wireless or wired network - Simsiz və ya naqilli şəbəkələrdə yenilənmələrin avtomatik yüklənməsini seçin - - - Auto Install Updates - Yenilənmələrin avtomatik quraşdırılması - - - Updates Notification - Yenilənmə bildirişi - - - Clear Package Cache - Paket keşini təmizləmək - - - Updates from Internal Testing Sources - Daxili sınaq mənbələrindən yenilənmələr - - - internal update - Daxili yenilənmə - - - Join the internal testing channel to get deepin latest updates - Ən son Deepin yenilənmələrini almaq üçün daxili sınaq kanalına qoşulun - - - System Updates - Sistem yenilənmələri - - - Security Updates - Təhlükəsizlik yenilənmələri - - - Install updates automatically when the download is complete - Endirmə başa çatdıqda yenilənmələr avtomatik quraşdırılmısın - - - Install "%1" automatically when the download is complete - Endirmə başa çatdlıqdan "%1" avtomatik quraşdırılsın - - - - UpdateWidget - - Current Edition - Cari buraxılış - - - - UpdateWorker - - System Updates - Sistem yenilənmələri - - - Fixed some known bugs and security vulnerabilities - Bəzi məlum xətalar və təhlükəsizlikdəki zəifliklər aradan qaldırıldı - - - Security Updates - Təhlükəsizlik yenilənmələri - - - Third-party Repositories - Üçüncü tərəf repazitoriyaları - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - İnternet sınaq kanalını indi tərk etməniz təhlükəli ola bilər, hələ də davam etmək istəyirsiniz? - - - Your are safe to leave the internal testing channel - İnternet sınaq kanalını tərk etməniz təhlükəsizdir - - - Cannot find machineid - Kompyuter ID-sini tapmaq mümkün deyil - - - Cannot Uninstall package - Paketi silmək mümkün deyil - - - Error when exit testingChannel - Sınaq kanalından çıxış zamanı xəta - - - try to manually uninstall package - paketi əl ilə silməyə cəhd et - - - Cannot install package - Paketi quraşdırmaq mümkün deyil - - - - UseBatteryModule - - On Battery - Batareyadan - - - Never - Heç vaxt - - - Shut down - Sistemi söndür - - - Suspend - Gözləmə rejimi - - - Hibernate - Yuxu rejimi - - - Turn off the monitor - Monitoru söndürmək - - - Do nothing - Heç nə etməmək - - - 1 Minute - 1 dəqiqə - - - %1 Minutes - %1 dəqiqə - - - 1 Hour - 1 saat - - - Screen and Suspend - Ekran və dayanma - - - Turn off the monitor after - Monitor bu vaxtdan sonra sönür - - - Lock screen after - Bu vaxtdan sonra ekranı kilidləmək - - - Computer suspends after - Kompyuter bu vaxtdan sonra dayandırılır - - - Computer will suspend after - Komputer bu vaxtdan sonra dayandırılacaq - - - When the lid is closed - Qapaq bağlandığında - - - When the power button is pressed - Güc düyməsi basıldıqda - - - Low Battery - Zəif batareyada - - - Low battery notification - Zəif batareya bildirişi - - - Low battery level - Zəif batareya səviyyəsi - - - Auto suspend battery level - Avtomatik dayandırma üçün batareya səviyyəsi - - - Battery Management - Batareyanın idarəedilmısi - - - Display remaining using and charging time - Qalan istifadə və doldurma vaxtı göstərilsin - - - Maximum capacity - Maksimum tutum - - - Show the shutdown Interface - Söndürmə interfeysini göstərmək - - - - UseElectricModule - - Plugged In - Elektrik şəbəkəsinə qoşulu - - - 1 Minute - 1 dəqiqə - - - %1 Minutes - %1 dəqiqə - - - 1 Hour - 1 saat - - - Never - Heç vaxt - - - Screen and Suspend - Ekran və dayanma - - - Turn off the monitor after - Monitor bu vaxtdan sonra sönür - - - Lock screen after - Bu vaxtdan sonra ekranı kilidləmək - - - Computer suspends after - Kompyuter bu vaxtdan sonra dayandırılır - - - When the lid is closed - Qapaq bağlandığında - - - When the power button is pressed - Güc düyməsi basıldıqda - - - Shut down - Sistemi söndür - - - Suspend - Gözləmə rejimi - - - Hibernate - Yuxu rejimi - - - Turn off the monitor - Monitoru söndürmək - - - Show the shutdown Interface - Söndürmə interfeysini göstərmək - - - Do nothing - Heç nə etməmək - - - - WacomModule - - Drawing Tablet - Rəsm tableti - - - Mode - Rejim - - - Pressure Sensitivity - Təzyiq həssaslığı - - - Pen - Qələm - - - Mouse - Siçan - - - Light - İşıqlı - - - Heavy - Ağır - - - - main - - Control Center provides the options for system settings. - İdarəemə Mərkəzi sistem ayarları üçün seçimlər təqdim edir - - - - updateControlPanel - - Downloading - Endirilir - - - Waiting - Gözləmə - - - Installing - Quraşdırılır - - - Backing up - Ehtiyyat nüsxələmə - - - Download and install - Endirin və quraşdırın - - - Learn more - Daha çox öyrənin - - - diff --git a/dcc-old/translations/dde-control-center_bg.ts b/dcc-old/translations/dde-control-center_bg.ts deleted file mode 100644 index 810cd54b51..0000000000 --- a/dcc-old/translations/dde-control-center_bg.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Свързване - - - Disconnect - Прекъсване - - - Rename - Преименуване - - - Send Files - - - - Ignore this device - - - - Connecting - Свързване - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - Отвори десктоп файл - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Отказ - - - Next - Следващ - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Готово - - - Failed to enroll your face - - - - Try Again - - - - Close - Затваряне - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Отказ - - - Next - Следващ - - - Iris enrolled - - - - Done - Готово - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Оптечатък - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Свързано - - - Not connected - Няма връзка - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Отказ - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Отказ - - - Confirm - button - Потвърждение - - - - dccV23::AccountSpinBox - - Always - Винаги - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Потребителско име - - - Change Password - Смяна на паролата - - - Delete User - - - - User Type - - - - Auto Login - Автоматично влизане - - - Login Without Password - Влизане без парола - - - Validity Days - Дни на валидност - - - Group - Група - - - The full name is too long - Пълното име е прекалено дълго - - - Standard User - Стандартен потребител - - - Administrator - Администратор - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Пълно име - - - Go to Settings - - - - Cancel - Отказ - - - OK - ОК - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Вашият хост е премахнат успешно от домейн сървъра - - - Your host joins the domain server successfully - Вашият хост влезе в домейн сървъра успешно - - - Your host failed to leave the domain server - Вашият хост не успя да напусне домейн сървъра - - - Your host failed to join the domain server - Вашият хост не успя да се присъедини към сървъра на домейна - - - AD domain settings - AD настройки на домейн - - - Password not match - Паролата нe съвпада - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Отказ - - - Save - Запазване - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Изображения - - - - dccV23::BootWidget - - Updating... - Актуализиране... - - - Startup Delay - Отсрочка преди стартиране - - - Theme - Тема - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Включете темата, за да я видите в менюто за зареждане - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Смяна на паролата - - - Boot Menu - Boot Меню - - - Change GRUB password - - - - Username: - Потребителско име: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Задължителен - - - Cancel - button - Отказ - - - Confirm - button - Потвърждение - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - Яркост - - - Color Temperature - - - - Auto Brightness - Автоматична яркост - - - Night Shift - Нощна смяна - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - Основни настройки - - - Boot Menu - Boot Меню - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Група - - - Cancel - Отказ - - - Create - Създай - - - New User - - - - User Type - - - - Username - Потребителско име - - - Full Name - Пълно име - - - Password - Парола - - - Repeat Password - Повторете паролата - - - Password Hint - - - - The full name is too long - Пълното име е прекалено дълго - - - Passwords do not match - - - - Standard User - Стандартен потребител - - - Administrator - Администратор - - - Customized - - - - Required - Задължителен - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Изображения - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Добави потребителски кратък път - - - Name - Име - - - Required - Задължителен - - - Command - Команда - - - Cancel - Отказ - - - Add - Добави - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Този кратък път е в конфликт с %1, щракнете на Добави, за да го активирате - - - - dccV23::CustomEdit - - Required - Задължителен - - - Cancel - Отказ - - - Save - Запазване - - - Shortcut - Кратък път - - - Name - Име - - - Command - Команда - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Този кратък път е в конфликт с %1, щракнете на Добави, за да го активирате - - - - dccV23::CustomItem - - Shortcut - Кратък път - - - Please enter a shortcut - Моля, въведете клавишна комбинация - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Следващ - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Отказ - - - Restart Now - Рестартиране сега - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Дисплей - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Тестване на двойното кликване - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Забавяне преди повторение - - - Short - Кратко - - - Long - Дълго - - - Repeat Rate - Скорост на повторение - - - Slow - Бавно - - - Fast - Бързо - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - Кажи за големи букви - - - - dccV23::GeneralSettingWidget - - Left Hand - лява ръка - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Скорост при двойно кликване - - - Slow - Бавно - - - Fast - Бързо - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Клавиатурни подредби - - - Edit - Редактиране - - - Add Keyboard Layout - Добавяне на клавиатурна подредба - - - Done - Готово - - - - dccV23::KeyboardLayoutDialog - - Cancel - Отказ - - - Add - Добави - - - Add Keyboard Layout - Добавяне на клавиатурна подредба - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Клавиатура и език - - - Keyboard - Клавиатура - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Клавиатурни подредби - - - Language - Език - - - Shortcuts - Бързи клавиши - - - - dccV23::MainWindow - - Help - Помощ - - - - dccV23::ModifyPasswdPage - - Change Password - Смяна на паролата - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Текуща парола - - - Forgot password? - - - - New Password - Нова парола - - - Repeat Password - Повторете паролата - - - Password Hint - - - - Cancel - Отказ - - - Save - Запазване - - - Passwords do not match - - - - Required - Задължителен - - - Optional - Допълнително - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Грешна парола - - - New password should differ from the current one - Новата парола, трябва да бъде различна от текущата - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Мишка - - - General - Общи - - - Touchpad - Тъчпад - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Скорост на показалеца - - - Mouse Acceleration - Ускорение на мишката - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Нормално превъртане - - - Slow - Бавно - - - Fast - Бързо - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Режим - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Създаване на дубликат - - - Extend - Разпростиране - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Известяване - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Изтрий папката на профила - - - Cancel - Отказ - - - Delete - Изтриване - - - - dccV23::ResolutionWidget - - Resolution - Резолюция - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - По подразбиране - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - Завъртане - /display/Rotation - - - Standard - Стандартен - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - Мащабиране на екрана - - - - dccV23::SearchInput - - Search - Търсене - - - - dccV23::SecondaryScreenDialog - - Brightness - Яркост - - - - dccV23::SecurityLevelItem - - Weak - Слаба - - - Medium - Среден - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Отказ - - - Confirm - Потвърждение - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Редактиране - - - Done - Готово - - - - dccV23::ShortCutSettingWidget - - System - Система - - - Window - Прозорец - - - Workspace - Работно място - - - Assistive Tools - Помощни технологии - - - Custom Shortcut - Потребителски кратък път - - - Restore Defaults - Възстанови стандартните настройки - - - Shortcut - Кратък път - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Моля, нулирайте клавишната комбинация - - - Cancel - Отказ - - - Replace - Замяна - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Този кратък път е в конфликт с %1, щракнете на Замени, за да го активирате - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - Име на компютър - - - systemInfo - - - - OS Name - - - - Version - Версия - - - Edition - - - - Type - Тип - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Лиценз на изданието - - - End User License Agreement - Лицензионно споразумение с краен потребител - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - Системна информация - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Отказ - - - Add - Добави - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Редактиране - - - Language List - - - - Add Language - - - - Done - Готово - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Потвърждение - - - Cancel - Отказ - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Скорост на показалеца - - - Slow - Бавно - - - Fast - Бързо - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Година - - - Month - Месец - - - Day - Ден - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Програми по подразбиране - - - - DefAppPlugin - - Webpage - Уебсайт - - - Mail - Ел. поща - - - Text - Текст - - - Music - Музика - - - Video - Видео - - - Picture - Картина - - - Terminal - Терминал - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Отказ - - - Next - Следващ - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Док - - - Multiple Displays - - - - Show Dock - - - - Mode - Режим - - - Position - Позиция - - - Status - Статус - - - Show recent apps in Dock - - - - Size - Размер - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Модерен режим - - - Efficient mode - Ефективен режим - - - Top - Отгоре - - - Bottom - Отдолу - - - Left - Ляво - - - Right - Дясно - - - Location - Местоположение - - - Keep shown - - - - Keep hidden - Запази скрит - - - Smart hide - Интелигентно скриване - - - Small - Малък - - - Large - Голям - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Редактиране - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Готово - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Добави отпечатък - - - Cancel - Отказ - - - Next - Следващ - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - Пръстовият отпечатък е добавен - - - - FingerWidget - - Edit - Редактиране - - - Fingerprint Password - Парола с отпечатък - - - You can add up to 10 fingerprints - - - - Done - Готово - - - The name already exists - - - - Add Fingerprint - Добави отпечатък - - - - GeneralModule - - General - Общи - - - Balanced - Балансирано - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Редактиране - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Готово - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Нищо - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Сила на звука на входа - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Работен плот - - - Window - Прозорец - - - Window Effect - Ефект на прозореца - - - Window Minimize Effect - - - - Transparency - Прозрачност - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Малък - - - Middle - - - - Large - Голям - - - - PersonalizationModule - - Personalization - Персонализация - - - - PersonalizationThemeList - - Cancel - Отказ - - - Save - Запазване - - - Light - Светлина - - - Dark - - - - Auto - Автоматично - - - Default - По подразбиране - - - - PersonalizationThemeModule - - Theme - Тема - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Тема на иконите - - - Cursor Theme - Тема на курсора - - - Text Settings - - - - Font Size - Размер на шрифта - - - Standard Font - Стандартен шрифт - - - Monospaced Font - Непропорционален шрифт - - - Light - Светлина - - - Auto - Автоматично - - - Dark - - - - - PersonalizationThemeWidget - - Light - Светлина - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - Автоматично - General - /personalization/General - - - Default - По подразбиране - - - - PersonalizationWorker - - Custom - Потребителски - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - ПИН-ът за връзка с Bluetooth устройство е: - - - Cancel - Отказ - - - Confirm - Потвърждение - - - - PowerModule - - Power - Захранване - - - Battery low, please plug in - Слаба батерия, включете захранването - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Уеб камера - - - Microphone - Микрофон - - - User Folders - - - - Calendar - Календар - - - Screen Capture - - - - - QObject - - Control Center - Контролен център - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - Изглед - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Отказ - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - Провалена актуализация - - - - SearchInput - - Search - Търсене - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Звукови ефекти - - - - SoundModel - - Boot up - Зареждане - - - Shut down - Изключване - - - Log out - Излизане - - - Wake up - Събуждане - - - Volume +/- - Сила на звука +/- - - - Notification - Известяване - - - Low battery - Изтощена батерия - - - Send icon in Launcher to Desktop - Изпратете икона в Стартера на работния плот. - - - Empty Trash - Изпразване на Кошчето - - - Plug in - Свържи - - - Plug out - Извади - - - Removable device connected - Преносимото устройство е свързано - - - Removable device removed - Преносимото устройство е извадено - - - Error - Грешка - - - - SoundModule - - Sound - Звук - - - - SoundPlugin - - Output - Изход - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Вход - - - Sound Effects - Звукови ефекти - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Режим - - - Output Volume - Сила на звука на изхода - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Ляв/Десен Баланс - - - Left - Ляво - - - Right - Дясно - - - - TimeSettingModule - - Time Settings - Настройки на времето - - - Time - - - - Auto Sync - Автоматично синхронизиране - - - Reset - Рестартиране - - - Save - Запазване - - - Server - Сървър - - - Address - Адрес - - - Required - Задължителен - - - Customize - - - - Year - Година - - - Month - Месец - - - Day - Ден - - - - TimeZoneChooser - - Cancel - Отказ - - - Confirm - Потвърждение - - - Add Timezone - Добавяне на часова зона - - - Add - Добави - - - Change Timezone - Смяна на часовата зона - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Връщане - - - Save - Запазване - - - - TimezoneItem - - Tomorrow - Утре - - - Yesterday - Вчера - - - Today - Днес - - - %1 hours earlier than local - %1 часа по рано от местното - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Списък на времеви зони - - - System Timezone - - - - Add Timezone - Добавяне на часова зона - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Отказ - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Грешка в зависимост, не можаха да се открият актуализациите - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - Мрежата е прекъсната, опитайте след свърване - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - Тази актуализация може да отнеме много време, моля, не изключвайте или рестартирайте по време на процеса - - - Updates Available - - - - Current Edition - - - - Updating... - Актуализиране... - - - Update All - - - - Last checking time: - - - - Your system is up to date - Вашата система е актуализирана - - - Check for Updates - - - - Checking for updates, please wait... - Проверка за обновления, моля, изчакайте... - - - The newest system installed, restart to take effect - Инсталирана е най-новата система, рестартирайте - - - %1% downloaded (Click to pause) - %1 свалени (щракнете за пауза) - - - %1% downloaded (Click to continue) - %1% свалени (кликнете за да продължите) - - - Your battery is lower than 50%, please plug in to continue - Вашата батерия е заредена под 50%, моля, включете за да продължите - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Моля, осигурете достатъчно мощност, за рестартиране - не изключвайте захранването и не изваждайте захранващия кабел от вашата машина - - - Size - Размер - - - - UpdateModule - - Updates - Актуализации - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Инсталирана е най-новата система, рестартирайте - - - Waiting - Изчакване - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Сървър - - - Desktop - Работен плот - - - Version - Версия - - - - UpdateSettingsModule - - Update Settings - Настройки на обновяването - - - System - Система - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - Включване обновленията да бъдат сваляни автоматично през безжична или кабелна мрежа - - - Auto Install Updates - - - - Updates Notification - Известяване за обновяване - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Никога - - - Shut down - Изключване - - - Suspend - Приспиване - - - Hibernate - Хибернация - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 минута - - - %1 Minutes - %1 Минути - - - 1 Hour - 1 час - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - Компютърът ще заспи след - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 минута - - - %1 Minutes - %1 Минути - - - 1 Hour - 1 час - - - Never - Никога - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Изключване - - - Suspend - Приспиване - - - Hibernate - Хибернация - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - Плоча за чертане - - - Mode - Режим - - - Pressure Sensitivity - Чувствителност към налягане - - - Pen - Молив - - - Mouse - Мишка - - - Light - Светлина - - - Heavy - Тежко - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_bn.ts b/dcc-old/translations/dde-control-center_bn.ts deleted file mode 100644 index dc280fba2e..0000000000 --- a/dcc-old/translations/dde-control-center_bn.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - সংযোগ - - - Disconnect - সংযোগ বিচ্ছিন্ন করুন - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - সংযুক্ত হচ্ছে - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - ডেস্কটপ ফাইল খুলুন - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - বাতিল করুন - - - Next - পরবর্তী - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - শেষ - - - Failed to enroll your face - - - - Try Again - - - - Close - বন্ধ - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - বাতিল করুন - - - Next - পরবর্তী - - - Iris enrolled - - - - Done - শেষ - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - আঙ্গুলের ছাপ - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - সংযুক্ত - - - Not connected - সংযুক্ত নয় - - - - BluetoothModule - - Bluetooth - ব্লুটুথ - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - বাতিল করুন - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - বাতিল করুন - - - Confirm - button - নিশ্চিত করুন - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - ব্যবহারকারীর নাম - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - স্বয়ংক্রিয় লগইন - - - Login Without Password - পাসওয়ার্ড ছাড়া লগইন করুন - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - বাতিল করুন - - - OK - ঠিক আছে - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - ডোমেইন সার্ভার হতে আপনার হোস্ট সফলভাবে সরানো হয়েছে - - - Your host joins the domain server successfully - আপনার হোস্ট সফলভাবে ডোমেইন সার্ভারে যোগদান করেছে - - - Your host failed to leave the domain server - আপনার হোস্ট ডোমেইন সার্ভার হতে বের হতে ব্যর্থ হয়েছে - - - Your host failed to join the domain server - আপনার হোস্ট ডোমেইন সার্ভারে যোগ দিতে ব্যর্থ হয়েছে - - - AD domain settings - AD ডোমেইন সেটিংস - - - Password not match - পাসওয়ার্ড মিল নেই - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - বাতিল করুন - - - Save - সংরক্ষণ করুন - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - ছবি সমূহ - - - - dccV23::BootWidget - - Updating... - আপডেট হচ্ছে... - - - Startup Delay - শুরুতে বিলম্ব - - - Theme - থিম - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - বুট মেন্যুতে এটা দেখার জন্যে থিম অন করুন - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - বুট মেনু - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - আবশ্যক - - - Cancel - button - বাতিল করুন - - - Confirm - button - নিশ্চিত করুন - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - উজ্জ্বলতা - - - Color Temperature - - - - Auto Brightness - স্বয়ংক্রিয় উজ্জ্বলতা - - - Night Shift - রাতের শিফট - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - বুট মেনু - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - বাতিল করুন - - - Create - তৈরি করুন - - - New User - - - - User Type - - - - Username - ব্যবহারকারীর নাম - - - Full Name - - - - Password - পাসওয়ার্ড - - - Repeat Password - পুনরায় পাসওয়ার্ড দিন - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - আবশ্যক - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - ছবি সমূহ - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - কাস্টম শর্টকাট যোগ করুন - - - Name - নাম - - - Required - আবশ্যক - - - Command - কমান্ড - - - Cancel - বাতিল করুন - - - Add - যোগ করুন - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - এই শর্টকাটির %1 এর সাথে সংঘাত ঘটে, এই শর্টকাটটি তাৎক্ষনিকভাবে কার্যকর করার জন্য "যোগ করুন" এ ক্লিক করুন - - - - dccV23::CustomEdit - - Required - আবশ্যক - - - Cancel - বাতিল করুন - - - Save - সংরক্ষণ করুন - - - Shortcut - শর্টকাট - - - Name - নাম - - - Command - কমান্ড - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - এই শর্টকাটির %1 এর সাথে সংঘাত ঘটে, এই শর্টকাটটি তাৎক্ষনিকভাবে কার্যকর করার জন্য "যোগ করুন" এ ক্লিক করুন - - - - dccV23::CustomItem - - Shortcut - শর্টকাট - - - Please enter a shortcut - অনুগ্রহ করে একটি শর্টকাট প্রবেশ করান - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - পরবর্তী - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - বাতিল করুন - - - Restart Now - এখনি রিস্টার্ট দিন - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - ডিসপ্লে - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - দুইবার-ক্লিক পরীক্ষা - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - বিলম্বের পুনরাবৃত্তি করুন - - - Short - সংক্ষিপ্ত - - - Long - দীর্ঘ - - - Repeat Rate - পুনরাবৃত্তি হার - - - Slow - ধীরে - - - Fast - দ্রুত - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - ক্যাপস লক অনুরোধ - - - - dccV23::GeneralSettingWidget - - Left Hand - বাম হাত - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - দুইবার-ক্লিকের গতি - - - Slow - ধীরে - - - Fast - দ্রুত - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - কীবোর্ড লেআউট - - - Edit - সম্পাদন করুন - - - Add Keyboard Layout - কীবোর্ড লেআউট যোগ করুন - - - Done - শেষ - - - - dccV23::KeyboardLayoutDialog - - Cancel - বাতিল করুন - - - Add - যোগ করুন - - - Add Keyboard Layout - কীবোর্ড লেআউট যোগ করুন - - - - dccV23::KeyboardPlugin - - Keyboard and Language - কিবোর্ড এবং ভাষা - - - Keyboard - কিবোর্ড - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - কীবোর্ড লেআউট - - - Language - - - - Shortcuts - শর্টকাট - - - - dccV23::MainWindow - - Help - সাহায্য করুন - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - বর্তমান পাসওয়ার্ড - - - Forgot password? - - - - New Password - নতুন পাসওয়ার্ড - - - Repeat Password - পুনরায় পাসওয়ার্ড দিন - - - Password Hint - - - - Cancel - বাতিল করুন - - - Save - সংরক্ষণ করুন - - - Passwords do not match - - - - Required - আবশ্যক - - - Optional - ঐচ্ছিক - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - ভুল পাসওয়ার্ড - - - New password should differ from the current one - নতুন পাসওয়ার্ডটি বর্তমান পাসওয়ার্ড হতে পৃথক হওয়া উচিত - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - মাউস - - - General - সাধারণ - - - Touchpad - - - - TrackPoint - ট্রাকপয়েন্ট - - - - dccV23::MouseSettingWidget - - Pointer Speed - নির্দেশকের গতি - - - Mouse Acceleration - মাউসের ত্বরণ - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - স্বাভাবিক স্ক্রোলিং - - - Slow - ধীরে - - - Fast - দ্রুত - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - মোড - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - নকল - - - Extend - প্রসারিত করুন - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - বিজ্ঞপ্তি - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - অ্যাকাউন্টের পথ মুছে ফেলুন - - - Cancel - বাতিল করুন - - - Delete - মুছে ফেলুন - - - - dccV23::ResolutionWidget - - Resolution - রেজোলিউশন - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - পূর্বনির্ধারিত - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - ডিসপ্লে স্কেলিং - - - - dccV23::SearchInput - - Search - খুঁজুন - - - - dccV23::SecondaryScreenDialog - - Brightness - উজ্জ্বলতা - - - - dccV23::SecurityLevelItem - - Weak - দুর্বল - - - Medium - মধ্যম - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - বাতিল করুন - - - Confirm - নিশ্চিত করুন - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - সম্পাদন করুন - - - Done - শেষ - - - - dccV23::ShortCutSettingWidget - - System - সিস্টেম - - - Window - উইন্ডো - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - কাস্টম শর্টকাট - - - Restore Defaults - পূর্বনির্ধারিত জিনিসে ফিরে যান - - - Shortcut - শর্টকাট - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - অনুগ্রহ করে শর্টকাট পুনরায় সেট করুন - - - Cancel - বাতিল করুন - - - Replace - প্রতিস্থাপন করুন - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - এই শর্টকাটির %1 এর সাথে সংঘাত ঘটে, এই শর্টকাটটি তাৎক্ষনিকভাবে কার্যকর করার জন্য "প্রতিস্থাপন করুন" এ ক্লিক করুন - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - কম্পিউটার নাম - - - systemInfo - - - - OS Name - - - - Version - সংস্করণ - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - সংস্করণ লাইসেন্স - - - End User License Agreement - মূল ব্যবহারকারী স্বীকারোক্তি সনদ - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - বাতিল করুন - - - Add - যোগ করুন - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - সম্পাদন করুন - - - Language List - - - - Add Language - - - - Done - শেষ - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - নিশ্চিত করুন - - - Cancel - বাতিল করুন - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - নির্দেশকের গতি - - - Slow - ধীরে - - - Fast - দ্রুত - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - বছর - - - Month - মাস - - - Day - দিন - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - পূর্বনির্ধারিত অ্যাপ্লিকেশন সমূহ - - - - DefAppPlugin - - Webpage - ওয়েবপেজ - - - Mail - মেইল - - - Text - টেক্সট - - - Music - মিউজিক - - - Video - ভিডিও - - - Picture - ছবি - - - Terminal - প্রান্তিক - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - বাতিল করুন - - - Next - পরবর্তী - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - ডক - - - Multiple Displays - - - - Show Dock - - - - Mode - মোড - - - Position - - - - Status - অবস্থা - - - Show recent apps in Dock - - - - Size - সাইজ - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - শীর্ষ - - - Bottom - তলা - - - Left - বাম - - - Right - ডান - - - Location - অবস্থান - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - ছোট - - - Large - বড় - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - সম্পাদন করুন - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - শেষ - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - আঙ্গুলের ছাপ যোগ করুন - - - Cancel - বাতিল করুন - - - Next - পরবর্তী - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - সম্পাদন করুন - - - Fingerprint Password - আঙুলের ছাপ পাসওয়ার্ড - - - You can add up to 10 fingerprints - - - - Done - শেষ - - - The name already exists - - - - Add Fingerprint - আঙ্গুলের ছাপ যোগ করুন - - - - GeneralModule - - General - সাধারণ - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - সম্পাদন করুন - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - শেষ - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - কোনটিই নয় - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - ইনপুট ভলিউম - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - ডেস্কটপ - - - Window - উইন্ডো - - - Window Effect - উইন্ডো ইফেক্ট - - - Window Minimize Effect - - - - Transparency - স্বচ্ছতা - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - ছোট - - - Middle - - - - Large - বড় - - - - PersonalizationModule - - Personalization - নিজস্বকরণ - - - - PersonalizationThemeList - - Cancel - বাতিল করুন - - - Save - সংরক্ষণ করুন - - - Light - হালকা - - - Dark - - - - Auto - অটো - - - Default - পূর্বনির্ধারিত - - - - PersonalizationThemeModule - - Theme - থিম - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - আইকন থিম - - - Cursor Theme - কার্সার থিম - - - Text Settings - - - - Font Size - ফন্টের আকার - - - Standard Font - স্ট্যান্ডার্ড ফন্ট - - - Monospaced Font - মনোস্পেসড ফন্ট - - - Light - হালকা - - - Auto - অটো - - - Dark - - - - - PersonalizationThemeWidget - - Light - হালকা - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - অটো - General - /personalization/General - - - Default - পূর্বনির্ধারিত - - - - PersonalizationWorker - - Custom - প্রথা - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - ব্লুটুথ ডিভাইসটির সাথে সংযুক্ত করার জন্য PIN হলঃ - - - Cancel - বাতিল করুন - - - Confirm - নিশ্চিত করুন - - - - PowerModule - - Power - পাওয়ার - - - Battery low, please plug in - ব্যাটারি কম, অনুগ্রহ করে চার্জার সংযুক্ত করুন - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - মাইক্রোফোন - - - User Folders - - - - Calendar - ক্যালেন্ডার - - - Screen Capture - - - - - QObject - - Control Center - নিয়ন্ত্রণ কেন্দ্র - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - দেখুন - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - বাতিল করুন - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - আপডেট করতে ব্যর্থ হয়েছে - - - - SearchInput - - Search - খুঁজুন - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - সাউন্ড ইফেক্ট - - - - SoundModel - - Boot up - বুট করুন - - - Shut down - বন্ধ করুন - - - Log out - লগ আউট করুন - - - Wake up - জেগে উঠান - - - Volume +/- - শব্দ +/- - - - Notification - বিজ্ঞপ্তি - - - Low battery - ব্যাটারিতে চার্জ কম - - - Send icon in Launcher to Desktop - লঞ্চারের আইকন ডেস্কটপ এ পাঠান - - - Empty Trash - ডাস্টবিন খালি করুন - - - Plug in - চার্জে লাগান - - - Plug out - চার্জ হতে খুলুন - - - Removable device connected - অপসারণযোগ্য ডিভাইস সংযুক্ত করা হয়েছে - - - Removable device removed - অপসারণযোগ্য ডিভাইস অপসারণ করা হয়েছে - - - Error - ত্রুটি - - - - SoundModule - - Sound - শব্দ - - - - SoundPlugin - - Output - আউটপুট - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - ইনপুট - - - Sound Effects - সাউন্ড ইফেক্ট - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - মোড - - - Output Volume - আউটপুট ভলিউম - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - বাম/ডান ভারসাম্য - - - Left - বাম - - - Right - ডান - - - - TimeSettingModule - - Time Settings - সময় সেটিংস - - - Time - - - - Auto Sync - স্বয়ংক্রিয়-সিংক্রোনাইজেশন - - - Reset - - - - Save - সংরক্ষণ করুন - - - Server - সার্ভার - - - Address - - - - Required - আবশ্যক - - - Customize - - - - Year - বছর - - - Month - মাস - - - Day - দিন - - - - TimeZoneChooser - - Cancel - বাতিল করুন - - - Confirm - নিশ্চিত করুন - - - Add Timezone - টাইমজোন যোগ করুন - - - Add - যোগ করুন - - - Change Timezone - টাইমজোন পরিবর্তন করুন - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - সংরক্ষণ করুন - - - - TimezoneItem - - Tomorrow - আগামীকাল - - - Yesterday - গতকাল - - - Today - আজকে - - - %1 hours earlier than local - স্থানীয় সময়ের তুলনায় %1 ঘন্টা আগে - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - টাইমজোনের তালিকা - - - System Timezone - - - - Add Timezone - টাইমজোন যোগ করুন - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - বাতিল করুন - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - নির্ভরশীলতা ত্রুটি, আপডেট সনাক্ত করতে বার্থ হয়েছে। - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - নেটওয়ার্ক সংযোগ বিচ্ছিন্ন হয়েছে, সংযুক্ত হওয়ার জন্য পুনরায় চেষ্টা করুন - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - এই আপডেটটি অনেক সময় নিতে পারে, প্রক্রিয়াটি শেষ না হওয়া পর্যন্ত অনুগ্রহ করে বন্ধ বা পুনরায় চালু করবেন না। - - - Updates Available - - - - Current Edition - - - - Updating... - আপডেট হচ্ছে... - - - Update All - - - - Last checking time: - - - - Your system is up to date - আপনার সিস্টেম আপ টু ডেট আছে - - - Check for Updates - - - - Checking for updates, please wait... - আপডেটের জন্য চেক করা হচ্ছে, দয়া করে অপেক্ষা করুন... - - - The newest system installed, restart to take effect - সবচেয়ে নতুন সিস্টেম ইনস্টল করা হয়েছে, কার্যকর করতে বন্ধ করে পুনরায় চালু করুন - - - %1% downloaded (Click to pause) - %1% ডাউনলোড করা হয়েছে (বিরতি দিতে ক্লিক করুন) - - - %1% downloaded (Click to continue) - %1% ডাউনলোড করা হয়েছে (চালিয়ে যেতে ক্লিক করুন) - - - Your battery is lower than 50%, please plug in to continue - আপনার ব্যাটারী 50% এর কম, চালিয়ে যেতে দয়া করে চার্জার লাগান - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - দয়া করে পুনরায় চালু করার পর্যাপ্ত শক্তি নিশ্চিত করুন, এবং আপনার মেশিনটি বন্ধ বা আনপ্লাগ করবেন না - - - Size - সাইজ - - - - UpdateModule - - Updates - আপডেট সমূহ - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - সবচেয়ে নতুন সিস্টেম ইনস্টল করা হয়েছে, কার্যকর করতে বন্ধ করে পুনরায় চালু করুন - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - সার্ভার - - - Desktop - ডেস্কটপ - - - Version - সংস্করণ - - - - UpdateSettingsModule - - Update Settings - আপডেটের সেটিংস সমূহ - - - System - সিস্টেম - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - আপডেটগুলি ওয়ারলেস বা ওয়্যার্ড নেটওয়ার্কের মধ্যে স্বয়ংক্রিয়ভাবে ডাউনলোড হওয়ার জন্যে এটা অন করুন। - - - Auto Install Updates - - - - Updates Notification - আপডেটসমূহের বিজ্ঞপ্তি - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - কখনোই নয় - - - Shut down - বন্ধ করুন - - - Suspend - সাময়িক ভাবে বন্ধ করুন - - - Hibernate - হায়বারনেট - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 মিনিট - - - %1 Minutes - %1 মিনিট - - - 1 Hour - 1 ঘণ্টা - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - এতক্ষণ পর কম্পিউটার সাময়িকভাবে বন্ধ হবে - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 মিনিট - - - %1 Minutes - %1 মিনিট - - - 1 Hour - 1 ঘণ্টা - - - Never - কখনোই নয় - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - বন্ধ করুন - - - Suspend - সাময়িক ভাবে বন্ধ করুন - - - Hibernate - হায়বারনেট - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - মোড - - - Pressure Sensitivity - চাপ সংবেদনশীলতা - - - Pen - কলম - - - Mouse - মাউস - - - Light - হালকা - - - Heavy - ভারী - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_bo.ts b/dcc-old/translations/dde-control-center_bo.ts deleted file mode 100644 index 7ab5388d02..0000000000 --- a/dcc-old/translations/dde-control-center_bo.ts +++ /dev/null @@ -1,3999 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - སོ་སྔོན་སྒྲིག་ཆས་གཞན་གྱིས་འདི་ཉིད་རྙེད་ཐུབ་པ། - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - སོ་སྔོན་སྤྱད་དེ་ཉེ་འགྲམ་གྱི་སྒྲིག་ཆས་འཚོལ་བ། (སྒྲ་སྐྱེད་ཆས། མཐེབ་གཞོང་། ཙི་གུ། ) - - - My Devices - ངའི་སྒྲིག་ཆས། - - - Other Devices - སྒྲིག་ཆས་གཞན། - - - Show Bluetooth devices without names - མིང་མེད་པའི་སོ་སྔོན་སྒྲིག་ཆས་མངོན་སྟོན་བྱེད་པ། - - - Connect - འབྲེལ་མཐུད། - - - Disconnect - སྦྲེལ་མཐུད་ཕྲལ་གཅོད། - - - Rename - མིང་བསྐྱར་འདོགས། - - - Send Files - ཡིག་ཆ་སྐྱེལ་གཏོང་། - - - Ignore this device - སྒྲིག་ཆས་འདི་སྣང་མེད་གཏོང་བ། - - - Connecting - སྦྲེལ་བཞིན་པ། - - - Disconnecting - གཅོད་བཞིན་པ། - - - - AddButtonWidget - - Add Application - སོར་བཞག་བྱ་རིམ་སྣོན་པ། - - - Open Desktop file - ཡིག་ཆ་Desktop ཁ་འབྱེད། - - - Apps (*.desktop) - ཉེར་སྤྱོད་བྱ་རིམ།(*.desktop) - - - All files (*) - ཡིག་ཆ་ཆ་ཚང་། (*) - - - - AddFaceInfoDialog - - Enroll Face - ངོ་གདོང་གཞི་གྲངས་སྣོན་པ། - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - དབང་པོ་ལྔ་གསལ་པོ་ཡོད་པར་ཁག་ཐེག་བྱེད་དགོས། ཞ་མོ་དང་། མིག་ཤེལ་ནག་པོ། ཁ་རས་སོགས་དངོས་པོ་བཏགས་རྒྱུ་མེད། འོད་ཟེར་འདང་ངེས་ཡོད་པ་དང་། ཟློག་འོད་མེད་པ་བྱས་ཏེ། ནང་འཇུག་ལེགས་གྲུབ་བྱེད་ཚད་མཐོ་རུ་གཏོང་དགོས། - - - Cancel - འདོར་བ། - - - Next - རྗེས་མ། - - - Face enrolled - ངོ་གདོང་ནང་འཇུག་བྱས་ཟིན། - - - Use your face to unlock the device and make settings later - གདོང་རིས་གཞི་གྲངས་སྤྱད་དེ་ཁྱེད་ཀྱི་སྒྲིག་ཆས་སྒོ་ལྕགས་འབྱེད་ཆོག དེ་རྗེས་དེ་བས་མང་བའི་སྒྲིག་འགོད་ཀྱང་བྱེད་ཆོག - - - Done - ལེགས་གྲུབ། - - - Failed to enroll your face - ངོ་གདོང་ནང་འཇུག་མི་ཐུབ། - - - Try Again - ཡང་བསྐྱར་ནང་འཇུག - - - Close - ཁ་རྒྱག - - - - AddFingerDialog - - Cancel - འདོར་བ། - - - Done - གྲུབ་ཟིན། - - - Scan Again - ཡང་བསྐྱར་འབྲི་བ། - - - Scan Suspended - ཡི་གེ་གཏག་མཚམས་ཆད་པ། - - - - AddIrisInfoDialog - - Enroll Iris - མིག་འབྲས་གཞི་གྲངས་སྣོན་པ། - - - Cancel - འདོར་བ། - - - Next - རྗེས་མ། - - - Iris enrolled - མིག་འབྲས་ནང་འཇུག་བྱས་ཟིན། - - - Done - ལེགས་གྲུབ། - - - Failed to enroll your iris - མིག་འབྲས་ནང་འཇུག་མི་ཐུབ། - - - Try Again - ཡང་བསྐྱར་ནང་འཇུག - - - - AdvancedSettingModule - - Advanced Setting - - - - Audio Framework - - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - - - - - AuthenticationInfoItem - - No more than 15 characters - ཡིག་རྟགས་15ལས་བརྒལ་མི་རུང་། - - - Use letters, numbers and underscores only, and no more than 15 characters - གསལ་བྱེད་དང་། ཨང་ཀི། རྒྱ་ཡིག འོག་ཐིག་སོགས་ནས་གྲུབ་ཆོག་ལ། ཡིག་འབྲུ་15ལས་བརྒལ་མི་རུང་། - - - Use letters, numbers and underscores only - གསལ་བྱེད་དང་། ཨང་ཀི། རྒྱ་ཡིག གཤམ་ཐིག་བཅས་ལས་གྲུབ་དགོས། - - - - AuthenticationModule - - Biometric Authentication - སྐྱེ་དངོས་བདེན་མིན་ར་སྤྲོད - - - - AuthenticationPlugin - - Fingerprint - མཛུབ་རིས། - - - Face - ངོ་གདོང་། - - - Iris - མིག་འབྲས། - - - - BluetoothDeviceModel - - Connected - སྦྲེལ་ཟིན། - - - Not connected - སྦྲེལ་མེད་པ། - - - - BluetoothModule - - Bluetooth - སོ་སྔོན། - - - Bluetooth device manager - སོ་སྔོན་སྒྲིག་ཆས་དོ་དམ། - - - - CharaMangerModel - - Fingerprint1 - མཛུབ་རིས། 1 - - - Fingerprint2 - མཛུབ་རིས། 2 - - - Fingerprint3 - མཛུབ་རིས། 3 - - - Fingerprint4 - མཛུབ་རིས། 4 - - - Fingerprint5 - མཛུབ་རིས། 5 - - - Fingerprint6 - མཛུབ་རིས། 6 - - - Fingerprint7 - མཛུབ་རིས། 7 - - - Fingerprint8 - མཛུབ་རིས། 8 - - - Fingerprint9 - མཛུབ་རིས། 9 - - - Fingerprint10 - མཛུབ་རིས། 10 - - - Scan failed - མཛུབ་རིས་འཇུག་ཐབས་བྲལ། - - - The fingerprint already exists - མཛུབ་རིས་འདུག - - - Please scan other fingers - མཛུབ་མོ་གཞན་གྱི་མཛུབ་རིས་འཇུག་རོགས། - - - Unknown error - རྒྱུ་མཚན་མ་ཤེས་པའི་ནོར་འཁྲུལ། - - - Scan suspended - མཛུབ་རིས་འཇུག་མཚམས་ཆད་པ། - - - Cannot recognize - ངོས་འཛིན་ཐབས་བྲལ། - - - Moved too fast - རེག་པའི་དུས་ཚོད་ཐུང་བ། - - - Finger moved too fast, please do not lift until prompted - རེག་ཡུན་ཐུང་བ། ར་སྤཽད་བྱེད་སྐབས་མཛུབ་མོ་ཕྱིར་མ་འཁྱེར། - - - Unclear fingerprint - བརྙན་རིས་མི་གསལ་བ། - - - Clean your finger or adjust the finger position, and try again - མཛུབ་མོ་གཙང་མར་ཕྱིས་པའམ་རེག་ས་ལེགས་སྒྲིག་བྱས་རྗེས་ཡང་བསྐྱར་མཛུབ་རིས་ངོས་འཛིན་ཆས་ནོན་དང་། - - - Already scanned - བརྙན་རིས་བསྐྱར་ཟློས། - - - Adjust the finger position to scan your fingerprint fully - མཛུབ་རིས་གནོན་ས་ལེགས་སྒྲིག་བྱས་ནས་མཛུབ་རིས་སྔར་ལས་མང་བ་ནང་འཇུག་བྱེད། - - - Finger moved too fast. Please do not lift until prompted - མཛུབ་རིས་འཚོལ་བསྡུ་བྱེད་སྐབས་ཁྱོད་ལ་ཡར་ཁྱོག་ཅེས་གསལ་འདེབས་མ་བྱས་བར་མཛུབ་མོ་ཕྱིར་མ་འཁྱེར། - - - Lift your finger and place it on the sensor again - མཛུབ་མོ་ཡར་བཀྱག་ནས་ཡང་བསྐྱར་མནན་རོགས། - - - Position your face inside the frame - ཁྱེད་ཀྱི་ངོ་གདོང་ཚང་མ་དབྱེ་འབྱེད་ཁུལ་དུ་ཡོད་པར་ཁག་ཐེག་བྱེད་དགོས། - - - Face enrolled - ངོ་གདོང་ནང་འཇུག་བྱས་ཟིན། - - - Position a human face please - མིའི་རིགས་ཀྱི་ངོ་གདོང་སྤྱོད་རོགས། - - - Keep away from the camera - བཪྙན་ཤེལ་དང་བར་ཐག་འཇོག་དགོས། - - - Get closer to the camera - པར་ཆས་དང་ཐག་ཉེ་ཙམ་གནང་དང་། - - - Do not position multiple faces inside the frame - མི་མང་པོ་དབྱེ་འབྱེད་ཁུལ་དུ་མ་ཡོང་རོགས། - - - Make sure the camera lens is clean - བཪྙན་ཤེལ་གཙང་མ་ཡོད་དགོས། - - - Do not enroll in dark, bright or backlit environments - ནག་ཁུང་དང་དྲག་འོད། ཟློག་འོག་སོགས་འོག་བཀོལ་སྤྱོད་མ་བྱེད་རོགས། - - - Keep your face uncovered - ངོ་གདོང་བཀབ་མེད་པ་རྒྱུན་འཁྱོངས་བྱེད་དགོས། - - - Scan timed out - ནང་འཇུག་བྱེད་ཡུལ་བརྒལ་སོང་། - - - Device crashed, please scan again! - ནང་འཇུག་སྒྲིག་ཆས་ནོར་འཁྲུལ་ཤོར་བས། ཡང་བསྐྱར་ནང་འཇུག་བྱེད་རོགས། - - - Cancel - འདོར་བ། - - - - CooperationSettingsDialog - - Collaboration Settings - མཐུན་སྦྱོར་སྒྲིག་འགོད། - - - Share mouse and keyboard - ཙི་གུ་དང་མཐེབ་གཞོང་མཉམ་སྤྱོད། - - - Share your mouse and keyboard across devices - ཕྱེ་རྗེས་མཐུན་སྦྱོར་སྒྲིག་ཆས་བར་ཙི་གུ་དང་མཐེབ་གཞོང་མཉམ་སྤྱོད་བྱེད་པར་རྒྱབ་སྐྱོར་བྱེད་པ། - - - Share clipboard - དྲས་པང་མཉམ་སྤྱོད། - - - Storage path for shared files - ཡིག་ཁུག་མཉམ་སྤྱོད། - - - Share the copied content across devices - ཕྱེ་རྗེས་མཐུན་སྦྱོར་སྒྲིག་ཆས་བར་པར་སློག་གི་ནང་དོན་མཉམ་སྤྱོད་བྱེད་པར་རྒྱབ་སྐྱོར་བྱེད་པ། - - - Cancel - button - འདོར་བ། - - - Confirm - button - གཏན་ཁེལ། - - - - dccV23::AccountSpinBox - - Always - ཡུན་རིང་གོ་ཆོད། - - - - dccV23::AccountsModule - - Users - སྤྱོད་མཁན། - - - User management - སྤྱོད་མཁན་དོ་དམ། - - - Create User - སྤྱོད་མཁན་གསར་བཟོ། - - - Username - སྤྱོད་མཁན་མིང་། - - - Change Password - གསང་ཨང་བཟོ་བཅོས། - - - Delete User - སྤྱོད་མཁན་སུབ་པ། - - - User Type - སྤྱོད་མཁན་རིགས། - - - Auto Login - ཐོ་རང་འཇུག - - - Login Without Password - གསང་ཨང་མེད་པར་ཐོ་འཇུག་བྱེད་པ། - - - Validity Days - གསང་ཨང་གོ་ཆོད་པའི་ཉིན་གྲངས། - - - Group - སྤྱོད་མཁན། - - - The full name is too long - མིང་རིང་དྲག་འདུག - - - Standard User - ཚད་ལྡན་སྤྱོད་མཁན། - - - Administrator - དོ་དམ་པ། - - - Reset Password - གསང་ཨང་བསྐྱར་བཟོ། - - - The full name has been used by other user accounts - མིང་ཆ་ཚང་དེ་རྩིས་ཐོ་གཞན་གྱི་མིང་ཆ་ཚང་དང་ཡང་ན་སྤྱོད་མཁན་མིང་གཞན་དང་བསྐྱར་ཟློས་བྱས་འདུག - - - Full Name - མིང་ཆ་ཚང་བཟོ་བ། - - - Go to Settings - སྒྲིག་འགོད་བྱེད་དུ་འགྲོ་བ། - - - Cancel - འདོར་བ། - - - OK - གཏན་ཁེལ། - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - རྩིས་ཐོ་གཅིག་ཁོ་ན་ཐོ་རང་འཇུག་བྱེད་ཆོག སྔོན་ལ་རྩིས་ཐོ་%1སྒོ་བརྒྱབ་རྗེས་སླར་བཀོལ་སྤྱོད་བྱོས། - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - ཁྱོད་ཀྱི་རྩིས་འཁོར་ཨ་མ་ཁོངས་ཞབས་ཞུ་ཆས་ལས་ཕྱིར་དོན་ཟིན། - - - Your host joins the domain server successfully - ཁྱོད་ཀྱི་རྩིས་འཁོར་ཨ་མ་ཁོངས་ཞབས་ཞུ་ཆས་ནང་ཞུགས་ཟིན། - - - Your host failed to leave the domain server - ཁྱོད་ཀྱི་རྩིས་འཁོར་ཨ་མ་ཁོངས་ཞབས་ཞུ་ཆས་ལས་ཕྱིར་དོན་མ་ཐུབ། - - - Your host failed to join the domain server - ཁྱོད་ཀྱི་རྩིས་འཁོར་ཨ་མ་ཁོངས་ཞབས་ཞུ་ཆས་ནང་ཞུགས་མ་ཐུབ། - - - AD domain settings - ADཁོངས་ཀྱི་སྒྲིག་འགོད། - - - Password not match - གསང་ཨང་མི་མཐུན་བ། - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - %1ཡི་བརྡ་ཐོ་ཡོང་ཆོག བརྙན་ཡོལ་ཁྲོད་འཕྲེད་འགེལ་ཆ་འཕྲིན་མངོན་སྟོན་བྱེད་ཐུབ་ལ། བརྡ་ཐོའི་ལྟེ་གནས་ནང་དེ་སྔའི་ཆ་འཕྲིན་ལ་བལྟས་ཀྱང་ཆོག - - - Play a sound - བརྡ་ཐོ་འབྱོར་སྐབས་ཀྱི་སྒྲ། - - - Show messages on lockscreen - སྒོ་ལྕགས་བརྒྱབ་ཡོད་སྐབས་ཆ་འཕྲིན་མངོན་སྟོན་བྱེད། - - - Show in notification center - བརྡ་ཐོའི་ལྟེ་གནས་སུ་མངོན་སྟོན་བྱེད། - - - Show message preview - མངོན་སྟོན་ཆ་འཕྲིན་སྔོན་ལྟ། - - - - dccV23::AvatarListDialog - - Person - མི་སྣ། - - - Animal - སྲོག་ཆགས། - - - Illustration - གསར་འཆར་བར་རིས། - - - Expression - རྣམ་འགྱུར། - - - Custom Picture - རང་སྒྲུབ་རི་མོ། - - - Cancel - འདོར་བ། - - - Save - ཉར་ཚགས། - - - - dccV23::AvatarListFrame - - Dimensional Style - ལངས་གཟུགས་ཅན། - - - Flat Style - ངོས་སྙོམ་ཅན། - - - - dccV23::AvatarListView - - Images - པར་རིས། - - - - dccV23::BootWidget - - Updating... - གསར་སྒྱུར་བྱེད་བཞིན་པ། - - - Startup Delay - ཕྱིར་འགྱངས་འགོ་སློང་། - - - Theme - བརྗོད་གཞི། - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - ཁྱེད་ཀྱིས་འདེམས་བྱང་མནན་ནས་སོར་བཞག་འགོ་སློང་ཚན་པར་འགྱུར་བ་བཏང་ཆོག་ལ། པར་རིས་སྒེའུ་ཁུང་ནང་འཐེན་ནས་རྒྱབ་རིས་བརྗེས་ཀྱང་ཆོག - - - Click the option in boot menu to set it as the first boot - ཁྱོད་ཀྱིས་འདེམས་བྱང་ནས་སོར་བཞག་འགོ་སློང་ལ་འགྱུར་བ་གཏོང་ཆོག - - - Switch theme on to view it in boot menu - བརྗོད་གཞི་ཁ་ཕྱེ་རྗེས་ཁྱོད་ཀྱིས་འགོ་སློང་འདེམས་བྱང་ནས་བརྗོད་གཞིའི་རྒྱབ་ལྗོངས་མཐོང་ཐུབ། - - - GRUB Authentication - grubར་སྤྲོད། - - - GRUB password is required to edit its configuration - ཁ་ཕྱེ་རྗེས་grubརྩོམ་སྒྲིག་བྱེད་དགོས་ན་གསང་ཨང་འཇུག་དགོས། - - - Change Password - གསང་ཨང་བཟོ་བཅོས། - - - Boot Menu - འགོ་སློང་འདེམས་བྱང་། - - - Change GRUB password - grubར་སྤྲོད་གསང་ཨང་བཟོ་བཅོས། - - - Username: - སྤྱོད་མཁན་མིང་། - - - root - root - - - New password: - གསང་ཨང་གསར་པ། - - - Repeat password: - གསང་ཨང་བསྐྱར་ཟློས། - - - Required - ངེས་པར་འབྲི་དགོས། - - - Cancel - button - འདོར་བ། - - - Confirm - button - གཏན་ཁེལ། - - - Password cannot be empty - གསང་ཨང་སྟོང་པ་ཡིན་མི་རུང་། - - - Passwords do not match - གསང་ཨང་མི་མཐུན་བ། - - - - dccV23::BrightnessWidget - - Brightness - གསལ་ཚད། - - - Color Temperature - མདོག་དྲོད། - - - Auto Brightness - གསལ་ཚད་རང་སྙོམ། - - - Night Shift - མདོག་དྲོད་རང་སྙོམ། - - - The screen hue will be auto adjusted according to your location - གནས་ས་གནས་ཡུལ་ཐོབ་ཐབས་བྱས་ཏེ་རྒྱུད་ཁོངས་ལ་རམ་འདེགས་བྱས་ནས་བརྙན་ཡོལ་གྱི་ཁ་དོག་རང་སྙོམ་ཡོང་བ་བྱ་དགོས། - - - Change Color Temperature - ལག་ཐབས་སྙོམ་སྒྲིག - - - Cool - ཅུང་གྲང་། - - - Warm - ཅུང་དྲོ། - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - གློག་ཀླད་མཐུན་སྦྱོར་སྒྲིག་འགོད། - - - PC Collaboration - གློག་ཀླད་མཐུན་སྦྱོར། - - - Connect to - སྦྲེལ་མཐུད་པ། - - - Select a device for collaboration - མཐུན་སྦྱོར་སྒྲིག་ཆས་འདེམས་རོགས། - - - Device Orientation - སྦྲེལ་ཕྱོགས། - - - On the top - བརྙན་ཡོལ་གྱི་སྟེང་ཕྱོགས། - - - On the right - བརྙན་ཡོལ་གྱི་གཡས་ཕྱོགས། - - - On the bottom - བརྙན་ཡོལ་གྱི་འོག་ཕྱོགས། - - - On the left - བརྙན་ཡོལ་གྱི་གཡོན་ཕྱོགས། - - - My Devices - ངའི་སྒྲིག་ཆས། - - - Other Devices - སྒྲིག་ཆས་གཞན། - - - - dccV23::CommonInfoPlugin - - General Settings - ཀུན་སྤྱོད། - - - Boot Menu - འགོ་སློང་འདེམས་བྱང་། - - - Developer Mode - གསར་སྤེལ་བའི་དཔེ་རྣམ། - - - User Experience Program - སྤྱོད་མཁན་གྱི་ཉམས་ཞིབ་འཆར་གཞི། - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - སྤྱོད་མཁན་གྱི་ཉམས་ཞིབ་འཆར་གཞིར་མོས་མཐུན་ཡོད་པ་མ་ཟད་དེའི་ནང་ཞུགས་པ། - - - The Disclaimer of Developer Mode - གསར་སྤེལ་བའི་དཔེ་རྣམ་གྱི་འགན་མེད་གསལ་བསྒྲགས། - - - Agree and Request Root Access - གསར་སྤེལ་བའི་དཔེ་རྣམ་ལ་མོས་མཐུན་ཡོད་པ་མ་ཟད་དེའི་ནང་ཞུགས་པ། - - - Failed to get root access - གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་མི་ཐུབ། - - - Please sign in to your Union ID first - སྔོན་ལ་Union IDནང་ཐོ་འཇུག་བྱེད་རོགས། - - - Cannot read your PC information - མཁྲེགས་ཆས་ཆ་འཕྲིན་ཐོབ་ཐབས་མི་འདུག - - - No network connection - དྲ་རྒྱ་འབྲེལ་མཐུད་མི་འདུག - - - Certificate loading failed, unable to get root access - དཔང་ཡིག་སྣོན་འཇུག་བྱེད་མི་ཐུབ་པས། གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་མི་ཐུབ། - - - Signature verification failed, unable to get root access - མིང་རྟགས་ར་སྤྲོད་བྱེད་མི་ཐུབ་པས། གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་མི་ཐུབ། - - - - dccV23::CreateAccountPage - - Group - སྤྱོད་མཁན། - - - Cancel - འདོར་བ། - - - Create - གསར་པ་བཟོ་བ། - - - New User - སྤྱོད་མཁན་གསར་པ། - - - User Type - སྤྱོད་མཁན་རིགས། - - - Username - སྤྱོད་མཁན་མིང་། - - - Full Name - མིང་ཆ་ཚང་བཟོ་བ། - - - Password - གསང་ཨང་། - - - Repeat Password - གསང་ཨང་བསྐྱར་ཟློས། - - - Password Hint - གསང་ཨང་དྲན་སྐུལ། - - - The full name is too long - མིང་རིང་དྲག་འདུག - - - Passwords do not match - གསང་ཨང་མི་མཐུན་བ། - - - Standard User - ཚད་ལྡན་སྤྱོད་མཁན། - - - Administrator - དོ་དམ་པ། - - - Customized - མཚན་ཉིད་རང་འཇོག་སྤྱོད་མཁན། - - - Required - ངེས་པར་འབྲི་དགོས། - - - optional - བདམས་ནས་བྲི་དགོས། - - - The hint is visible to all users. Do not include the password here. - གསང་ཨང་ཚང་མས་མཐོང་ཐུབ་པས། གསང་ཨང་གི་ཞིབ་ཕྲའི་ཆ་འཕྲིན་མ་འབྲི། - - - Policykit authentication failed - ར་སྤྲོད་བྱེད་མ་ཐུབ། - - - Username must be between 3 and 32 characters - སྤྱོད་མཁན་མིང་གི་རིང་ཚད་ངེས་པར་དུ་ཡིག་འབྲུ་3ནས་32བར་ཡིན་དགོས། - - - The first character must be a letter or number - ཡིག་འབྲུ་ཐོག་མ་དེ་ངེས་པར་དུ་གསལ་བྱེད་དམ་ཨང་ཀི་ཡིན་དགོས། - - - Your username should not only have numbers - སྤྱོད་མཁན་མིང་ཨང་ཀི་གཅིག་པུས་མི་འགྲིག - - - The username has been used by other user accounts - སྤྱོད་མཁན་མིང་དེ་རྩིས་ཐོ་གཞན་གྱི་མིང་ཆ་ཚང་དང་ཡང་ན་སྤྱོད་མཁན་མིང་གཞན་དང་བསྐྱར་ཟློས་བྱས་འདུག - - - The full name has been used by other user accounts - མིང་ཆ་ཚང་དེ་རྩིས་ཐོ་གཞན་གྱི་མིང་ཆ་ཚང་དང་ཡང་ན་སྤྱོད་མཁན་མིང་གཞན་དང་བསྐྱར་ཟློས་བྱས་འདུག - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - ཁྱེད་ཀྱིས་མགོ་བརྙན་བསྐུར་མྱོང་མེད། གནོན་པའམ་འཐེན་ནས་བསྐུར་ཆོག - - - Uploaded file type is incorrect, please upload again - བསྐུར་བའི་ཡིག་ཆའི་རིགས་ནོར་འདུག ཡང་བསྐྱར་བསྐུར་རོགས། - - - Images - པར་རིས། - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - རང་སྒྲུབ་མྱུར་མཐེབ་སྣོན་པ། - - - Name - མིང་། - - - Required - ངེས་པར་འབྲི་དགོས། - - - Command - བཀའ། - - - Cancel - འདོར་བ། - - - Add - ཁ་སྣོན། - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - མྱུར་མཐེབ་འདི་%1དང་གདོང་ཐུག་བྱུང་འདུག ཁ་སྣོན་མནན་ནས་མྱུར་མཐེབ་འདི་ལམ་སེང་གོ་ཆོད་པ་བྱེད། - - - - dccV23::CustomEdit - - Required - ངེས་པར་འབྲི་དགོས། - - - Cancel - འདོར་བ། - - - Save - ཉར་ཚགས། - - - Shortcut - མྱུར་མཐེབ། - - - Name - མིང་། - - - Command - བཀའ། - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - མྱུར་མཐེབ་འདི་%1དང་གདོང་ཐུག་བྱུང་འདུག ཁ་སྣོན་མནན་ནས་མྱུར་མཐེབ་འདི་ལམ་སེང་གོ་ཆོད་པ་བྱེད། - - - - dccV23::CustomItem - - Shortcut - མྱུར་མཐེབ། - - - Please enter a shortcut - མྱུར་མཐེབ་འཇུག་རོགས། - - - - dccV23::CustomRegionFormatDialog - - Custom format - རང་སྒྲུབ་རྣམ་གཞག - - - First day of week - གཟའ་འཁོར་གཅིག་གི་ཉིན་དང་པོ། - - - Short date - ཚེས་གྲངས་ཐུང་བ། - - - Long date - ཚེས་གྲངས་རིང་བ། - - - Short time - དུས་ཚོད་ཐུང་ཐུང་། - - - Long time - དུས་ཚོད་རིང་པོ། - - - Currency symbol - དངུལ་ལོར་མཚོན་རྟགས། - - - Numbers - ཨང་ཀི། - - - Paper - ཤོག་བུ། - - - Cancel - འདོར་བ། - - - Save - ཉར་ཚགས། - - - - dccV23::DetailInfoItem - - For more details, visit: - ཐེངས་འདིའི་གསར་སྒྱུར་དང་འབྲེལ་བའི་ཞིབ་ཕྲའི་ནང་དོན་དག་་་་་་་་་་ནས་ལྟ་ཆོག - - - - dccV23::DeveloperModeDialog - - Request Root Access - གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་ཞུགས་པ། - - - Online - འཁོར་སྦྲེལ་སྑུལ་སློང་། - - - Offline - སྑུད་བྲལ་སྑུལ་སློང་། - - - Please sign in to your Union ID first and continue - གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་བར་Union IDཐོ་འཇུག་བྱེད་དགོས། - - - Next - རྗེས་མ། - - - Export PC Info - འཕྲུལ་འཁོར་གྱི་ཆ་འཕྲིན་ཕྱིར་འདྲེན་པ། - - - Import Certificate - དཔང་ཡིག་ནང་འདྲེན། - - - 1. Export your PC information - 1.འཕྲུལ་འཁོར་གྱི་ཆ་འཕྲིན་ཕྱིར་འདྲེན་པ། - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2.https://www.chinauos.com/developMode ནང་མཛུལ་ནས་སྐུད་བྲལ་དཔང་ཡིག་ཕབ་ལེན་བྱེད་པ། - - - 3. Import the certificate - 3.དཔང་ཡིག་ནང་འདྲེན། - - - - dccV23::DeveloperModeWidget - - Request Root Access - གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་ཞུགས་པ། - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་རྗེས་rootཡི་བེད་སྤྱོད་དབང་ཚད་ཐོབ་པས་ཚོང་ཁང་གི་མིང་རྟགས་མིན་པའི་ཉེར་སྤྱོད་སྒྲིག་འཇུག་དང་འཁོར་སྐྱོད་བྱེད་ཐུབ། འོན་ཀྱང་དེ་དང་དུས་མཚུངས་རྒྱུད་ཁོངས་ཆ་ཚང་བར་གཏོར་བཤིག་གཏོང་སྲིད་པས། གཟབ་ནན་བྱེད་རོགགས། - - - The feature is not available at present, please activate your system first - མིག་སྔའི་རྒྱུད་ཁོངས་སྑུལ་སློང་བྱས་མེད་པས། རྩོལ་ནུས་འདི་ཉིད་གནས་སྐབས་བེད་སྤྱོད་བྱེད་ཐབས་བྲལ། - - - Failed to get root access - གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་མི་ཐུབ། - - - Please sign in to your Union ID first - སྔོན་ལ་Union IDནང་ཐོ་འཇུག་བྱེད་རོགས། - - - Cannot read your PC information - མཁྲེགས་ཆས་ཆ་འཕྲིན་ཐོབ་ཐབས་མི་འདུག - - - No network connection - དྲ་རྒྱ་འབྲེལ་མཐུད་མི་འདུག - - - Certificate loading failed, unable to get root access - དཔང་ཡིག་སྣོན་འཇུག་བྱེད་མི་ཐུབ་པས། གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་མི་ཐུབ། - - - Signature verification failed, unable to get root access - མིང་རྟགས་ར་སྤྲོད་བྱེད་མི་ཐུབ་པས། གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་མི་ཐུབ། - - - To make some features effective, a restart is required. Restart now? - གསར་སྤེལ་བའི་དཔེ་རྣམ་གྱི་རྩོལ་ནུས་འགའ་ཞིག་འགོ་བསྐྱར་དུ་བསླངས་རྗེས་གོ་ཆོད་པས་བསྐྱར་དུ་འགོ་སློང་དགོས་སམ། - - - Cancel - འདོར་བ། - - - Restart Now - ད་ལྟ་བསྐྱར་དུ་འགོ་སློང་། - - - Root Access Allowed - གསར་སྤེལ་བའི་དཔེ་རྣམ་ནང་མཛུལ་ཟིན། - - - - dccV23::DisplayPlugin - - Display - མངོན་སྟོན། - - - Light, resolution, scaling and etc - གསལ་ཚད། འབྱེད་ཕྱོད། སྐྱེད་སྐྱུང་སྒྲིག་འགོད་སོགས། - - - - dccV23::DouTestWidget - - Double-click Test - ཉིས་རྡེབ་ཚོད་ལྟ། - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - མཐེབ་གཞོང་སྒྲིག་འགོད། - - - Repeat Delay - བསྐྱར་དུ་འགྱངས་པ། - - - Short - ཐུང་ངུ་། - - - Long - རིང་པོ། - - - Repeat Rate - མྱུར་ཚད་བསྐྱར་ཟློས། - - - Slow - དལ་པོ། - - - Fast - མགྱོགས་པོ། - - - Test here - འདི་ནས་ཚོད་ལྟ་བྱེད་རོགས། - - - Numeric Keypad - གྲངས་མཐེབ་སྤྱོད་པ། - - - Caps Lock Prompt - ཡིག་ཆེན་སྒོ་ལྕགས་བརྒྱབ་པ་སྟོན་པ། - - - - dccV23::GeneralSettingWidget - - Left Hand - ལག་གཡོན་མའི་དཔེ་རྣམ། - - - Disable touchpad while typing - ནང་འཇུག་བྱེད་སྐབས་ཐུག་རེག་བརྙན་ཡོལ་སྤྱོད་མི་ཆོག - - - Scrolling Speed - འགྲིལ་ཚད། - - - Double-click Speed - ཉིས་རྡེབ་མགྱོགས་ཚད། - - - Slow - དལ་པོ། - - - Fast - མགྱོགས་པོ། - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - མཐེབ་གཞོང་བཀོད་པ། - - - Edit - རྩོམ་སྒྲིག - - - Add Keyboard Layout - མཐེབ་གཞོང་བཀོད་པ་སྣོན་པ། - - - Done - ལེགས་གྲུབ། - - - - dccV23::KeyboardLayoutDialog - - Cancel - འདོར་བ། - - - Add - ཁ་སྣོན། - - - Add Keyboard Layout - མཐེབ་གཞོང་བཀོད་པ་སྣོན་པ། - - - - dccV23::KeyboardPlugin - - Keyboard and Language - མཐེབ་གཞོང་དང་སྐད་རིགས། - - - Keyboard - མཐེབ་གཞོང་། - - - Keyboard Settings - མཐེབ་གཞོང་སྒྲིག་འགོད། - - - keyboard Layout - མཐེབ་གཞོང་བཀོད་པ། - - - Keyboard Layout - མཐེབ་གཞོང་བཀོད་པ། - - - Language - སྐད་ཡིག - - - Shortcuts - མྱུར་མཐེབ། - - - - dccV23::MainWindow - - Help - རོགས་རམ། - - - - dccV23::ModifyPasswdPage - - Change Password - གསང་ཨང་བཟོ་བཅོས། - - - Reset Password - གསང་ཨང་བསྐྱར་བཟོ། - - - Resetting the password will clear the data stored in the keyring. - གསང་ཨང་བསྐྱར་བཟོ་བྱས་ན་གསང་ལྡེའི་གདུབ་ནང་ཉར་བའི་གཞི་གྲངས་སུབ་སྲིད། - - - Current Password - མིག་སྔའི་གསང་ཨང་། - - - Forgot password? - གསང་ཨང་བརྗེད་འདུག་གམ། - - - New Password - གསང་ཨང་གསར་པ། - - - Repeat Password - གསང་ཨང་བསྐྱར་ཟློས། - - - Password Hint - གསང་ཨང་དྲན་སྐུལ། - - - Cancel - འདོར་བ། - - - Save - ཉར་ཚགས། - - - Passwords do not match - གསང་ཨང་མི་མཐུན་བ། - - - Required - ངེས་པར་འབྲི་དགོས། - - - Optional - བདམས་ནས་བྲི་བ། - - - Password cannot be empty - གསང་ཨང་སྟོང་པ་ཡིན་མི་རུང་། - - - The hint is visible to all users. Do not include the password here. - གསང་ཨང་ཚང་མས་མཐོང་ཐུབ་པས། གསང་ཨང་གི་ཞིབ་ཕྲའི་ཆ་འཕྲིན་མ་འབྲི། - - - Wrong password - གསང་ཨང་ནོར་འདུག - - - New password should differ from the current one - གསང་ཨང་གསར་པ་དང་རྙིང་པ་གཅིག་མཚུངས་ཡིན་མི་རུང་། - - - System error - མ་ལག་ནོར་བ། - - - Network error - དྲ་རྒྱ་ནོར་བ། - - - - dccV23::MonitorControlWidget - - Identify - དབྱེ་འབྱེད་ངོས་འཛིན། - - - Gather Windows - གཅིག་འདུས་སྒེའུ་ཁུང་། - - - Screen rearrangement will take effect in %1s after changes - བཪྙན་ཡོལ་མཐུད་སྦྱོར་དེ་བཟོ་བཅོས་ལེགས་གྲུབ་%1sརྗེས་ལ་ནུས་པ་ཐོན་སྲིད། - - - - dccV23::MousePlugin - - Mouse - ཙི་གུ། - - - General - ཀུན་སྤྱོད། - - - Touchpad - ཐུག་རེག་པང་ལེབ། - - - TrackPoint - མཐེབ་རིས་དམར་ཆུང་། - - - - dccV23::MouseSettingWidget - - Pointer Speed - སྟོན་མདའི་མགྱོགས་ཚད། - - - Mouse Acceleration - ཙི་གུ་མགྱོགས་སུ་གཏོང་བ། - - - Disable touchpad when a mouse is connected - ཙི་གུ་འཇུག་སྐབས་ཐུག་རེག་བརྙན་ཡོལ་སྤྱོད་མི་ཆོག - - - Natural Scrolling - རང་འཁོར། - - - Slow - དལ་པོ། - - - Fast - མགྱོགས་པོ། - - - - dccV23::MultiScreenWidget - - Multiple Displays - བརྙན་མང་མངོན་སྟོན་སྒྲིག་འགོད། - /display/Multiple Displays - - - Mode - དཔེ་རྣམ། - /display/Mode - - - Main Screen - བརྙན་ཡོལ་གཙོ་བོ། - /display/Main Scree - - - Duplicate - པར་སློག - - - Extend - རྒྱ་སྐྱེད། - - - Only on %1 - བརྙན་ཡོལ་%1 - - - - dccV23::NotificationModule - - AppNotify - ཉེར་སྤྱོད་བརྡ་ཐོ། - - - Notification - བརྡ་ཐོ། - - - SystemNotify - རྒྱུད་ཁོངས་བརྡ་ཐོ། - - - - dccV23::PalmDetectSetting - - Palm Detection - ལག་མཐིལ་དཔྱད་འཇལ། - - - Minimum Contact Surface - ཐུག་ངོས་ཆུང་ཤོས། - - - Minimum Pressure Value - གནོན་ཤུགས་ཆུང་ཤོས། - - - Disable the option if touchpad doesn't work after enabled - ཁ་ཕྱེ་རྗེས་ཐུག་རེག་བརྙན་ཡོལ་བེད་སྤྱོད་བྱེད་མ་ཐུབ་ཚེ་འདི་ཁ་བརྒྱབ་ན་ཆོག - - - - dccV23::PluginManager - - following plugins load failed - གཤམ་གྱི་གཞུག་བྱ་དག་སྣོན་འཇུག་བྱེད་མ་ཐུབ། - - - plugins cannot loaded in time - གཞུག་བྱ་དུས་ཐོག་ཏུ་སྣོན་འཇུག་བྱས་མེད། - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - གསང་དོན་སྲིད་ཇུས། - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-ti - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>ཐུང་ཞིན་མཉེན་ཆས་ཀྱིས་ཁྱེད་ཀྱི་གསང་དོན་ལ་ཧ་ཅང་མཐོང་ཆེན་བྱེད་ཀྱི་ཡོད། དེར་བརྟེན་ང་ཚོས་ཁྱོད་ཀྱི་ཆ་འཕྲིན་ཇི་ལྟར་བསྡུ་ལེན་དང་། བེད་སྤྱོད། མཉམ་སྤྱོད། བཤུག་སྤྲོད། ཡོངས་བསྒྲགས། དེ་བཞིན་གསོག་འཇོག་བྱེད་པའི་ཐད་ཀྱི་གསང་དོན་སྲིད་ཇུས་བཟོས་ཡོད། </p><p>ཁྱེད་ཀྱིས་<a href="%1">འདི་མནན་ནས་</a>ང་ཚོའི་གསང་དོན་སྲིད་ཇུས་གསར་ཤོས་ལ་ལྟ་བཤེར་བྱེད་པའམ་འདྲི་རྩད་བྱེད་ཆོག <a href="%1">%1</a> དྲ་ཐོག་ལྟ་བཤེར། ཁྱོད་ཀྱིས་ངེས་པར་དུ་ནན་ཏན་ངང་ལྟ་ཀློག་བྱས་ཏེ། ང་ཚོས་མཁོ་མཁན་ལ་དམིགས་པའི་གསང་དོན་བྱ་ཐབས་ལ་དགོངས་བཞེས་གང་ལེགས་ཡོད་པ་ཞུ། གལ་ཏེ་དོགས་གནད་གང་ཞིག་ཡོད་ཚེ། ང་ཚོ་དང་འབྲེལ་བ་གནང་རོགས། support@uniontech.com</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - གསང་ཨང་སྟོང་པ་ཡིན་མི་རུང་། - - - Password must have at least %1 characters - གསང་ཨང་རིང་ཚད་གྲངས་གནས་%1ལས་ཉུང་མི་རུང་། - - - Password must be no more than %1 characters - གསང་ཨང་གི་རིང་ཚད་%1གཉིས་ལས་བརྒལ་མི་རུང་། - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - གསང་ཨང་ནི་དབྱིན་ཡིག་(ཡིག་ཆེན་དང་ཡིག་ཆུང་གི་དབྱེ་བ་འབྱེད་དགོས། )དང་། ཨང་ཀི། ཡང་ན་དམིགས་བསལ་མཚོན་རྟགས་(~!@#$%^&*()[]{}\|/?,.<>)བཅས་ལས་གྲུབ་དགོས། - - - No more than %1 palindrome characters please - སྐོར་ཟློས་ཡིག་འབྲུ་%1ལས་བརྒལ་མི་རུང་། - - - No more than %1 monotonic characters please - གཅིག་རྐྱང་ཅན་གྱི་ཡིག་འབྲུ་%1ལས་བརྒལ་མི་རུང་། - - - No more than %1 repeating characters please - བསྐྱར་ཟློས་ཡིག་འབྲུ་%1ལས་བརྒལ་མི་རུང་། - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - གསང་ཨང་ནི་ངེས་པར་དུ་ཡིག་ཆེན་དང་། ཡིག་ཆུང་། གྲངས་ཀ མཚོན་རྟགས་(~!@#$%^&*-+=`|\(){}[]:;"'<>,.?/)བཅས་རིགས་བཞི་ལས་གྲུབ་དགོས། - - - Password must not contain more than 4 palindrome characters - གསང་ཨང་ནང་བསྟུད་མར་ཟུང་ལྡན་གྱི་ཡིག་འབྲུ་4ཡན་ཡོད་མི་ཆོག - - - Do not use common words and combinations as password - གསང་ཨང་ནི་རྒྱུན་མཐོང་གི་མིང་དང་ཚིག་གྲུབ་ཡིན་མི་ཆོག - - - Create a strong password please - གསང་ཨང་སྟབས་བདེ་དྲགས་པས། གསང་ཨང་རྙོག་འཛིང་ཆེ་རུ་གཏོང་། - - - It does not meet password rules - གསང་ཨང་བདེ་འཇགས་ཀྱི་བླང་བྱ་དང་མི་འཚམ་པ། - - - - dccV23::RefreshRateWidget - - Refresh Rate - གསར་འདོན་ཕྱོད། - - - Hz - ཧོ་ཙི། - - - Recommended - འོས་སྦྱོར། - - - - dccV23::RegionFormatDialog - - Region format - ཁུལ་ཁོངས་རྣམ་གཞག - - - Default format - སོར་བཞག་རྣམ་གཞག - - - First of day - གཟའ་འཁོར་གཅིག་གི་ཉིན་དང་པོ། - - - Short date - ཚེས་གྲངས་ཐུང་བ། - - - Long date - ཚེས་གྲངས་རིང་བ། - - - Short time - དུས་ཚོད་ཐུང་ཐུང་། - - - Long time - དུས་ཚོད་རིང་པོ། - - - Currency symbol - དངུལ་ལོར་མཚོན་རྟགས། - - - Numbers - ཨང་ཀི། - - - Paper - ཤོག་བུ། - - - Cancel - འདོར་བ། - - - Save - ཉར་ཚགས། - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - ཁྱོད་ཀྱིས་རྩིས་ཐོ་འདི་བསུབ་རྒྱུ་གཏན་འཁེལ་ལམ། - - - Delete account directory - རྩིས་ཁྲའི་དཀར་ཆག་སུབ་པ། - - - Cancel - འདོར་བ། - - - Delete - སུབ་པ། - - - - dccV23::ResolutionWidget - - Resolution - འབྱེད་ཕྱོད། - /display/Resolution - - - Resize Desktop - ཅོག་ངོས་མངོན་སྟོན། - /display/Resize Desktop - - - Default - སོར་བཞག - - - Fit - འཚམ་པ། - - - Stretch - འཐེན་པ། - - - Center - དཀྱིལ་དུ་འཇོག་པ། - - - Recommended - འོས་སྦྱོར། - - - - dccV23::RotateWidget - - Rotation - ཁ་ཕྱོགས། - /display/Rotation - - - Standard - ཚད་ལྡན། - - - 90° - ཏུའུ་90 - - - 180° - ཏུའུ་180 - - - 270° - ཏུའུ་270 - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - མིག་སྔའི་བརྙན་ཡོལ་སྐྱེད་སྐྱུང་ལྡབ100%བྱེད་ཆོག - - - Display Scaling - བརྙན་ཡོལ་སྐྱེད་སྐྱུང་། - - - - dccV23::SearchInput - - Search - བཤེར་འཚོལ། - - - - dccV23::SecondaryScreenDialog - - Brightness - གསལ་ཚད། - - - - dccV23::SecurityLevelItem - - Weak - དཀའ་ཚད་དམའ་བ། - - - Medium - དཀའ་ཚད་འབྲིང་བ། - - - Strong - དཀའ་ཚད་མཐོ་བ། - - - - dccV23::SecurityQuestionsPage - - Security Questions - བདེ་འཇགས་གནད་དོན། - - - These questions will be used to help reset your password in case you forget it. - གསང་ཨང་བརྗེད་པའི་སྐབས། བདེ་འཇགས་གནད་དོན་སྤྱད་དེ་གསང་ཨང་ཡང་བསྐྱར་བཟོ་ཆོག - - - Security question 1 - བདེ་འཇགས་གནད་དོན།1 - - - Security question 2 - བདེ་འཇགས་གནད་དོན།2 - - - Security question 3 - བདེ་འཇགས་གནད་དོན།3 - - - Cancel - འདོར་བ། - - - Confirm - གཏན་ཁེལ། - - - Keep the answer under 30 characters - ལན་ཡིག་འབྲུ་30ནང་ཚུན་ཡིན་དགོས། - - - Do not choose a duplicate question please - འདྲི་བ་བསྐྱར་ཟློས་བྱས་པ་འདེམས་མི་ཆོག - - - Please select a question - བདེ་འཇགས་སྐོར་གྱི་འདྲི་བ་འདེམས་རོགས། - - - What's the name of the city where you were born? - ཁྱེད་རང་སྐྱེ་སའི་གྲོང་ཁྱེར་མིང་ལ་གང་ཟེར། - - - What's the name of the first school you attended? - ཁྱེད་ཀྱི་མ་ཡུམ་སློབ་གྲྭའི་མིང་ལ་གང་ཟེར། - - - Who do you love the most in this world? - ཁྱེད་རང་དགའ་ཤོས་ཀྱི་མི་སུ་ཡིན། - - - What's your favorite animal? - ཁྱེད་དགའ་ཤོས་ཀྱི་སྲོག་ཆགས་གང་རེད། - - - What's your favorite song? - ཁྱེད་རང་དགའ་ཤོས་ཀྱི་གླུ་དབྱངས་གང་རེད། - - - What's your nickname? - ཁྱེད་ཀྱི་མིང་འདོགས་ལ་ཅི་ཟེར། - - - It cannot be empty - ནང་དོན་སྟོང་པ་ཡིན་མི་རུང་། - - - - dccV23::SettingsHead - - Edit - རྩོམ་སྒྲིག - - - Done - ལེགས་གྲུབ། - - - - dccV23::ShortCutSettingWidget - - System - རྒྱུད་ཁོངས། - - - Window - སྒེའུ་ཁུང་། - - - Workspace - ལས་ཀ་བྱེད་ས། - - - Assistive Tools - རམ་འདེགས་རྩོལ་ནུས། - - - Custom Shortcut - རང་སྒྲུབ་མྱུར་མཐེབ། - - - Restore Defaults - སོར་བཞག་སོར་ཆུད། - - - Shortcut - མྱུར་མཐེབ། - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - མྱུར་མཐེབ་བསྐྱར་སྒྲིག་བྱེད་རོགས། - - - Cancel - འདོར་བ། - - - Replace - བརྗེ་བ། - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - མྱུར་མཐེབ་འདི་%1དང་མི་མཐུན་པས་བརྗེ་པོ་བརྒྱབ་སྟེ་འདི་ཉིད་འཕྲལ་མར་གོ་ཆོད་པ་བྱེད། - - - - dccV23::ShortcutItem - - Enter a new shortcut - མྱུར་མཐེབ་གསར་པ་འཇུག་རོགས། - - - - dccV23::SystemInfoModel - - available - སྤྱོད་ཆོག - - - - dccV23::SystemInfoModule - - About This PC - འཕྲུལ་ཆས་འདི་དང་འབྲེལ་བའི་སྐོར། - - - Computer Name - རྩིས་འཁོར་གྱི་མིང་། - - - systemInfo - རྒྱུད་ཁོངས་ཆ་འཕྲིན། - - - OS Name - ཐོན་རྫས་ཀྱི་མིང་། - - - Version - པར་གཞི། - - - Edition - པར་གཞི། - - - Type - རིགས་གྲས། - - - Authorization - པར་གཞི་དབང་སྤྲོད། - - - Processor - སྒྲིག་གཅོད་ཆས། - - - Memory - ནང་གསོག - - - Graphics Platform - རིས་དབྱིབས་ལས་སྟེགས། - - - Kernel - ལྟེ་བའི་པར་གཞི། - - - Agreements and Privacy Policy - གྲོས་མཐུན་དང་གསང་དོན་སྲིད་ཇུས། - - - Edition License - པར་གཞིའི་གྲོས་མཐུན། - - - End User License Agreement - མཐའ་མའི་སྤྱོད་མཁན་གྱི་ཆོག་འཐུས་གྲོས་མཐུན། - - - Privacy Policy - གསང་དོན་སྲིད་ཇུས། - - - %1-bit - གནས་%1 - - - - dccV23::SystemInfoPlugin - - System Info - རྒྱུད་ཁོངས་ཆ་འཕྲིན། - - - - dccV23::SystemLanguageSettingDialog - - Cancel - འདོར་བ། - - - Add - ཁ་སྣོན། - - - Add System Language - རྒྱུད་ཁོངས་སྐད་ཡིག་སྣོན་པ། - - - - dccV23::SystemLanguageWidget - - Edit - རྩོམ་སྒྲིག - - - Language List - སྐད་ཡིག་གསལ་ཐོ། - - - Add Language - སྐད་ཡིག་ཁ་སྣོན། - - - Done - ལེགས་གྲུབ། - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - སུན་འགོག་དཔེ་རྣམ། - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - ཉེར་སྤྱོད་འཕྲེད་འགེལ་ཆ་འཕྲིན་ཆ་ཚང་ཡིབ་པ་དང་། བརྡ་ཐོའི་སྒྲ་ཡང་སྒྲ་མེད་དུ་འགྱུར་བས། ཁྱོད་ཀྱིས་བརྡ་ཐོའི་ལྟེ་གནས་ནས་ཆ་འཕྲིན་ཆ་ཚང་ལ་ལྟ་ཆོག - - - When the screen is locked - བརྙན་ཡོལ་སྒོ་ལྕགས་རྒྱག་སྐབས། - - - - dccV23::TimeSlotItem - - From - ནས། - - - To - བར། - - - - dccV23::TouchScreenModule - - Touch Screen - ཐུག་རེག་བརྙན་ཡོལ། - - - Select your touch screen when connected or set it here. - ཁྱེད་ཀྱིས་ཐུག་རེག་བརྙན་ཡོལ་དང་སྦྲེལ་སྐབས་དེ་གནས་སའི་བརྙན་ཡོལ་དང་ཡང་ན་འདི་ག་ནས་ལེགས་སྒྲིག་བྱེད་ཆོག - - - Confirm - གཏན་ཁེལ། - - - Cancel - འདོར་བ། - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - སྟོན་མདའི་མགྱོགས་ཚད། - - - Enable TouchPad - ཐུག་རེག་བརྙན་ཡོལ་འགོ་སློང་། - - - Tap to Click - རེག་ཙམ་བྱེད་པ། - - - Natural Scrolling - རང་འཁོར། - - - Slow - དལ་པོ། - - - Fast - མགྱོགས་པོ། - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - སྟོན་མདའི་མགྱོགས་ཚད། - - - Slow - དལ་པོ། - - - Fast - མགྱོགས་པོ། - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - སྤྱོད་མཁན་གྱི་ཉམས་ཞིབ་འཆར་གཞིའི་ནང་ཞུགས་པ། - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-ti - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>སྤྱོད་མཁན་གྱི་ཉམས་ཞིབ་འཆར་གཞི་ཁ་ཕྱེ་བ་འདིས་ང་ཚོས་ཁྱོད་ཀྱི་སྒྲིག་ཆས་དང་རྒྱུད་ཁོངས་ཆ་འཕྲིན། དེ་བཞིན་ཉེར་སྤྱོད་མཉེན་ཆས་ཀྱི་ཆ་འཕྲིན་བསྡུ་བ་དང་བེད་སྤྱོད་བྱེད་ཆོག་པར་དབང་ཆ་སྤྲད་པ་ཡིན་པར་བརྩི་རྒྱུ་ཡིན། ཁྱོད་ཀྱིས་སྤྱོད་མཁན་གྱི་ཉམས་ཞིབ་འཆར་གཞི་ཁ་བརྒྱབ་ནས་ང་ཚོས་གོང་གསལ་གྱི་ཆ་འཕྲིན་བསྡུ་བ་དང་བེད་སྤྱོད་བྱེད་པར་བཀག་འགོག་བྱ་ཆོག ཞིབ་ཕྲའི་གསལ་བཤད་ནིགསང་དོན་སྲིད་ཇུས་ལ་གཟིགས་རོགས། -(<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>སྤྱོད་མཁན་གྱི་ཉམས་ཞིབ་འཆར་གཞི་ཁ་ཕྱེ་བ་འདིས་ང་ཚོས་ཁྱོད་ཀྱི་སྒྲིག་ཆས་དང་རྒྱུད་ཁོངས་ཆ་འཕྲིན། དེ་བཞིན་ཉེར་སྤྱོད་མཉེན་ཆས་ཀྱི་ཆ་འཕྲིན་བསྡུ་བ་དང་བེད་སྤྱོད་བྱེད་ཆོག་པར་དབང་ཆ་སྤྲད་པ་ཡིན་པར་བརྩི་རྒྱུ་ཡིན། ཁྱོད་ཀྱིས་སྤྱོད་མཁན་གྱི་ཉམས་ཞིབ་འཆར་གཞི་ཁ་བརྒྱབ་ནས་ང་ཚོས་གོང་གསལ་གྱི་ཆ་འཕྲིན་བསྡུ་བ་དང་བེད་སྤྱོད་བྱེད་པར་བཀག་འགོག་བྱ་ཆོག གཞི་གྲངས་ཀྱི་དོ་དམ་བྱ་ཐབས་རྒྱུས་ལོན་བྱེད་དགོས་ཚེ། ཐུང་ཞིན་མཉེན་ཆས་ཀྱི་གསང་དོན་སྲིད་ཇུས་ལ་གཟིགས་རོགས། (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - ལོ། - - - Month - ཟླ། - - - Day - ཚེས་གྲངས། - - - - DatetimeModule - - Time and Format - དུས་ཚོད་དང་རྣམ་གཞག - - - - DatetimeWorker - - Authentication is required to change NTP server - དུས་ཚོད་ཀྱི་ཞབས་ཞུ་འཕྲུལ་ཆས་བཟོ་བཅོས་བྱེད་པར་ར་སྤྲོད་བྱེད་དགོས། - - - - DefAppModule - - Default Applications - སོར་བཞག་བྱ་རིམ། - - - - DefAppPlugin - - Webpage - དྲ་ངོས། - - - Mail - སྦྲག་སྐུར། - - - Text - ཡིག་རྐྱང་། - - - Music - རོལ་མོ། - - - Video - བརྙན་འཕྲིན། - - - Picture - པར་རིས། - - - Terminal - མཐའ་སྣེ། - - - - DisclaimersDialog - - Disclaimer - 《སྤྱོད་མཁན་གྱི་འགན་མེད་གསལ་བསྒྲགས།》 - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - ངོ་རིས་ངོས་འཛིན་བྱེད་ལས་མ་བཀོལ་བའི་སྔོན་དུ།  གཤམ་གྱི་དོན་ཚན་འགའ་ལ་ཡིད་གཟབ་བྱེད་དགོས། -༡.ཁྱེད་ཀྱི་སྒྲིག་ཆས་དེ་ཕལ་ཆེར་ཁྱེད་རང་དང་འདྲ་བའི་མིའམ་དངོས་པོའི་རྣམ་པ་དང་ཕྱི་ཚུལ་གྱིས་ཁ་ཕྱེ་སྲིད། -༢.ངོ་རིས་ངོས་འཛིན་གྱི་བདེ་འཇགས་རང་བཞིན་ནི་ཨང་ཀིའི་གསང་གྲངས་དང་།  གསང་གྲངས་འདྲེས་མ་ལས་དམའ་བ་ཡོད། -༣.འོད་མུན། འོད་གསལ། ལྡོག་འོད། ཡང་ན་ཟུར་ཚད་ཆེ་དྲགས་པ་སོགས་ཀྱི་རྒྱབ་ལྗོངས་འོག་གི་ ངོ་རིས་ངོས་འཛིན་གྱིས་ཟྭ་འབྱེད་ཐུབ་པའི་ཚད་ཆེ་ཆེར་མར་ཆག་སྲིད། -༤.སྒྲིག་ཆས་གང་འདོད་ངང་མི་གཞན་ལ་སྤྲད་ནས་བེད་སྤྱོད་གཏོང་མི་ཆོག་སྟེ། ངོ་རིས་ངོས་འཛིན་བྱེད་ལས་ངན་ཕྱོགས་སུ་བཀོལ་བར་སྔོན་འགོག་བྱེད་དགོས། -༥.གོང་དུ་བཤད་པའི་བཟོ་ལྗོངས་ཕུད། སྐུ་ཉིད་ནས་ད་དུང་དེ་མིན་གྱི་ངོ་རིས་ངོས་འཛིན་བྱེད་ལས་གཞན་རྒྱུན་ལྡན་གྱིས་བཀོལ་བར་ཤུགས་རྐྱེན་བཟོ་སྲིད་པའི་གནས་ཚུལ་དག་ལ་ཡིད་གཟབ་བྱེད་དགོས། - -ངོ་རིས་ངོས་འཛིན་ལེགས་པོར་བཀོལ་ཆེད། ངོ་རིས་ཀྱི་གཞི་གྲངས་བརྙན་ལེན་བྱེད་པའི་སྐབས་སུ་གཤམ་གྱི་དོན་ཚན་ལ་ཡིད་གཟབ་བྱེད་དགོས། -༡.འོད་མདངས་འདང་ངེས་ཡོད་པ་ཁས་ལེན་གནང་སྟེ་ཉི་འོད་གསལ་བོ་ཐད་ཀར་འཕྲོ་མི་ཆོག་པ་མ་ཟད། དེ་མིན་གྱི་ མི་གཞན་པར་ངོས་སུ་ཐོན་མི་ཆོག -༢.གཞི་གྲངས་ཁྲོད་ཀྱི་ངོ་གདོང་རྣམ་པ ཕབ་འཇུག་བྱེད་པའི་སྐབས་ལ་ཡིད་གཟབ་བྱས་ཏེ།  ཞྭ་མོ་དང་སྐྲ། མིག་ཤེལ། ཁ་ཐུམ། མཛེས་འཆོས་སོགས་ཀྱིས་ངོ་རིས་ཆ་འཕྲིན་འགེབ་མི་ཆོག -༣.མགོ་བོ་ལྟག་གར་དགྱེ་བ། མར་སྒུར་བ། མིག་བཙུམ་པའམ་ཡང་ན་ངོ་གདོང་ཕྱེད་ཀ་སྟོན་པ་སོགས་བྱས་མི་ཆོག་པས།ངོ་རིས་ཚང་མ་ཁ་གསལ་ཞིང་ཆ་ཚང་བ་དྲན་སྐུལ་སྒྲིམ་གཞིའི་ནང་འཇུག་དགོས། - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - “སྐྱེ་དངོས་ངོས་ལེན།དཔང་འདོན།” ནི་བསྡོམས་འཕྲིན་མཉེན་ཆས་ལག་རྩལ་ཚད་ཡོད་ཀུང་སིས་བཀོལ་མཁན་ལ་མཁོ་སྤྲོད་བྱས་པའི་ཐོབ་ཐང་ངོས་ལེན་བྱ་བའི་བྱེད་ལས་ཤིག་ཡིན། “སྐྱེ་དངོས་ངོས་ལེན”ལ་བརྒྱུད་ནས་སྐྱེ་དངོས་དབྱེ་འབྱེད་ཀྱི་གཞི་གྲངས་དང་སྒྲིག་ཆས་ནང་ཉར་ཚགས་བྱས་ཡོད་པའི་སྐྱེ་དངོས་དབྱེ་འབྱེད་ཀྱི་གཞི་གྲངས་ཕན་ཚུན་བསྡུར་བ་བཏང་བ་མ་ཟད། བསྡུར་ཟིན་པའི་འབྲས་བུས་བཀོལ་མཁན་གྱི་ཐོབ་ཐང་ར་སྤྲོད་བྱེད་པ་ཞིག་ཡིན། -སྐུ་ཉིད་ནས་ཡིད་འཇོག་བྱ་དགོས་པ་ཞིག་ལ། བསྡོམས་འཕྲིན་མཉེན་ཆས་ཀྱིས་ཁྱེད་ཀྱི་སྐྱེ་དངོས་ངོས་འཛིན་གྱི་བརྡ་འཕྲིན་འཚོལ་བསྡུ་དང་བཅར་འདྲི་བྱེད་མི་སྲིད་པ་དང་། འདིའི་རིགས་ཀྱི་ཆ་འཕྲིན་ནི་སྐུ་ཉིད་ཀྱི་ས་གནས་འདི་གའི་སྒྲིག་ཆས་ཁྲོད་ཉར་ཚགས་བྱ་རྒྱུ་ཡིན། ཁྱེད་ཀྱིས་རང་ཉིད་ཀྱི་སྒྲིག་ཆས་སྟེང་ནས་སྐྱེ་དངོས་ངོས་འཛིན་བྱེད་ལས་ཀྱི་སྒོ་འབྱེད་དགོས་པ་དང་ཆབས་ཅིག ཁྱེད་རང་ཉིད་ཀྱི་སྐྱེ་དངོས་ངོས་འཛིན་་ཆ་་འཕྲིན་སྤྱད་ནས་འབྲེལ་ཡོད་ཀྱི་ནང་དོན་ལག་བསྟར་བྱ་དགོས་པ་མ་ཟད། སྒྲིག་ཆས་འདིའི་སྟེང་མི་གཞན་གྱི་སྐྱེ་དངོས་ངོས་ལེན་བཆ་འཕྲིན་བཀག་འགོག་བྱས་པའམ་ཡང་ན་སུབ་ཆོག དེ་མིན་ཚེ།  སྐུ་ཉིད་ལ་ཆ་འཕྲིན་ལ་ཉེན་ཁ་བྱུང་ན་ རང་ཉིད་ཀྱིས་འགན་འཁུར་དགོས། -བསྡོམས་འཕྲིན་མཉེན་ཆས་ཀྱིས་སྐྱེ་དངོས་ངོས་ལེན་བྱེད་ལས་ཀྱི་བདེ་འཇགས་རང་བཞིན་དང་། གནད་ཁེལ་རང་བཞིན། བརྟན་འཇགས་རང་བཞིན་ལ་ཞིབ་འཇུག་དང་མཐོར་འདེགས་གཏོང་བའི་ཐད་ལ་ཤུགས་སྣོན་རྒྱག་མོད།  འོན་ཀྱང་།  ཁོར་ཡུག་དང་སྒྲིག་ཆས། ལག་རྩལ་སོགས་ཀྱི་ཚོད་འཛིན་ཐེབས་པའི་རྐྱེན་དང་ཉེན་ཁའི་ཚོད་འཛིན་བཅས་ཀྱི་རྒྱུ་རྐྱེན་ལས། ང་ཚོས་གནས་སྐབས་སུ་སྐུ་ཉིད་ནས་ངེས་པར་དུ་བདེ་བླག་ངང་སྐྱེ་དངོས་དཔང་འདོན་བརྒྱུད་ཐུབ་པརའགན་ལེན་བྱེད་དཀའ་བས། དེའི་ཕྱིར་ཁྱེད་ཀྱིས་སྐྱེ་དངོས་ངོས་ལེན་དེ་བསྡོམས་འཕྲིན་བཀོལ་སྤྱོད་རྒྱུད་ཁོངས་ལ་ཐོ་ཞུགས་བྱ་བའི་ཐབས་ལམ་གཅིག་པུ་དེ་མིན།གལ་ཏེ་སྐུ་ཉིད་ནས་སྐྱེ་དངོས་དཔང་འདོན་བཀོལ་སྐབས་གནད་དོན་དང་བསམ་འཆར་ཡོད་ཚེ།  མ་ལག་ནང་གི“ཞབས་ཞུ་དང་རྒྱབ་སྐྱོར”ལ་བརྒྱུད་ནས་དེ་ཕྱིར་ལྡོག་བྱས་ན་ཆོག - - - - Cancel - འདོར་བ། - - - Next - རྗེས་མ། - - - - DisclaimersItem - - I have read and agree to the - ངས་བཀླགས་ཟིན་པ་མ་ཟད་དེར་མོས་མཐུན་ཡོད། - - - Disclaimer - 《སྤྱོད་མཁན་གྱི་འགན་མེད་གསལ་བསྒྲགས།》 - - - - DockModuleObject - - Dock - སྡོད་པ། - - - Multiple Displays - བརྙན་མང་མངོན་སྟོན་སྒྲིག་འགོད། - - - Show Dock - ལས་འགན་ཚན་བྱང་གི་གནས་ས། - - - Mode - དཔེ་རྣམ། - - - Position - གནས་ཡུལ། - - - Status - རྣམ་པ། - - - Show recent apps in Dock - ཉེ་ཆར་བེད་སྤྱོད་བྱས་པའི་ཉེར་སྤྱད་མངོན་པ། - - - Size - ཆེ་ཆུང་། - - - Plugin Area - ལྷུ་ལག་ཁུལ་ཁོངས། - - - Select which icons appear in the Dock - ལས་འགན་ཚན་བྱང་གི་ལྷུ་ལག་ཁུལ་དུ་མངོན་པའི་པར་རིས་འདེམས་པ། - - - Fashion mode - དར་སྲོལ་དཔེ་རྣམ། - - - Efficient mode - ལས་ཆོད་ཆེ་བའི་དཔེ་རྣམ། - - - Top - གོང་། - - - Bottom - འོག - - - Left - གཡོན། - - - Right - གཡས། - - - Location - གནས་ས། - - - Keep shown - རྟག་ཏུ་མངོན་པ། - - - Keep hidden - རྟག་ཏུ་ཡིབ་པ། - - - Smart hide - རིག་ནུས་གབ་ཡིབ། - - - Small - ཆུང་ངུ། - - - Large - ཆེ་བ། - - - On screen where the cursor is - ཙི་གུའི་གནས་ཡུལ་ལྟར་མངོན་པ། - - - Only on main screen - བརྙན་ཡོལ་ཨ་མ་ཁོ་ན་མངོན་པ། - - - - FaceInfoDialog - - Enroll Face - ངོ་གདོང་གཞི་གྲངས་སྣོན་པ། - - - Position your face inside the frame - ཁྱེད་ཀྱི་ངོ་གདོང་ཚང་མ་དབྱེ་འབྱེད་ཁུལ་དུ་ཡོད་པར་ཁག་ཐེག་བྱེད་དགོས། - - - - FaceWidget - - Edit - རྩོམ་སྒྲིག - - - Manage Faces - ངོ་གདོང་དོ་དམ། - - - You can add up to 5 faces - ཁྱེད་ཀྱིས་མང་ཤོས་ལ་ངོ་གདོང་གཞི་གྲངས་5སྣོན་ཆོག - - - Done - ལེགས་གྲུབ། - - - Add Face - ངོ་གདོང་སྣོན་པ། - - - The name already exists - མིང་ཡོད་པ། - - - Faceprint - ངོ་རིས། - - - - FaceidDetailWidget - - No supported devices found - རྒྱབ་སྐྱོར་རུང་བའི་སྒྲིག་ཆས་ཪྙེད་ཀྱི་མི་འདུག - - - - FingerDetailWidget - - No supported devices found - རྒྱབ་སྐྱོར་རུང་བའི་སྒྲིག་ཆས་ཪྙེད་ཀྱི་མི་འདུག - - - - FingerDisclaimer - - Add Fingerprint - མཛུབ་རིས་སྣོན་པ། - - - Cancel - འདོར་བ། - - - Next - རྗེས་མ། - - - - FingerInfoWidget - - Place your finger - མཛུབ་མོ་འཇོག་པ། - - - Place your finger firmly on the sensor until you're asked to lift it - མཛུབ་མོས་མཛུབ་རིས་བསྡུ་ཆས་གནོན་པ་དང་། གསལ་འདེབས་ལྟར་ཡར་ཁྱོག - - - Scan the edges of your fingerprint - མཐའ་འཁོར་གྱི་མཛུབ་རིས་ནང་འཇུག་བྱེད། - - - Place the edges of your fingerprint on the sensor - མཛུབ་མོའི་མཐའ་འཁོར་མཛུབ་རིས་བསྡུ་ཆས་ཐོག་གནོན་པ་དང་། དེ་རྗེས་གསལ་འདེབས་ལྟར་ཡར་ཁྱོག - - - Lift your finger - མཛུབ་མོ་ཡར་ཁྱོག - - - Lift your finger and place it on the sensor again - མཛུབ་མོ་ཡར་བཀྱག་ནས་ཡང་བསྐྱར་མནན་རོགས། - - - Adjust the position to scan the edges of your fingerprint - གནོན་ས་ལེགས་སྒྲིག་བྱས་རྗེས་མུ་མཐུད་མཐའ་འཁོར་གྱི་མཛུབ་རིས་ནང་འཇུག་བྱེད་རོགས། - - - Lift your finger and do that again - མཛུབ་མོ་ཡར་བཀྱག་ནས་ཡང་བསྐྱར་མནན་རོགས། - - - Fingerprint added - མཛུབ་རིས་བཅུག་ཐུབ་སོང་། - - - - FingerWidget - - Edit - རྩོམ་སྒྲིག - - - Fingerprint Password - མཛུབ་རིས་གསང་ཨང་། - - - You can add up to 10 fingerprints - ཁྱོད་ཀྱིས་མཛུབ་རིས་མང་ཤོས་10གཏག་ཆོག - - - Done - ལེགས་གྲུབ། - - - The name already exists - མིང་ཡོད་པ། - - - Add Fingerprint - མཛུབ་རིས་སྣོན་པ། - - - - GeneralModule - - General - ཀུན་སྤྱོད། - - - Balanced - དོ་མཉམ་དཔེ་རྣམ། - - - Balance Performance - ནུས་པའི་དཔེ་རྣམ། - - - High Performance - ནུས་པ་མཐོ་བའི་དཔེ་རྣམ། - - - Power Saver - ནུས་ཁུངས་གྲོན་ཆུང་གི་དཔེ་རྣམ། - - - Power Plans - ནུས་པའི་དཔེ་རྣམ། - - - Power Saving Settings - ནུས་སྲི་སྒྲིག་འགོད། - - - Auto power saving on low battery - གློག་ཚད་རྫོགས་རན་སྐབས་རང་བཞིན་དུ་ཕྱེ་བ། - - - Decrease Brightness - གསལ་ཚད་རང་བཞིན་གྱིས་དམའ་རུ་གཏོང་བ། - - - Low battery threshold - གློག་ཚད་དམའ་བའི་མཚམས་གྲངས། - - - Auto power saving on battery - གློག་སྨན་སྤྱོད་སྐབས་རང་བཞིན་གྱིས་ཕྱེ་བ། - - - Wakeup Settings - གཉིད་སད་སྒྲིག་འགོད། - - - Unlocking is required to wake up the computer - སྒུག་སྡོད་སོར་ཆུད་པར་གསང་ཨང་དགོས། - - - Unlocking is required to wake up the monitor - མངོན་ཆས་གཉིད་ལས་སད་སྐབས་གསང་ཨང་དགོས། - - - - HostNameItem - - It cannot start or end with dashes - རྩིས་འཁོར་གྱི་མིང་གི་ཐོག་མ་དང་མཇུག་ན་- ཡིན་མི་རུང་། - - - 1~63 characters please - རྩིས་འཁོར་མིང་གི་རིང་ཚད་ནི་ངེས་པར་དུ་ཡིག་འབྲུ་1ནས་63བར་ཡིན་དགོས། - - - - InternalButtonItem - - Internal testing channel - ནང་ཁོངས་ཚོད་ལྟ་བྱེད་ལམ། - - - click here open the link - འདི་མནན་ནས་ཁ་འབྱེད་པ། - - - - IrisDetailWidget - - No supported devices found - རྒྱབ་སྐྱོར་རུང་བའི་སྒྲིག་ཆས་ཪྙེད་ཀྱི་མི་འདུག - - - - IrisWidget - - Edit - རྩོམ་སྒྲིག - - - Manage Irises - མིག་འབྲས་དོ་དམ། - - - You can add up to 5 irises - ཁྱེད་ཀྱིས་མང་ཤོས་ལ་མིག་འབྲས་གཞི་གྲངས་5སྣོན་ཆོག - - - Done - ལེགས་གྲུབ། - - - Add Iris - མིག་འབྲས་སྣོན་པ། - - - The name already exists - མིང་ཡོད་པ། - - - Iris - མིག་འབྲས། - - - - KeyLabel - - None - མེད། - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright © 2011-%1 གཏིང་ཚད་སྡེ་ཁུལ། - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright © 2019-%1 ཐུང་ཞིན་མཉེན་ཆས་ལག་རྩལ་ཚད་ཡོད་ཀུང་སི། - - - - MicrophonePage - - Input Device - ནང་འདྲེན་སྒྲིག་ཆས། - - - Automatic Noise Suppression - སུན་སྒྲ་ཚོད་འཛིན། - - - Input Volume - སྒྲ་ཤུགས་ནང་འཇུག - - - Input Level - སྒྲ་ཤུགས་ལྡོག་སྐྱེལ། - - - - PersonalizationDesktopModule - - Desktop - ཅོག་ངོས། - - - Window - སྒེའུ་ཁུང་། - - - Window Effect - སྒེའུ་ཁུང་གི་ཁྱད་ནུས། - - - Window Minimize Effect - ཆུང་འགྱུར་སྐབས་ཀྱི་གྲུབ་འབྲས། - - - Transparency - གསལ་ཚད་སྙོམ་སྒྲིག - - - Rounded Corner - སྒེའུ་ཁུང་གི་ཟུར་སྒོར་དབྱིབས། - - - Scale - སྐྱེད་སྐྱུང་། - - - Magic Lamp - རྫུ་འཕྲུལ་གློག - - - Small - ཆུང་ངུ། - - - Middle - འབྲིང་། - - - Large - ཆེ་བ། - - - - PersonalizationModule - - Personalization - རང་གཤིས་ཅན། - - - - PersonalizationThemeList - - Cancel - འདོར་བ། - - - Save - ཉར་ཚགས། - - - Light - མདོག་ཧར་པོ། - - - Dark - མདོག་སྣུམ་་པོ། - - - Auto - རང་འགུལ། - - - Default - སོར་བཞག - - - - PersonalizationThemeModule - - Theme - བརྗོད་གཞི། - - - Appearance - ཕྱི་ཚུལ། - - - Accent Color - བྱེད་སྒོའི་མདོག - - - Icon Settings - པར་རིས་སྒྲིག་འགོད། - - - Icon Theme - རྟགས་རིས་བརྗོད་གཞི། - - - Cursor Theme - འོད་རྟགས་བརྗོད་གཞི། - - - Text Settings - ཡི་གེ་སྒྲིག་འགོད། - - - Font Size - ཡིག་གཟུགས་ཆེ་ཆུང་། - - - Standard Font - ཚད་ལྡན་ཡིག་གཟུགས། - - - Monospaced Font - ཞེང་ཚད་གཅིག་པའི་ཡིག་གཟུགས། - - - Light - མདོག་ཧར་པོ། - - - Auto - རང་འགུལ། - - - Dark - མདོག་སྣུམ་་པོ། - - - - PersonalizationThemeWidget - - Light - མདོག་ཧར་པོ། - General - /personalization/General - - - Dark - མདོག་སྣུམ་་པོ། - General - /personalization/General - - - Auto - རང་འགུལ། - General - /personalization/General - - - Default - སོར་བཞག - - - - PersonalizationWorker - - Custom - རང་སྒྲུབ། - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - སོ་སྔོན་སྒྲིག་ཆས་ཀྱི་PINདང་མཐུད་པ། - - - Cancel - འདོར་བ། - - - Confirm - གཏན་ཁེལ། - - - - PowerModule - - Power - གློག་ཁུངས། - - - Battery low, please plug in - གློག་ཉུང་བས་གློག་ཁུངས་དང་མཐུད་རོགས། - - - Battery critically low - གློག་རྫོགས་ཟིན། - - - - PrivacyModule - - Privacy and Security - གསང་དོན་དང་བདེ་འཇགས། - - - - PrivacySecurityModel - - Camera - རི་མོ་སྒྲིག་འགོད། - - - Microphone - སྒྲ་དུང་། - - - User Folders - སྤྱོད་མཁན་ཡིག་ཁུག - - - Calendar - ལོ་ཐོ། - - - Screen Capture - བརྙན་ཡོལ་དྲས་པ། - - - - QObject - - Control Center - ཚོད་འཛིན་ལྟེ་གནས། - - - , - , - - - Error occurred when reading the configuration files of password rules! - གསང་ཨང་སྒྲིག་ལམ་གྱི་ཆ་འགྲིག་ཡིག་ཆ་ཀློག་ལེན་ནོར་བ། - - - Auto adjust CPU operating frequency based on CPU load condition - ཐེག་པའི་གནས་ཚུལ་ལ་གཞིགས་ནས་འཁོར་སྐྱོད་ཀྱི་ཟློས་ཕྱོད་རང་འགུལ་ངང་ལེགས་སྒྲིག་བྱེད་པ། - - - Aggressively adjust CPU operating frequency based on CPU load condition - ཐེག་པའི་གནས་ཚུལ་ལ་གཞིགས་ནས་འཁོར་སྐྱོད་ཀྱི་ཟློས་ཕྱོད་ལེགས་སྒྲིག་ཧུར་ཐག་བྱེད་པ། - - - Be good to imporving performance, but power consumption and heat generation will increase - ནུས་པ་ཆེ་རུ་གཏོང་བར་ཕན་ཐོགས་ཀྱང་ནུས་པའི་ཟད་གྲོན་དང་ཚ་དྲོད་མཐོ་རུ་མངོན་གསལ་འགྲོ་སྲིད། - - - CPU always works under low frequency, will reduce power consumption - ཐོག་མཐའ་བར་གསུམ་དུ་ཟློས་ཕྱོད་དམའ་མོས་འཁོར་སྐྱོད་བྱས་ཚེ། ནུས་པ་ཟད་གྲོན་དམའ་རུ་གཏོང་ཐུབ། - - - Activated - སྐུལ་སློང་བྱས་ཟིན། - - - View - ལྟ་བཤེར། - - - To be activated - སྐུལ་སློང་བྱ་རྒྱུ། - - - Activate - སྐུལ་སློང་། - - - Expired - དུས་ལས་ཡོལ་བ། - - - In trial period - ལས་ཚོད་ལྟ་བའི་དུས་ཡུན། - - - Trial expired - ལས་ཚོད་ལྟ་བའི་དུས་ཡུན་ལས་བརྒལ་བ། - - - Touch Screen Settings - ཐུག་རེག་བརྙན་ཡོལ་སྒྲིག་འགོད། - - - The settings of touch screen changed - ཐུག་རེག་བརྙན་ཡོལ་གྱི་སྒྲིག་བཀོད་སྒྱུར་ཟིན། - - - Checking system versions, please wait... - རྒྱུད་ཁོངས་དཔར་གཞི་ལ་ར་སྤྲོད་བྱེད་བཞིན་པས། ཏོག་ཙམ་སྒུག་རོགས། - - - Leave - ཕྱིར་ཐོན། - - - Cancel - འདོར་བ། - - - - RegionModule - - Region and format - ཁུལ་ཁོངས་དང་རྣམ་གཞག - - - Country or Region - ཁུལ་ཁོངས། - - - Format - རྣམ་གཞག - - - Provide localized services based on your region. - ཁྱེད་ཡོད་སའི་ཁུལ་ཁོངས་ལ་གཞིགས་ནས་ས་གནས་ཅན་གྱི་ཞབས་ཞུ་འདོན་སྤྲོད་བྱེད་པ། - - - Select matching date and time formats based on language and region - སྐད་བརྡ་དང་ཁུལ་ཁོངས་ལ་གཞིགས་ནས་དེ་མཚུངས་ཀྱི་ཚེས་གྲངས་དང་དུས་ཚོད་ཀྱི་རྣམ་གཞག་འདེམས། - - - Region format - སྐད་བརྡ་དང་ཁུལ་ཁོངས། - - - First day of week - གཟའ་འཁོར་གཅིག་གི་ཉིན་དང་པོ། - - - Short date - ཚེས་གྲངས་ཐུང་བ། - - - Long date - ཚེས་གྲངས་རིང་བ། - - - Short time - དུས་ཚོད་ཐུང་ཐུང་། - - - Long time - དུས་ཚོད་རིང་པོ། - - - Currency symbol - དངུལ་ལོར་མཚོན་རྟགས། - - - Numbers - ཨང་ཀི། - - - Paper - ཤོག་བུ། - - - Custom format - - - - - ResultItem - - Your system is not authorized, please activate first - མིག་སྔའི་རྒྱུད་ཁོངས་ལ་དབང་སྤྲད་མེད་པས། སྐུལ་སློང་བྱས་རྗེས་གསར་སྒྱུར་བྱ་རོགས། - - - Update successful - རིམ་པ་སྤར་ཟིན། - - - Failed to update - གསར་པར་སྒྱུར་མ་ཐུབ། - - - - SearchInput - - Search - བཤེར་འཚོལ། - - - - ServiceSettingsModule - - Apps can access your camera: - པར་ཆས་ཀྱི་དབང་མཚམས་སྤྱོད་རེ་ཞུ་བའི་ཉེར་སྤྱོད། - - - Apps can access your microphone: - སྒྲ་དུང་གི་དབང་མཚམས་སྤྱོད་རེ་ཞུ་བའི་ཉེར་སྤྱོད། - - - Apps can access user folders: - སྤྱོད་མཁན་ཡིག་ཁུག་གི་དབང་མཚམས་འདྲི་རྩད་བྱེད་རེ་ཞུ་བའི་ཉེར་སྤྱོད། - - - Apps can access Calendar: - ཉིན་ཐོའི་དབང་མཚམས་ལ་འདྲི་རྩད་བྱེད་རེ་ཞུ་བའི་ཉེར་སྤྱོད། - - - Apps can access Screen Capture: - བརྙན་ཡོལ་འདྲ་པའི་དབང་མཚམས་བེད་སྤྱོད་བྱེད་རེ་ཞུ་བའི་ཉེར་སྤྱོད། - - - No apps requested access to the camera - གནས་སྐབས་པར་ཆས་བེད་སྤྱོད་ཀྱི་རེ་ཞུ་བྱེད་པའི་ཉེར་སྤྱོད་མེད། - - - No apps requested access to the microphone - གནས་སྐབས་སྒྲ་དུང་དབང་ཚད་བེད་སྤྱོད་ཀྱི་རེ་ཞུ་བྱེད་པའི་ཉེར་སྤྱོད་མེད། - - - No apps requested access to user folders - གནས་སྐབས་སྤྱོད་མཁན་གྱི་ཡིག་ཁུག་དབང་ཚད་བེད་སྤྱོད་ཀྱི་རེ་ཞུ་བྱེད་པའི་ཉེར་སྤྱོད་མེད། - - - No apps requested access to Calendar - གནས་སྐབས་ཉིན་ཐོའི་དབང་ཚད་བེད་སྤྱོད་ཀྱི་རེ་ཞུ་བྱེད་པའི་ཉེར་སྤྱོད་མེད། - - - No apps requested access to Screen Capture - གནས་སྐབས་བརྙན་ཡོལ་བཅད་རིས་དབང་ཚད་བེད་སྤྱོད་ཀྱི་རེ་ཞུ་བྱེད་པའི་ཉེར་སྤྱོད་མེད། - - - - SoundEffectsPage - - Sound Effects - རྒྱུད་ཁོངས་སྒྲ་ནུས། - - - - SoundModel - - Boot up - ཁ་ཕྱེ། - - - Shut down - རྩིས་འཁོར་གློག་གསོད། - - - Log out - ཐོ་སུབ་པ། - - - Wake up - གཉིད་ལས་སད་པ། - - - Volume +/- - སྐད་ཤུགས་སྙོམ་སྒྲིག - - - Notification - བརྡ་ཐོ། - - - Low battery - གློག་མི་འདང་པ། - - - Send icon in Launcher to Desktop - འགོ་སློང་ཆས་ནས་རྟགས་རིས་ཅོག་ངོས་སུ་སྐྱེལ་བ། - - - Empty Trash - སྙིགས་སྒམ་གཙང་སེལ། - - - Plug in - གློག་ཁུངས་དང་མཐུད་པ། - - - Plug out - གློག་ཁུངས་བཅད་པ། - - - Removable device connected - སྒུལ་བདེའི་སྒྲིག་ཆས་མཐུད་པ། - - - Removable device removed - སྒུལ་བདེའི་སྒྲིག་ཆས་འགོག་པ། - - - Error - ནོར་འཁྲུལ་གསལ་འདེབས། - - - - SoundModule - - Sound - སྒྲ། - - - - SoundPlugin - - Output - ཕྱིར་འདྲེན། - - - Auto pause - འཇུག་འདོན་དོ་དམ། - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - ནང་འཇུག - - - Sound Effects - རྒྱུད་ཁོངས་སྒྲ་ནུས། - - - Devices - སྒྲིག་ཆས་དོ་དམ། - - - Input Devices - ནང་འཇུག་སྒྲིག་ཆས། - - - Output Devices - ཕྱིར་གཏོང་སྒྲིག་ཆས། - - - - SpeakerPage - - Output Device - ཕྱིར་འདྲེན་སྒྲིག་ཆས། - - - Mode - དཔེ་རྣམ། - - - Output Volume - སྒྲ་ཤུགས་ཕྱིར་འདོན། - - - Volume Boost - སྐད་ཤུགས་ཆེ་རུ་གཏོང་བ། - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - སྒྲ་ཤུགས་100%ལས་ཆེ་བ་ཡོད་སྐབས་སྒྲ་ནུས་ཤོར་སྲིད་པ་མ་ཟད། ཁྱོད་ཀྱི་སྒྲ་སྐྱེད་ཆས་ཀྱང་འཕྲོ་བརླག་གཏོང་ཉེན་ཡོད། - - - Left/Right Balance - གཡོན་/གཡས་དོ་སྙོམས། - - - Left - གཡོན། - - - Right - གཡས། - - - - TimeSettingModule - - Time Settings - དུས་ཚོད་སྒྲིག་འགོད། - - - Time - ཐོ་འཇུག་པའི་དུས་ཚོད། - - - Auto Sync - རང་འགུལ་མཉམ་བགྲོད་སྡེབ་སྒྲིག - - - Reset - བསྐྱར་སྒྲིག - - - Save - ཉར་ཚགས། - - - Server - ཞབས་ཞུ་འཕྲུལ་ཆས། - - - Address - གནས་ཡུལ། - - - Required - ངེས་པར་འབྲི་དགོས། - - - Customize - རང་སྒྲུབ། - - - Year - ལོ། - - - Month - ཟླ། - - - Day - ཚེས་གྲངས། - - - - TimeZoneChooser - - Cancel - འདོར་བ། - - - Confirm - གཏན་ཁེལ། - - - Add Timezone - དུས་ཁུལ་སྣོན་པ། - - - Add - ཁ་སྣོན། - - - Change Timezone - རྒྱུད་ཁོངས་ཀྱི་དུས་ཁུལ་བཟོ་བཅོས། - - - - TimeoutDialog - - Save the display settings? - མངོན་སྟོན་སྒྲིག་འགོད་ཉར་ཚགས་བྱ་དགོས་སམ། - - - Settings will be reverted in %1s. - བཀོལ་སྤྱོད་གང་ཡང་མེད་ཚེ། སྐར་ཆ་%1གི་རྗེས་སོར་ཆུད་རྒྱུ། - - - Revert - སོར་ཆུད། - - - Save - ཉར་ཚགས། - - - - TimezoneItem - - Tomorrow - སང་ཉིན། - - - Yesterday - ཁ་སང་། - - - Today - དེ་རིང་། - - - %1 hours earlier than local - ས་གནས་འདི་ལས་ཆུ་ཚོད་%1གིས་སྔ་བ། - - - %1 hours later than local - ས་གནས་འདི་ལས་ཆུ་ཚོད་%1གིས་ཕྱི་བ། - - - - TimezoneModule - - Timezone List - དུས་ཁུལ་གསལ་ཐོ། - - - System Timezone - རྒྱུད་ཁོངས་དུས་ཁུལ། - - - Add Timezone - དུས་ཁུལ་སྣོན་པ། - - - - TreeCombox - - Collaboration Settings - མཐུན་སྦྱོར་སྒྲིག་འགོད། - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - མིག་སྔའི་རྩིས་ཐོ་དེ་Union IDདང་སྦྲེལ་མེད། - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - ཁྱེད་ཀྱི་Union IDར་སྤྲོད་ཐུབ་རྗེས་གསང་ཨང་བསྐྱར་སྒྲིག་ནུས་པ་སྤྱོད་ཆོག “སྦྲེལ་བར་སོང་”ལ་མནན་ནས་འབྲེལ་ཡོད་སྒྲིག་བཀོད་ལེགས་གྲུབ་བྱས་རྗེས། གསང་ཨང་བསྐྱར་སྒྲིག་བྱ་རྒྱུ། - - - Cancel - འདོར་བ། - - - Go to Link - སྦྲེལ་བར་སོང་དང་། - - - - UnknownUpdateItem - - Release date: - ཁྲོམ་བསྒྲགས་དུས་ཚོད། - - - - UpdateCtrlWidget - - Check Again - ཞིབ་བཤེར་གསར་སྒྱུར་ཡང་བསྐྱར་བྱེད་པ། - - - Update failed: insufficient disk space - སྲ་སྡེར་གྱི་བར་སྟོང་མི་འདང་བས་རྒྱུད་ཁོངས་གསར་སྒྱུར་བྱེད་ཐབས་བྲལ། - - - Dependency error, failed to detect the updates - རྟེན་ས་ནོར་བས་ཞིབ་བཤེར་གསར་སྒྱུར་བྱེད་ཐབས་བྲལ། - - - Restart the computer to use the system and the applications properly - ཁྱོད་ཀྱིས་རྒྱུད་ཁོངས་དང་ཉེར་སྤྱོད་རྒྱུན་ལྡན་ངང་བེད་སྤྱོད་བྱ་ཐུབ་ཆེད་གསར་སྒྱུར་བྱས་རྗེས་ཡང་བསྐྱར་འགོ་སློང་དགོས། - - - Network disconnected, please retry after connected - དྲ་རྒྱ་ཆད་འདུག དྲ་རྒྱ་དང་འབྲེལ་མཐུད་བྱས་རྗེས་ཡང་བསྐྱར་ཚོད་ལྟ་བྱེད། - - - Your system is not authorized, please activate first - མིག་སྔའི་རྒྱུད་ཁོངས་ལ་དབང་སྤྲད་མེད་པས། སྐུལ་སློང་བྱས་རྗེས་གསར་སྒྱུར་བྱ་རོགས། - - - This update may take a long time, please do not shut down or reboot during the process - ད་ཐེངས་ཀྱི་གསར་སྒྱུར་བྱེད་པའི་དུས་ཡུན་ཅུང་རིང་བས་གསར་སྒྱུར་མ་ཚར་གོང་གློག་གསོད་པའམ་འགོ་བསྐྱར་སློང་མ་བྱེད། - - - Updates Available - གསར་སྒྱུར་ཡོད་མེད་བརྟག་དཔྱད་བྱེད་པ། - - - Current Edition - མིག་སྔའི་པར་གཞི། - - - Updating... - གསར་སྒྱུར་བྱེད་བཞིན་པ། - - - Update All - ཚང་མ་གསར་སྒྱུར། - - - Last checking time: - ཐེངས་སྔ་མའི་ཞིབ་བཤེར་གསར་སྒྱུར་དུས་ཚོད། - - - Your system is up to date - ཁྱོད་ཀྱི་རྒྱུད་ཁོངས་གསར་ཤོས་རེད་འདུག - - - Check for Updates - ཞིབ་བཤེར་གསར་སྒྱུར། - - - Checking for updates, please wait... - ཞིབ་བཤེར་གསར་སྒྱུར་བྱེད་བཞིན་ཡོད་པས་ཏོག་ཙམ་སྒུག་རོགས། - - - The newest system installed, restart to take effect - ཁྱོད་ཀྱིས་པར་གཞི་གསར་ཤོས་སྒྲིག་འཇུག་བྱས་ཟིན་པས་འགོ་བསྐྱར་སློང་བྱས་རྗེས་གོ་ཆོད་པ་ཡིན། - - - %1% downloaded (Click to pause) - ཕབ་ལེན་བྱས་ཟིན།%1%(མཚམས་འཇོག) - - - %1% downloaded (Click to continue) - ཕབ་ལེན་བྱས་ཟིན།%1%(མུ་མཐུད།) - - - Your battery is lower than 50%, please plug in to continue - ཁྱོད་ཀྱི་གློག་ཚད་50%ལས་ལྷག་མེད་པས་གློག་ཁུངས་དང་མཐུད་རྗེས་མུ་མཐུད་བེད་སྤྱོད་བྱེད། - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - འགོ་བསྐྱར་སློང་བྱས་རྗེས་གློག་ཁུངས་འདང་ངེས་ཡོད་པ་བྱ་དགོས་པ་མ་ཟད། གློག་གསོད་པའམ་འགོག་པ་མ་བྱེད། - - - Size - ཆེ་ཆུང་། - - - - UpdateModule - - Updates - ཞིབ་བཤེར་གསར་སྒྱུར། - - - - UpdatePlugin - - Check for Updates - ཞིབ་བཤེར་གསར་སྒྱུར། - - - - UpdateSettingItem - - Insufficient disk space - སྡུད་སྡེར་བར་སྟོང་མི་འདང་བ། - - - Update failed: insufficient disk space - སྲ་སྡེར་གྱི་བར་སྟོང་མི་འདང་བས་རྒྱུད་ཁོངས་གསར་སྒྱུར་བྱེད་ཐབས་བྲལ། - - - Update failed - གསར་སྒྱུར་མི་ཐུབ་པ། - - - Network error - དྲ་རྒྱ་ནོར་བ། - - - Network error, please check and try again - དྲ་རྒྱ་རྒྱུན་འགལ་ཡིན་པས་ཞིབ་བཤེར་བྱས་རྗེས་ཡང་བསྐྱར་ཚོད་ལྟ་བྱེད་རོགས། - - - Packages error - སྒྲིག་སྦྱོར་ཁུག་མ་ནོར་བ། - - - Packages error, please try again - སྒྲིག་སྦྱོར་ཁུག་མ་ནོར་བས། ཡང་བསྐྱར་ཚོད་ལྟ་བྱེད། - - - Dependency error - རྟེན་གཞི་ནོར་བ། - - - Unmet dependencies - བརྟེན་པའི་འབྲེལ་བ་མི་འདུག - - - The newest system installed, restart to take effect - ཁྱོད་ཀྱིས་པར་གཞི་གསར་ཤོས་སྒྲིག་འཇུག་བྱས་ཟིན་པས་འགོ་བསྐྱར་སློང་བྱས་རྗེས་གོ་ཆོད་པ་ཡིན། - - - Waiting - སྒུག་བཞིན་པ། - - - Backing up - གྲབས་ཉར་བྱེད་བཞིན་པ། - - - System backup failed - རྒྱུད་ཁོངས་གྲབས་ཉར་བྱེད་མ་ཐུབ། - - - Release date: - ཁྲོམ་བསྒྲགས་དུས་ཚོད། - - - Server - ཞབས་ཞུ་འཕྲུལ་ཆས། - - - Desktop - ཅོག་ངོས། - - - Version - པར་གཞི། - - - - UpdateSettingsModule - - Update Settings - གསར་སྒྱུར་སྒྲིག་འགོད། - - - System - རྒྱུད་ཁོངས། - - - Security Updates Only - བདེ་འཇགས་རང་བཞིན་གྱི་གསར་སྒྱུར་གཅིག་པུ། - - - Switch it on to only update security vulnerabilities and compatibility issues - “བདེ་འཇགས་ཡིན་པ་གཅིག་པོ་གསར་སྒྱུར་”ཕྱེ་ན་བདེ་འཇགས་དང་མཐུན་གཤིས་ཐད་ལ་གསར་སྒྱུར་བྱེད་སྲིད། - - - Third-party Repositories - ཕུང་གསུམ་པའི་མཛོད་ཁང་། - - - linglong update - ལིང་ལུང་གསར་སྒྱུར། - - - Linglong Package Update - ལིང་ལུང་མཉེན་ཆས་གསར་སྒྱུར། - - - If there is update for linglong package, system will update it for you - - - - Other settings - སྒྲིག་འགོད་གཞན་དག - - - Auto Check for Updates - ཞིབ་བཤེར་གསར་སྒྱུར། - - - Auto Download Updates - རང་འགུལ་གྱིས་ཕབ་ལེན་བྱས་ཏེ་གསར་སྒྱུར་བྱེད། - - - Switch it on to automatically download the updates in wireless or wired network - “རང་བཞིན་གྱིས་ཕབ་ལེན་གསར་སྒྱུར་བྱེད་པ་”ཁ་ཕྱེ་ཚེ། སྐུད་མེད་དྲ་རྒྱ་དང་སྐུད་ཡོད་དྲ་རྒྱ་ཡོད་སྐབས་རང་བཞིན་གྱིས་ཕབ་ལེན་བྱ་སྲིད། - - - Auto Install Updates - རང་འགུལ་སྒྲིག་འཇུག - - - Updates Notification - གསར་སྒྱུར་དྲན་སྐུལ། - - - Clear Package Cache - མཉེན་ཆས་ཐུམ་བུའི་གསོག་ཆས་གཙང་སེལ། - - - Updates from Internal Testing Sources - ནང་ཁུལ་ཚོད་ལྟའི་བྱེད་ཁོངས་གསར་སྒྱུར། - - - internal update - ནང་ཁུལ་ཚོད་ལྟ་དང་གསར་སྒྱུར། - - - Join the internal testing channel to get deepin latest updates - deepinནང་ཁོངས་ཚོད་ལྟར་ཞུགས་ན། deepinགསར་སྒྱུར་ནང་དོན་གསར་ཤོས་ཐོབ་སྲིད། - - - System Updates - རྒྱུད་ཁོངས་གསར་སྒྱུར། - - - Security Updates - བདེ་འཇགས་གསར་སྒྱུར་ཞིབ་བཤེར། - - - Install updates automatically when the download is complete - ཕབ་ལེན་ཐུབ་རྗེས་རང་འགུལ་ངང་སྒྲིག་འཇུག་བྱེད་སྲིད། - - - Install "%1" automatically when the download is complete - “%1”ཕབ་ལེན་ཐུབ་རྗེས་རང་འགུལ་ངང་སྒྲིག་འཇུག་བྱེད་སྲིད། - - - - UpdateWidget - - Current Edition - མིག་སྔའི་པར་གཞི། - - - - UpdateWorker - - System Updates - རྒྱུད་ཁོངས་གསར་སྒྱུར། - - - Fixed some known bugs and security vulnerabilities - ཤེས་བཞིན་པའི་སྐྱོན་ཆ་དང་བདེ་འཇགས་ཉེན་ཁ་འགའ་ཤས་བཅོས་ཟིན། - - - Security Updates - བདེ་འཇགས་གསར་སྒྱུར་ཞིབ་བཤེར། - - - Third-party Repositories - ཕུང་གསུམ་པའི་མཛོད་ཁང་། - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - ནང་ཁོངས་ཚོད་ལྟའི་འགྲོ་ལམ་ལས་ཕྱིར་དོན་ཚེ་བདེ་འཇགས་ཡིན་མི་སྲིད་པས། ཕྱིར་དོན་རྒྱུ་གཏན་འཁེལ་ལམ། - - - Your are safe to leave the internal testing channel - ཁྱེད་ཉིད་ནང་ཁོངས་ཚོད་ལྟའི་འགྲོ་ལམ་ལས་ཕྱིར་དོན་ཆོག - - - Cannot find machineid - འཕྲུལ་འཁོར་ཨང་རྟགས་མ་རྙེད། - - - Cannot Uninstall package - ཁུག་མ་བཤིག་མི་ཐུབ། - - - Error when exit testingChannel - - - - try to manually uninstall package - ལག་ཐབས་ཀྱིས་ཁུག་མ་བཤིག་པ་ཚོད་ལྟ་བྱེད་པ། - - - Cannot install package - ཁུག་མ་སྒྲིག་འཇུག་བྱེད་ཐབས་བྲལ། - - - - UseBatteryModule - - On Battery - གློག་སྨན་སྤྱོད་པ། - - - Never - ནམ་ཡང་མིན། - - - Shut down - རྩིས་འཁོར་གློག་གསོད། - - - Suspend - སྒུག་སྡོད། - - - Hibernate - མལ་གསོ། - - - Turn off the monitor - མངོན་ཆས་གློག་གསོད། - - - Do nothing - བཀོལ་སྤྱོད་གང་ཡང་མེད། - - - 1 Minute - སྐར་མ་1 - - - %1 Minutes - སྐར་མ་%1 - - - 1 Hour - ཆུ་ཚོད་1  - - - Screen and Suspend - བརྙན་ཡོལ་དང་སྒུག་པ། - - - Turn off the monitor after - མངོན་ཆས་གློག་གསོད། - - - Lock screen after - སྒོ་ལྕགས་རང་བཞིན་གྱིས་བརྒྱབ་པ། - - - Computer suspends after - གློག་ཀླད་སྒུག་པའི་དཔེ་རྣམ་ལ་འགྱུར་བ། - - - Computer will suspend after - གློག་ཀླད་སྒུག་པའི་དཔེ་རྣམ་ལ་འགྱུར་བ། - - - When the lid is closed - ལག་ཁྱེར་གློག་ཀླད་གློག་གསོད་སྐབས། - - - When the power button is pressed - གློག་ཁུངས་གཅུས་སྒོ་གནོན་སྐབས། - - - Low Battery - གློག་ཉུང་བ་དོ་དམ། - - - Low battery notification - གློག་ཚད་ཉུང་བའི་བརྡ་ཐོ། - - - Low battery level - གློག་ཚད་ཉུང་བ། - - - Auto suspend battery level - རང་བཞིན་གྱིས་སྒུག་པའི་གློག་ཚད། - - - Battery Management - གློག་སྨན་དོ་དམ། - - - Display remaining using and charging time - གློག་ཚད་ལྷག་མ་དང་གློག་གསོག་པའི་དུས་ཚོད་མངོན་སྟོན་བྱེད་པ། - - - Maximum capacity - ཤོང་ཚད་ཆེ་ཤོས། - - - Show the shutdown Interface - སྒོ་བརྒྱབ་མཐུད་ངོས་སུ་འཛུལ་བ། - - - - UseElectricModule - - Plugged In - གློག་ཁུངས་སྤྱོད་པ། - - - 1 Minute - སྐར་མ་1 - - - %1 Minutes - སྐར་མ་%1 - - - 1 Hour - ཆུ་ཚོད་1  - - - Never - ནམ་ཡང་མིན། - - - Screen and Suspend - བརྙན་ཡོལ་དང་སྒུག་པ། - - - Turn off the monitor after - མངོན་ཆས་གློག་གསོད། - - - Lock screen after - སྒོ་ལྕགས་རང་བཞིན་གྱིས་བརྒྱབ་པ། - - - Computer suspends after - གློག་ཀླད་སྒུག་པའི་དཔེ་རྣམ་ལ་འགྱུར་བ། - - - When the lid is closed - ལག་ཁྱེར་གློག་ཀླད་གློག་གསོད་སྐབས། - - - When the power button is pressed - གློག་ཁུངས་གཅུས་སྒོ་གནོན་སྐབས། - - - Shut down - རྩིས་འཁོར་གློག་གསོད། - - - Suspend - སྒུག་སྡོད། - - - Hibernate - མལ་གསོ། - - - Turn off the monitor - མངོན་ཆས་གློག་གསོད། - - - Show the shutdown Interface - སྒོ་བརྒྱབ་མཐུད་ངོས་སུ་འཛུལ་བ། - - - Do nothing - བཀོལ་སྤྱོད་གང་ཡང་མེད། - - - - WacomModule - - Drawing Tablet - དཔེ་རིས་འབྲི་ས། - - - Mode - དཔེ་རྣམ། - - - Pressure Sensitivity - གནོན་ཚོར། - - - Pen - སྨྱུ་གུ། - - - Mouse - ཙི་གུ། - - - Light - མདོག་ཧར་པོ། - - - Heavy - ལྗིད་པོ། - - - - main - - Control Center provides the options for system settings. - ཚོད་འཛིན་ལྟེ་གནས་ཀྱིས་རྒྱུད་ཁོངས་བཀོལ་སྤྱོད་བྱེད་པའི་གདམ་གསེས་ཆ་ཚང་འདོན་སྤྲོད་བྱེད་པ། - - - - updateControlPanel - - Downloading - ཕབ་བཞིན་པ། - - - Waiting - སྒུག་བཞིན་པ། - - - Installing - སྒྲིག་འཇུག་བཞིན་པ། - - - Backing up - གྲབས་ཉར་བྱེད་བཞིན་པ། - - - Download and install - ཕབ་ལེན་བྱས་རྗེས་སྒྲིག་འཇུག་བྱེད་པ། - - - Learn more - གནས་ཚུལ་རྒྱུས་ལོན། - - - diff --git a/dcc-old/translations/dde-control-center_bqi.ts b/dcc-old/translations/dde-control-center_bqi.ts deleted file mode 100644 index f1fccd0972..0000000000 --- a/dcc-old/translations/dde-control-center_bqi.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - virga - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_br.ts b/dcc-old/translations/dde-control-center_br.ts deleted file mode 100644 index ce8fbaa8f2..0000000000 --- a/dcc-old/translations/dde-control-center_br.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - Adenvel - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Nullañ - - - Next - Da-heul - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Graet - - - Failed to enroll your face - - - - Try Again - - - - Close - Serriñ - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Nullañ - - - Next - Da-heul - - - Iris enrolled - - - - Done - Graet - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Nullañ - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Nullañ - - - Confirm - button - Kadarnaat - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Anv-implijer - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - Strollad - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Nullañ - - - OK - Mat eo - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Nullañ - - - Save - Enrollañ - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - Anv-implijer: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Goulennet - - - Cancel - button - Nullañ - - - Confirm - button - Kadarnaat - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Strollad - - - Cancel - Nullañ - - - Create - - - - New User - - - - User Type - - - - Username - Anv-implijer - - - Full Name - - - - Password - Ger-tremen - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - Goulennet - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - Anv - - - Required - Goulennet - - - Command - Urzhiad - - - Cancel - Nullañ - - - Add - Ouzhpennañ - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Goulennet - - - Cancel - Nullañ - - - Save - Enrollañ - - - Shortcut - - - - Name - Anv - - - Command - Urzhiad - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Da-heul - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Nullañ - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - Graet - - - - dccV23::KeyboardLayoutDialog - - Cancel - Nullañ - - - Add - Ouzhpennañ - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - Berradurioù - - - - dccV23::MainWindow - - Help - Skoazell - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - Nullañ - - - Save - Enrollañ - - - Passwords do not match - - - - Required - Goulennet - - - Optional - Dibarzhioù - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Nullañ - - - Delete - Dilemel - - - - dccV23::ResolutionWidget - - Resolution - Spisder - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Dre ziouer - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Klask - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Nullañ - - - Confirm - Kadarnaat - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - Graet - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - Prenestr - - - Workspace - Spas-labour - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - Adlakaat an talvoudoù dre ziouer - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Nullañ - - - Replace - Erlec'hiañ - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - Doare - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Nullañ - - - Add - Ouzhpennañ - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - Graet - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Kadarnaat - - - Cancel - Nullañ - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - Sonerezh - - - Video - - - - Picture - - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Nullañ - - - Next - Da-heul - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - Ment - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Graet - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Nullañ - - - Next - Da-heul - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - Graet - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Graet - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - Prenestr - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - Nullañ - - - Save - Enrollañ - - - Light - - - - Dark - - - - Auto - - - - Default - Dre ziouer - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - Dre ziouer - - - - PersonalizationWorker - - Custom - Personnelaet - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Nullañ - - - Confirm - Kadarnaat - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - Gweled - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Nullañ - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Klask - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Son - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - Enrollañ - - - Server - - - - Address - Chomlec'h - - - Required - Goulennet - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Nullañ - - - Confirm - Kadarnaat - - - Add Timezone - - - - Add - Ouzhpennañ - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Enrollañ - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Nullañ - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Ment - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ca.ts b/dcc-old/translations/dde-control-center_ca.ts deleted file mode 100644 index 129a2326dc..0000000000 --- a/dcc-old/translations/dde-control-center_ca.ts +++ /dev/null @@ -1,3997 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Permet que altres dispositius de Bluetooth trobin aquest dispositiu. - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Habiliteu el Bluetooth per trobar dispositius propers (altaveus, teclat, ratolí...) - - - My Devices - Els meus dispositius - - - Other Devices - Altres dispositius - - - Show Bluetooth devices without names - Mostra els dispositius de Bluetooth sense noms. - - - Connect - Connecta - - - Disconnect - Desconnecta - - - Rename - Canvia'n el nom - - - Send Files - Envia fitxers - - - Ignore this device - Ignora aquest dispositiu - - - Connecting - Es connecta - - - Disconnecting - Es desconnecta - - - - AddButtonWidget - - Add Application - Afegiu-hi una aplicació - - - Open Desktop file - Obre un fitxer d'escriptori - - - Apps (*.desktop) - Aplicacions (*.desktop) - - - All files (*) - Tots els fitxers (*) - - - - AddFaceInfoDialog - - Enroll Face - Apunteu-vos al Face - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Assegureu-vos que totes les parts de la cara no estiguin cobertes per objectes i siguin clarament visibles. La cara també ha d'estar ben il·luminada. - - - Cancel - Cancel·la - - - Next - Següent - - - Face enrolled - Apuntat al Face - - - Use your face to unlock the device and make settings later - Useu la teva cara per desblocar el dispositiu i feu-ne la configuració més tard. - - - Done - Fet - - - Failed to enroll your face - No s'ha pogut registrar la cara. - - - Try Again - Torneu-ho a provar - - - Close - Tanca - - - - AddFingerDialog - - Cancel - Cancel·la - - - Done - Fet - - - Scan Again - Torna-ho a escanejar - - - Scan Suspended - Escaneig suspès - - - - AddIrisInfoDialog - - Enroll Iris - Apunteu-vos a l'Iris - - - Cancel - Cancel·la - - - Next - Següent - - - Iris enrolled - Apuntat a l'Iris - - - Done - Fet - - - Failed to enroll your iris - No s'ha pogut registrar l'iris. - - - Try Again - Torneu-ho a provar - - - - AdvancedSettingModule - - Advanced Setting - Configuració avançada - - - Audio Framework - Marc d'àudio - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - Els diferents marcs d'àudio tenen avantatges i desavantatges, i podeu triar el que millor s'adapti per usar-lo. - - - - AuthenticationInfoItem - - No more than 15 characters - No ha de tenir més de 15 caràcters. - - - Use letters, numbers and underscores only, and no more than 15 characters - Useu només lletres, números i guionets baixos, i no més de 15 caràcters. - - - Use letters, numbers and underscores only - Useu només lletres, números i guionets baixos. - - - - AuthenticationModule - - Biometric Authentication - Autenticació biomètrica - - - - AuthenticationPlugin - - Fingerprint - Empremta - - - Face - Cara - - - Iris - Iris - - - - BluetoothDeviceModel - - Connected - Connectat - - - Not connected - No connectat - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Gestor de dispositius bluetooth - - - - CharaMangerModel - - Fingerprint1 - Empremta1 - - - Fingerprint2 - Empremta2 - - - Fingerprint3 - Empremta3 - - - Fingerprint4 - Empremta4 - - - Fingerprint5 - Empremta5 - - - Fingerprint6 - Empremta6 - - - Fingerprint7 - Empremta7 - - - Fingerprint8 - Empremta8 - - - Fingerprint9 - Empremta9 - - - Fingerprint10 - Empremta10 - - - Scan failed - Ha fallat l'escaneig. - - - The fingerprint already exists - L'empremta ja existeix. - - - Please scan other fingers - Si us plau, escanegeu altres dits. - - - Unknown error - Error desconegut - - - Scan suspended - Escaneig suspès - - - Cannot recognize - No es pot reconèixer - - - Moved too fast - S'ha mogut massa de pressa. - - - Finger moved too fast, please do not lift until prompted - El dit s'ha mogut massa de pressa. Si us plau, no l'alceu fins que s'avisi. - - - Unclear fingerprint - L'empremta no és clara. - - - Clean your finger or adjust the finger position, and try again - Netegeu-vos el dit o ajusteu-ne la posició i torneu-ho a provar. - - - Already scanned - Ja s'ha escanejat. - - - Adjust the finger position to scan your fingerprint fully - Ajusteu la posició del dit per escanejar-ne tota l'empremta. - - - Finger moved too fast. Please do not lift until prompted - El dit s'ha mogut massa de pressa. Si us plau, no l'alceu fins que s'avisi. - - - Lift your finger and place it on the sensor again - Alceu el dit i torneu-lo a posar sobre el sensor. - - - Position your face inside the frame - Col·loqueu la cara dins del marc - - - Face enrolled - Apuntat al Face - - - Position a human face please - Si us plau, col·loqueu-hi una cara humana. - - - Keep away from the camera - Allunyeu-vos de la càmera - - - Get closer to the camera - Apropeu-vos a la càmera - - - Do not position multiple faces inside the frame - No col·loqueu diverses cares dins del marc. - - - Make sure the camera lens is clean - Assegureu-vos que la lent de la càmera estigui neta. - - - Do not enroll in dark, bright or backlit environments - No us registreu en entorns foscos, lluminosos o retroil·luminats. - - - Keep your face uncovered - Mantingueu la cara descoberta. - - - Scan timed out - S'ha esgotat el temps d'escaneig. - - - Device crashed, please scan again! - El dispositiu ha fallat. Si us plau, repetiu l'escaneig! - - - Cancel - Cancel·la - - - - CooperationSettingsDialog - - Collaboration Settings - Configuració de la col·laboració - - - Share mouse and keyboard - Comparteix el ratolí i el teclat. - - - Share your mouse and keyboard across devices - Comparteix el ratolí i el teclat entre dispositius. - - - Share clipboard - Comparteix el porta-retalls. - - - Storage path for shared files - Camí d'emmagatzematge per a fitxers compartits - - - Share the copied content across devices - Comparteix el contingut copiat entre dispositius. - - - Cancel - button - Cancel·la - - - Confirm - button - Confirmeu-ho - - - - dccV23::AccountSpinBox - - Always - Sempre - - - - dccV23::AccountsModule - - Users - Usuaris - - - User management - Gestió d'usuaris - - - Create User - Crea un usuari - - - Username - Nom d'usuari - - - Change Password - Canvia la contrasenya - - - Delete User - Elimina l'usuari - - - User Type - Tipus d'usuari - - - Auto Login - Entrada automàtica - - - Login Without Password - Entra-hi sense contrasenya. - - - Validity Days - Dies de validesa - - - Group - Grup - - - The full name is too long - El nom complet és massa llarg. - - - Standard User - Usuari estàndard - - - Administrator - Administrador/a - - - Reset Password - Restableix la contrasenya - - - The full name has been used by other user accounts - El nom complet ha estat usat per altres comptes d'usuari. - - - Full Name - Nom complet - - - Go to Settings - Ves a la configuració - - - Cancel - Cancel·la - - - OK - D'acord - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - L'inici de sessió automàtic només es pot activar per a un compte. Primer desactiveu-lo per al compte %1. - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - L'amfitrió s'ha eliminat del servidor de domini correctament. - - - Your host joins the domain server successfully - L'amfitrió s'ha afegit al servidor de domini correctament. - - - Your host failed to leave the domain server - L'amfitrió ha fallat abandonar el servidor de domini. - - - Your host failed to join the domain server - L'amfitrió ha fallat afegir-se al servidor de domini. - - - AD domain settings - Configuració del domini d'AD - - - Password not match - La contrasenya no coincideix. - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Mostra notificacions de %1 a l'escriptori i al centre de notificacions. - - - Play a sound - Reprodueix un so - - - Show messages on lockscreen - Mostra els missatges a la pantalla de bloqueig. - - - Show in notification center - Mostra-ho al centre de notificacions. - - - Show message preview - Mostra la previsualització del missatge. - - - - dccV23::AvatarListDialog - - Person - Persona - - - Animal - Animal - - - Illustration - Il·lustració - - - Expression - Expressió - - - Custom Picture - Imatge personalitzada - - - Cancel - Cancel·la - - - Save - Desa-ho - - - - dccV23::AvatarListFrame - - Dimensional Style - Estil dimensional - - - Flat Style - Estil pla - - - - dccV23::AvatarListView - - Images - Imatges - - - - dccV23::BootWidget - - Updating... - S'actualitza... - - - Startup Delay - Retard de l'inici - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Cliqueu a l'opció al menú d'arrencada per establir-la com a primera arrencada i arrossegueu-hi una imatge per canviar-ne el fons. - - - Click the option in boot menu to set it as the first boot - Cliqueu a l'opció del menú d'arrencada per establir-lo com a arrencada primera. - - - Switch theme on to view it in boot menu - Activeu el tema per veure'l al menú d'arrencada. - - - GRUB Authentication - Autenticació del GRUB - - - GRUB password is required to edit its configuration - Cal la contrasenya del GRUB per editar aquesta configuració. - - - Change Password - Canvia la contrasenya - - - Boot Menu - Menú d'arrencada - - - Change GRUB password - Canvia la contrasenya del GRUB - - - Username: - Nom d'usuari: - - - root - arrel - - - New password: - Contrasenya nova: - - - Repeat password: - Repetiu la contrasenya: - - - Required - Cal - - - Cancel - button - Cancel·la - - - Confirm - button - Confirmeu-ho - - - Password cannot be empty - La contrasenya no pot estar en blanc. - - - Passwords do not match - Les contrasenyes no coincideixen. - - - - dccV23::BrightnessWidget - - Brightness - Brillantor - - - Color Temperature - Temperatura del color - - - Auto Brightness - Brillantor automàtica - - - Night Shift - Torn de nit - - - The screen hue will be auto adjusted according to your location - El to de la pantalla s'adaptarà automàticament segons la ubicació. - - - Change Color Temperature - Canvia la temperatura del color - - - Cool - Fred - - - Warm - Càlid - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Col·laboració multipantalla - - - PC Collaboration - Col·laboració de PC - - - Connect to - Connecta amb - - - Select a device for collaboration - Seleccioneu un dispositiu per a la col·laboració - - - Device Orientation - Orientació del dispositiu - - - On the top - A dalt - - - On the right - A la dreta - - - On the bottom - A baix - - - On the left - A l'esquerra - - - My Devices - Els meus dispositius - - - Other Devices - Altres dispositius - - - - dccV23::CommonInfoPlugin - - General Settings - Configuració general - - - Boot Menu - Menú d'arrencada - - - Developer Mode - Mode de desenvolupador - - - User Experience Program - Programa d'experiència d'usuari - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Hi estic d'acord i m'uneixo al programa d'experiència de l'usuari. - - - The Disclaimer of Developer Mode - Exempció de responsabilitat del mode de desenvolumpador - - - Agree and Request Root Access - Ho accepto i demana l'accés d'arrel - - - Failed to get root access - Ha fallat obtenir l'accés d'arrel. - - - Please sign in to your Union ID first - Si us plau, primer inicieu la sessió a l'ID d'Union. - - - Cannot read your PC information - No es pot llegir la informació de l'ordinador. - - - No network connection - No hi ha connexió de xarxa. - - - Certificate loading failed, unable to get root access - Ha fallat la càrrega del certificat. No s'ha pogut obtenir l'accés d'arrel. - - - Signature verification failed, unable to get root access - Ha fallat la verificació de la signatura. No es pot aconseguir accés d'arrel. - - - - dccV23::CreateAccountPage - - Group - Grup - - - Cancel - Cancel·la - - - Create - Crea - - - New User - Usuari nou - - - User Type - Tipus d'usuari - - - Username - Nom d'usuari - - - Full Name - Nom complet - - - Password - Contrasenya - - - Repeat Password - Repetiu-la. - - - Password Hint - Pista per a la contrasenya - - - The full name is too long - El nom complet és massa llarg. - - - Passwords do not match - Les contrasenyes no coincideixen. - - - Standard User - Usuari estàndard - - - Administrator - Administrador/a - - - Customized - Personalitzat - - - Required - Cal - - - optional - opcional - - - The hint is visible to all users. Do not include the password here. - La pista és visible per a tots els usuaris. No inclogueu aquí la contrasenya. - - - Policykit authentication failed - Ha fallat l'autenticació de Policykit. - - - Username must be between 3 and 32 characters - El nom d'usuari ha de tenir de 3 a 32 caràcters de llargada. - - - The first character must be a letter or number - El primer caràcter ha de ser una lletra o un número. - - - Your username should not only have numbers - El nom d’usuari no només hauria de tenir números. - - - The username has been used by other user accounts - El nom d'usuari ha estat usat per altres comptes d'usuari. - - - The full name has been used by other user accounts - El nom complet ha estat usat per altres comptes d'usuari. - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - No heu penjat cap imatge, podeu clicar o arrossegar per pujar una imatge. - - - Uploaded file type is incorrect, please upload again - El tipus de fitxer penjat és incorrecte. Torneu a carregar-lo. - - - Images - Imatges - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Afegiu una drecera personalitzada - - - Name - Nom - - - Required - Cal - - - Command - Ordre - - - Cancel - Cancel·la - - - Add - Afegeix - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Aquesta drecera té conflicte amb %1. Cliqueu a Afegeix per fer que sigui efectiva immediatament. - - - - dccV23::CustomEdit - - Required - Cal - - - Cancel - Cancel·la - - - Save - Desa - - - Shortcut - Drecera - - - Name - Nom - - - Command - Ordre - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Aquesta drecera té conflicte amb %1. Cliqueu a Afegeix per fer que sigui efectiva immediatament. - - - - dccV23::CustomItem - - Shortcut - Drecera - - - Please enter a shortcut - Si us plau, introduïu una drecera. - - - - dccV23::CustomRegionFormatDialog - - Custom format - Format personalitzat - - - First day of week - Primer dia de la setmana - - - Short date - Data abreujada - - - Long date - Data ampliada - - - Short time - Hora abreujada - - - Long time - Hora ampliada - - - Currency symbol - Símbol de la moneda - - - Numbers - Números - - - Paper - Paper - - - Cancel - Cancel·la - - - Save - Desa-ho - - - - dccV23::DetailInfoItem - - For more details, visit: - Per a més detalls, visiteu - - - - dccV23::DeveloperModeDialog - - Request Root Access - Demana l'accés d'arrel - - - Online - En línia - - - Offline - Fora de línia - - - Please sign in to your Union ID first and continue - Si us plau, primer inicieu la sessió a l'ID d'Union i continueu. - - - Next - Següent - - - Export PC Info - Exporta la informació de l'ordinador - - - Import Certificate - Importa el certificat - - - 1. Export your PC information - 1. Exporteu la informació de l'ordinador. - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Aneu a https://www.chinauos.com/developMode per baixar el certificat fora de línia. - - - 3. Import the certificate - 3. Importeu el certificat - - - - dccV23::DeveloperModeWidget - - Request Root Access - Demana l'accés d'arrel - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - El mode de desenvolupador permet usar els privilegis d'arrel, instal·lar i executar aplicacions no llistades a la Botiga d'aplicacions, però també podeu danyar la integritat del sistema. Si us plau, feu-ne ús amb cura. - - - The feature is not available at present, please activate your system first - La funció no està disponible actualment. Si us plau, primer activeu el sistema. - - - Failed to get root access - Ha fallat obtenir l'accés d'arrel. - - - Please sign in to your Union ID first - Si us plau, primer inicieu la sessió a l'ID d'Union. - - - Cannot read your PC information - No es pot llegir la informació de l'ordinador. - - - No network connection - No hi ha connexió de xarxa. - - - Certificate loading failed, unable to get root access - Ha fallat la càrrega del certificat. No s'ha pogut obtenir l'accés d'arrel. - - - Signature verification failed, unable to get root access - Ha fallat la verificació de la signatura. No es pot aconseguir accés d'arrel. - - - To make some features effective, a restart is required. Restart now? - Per fer efectives algunes característiques, cal reiniciar. Em reinicio ara? - - - Cancel - Cancel·la - - - Restart Now - Reinicia't ara - - - Root Access Allowed - Es permet l'accés d'arrel. - - - - dccV23::DisplayPlugin - - Display - Pantalla - - - Light, resolution, scaling and etc - Llum, resolució, escala, etc - - - - dccV23::DouTestWidget - - Double-click Test - Prova del clic doble - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Configuració del teclat - - - Repeat Delay - Retard de la repetició - - - Short - Breu - - - Long - Llarg - - - Repeat Rate - Freqüència de la repetició - - - Slow - Lent - - - Fast - Ràpid - - - Test here - Proveu-ho aquí. - - - Numeric Keypad - Teclat numèric - - - Caps Lock Prompt - Indicador de bloqueig de majúscules - - - - dccV23::GeneralSettingWidget - - Left Hand - Mà esquerra - - - Disable touchpad while typing - Inhabilita el ratolí tàctil mentre s'escrigui. - - - Scrolling Speed - Velocitat del desplaçament - - - Double-click Speed - Velocitat del clic doble - - - Slow - Lent - - - Fast - Ràpid - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Disposició del teclat - - - Edit - Edita - - - Add Keyboard Layout - Afegiu una disposició de teclat - - - Done - Fet - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancel·la - - - Add - Afegeix - - - Add Keyboard Layout - Afegiu una disposició de teclat - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Llengua i teclat - - - Keyboard - Teclat - - - Keyboard Settings - Configuració del teclat - - - keyboard Layout - Disposició del teclat - - - Keyboard Layout - Disposició del teclat - - - Language - Llengua - - - Shortcuts - Dreceres - - - - dccV23::MainWindow - - Help - Ajuda - - - - dccV23::ModifyPasswdPage - - Change Password - Canvia la contrasenya - - - Reset Password - Restableix la contrasenya - - - Resetting the password will clear the data stored in the keyring. - Restablir la contrasenya esborrarà les dades emmagatzemades al clauer. - - - Current Password - Contrasenya actual - - - Forgot password? - Heu oblidat la contrasenya? - - - New Password - Contrasenya nova - - - Repeat Password - Repetiu-la. - - - Password Hint - Pista per a la contrasenya - - - Cancel - Cancel·la - - - Save - Desa - - - Passwords do not match - Les contrasenyes no coincideixen. - - - Required - Cal - - - Optional - Opcional - - - Password cannot be empty - La contrasenya no pot estar en blanc. - - - The hint is visible to all users. Do not include the password here. - La pista és visible per a tots els usuaris. No inclogueu aquí la contrasenya. - - - Wrong password - Contrasenya incorrecta - - - New password should differ from the current one - La contrasenya nova hauria de ser diferent de l'actual. - - - System error - Error del sistema - - - Network error - Error de xarxa - - - - dccV23::MonitorControlWidget - - Identify - Identifica - - - Gather Windows - Agrupa les finestres - - - Screen rearrangement will take effect in %1s after changes - El restabliment de la pantalla tindrà efecte %1s després dels canvis. - - - - dccV23::MousePlugin - - Mouse - Ratolí - - - General - General - - - Touchpad - Ratolí tàctil - - - TrackPoint - Punt de rastreig - - - - dccV23::MouseSettingWidget - - Pointer Speed - Velocitat del punter - - - Mouse Acceleration - Acceleració del ratolí - - - Disable touchpad when a mouse is connected - Inhabilita el ratolí tàctil quan en connectar un ratolí. - - - Natural Scrolling - Desplaçament natural - - - Slow - Lent - - - Fast - Ràpid - - - - dccV23::MultiScreenWidget - - Multiple Displays - Pantalles múltiples - /display/Multiple Displays - - - Mode - Mode - /display/Mode - - - Main Screen - Pantalla principal - /display/Main Scree - - - Duplicate - Duplica - - - Extend - Estén - - - Only on %1 - Només a %1. - - - - dccV23::NotificationModule - - AppNotify - Notificació d'aplicació - - - Notification - Notificació - - - SystemNotify - Notificació del sistema - - - - dccV23::PalmDetectSetting - - Palm Detection - Detecció de palmell - - - Minimum Contact Surface - Superfície de contacte mínima - - - Minimum Pressure Value - Valor de pressió mínim - - - Disable the option if touchpad doesn't work after enabled - Inhabiliteu l'opció si el ratolí tàctil no funciona bé després d'habilitar-la. - - - - dccV23::PluginManager - - following plugins load failed - La càrrega dels connectors següents ha fallat: - - - plugins cannot loaded in time - els connectors no es poden carregar a temps - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Política de privadesa - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Som profundament conscients de la importància de la vostra informació personal. Per tant, tenim la Política de privadesa que recull com recopilem, utilitzem, compartim, transferim, divulguem públicament i emmagatzemem la vostra informació. </p> <p> Podeu fer clic<a href="%1"> aquí</a> per veure la nostra política de privadesa més recent o veure-la en línia visitant <a href="%1">%1</a>. Si us plau, llegiu-la atentament i compreneu plenament les nostres pràctiques sobre privadesa del client. Si teniu cap pregunta, poseu-vos en contacte amb nosaltres a support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - La contrasenya no pot estar en blanc. - - - Password must have at least %1 characters - La contrasenya ha de tenir com a mínim %1 caràcters. - - - Password must be no more than %1 characters - La contrasenya no ha de tenir més de %1 caràcters. - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - La contrasenya només pot contenir caràcters en anglès (majúscules o minúscules), números o símbols especials (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/). - - - No more than %1 palindrome characters please - Com a màxim %1 caràcters palíndroms, si us plau. - - - No more than %1 monotonic characters please - Com a màxim %1 caràcters monòtons, si us plau. - - - No more than %1 repeating characters please - Com a màxim %1 caràcters repetits, si us plau. - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - La contrasenya ha de tenir lletres majúscules, minúscules, números i símbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/). - - - Password must not contain more than 4 palindrome characters - La contrasenya no ha de contenir més de 4 caràcters palíndroms. - - - Do not use common words and combinations as password - No useu paraules i combinacions habituals com a contrasenya. - - - Create a strong password please - Si us plau, creeu una contrasenya forta. - - - It does not meet password rules - No compleix les regles de la contrasenya. - - - - dccV23::RefreshRateWidget - - Refresh Rate - Freqüència d'actualització - - - Hz - Hz - - - Recommended - Recomanada - - - - dccV23::RegionFormatDialog - - Region format - Format de la regió - - - Default format - Format per defecte - - - First of day - Primer dia - - - Short date - Data abreujada - - - Long date - Data ampliada - - - Short time - Hora abreujada - - - Long time - Hora ampliada - - - Currency symbol - Símbol de la moneda - - - Numbers - Números - - - Paper - Paper - - - Cancel - Cancel·la - - - Save - Desa-ho - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Segur que voleu eliminar aquest compte? - - - Delete account directory - Elimina el directori del compte - - - Cancel - Cancel·la - - - Delete - Elimina - - - - dccV23::ResolutionWidget - - Resolution - Resolució - /display/Resolution - - - Resize Desktop - Canvia la mida de l'escriptori - /display/Resize Desktop - - - Default - Per defecte - - - Fit - Ajusta'l - - - Stretch - Estira'l - - - Center - Centra'l - - - Recommended - Recomanada - - - - dccV23::RotateWidget - - Rotation - Rotació - /display/Rotation - - - Standard - Estàndard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - El monitor només admet un escalat del 100 %. - - - Display Scaling - Escalatge de la pantalla - - - - dccV23::SearchInput - - Search - Cerca - - - - dccV23::SecondaryScreenDialog - - Brightness - Brillantor - - - - dccV23::SecurityLevelItem - - Weak - Dèbil - - - Medium - Mitjana - - - Strong - Forta - - - - dccV23::SecurityQuestionsPage - - Security Questions - Preguntes de seguretat - - - These questions will be used to help reset your password in case you forget it. - Aquestes preguntes s'usaran per ajudar-vos a restablir la contrasenya en cas que l'oblideu. - - - Security question 1 - Pregunta de seguretat 1 - - - Security question 2 - Pregunta de seguretat 2 - - - Security question 3 - Pregunta de seguretat 3 - - - Cancel - Cancel·la - - - Confirm - Confirmeu-ho - - - Keep the answer under 30 characters - Mantingueu la resposta en menys de 30 caràcters. - - - Do not choose a duplicate question please - No trieu una pregunta duplicada, si us plau. - - - Please select a question - Seleccioneu una pregunta - - - What's the name of the city where you were born? - Com es deia la ciutat on vau néixer? - - - What's the name of the first school you attended? - Com es deia la primera escola on vau anar? - - - Who do you love the most in this world? - Qui estimeu més en aquest món? - - - What's your favorite animal? - Quin és el vostre animal favorit? - - - What's your favorite song? - Quina és la vostra cançó favorita? - - - What's your nickname? - Quin sobrenom teniu? - - - It cannot be empty - No es pot deixar en blanc. - - - - dccV23::SettingsHead - - Edit - Edita - - - Done - Fet - - - - dccV23::ShortCutSettingWidget - - System - Sistema - - - Window - Finestra - - - Workspace - Espai de treball - - - Assistive Tools - Eines d'assistència - - - Custom Shortcut - Drecera personalitzada - - - Restore Defaults - Restaura els valors per defecte - - - Shortcut - Drecera - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Si us plau, restabliu la drecera. - - - Cancel - Cancel·la - - - Replace - Reemplaça - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Aquesta drecera té conflicte amb %1. Cliqueu a Reemplaça per fer que sigui efectiva immediatament. - - - - dccV23::ShortcutItem - - Enter a new shortcut - Introduïu una drecera nova - - - - dccV23::SystemInfoModel - - available - disponible - - - - dccV23::SystemInfoModule - - About This PC - Quant a aquest ordinador - - - Computer Name - Nom de l'ordinador - - - systemInfo - informació del sistema - - - OS Name - Nom del sistema - - - Version - Versió - - - Edition - Edició - - - Type - Tipus - - - Authorization - Autorització - - - Processor - Processador - - - Memory - Memòria - - - Graphics Platform - Plataforma gràfica - - - Kernel - Nucli - - - Agreements and Privacy Policy - Agraïments i política de privadesa - - - Edition License - Llicència de l'edició - - - End User License Agreement - Acord de llicència de l'usuari final - - - Privacy Policy - Política de privadesa - - - %1-bit - %1 bits - - - - dccV23::SystemInfoPlugin - - System Info - Informació del sistema - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancel·la - - - Add - Afegeix - - - Add System Language - Afegiu una llengua de sistema - - - - dccV23::SystemLanguageWidget - - Edit - Edita - - - Language List - Llista de llengües - - - Add Language - Afegeix-hi una llengua - - - Done - Fet - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - No emprenyis. - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Les notificacions d'aplicacions no es mostraran a l'escriptori i no n'hi haurà cap indicació sonora, però les podreu veure totes al centre de notificacions. - - - When the screen is locked - Quan la pantalla estigui blocada - - - - dccV23::TimeSlotItem - - From - De - - - To - A - - - - dccV23::TouchScreenModule - - Touch Screen - Pantalla tàctil - - - Select your touch screen when connected or set it here. - Seleccioneu la pantalla tàctil quan estigui connectada o configureu-la aquí. - - - Confirm - Confirmeu-ho - - - Cancel - Cancel·la - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Velocitat del punter - - - Enable TouchPad - Habilita el ratolí tàctil - - - Tap to Click - Un toc per fer clic - - - Natural Scrolling - Desplaçament natural - - - Slow - Lenta - - - Fast - Ràpida - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Velocitat del punter - - - Slow - Lent - - - Fast - Ràpid - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Afegiu-vos al programa d'experiència de l'usuari - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Unir-se al Programa d’experiència d’usuari significa que ens autoritzeu a recopilar i usar la informació del vostre dispositiu, sistema i aplicacions. Si rebutgeu la nostra recollida i ús de la informació esmentada, no us uniu al Programa d’experiència d’usuari. Per obtenir-ne més informació, consulteu la política de privadesa del Deepin (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Unir-se al Programa d’experiència d’usuari significa que ens autoritzeu a recopilar i usar la informació del vostre dispositiu, sistema i aplicacions. Si rebutgeu la nostra recollida i ús de la informació esmentada, no us uniu al Programa d’experiència d’usuari. Per obtenir-ne més informació sobre la gestió de les vostres dades, consulteu la Política de privadesa del sistema operatiu UnionTech (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Any - - - Month - Mes - - - Day - Dia - - - - DatetimeModule - - Time and Format - Hora i format - - - - DatetimeWorker - - Authentication is required to change NTP server - Cal autenticació per canviar el servidor NTP. - - - - DefAppModule - - Default Applications - Aplicacions predeterminades - - - - DefAppPlugin - - Webpage - Pàgina web - - - Mail - Correu - - - Text - Text - - - Music - Música - - - Video - Vídeo - - - Picture - Imatge - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Exempció de responsabilitat - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Abans d'usar el reconeixement facial, tingueu en compte el següent: -1. El vostre dispositiu pot ser desbloquejat per persones o objectes que se us assemblin o semblin semblants. -2. El reconeixement facial és menys segur que les contrasenyes digitals i les contrasenyes mixtes. -3. La taxa d'èxit de desbloquejar el dispositiu mitjançant el reconeixement facial es reduirà en un escenari amb poca llum, llum alta, retroil·luminació, un angle molt obert i altres. -4. No doneu el dispositiu a altres persones de manera aleatòria, per evitar l'ús maliciós del reconeixement facial. -5. A més dels escenaris anteriors, hauríeu de prestar atenció a altres situacions que poden afectar l'ús normal del reconeixement facial. - -Per tal d'usar millor el reconeixement facial, presteu atenció als aspectes següents quan introduïu les dades facials: -1. Si us plau, mantingueu-vos en un entorn ben il·luminat, eviteu la llum solar directa i que altres persones que apareguin a la pantalla que es grava. -2. Si us plau, presteu atenció a l'estat de la cara quan introduïu les dades i no deixeu que barrets, cabells, ulleres de sol, màscares, maquillatge pesat i altres factors us cobreixin els trets facials. -3. Si us plau, eviteu inclinar o abaixar el cap, tancar els ulls o mostrar només un costat de la cara, i assegureu-vos que la cara frontal aparegui clarament i completament al quadre d'indicacions. - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - L'autenticació biomètrica ​​és una funció per a l'autenticació de la identitat de l'usuari proporcionada per UnionTech Software Technology Co., Ltd. Mitjançant l'autenticació biomètrica, les dades biomètriques recollides es compararan amb les emmagatzemades al dispositiu i la identitat de l'usuari es verificarà d'acord amb el resultat de la comparació. -Tingueu en compte que UnionTech Software no recopilarà ni accedirà a la vostra informació biomètrica, que s'emmagatzemarà al vostre dispositiu local. Si us plau, habiliteu l'autenticació biomètrica només al vostre dispositiu personal i useu la pròpia informació biomètrica per a les operacions relacionades, i desactiveu o suprimiu immediatament la informació biomètrica d'altres persones en aquest dispositiu, en cas contrari assumeu el risc que se'n derivi. -UnionTech Software es compromet a investigar i millorar la seguretat, la precisió i l'estabilitat de l'autenticació biomètrica. No obstant això, a causa de factors ambientals, d'equipaments, tècnics i altres, i de control de riscos, no hi ha cap garantia que passeu l'autenticació biomètrica temporalment. Per tant, no useu l'autenticació biomètrica com a única manera d'iniciar sessió a UnionTech OS. Si teniu cap pregunta o suggeriment quan feu servir l'autenticació biomètrica, podeu fer comentaris mitjançant el Servei i assistència del sistema operatiu UnionTech. - - - - Cancel - Cancel·la - - - Next - Següent - - - - DisclaimersItem - - I have read and agree to the - Ho llegit i accepto - - - Disclaimer - Exempció de responsabilitat - - - - DockModuleObject - - Dock - Acoblador - - - Multiple Displays - Pantalles múltiples - - - Show Dock - Mostra l'acoblador - - - Mode - Mode - - - Position - Posició - - - Status - Estat - - - Show recent apps in Dock - Mostra les aplicacions recents a l'acoblador. - - - Size - Mida - - - Plugin Area - Àrea de connectors - - - Select which icons appear in the Dock - Seleccioneu quines icones apareixen a l'acoblador. - - - Fashion mode - Mode de moda - - - Efficient mode - Mode eficient - - - Top - A dalt - - - Bottom - A baix - - - Left - A l'esquerra - - - Right - A la dreta - - - Location - Ubicació - - - Keep shown - Mantén-ho visible - - - Keep hidden - Mantén-lo amagat - - - Smart hide - Ocultació intel·ligent - - - Small - petit - - - Large - gros - - - On screen where the cursor is - A la pantalla el cursor és - - - Only on main screen - Només a la pantalla principal - - - - FaceInfoDialog - - Enroll Face - Apunteu-vos al Face - - - Position your face inside the frame - Col·loqueu la cara dins del marc - - - - FaceWidget - - Edit - Edita - - - Manage Faces - Gestiona les cares - - - You can add up to 5 faces - Podeu afegir-hi fins a 5 cares. - - - Done - Fet - - - Add Face - Afegeix una cara - - - The name already exists - El nom ja existeix. - - - Faceprint - Empremta facial - - - - FaceidDetailWidget - - No supported devices found - No s'ha trobat cap dispositiu admès. - - - - FingerDetailWidget - - No supported devices found - No s'ha trobat cap dispositiu admès. - - - - FingerDisclaimer - - Add Fingerprint - Afegiu una empremta - - - Cancel - Cancel·la - - - Next - Següent - - - - FingerInfoWidget - - Place your finger - Poseu-hi el dit. - - - Place your finger firmly on the sensor until you're asked to lift it - Poseu el dit amb fermesa sobre el sensor fins que se us digui d'alçar-lo. - - - Scan the edges of your fingerprint - Escanegeu els marges de l'empremta. - - - Place the edges of your fingerprint on the sensor - Poseu els marges de l'empremta sobre el sensor. - - - Lift your finger - Alceu el dit. - - - Lift your finger and place it on the sensor again - Alceu el dit i torneu-lo a posar sobre el sensor. - - - Adjust the position to scan the edges of your fingerprint - Ajusteu-ne la posició per escanejar els marges de l'empremta. - - - Lift your finger and do that again - Alceu el dit i torneu-ho a fer. - - - Fingerprint added - Empremta afegida - - - - FingerWidget - - Edit - Edita - - - Fingerprint Password - Contrasenya d'empremta - - - You can add up to 10 fingerprints - Hi podeu afegir fins a 10 empremtes. - - - Done - Fet - - - The name already exists - El nom ja existeix. - - - Add Fingerprint - Afegiu una empremta - - - - GeneralModule - - General - General - - - Balanced - Equilibrat - - - Balance Performance - Equilibratge del rendiment - - - High Performance - Alt rendiment - - - Power Saver - Estalviador d'energia - - - Power Plans - Plans d'energia - - - Power Saving Settings - Configuració de l'estalvi d'energia - - - Auto power saving on low battery - Estalvi d'energia automàtic amb la bateria baixa - - - Decrease Brightness - Redueix-ne la brillantor - - - Low battery threshold - Llindar de bateria baixa - - - Auto power saving on battery - Estalvi d'energia automàtic amb la bateria - - - Wakeup Settings - Configuració del despertament - - - Unlocking is required to wake up the computer - El desblocatge és necessari per a despertar l'ordinador. - - - Unlocking is required to wake up the monitor - El desblocatge és necessari per a despertar el monitor. - - - - HostNameItem - - It cannot start or end with dashes - No pot començar ni acabar amb guionets. - - - 1~63 characters please - D'1 a 63 caràcters, si us plau. - - - - InternalButtonItem - - Internal testing channel - Canal de proves intern - - - click here open the link - cliqueu aquí per obrir l'enllaç - - - - IrisDetailWidget - - No supported devices found - No s'ha trobat cap dispositiu admès. - - - - IrisWidget - - Edit - Edita - - - Manage Irises - Gestiona els iris - - - You can add up to 5 irises - Podeu afegir-hi fins a 5 iris. - - - Done - Fet - - - Add Iris - Afegeix un iris - - - The name already exists - El nom ja existeix. - - - Iris - Iris - - - - KeyLabel - - None - Cap - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Comunitat del Deepin - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Dispositiu d'entrada - - - Automatic Noise Suppression - Supressió automàtica del soroll - - - Input Volume - Volum d'entrada - - - Input Level - Nivell d'entrada - - - - PersonalizationDesktopModule - - Desktop - Escriptori - - - Window - Finestra - - - Window Effect - Efecte de la finestra - - - Window Minimize Effect - Efecte de minimització de la finestra - - - Transparency - Transparència - - - Rounded Corner - Cantó arrodonit - - - Scale - Escala - - - Magic Lamp - Làmpada màgica - - - Small - Petit - - - Middle - Mitjà - - - Large - Gros - - - - PersonalizationModule - - Personalization - Personalització - - - - PersonalizationThemeList - - Cancel - Cancel·la - - - Save - Desa - - - Light - Lleugera - - - Dark - Fosc - - - Auto - Automàtic - - - Default - Per defecte - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - Aparença - - - Accent Color - Color del realçament - - - Icon Settings - Paràmetres de la icona - - - Icon Theme - Tema de les icones - - - Cursor Theme - Tema del cursor - - - Text Settings - Configuració del text - - - Font Size - Mida de la lletra - - - Standard Font - Lletra estàndard - - - Monospaced Font - Lletra d'un sol espai - - - Light - Lleugera - - - Auto - Automàtic - - - Dark - Fosc - - - - PersonalizationThemeWidget - - Light - Lleugera - General - /personalization/General - - - Dark - Fosc - General - /personalization/General - - - Auto - Automàtic - General - /personalization/General - - - Default - Per defecte - - - - PersonalizationWorker - - Custom - Personalitzat - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - El codi per connectar amb el dispositiu de bluetooth és el següent: - - - Cancel - Cancel·la - - - Confirm - Confirmeu-ho - - - - PowerModule - - Power - Energia - - - Battery low, please plug in - Bateria baixa, endolleu-lo, si us plau. - - - Battery critically low - Bateria molt baixa - - - - PrivacyModule - - Privacy and Security - Privadesa i seguretat - - - - PrivacySecurityModel - - Camera - Càmera - - - Microphone - Micròfon - - - User Folders - Carpetes de l'usuari - - - Calendar - Calendari - - - Screen Capture - Captura de pantalla - - - - QObject - - Control Center - Centre de control - - - , - , - - - Error occurred when reading the configuration files of password rules! - Hi ha hagut un error en llegir els fitxers de configuració de les regles de la contrasenya! - - - Auto adjust CPU operating frequency based on CPU load condition - Ajust automàtic de la freqüència de funcionament de la CPU segons les condicions de càrrega de la CPU - - - Aggressively adjust CPU operating frequency based on CPU load condition - Ajusta agressivament la freqüència de funcionament de la CPU segons les condicions de càrrega de la CPU. - - - Be good to imporving performance, but power consumption and heat generation will increase - És bo per millorar el rendiment, però augmentarà el consum d'energia i la generació de calor. - - - CPU always works under low frequency, will reduce power consumption - La CPU sempre funciona amb baixa freqüència, reduirà el consum d'energia. - - - Activated - Activat - - - View - Visualització - - - To be activated - Per ser activat - - - Activate - Activa - - - Expired - Caducat - - - In trial period - En un període de prova - - - Trial expired - S'ha esgotat el període de prova. - - - Touch Screen Settings - Configuració de la pantalla tàctil - - - The settings of touch screen changed - La configuració de la pantalla tàctil ha canviat. - - - Checking system versions, please wait... - Es comproven les versions del sistema. Espereu, si us plau... - - - Leave - Surt - - - Cancel - Cancel·la - - - - RegionModule - - Region and format - Regió i format - - - Country or Region - Regió - - - Format - Format - - - Provide localized services based on your region. - Proporció de serveis localitzats segons la regió. - - - Select matching date and time formats based on language and region - Seleccioneu els formats de data i hora coincidents amb la llengua i la regió. - - - Region format - Llengua i regió - - - First day of week - Primer dia de la setmana - - - Short date - Data abreujada - - - Long date - Data ampliada - - - Short time - Hora abreujada - - - Long time - Hora ampliada - - - Currency symbol - Símbol de la moneda - - - Numbers - Números - - - Paper - Paper - - - Custom format - - - - - ResultItem - - Your system is not authorized, please activate first - El sistema no té autorització. Si us plau, activeu-ho primer. - - - Update successful - Actualització correcta - - - Failed to update - Ha fallat l'actualització. - - - - SearchInput - - Search - Cerca - - - - ServiceSettingsModule - - Apps can access your camera: - Aplicacions que poden accedir a la càmera: - - - Apps can access your microphone: - Aplicacions que poden accedir al micròfon: - - - Apps can access user folders: - Aplicacions que poden accedir a les carpetes de l'usuari: - - - Apps can access Calendar: - Aplicacions que poden accedir al calendari: - - - Apps can access Screen Capture: - Aplicacions que poden accedir a la captura de pantalla: - - - No apps requested access to the camera - Cap aplicació ha demanat l'accés a la càmera. - - - No apps requested access to the microphone - Cap aplicació ha demanat l'accés al micròfon. - - - No apps requested access to user folders - Cap aplicació ha demanat l'accés a les carpetes de l'usuari. - - - No apps requested access to Calendar - Cap aplicació ha demanat l'accés al calendari. - - - No apps requested access to Screen Capture - Cap aplicació ha demanat l'accés a la captura de pantalla. - - - - SoundEffectsPage - - Sound Effects - Efectes de so - - - - SoundModel - - Boot up - Arrencada - - - Shut down - Atura't - - - Log out - Tanca la sessió - - - Wake up - Desperta - - - Volume +/- - Volum + / - - - - Notification - Notificació - - - Low battery - Bateria baixa - - - Send icon in Launcher to Desktop - Envia la icona del llançador a l'escriptori - - - Empty Trash - Buida la paperera - - - Plug in - Connecta - - - Plug out - Desconnecta - - - Removable device connected - Dispositiu extraïble connectat - - - Removable device removed - Dispositiu extraïble desconnectat - - - Error - Error - - - - SoundModule - - Sound - So - - - - SoundPlugin - - Output - Sortida - - - Auto pause - Pausa automàtica - - - Whether the audio will be automatically paused when the current audio device is unplugged - Si l'àudio es posarà en pausa automàticament quan es desconnecti el dispositiu d'àudio actual. - - - Input - Entrada - - - Sound Effects - Efectes de so - - - Devices - Dispositius - - - Input Devices - Dispositius d'entrada - - - Output Devices - Dispositius de sortida - - - - SpeakerPage - - Output Device - Dispositiu de sortida - - - Mode - Mode - - - Output Volume - Volum de sortida - - - Volume Boost - Potenciació del volum - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Si el volum és superior al 100%, es pot distorsionar l'àudio i perjudicar els dispositius de sortida. - - - Left/Right Balance - Balanç de dreta / esquerra - - - Left - A l'esquerra - - - Right - A la dreta - - - - TimeSettingModule - - Time Settings - Configuració del dia i l'hora - - - Time - Hora - - - Auto Sync - Sincronització automàtica - - - Reset - Restableix - - - Save - Desa - - - Server - Servidor - - - Address - Adreça - - - Required - Cal - - - Customize - Personalitzeu-ho - - - Year - Any - - - Month - Mes - - - Day - Dia - - - - TimeZoneChooser - - Cancel - Cancel·la - - - Confirm - Confirmeu-ho - - - Add Timezone - Afegiu una zona horària - - - Add - Afegeix - - - Change Timezone - Canvia la zona horària - - - - TimeoutDialog - - Save the display settings? - Voleu desar els paràmetres de la pantalla? - - - Settings will be reverted in %1s. - La configuració es revertirà d'aquí a %1 s. - - - Revert - Reveteix - - - Save - Desa - - - - TimezoneItem - - Tomorrow - Demà - - - Yesterday - Ahir - - - Today - Avui - - - %1 hours earlier than local - %1 hores menys que la d'aquí - - - %1 hours later than local - %1 hores més que la d'aquí - - - - TimezoneModule - - Timezone List - Llista de zones horàries - - - System Timezone - Zona horària del sistema - - - Add Timezone - Afegiu una zona horària - - - - TreeCombox - - Collaboration Settings - Configuració de la col·laboració - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - El compte d'usuari no està enllaçat amb l'identificador d'Union. - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Per restablir les contrasenyes, primer heu d'autenticar l'ID d'Union. Cliqueu a Ves a l'enllaç per acabar-ne la configuració. - - - Cancel - Cancel·la - - - Go to Link - Ves a l'enllaç - - - - UnknownUpdateItem - - Release date: - Data de publicació: - - - - UpdateCtrlWidget - - Check Again - Torna-ho a comprovar - - - Update failed: insufficient disk space - Ha fallat l'actualització: no hi ha prou espai de disc. - - - Dependency error, failed to detect the updates - Error de dependències. Ha fallat detectar les actualitzacions. - - - Restart the computer to use the system and the applications properly - Reinicieu l'ordinador per usar correctament el sistema i les aplicacions. - - - Network disconnected, please retry after connected - Xarxa desconnectada. Si us plau, torneu-ho a intentar després de connectar-hi. - - - Your system is not authorized, please activate first - El sistema no té autorització. Si us plau, activeu-ho primer. - - - This update may take a long time, please do not shut down or reboot during the process - Aquesta actualització pot trigar força. Si us plau, no atureu ni reinicieu el sistema mentre duri el procés. - - - Updates Available - Actualitzacions disponibles - - - Current Edition - Edició actual - - - Updating... - S'actualitza... - - - Update All - Actualitza-ho tot - - - Last checking time: - Darrera hora de comprovació: - - - Your system is up to date - El sistema està actualitzat. - - - Check for Updates - Comprova si hi ha actualitzacions - - - Checking for updates, please wait... - Es comprova si hi ha actualitzacions. Espereu, si us plau... - - - The newest system installed, restart to take effect - S'ha instal·lat el sistema més nou. Reinicieu-lo perquè tingui efecte. - - - %1% downloaded (Click to pause) - %1% baixat (cliqueu per interrompre-ho) - - - %1% downloaded (Click to continue) - %1% baixat (cliqueu per repredre-ho) - - - Your battery is lower than 50%, please plug in to continue - La bateria no arriba al 50 %. Si us plau, endolleu l'ordinador per continuar. - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Si us plau, assegureu-vos que hi ha prou energia per reiniciar i no atureu ni desendolleu la màquina. - - - Size - Mida - - - - UpdateModule - - Updates - Actualitzacions - - - - UpdatePlugin - - Check for Updates - Comprova si hi ha actualitzacions - - - - UpdateSettingItem - - Insufficient disk space - Espai de disc insuficient - - - Update failed: insufficient disk space - Ha fallat l'actualització: no hi ha prou espai de disc. - - - Update failed - Ha fallat l'actualització. - - - Network error - Error de xarxa - - - Network error, please check and try again - Error de xarxa. Comproveu-la i torneu-ho a provar. - - - Packages error - Error dels paquets - - - Packages error, please try again - Error dels paquets. Torneu-ho a provar. - - - Dependency error - Error de dependència - - - Unmet dependencies - Dependències no satisfetes - - - The newest system installed, restart to take effect - S'ha instal·lat el sistema més nou. Reinicieu-lo perquè tingui efecte. - - - Waiting - S'espera - - - Backing up - Còpia de seguetat - - - System backup failed - Ha fallat la còpia de seguretat. - - - Release date: - Data de publicació: - - - Server - Servidor - - - Desktop - Escriptori - - - Version - Versió - - - - UpdateSettingsModule - - Update Settings - Configuració de l'actualització - - - System - Sistema - - - Security Updates Only - Només actualitzacions de seguretat - - - Switch it on to only update security vulnerabilities and compatibility issues - Activeu-ho per actualitzar només les vulnerabilitats de seguretat i els problemes de compatibilitat. - - - Third-party Repositories - Repositoris de tercers - - - linglong update - actualització llarga - - - Linglong Package Update - Actualització del paquet Linglong - - - If there is update for linglong package, system will update it for you - Si hi ha una actualització per al paquet Linglong, el sistema l'actualitzarà. - - - Other settings - Altres configuracions - - - Auto Check for Updates - Comprova automàticament si hi ha actualitzacions - - - Auto Download Updates - Baixa automàticament les actualitzacions - - - Switch it on to automatically download the updates in wireless or wired network - Activeu-ho per baixar automàticament les actualitzacions amb una xarxa amb fil o sense. - - - Auto Install Updates - Instal·la les actualitzacions automàticament - - - Updates Notification - Notificació d'actualitzacions - - - Clear Package Cache - Neteja la cau de paquets - - - Updates from Internal Testing Sources - Actualitzacions de fonts de proves internes - - - internal update - actualització interna - - - Join the internal testing channel to get deepin latest updates - Uniu-vos al canal de proves internes per rebre les darreres actualitzacions del Deepin. - - - System Updates - Actualitzacions del sistema - - - Security Updates - Actualitzacions de seguretat - - - Install updates automatically when the download is complete - Instal·la les actualitzacions automàticament quan acabi la descàrrega. - - - Install "%1" automatically when the download is complete - Instal·la %1 automàticament quan s'hagi completat la baixada. - - - - UpdateWidget - - Current Edition - Edició actual - - - - UpdateWorker - - System Updates - Actualitzacions del sistema - - - Fixed some known bugs and security vulnerabilities - S'han corregit alguns errors coneguts i vulnerabilitats de seguretat. - - - Security Updates - Actualitzacions de seguretat - - - Third-party Repositories - Repositoris de tercers - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Potser no és segur deixar el canal de proves intern ara, encara en voleu sortir? - - - Your are safe to leave the internal testing channel - És segur sortir del canal de proves intern. - - - Cannot find machineid - No es pot trobar l'identificador de la màquina. - - - Cannot Uninstall package - No es pot desinstal·lar el paquet - - - Error when exit testingChannel - Error en sortir del canal de prova - - - try to manually uninstall package - proveu de desinstal·lar manualment el paquet - - - Cannot install package - No es pot instal·lar el paquet. - - - - UseBatteryModule - - On Battery - Amb la bateria - - - Never - Mai - - - Shut down - Atura't - - - Suspend - Suspèn-te - - - Hibernate - Hiberna - - - Turn off the monitor - Desactiva el monitor - - - Do nothing - No facis res - - - 1 Minute - 1 minut - - - %1 Minutes - %1 minuts - - - 1 Hour - 1 hora - - - Screen and Suspend - Pantalla i suspensió - - - Turn off the monitor after - Atura el monitor després de - - - Lock screen after - Bloca la pantalla al cap de... - - - Computer suspends after - L'ordinador entra en suspensió després de - - - Computer will suspend after - L'ordinador es posarà en suspens al cap de... - - - When the lid is closed - Quan la tapa estigui tancada - - - When the power button is pressed - Quan es premi el botó d'engegada - - - Low Battery - Bateria baixa - - - Low battery notification - Notificació de bateria baixa - - - Low battery level - Nivell de bateria baix - - - Auto suspend battery level - Nivell de bateria per a la suspensió automàtica - - - Battery Management - Gestió de la bateria - - - Display remaining using and charging time - Mostra el temps restant d’ús i de càrrega - - - Maximum capacity - Capacitat màxima - - - Show the shutdown Interface - Mostra la interfície d'aturada. - - - - UseElectricModule - - Plugged In - Connectat - - - 1 Minute - 1 minut - - - %1 Minutes - %1 minuts - - - 1 Hour - 1 hora - - - Never - Mai - - - Screen and Suspend - Pantalla i suspensió - - - Turn off the monitor after - Atura el monitor després de - - - Lock screen after - Bloca la pantalla al cap de... - - - Computer suspends after - L'ordinador entra en suspensió després de - - - When the lid is closed - Quan la tapa estigui tancada - - - When the power button is pressed - Quan es premi el botó d'engegada - - - Shut down - Atura't - - - Suspend - Suspèn-te - - - Hibernate - Hiberna - - - Turn off the monitor - Desactiva el monitor - - - Show the shutdown Interface - Mostra la interfície d'aturada. - - - Do nothing - No facis res - - - - WacomModule - - Drawing Tablet - Tauleta de dibuix - - - Mode - Mode - - - Pressure Sensitivity - Sensibilitat de la pressió - - - Pen - Bolígraf - - - Mouse - Ratolí - - - Light - Lleugera - - - Heavy - Intensa - - - - main - - Control Center provides the options for system settings. - El Centre de control proporciona les opcions per a la configuració del sistema. - - - - updateControlPanel - - Downloading - Es baixa - - - Waiting - S'espera - - - Installing - S'instal·la - - - Backing up - Còpia de seguetat - - - Download and install - Baixa-les i instal·la-les - - - Learn more - Més informació - - - diff --git a/dcc-old/translations/dde-control-center_cgg.ts b/dcc-old/translations/dde-control-center_cgg.ts deleted file mode 100644 index 177dfb898f..0000000000 --- a/dcc-old/translations/dde-control-center_cgg.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_cs.ts b/dcc-old/translations/dde-control-center_cs.ts deleted file mode 100644 index 5b97e3f55e..0000000000 --- a/dcc-old/translations/dde-control-center_cs.ts +++ /dev/null @@ -1,3998 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Umožnit ostatním Bluetooth zařízením najít toto zařízení - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Pokud chcete najít zařízení poblíž (reproduktory, klávesnici, myš, atp.), zapněte rozhraní Bluetooth - - - My Devices - Má zařízení - - - Other Devices - Ostatní zařízení - - - Show Bluetooth devices without names - Zobrazit Bluetooth zařízení bez názvů - - - Connect - Připojit - - - Disconnect - Odpojit - - - Rename - Přejmenovat - - - Send Files - Odeslat soubory - - - Ignore this device - Přehlížet toto zařízení - - - Connecting - Připojuje se - - - Disconnecting - Odpojuje se - - - - AddButtonWidget - - Add Application - Přidat aplikaci - - - Open Desktop file - Otevřít soubor spouštěče - - - Apps (*.desktop) - Aplikace (*.desktop) - - - All files (*) - Všechny soubory (*) - - - - AddFaceInfoDialog - - Enroll Face - Zaznamenat obličej - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Ověřte, že žádná část obličeje není zakrytá nějakým předmětem a je jasně viditelný. Také by měl být dobře nasvícený. - - - Cancel - Zrušit - - - Next - Další - - - Face enrolled - Obličej zaznamenán - - - Use your face to unlock the device and make settings later - Použijte svůj obličej pro odemykání zařízení a nastavte později - - - Done - Hotovo - - - Failed to enroll your face - Obličej se nepodařilo zaznamenat - - - Try Again - Zkusit znovu - - - Close - Zavřít - - - - AddFingerDialog - - Cancel - Zrušit - - - Done - Hotovo - - - Scan Again - Nasnímat znovu - - - Scan Suspended - Snímání odloženo - - - - AddIrisInfoDialog - - Enroll Iris - Zaznamenat duhovku - - - Cancel - Zrušit - - - Next - Další - - - Iris enrolled - Duhovka zaznamenána - - - Done - Hotovo - - - Failed to enroll your iris - Duhovku se nepodařilo zaznamenat - - - Try Again - Zkusit znovu - - - - AdvancedSettingModule - - Advanced Setting - - - - Audio Framework - - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - - - - - AuthenticationInfoItem - - No more than 15 characters - Ne více než 15 znaků - - - Use letters, numbers and underscores only, and no more than 15 characters - Použijte pouze písmena, číslice a podtržítka a ne delší než 15 znaků - - - Use letters, numbers and underscores only - Použijte pouze písmena, číslice a podtržítka - - - - AuthenticationModule - - Biometric Authentication - Biometrické ověřování - - - - AuthenticationPlugin - - Fingerprint - Otisk prstu - - - Face - Obličej - - - Iris - Duhovka - - - - BluetoothDeviceModel - - Connected - Připojeno - - - Not connected - Nepřipojeno - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Správa Bluetooth zařízení - - - - CharaMangerModel - - Fingerprint1 - Otisk 1 - - - Fingerprint2 - Otisk 2 - - - Fingerprint3 - Otisk 3 - - - Fingerprint4 - Otisk 4 - - - Fingerprint5 - Otisk 5 - - - Fingerprint6 - Otisk 6 - - - Fingerprint7 - Otisk 7 - - - Fingerprint8 - Otisk 8 - - - Fingerprint9 - Otisk 9 - - - Fingerprint10 - Otisk 10 - - - Scan failed - Nasnímání se nezdařilo - - - The fingerprint already exists - Otisk už existuje - - - Please scan other fingers - Prosím nasnímejte ostatní prsty - - - Unknown error - Neznámá chyba - - - Scan suspended - Snímání odloženo - - - Cannot recognize - Nedaří se rozpoznat - - - Moved too fast - Příliš rychlý pohyb - - - Finger moved too fast, please do not lift until prompted - Prstem bylo pohybováno příliš rychle. Nezvedejte prst, dokud k tomu nebudete vyzváni - - - Unclear fingerprint - Nezřetelný otisk prstu - - - Clean your finger or adjust the finger position, and try again - Očistěte prst nebo upravte jeho polohu a zkuste to znovu - - - Already scanned - Už nasnímáno - - - Adjust the finger position to scan your fingerprint fully - Upravte polohu prstu tak, aby byl otisk nasnímán celý - - - Finger moved too fast. Please do not lift until prompted - Prstem bylo pohybováno příliš rychle. Nezvedejte prst, dokud k tomu nebudete vyzváni - - - Lift your finger and place it on the sensor again - Oddalte prst od čtečky a přiložte ho na ni znovu - - - Position your face inside the frame - Umístěte svůj obličej do rámečku - - - Face enrolled - Obličej zaznamenán - - - Position a human face please - Předložte prosím obličej člověka - - - Keep away from the camera - Držte se dále od kamery - - - Get closer to the camera - Přibližte se ke kameře - - - Do not position multiple faces inside the frame - Neumisťujte do rámečku více tváří - - - Make sure the camera lens is clean - Ujistěte se, že je čočka kamery čistá - - - Do not enroll in dark, bright or backlit environments - Nepřihlašujte se v tmavém ani světlém prostředí, ani v prostředí s protisvětlem - - - Keep your face uncovered - Udržujte svůj obličej odkrytý - - - Scan timed out - Překročen časový limit pokusu o naskenování - - - Device crashed, please scan again! - Zařízení zhavarovalo, prosím naskenujte znovu! - - - Cancel - Zrušit - - - - CooperationSettingsDialog - - Collaboration Settings - Nastavení spolupráce - - - Share mouse and keyboard - Sdílet myš a klávesnici - - - Share your mouse and keyboard across devices - Sdílet myš a klávesnici napříč zařízeními - - - Share clipboard - Sdílet schránku - - - Storage path for shared files - Umístění sdílených souborů - - - Share the copied content across devices - Sdílet zkopírovaný obsah napříč zařízeními - - - Cancel - button - Zrušit - - - Confirm - button - Potvrdit - - - - dccV23::AccountSpinBox - - Always - Vždy - - - - dccV23::AccountsModule - - Users - Uživatetelé - - - User management - Správa uživatelů - - - Create User - Vytvořit uživatele - - - Username - Uživatelské jméno - - - Change Password - Změnit heslo - - - Delete User - Smazat uživatele - - - User Type - Typ uživatele - - - Auto Login - Přihlašovat automaticky - - - Login Without Password - Přihlašování se bez hesla - - - Validity Days - Dnů platnosti - - - Group - Skupina - - - The full name is too long - Celé jméno je příliš dlouhé - - - Standard User - Běžný uživatel - - - Administrator - Správce - - - Reset Password - Vynulovat heslo - - - The full name has been used by other user accounts - Toto celé jméno už je používání jiným uživatelským účtem - - - Full Name - Celé jméno - - - Go to Settings - Přejít do nastavení - - - Cancel - Zrušit - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - „Automatické přihlašování“ je možné zapnout pouze pro jeden účet – nejprve ho proto vypněte pro účet „%1“ - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Váš počítač byl úspěšně odebrán z domény - - - Your host joins the domain server successfully - Váš počítač byl úspěšně přidán do domény - - - Your host failed to leave the domain server - Váš počítač se nepodařilo odebrat z domény - - - Your host failed to join the domain server - Váš počítač se nepodařilo přidat do domény - - - AD domain settings - Nastavení pro doménu AD - - - Password not match - Zadání hesla se neshodují - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Zobrazovat upozornění z %1 na ploše a v centru oznámení - - - Play a sound - Přehrát zvuk - - - Show messages on lockscreen - Zobrazit zprávy na uzamčené obrazovce - - - Show in notification center - Zobrazit v centru oznámení - - - Show message preview - Zobrazit náhled zprávy - - - - dccV23::AvatarListDialog - - Person - Osoba - - - Animal - Zvíře - - - Illustration - Ilustrace - - - Expression - Vyjádření - - - Custom Picture - Vlastní obrázek - - - Cancel - Zrušit - - - Save - Uložit - - - - dccV23::AvatarListFrame - - Dimensional Style - Rozměrový styl - - - Flat Style - Plochý styl - - - - dccV23::AvatarListView - - Images - Obrázky - - - - dccV23::BootWidget - - Updating... - Aktualizuje se… - - - Startup Delay - Prodleva před spuštěním - - - Theme - Vzhled - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Klepnutím na volbu pro nabídku před spuštěním systému ji nastavíte jako první v pořadí a přetažením obrázku sem změníte pozadí - - - Click the option in boot menu to set it as the first boot - Pokud ji chcete nastavit jako první v pořadí při zavádění systému, klepněte na položku v nabídce - - - Switch theme on to view it in boot menu - Aby se zobrazil v nabídce před spuštěním systému, vzhled zapněte - - - GRUB Authentication - Ověřování v zavaděči GRUB - - - GRUB password is required to edit its configuration - Pro upravování nastavení zavaděče GRUB je zapotřebí heslo k němu - - - Change Password - Změnit heslo - - - Boot Menu - Nabídka před startem systému - - - Change GRUB password - Změnit heslo do zavaděče GRUB - - - Username: - Uživatelské jméno: - - - root - root - - - New password: - Nové heslo: - - - Repeat password: - Zopakování hesla: - - - Required - Vyžadováno - - - Cancel - button - Zrušit - - - Confirm - button - Potvrdit - - - Password cannot be empty - Heslo nemůže být prázdné - - - Passwords do not match - Zadání hesla se neshodují - - - - dccV23::BrightnessWidget - - Brightness - Jas - - - Color Temperature - Barevná teplota - - - Auto Brightness - Jas automaticky - - - Night Shift - Noční režim - - - The screen hue will be auto adjusted according to your location - Kvůli ochraně zdraví, bude zabarvení obrazovky automaticky upraveno na základě denní doby a vaší zeměpisné polohy - - - Change Color Temperature - Změnit barevnou teplotu - - - Cool - Studené - - - Warm - Teplé - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Spolupráce s více obrazovkami - - - PC Collaboration - Spolupráce s počítačem - - - Connect to - Připojit k - - - Select a device for collaboration - Vybrat zařízení pro spolupráci - - - Device Orientation - Natočení zařízení - - - On the top - Nahoře - - - On the right - Napravo - - - On the bottom - Dole - - - On the left - Nalevo - - - My Devices - Má zařízení - - - Other Devices - Ostatní zařízení - - - - dccV23::CommonInfoPlugin - - General Settings - Obecná nastavení - - - Boot Menu - Nabídka před startem systému - - - Developer Mode - Vývojářský režim - - - User Experience Program - Program pro hodnocení uživatelského zážitku - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Odsouhlasit a připojit se do programu pro hodnocení uživatelského zážitku - - - The Disclaimer of Developer Mode - Zřeknutí se odpovědnosti v případě vývojářského režimu - - - Agree and Request Root Access - Odsouhlasit a požádat o udělení přístupu na úrovni správce systému (root) - - - Failed to get root access - Nepodařilo se získat přístup na úrovni správce systému - - - Please sign in to your Union ID first - Nejprve se prosím přihlaste ke svému Union ID účtu - - - Cannot read your PC information - Nedaří se načíst informace o vašem počítači - - - No network connection - Síť nepřipojena - - - Certificate loading failed, unable to get root access - Načítání certifikátu se nezdařilo, proto nezískán přístup na úrovni správce systému - - - Signature verification failed, unable to get root access - Ověřování podpisu se nezdařilo, proto nezískán přístup na úrovni správce systému - - - - dccV23::CreateAccountPage - - Group - Skupina - - - Cancel - Zrušit - - - Create - Vytvořit - - - New User - Nový uživatel - - - User Type - Typ uživatele - - - Username - Uživatelské jméno - - - Full Name - Celé jméno - - - Password - Heslo - - - Repeat Password - Zadejte heslo znovu - - - Password Hint - Nápověda k heslu - - - The full name is too long - Celé jméno je příliš dlouhé - - - Passwords do not match - Zadání hesla se neshodují - - - Standard User - Běžný uživatel - - - Administrator - Správce - - - Customized - Přizpůsobeno - - - Required - Vyžadováno - - - optional - volitelné - - - The hint is visible to all users. Do not include the password here. - Nápověda je viditelná všem uživatelům. Nepište sem heslo. - - - Policykit authentication failed - Ověření se v Policykit se nezdařilo - - - Username must be between 3 and 32 characters - Je třeba, aby uživatelské jméno mělo délku 3 až 32 znaků - - - The first character must be a letter or number - Je třeba, aby první znak bylo písmeno nebo číslice - - - Your username should not only have numbers - Uživatelské jméno by nemělo být tvořeno pouze číslicemi - - - The username has been used by other user accounts - Toto uživatelské jméno už je používání jiným uživatelským účtem - - - The full name has been used by other user accounts - Toto celé jméno už je používání jiným uživatelským účtem - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Ještě jste nenahráli obrázek, můžete jej nahrát kliknutím nebo přetažením. - - - Uploaded file type is incorrect, please upload again - Nahraný typ souboru je nesprávný, nahrajte jej prosím znovu - - - Images - Obrázky - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Přidat uživatelsky určenou zkratku - - - Name - Název - - - Required - Vyžadováno - - - Command - Příkaz - - - Cancel - Zrušit - - - Add - Přidat - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Tato klávesová zkratka je ve střetu s %1. Pokud chcete, aby platila ta nová, klepněte na Přidat - - - - dccV23::CustomEdit - - Required - Vyžadováno - - - Cancel - Zrušit - - - Save - Uložit - - - Shortcut - Klávesová zkratka - - - Name - Název - - - Command - Příkaz - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Tato klávesová zkratka je ve střetu s %1. Pokud chcete, aby platila ta nová, klepněte na Přidat - - - - dccV23::CustomItem - - Shortcut - Klávesová zkratka - - - Please enter a shortcut - Zadejte zkratku prosím - - - - dccV23::CustomRegionFormatDialog - - Custom format - Uživatelsky určený formát - - - First day of week - První den týdne - - - Short date - Krátký formát data - - - Long date - Dlouhý formát data - - - Short time - Krátký formát času - - - Long time - Dlouhý formát času - - - Currency symbol - Symbol měny - - - Numbers - Čísla - - - Paper - Papír - - - Cancel - Zrušit - - - Save - Uložit - - - - dccV23::DetailInfoItem - - For more details, visit: - Podrobnosti naleznete na: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Požádat o udělení přístupu na úrovni správce systému (root) - - - Online - Přes Internet - - - Offline - Bez připojení k Internetu - - - Please sign in to your Union ID first and continue - Nejprve se prosím přihlaste ke svému Union ID účtu a pak pokračujte - - - Next - Další - - - Export PC Info - Exportovat informace o počítači - - - Import Certificate - Naimportovat certifikát - - - 1. Export your PC information - 1. Uložit informace o počítači - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Jít na https://www.chinauos.com/developMode pro stažení offline certifikátu - - - 3. Import the certificate - 3. Nahrát certifikát - - - - dccV23::DeveloperModeWidget - - Request Root Access - Požádat o udělení přístupu na úrovni správce systému (root) - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Režim pro vývojáře vám zpřístupní oprávnění správce systému, instalaci a spouštění nepodepsaných aplikací, nenacházejících se v obchodu s aplikacemi, ale může tím být poškozena celistvost vašeho systému – používejte opatrně. - - - The feature is not available at present, please activate your system first - Tato funkce v tuto chvíli není k dispozici – prosím nejprve proveďte aktivaci systému - - - Failed to get root access - Nepodařilo se získat přístup na úrovni správce systému - - - Please sign in to your Union ID first - Nejprve se prosím přihlaste ke svému Union ID účtu - - - Cannot read your PC information - Nedaří se načíst informace o vašem počítači - - - No network connection - Síť nepřipojena - - - Certificate loading failed, unable to get root access - Načítání certifikátu se nezdařilo, proto nezískán přístup na úrovni správce systému - - - Signature verification failed, unable to get root access - Ověřování podpisu se nezdařilo, proto nezískán přístup na úrovni správce systému - - - To make some features effective, a restart is required. Restart now? - Některé z funkcí vyžadují restart počítače, aby byly dostupné. Restartovat nyní? - - - Cancel - Zrušit - - - Restart Now - Restartovat nyní - - - Root Access Allowed - Správcovský přístup (root) povolen - - - - dccV23::DisplayPlugin - - Display - Zobrazení - - - Light, resolution, scaling and etc - Jas, rozlišení, měřítko zobrazení atd. - - - - dccV23::DouTestWidget - - Double-click Test - Zkouška dvojklepnutí - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Nastavení klávesnice - - - Repeat Delay - Prodleva mezi opakováními - - - Short - Krátké - - - Long - Dlouhé - - - Repeat Rate - Rychlost opakování - - - Slow - Pomalé - - - Fast - Rychlé - - - Test here - Vyzkoušejte zde - - - Numeric Keypad - Numerický blok - - - Caps Lock Prompt - Výzva ohledně Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Levoruká - - - Disable touchpad while typing - Vypnout touchpad při psaní - - - Scrolling Speed - Rychlost posunování - - - Double-click Speed - Prodleva v rámci dvojklepnutí - - - Slow - Pomalé - - - Fast - Rychlé - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Rozvržení klávesnice - - - Edit - Upravit - - - Add Keyboard Layout - Přidat rozvržení klávesnice - - - Done - Hotovo - - - - dccV23::KeyboardLayoutDialog - - Cancel - Zrušit - - - Add - Přidat - - - Add Keyboard Layout - Přidat rozvržení klávesnice - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Klávesnice a jazyk - - - Keyboard - Klávesnice - - - Keyboard Settings - Nastavení klávesnice - - - keyboard Layout - Rozvržení klávesnice - - - Keyboard Layout - Rozvržení klávesnice - - - Language - Jazyk - - - Shortcuts - Klávesové zkratky - - - - dccV23::MainWindow - - Help - Nápověda - - - - dccV23::ModifyPasswdPage - - Change Password - Změnit heslo - - - Reset Password - Vynulovat heslo - - - Resetting the password will clear the data stored in the keyring. - Obnovení hesla vymaže údaje uložené v klíčence. - - - Current Password - Stávající heslo - - - Forgot password? - Zapomněli jste heslo? - - - New Password - Nové heslo - - - Repeat Password - Zadejte heslo znovu - - - Password Hint - Nápověda k heslu - - - Cancel - Zrušit - - - Save - Uložit - - - Passwords do not match - Zadání hesla se neshodují - - - Required - Vyžadováno - - - Optional - Volitelné - - - Password cannot be empty - Heslo nemůže být prázdné - - - The hint is visible to all users. Do not include the password here. - Nápověda je viditelná všem uživatelům. Nepište sem heslo. - - - Wrong password - Chybné heslo - - - New password should differ from the current one - Nové heslo by nemělo být stejné jako to původní - - - System error - Systémová chyba - - - Network error - Síťová chyba - - - - dccV23::MonitorControlWidget - - Identify - Identifikovat - - - Gather Windows - Shromáždit okna - - - Screen rearrangement will take effect in %1s after changes - Změna uspořádání obrazu se projeví za %1s po provedení změn - - - - dccV23::MousePlugin - - Mouse - Myš - - - General - Obecné - - - Touchpad - Dotyková plocha - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Rychlost ukazatele - - - Mouse Acceleration - Zrychlení ukazatele myši - - - Disable touchpad when a mouse is connected - Při připojení myši vypnout touchpad - - - Natural Scrolling - Přirozené posunování - - - Slow - Pomalé - - - Fast - Rychlé - - - - dccV23::MultiScreenWidget - - Multiple Displays - Více displejů - /display/Multiple Displays - - - Mode - Režim - /display/Mode - - - Main Screen - Hlavní obrazovka - /display/Main Scree - - - Duplicate - Zrcadlit - - - Extend - Roztáhnout - - - Only on %1 - Pouze na %1 - - - - dccV23::NotificationModule - - AppNotify - Upozornění z aplikací - - - Notification - Upozornění - - - SystemNotify - Systémová upozornění - - - - dccV23::PalmDetectSetting - - Palm Detection - Zjišťování dlaně - - - Minimum Contact Surface - Nejmenší plocha doteku - - - Minimum Pressure Value - Nejmenší hodnota přítlaku - - - Disable the option if touchpad doesn't work after enabled - Pokud po zapnutí této volby touchpad nefunguje, volbu vypněte - - - - dccV23::PluginManager - - following plugins load failed - následující doplňkové moduly se nepodařilo načíst - - - plugins cannot loaded in time - Doplňkové moduly se nepodařilo včas načíst - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Zásady ochrany soukromí - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Jsme si hluboce vědomi důležitosti vašich osobních údajů pro vás. Proto máme zásady ochrany, které pokrývají to, jak shromažďujeme, používáme, sdílím, přenášíme, zveřejňujeme a uchováváme vaše údaje.</p><p><a href="%1">Klepnutím sem</a> si zobrazíte naše nejnovější zásady ochrany soukromí a/nebo si je zobrazte na Internetu navštívením <a href="%1">%1</a>. Pečlivě si je pročtěte a zcela porozumněte našim praktikám ohledně soukromí zákazníka. Pokud máte jakékoli dotazy, kontaktujte nás na: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Heslo nemůže být prázdné - - - Password must have at least %1 characters - Je třeba, aby heslo mělo délku alespoň %1 znaků - - - Password must be no more than %1 characters - Heslo může mít délku nejvýše %1 znaků - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Heslo může obsahovat pouze písmena z anglické abecedy (rozlišují se malá a VELKÁ písmena), číslice a dále ještě speciální symboly (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Ne více než %1 znaků, které se tam i zpět čtou stejně (palindrom) - - - No more than %1 monotonic characters please - Ne více než %1 v abecedě po sobě jdoucí znaky prosím - - - No more than %1 repeating characters please - Ne více než %1 opakující se znaky prosím - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Je třeba, aby heslo obsahovalo velká a malá písmena z (pouze z anglické abecedy), číslice a symboly (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Heslo nemůže obsahovat posloupnost více než 4 znaků, která se čte stejně oběma směry (palindrom) - - - Do not use common words and combinations as password - Jako heslo nepoužívejte běžná slova a jejich kombinace - - - Create a strong password please - Vytvořte si odolné heslo, prosím - - - It does not meet password rules - Nesplňuje pravidla pro hesla - - - - dccV23::RefreshRateWidget - - Refresh Rate - Obnovovací frekvence - - - Hz - Hz - - - Recommended - Doporučeno - - - - dccV23::RegionFormatDialog - - Region format - Formát oblasti - - - Default format - Výchozí formát - - - First of day - První den - - - Short date - Krátký formát data - - - Long date - Dlouhý formát data - - - Short time - Krátký formát času - - - Long time - Dlouhý formát času - - - Currency symbol - Symbol měny - - - Numbers - Čísla - - - Paper - Papír - - - Cancel - Zrušit - - - Save - Uložit - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Opravdu chcete tento účet smazat? - - - Delete account directory - Smazat domovskou složku účtu - - - Cancel - Zrušit - - - Delete - Smazat - - - - dccV23::ResolutionWidget - - Resolution - Rozlišení - /display/Resolution - - - Resize Desktop - Změnit velikost plochy - /display/Resize Desktop - - - Default - Výchozí - - - Fit - Přizpůsobit - - - Stretch - Roztáhnout - - - Center - Vystředit - - - Recommended - Doporučeno - - - - dccV23::RotateWidget - - Rotation - Otočení - /display/Rotation - - - Standard - Standardní - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Obrazovka podporuje změnu měřítka zobrazení jen po násobcích 100 % - - - Display Scaling - Změna velikosti zobrazení - - - - dccV23::SearchInput - - Search - Hledat - - - - dccV23::SecondaryScreenDialog - - Brightness - Jas - - - - dccV23::SecurityLevelItem - - Weak - Slabé - - - Medium - Střední - - - Strong - Silné - - - - dccV23::SecurityQuestionsPage - - Security Questions - Bezpečnostní otázky - - - These questions will be used to help reset your password in case you forget it. - Tyto otázky budou použity aby vám pomohly resetovat vaše heslo v případě, že ho zapomenete. - - - Security question 1 - Bezpečnostní otázka 1 - - - Security question 2 - Bezpečnostní otázka 2 - - - Security question 3 - Bezpečnostní otázka 3 - - - Cancel - Zrušit - - - Confirm - Potvrdit - - - Keep the answer under 30 characters - Odpověď může být nejvýše 30 znaků dlouhá - - - Do not choose a duplicate question please - Nevolte totožnou otázku - - - Please select a question - Vyberte otázku - - - What's the name of the city where you were born? - Jaký je název města, ve kterém jste se narodili? - - - What's the name of the first school you attended? - Jaký je název první školy, kterou jste navštěvovali? - - - Who do you love the most in this world? - Koho máte na světě nejraději? - - - What's your favorite animal? - Jaké je vaše oblíbené zvíře? - - - What's your favorite song? - Jaká je vaše oblíbená skladba? - - - What's your nickname? - Jaká je vaše přezdívka? - - - It cannot be empty - Nemůže být nevyplněné - - - - dccV23::SettingsHead - - Edit - Upravit - - - Done - Hotovo - - - - dccV23::ShortCutSettingWidget - - System - Systémové - - - Window - Okno - - - Workspace - Pracovní plocha - - - Assistive Tools - Nástroje pro zpřístupnění hendikepovaným - - - Custom Shortcut - Uživatelsky určená zkratka - - - Restore Defaults - Vrátit na výchozí hodnoty - - - Shortcut - Klávesová zkratka - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Vraťte klávesovou zkratku na výchozí hodnotu - - - Cancel - Zrušit - - - Replace - Nahradit - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Tato klávesová zkratka je ve střetu s %1. Pokud chcete, aby platila ta nová, klepněte na Nahradit - - - - dccV23::ShortcutItem - - Enter a new shortcut - Zadejte novou zkratku - - - - dccV23::SystemInfoModel - - available - k dispozici - - - - dccV23::SystemInfoModule - - About This PC - O tomto počítači - - - Computer Name - Název počítače - - - systemInfo - Informace o systému - - - OS Name - Název operačního systému - - - Version - Verze - - - Edition - Vydání - - - Type - Typ - - - Authorization - Pověření - - - Processor - Procesor - - - Memory - Operační paměť - - - Graphics Platform - Grafická platforma - - - Kernel - Jádro systému - - - Agreements and Privacy Policy - Smlouvy a zásady ochrany osobních údajů - - - Edition License - Licence vydání - - - End User License Agreement - Licenční ujednání s koncovým uživatelem - - - Privacy Policy - Zásady ochrany soukromí - - - %1-bit - %1 bitový - - - - dccV23::SystemInfoPlugin - - System Info - Informace o systému - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Zrušit - - - Add - Přidat - - - Add System Language - Přidat jazyk systému - - - - dccV23::SystemLanguageWidget - - Edit - Upravit - - - Language List - Seznam jazyků - - - Add Language - Přidat jazyk - - - Done - Hotovo - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Nerušit - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Upozornění z aplikací nebudou zobrazená na ploše a zvuky nebudou přehrávány, všechny ale zprávy uvidíte v centru oznámení. - - - When the screen is locked - Když je obrazovka uzamčena - - - - dccV23::TimeSlotItem - - From - Od - - - To - Do - - - - dccV23::TouchScreenModule - - Touch Screen - Dotyková obrazovka - - - Select your touch screen when connected or set it here. - Po připojení vyberte dotykovou obrazovku nebo ji nastavte zde. - - - Confirm - Potvrdit - - - Cancel - Zrušit - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Rychlost ukazatele - - - Enable TouchPad - Zapnout touchpad - - - Tap to Click - Kliknutí klepnutím - - - Natural Scrolling - Přirozené posunování - - - Slow - Pomalé - - - Fast - Rychlé - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Rychlost ukazatele - - - Slow - Pomalé - - - Fast - Rychlé - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Připojit se k programu pro hodnocení uživatelského zážitku - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Zapojení se do programu pro hodnocení zkušeností uživatelů znamená, že udělíte a pověříte nás ke shromažďování informací o vašem zařízení, systému a aplikacích. Pokud odmítnete shromažďování a používání zmíněných informací, nepřipojujte se do tohoto programu. Podrobnosti naleznete v zásadách ochrany soukromí v Deepin (<a href="%1">%1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Zapojení se do programu pro hodnocení zkušeností uživatelů znamená, že udělíte a pověříte nás ke shromažďování informací o vašem zařízení, systému a aplikacích. Pokud odmítnete shromažďování a používání zmíněných informací, nepřipojujte se do tohoto programu. Podrobnosti naleznete v zásadách ochrany soukromí v UnionTech OS (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Rok - - - Month - Měsíc - - - Day - Den - - - - DatetimeModule - - Time and Format - Čas a formát - - - - DatetimeWorker - - Authentication is required to change NTP server - Pro změnu NTP serveru je vyžadováno ověření se - - - - DefAppModule - - Default Applications - Výchozí programy - - - - DefAppPlugin - - Webpage - Webová stránka - - - Mail - E-mail - - - Text - Text - - - Music - Hudba - - - Video - Obraz - - - Picture - Obrázek - - - Terminal - Terminál - - - - DisclaimersDialog - - Disclaimer - Zřeknutí se odpovědnosti - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Než použijete rozpoznávání tváře, uvědomte si že: -1. Vaše zařízení může být odemčeno lidmi či objekty, kteří/které se vám podobají. -2. Rozpoznávání tváře je méně bezpečné než hesla a kombinovaná hesla. -3. To, jak často bude odemknutí pomocí rozpoznání tváře zhoršují nepříznivé světelné podmínky (nedostatečné, příliš intenzivní či zpoza vás jdoucí osvětlení), snímání z velkého úhlu či jiné okolnosti. -4. Nepůjčujte náhodně své zařízení ostatním – zamezíte tak zneužití rozpoznávání obličeje. -5. Krom výše uvedených scénářů byste měli věnovat pozornost dalším situacím, které mohou ovlivnit běžné používání rozpoznávání tváře. - -Aby rozpoznávání tváře fungovalo nejlépe, věnujte při používání obličeje k tomuto účelu pozornost následujícímu: -1. Zajistěte příhodné světelné podmínky, vyhněte se přímému slunečnímu svitu a tomu, aby se v záběru objevovali další lidé. -2. Věnujte pozornost stavu obličeje a vyhněte se tomu, aby vaše pokrývka hlavy, vlasy, sluneční brýle, respirátor/rouška, silné nalíčení a ostatní faktory nezakrývaly rysy vašeho obličeje. -3. Vyhněte se naklánění nebo předklánění hlavy, zavírání očí nebo ukazování pouze jedné strany vašeho obličeje a zajistěte, aby se váš obličej zpředu čistě a úplně zobrazil v okénku výzvy. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - „Biometrické ověřování“ je funkce pro ověřování identity uživatele, poskytovaná společností UnionTech Software Technology Co., Ltd. Prostřednictvím „biometrického ověřování“, budou získané biometrické údaje porovnávány s těmi, uloženými v zařízení a identita uživatele bude ověřena v závislosti na výsledku porovnání. -Společnost UnionTech Software deklaruje, že nebude shromažďovat nebo přistupovat k vašim biometrickým údajům a ty budou ukládány pouze lokálně na vašem zařízení. Biometrické ověřování zapínejte pouze na svém osobním zařízení a používejte pouze pro s ním související účely a neprodleně vypněte nebo smažte z takového zařízení případné biometrické údaje ostatních lidí, jinak nesete rizika z nich plynoucí. -UnionTech Software věnuje úsilí výzkumu a zlepšování zabezpečení, přesnosti a stabilitě biometrického ověřování. Nicméně, kvůli hlediskům, jako je okolní prostředí, použité vybavení, technickým a ostatní, stejně tak snižování rizika, není zaručeno, že dočasně neprojdete biometrickým ověřením. Proto nemějte biometrické ověření jako jediný způsob, jak se přihlásit do UnionTech OS. Pokud máte jakékoli dotazy nebo doporučení ohledně používání biometrického ověřování, můžete nám poskytnout zpětnou vazbu prostřednictvím sekce „Služby a podpora“ v UnionTech OS. - - - - Cancel - Zrušit - - - Next - Další - - - - DisclaimersItem - - I have read and agree to the - Přečetl(a) jsem si a souhlasím se - - - Disclaimer - Zřeknutí se odpovědnosti - - - - DockModuleObject - - Dock - Panel - - - Multiple Displays - Více displejů - - - Show Dock - Zobrazit panel - - - Mode - Režim - - - Position - Poloha - - - Status - Stav - - - Show recent apps in Dock - Zobrazit nedávné aplikace na panelu - - - Size - Velikost - - - Plugin Area - Oblast zásuvného modulu - - - Select which icons appear in the Dock - Vyberte, které ikony se zobrazí v panelu - - - Fashion mode - Líbivý režim - - - Efficient mode - Nenáročný režim - - - Top - Nahoře - - - Bottom - Dole - - - Left - Vlevo - - - Right - Vpravo - - - Location - Umístění - - - Keep shown - Ponechat zobrazený - - - Keep hidden - Ponechat skrytý - - - Smart hide - Chytré skrývání - - - Small - Malý - - - Large - Velký - - - On screen where the cursor is - Na obrazovce, na které se nachází ukazatel - - - Only on main screen - Pouze na hlavní obrazovce - - - - FaceInfoDialog - - Enroll Face - Zaznamenat obličej - - - Position your face inside the frame - Umístěte svůj obličej do rámečku - - - - FaceWidget - - Edit - Upravit - - - Manage Faces - Spravovat obličeje - - - You can add up to 5 faces - Je možné přidat až 5 obličejů - - - Done - Hotovo - - - Add Face - Přidat obličej - - - The name already exists - Název už existuje - - - Faceprint - „Otisk“ obličeje - - - - FaceidDetailWidget - - No supported devices found - Nenalezena žádná podporovaná zařízení - - - - FingerDetailWidget - - No supported devices found - Nenalezena žádná podporovaná zařízení - - - - FingerDisclaimer - - Add Fingerprint - Přidat otisk prstu - - - Cancel - Zrušit - - - Next - Další - - - - FingerInfoWidget - - Place your finger - Přiložte prst - - - Place your finger firmly on the sensor until you're asked to lift it - Přitiskněte prst na snímač, dokud nebudete požádáni o jeho zvednutí - - - Scan the edges of your fingerprint - Nasnímejte okraje svého otisku prstu - - - Place the edges of your fingerprint on the sensor - Umístěte okraje vašeho otisku prstu na snímač - - - Lift your finger - Oddalte prst od čtečky - - - Lift your finger and place it on the sensor again - Oddalte prst od čtečky a přiložte ho na ni znovu - - - Adjust the position to scan the edges of your fingerprint - Upravte polohu prstu tak, aby byly nasnímány i okraje otisku - - - Lift your finger and do that again - Oddalte prst od čtečky a zopakujte snímání - - - Fingerprint added - Otisk prstu přidán - - - - FingerWidget - - Edit - Upravit - - - Fingerprint Password - Heslo zastupované otiskem prstu - - - You can add up to 10 fingerprints - Je možné přidat otisky až 10 prstů - - - Done - Hotovo - - - The name already exists - Název už existuje - - - Add Fingerprint - Přidat otisk prstu - - - - GeneralModule - - General - Obecné - - - Balanced - Vyvážené - - - Balance Performance - Vyvážit výkon - - - High Performance - Vysoký výkon - - - Power Saver - Úspora napájení - - - Power Plans - Profily napájení - - - Power Saving Settings - Nastavení šetření energií - - - Auto power saving on low battery - Automatické šetření energií při nízké úrovni nabití akumulátoru - - - Decrease Brightness - Snížit jas - - - Low battery threshold - Práh nízkého stavu nabití akumulátoru - - - Auto power saving on battery - Automatické šetření energií při napájení z akumulátoru - - - Wakeup Settings - Nastavení probouzení - - - Unlocking is required to wake up the computer - Pro probuzení počítače je vyžadováno odemčení - - - Unlocking is required to wake up the monitor - Pro probuzení obrazovky je vyžadováno odemčení - - - - HostNameItem - - It cannot start or end with dashes - Nemůže začínat či končit na pomlčky - - - 1~63 characters please - 1 až 63 znaků prosím - - - - InternalButtonItem - - Internal testing channel - Vývojářský testovací kanál - - - click here open the link - odkaz otevřete kliknutím sem - - - - IrisDetailWidget - - No supported devices found - Nenalezena žádná podporovaná zařízení - - - - IrisWidget - - Edit - Upravit - - - Manage Irises - Spravovat snímky duhovek - - - You can add up to 5 irises - Je možné přidat až 5 snímků duhovek - - - Done - Hotovo - - - Add Iris - Přidat snímek duhovky - - - The name already exists - Název už existuje - - - Iris - Duhovka - - - - KeyLabel - - None - Žádné - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Autorská práva © 2011-%1 komunita Deepin - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Autorská práva © 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Vstupní zařízení - - - Automatic Noise Suppression - Automatické potlačování okolních ruchů - - - Input Volume - Vstupní hlasitost - - - Input Level - Vstupní úroveň - - - - PersonalizationDesktopModule - - Desktop - Pracovní plocha - - - Window - Okno - - - Window Effect - Efekt pro okna - - - Window Minimize Effect - Efekt pro minimalizaci okna - - - Transparency - Průhlednost - - - Rounded Corner - Zakulacený roh - - - Scale - Zmenšování - - - Magic Lamp - Džin z lampy - - - Small - Malý - - - Middle - Střední - - - Large - Velký - - - - PersonalizationModule - - Personalization - Přizpůsobení - - - - PersonalizationThemeList - - Cancel - Zrušit - - - Save - Uložit - - - Light - Světlý - - - Dark - Tmavý - - - Auto - Automaticky - - - Default - Výchozí - - - - PersonalizationThemeModule - - Theme - Vzhled - - - Appearance - Vzhled - - - Accent Color - Barva zdůraznění - - - Icon Settings - Nastavení ikon - - - Icon Theme - Vzhled ikon - - - Cursor Theme - Vzhled ukazatele - - - Text Settings - Nastavení textu - - - Font Size - Velikost písma - - - Standard Font - Standardní písmo - - - Monospaced Font - Písmo se znaky stejně širokými - - - Light - Světlý - - - Auto - Automaticky - - - Dark - Tmavý - - - - PersonalizationThemeWidget - - Light - Světlý - General - /personalization/General - - - Dark - Tmavý - General - /personalization/General - - - Auto - Automaticky - General - /personalization/General - - - Default - Výchozí - - - - PersonalizationWorker - - Custom - Uživatelsky určené - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN kód pro spojení s Bluetooth zařízením je: - - - Cancel - Zrušit - - - Confirm - Potvrdit - - - - PowerModule - - Power - Napájení - - - Battery low, please plug in - Akumulátor je téměř vybitý – připojte počítač k napájení z elektrické sítě - - - Battery critically low - Akumulátor téměř vybitý - - - - PrivacyModule - - Privacy and Security - Ochrana osobních údajů a zabezpečení - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - Složky uživatele - - - Calendar - Kalendář - - - Screen Capture - Záznam obrazovky - - - - QObject - - Control Center - Ovládací panely - - - , - , - - - Error occurred when reading the configuration files of password rules! - Při načítání souborů s nastaveními pravidel pro heslo došlo k chybě! - - - Auto adjust CPU operating frequency based on CPU load condition - Automaticky upravovat operační frekvenci procesoru v závislosti na jeho vytížení - - - Aggressively adjust CPU operating frequency based on CPU load condition - Agresivně upravovat operační frekvenci procesoru v závislosti na jeho vytížení - - - Be good to imporving performance, but power consumption and heat generation will increase - Zlepší výkon, ale zvýší se spotřeba energie a vytváření tepla - - - CPU always works under low frequency, will reduce power consumption - Procesor vždy funguje na nízké frekvenci – sníží spotřebu energie - - - Activated - Aktivováno - - - View - Pohled - - - To be activated - K zapnutí - - - Activate - Zapnout - - - Expired - Platnost skončila - - - In trial period - Ve zkušebním období - - - Trial expired - Zkušební období skončilo - - - Touch Screen Settings - Nastavení dotykové obrazovky - - - The settings of touch screen changed - Nastavení dotykové obrazovky změněna - - - Checking system versions, please wait... - Zjišťování verze systému – čekejte prosím… - - - Leave - Opustit - - - Cancel - Zrušit - - - - RegionModule - - Region and format - Oblast a formáty - - - Country or Region - Oblast - - - Format - Formát - - - Provide localized services based on your region. - Poskytuje lokalizované služby podle toho, kde se nacházíte. - - - Select matching date and time formats based on language and region - Vyberte odpovídající formáty data a času dle jazyka a oblasti - - - Region format - Jazyk a oblast - - - First day of week - První den týdne - - - Short date - Krátký formát data - - - Long date - Dlouhý formát data - - - Short time - Krátký formát času - - - Long time - Dlouhý formát času - - - Currency symbol - Symbol měny - - - Numbers - Čísla - - - Paper - Papír - - - Custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Vámi používaný systém není aktivován – proveďte to prosím - - - Update successful - Aktualizace úspěšná - - - Failed to update - Nepodařilo se aktualizovat - - - - SearchInput - - Search - Hledat - - - - ServiceSettingsModule - - Apps can access your camera: - Aplikace mohou přistupovat k fotoaparátu: - - - Apps can access your microphone: - Aplikace mohou přistupovat k mikrofonu: - - - Apps can access user folders: - Aplikace mohou přistupovat ke složkám: - - - Apps can access Calendar: - Aplikace mohou přistupovat ke kalendáři: - - - Apps can access Screen Capture: - Aplikace mohou přistupovat k záznamu obrazovky: - - - No apps requested access to the camera - Žádné aplikace nevyžadují přístup k fotoaparátu - - - No apps requested access to the microphone - Žádné aplikace nevyžadují přístup k mikrofonu - - - No apps requested access to user folders - Žádné aplikace nevyžadují přístup ke složkám - - - No apps requested access to Calendar - Žádné aplikace nevyžadují přístup ke kalendáři - - - No apps requested access to Screen Capture - Žádné aplikace nevyžadují přístup k záznamu obrazovky - - - - SoundEffectsPage - - Sound Effects - Zvukové efekty - - - - SoundModel - - Boot up - Spouštění operačního systému - - - Shut down - Vypnout - - - Log out - Odhlásit se - - - Wake up - Probouzení - - - Volume +/- - Hlasitost +/- - - - Notification - Upozornění - - - Low battery - Nízký stav nabití akumulátoru - - - Send icon in Launcher to Desktop - Odeslání ikony ve spouštěči na plochu - - - Empty Trash - Vyprázdnění koše - - - Plug in - Připojení napájení z elektrické sítě - - - Plug out - Odpojení napájení z elektrické sítě - - - Removable device connected - Připojení vyjímatelného zařízení - - - Removable device removed - Odebrání vyjímatelného zařízení - - - Error - Chyba - - - - SoundModule - - Sound - Zvuk - - - - SoundPlugin - - Output - Výstup - - - Auto pause - Automatické pozastavení - - - Whether the audio will be automatically paused when the current audio device is unplugged - Zda má být zvuk automaticky pozastavován při odpojení stávajícího zvukového zařízení - - - Input - Vstup - - - Sound Effects - Zvukové efekty - - - Devices - Zařízení - - - Input Devices - Vstupní zařízení - - - Output Devices - Výstupní zařízení - - - - SpeakerPage - - Output Device - Výstupní zařízení - - - Mode - Režim - - - Output Volume - Výstupní hlasitost - - - Volume Boost - Zesílení hlasitosti - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Při nastavení hlasitosti na více než 100 % (softwarově), může být zvuk zkreslený a dojít k poškození reproduktorů - - - Left/Right Balance - Vyvážení vlevo/vpravo - - - Left - Vlevo - - - Right - Vpravo - - - - TimeSettingModule - - Time Settings - Nastavení času - - - Time - Čas - - - Auto Sync - Automatická synchronizace - - - Reset - Obnovit - - - Save - Uložit - - - Server - Server - - - Address - Adresa - - - Required - Vyžadováno - - - Customize - Přizpůsobit - - - Year - Rok - - - Month - Měsíc - - - Day - Den - - - - TimeZoneChooser - - Cancel - Zrušit - - - Confirm - Potvrdit - - - Add Timezone - Přidat časové pásmo - - - Add - Přidat - - - Change Timezone - Změnit časové pásmo - - - - TimeoutDialog - - Save the display settings? - Uložit nastavení obrazovky? - - - Settings will be reverted in %1s. - Nastavení bude vráceno za %1s. - - - Revert - Vrátit - - - Save - Uložit - - - - TimezoneItem - - Tomorrow - Zítra - - - Yesterday - Včera - - - Today - Dnes - - - %1 hours earlier than local - %1 hodin dříve než místní - - - %1 hours later than local - %1 hodin později než místní - - - - TimezoneModule - - Timezone List - Seznam časových pásem - - - System Timezone - Časové pásmo systému - - - Add Timezone - Přidat časové pásmo - - - - TreeCombox - - Collaboration Settings - Nastavení spolupráce - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Uživatelský účet není propojen s Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Pokud chcete resetovat hesla, je třeba se nejprve ověřit svým Union ID. Klepnutím na „Přejít na odkaz“ dokončete nastavení. - - - Cancel - Zrušit - - - Go to Link - Přejít na odkaz - - - - UnknownUpdateItem - - Release date: - Datum vydání: - - - - UpdateCtrlWidget - - Check Again - Zkontrolovat znovu - - - Update failed: insufficient disk space - Aktualizace se nezdařila: nedostatek místa na úložišti - - - Dependency error, failed to detect the updates - Chyba v závislosti na dalších balíčcích – aktualizace se nepodařilo zjistit - - - Restart the computer to use the system and the applications properly - Pro správné fungování systému a aplikací po provedení aktualizace počítač restartujte - - - Network disconnected, please retry after connected - Síť je odpojena – až opět bude dostupná, zkuste to znovu - - - Your system is not authorized, please activate first - Vámi používaný systém není aktivován – proveďte to prosím - - - This update may take a long time, please do not shut down or reboot during the process - Tato aktualizace může trvat delší dobu. Počítač, prosím, v průběhu toho nevypínejte ani nerestartujte. - - - Updates Available - Jsou k dispozici aktualizace - - - Current Edition - Stávající vydání - - - Updating... - Aktualizuje se… - - - Update All - Zaktualizovat vše - - - Last checking time: - Naposledy zkontrolováno: - - - Your system is up to date - Váš systém je aktuální - - - Check for Updates - Zkontrolovat aktualizace - - - Checking for updates, please wait... - Zjišťování aktualizací – čekejte, prosím… - - - The newest system installed, restart to take effect - Nainstalována nejnovější verze systému – nyní je třeba počítač restartovat - - - %1% downloaded (Click to pause) - %1% staženo (pozastavíte klepnutím) - - - %1% downloaded (Click to continue) - %1% staženo (pokud chcete pokračovat, klepněte) - - - Your battery is lower than 50%, please plug in to continue - Úroveň nabití akumulátoru je nižší než 50% – pro pokračování připojte k napájení z elektrické sítě - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Před restartem nabijte akumulátor počítače a v průběhu restartu ho nevypínejte ani neodpojujte od napájení z elektrické sítě - - - Size - Velikost - - - - UpdateModule - - Updates - Aktualizace - - - - UpdatePlugin - - Check for Updates - Zkontrolovat aktualizace - - - - UpdateSettingItem - - Insufficient disk space - Nedostatek místa na disku - - - Update failed: insufficient disk space - Aktualizace se nezdařila: nedostatek místa na úložišti - - - Update failed - Aktualizace se nezdařila - - - Network error - Síťová chyba - - - Network error, please check and try again - Chyba sítě – prosím zkontrolujte a zkuste to znovu. - - - Packages error - Chyby balíčků - - - Packages error, please try again - Chyby balíčků – zkuste to znovu - - - Dependency error - Chyba v závislostech - - - Unmet dependencies - Nesplněné závislosti - - - The newest system installed, restart to take effect - Nainstalována nejnovější verze systému – nyní je třeba počítač restartovat - - - Waiting - Čeká se - - - Backing up - Zálohuje se - - - System backup failed - Systém se nepodařilo zazálohovat - - - Release date: - Datum vydání: - - - Server - Server - - - Desktop - Pracovní plocha - - - Version - Verze - - - - UpdateSettingsModule - - Update Settings - Nastavení aktualizací - - - System - Systémové - - - Security Updates Only - Pouze aktualizace zabezpečení - - - Switch it on to only update security vulnerabilities and compatibility issues - Zapněte, pokud chcete instalovat pouze aktualizace týkající se oprav zranitelností v zabezpečení a kompatibility - - - Third-party Repositories - Repozitáře třetích stran - - - linglong update - linglong aktualizace - - - Linglong Package Update - Aktualizace Linglong balíčku - - - If there is update for linglong package, system will update it for you - Pokud existuje aktualizace pro linglong balíček, systém ho pro vás zaktualizuje - - - Other settings - Ostatní nastavení - - - Auto Check for Updates - Automaticky kontrolovat aktualizace - - - Auto Download Updates - Automaticky stahovat aktualizace - - - Switch it on to automatically download the updates in wireless or wired network - Zapněte, pokud chcete, aby aktualizace byly na drátových a Wi-Fi sítích stahovány automaticky - - - Auto Install Updates - Automaticky instalovat aktualizace - - - Updates Notification - Upozornění na aktualizace - - - Clear Package Cache - Vyčistit vyrovnávací paměť balíčků - - - Updates from Internal Testing Sources - Aktualizace z vývojářských testovacích zdrojů - - - internal update - Interní testování - - - Join the internal testing channel to get deepin latest updates - Připojte se ke vnitřnímu zkušebnímu kanálu a získejte nejnovější aktualizace Deepinu - - - System Updates - Aktualizace systému - - - Security Updates - Aktualizace zabezpečení - - - Install updates automatically when the download is complete - Po dokončení stahování aktualizací je automaticky nainstalovat - - - Install "%1" automatically when the download is complete - Po dokončení stahování „%1“ automaticky nainstalovat - - - - UpdateWidget - - Current Edition - Stávající vydání - - - - UpdateWorker - - System Updates - Aktualizace systému - - - Fixed some known bugs and security vulnerabilities - Opraveny některé známé chyby a zranitelnosti zabezpečení - - - Security Updates - Aktualizace zabezpečení - - - Third-party Repositories - Repozitáře třetích stran - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Nyní nemusí být bezpečné (fungování systému) opustit vývojářský testovací kanál nyní – chcete ho opustit nyní? - - - Your are safe to leave the internal testing channel - Můžete bezpečně opustit interní testovací kanál - - - Cannot find machineid - Nedaří se nalézt machineid - - - Cannot Uninstall package - Nedaří se odinstalovat balíček - - - Error when exit testingChannel - Chyba při opouštění testovacího kanálu - - - try to manually uninstall package - pokuste se odinstalovat balíček ručně - - - Cannot install package - Nedaří se nainstalovat balíček - - - - UseBatteryModule - - On Battery - Z akumulátoru - - - Never - Nikdy - - - Shut down - Vypnout - - - Suspend - Uspat do paměti - - - Hibernate - Uspat na disk - - - Turn off the monitor - Vypnout monitor - - - Do nothing - Nedělat nic - - - 1 Minute - 1 minuta - - - %1 Minutes - %1 minut - - - 1 Hour - 1 hodina - - - Screen and Suspend - Obrazovka a uspání - - - Turn off the monitor after - Vypnout monitor po - - - Lock screen after - Uzamknout obrazovku po - - - Computer suspends after - Počítač bude uspán po - - - Computer will suspend after - Počítač bude uspán po - - - When the lid is closed - Při přiklopení víka obrazovky - - - When the power button is pressed - Při stisknutí tlačítka napájení - - - Low Battery - Nízký stav nabití akumulátoru - - - Low battery notification - Upozornění na nízkou úroveň nabití akumulátoru - - - Low battery level - Nízký stav nabití akumulátoru - - - Auto suspend battery level - Úroveň nabití akumulátoru, na kterou když poklesne, uspat - - - Battery Management - Správa akumulátoru - - - Display remaining using and charging time - Zobrazovat čas chodu a čas zbývající do nabití - - - Maximum capacity - Nejvyšší kapacita - - - Show the shutdown Interface - Zobrazit rozhraní vypnutí - - - - UseElectricModule - - Plugged In - Napájení z elektrické sítě - - - 1 Minute - 1 minuta - - - %1 Minutes - %1 minut - - - 1 Hour - 1 hodina - - - Never - Nikdy - - - Screen and Suspend - Obrazovka a uspání - - - Turn off the monitor after - Vypnout monitor po - - - Lock screen after - Uzamknout obrazovku po - - - Computer suspends after - Počítač bude uspán po - - - When the lid is closed - Při přiklopení víka obrazovky - - - When the power button is pressed - Při stisknutí tlačítka napájení - - - Shut down - Vypnout - - - Suspend - Uspat do paměti - - - Hibernate - Uspat na disk - - - Turn off the monitor - Vypnout monitor - - - Show the shutdown Interface - Zobrazit rozhraní vypnutí - - - Do nothing - Nedělat nic - - - - WacomModule - - Drawing Tablet - Grafický tablet - - - Mode - Režim - - - Pressure Sensitivity - Citlivost na přítlak - - - Pen - Pero - - - Mouse - Myš - - - Light - Světlý - - - Heavy - Těžká - - - - main - - Control Center provides the options for system settings. - Ovládací panely poskytují volby pro nastavení systému. - - - - updateControlPanel - - Downloading - Stahuje se - - - Waiting - Čeká se - - - Installing - Instaluje se - - - Backing up - Zálohuje se - - - Download and install - Stáhnout a nainstalovat - - - Learn more - Zjistit více - - - diff --git a/dcc-old/translations/dde-control-center_da.ts b/dcc-old/translations/dde-control-center_da.ts deleted file mode 100644 index a356cead23..0000000000 --- a/dcc-old/translations/dde-control-center_da.ts +++ /dev/null @@ -1,3982 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Lad andre Bluetooth-enheder finde denne enhed - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Aktivér Bluetooth for at finde enheder i nærheden (højttalere, tastatur, mus) - - - My Devices - Min Enhed - - - Other Devices - Andre Enheder - - - Show Bluetooth devices without names - Vis Bluetooth-enheder uden navne - - - Connect - Opret forbindelse - - - Disconnect - Afbryd - - - Rename - Omdøb - - - Send Files - Send Filer - - - Ignore this device - Ignorér denne enhed - - - Connecting - Forbinder - - - Disconnecting - Frakobler - - - - AddButtonWidget - - Add Application - Tilføj Applikation - - - Open Desktop file - Åbn Skrivebordsfil - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - Indmeld Ansigt - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Sørg for at alle dele af dit ansigt ikke er tildækkede af objekter og er tydeligt synlige. Dit ansigt burde lige så vel være godt belyst. - - - Cancel - Annuller - - - Next - Næste - - - Face enrolled - Ansigt indmeldt - - - Use your face to unlock the device and make settings later - Brug dit ansigt til, at låse enheden op og foretage indstillinger senere - - - Done - Færdig - - - Failed to enroll your face - Indmelding af dit ansigt mislykkedes - - - Try Again - Prøv Igen - - - Close - Luk - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - Indmeld Iris - - - Cancel - Annuller - - - Next - Næste - - - Iris enrolled - Iris indmeldt - - - Done - Færdig - - - Failed to enroll your iris - Indmelding af din iris mislykkedes - - - Try Again - Prøv Igen - - - - AuthenticationInfoItem - - No more than 15 characters - Ikke flere end 15 tegn - - - Use letters, numbers and underscores only, and no more than 15 characters - Brug kun bogstaver, tal og bundstreger, og ikke flere end 15 tegn - - - Use letters, numbers and underscores only - Brug kun bogstaver, tal og bundstreger - - - - AuthenticationModule - - Biometric Authentication - Biometrisk Godkendelse - - - - AuthenticationPlugin - - Fingerprint - Fingeraftryk - - - Face - Ansigt - - - Iris - Iris - - - - BluetoothDeviceModel - - Connected - Tilsluttet - - - Not connected - Ikke forbundet - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Fingeraftryk1 - - - Fingerprint2 - Fingeraftryk2 - - - Fingerprint3 - Fingeraftryk3 - - - Fingerprint4 - Fingeraftryk4 - - - Fingerprint5 - Fingeraftryk5 - - - Fingerprint6 - Fingeraftryk6 - - - Fingerprint7 - Fingeraftryk7 - - - Fingerprint8 - Fingeraftryk8 - - - Fingerprint9 - Fingeraftryk9 - - - Fingerprint10 - Fingeraftryk10 - - - Scan failed - Skanning mislykkedes - - - The fingerprint already exists - Fingeraftrykket eksisterer allerede - - - Please scan other fingers - Skan venligst andre fingre - - - Unknown error - Ukendt fejl - - - Scan suspended - Skanning suspenderet - - - Cannot recognize - Kan ikke genkende - - - Moved too fast - Flyttet for hurtigt - - - Finger moved too fast, please do not lift until prompted - Fingeren bevægede sig for hurtigt, løft venligst ikke fingeren før du får besked om det - - - Unclear fingerprint - Uklart fingeraftryk - - - Clean your finger or adjust the finger position, and try again - Rens din finger og juster fingerens placering og prøv igen - - - Already scanned - Allerede skannet - - - Adjust the finger position to scan your fingerprint fully - Juster din fingers placering og skal hele dit fingeraftryk - - - Finger moved too fast. Please do not lift until prompted - Fingeren bevægede sig for hurtigt. Løft venligst ikke fingeren før du får besked om det - - - Lift your finger and place it on the sensor again - Løft din finger og placér den igen på sensoren - - - Position your face inside the frame - Placér dit ansigt inden for rammen - - - Face enrolled - Ansigt indmeldt - - - Position a human face please - Placér venligst et menneskeansigt - - - Keep away from the camera - Hold dig væk fra kameraet - - - Get closer to the camera - Kom tættere på kameraet - - - Do not position multiple faces inside the frame - Placér ikke flere ansigter inden for rammen - - - Make sure the camera lens is clean - Sørg for at kameralinsen er ren - - - Do not enroll in dark, bright or backlit environments - Indmeld ikke i mørke, strålende, eller bagbelyste miljøer - - - Keep your face uncovered - Hold dit ansigt utildækket - - - Scan timed out - Tidsudløb for skanning - - - Device crashed, please scan again! - Enhed brudt sammen, skan venligst igen! - - - Cancel - Annuller - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Annuller - - - Confirm - button - Bekræft - - - - dccV23::AccountSpinBox - - Always - Altid - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Brugernavn - - - Change Password - Skift adgangskode - - - Delete User - - - - User Type - - - - Auto Login - Automatisk Login - - - Login Without Password - Login Uden Adgangskode - - - Validity Days - Dage for Gyldighed - - - Group - Gruppe - - - The full name is too long - Det fulde navn er for langt - - - Standard User - Standardbruger - - - Administrator - Administrator - - - Reset Password - Nulstil Adgangskode - - - The full name has been used by other user accounts - Det fulde navn er blevet brugt af andre brugerkonti - - - Full Name - Fulde Navn - - - Go to Settings - Gå til Indstillinger - - - Cancel - Annuller - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - "Automatisk Login" kan kun aktiveres for én konto, deaktivér det venligst først for kontoen "%1" - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Din vært forlod domæneserveren - - - Your host joins the domain server successfully - Din vært deltager i domæneserveren - - - Your host failed to leave the domain server - Din vært kunne ikke forlade domæneserveren - - - Your host failed to join the domain server - Din værk kunne ikke deltage i domæneserveren - - - AD domain settings - AD-domæneindstillinger - - - Password not match - Adgangskode passer ikke - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Vis notifikationer fra %1 på skrivebord og i notifikationscenteret. - - - Play a sound - Afspil en lyd - - - Show messages on lockscreen - Vis meddelelser på låseskærm - - - Show in notification center - Vis i notifikationscenter - - - Show message preview - Forhåndsvis meddelelse - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Annuller - - - Save - Gem - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Billeder - - - - dccV23::BootWidget - - Updating... - Opdaterer... - - - Startup Delay - Opstartsforsinkelse - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Klik på valgmuligheden i opstartsmenuen, for at indstille den som den første opstart, og træk og slip et billede, for at ændre baggrunden - - - Click the option in boot menu to set it as the first boot - Klik på valgmuligheden i opstartsmenuen, for at indstille den som den første opstart - - - Switch theme on to view it in boot menu - Slå tema til, for at vise den i opstartsmenu - - - GRUB Authentication - GRUB-Godkendelse - - - GRUB password is required to edit its configuration - GRUB-adgangskode kræves, for at redigere dens konfiguration - - - Change Password - Skift adgangskode - - - Boot Menu - Opstartsmenu - - - Change GRUB password - Skift GRUB-adgangskode - - - Username: - Brugernavn: - - - root - rod - - - New password: - Ny adgangskode: - - - Repeat password: - Gentag adgangskode: - - - Required - Påkrævet - - - Cancel - button - Annuller - - - Confirm - button - Bekræft - - - Password cannot be empty - Adgangskoden må ikke være tom - - - Passwords do not match - Adgangskoderne er ikke ens - - - - dccV23::BrightnessWidget - - Brightness - Lysstyrke - - - Color Temperature - Farvetemperatur - - - Auto Brightness - Automatisk Lysstyrke - - - Night Shift - Natteskift - - - The screen hue will be auto adjusted according to your location - Skærmens farvetone vil automatisk blive justeret efter din placering - - - Change Color Temperature - Skift Farvetemperatur - - - Cool - Kølig - - - Warm - Varm - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Mine Enheder - - - Other Devices - Andre Enheder - - - - dccV23::CommonInfoPlugin - - General Settings - Generelle Indstillinger - - - Boot Menu - Opstartsmenu - - - Developer Mode - Udviklertilstand - - - User Experience Program - Brugeroplevelsesprogram - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Acceptér og deltag i Brugeroplevelsesprogram - - - The Disclaimer of Developer Mode - Udviklertilstands Ansvarsfraskrivelse - - - Agree and Request Root Access - Acceptér og Anmod om Rod-Adgang - - - Failed to get root access - Mislykkedes at få rod-adgang - - - Please sign in to your Union ID first - Log venligst først ind på dit Union-ID - - - Cannot read your PC information - Kan ikke læse dine PC-oplysninger - - - No network connection - Ingen netværksforbindelse - - - Certificate loading failed, unable to get root access - Indlæsning af certifikat mislykkedes, ude af stand til at få rod-adgang - - - Signature verification failed, unable to get root access - Signaturbekræftelse mislykkedes, ude af stand til at få rod-adgang - - - - dccV23::CreateAccountPage - - Group - Gruppe - - - Cancel - Annuller - - - Create - Opret - - - New User - - - - User Type - - - - Username - Brugernavn - - - Full Name - Fulde Navn - - - Password - Adgangskode - - - Repeat Password - Gentag adgangskode - - - Password Hint - Adgangskodehjælp - - - The full name is too long - Det fulde navn er for langt - - - Passwords do not match - Adgangskoderne er ikke ens - - - Standard User - Standardbruger - - - Administrator - Administrator - - - Customized - Tilpasset - - - Required - Påkrævet - - - optional - valgfrit - - - The hint is visible to all users. Do not include the password here. - Hjælpen er synlig for alle brugere. Inkludér ikke adgangskoden her. - - - Policykit authentication failed - Policykit-godkendelse mislykkedes - - - Username must be between 3 and 32 characters - Brugernavnet skal være mellem 3-32 tegn langt - - - The first character must be a letter or number - Det første tegn skal være et bogstav eller et tal - - - Your username should not only have numbers - Dit brugernavn bør ikke kun have tal - - - The username has been used by other user accounts - Det brugernavn er blevet brugt af andre brugerkonti - - - The full name has been used by other user accounts - Det fulde navn er blevet brugt af andre brugerkonti - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Billeder - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Tilføj brugerdefineret genvej - - - Name - Navn - - - Required - Påkrævet - - - Command - Kommando - - - Cancel - Annuller - - - Add - Tilføj - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Genvejen er i konflikt med %1. Klik på Tilføj, for at bruge genvejen med det samme - - - - dccV23::CustomEdit - - Required - Påkrævet - - - Cancel - Annuller - - - Save - Gem - - - Shortcut - Genvej - - - Name - Navn - - - Command - Kommando - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Genvejen er i konflikt med %1. Klik på Tilføj, for at bruge genvejen med det samme - - - - dccV23::CustomItem - - Shortcut - Genvej - - - Please enter a shortcut - Indtast venligst en genvej - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - For flere detaljer, besøg: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Anmod om Rod-Adgang - - - Online - På Nettet - - - Offline - Ikke På Nettet - - - Please sign in to your Union ID first and continue - Log venligst først ind på dit Union-ID og fortsæt - - - Next - Næste - - - Export PC Info - Eksportér PC-info - - - Import Certificate - Importér certifikat - - - 1. Export your PC information - 1. Eksportér dine PC-oplysninger - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Gå til https://www.chinauos.com/developMode for at hente et certifikat, som ikke kræver internetforbindelse - - - 3. Import the certificate - 3. Importér certifikatet - - - - dccV23::DeveloperModeWidget - - Request Root Access - Anmod om Rod-Adgang - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Udviklertilstand gør dig i stand til at få rod-privilegier, installere og køre usignerede apps, som ikke vises i app butik, men din systemintegritet kan også tage skade; brug den venligst forsigtigt. - - - The feature is not available at present, please activate your system first - Funktionen er ikke tilgængelig i øjeblikket, aktivér venligst først dit system - - - Failed to get root access - Mislykkedes at få rod-adgang - - - Please sign in to your Union ID first - Log venligst først ind på dit Union-ID - - - Cannot read your PC information - Kan ikke læse dine PC-oplysninger - - - No network connection - Ingen netværksforbindelse - - - Certificate loading failed, unable to get root access - Indlæsning af certifikat mislykkedes, ude af stand til at få rod-adgang - - - Signature verification failed, unable to get root access - Signaturbekræftelse mislykkedes, ude af stand til at få rod-adgang - - - To make some features effective, a restart is required. Restart now? - For at effektuere visse funktioner, kræves en genstart. Genstart nu? - - - Cancel - Annuller - - - Restart Now - Genstart Nu - - - Root Access Allowed - Rod-Adgang Tilladt - - - - dccV23::DisplayPlugin - - Display - Skærm - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Test af dobbeltklik - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Gentagelsesforsinkelse - - - Short - Kort - - - Long - Lang - - - Repeat Rate - Gentagelseshastighed - - - Slow - Langsom - - - Fast - Hurtig - - - Test here - Test her - - - Numeric Keypad - Numerisk tastatur - - - Caps Lock Prompt - Caps Lock-prompt - - - - dccV23::GeneralSettingWidget - - Left Hand - Venstrehåndet - - - Disable touchpad while typing - Deaktivér touchpad mens der skrives - - - Scrolling Speed - Rullehastighed - - - Double-click Speed - Hastighed for dobbeltklik - - - Slow - Langsom - - - Fast - Hurtig - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Tastaturlayout - - - Edit - Rediger - - - Add Keyboard Layout - Tilføj tastaturlayout - - - Done - Færdig - - - - dccV23::KeyboardLayoutDialog - - Cancel - Annuller - - - Add - Tilføj - - - Add Keyboard Layout - Tilføj tastaturlayout - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tastatur og sprog - - - Keyboard - Tastatur - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Tastaturlayout - - - Language - Sprog - - - Shortcuts - Genveje - - - - dccV23::MainWindow - - Help - Hjælp - - - - dccV23::ModifyPasswdPage - - Change Password - Skift adgangskode - - - Reset Password - Nulstil Adgangskode - - - Resetting the password will clear the data stored in the keyring. - Nulstilling af adgangskoden vil rydde dataene i nøgleringen. - - - Current Password - Nuværende adgangskode - - - Forgot password? - Glemt adgangskode? - - - New Password - Ny adgangskode - - - Repeat Password - Gentag adgangskode - - - Password Hint - Adgangskodehjælp - - - Cancel - Annuller - - - Save - Gem - - - Passwords do not match - Adgangskoderne er ikke ens - - - Required - Påkrævet - - - Optional - Valgfri - - - Password cannot be empty - Adgangskoden må ikke være tom - - - The hint is visible to all users. Do not include the password here. - Hjælpen er synlig for alle brugere. Inkludér ikke adgangskoden her. - - - Wrong password - Forkert password - - - New password should differ from the current one - Ny adgangskode bør afvige fra den nuværende - - - System error - Systemfejl - - - Network error - Netværksfejl - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Saml Vinduer - - - Screen rearrangement will take effect in %1s after changes - Skærmomrokering vil træde i kraft om %1s efter ændring - - - - dccV23::MousePlugin - - Mouse - Mus - - - General - Generelt - - - Touchpad - Touchpad - - - TrackPoint - Trackpoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Markørhastighed - - - Mouse Acceleration - Museacceleration - - - Disable touchpad when a mouse is connected - Deaktivér touchpad når der tilsluttes en mus - - - Natural Scrolling - Naturlig rulning - - - Slow - Langsom - - - Fast - Hurtig - - - - dccV23::MultiScreenWidget - - Multiple Displays - Flere skærme - /display/Multiple Displays - - - Mode - Tilstand - /display/Mode - - - Main Screen - Hovedskærm - /display/Main Scree - - - Duplicate - Duplikér - - - Extend - Udvid - - - Only on %1 - Kun på %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Underretning - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Registrering af håndflade - - - Minimum Contact Surface - Minimum kontaktområde - - - Minimum Pressure Value - Minimum trykværdi - - - Disable the option if touchpad doesn't work after enabled - Deaktivér valgmuligheden hvis touchpaden ikke virker efter aktivering - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Privatlivspolitik - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Vi er dybt bevidste om dine personlige oplysningers vigtighed for dig. Så vi har Privatlivspolitikken, som dækker hvordan vi indsamler, bruger, deler, overfører, offentliggør og opbevarer dine oplysninger.</p><p>Du kan <a href="%1">klikke her</a> for at vise vores seneste privatlivspolitik og/eller vise den på nettet, ved at besøge <a href="%1"> %1</a>. Læs venligst nøje og forstå fuldt ud vores praksisser omkring kunders privatliv. Hvis du har nogen spørgsmål, så kontakt os venligst på: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Adgangskoden må ikke være tom - - - Password must have at least %1 characters - Adgangskode skal mindst have %1 tegn - - - Password must be no more than %1 characters - Adgangskoden må højst være %1 tegn langt - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Adgangskode må kun indeholde engelske bogstaver (forskel på store og små bogstaver), tal, eller specialtegn (æÆøØåÅ~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Venligst ikke flere end %1 palindrome tegn - - - No more than %1 monotonic characters please - Venligst ikke flere end %1 monotone tegn - - - No more than %1 repeating characters please - Venligst ikke flere end %1 gentagne tegn - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Adgangskode skal indeholde store bogstaver, små bogstaver, tal, og symboler (æÆøØåÅ~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Adgangskode må ikke indeholde flere end 4 palindrome tegn - - - Do not use common words and combinations as password - Anvend ikke almindelige ord og kompinationer som adgangskode - - - Create a strong password please - Opret venligst en stærk adgangskode - - - It does not meet password rules - Den lever ikke op til adgangskodekravene - - - - dccV23::RefreshRateWidget - - Refresh Rate - Billedfrekvens - - - Hz - Hz - - - Recommended - Anbefalet - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Er du sikker på, at du vil slette kontoen? - - - Delete account directory - Slet kontomappe - - - Cancel - Annuller - - - Delete - Slet - - - - dccV23::ResolutionWidget - - Resolution - Opløsning - /display/Resolution - - - Resize Desktop - Ændr Skrivebords Størrelse - /display/Resize Desktop - - - Default - Standard - - - Fit - Tilpas - - - Stretch - Stræk - - - Center - Centrér - - - Recommended - Anbefalet - - - - dccV23::RotateWidget - - Rotation - Rotation - /display/Rotation - - - Standard - Standard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Skærmen understøtter kun 100% skærmskalering - - - Display Scaling - Skærmskalering - - - - dccV23::SearchInput - - Search - Søg - - - - dccV23::SecondaryScreenDialog - - Brightness - Lysstyrke - - - - dccV23::SecurityLevelItem - - Weak - Svag - - - Medium - Medium - - - Strong - Stærk - - - - dccV23::SecurityQuestionsPage - - Security Questions - Sikkerhedsspørgsmål - - - These questions will be used to help reset your password in case you forget it. - Disse spørgsmål vil blive brugt til, at hjælpe med, at nulstille din adgangskode, hvis du glemmer den. - - - Security question 1 - Sikkerhedsspørgsmål 1 - - - Security question 2 - Sikkerhedsspørgsmål 2 - - - Security question 3 - Sikkerhedsspørgsmål 3 - - - Cancel - Annuller - - - Confirm - Bekræft - - - Keep the answer under 30 characters - Hold svaret på under 30 tegn - - - Do not choose a duplicate question please - Vælg venligst ikke et duplikatspørgsmål - - - Please select a question - Vælg venligst et spørgsmål - - - What's the name of the city where you were born? - Hvad er navnet på den by hvor du er født? - - - What's the name of the first school you attended? - Hvad er navnet på den første skole, du gik på? - - - Who do you love the most in this world? - Hvem elsker du mest i denne verden? - - - What's your favorite animal? - Hvilket er dit yndlingsdyr? - - - What's your favorite song? - Hvilken er din yndlingssang? - - - What's your nickname? - Hvad er dit kælenavn? - - - It cannot be empty - Det må ikke være tomt - - - - dccV23::SettingsHead - - Edit - Rediger - - - Done - Færdig - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - Vindue - - - Workspace - Arbejdsområde - - - Assistive Tools - Assisterende værktøjer - - - Custom Shortcut - Brugerdefineret genvej - - - Restore Defaults - Gendan standarder - - - Shortcut - Genvej - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Nulstil venligst genvej - - - Cancel - Annuller - - - Replace - Erstat - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Genvejen er i konflikt med %1. Klik på Erstat, for at bruge genvejen med det samme - - - - dccV23::ShortcutItem - - Enter a new shortcut - Indtast en ny genvej - - - - dccV23::SystemInfoModel - - available - tilgængelig - - - - dccV23::SystemInfoModule - - About This PC - Om denne computer - - - Computer Name - Computernavn - - - systemInfo - - - - OS Name - OS-Navn - - - Version - Version - - - Edition - Udgave - - - Type - Type - - - Authorization - Autentifikation - - - Processor - Processor - - - Memory - Hukommelse - - - Graphics Platform - - - - Kernel - Kerne - - - Agreements and Privacy Policy - - - - Edition License - Udgavelicens - - - End User License Agreement - Slutbruger-licensaftale - - - Privacy Policy - Privatlivspolitik - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Systeminfo - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Annuller - - - Add - Tilføj - - - Add System Language - Tilføj systemsprog - - - - dccV23::SystemLanguageWidget - - Edit - Rediger - - - Language List - Sprogliste - - - Add Language - - - - Done - Færdig - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Forstyr Ikke - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - App-notifikationer vil ikke blive vist på skrivebord og de vil blive gjort lydløse, men du kan vise alle meddelelser i notifikationscenteret. - - - When the screen is locked - Når skærmen er låst - - - - dccV23::TimeSlotItem - - From - Fra - - - To - Til - - - - dccV23::TouchScreenModule - - Touch Screen - Berøringsfølsom Skærm - - - Select your touch screen when connected or set it here. - Vælg din berøringsfølsomme skærm, når forbundet, eller indstil den her. - - - Confirm - Bekræft - - - Cancel - Afbryd - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Markørhastighed - - - Slow - Langsom - - - Fast - Hurtig - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Deltag i vores brugeroplevelsesprogram - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>At deltage i Brugeroplevelsesprogram betyder at du tillader og bemyndiger os til at indsamle og bruge oplysningerne om din enhed, system og applikationer. Hvis du nægter vores indsamling af de førnævnte oplysninger, så deltag ikke i Brugeroplevelsesprogram. For detaljer, vær venligst henvist til Deepin Privatlivspolitik (<a href="%1">%1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - År - - - Month - Måned - - - Day - Dag - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Der kræves autentifikation for at ændre NTP-server - - - - DefAppModule - - Default Applications - Standardapplikationer - - - - DefAppPlugin - - Webpage - Netside - - - Mail - E-post - - - Text - Tekst - - - Music - Musik - - - Video - Video - - - Picture - Billede - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Ansvarsfraskrivelse - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Før brug af ansigtsgenkendelse, bemærk venligst at: -1. Din enhed kan låses op af folk eller objekter, der ligner eller fremstår som dig. -2. Ansigtsgenkendelse er mindre sikkert end digitale adgangskoder og blandede adgangskoder. -3. Succesraten for oplåsning af din enhed gennem ansigtsgenkendelse vil være reduceret i et lavbelyst, højbelyst, bagbelyst, bredvidde-scenarie og andre scenarier. -4. Give venligst ikke vilkårligt din enhed til andre, for at undgå ondsindet brug af ansigtsgenkendelse. -5. Udover de ovenstående scenarier, bør du være opmærksom på andre situationer, som kan påvirke den normale brug af ansigtsgenkendelse. - -For bedre at kunne bruge ansigtsgenkendelse, vær venligst opmærksom på de følgende forhold, ved indførsel af ansigtsdataene: -1. Ophold dig venligst et godt belyst sted, undgå direkte sollys og at andre mennesker fremkommer på den optagede skærm. -2. Vær venligst opmærksom på ansigtets tilstand, ved indførsel af data, og lad ikke dine hatte, hår, solbriller, masker, tyk sminke og andre faktorer tildække dine ansigtstræk. -3. Undgå venligst at dreje eller sænke dit hoved, lukke dine øjne, eller kun vise den ene side af dit ansigt, og sørg for at dit ansigts forside fremstår tydeligt og fuldstændigt i promptfeltet. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - "Biometrisk godkendelse" er en funktion til bruger-identitetsgodkendelse stillet til rådighed af UnionTech Software Technology Co., Ltd. igennem "biometrisk godkendelse", de indsamlede biometriske data vil blive sammenlignet med dem, der er lagret på enheden, og bruger-identiteten vil blive bekræftet, baseret på resultatet af sammenligningen. -Bemærk venligst at UnionTech Software ikke vil indsamle eller tilgå dine biometriske oplysninger, som vil blive lagret på din lokale enhed. Aktivér venligst kun den biometriske godkendelse på din personlige enhed og brug dine egne biometriske oplysninger til relaterede opgaver, og deaktivér eller slet straks andre folks biometriske oplysninger på den enhed, ellers vil du bære risikoen, som opstår deraf. -UnionTech Software er forpligtet til at forske i og forbedre sikkerheden, nøjagtigheden og stabiliteten af biometrisk godkendelse. Men på grund af miljømæssige, udstyrsrelaterede, tekniske og andre faktorer og risikokontrol, er der ingen garanti for, at du vil bestå den biometriske godkendelse midlertidigt. Tag derfor ikke biometrisk godkendelse som den eneste måde at logge ind på UnionTech OS. Hvis du har nogen spørgsmål eller forslag ved brug af den biometrisk godkendelse, kan du give tilbagemelding via "Hjælp og Støtte" i UnionTech OS. - - - Cancel - Annuller - - - Next - Næste - - - - DisclaimersItem - - I have read and agree to the - Jeg har læst og er enig med - - - Disclaimer - Ansvarsfraskrivelse - - - - DockModuleObject - - Dock - Dok - - - Multiple Displays - Flere skærme - - - Show Dock - - - - Mode - Tilstand - - - Position - Position - - - Status - Status - - - Show recent apps in Dock - - - - Size - Størrelse - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Moderne tilstand - - - Efficient mode - Effektiv visning - - - Top - Øverst - - - Bottom - Nederst - - - Left - Venstre - - - Right - Højre - - - Location - Placering - - - Keep shown - - - - Keep hidden - Hold skjult - - - Smart hide - Smart skjuling - - - Small - Lille - - - Large - Stor - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - Indmeld Ansigt - - - Position your face inside the frame - Placér dit ansigt inden for rammen - - - - FaceWidget - - Edit - Rediger - - - Manage Faces - Administrér Ansigter - - - You can add up to 5 faces - Du kan tilføje op til 5 ansigter - - - Done - Færdig - - - Add Face - Tilføj Ansigt - - - The name already exists - Navnet eksisterer allerede - - - Faceprint - Ansigtsaftryk - - - - FaceidDetailWidget - - No supported devices found - Ingen understøttede enheder fundet - - - - FingerDetailWidget - - No supported devices found - Ingen understøttede enheder fundet - - - - FingerDisclaimer - - Add Fingerprint - Tilføj Fingeraftryk - - - Cancel - Annuller - - - Next - Næste - - - - FingerInfoWidget - - Place your finger - Sæt din finger - - - Place your finger firmly on the sensor until you're asked to lift it - Sæt din finger godt på sensoren indtil du bliver spurgt om at fjerne den - - - Scan the edges of your fingerprint - Skan kanterne af dit fingeraftryk - - - Place the edges of your fingerprint on the sensor - Sæt kanten af dit fingeraftryk på sensoren - - - Lift your finger - Løft din finger - - - Lift your finger and place it on the sensor again - Løft din finger og placér den igen på sensoren - - - Adjust the position to scan the edges of your fingerprint - Justér positionen, for at skanne kanten af dit fingeraftryk - - - Lift your finger and do that again - Løft din finger og gør det igen - - - Fingerprint added - Fingeraftryk tilføjet - - - - FingerWidget - - Edit - Rediger - - - Fingerprint Password - Fingeraftryksadgangskode - - - You can add up to 10 fingerprints - Du kan tilføje op til 10 fingeraftryk - - - Done - Færdig - - - The name already exists - Navnet eksisterer allerede - - - Add Fingerprint - Tilføj Fingeraftryk - - - - GeneralModule - - General - Generelt - - - Balanced - Balanceret - - - Balance Performance - - - - High Performance - Høj Ydeevne - - - Power Saver - Strømbesparelse - - - Power Plans - Strømstyring - - - Power Saving Settings - Strømbesparelsesindstillinger - - - Auto power saving on low battery - Automatisk strømbesparelse ved lavt batteri - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Automatisk strømbesparelse på batteri - - - Wakeup Settings - Vækkelsesindstillinger - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Det må ikke starte eller slutte med bindestreger - - - 1~63 characters please - 1~63 tegn, tak - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - Ingen understøttede enheder fundet - - - - IrisWidget - - Edit - Rediger - - - Manage Irises - Administrér Iriser - - - You can add up to 5 irises - Du kan tilføje op til 5 iriser - - - Done - Færdig - - - Add Iris - Tilføj Iris - - - The name already exists - Navnet eksisterer allerede - - - Iris - Iris - - - - KeyLabel - - None - Intet - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Ophavsret© 2011-%1 Deepin Community - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Ophavsret© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Indgående Enhed - - - Automatic Noise Suppression - Automatisk Støjdæmpning - - - Input Volume - Lydstyrke (input) - - - Input Level - Inputniveau - - - - PersonalizationDesktopModule - - Desktop - Skrivebord - - - Window - Vindue - - - Window Effect - Vindueseffekt - - - Window Minimize Effect - Vindue-Minimeringseffekt - - - Transparency - Gennemsigtighed - - - Rounded Corner - Afrundede Hjørner - - - Scale - Skalér - - - Magic Lamp - Magisk Lampe - - - Small - Lille - - - Middle - - - - Large - Stor - - - - PersonalizationModule - - Personalization - Personliggørelse - - - - PersonalizationThemeList - - Cancel - Annuller - - - Save - Gem - - - Light - Let - - - Dark - Mørkt - - - Auto - Automatisk - - - Default - Standard - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - Udseende - - - Accent Color - Accentfarve - - - Icon Settings - - - - Icon Theme - Ikontema - - - Cursor Theme - Markørtema - - - Text Settings - - - - Font Size - Skriftstørrelse - - - Standard Font - Standardskrifttype - - - Monospaced Font - Skifttype med fast bredde - - - Light - Let - - - Auto - Automatisk - - - Dark - Mørkt - - - - PersonalizationThemeWidget - - Light - Let - General - /personalization/General - - - Dark - Mørkt - General - /personalization/General - - - Auto - Automatisk - General - /personalization/General - - - Default - Standard - - - - PersonalizationWorker - - Custom - Tilpasset - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN'et til at oprette forbindelse til Bluetooth-enheden er: - - - Cancel - Annuller - - - Confirm - Bekræft - - - - PowerModule - - Power - Strøm - - - Battery low, please plug in - Batteriet er lavt. Tilslut venligst strømforsyningen - - - Battery critically low - Batteriet er kritisk lavt - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Kalender - - - Screen Capture - - - - - QObject - - Control Center - Kontrolcenter - - - , - - - - Error occurred when reading the configuration files of password rules! - Fejl forekom ved læsning af adgangskodereglernes konfigurationsfiler! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Aktiveret - - - View - Vis - - - To be activated - Skal aktiveres - - - Activate - Aktivér - - - Expired - Udløbet - - - In trial period - I prøveperiode - - - Trial expired - Prøveperioden er udløbet - - - Touch Screen Settings - Indstillinger for Berøringsfølsom Skærm - - - The settings of touch screen changed - Berøringsfølsom skærms indstillinger blev ændret - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Annuller - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Dit system er ikke autentificeret — aktivér det venligst først - - - Update successful - Opdatering lykkedes - - - Failed to update - Kunne ikke opdatere - - - - SearchInput - - Search - Søg - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Lydeffekter - - - - SoundModel - - Boot up - Opstart - - - Shut down - Luk ned - - - Log out - Log ud - - - Wake up - Vågn op - - - Volume +/- - Lydstyrke +/- - - - Notification - Notifikation - - - Low battery - Lavt batteri - - - Send icon in Launcher to Desktop - Send ikon i opstarter til skrivebord - - - Empty Trash - Tøm papirkurv - - - Plug in - Stik sættes i - - - Plug out - Stik tages ud - - - Removable device connected - Tilslutning af flytbar enhed - - - Removable device removed - Fjernelse af flytbar enhed - - - Error - Fejl - - - - SoundModule - - Sound - Lyd - - - - SoundPlugin - - Output - Output - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Input - - - Sound Effects - Lydeffekter - - - Devices - Enheder - - - Input Devices - Indgående Enheder - - - Output Devices - Udgående Enheder - - - - SpeakerPage - - Output Device - Udgående Enhed - - - Mode - Tilstand - - - Output Volume - Lydstyrke (output) - - - Volume Boost - Boost af lydstyrke - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Balance for venstre/højre - - - Left - Venstre - - - Right - Højre - - - - TimeSettingModule - - Time Settings - Tidsindstillinger - - - Time - Klokkeslæt - - - Auto Sync - Automatisk Synkronisering - - - Reset - Nulstil - - - Save - Gem - - - Server - Server - - - Address - Adresse - - - Required - Påkrævet - - - Customize - Tilpas - - - Year - År - - - Month - Måned - - - Day - Dag - - - - TimeZoneChooser - - Cancel - Annuller - - - Confirm - Bekræft - - - Add Timezone - Tilføj Tidszone - - - Add - Tilføj - - - Change Timezone - Skift tidszone - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Vend tilbage - - - Save - Gem - - - - TimezoneItem - - Tomorrow - I morgen - - - Yesterday - I går - - - Today - I dag - - - %1 hours earlier than local - %1 timer tidligere end lokalt - - - %1 hours later than local - %1 timer senere end lokalt - - - - TimezoneModule - - Timezone List - Tidszoneliste - - - System Timezone - Systemtidszone - - - Add Timezone - Tilføj Tidszone - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Brugerkontoen er ikke forbundet med Union-ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - For at nulstille adgangskoder bør du først godkende dit Union-ID. Klik "Gå til Henvisning" for at færdiggøre indstillingerne. - - - Cancel - Annuller - - - Go to Link - Gå til Henvisning - - - - UnknownUpdateItem - - Release date: - Udgivelsesdato: - - - - UpdateCtrlWidget - - Check Again - Kontrollér Igen - - - Update failed: insufficient disk space - Opdatering mislykkedes: utilstrækkelig diskplads - - - Dependency error, failed to detect the updates - Afhængighedsfejl, kunne ikke registrere opdateringerne - - - Restart the computer to use the system and the applications properly - Genstart computeren for at bruge systemet og programmerne ordentligt - - - Network disconnected, please retry after connected - Netværk deaktiveret. Prøv venligst når forbindelsen er oprettet - - - Your system is not authorized, please activate first - Dit system er ikke autentificeret — aktivér det venligst først - - - This update may take a long time, please do not shut down or reboot during the process - Opdateringen kan tage længere tid, luk venligst ikke ned eller genstarter under processen. - - - Updates Available - Opdateringer Tilgængelige - - - Current Edition - Nuværende udgave - - - Updating... - Opdaterer... - - - Update All - Opdatér Alt - - - Last checking time: - Tidspunkt for sidste kontrol: - - - Your system is up to date - Dit system er opdateret - - - Check for Updates - Kontrollér for Opdateringer - - - Checking for updates, please wait... - Søger efter opdateringer, vent venligst... - - - The newest system installed, restart to take effect - Nyeste system installeret, genstart for at træde i kraft - - - %1% downloaded (Click to pause) - %1% downloadet (klik for at pause) - - - %1% downloaded (Click to continue) - %1% downloadet (klik for at fortsætte) - - - Your battery is lower than 50%, please plug in to continue - Dit batteri er under 50%, tilslut venligst strømforsyningen for at fortsætte - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Sørg venligst for tilstrækkeligt med strøm til genstart, og sluk ikke eller frakobl strømforsyningen fra din maskine - - - Size - Størrelse - - - - UpdateModule - - Updates - Opdateringer - - - - UpdatePlugin - - Check for Updates - Kontrollér for Opdateringer - - - - UpdateSettingItem - - Insufficient disk space - Utilstrækkelig diskplads - - - Update failed: insufficient disk space - Opdatering mislykkedes: utilstrækkelig diskplads - - - Update failed - Opdatering mislykkedes - - - Network error - Netværksfejl - - - Network error, please check and try again - Netværksfejl, kontrollér venligst og prøv igen - - - Packages error - Pakker-fejl - - - Packages error, please try again - Pakker-fejl, prøv venligst igen - - - Dependency error - Afhængighedsfejl - - - Unmet dependencies - Umødte afhængigheder - - - The newest system installed, restart to take effect - Nyeste system installeret, genstart for at træde i kraft - - - Waiting - Venter - - - Backing up - Sikkerhedskopierer - - - System backup failed - Sikkerhedskopiering af system mislykkedes - - - Release date: - Udgivelsesdato: - - - Server - Server - - - Desktop - Skrivebord - - - Version - Version - - - - UpdateSettingsModule - - Update Settings - Opdateringsindstillinger - - - System - System - - - Security Updates Only - Kun Sikkerhedsopdateringer - - - Switch it on to only update security vulnerabilities and compatibility issues - Slå den til, for kun at opdatere sikkerhedssvagheder og kompatibilitetsproblemer - - - Third-party Repositories - Tredjepartsdepoter - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - Andre indstillinger - - - Auto Check for Updates - Kontrollér Automatisk for Opdateringer - - - Auto Download Updates - Automatisk download af opdateringer - - - Switch it on to automatically download the updates in wireless or wired network - Slå den til for automatisk download af opdateringerne i trådløst og kablet netværk - - - Auto Install Updates - Installér Automatisk Opdateringer - - - Updates Notification - Opdateringsnotifikation - - - Clear Package Cache - Ryd Pakkemellemlager - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Systemopdateringer - - - Security Updates - Sikkerhedsopdateringer - - - Install updates automatically when the download is complete - Installér automatisk opdateringer, når overførslen er færdig - - - Install "%1" automatically when the download is complete - Installér automatisk "%1", når overførslen er færdig - - - - UpdateWidget - - Current Edition - Nuværende udgave - - - - UpdateWorker - - System Updates - Systemopdateringer - - - Fixed some known bugs and security vulnerabilities - Udbedrede nogle kendte fejl og sikkerhedssvagheder - - - Security Updates - Sikkerhedsopdateringer - - - Third-party Repositories - Tredjepartsdepoter - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - På batteri - - - Never - Aldrig - - - Shut down - Luk ned - - - Suspend - Hvile - - - Hibernate - Dvale - - - Turn off the monitor - Sluk for skærmen - - - Do nothing - Gør ingenting - - - 1 Minute - 1 minut - - - %1 Minutes - %1 minutter - - - 1 Hour - 1 time - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Lås skærmen efter - - - Computer suspends after - - - - Computer will suspend after - Computeren vil gå i hvile om - - - When the lid is closed - Når låget lukkes - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Lavt Batteriniveau - - - Auto suspend battery level - Suspendér automatisk batteriniveau - - - Battery Management - - - - Display remaining using and charging time - Vis resterende brugs- og opladningstid - - - Maximum capacity - Maksimal kapacitet - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Tilsluttet - - - 1 Minute - 1 minut - - - %1 Minutes - %1 minutter - - - 1 Hour - 1 time - - - Never - Aldrig - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Lås skærmen efter - - - Computer suspends after - - - - When the lid is closed - Når låget lukkes - - - When the power button is pressed - - - - Shut down - Luk ned - - - Suspend - Hvile - - - Hibernate - Dvale - - - Turn off the monitor - Sluk for skærmen - - - Show the shutdown Interface - - - - Do nothing - Gør ingenting - - - - WacomModule - - Drawing Tablet - Tegneplade - - - Mode - Tilstand - - - Pressure Sensitivity - Trykfølsomhed - - - Pen - Pen - - - Mouse - Mus - - - Light - Let - - - Heavy - Tungt - - - - main - - Control Center provides the options for system settings. - Kontrolcenteret giver valgmulighederne for systemindstillinger. - - - - updateControlPanel - - Downloading - Henter - - - Waiting - Venter - - - Installing - Installerer - - - Backing up - Sikkerhedskopierer - - - Download and install - Hent og installér - - - Learn more - Lær mere - - - diff --git a/dcc-old/translations/dde-control-center_de.ts b/dcc-old/translations/dde-control-center_de.ts deleted file mode 100644 index 5bb1e205e6..0000000000 --- a/dcc-old/translations/dde-control-center_de.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Anderen Bluetooth-Geräten das Auffinden dieses Geräts erlauben - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Aktivieren Sie Bluetooth, um Geräte in der Nähe zu finden (Lautsprecher, Tastatur, Maus) - - - My Devices - Meine Geräte - - - Other Devices - Andere Geräte - - - Show Bluetooth devices without names - Bluetooth-Geräte ohne Namen anzeigen - - - Connect - Verbinden - - - Disconnect - Trennen - - - Rename - Umbenennen - - - Send Files - Dateien senden - - - Ignore this device - Dieses Gerät ignorieren - - - Connecting - Wird verbunden - - - Disconnecting - Wird getrennt - - - - AddButtonWidget - - Add Application - Anwendung hinzufügen - - - Open Desktop file - Desktop-Datei öffnen - - - Apps (*.desktop) - Apps (*.desktop) - - - All files (*) - Alle Dateien (*) - - - - AddFaceInfoDialog - - Enroll Face - Gesicht erfassen - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Stellen Sie sicher, dass alle Teile Ihres Gesichts nicht durch Gegenstände verdeckt werden und gut sichtbar sind. Ihr Gesicht sollte ebenfalls gut ausgeleuchtet sein. - - - Cancel - Abbrechen - - - Next - Weiter - - - Face enrolled - Gesicht erfasst - - - Use your face to unlock the device and make settings later - Entsperren Sie das Gerät mit Ihrem Gesicht und nehmen Sie später Einstellungen vor - - - Done - Fertig - - - Failed to enroll your face - Konnte Ihr Gesicht nicht erfassen - - - Try Again - Erneut versuchen - - - Close - Schließen - - - - AddFingerDialog - - Cancel - Abbrechen - - - Done - Fertig - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - Iris erfassen - - - Cancel - Abbrechen - - - Next - Weiter - - - Iris enrolled - Iris erfasst - - - Done - Fertig - - - Failed to enroll your iris - Konnte Ihre Iris nicht erfassen - - - Try Again - Erneut versuchen - - - - AuthenticationInfoItem - - No more than 15 characters - Nicht mehr als 15 Zeichen - - - Use letters, numbers and underscores only, and no more than 15 characters - Verwenden Sie nur Buchstaben, Zahlen und Unterstriche, und nicht mehr als 15 Zeichen - - - Use letters, numbers and underscores only - Verwenden Sie nur Buchstaben, Zahlen und Unterstriche - - - - AuthenticationModule - - Biometric Authentication - Biometrische Authentifizierung - - - - AuthenticationPlugin - - Fingerprint - Fingerabdruck - - - Face - Gesicht - - - Iris - Iris - - - - BluetoothDeviceModel - - Connected - Verbunden - - - Not connected - Nicht verbunden - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Bluetooth-Geräte-Manager - - - - CharaMangerModel - - Fingerprint1 - Fingerabdruck1 - - - Fingerprint2 - Fingerabdruck2 - - - Fingerprint3 - Fingerabdruck3 - - - Fingerprint4 - Fingerabdruck4 - - - Fingerprint5 - Fingerabdruck5 - - - Fingerprint6 - Fingerabdruck6 - - - Fingerprint7 - Fingerabdruck7 - - - Fingerprint8 - Fingerabdruck8 - - - Fingerprint9 - Fingerabdruck9 - - - Fingerprint10 - Fingerabdruck10 - - - Scan failed - Scan fehlgeschlagen - - - The fingerprint already exists - Der Fingerabdruck existiert bereits - - - Please scan other fingers - Bitte scannen Sie andere Finger - - - Unknown error - Unbekannter Fehler - - - Scan suspended - Scan unterbrochen - - - Cannot recognize - - - - Moved too fast - Zu schnell bewegt - - - Finger moved too fast, please do not lift until prompted - Finger wurde zu schnell bewegt, bitte nicht abheben, bis Sie dazu aufgefordert werden - - - Unclear fingerprint - Unscharfer Fingerabdruck - - - Clean your finger or adjust the finger position, and try again - Reinigen Sie Ihren Finger oder passen Sie die Fingerposition an, und versuchen Sie es erneut - - - Already scanned - Bereits gescannt - - - Adjust the finger position to scan your fingerprint fully - Passen Sie die Fingerposition an, um Ihren Fingerabdruck vollständig zu scannen - - - Finger moved too fast. Please do not lift until prompted - Der Finger hat sich zu schnell bewegt. Bitte nicht anheben, bis Sie dazu aufgefordert werden - - - Lift your finger and place it on the sensor again - Heben Sie Ihren Finger hoch und legen Sie ihn erneut auf den Sensor - - - Position your face inside the frame - Positionieren Sie Ihr Gesicht innerhalb des Rahmens - - - Face enrolled - Gesicht erfasst - - - Position a human face please - Positionieren Sie bitte ein menschliches Gesicht - - - Keep away from the camera - Halten Sie sich von der Kamera fern - - - Get closer to the camera - Gehen Sie näher an die Kamera heran - - - Do not position multiple faces inside the frame - Positionieren Sie nicht mehrere Gesichter innerhalb des Rahmens - - - Make sure the camera lens is clean - Stellen Sie sicher, dass das Kameraobjektiv sauber ist - - - Do not enroll in dark, bright or backlit environments - Nicht in dunklen, hellen oder von hinten beleuchteten Umgebungen erfassen - - - Keep your face uncovered - Halten Sie Ihr Gesicht unbedeckt - - - Scan timed out - - - - Device crashed, please scan again! - Gerät ist abgestürzt, bitte scannen Sie erneut! - - - Cancel - Abbrechen - - - - CooperationSettingsDialog - - Collaboration Settings - Einstellungen für die Zusammenarbeit - - - Share mouse and keyboard - Maus und Tastatur teilen - - - Share your mouse and keyboard across devices - Teilen Sie Ihre Maus und Tastatur geräteübergreifend - - - Share clipboard - Zwischenablage teilen - - - Storage path for shared files - Speicherpfad für freigegebene Dateien - - - Share the copied content across devices - Kopierte Inhalte geräteübergreifend freigeben - - - Cancel - button - Abbrechen - - - Confirm - button - Bestätigen - - - - dccV23::AccountSpinBox - - Always - Immer - - - - dccV23::AccountsModule - - Users - Benutzer - - - User management - Benutzerverwaltung - - - Create User - Benutzer erstellen - - - Username - Benutzername - - - Change Password - Passwort ändern - - - Delete User - Benutzer löschen - - - User Type - Benutzertyp - - - Auto Login - Automatische Anmeldung - - - Login Without Password - Anmeldung ohne Passwort - - - Validity Days - Gültigkeitstage - - - Group - Gruppe - - - The full name is too long - Der vollständige Name ist zu lang - - - Standard User - Standard-Benutzer - - - Administrator - Administrator - - - Reset Password - Passwort zurücksetzen - - - The full name has been used by other user accounts - Der vollständige Name wurde bereits von anderen Benutzerkonten verwendet - - - Full Name - Vollständiger Name - - - Go to Settings - Zu den Einstellungen gehen - - - Cancel - Abbrechen - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Ihr System hat den Domänen-Server erfolgreich verlassen. - - - Your host joins the domain server successfully - Ihr System ist dem Domänen-Server erfolgreich beigetreten - - - Your host failed to leave the domain server - Ihr System konnte den Domänen-Server nicht verlassen - - - Your host failed to join the domain server - Ihr System konnte dem Domänen-Server nicht beitreten - - - AD domain settings - AD-Domänen-Einstellungen - - - Password not match - Passwörter stimmen nicht überein - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Benachrichtigungen von %1 auf dem Desktop und im Benachrichtigungszentrum anzeigen. - - - Play a sound - Benachrichtigungston - - - Show messages on lockscreen - Nachrichten auf dem Sperrbildschirm anzeigen - - - Show in notification center - Im Benachrichtigungszentrum anzeigen - - - Show message preview - Nachrichtenvorschau anzeigen - - - - dccV23::AvatarListDialog - - Person - Person - - - Animal - Tier - - - Illustration - Abbildung - - - Expression - Ausdruck - - - Custom Picture - Individuelles Bild - - - Cancel - Abbrechen - - - Save - Speichern - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - Flacher Stil - - - - dccV23::AvatarListView - - Images - Bilder - - - - dccV23::BootWidget - - Updating... - Wird aktualisiert ... - - - Startup Delay - Startverzögerung - - - Theme - Thema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Klicken Sie auf die Option im Startmenü, um sie als ersten Start festzulegen, und ziehen Sie ein Bild hinein, um den Hintergrund zu ändern - - - Click the option in boot menu to set it as the first boot - Klicken Sie die Option im Boot-Menü an, um sie als primäre Boot-Option festzulegen. - - - Switch theme on to view it in boot menu - Schalten Sie das Thema ein, um es im Systemstartmenü anzuzeigen - - - GRUB Authentication - GRUB-Authentifizierung - - - GRUB password is required to edit its configuration - Zum Bearbeiten der Konfiguration von GRUB ist sein Passwort erforderlich - - - Change Password - Passwort ändern - - - Boot Menu - Systemstartmenü - - - Change GRUB password - GRUB-Passwort ändern - - - Username: - Benutzername: - - - root - root - - - New password: - Neues Passwort: - - - Repeat password: - Passwort wiederholen: - - - Required - Erforderlich - - - Cancel - button - Abbrechen - - - Confirm - button - Bestätigen - - - Password cannot be empty - Passwort darf nicht leer sein - - - Passwords do not match - Passwörter stimmen nicht überein - - - - dccV23::BrightnessWidget - - Brightness - Helligkeit - - - Color Temperature - Farbtemperatur - - - Auto Brightness - Automatische Helligkeit - - - Night Shift - Nachtschicht - - - The screen hue will be auto adjusted according to your location - Der Bildschirmfarbton wird automatisch an Ihren Standort angepasst - - - Change Color Temperature - Farbtemperatur ändern - - - Cool - Kalt - - - Warm - Warm - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Bildschirmübergreifende Zusammenarbeit - - - PC Collaboration - PC-Zusammenarbeit - - - Connect to - Verbinden mit - - - Select a device for collaboration - Wählen Sie ein Gerät für die Zusammenarbeit aus - - - Device Orientation - Geräteausrichtung - - - On the top - Auf der oberen Seite - - - On the right - Auf der rechten Seite - - - On the bottom - Auf der unteren Seite - - - On the left - Auf der linken Seite - - - My Devices - Meine Geräte - - - Other Devices - Andere Geräte - - - - dccV23::CommonInfoPlugin - - General Settings - Allgemeine Einstellungen - - - Boot Menu - Systemstartmenü - - - Developer Mode - Entwicklermodus - - - User Experience Program - Benutzererfahrungsprogramm - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Zustimmen und am Benutzererfahrungsprogramm teilnehmen - - - The Disclaimer of Developer Mode - Der Haftungsausschluss für den Entwicklermodus - - - Agree and Request Root Access - Zustimmen und root-Zugang anfordern - - - Failed to get root access - Konnte keinen Root-Zugang erhalten - - - Please sign in to your Union ID first - Bitte melden Sie sich zuerst mit Ihrer Union ID an - - - Cannot read your PC information - Kann Ihre PC-Informationen nicht lesen - - - No network connection - Keine Netzwerkverbindung - - - Certificate loading failed, unable to get root access - Laden von Zertifikaten fehlgeschlagen, kein root-Zugang möglich - - - Signature verification failed, unable to get root access - Signaturprüfung fehlgeschlagen, kein root-Zugang möglich - - - - dccV23::CreateAccountPage - - Group - Gruppe - - - Cancel - Abbrechen - - - Create - Erstellen - - - New User - Neuer Benutzer - - - User Type - Benutzertyp - - - Username - Benutzername - - - Full Name - Vollständiger Name - - - Password - Passwort - - - Repeat Password - Passwort wiederholen - - - Password Hint - Passworthinweis - - - The full name is too long - Der vollständige Name ist zu lang - - - Passwords do not match - Passwörter stimmen nicht überein - - - Standard User - Standard-Benutzer - - - Administrator - Administrator - - - Customized - Angepasst - - - Required - Erforderlich - - - optional - optional - - - The hint is visible to all users. Do not include the password here. - Der Hinweis ist für alle Benutzer sichtbar. Geben Sie hier nicht das Passwort ein. - - - Policykit authentication failed - Policykit-Authentifizierung fehlgeschlagen - - - Username must be between 3 and 32 characters - Benutzername muss zwischen 3 und 32 Zeichen lang sein - - - The first character must be a letter or number - Das erste Zeichen muss ein Buchstabe oder eine Zahl sein - - - Your username should not only have numbers - Ihr Benutzername sollte nicht nur aus Zahlen bestehen - - - The username has been used by other user accounts - Der Benutzername wurde bereits von anderen Benutzerkonten verwendet - - - The full name has been used by other user accounts - Der vollständige Name wurde bereits von anderen Benutzerkonten verwendet - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Bilder - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Angepasstes Tastenkürzel hinzufügen - - - Name - Name - - - Required - Erforderlich - - - Command - Befehl - - - Cancel - Abbrechen - - - Add - Hinzufügen - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Dieses Tastenkürzel verursacht einen Konflikt mit %1. Klicken Sie auf Hinzufügen, um dieses Tastenkürzel zu aktivieren - - - - dccV23::CustomEdit - - Required - Erforderlich - - - Cancel - Abbrechen - - - Save - Speichern - - - Shortcut - Tastenkürzel - - - Name - Name - - - Command - Befehl - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Dieses Tastenkürzel verursacht einen Konflikt mit %1. Klicken Sie auf Hinzufügen, um dieses Tastenkürzel zu aktivieren - - - - dccV23::CustomItem - - Shortcut - Tastenkürzel - - - Please enter a shortcut - Bitte geben Sie ein Tastenkürzel ein - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - Erster Tag der Woche - - - Short date - Kurzes Datum - - - Long date - Langes Datum - - - Short time - Kurze Zeit - - - Long time - Lange Zeit - - - Currency symbol - Währungssymbol - - - Numbers - Nummer - - - Paper - Papier - - - Cancel - Abbrechen - - - Save - Speichern - - - - dccV23::DetailInfoItem - - For more details, visit: - Weitere Informationen finden Sie unter: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Root-Zugang anfordern - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Bitte melden Sie sich zuerst mit Ihrer Union ID an und fahren Sie fort - - - Next - Weiter - - - Export PC Info - PC-Informationen exportieren - - - Import Certificate - Zertifikat importieren - - - 1. Export your PC information - 1. Exportieren Sie Ihre PC-Informationen - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Gehen Sie zu https://www.chinauos.com/developMode um ein Offline-Zertifikat herunterzuladen - - - 3. Import the certificate - 3. Importieren Sie das Zertifikat - - - - dccV23::DeveloperModeWidget - - Request Root Access - Root-Zugang anfordern - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Der Entwicklermodus ermöglicht es Ihnen, Root-Privilegien zu erhalten, unsignierte Anwendungen zu installieren und auszuführen, die nicht im App Store gelistet sind, aber Ihre Systemintegration kann auch beschädigt werden, bitte gehen Sie vorsichtig damit um. - - - The feature is not available at present, please activate your system first - Die Funktion ist zur Zeit nicht verfügbar, bitte aktivieren Sie zuerst Ihr System - - - Failed to get root access - Konnte keinen Root-Zugang erhalten - - - Please sign in to your Union ID first - Bitte melden Sie sich zuerst mit Ihrer Union ID an - - - Cannot read your PC information - Kann Ihre PC-Informationen nicht lesen - - - No network connection - Keine Netzwerkverbindung - - - Certificate loading failed, unable to get root access - Laden von Zertifikaten fehlgeschlagen, kein root-Zugang möglich - - - Signature verification failed, unable to get root access - Signaturprüfung fehlgeschlagen, kein root-Zugang möglich - - - To make some features effective, a restart is required. Restart now? - Um einige Funktionen wirksam zu machen, ist ein Neustart erforderlich. Jetzt neu starten? - - - Cancel - Abbrechen - - - Restart Now - Jetzt neu starten - - - Root Access Allowed - Root-Zugang erlaubt - - - - dccV23::DisplayPlugin - - Display - Anzeige - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Doppelklicktest - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Tastatureinstellungen - - - Repeat Delay - Wiederholungsverzögerung - - - Short - Kurz - - - Long - Lang - - - Repeat Rate - Wiederholungsrate - - - Slow - Langsam - - - Fast - Schnell - - - Test here - Hier testen - - - Numeric Keypad - Numerische Tastatur - - - Caps Lock Prompt - Feststelltastenhinweis - - - - dccV23::GeneralSettingWidget - - Left Hand - Linke Hand - - - Disable touchpad while typing - Touchpad beim Tippen deaktivieren - - - Scrolling Speed - Bildlaufgeschwindigkeit - - - Double-click Speed - Doppelklickgeschwindigkeit - - - Slow - Langsam - - - Fast - Schnell - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Tastaturbelegung - - - Edit - Bearbeiten - - - Add Keyboard Layout - Tastaturbelegung hinzufügen - - - Done - Fertig - - - - dccV23::KeyboardLayoutDialog - - Cancel - Abbrechen - - - Add - Hinzufügen - - - Add Keyboard Layout - Tastaturbelegung hinzufügen - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tastatur und Sprache - - - Keyboard - Tastatur - - - Keyboard Settings - Tastatureinstellungen - - - keyboard Layout - Tastaturbelegung - - - Keyboard Layout - Tastaturbelegung - - - Language - Sprache - - - Shortcuts - Tastenkürzel - - - - dccV23::MainWindow - - Help - Hilfe - - - - dccV23::ModifyPasswdPage - - Change Password - Passwort ändern - - - Reset Password - Passwort zurücksetzen - - - Resetting the password will clear the data stored in the keyring. - Durch das Zurücksetzen des Passworts werden die im Schlüsselbund gespeicherten Daten gelöscht. - - - Current Password - Aktuelles Passwort - - - Forgot password? - Passwort vergessen? - - - New Password - Neues Passwort - - - Repeat Password - Passwort wiederholen - - - Password Hint - Passworthinweis - - - Cancel - Abbrechen - - - Save - Speichern - - - Passwords do not match - Passwörter stimmen nicht überein - - - Required - Erforderlich - - - Optional - Optional - - - Password cannot be empty - Passwort darf nicht leer sein - - - The hint is visible to all users. Do not include the password here. - Der Hinweis ist für alle Benutzer sichtbar. Geben Sie hier nicht das Passwort ein. - - - Wrong password - Falsches Passwort - - - New password should differ from the current one - Neues Passwort sollte sich vom aktuellen unterscheiden - - - System error - Systemfehler - - - Network error - Netzwerkfehler - - - - dccV23::MonitorControlWidget - - Identify - Identifizieren - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - Die Bildschirmumstellung wird in %1s nach den Änderungen wirksam - - - - dccV23::MousePlugin - - Mouse - Maus - - - General - Allgemein - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Zeigergeschwindigkeit - - - Mouse Acceleration - Mausbeschleunigung - - - Disable touchpad when a mouse is connected - Touchpad deaktivieren, wenn eine Maus verbunden ist - - - Natural Scrolling - Natürlicher Bildlauf - - - Slow - Langsam - - - Fast - Schnell - - - - dccV23::MultiScreenWidget - - Multiple Displays - Mehrfachbildschirm - /display/Multiple Displays - - - Mode - Modus - /display/Mode - - - Main Screen - Hauptbildschirm - /display/Main Scree - - - Duplicate - Duplizieren - - - Extend - Erweitern - - - Only on %1 - Nur auf %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Benachrichtigung - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Handflächenerkennung - - - Minimum Contact Surface - Mindestoberflächenkontakt - - - Minimum Pressure Value - Mindestdruckstärke - - - Disable the option if touchpad doesn't work after enabled - Deaktivieren Sie diese Option, wenn das Touchpad nach der Aktivierung nicht funktioniert - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Datenschutzerklärung - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Es ist uns bewusst, welche Bedeutung Ihre persönlichen Daten für Sie besitzen. Deshalb dokumentieren wir in unserer Datenschutzerklärung, wie wir Ihre Daten sammeln, verwenden, weitergeben, übertragen, öffentlich machen und speichern.</p><p><a href="%1">Klicken Sie hier</a>, um unsere aktuelle Datenschutzerklärung einzusehen und / oder lesen Sie sie online unter <a href="%1">%1</a>. Bitte lesen Sie unsere Vorgehensweise bezüglich der Kundenprivatsphäre sorgfältig und stellen Sie sicher, dass Sie sie voll verstehen. Wenn Sie Fragen haben, kontaktieren Sie uns bitte unter: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Passwort darf nicht leer sein - - - Password must have at least %1 characters - Passwort muss mindestens %1 Zeichen haben - - - Password must be no more than %1 characters - Passwort darf nicht mehr als %1 Zeichen haben - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Passwort darf nur englische Buchstaben (Groß- und Kleinschreibung beachten), Zahlen oder Sonderzeichen (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) enthalten - - - No more than %1 palindrome characters please - Bitte nicht mehr als %1 Palindrom-Zeichen - - - No more than %1 monotonic characters please - Bitte nicht mehr als %1 monotone Zeichen - - - No more than %1 repeating characters please - Bitte nicht mehr als %1 sich wiederholende Zeichen - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Passwort muss Großbuchstaben, Kleinbuchstaben, Zahlen und Symbole enthalten (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Passwort darf nicht mehr als 4 Palindromzeichen enthalten - - - Do not use common words and combinations as password - Verwenden Sie keine gebräuchlichen Wörter und Kombinationen als Passwort - - - Create a strong password please - Bitte erstellen Sie ein sicheres Passwort - - - It does not meet password rules - Es erfüllt nicht die Passwortregeln - - - - dccV23::RefreshRateWidget - - Refresh Rate - Bildwiederholungsrate - - - Hz - Hz - - - Recommended - Empfohlen - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - Standardformat - - - First of day - - - - Short date - Kurzes Datum - - - Long date - Langes Datum - - - Short time - Kurze Zeit - - - Long time - Lange Zeit - - - Currency symbol - Währungssymbol - - - Numbers - Nummer - - - Paper - Papier - - - Cancel - Abbrechen - - - Save - Speichern - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Sind Sie sicher, dass Sie dieses Konto löschen möchten? - - - Delete account directory - Kontoverzeichnis löschen - - - Cancel - Abbrechen - - - Delete - Löschen - - - - dccV23::ResolutionWidget - - Resolution - Auflösung - /display/Resolution - - - Resize Desktop - Größe des Desktops ändern - /display/Resize Desktop - - - Default - Standard - - - Fit - Einpassen - - - Stretch - Strecken - - - Center - Mitte - - - Recommended - Empfohlen - - - - dccV23::RotateWidget - - Rotation - Drehung - /display/Rotation - - - Standard - Standard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Der Monitor unterstützt nur 100 %-Anzeigeskalierung - - - Display Scaling - Anzeigeskalierung - - - - dccV23::SearchInput - - Search - Suchen - - - - dccV23::SecondaryScreenDialog - - Brightness - Helligkeit - - - - dccV23::SecurityLevelItem - - Weak - Schwach - - - Medium - Mittel - - - Strong - Stark - - - - dccV23::SecurityQuestionsPage - - Security Questions - Sicherheitsfragen - - - These questions will be used to help reset your password in case you forget it. - Diese Fragen werden verwendet, um Ihr Passwort zurückzusetzen, falls Sie es vergessen haben. - - - Security question 1 - Sicherheitsfrage 1 - - - Security question 2 - Sicherheitsfrage 2 - - - Security question 3 - Sicherheitsfrage 3 - - - Cancel - Abbrechen - - - Confirm - Bestätigen - - - Keep the answer under 30 characters - Beschränken Sie die Antwort auf weniger als 30 Zeichen - - - Do not choose a duplicate question please - Bitte wählen Sie keine doppelte Frage - - - Please select a question - Bitte wählen Sie eine Frage aus - - - What's the name of the city where you were born? - Wie heißt die Stadt, in der Sie geboren wurden? - - - What's the name of the first school you attended? - Wie lautet der Name der ersten Schule, die Sie besucht haben? - - - Who do you love the most in this world? - Wen lieben Sie am meisten auf dieser Welt? - - - What's your favorite animal? - Was ist Ihr Lieblingstier? - - - What's your favorite song? - Was ist Ihr Lieblingslied? - - - What's your nickname? - Was ist Ihr Spitzname? - - - It cannot be empty - Es darf nicht leer sein - - - - dccV23::SettingsHead - - Edit - Bearbeiten - - - Done - Fertig - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - Fenster - - - Workspace - Arbeitsfläche - - - Assistive Tools - Hilfsmittel - - - Custom Shortcut - Angepasstes Tastenkürzel - - - Restore Defaults - Standardeinstellungen wiederherstellen - - - Shortcut - Tastenkürzel - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Bitte setzen Sie das Tastenkürzel zurück - - - Cancel - Abbrechen - - - Replace - Ersetzen - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Dieses Tastenkürzel verursacht einen Konflikt mit %1. Klicken Sie auf Ersetzen, um dieses Tastenkürzel als Ersatz festzulegen. - - - - dccV23::ShortcutItem - - Enter a new shortcut - Geben Sie ein neues Tastenkürzel ein - - - - dccV23::SystemInfoModel - - available - verfügbar - - - - dccV23::SystemInfoModule - - About This PC - Über diesen PC - - - Computer Name - Computername - - - systemInfo - - - - OS Name - BS-Name - - - Version - Version - - - Edition - Edition - - - Type - Typ - - - Authorization - Autorisierung - - - Processor - Prozessor - - - Memory - Speicher - - - Graphics Platform - Grafik-Plattform - - - Kernel - Kernel - - - Agreements and Privacy Policy - Vereinbarungen und Datenschutzerklärung - - - Edition License - Editionslizenz - - - End User License Agreement - Endbenutzer-Lizenzvertrag - - - Privacy Policy - Datenschutzerklärung - - - %1-bit - %1-Bit - - - - dccV23::SystemInfoPlugin - - System Info - Systeminformationen - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Abbrechen - - - Add - Hinzufügen - - - Add System Language - Systemsprache hinzufügen - - - - dccV23::SystemLanguageWidget - - Edit - Bearbeiten - - - Language List - Sprachenliste - - - Add Language - Sprache hinzufügen - - - Done - Fertig - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Nicht stören - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - App-Benachrichtigungen werden nicht auf dem Desktop angezeigt und Töne werden stummgeschaltet, aber Sie können alle Nachrichten im Benachrichtigungszentrum ansehen. - - - When the screen is locked - Wenn der Bildschirm gesperrt ist - - - - dccV23::TimeSlotItem - - From - Von - - - To - Bis - - - - dccV23::TouchScreenModule - - Touch Screen - Touchscreen - - - Select your touch screen when connected or set it here. - Wählen Sie Ihren Touchscreen aus sobald er angeschlossen ist oder stellen Sie ihn hier ein. - - - Confirm - Bestätigen - - - Cancel - Abbrechen - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Zeigergeschwindigkeit - - - Enable TouchPad - Touchpad aktivieren - - - Tap to Click - Zum Klicken antippen - - - Natural Scrolling - Natürlicher Bildlauf - - - Slow - Langsam - - - Fast - Schnell - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Zeigergeschwindigkeit - - - Slow - Langsam - - - Fast - Schnell - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Am Benutzererfahrungsprogramm teilnehmen - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Die Teilnahme am Benutzererfahrungsprogramm bedeutet, dass Sie es uns erlauben Informationen über Ihr Gerät, System und Ihre Anwendungen zu sammeln und zu verwenden. Treten Sie nicht dem Benutzererfahrungsprogramm bei, wenn Sie dieser Verarbeitung widersprechen. Bitte lesen Sie die Deepin Datenschutzerklärung für weitere Details (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Die Teilnahme am Benutzererfahrungsprogramm bedeutet, dass Sie es uns erlauben Informationen über Ihr Gerät, System und Ihre Anwendungen zu sammeln und zu verwenden. Treten Sie nicht dem Benutzererfahrungsprogramm bei, wenn Sie dieser Verarbeitung widersprechen. Um mehr über unseren Umgang mit Ihren Daten zu erfahren, lesen Sie bitte die UnionTech OS Datenschutzerklärung (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Jahr - - - Month - Monat - - - Day - Tag - - - - DatetimeModule - - Time and Format - Zeit und Format - - - - DatetimeWorker - - Authentication is required to change NTP server - Für den Wechsel des NTP-Servers ist eine Authentifizierung erforderlich - - - - DefAppModule - - Default Applications - Standardanwendungen - - - - DefAppPlugin - - Webpage - Internetseite - - - Mail - Mail - - - Text - Text - - - Music - Musik - - - Video - Video - - - Picture - Bild - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Haftungsausschluss - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Abbrechen - - - Next - Weiter - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - Haftungsausschluss - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - Mehrfachbildschirm - - - Show Dock - Dock anzeigen - - - Mode - Modus - - - Position - Position - - - Status - Status - - - Show recent apps in Dock - Kürzlich verwendete Apps im Dock anzeigen - - - Size - Größe - - - Plugin Area - Pluginbereich - - - Select which icons appear in the Dock - Wählen Sie aus, welche Symbole im Dock erscheinen sollen - - - Fashion mode - Design-Modus - - - Efficient mode - Effizienzmodus - - - Top - Oben - - - Bottom - Unten - - - Left - Links - - - Right - Rechts - - - Location - Ort - - - Keep shown - Angezeigt lassen - - - Keep hidden - Ausgeblendet lassen - - - Smart hide - Intelligentes Ausblenden - - - Small - Klein - - - Large - Groß - - - On screen where the cursor is - Auf dem Bildschirm, wo sich der Zeiger befindet - - - Only on main screen - Nur auf dem Hauptbildschirm - - - - FaceInfoDialog - - Enroll Face - Gesicht erfassen - - - Position your face inside the frame - Positionieren Sie Ihr Gesicht innerhalb des Rahmens - - - - FaceWidget - - Edit - Bearbeiten - - - Manage Faces - Gesichter verwalten - - - You can add up to 5 faces - Sie können bis zu 5 Gesichter hinzufügen - - - Done - Fertig - - - Add Face - Gesicht hinzufügen - - - The name already exists - Der Name existiert bereits - - - Faceprint - Gesichtsabdruck - - - - FaceidDetailWidget - - No supported devices found - Keine unterstützten Geräte gefunden - - - - FingerDetailWidget - - No supported devices found - Keine unterstützten Geräte gefunden - - - - FingerDisclaimer - - Add Fingerprint - Fingerabdruck hinzufügen - - - Cancel - Abbrechen - - - Next - Weiter - - - - FingerInfoWidget - - Place your finger - Legen Sie Ihren Finger auf - - - Place your finger firmly on the sensor until you're asked to lift it - Legen Sie Ihren Finger fest auf den Sensor, bis Sie aufgefordert werden, ihn anzuheben - - - Scan the edges of your fingerprint - Scannen Sie die Ränder Ihres Fingerabdrucks - - - Place the edges of your fingerprint on the sensor - Legen Sie den Rand Ihres Fingerabdrucks auf den Sensor - - - Lift your finger - Heben Sie Ihren Finger hoch - - - Lift your finger and place it on the sensor again - Heben Sie Ihren Finger hoch und legen Sie ihn erneut auf den Sensor - - - Adjust the position to scan the edges of your fingerprint - Passen Sie die Position an, um die Ränder Ihres Fingerabdrucks zu scannen - - - Lift your finger and do that again - Heben Sie Ihren Finger hoch und machen Sie es noch einmal - - - Fingerprint added - Fingerabdruck hinzugefügt - - - - FingerWidget - - Edit - Bearbeiten - - - Fingerprint Password - Fingerabdruckpasswort - - - You can add up to 10 fingerprints - Sie können bis zu 10 Fingerabdrücke hinzufügen - - - Done - Fertig - - - The name already exists - Der Name existiert bereits - - - Add Fingerprint - Fingerabdruck hinzufügen - - - - GeneralModule - - General - Allgemein - - - Balanced - Ausgeglichen - - - Balance Performance - - - - High Performance - Hochleistung - - - Power Saver - Energiesparen - - - Power Plans - Energiepläne - - - Power Saving Settings - Energiespareinstellungen - - - Auto power saving on low battery - Automatisches Energiesparen bei niedriger Akkuladung - - - Decrease Brightness - Helligkeit verringern - - - Low battery threshold - Schwellenwert für niedrigen Akkustand - - - Auto power saving on battery - Im Akkubetrieb automatisch Energie sparen - - - Wakeup Settings - Aufwach-Einstellungen - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Er darf nicht mit Bindestrichen beginnen oder enden - - - 1~63 characters please - Bitte 1~63 Zeichen - - - - InternalButtonItem - - Internal testing channel - Interner Testkanal - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - Keine unterstützten Geräte gefunden - - - - IrisWidget - - Edit - Bearbeiten - - - Manage Irises - Iris verwalten - - - You can add up to 5 irises - Sie können bis zu 5 Iris hinzufügen - - - Done - Fertig - - - Add Iris - Iris hinzufügen - - - The name already exists - Der Name existiert bereits - - - Iris - Iris - - - - KeyLabel - - None - Keine - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin-Gemeinschaft - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Eingabegerät - - - Automatic Noise Suppression - Automatische Rauschunterdrückung - - - Input Volume - Eingangslautstärke - - - Input Level - Eingangspegel - - - - PersonalizationDesktopModule - - Desktop - Desktop - - - Window - Fenster - - - Window Effect - Fenstereffekt - - - Window Minimize Effect - Fenster-minimieren-Effekt - - - Transparency - Transparenz - - - Rounded Corner - Abgerundete Ecke - - - Scale - Verkleinern - - - Magic Lamp - Zauberlampe - - - Small - Klein - - - Middle - - - - Large - Groß - - - - PersonalizationModule - - Personalization - Personalisierung - - - - PersonalizationThemeList - - Cancel - Abbrechen - - - Save - Speichern - - - Light - Leicht - - - Dark - Dunkel - - - Auto - Automatisch - - - Default - Standard - - - - PersonalizationThemeModule - - Theme - Thema - - - Appearance - Aussehen - - - Accent Color - Akzentfarbe - - - Icon Settings - Symboleinstellungen - - - Icon Theme - Symbolthema - - - Cursor Theme - Zeigerthema - - - Text Settings - Texteinstellungen - - - Font Size - Fontgröße - - - Standard Font - Standardschriftart - - - Monospaced Font - Schriftart mit fester Breite - - - Light - Leicht - - - Auto - Automatisch - - - Dark - Dunkel - - - - PersonalizationThemeWidget - - Light - Leicht - General - /personalization/General - - - Dark - Dunkel - General - /personalization/General - - - Auto - Automatisch - General - /personalization/General - - - Default - Standard - - - - PersonalizationWorker - - Custom - Anwenderspezifisch - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Die PIN für die Verbindung mit dem Bluetooth-Gerät lautet: - - - Cancel - Abbrechen - - - Confirm - Bestätigen - - - - PowerModule - - Power - Energie - - - Battery low, please plug in - Akkuladung niedrig, bitte anschließen - - - Battery critically low - Akkuladung kritisch niedrig - - - - PrivacyModule - - Privacy and Security - Datenschutz und Sicherheit - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - Benutzerordner - - - Calendar - Kalender - - - Screen Capture - Bildschirmaufzeichnung - - - - QObject - - Control Center - Kontrollzentrum - - - , - - - - Error occurred when reading the configuration files of password rules! - Beim Lesen der Konfigurationsdateien der Passwortregeln ist ein Fehler aufgetreten! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Aktiviert - - - View - Ansicht - - - To be activated - Zu aktivieren - - - Activate - Aktivieren - - - Expired - Abgelaufen - - - In trial period - Im Testzeitraum - - - Trial expired - Testzeitraum abgelaufen - - - Touch Screen Settings - Tastbildschirm-Einstellungen - - - The settings of touch screen changed - - - - Checking system versions, please wait... - Systemversionen werden überprüft, bitte warten ... - - - Leave - Verlassen - - - Cancel - Abbrechen - - - - RegionModule - - Region and format - Region und Format - - - Country or Region - Country or Region - - - Format - Format - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - Sprache und Country or Region - - - First day of week - Erster Tag der Woche - - - Short date - Kurzes Datum - - - Long date - Langes Datum - - - Short time - Kurze Zeit - - - Long time - Lange Zeit - - - Currency symbol - Währungssymbol - - - Numbers - Zahlen - - - Paper - Papier - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Ihr System ist nicht autorisiert, bitte aktivieren Sie zuerst - - - Update successful - Aktualisierung erfolgreich - - - Failed to update - Der Aktualisierungsvorgang schlug fehl. - - - - SearchInput - - Search - Suchen - - - - ServiceSettingsModule - - Apps can access your camera: - Apps können auf Ihre Kamera zugreifen: - - - Apps can access your microphone: - Apps können auf Ihr Mikrofon zugreifen: - - - Apps can access user folders: - Apps können auf Benutzerordner zugreifen: - - - Apps can access Calendar: - Apps können auf den Kalender zugreifen: - - - Apps can access Screen Capture: - Apps können auf die Bildschirmaufzeichnung zugreifen: - - - No apps requested access to the camera - Den Zugriff auf die Kamera haben keine Apps angefordert - - - No apps requested access to the microphone - Den Zugriff auf das Mikrofon haben keine Apps angefordert - - - No apps requested access to user folders - Den Zugriff auf Benutzerordner haben keine Apps angefordert - - - No apps requested access to Calendar - Den Zugriff auf den Kalender haben keine Apps angefordert - - - No apps requested access to Screen Capture - Den Zugriff auf die Bildschirmaufzeichnung haben keine Apps angefordert - - - - SoundEffectsPage - - Sound Effects - Toneffekte - - - - SoundModel - - Boot up - Hochfahren - - - Shut down - Herunterfahren - - - Log out - Abmelden - - - Wake up - Aufwachen - - - Volume +/- - Lautstärke +/- - - - Notification - Benachrichtigung - - - Low battery - Niedrige Akkuladung - - - Send icon in Launcher to Desktop - Symbol im Starter zum Desktop hinzufügen - - - Empty Trash - Papierkorb leeren - - - Plug in - Einstecken - - - Plug out - Ausstecken - - - Removable device connected - Entfernbares Gerät verbunden - - - Removable device removed - Entfernbares Gerät entfernt - - - Error - Fehler - - - - SoundModule - - Sound - Ton - - - - SoundPlugin - - Output - Ausgang - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Eingang - - - Sound Effects - Toneffekte - - - Devices - Geräte - - - Input Devices - Eingabegeräte - - - Output Devices - Ausgabegeräte - - - - SpeakerPage - - Output Device - Ausgabegerät - - - Mode - Modus - - - Output Volume - Ausgabelautstärke - - - Volume Boost - Lautstärkenverstärkung - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Links/Rechts-Balance - - - Left - Links - - - Right - Rechts - - - - TimeSettingModule - - Time Settings - Zeiteinstellungen - - - Time - Zeit - - - Auto Sync - Automatische Synchronisierung - - - Reset - Zurücksetzen - - - Save - Speichern - - - Server - Server - - - Address - Adresse - - - Required - Erforderlich - - - Customize - Anpassen - - - Year - Jahr - - - Month - Monat - - - Day - Tag - - - - TimeZoneChooser - - Cancel - Abbrechen - - - Confirm - Bestätigen - - - Add Timezone - Zeitzone hinzufügen - - - Add - Hinzufügen - - - Change Timezone - Zeitzone ändern - - - - TimeoutDialog - - Save the display settings? - Bildschirmeinstellungen speichern? - - - Settings will be reverted in %1s. - Die Einstellungen werden in %1 s rückgängig gemacht. - - - Revert - Zurücksetzen - - - Save - Speichern - - - - TimezoneItem - - Tomorrow - Morgen - - - Yesterday - Gestern - - - Today - Heute - - - %1 hours earlier than local - %1 Stunden früher als lokal - - - %1 hours later than local - %1 Stunden später als lokal - - - - TimezoneModule - - Timezone List - Zeitzonenliste - - - System Timezone - Systemzeitzone - - - Add Timezone - Zeitzone hinzufügen - - - - TreeCombox - - Collaboration Settings - Einstellungen für die Zusammenarbeit - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Das Benutzerkonto ist nicht mit der Union ID verknüpft - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Abbrechen - - - Go to Link - Zum Link gehen - - - - UnknownUpdateItem - - Release date: - Veröffentlichungsdatum: - - - - UpdateCtrlWidget - - Check Again - Erneut prüfen - - - Update failed: insufficient disk space - Aktualisierung fehlgeschlagen: Nicht genügend Festplattenplatz - - - Dependency error, failed to detect the updates - Abhängigkeitsfehler, Fehler beim Suchen von Updates - - - Restart the computer to use the system and the applications properly - Starten Sie den Computer neu, um das System und die Anwendungen ordnungsgemäß verwenden zu können - - - Network disconnected, please retry after connected - Netzwerkverbindung unterbrochen, bitte versuchen Sie es erneut, wenn die Verbindung wiederhergestellt ist - - - Your system is not authorized, please activate first - Ihr System ist nicht autorisiert, bitte aktivieren Sie zuerst - - - This update may take a long time, please do not shut down or reboot during the process - Diese Systemaktualisierung kann sehr lange dauern. Bitte schalten Sie Ihren Rechner während der Aktualisierung nicht aus oder starten sie diesen neu. - - - Updates Available - Aktualisierungen verfügbar - - - Current Edition - Aktuelle Edition - - - Updating... - Wird aktualisiert ... - - - Update All - Alles aktualisieren - - - Last checking time: - Letzter Prüfzeitpunkt: - - - Your system is up to date - Ihr System ist auf dem neuesten Stand - - - Check for Updates - Auf Aktualisierungen prüfen - - - Checking for updates, please wait... - Auf Aktualisierungen wird geprüft, bitte warten ... - - - The newest system installed, restart to take effect - Das neueste System ist installiert, ein Neustart ist erforderlich, damit es wirksam wird - - - %1% downloaded (Click to pause) - %1% heruntergeladen (Zum Pausieren klicken) - - - %1% downloaded (Click to continue) - %1% heruntergeladen (Zum Fortsetzen klicken) - - - Your battery is lower than 50%, please plug in to continue - Die Akkuladung ist unter 50 % gefallen. Bitte stecken Sie ein Netzteil an. - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Bitte stellen Sie sicher, dass dem Gerät genug Energie für den Neustart zur Verfügung steht und schalten Sie das Gerät nicht aus oder ziehen Sie den Netzstecker! - - - Size - Größe - - - - UpdateModule - - Updates - Aktualisierungen - - - - UpdatePlugin - - Check for Updates - Auf Aktualisierungen prüfen - - - - UpdateSettingItem - - Insufficient disk space - Nicht genügend Festplattenplatz - - - Update failed: insufficient disk space - Aktualisierung fehlgeschlagen: Nicht genügend Festplattenplatz - - - Update failed - Aktualisierung fehlgeschlagen - - - Network error - Netzwerkfehler - - - Network error, please check and try again - Netzwerkfehler, bitte überprüfen und erneut versuchen - - - Packages error - Paketefehler - - - Packages error, please try again - Paketfehler, bitte versuchen Sie es erneut - - - Dependency error - Abhängigkeitsfehler - - - Unmet dependencies - Unerfüllte Abhängigkeiten - - - The newest system installed, restart to take effect - Das neueste System ist installiert, ein Neustart ist erforderlich, damit es wirksam wird - - - Waiting - Warten - - - Backing up - Wird gesichert - - - System backup failed - Systemsicherung fehlgeschlagen - - - Release date: - Veröffentlichungsdatum: - - - Server - Server - - - Desktop - Desktop - - - Version - Version - - - - UpdateSettingsModule - - Update Settings - Aktualisierungseinstellungen - - - System - System - - - Security Updates Only - Nur Sicherheitsaktualisierungen - - - Switch it on to only update security vulnerabilities and compatibility issues - Schalten Sie es ein, um nur Sicherheitslücken und Kompatibilitätsprobleme zu aktualisieren - - - Third-party Repositories - Drittanbieter-Repositorien - - - linglong update - - - - Linglong Package Update - Linglong-Paketaktualisierung - - - If there is update for linglong package, system will update it for you - - - - Other settings - Andere Einstellungen - - - Auto Check for Updates - Automatische Prüfung auf Aktualisierungen - - - Auto Download Updates - Aktualisierungen automatisch herunterladen - - - Switch it on to automatically download the updates in wireless or wired network - Anschalten, um Aktualisierungen in drahtlosen oder kabelgebundenen Netzwerken automatisch herunterzuladen - - - Auto Install Updates - Aktualisierungen automatisch installieren - - - Updates Notification - Aktualisierungsbenachrichtigung - - - Clear Package Cache - Paketzwischenspeicher löschen - - - Updates from Internal Testing Sources - Aktualisierungen von internen Testquellen - - - internal update - interne Aktualisierung - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Systemaktualisierungen - - - Security Updates - Sicherheitsaktualisierungen - - - Install updates automatically when the download is complete - Aktualisierungen automatisch installieren, wenn das Herunterladen abgeschlossen ist - - - Install "%1" automatically when the download is complete - „%1“ automatisch installieren, wenn das Herunterladen abgeschlossen ist - - - - UpdateWidget - - Current Edition - Aktuelle Edition - - - - UpdateWorker - - System Updates - Systemaktualisierungen - - - Fixed some known bugs and security vulnerabilities - Behebung einiger bekannter Fehler und Sicherheitslücken - - - Security Updates - Sicherheitsaktualisierungen - - - Third-party Repositories - Drittanbieter-Repositorien - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Im Akkubetrieb - - - Never - Nie - - - Shut down - Herunterfahren - - - Suspend - Bereitschaftszustand - - - Hibernate - Ruhezustand - - - Turn off the monitor - Monitor ausschalten - - - Do nothing - Nichts machen - - - 1 Minute - 1 Minute - - - %1 Minutes - %1 Minuten - - - 1 Hour - 1 Stunde - - - Screen and Suspend - Bildschirm und Bereitschaftszustand - - - Turn off the monitor after - Monitor ausschalten nach - - - Lock screen after - Bildschirm sperren nach - - - Computer suspends after - Bereitschaftszustand des Computers nach - - - Computer will suspend after - Bereitschaftszustand des Computers nach - - - When the lid is closed - Wenn der Deckel geschlossen ist - - - When the power button is pressed - Wenn der Netzschalter gedrückt wird - - - Low Battery - Niedrige Akkuladung - - - Low battery notification - Benachrichtigung bei niedriger Akkuladung - - - Low battery level - Niedrige Akkuladung - - - Auto suspend battery level - Akkuladung für automatischen Bereitschaftszustand - - - Battery Management - Akkuverwaltung - - - Display remaining using and charging time - Verbleibende Nutzungs- und Ladezeit anzeigen - - - Maximum capacity - Maximale Kapazität - - - Show the shutdown Interface - Herunterfahrenoberfläche anzeigen - - - - UseElectricModule - - Plugged In - Angeschlossen - - - 1 Minute - 1 Minute - - - %1 Minutes - %1 Minuten - - - 1 Hour - 1 Stunde - - - Never - Nie - - - Screen and Suspend - Bildschirm und Bereitschaftszustand - - - Turn off the monitor after - Monitor ausschalten nach - - - Lock screen after - Bildschirm sperren nach - - - Computer suspends after - Bereitschaftszustand des Computers nach - - - When the lid is closed - Wenn der Deckel geschlossen ist - - - When the power button is pressed - Wenn der Netzschalter gedrückt wird - - - Shut down - Herunterfahren - - - Suspend - Bereitschaftszustand - - - Hibernate - Ruhezustand - - - Turn off the monitor - Monitor ausschalten - - - Show the shutdown Interface - Herunterfahrenoberfläche anzeigen - - - Do nothing - Nichts machen - - - - WacomModule - - Drawing Tablet - Zeichentablett - - - Mode - Modus - - - Pressure Sensitivity - Druckempfindlichkeit - - - Pen - Stift - - - Mouse - Maus - - - Light - Leicht - - - Heavy - Stark - - - - main - - Control Center provides the options for system settings. - Das Kontrollzentrum stellt die Optionen für die Systemeinstellungen zur Verfügung. - - - - updateControlPanel - - Downloading - Wird heruntergeladen - - - Waiting - Warten - - - Installing - Wird installiert - - - Backing up - Wird gesichert - - - Download and install - Herunterladen und installieren - - - Learn more - Mehr erfahren - - - diff --git a/dcc-old/translations/dde-control-center_el.ts b/dcc-old/translations/dde-control-center_el.ts deleted file mode 100644 index 05f37780cf..0000000000 --- a/dcc-old/translations/dde-control-center_el.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Να επιτρέπεται σε άλλες συσκευές Bluetooth να ανιχνεύουν αυτήν την συσκευή - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Ενεργοποιήστε το bluetooth για να εντοπίσετε κοντινές συσκευές (ηχεία, πληκτρολόγιο, ποντίκι) - - - My Devices - Οι Συσκευές μου - - - Other Devices - Άλλες Συσκευές - - - Show Bluetooth devices without names - Εμφάνιση συσκευών Bluetooth χωρίς ονόμα - - - Connect - Σύνδεση - - - Disconnect - Αποσύνδεση - - - Rename - Μετονομασία - - - Send Files - Αποστολή Αρχείων - - - Ignore this device - Αγνόησε αυτή τη συσκευή - - - Connecting - Σύνδεση - - - Disconnecting - Αποσύνδεση - - - - AddButtonWidget - - Add Application - Προσθήκη Εφαρμογής - - - Open Desktop file - Άνοιγμα αρχείου Επιφάνειας Εργασίας - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Ακύρωση - - - Next - Επόμενο - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Τέλος - - - Failed to enroll your face - - - - Try Again - - - - Close - Κλείσιμο - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Ακύρωση - - - Next - Επόμενο - - - Iris enrolled - - - - Done - Τέλος - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - Όχι περισσότερο από 15 χαρακτήρες - - - Use letters, numbers and underscores only, and no more than 15 characters - Χρησημοποιήστε μόνο γράμματα, αριθμούς και κάτω παύλες, μέχρι και 15 χαρακτήρες - - - Use letters, numbers and underscores only - Χρησημοποιήστε μόνο γράμματα, αριθμούς και κάτω παύλες - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Δακτυλικό Αποτύπωμα - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Συνδέθηκε - - - Not connected - Δεν Συνδέθηκε - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - ΔακτυλικόΑποτύπωμα1 - - - Fingerprint2 - ΔακτυλικόΑποτύπωμα2 - - - Fingerprint3 - ΔακτυλικόΑποτύπωμα3 - - - Fingerprint4 - ΔακτυλικόΑποτύπωμα4 - - - Fingerprint5 - ΔακτυλικόΑποτύπωμα5 - - - Fingerprint6 - ΔακτυλικόΑποτύπωμα6 - - - Fingerprint7 - ΔακτυλικόΑποτύπωμα7 - - - Fingerprint8 - ΔακτυλικόΑποτύπωμα8 - - - Fingerprint9 - ΔακτυλικόΑποτύπωμα9 - - - Fingerprint10 - ΔακτυλικόΑποτύπωμα10 - - - Scan failed - Αποτυχία σάρωσης - - - The fingerprint already exists - Το δακτυλικό αποτύπωμα υπάρχει ήδη - - - Please scan other fingers - Παρακαλώ σαρώστε άλλα δάκτυλα - - - Unknown error - Άγνωστο σφάλμα - - - Scan suspended - Αναστολή σάρωσης - - - Cannot recognize - Αδυναμία αναγνώρισης - - - Moved too fast - Πολύ γρήγορη μετακίνηση - - - Finger moved too fast, please do not lift until prompted - Το δάχτυλο κινήθηκε πολύ γρήγορα, παρακαλώ μην σηκώνετε μέχρι να σας ζητηθεί - - - Unclear fingerprint - Μη ευκρινές δακτυλικό αποτύπωμα - - - Clean your finger or adjust the finger position, and try again - Καθαρίστε το δάκτυλο σας ή προσαρμόστε την θέση του, και προσπαθήστε ξανά - - - Already scanned - Σαρώθηκε ήδη - - - Adjust the finger position to scan your fingerprint fully - Προσαρμόστε την θέση του δακτύλου σας για να σαρωθεί πλήρως το δακτυλικό σας αποτύπωμα - - - Finger moved too fast. Please do not lift until prompted - Το δάκτυλο κινήθηκε πολύ γρήγορα. Παρακαλώ μην το σηκώσετε μέχρι να σας ζητηθεί - - - Lift your finger and place it on the sensor again - Σηκώστε το δάκτυλο σας και τοποθετήστε το ξανά στον αισθητήρα - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Ακύρωση - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Ακύρωση - - - Confirm - button - Επιβεβαίωση - - - - dccV23::AccountSpinBox - - Always - Πάντα - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Όνομα χρήστη - - - Change Password - Αλλαγή Κωδικού Πρόσβασης - - - Delete User - - - - User Type - - - - Auto Login - Αυτόματη Είσοδος - - - Login Without Password - Σύνδεση Χωρίς Κωδικό Πρόσβασης - - - Validity Days - Μέρες Εγκυρότητας - - - Group - Ομάδα - - - The full name is too long - Το πλήρες όνομα είναι πολύ μεγάλο - - - Standard User - Τυπικός Χρήστης - - - Administrator - Διαχειριστής - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Πλήρες Όνομα - - - Go to Settings - Πήγαινε στις Ρυθμίσεις - - - Cancel - Ακύρωση - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Ο οικοδεσπότης (host) αφαιρέθηκε από τον διακομιστή δικτύου επιτυχώς - - - Your host joins the domain server successfully - Ο οικοδεσπότης (host) συνδέθηκε στον διακομιστή δικτύου επιτυχώς - - - Your host failed to leave the domain server - Ο οικοδεσπότης (host) απέτυχε να αποσυνδεθεί από τον διακομιστή δικτύου - - - Your host failed to join the domain server - Ο οικοδεσπότης (host) απέτυχε να συνδεθεί στον διακομιστή δικτύου - - - AD domain settings - Ρυθμίσεις δικτύου AD - - - Password not match - Οι κωδικοί πρόσβασης δεν ταιριάζουν - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Εμφάνιση ειδοποιήσεων από το %1 στην επιφάνεια εργασίας και στο κέντρο ειδοποιήσεων - - - Play a sound - Αναπαραγωγή ενός ήχου - - - Show messages on lockscreen - Εμφάνιση μηνυμάτων στην οθόνη κλειδώματος - - - Show in notification center - Εμφάνιση στο κέντρο ειδοποιήσεων - - - Show message preview - Εμφάνιση προεπισκόπησης μηνύματος - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Ακύρωση - - - Save - Αποθήκευση - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Εικόνες - - - - dccV23::BootWidget - - Updating... - Γίνεται ενημέρωση... - - - Startup Delay - Καθυστέρηση Έναρξης - - - Theme - Θέμα - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Πατήστε την επιλογή στο μενού εκκίνησης για να την ορίσετε ως προεπιλεγμένη, και σύρτε μια εικόνα για να αλλάξετε το φόντο - - - Click the option in boot menu to set it as the first boot - Πατήστε την επιλογή στο μενού εκκίνησης για να την ορίσετε ως προεπιλεγμένη - - - Switch theme on to view it in boot menu - Ενεργοποιήστε το θέμα για να εμφανίζεται στο μενού εκκίνησης - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Αλλαγή Κωδικού Πρόσβασης - - - Boot Menu - Μενού Εκκίνησης - - - Change GRUB password - - - - Username: - Όνομα χρήστη: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Απαιτείται - - - Cancel - button - Ακύρωση - - - Confirm - button - Επιβεβαίωση - - - Password cannot be empty - Ο κωδικός πρόσβασης δεν μπορεί να είναι κενός - - - Passwords do not match - Οι κωδικοί δεν ταιριάζουν - - - - dccV23::BrightnessWidget - - Brightness - Φωτεινότητα - - - Color Temperature - Θερμοκρασία Χρώματος - - - Auto Brightness - Αυτόματη Φωτεινότητα - - - Night Shift - Βραδινή Βάρδια - - - The screen hue will be auto adjusted according to your location - Ή απόχρωση της οθόνης θα προσαρμοστεί αυτόματα, αναλόγως την τοποθεσία σας - - - Change Color Temperature - Αλλαγή Θερμοκρασίας Χρώματος - - - Cool - Ψυχρό - - - Warm - Θερμό - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Οι Συσκευές μου - - - Other Devices - Άλλες Συσκευές - - - - dccV23::CommonInfoPlugin - - General Settings - Γενικές Ρυθμίσεις - - - Boot Menu - Μενού Εκκίνησης - - - Developer Mode - Λειτουργία Προγραμματιστή - - - User Experience Program - Πρόγραμμα Εμπειρίας Χρήστη - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Αποδοχή και Συμμετοχή στο Πρόγραμμα Εμπειρίας Χρήστη - - - The Disclaimer of Developer Mode - Αποποίηση Ευθυνών Λειτοργίας Προγραμματιστή - - - Agree and Request Root Access - Αποδοχή και Αίτηση Πρόσβασης Root - - - Failed to get root access - Αποτυχία διεκδίκησης πρόσβασης root - - - Please sign in to your Union ID first - Παρακαλώ συνδεθείτε πρώτα στο Union ID σας - - - Cannot read your PC information - Αδυναμία ανάγνωσης των πληροφοριών του υπολογιστή σας - - - No network connection - Δεν υπάρχει σύνδεση δικτύου - - - Certificate loading failed, unable to get root access - Η φόρτωση πιστοποιητικού απέτυχε, μη δυνατή η διεκδίκηση πρόσβασης root - - - Signature verification failed, unable to get root access - Επαλήθευση πιστοποίησης απέτυχε, αδυναμία διεκδίκησης πρόσβασης root - - - - dccV23::CreateAccountPage - - Group - Ομάδα - - - Cancel - Ακύρωση - - - Create - Δημιουργία - - - New User - - - - User Type - - - - Username - Όνομα χρήστη - - - Full Name - Πλήρες Όνομα - - - Password - Κωδικός πρόσβασης - - - Repeat Password - Επανάληψη Κωδικού - - - Password Hint - - - - The full name is too long - Το πλήρες όνομα είναι πολύ μεγάλο - - - Passwords do not match - Οι κωδικοί δεν ταιριάζουν - - - Standard User - Τυπικός Χρήστης - - - Administrator - Διαχειριστής - - - Customized - Προσαρμοσμένο - - - Required - Απαιτείται - - - optional - προαιρετικό - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - Επαλήθευση του Policykit απέτυχε - - - Username must be between 3 and 32 characters - Το όνομα χρήστη πρέπει να έχει μήκος μεταξύ 3-32 χαρακτήρων - - - The first character must be a letter or number - Ο πρώτος χαρακτήρας πρέπει να είναι γράμμα ή αριθμός - - - Your username should not only have numbers - Το όνομα χρήστη σας δεν μπορεί να περιέχει μόνο αριθμούς - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Εικόνες - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Προσθήκη Προσαρμοσμένης Συντόμευσης - - - Name - Όνομα - - - Required - Απαιτείται - - - Command - Εντολή - - - Cancel - Ακύρωση - - - Add - Προσθήκη - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Αυτή η συντόμευση αντιτίθεται με την %1, κάντε κλικ στο Προσθήκη για να εφαρμόσετε την συντόμευση άμεσα - - - - dccV23::CustomEdit - - Required - Απαιτείται - - - Cancel - Ακύρωση - - - Save - Αποθήκευση - - - Shortcut - Συντόμευση - - - Name - Όνομα - - - Command - Εντολή - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Αυτή η συντόμευση αντιτίθεται με την %1, κάντε κλικ στο Προσθήκη για να εφαρμόσετε την συντόμευση άμεσα - - - - dccV23::CustomItem - - Shortcut - Συντόμευση - - - Please enter a shortcut - Παρακαλούμε εισάγετε μια συντόμευση - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Αίτηση Πρόσβασης Root - - - Online - Σε σύνδεση - - - Offline - Χωρίς σύνδεση - - - Please sign in to your Union ID first and continue - Παρακαλώ συνδεθείτε πρώτα στο Union ID σας και συνεχίστε - - - Next - Επόμενο - - - Export PC Info - Εξαγωγή πληροφοριών υπολογιστή - - - Import Certificate - Εισαγωγή Πιστοποιητικού - - - 1. Export your PC information - 1. Εξάγετε τις πληροφοριές του υπολογιστή σας - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Πηγαίνετε στο https://www.chinauos.com/developMode για να κατεβάσετε ένα πιστοποιητικό εκτός σύνδεσης - - - 3. Import the certificate - 3. Εισάγετε το πιστοποιητικό - - - - dccV23::DeveloperModeWidget - - Request Root Access - Αίτηση Πρόσβασης Root - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Η λειτουργία προγραμματιστή σας δίνει την δυνατότητα να αποκτήσετε προνόμια root, να εγκαταστήσετε και να τρέξετε μη πιστοποιημένες εφαρμογές οι οποίες δεν βρίσκονται στο app store, αλλά το σύστημα σας μπορεί να υποστεί ζημιά, παρακαλώ χρησημοποιήστε την με προσοχή. - - - The feature is not available at present, please activate your system first - Η λειτουργία για το παρών δεν είναι διαθέσιμη, παρακαλώ ενεργοποιήστε πρώτα το σύστημα σας - - - Failed to get root access - Αποτυχία διεκδίκησης πρόσβασης root - - - Please sign in to your Union ID first - Παρακαλώ συνδεθείτε πρώτα στο Union ID σας - - - Cannot read your PC information - Αδυναμία ανάγνωσης των πληροφοριών του υπολογιστή σας - - - No network connection - Δεν υπάρχει σύνδεση δικτύου - - - Certificate loading failed, unable to get root access - Η φόρτωση πιστοποιητικού απέτυχε, μη δυνατή η διεκδίκηση πρόσβασης root - - - Signature verification failed, unable to get root access - Επαλήθευση πιστοποίησης απέτυχε, αδυναμία διεκδίκησης πρόσβασης root - - - To make some features effective, a restart is required. Restart now? - Για να τεθούν σε ισχύ κάποιες λειτουργίες, απαιτείται επανεκκίνηση. Επανεκκίνηση τώρα; - - - Cancel - Ακύρωση - - - Restart Now - Επανεκκίνηση Τώρα - - - Root Access Allowed - Παραχωρήθηκε Πρόσβαση Root - - - - dccV23::DisplayPlugin - - Display - Εμφάνιση - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Δοκιμή Διπλού κλικ - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Επανάληψη Καθυστέρησης - - - Short - Κοντό - - - Long - Μακρύ - - - Repeat Rate - Ρυθμός επανάληψης - - - Slow - Αργά - - - Fast - Γρήγορα - - - Test here - Δοκιμάστε εδώ - - - Numeric Keypad - Αριθμητικό Πληκτρολόγιο - - - Caps Lock Prompt - Ειδοποίηση πλήκτρου Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Αριστερό Χέρι - - - Disable touchpad while typing - Απενεργοποίηση του Touchpad όταν πληκτρολογείτε - - - Scrolling Speed - Ταχύτητα Κύλισης - - - Double-click Speed - Ταχύτητα Διπλού Κλικ - - - Slow - Αργά - - - Fast - Γρήγορα - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Διάταξη Πληκτρολογίου - - - Edit - Επεξεργασία - - - Add Keyboard Layout - Προσθήκη Διάταξης Πληκτρολογίου - - - Done - Τέλος - - - - dccV23::KeyboardLayoutDialog - - Cancel - Ακύρωση - - - Add - Προσθήκη - - - Add Keyboard Layout - Προσθήκη Διάταξης Πληκτρολογίου - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Πληκτρολόγιο και Γλώσσα - - - Keyboard - Πληκτρολόγιο - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Διάταξη Πληκτρολογίου - - - Language - Γλώσσα - - - Shortcuts - Συντομεύσεις - - - - dccV23::MainWindow - - Help - Βοήθεια - - - - dccV23::ModifyPasswdPage - - Change Password - Αλλαγή Κωδικού Πρόσβασης - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Τρέχων Κωδικός Πρόσβασης - - - Forgot password? - - - - New Password - Νέος Κωδικός Πρόσβασης - - - Repeat Password - Επανάληψη Κωδικού - - - Password Hint - - - - Cancel - Ακύρωση - - - Save - Αποθήκευση - - - Passwords do not match - Οι κωδικοί δεν ταιριάζουν - - - Required - Απαιτείται - - - Optional - Προαιρετικό - - - Password cannot be empty - Ο κωδικός πρόσβασης δεν μπορεί να είναι κενός - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Λανθασμένος κωδικός πρόσβασης - - - New password should differ from the current one - Ο νέος κωδικός πρόσβασης πρέπει να διαφέρει από τον ισχύοντα - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Συγκέντρωση Παραθύρων - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Ποντίκι - - - General - Γενικά - - - Touchpad - Touchpad - - - TrackPoint - Trackpoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Ταχύτητα Δείκτη - - - Mouse Acceleration - Επιτάγχυνση Ποντικιού - - - Disable touchpad when a mouse is connected - Απενεργοποίηση του χειριστηρίου αφής όταν είναι συνδεδεμένο ένα ποντίκι - - - Natural Scrolling - Κύλιση πραγματικής κατεύθυνσης - - - Slow - Αργά - - - Fast - Γρήγορα - - - - dccV23::MultiScreenWidget - - Multiple Displays - Πολλαπλές Οθόνες - /display/Multiple Displays - - - Mode - Λειτουργία - /display/Mode - - - Main Screen - Κύρια Οθόνη - /display/Main Scree - - - Duplicate - Διπλότυπο - - - Extend - Επέκταση - - - Only on %1 - Μόνο στο-α %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Ειδοποίηση - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Ανίχνευση Παλάμης - - - Minimum Contact Surface - Ελάχιστη Επιφάνεια Επαφής - - - Minimum Pressure Value - Ελάχιστη Τιμή Πίεσης - - - Disable the option if touchpad doesn't work after enabled - Απενεργοποιήστε την επιλογή αν το χειριστήριο αφής δεν δουλεύει μετά την ενεργοποίηση της - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Πολιτική Απορρήτου - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Αντιλαμβανόμαστε την σημασία των προσωπικών σας δεδομένων. Για αυτό έχουμε την Πολιτική Απορρήτου η οποία καλύπτει το πώς συλλέγουμε, χρησημοποιούμε, μεταφέρουμε, φανερώνουμε δημόσια, και αποθηκεύουμε τις πληροφορίες σας.</p><p>Μπορείτε<a href="%1">να πατήσετε εδώ</a>για να δείτε την πιο πρόσφατη πολιτική απορρήτου ή/και να την δείτε στο διαδύκτιο επισκέπτοντας το <a href="%1"> %1</a>. Παρακαλώ διαβάστε προσεκτικά και κατανοήστε πλήρως τις πρακτικές μας στο απόρρητο των πελατών. Εάν έχετε κάποια ερώτηση, παρακαλώ επικοινωνήστε μας στο: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Ο κωδικός πρόσβασης δεν μπορεί να είναι κενός - - - Password must have at least %1 characters - Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον %1 χαρακτήρες - - - Password must be no more than %1 characters - Ο κωδικός πρόσβασης δεν πρέπει να είναι περισσότερο από %1 χαρακτήρες - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Ο κωδικός πρόσβασης μπορεί να περιέχει μόνο λατινικούς χαρακτήρες (με διάκριση πεζών-κεφαλαίων), αριθμούς ή ειδικούς χαρακτήρες (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Ο κωδικός πρόσβασης πρέπει να περιέχει κεφαλαία και πεζά γράμματα, αριθμούς και σύμβολα (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Ο κωδικός πρόσβασης δεν μπορεί να περιέχει πάνω από 4 παλινδρομικούς χαρακτήρες - - - Do not use common words and combinations as password - Μην χρησημοποιήτε συνηθείς λέξεις και συνδυασμούς αυτών ως κωδικό πρόσβασης - - - Create a strong password please - Παρακαλώ δημιουργήστε έναν ισχυρό κωδικό πρόσβασης - - - It does not meet password rules - Δεν πληρεί τις προϋποθέσεις κωδικού πρόσβασης - - - - dccV23::RefreshRateWidget - - Refresh Rate - Ρυθμός Ανανέωσης - - - Hz - Hz - - - Recommended - Απαραίτητο - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Είστε σίγουρος ότι θέλετε να διαγράψετε αυτόν τον λογαριασμό; - - - Delete account directory - Διαγραφή φακέλου λογαριασμού - - - Cancel - Ακύρωση - - - Delete - Διαγραφή - - - - dccV23::ResolutionWidget - - Resolution - Ανάλυση - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Προεπιλογή - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Απαραίτητο - - - - dccV23::RotateWidget - - Rotation - Περιστροφή - /display/Rotation - - - Standard - Τυπικός - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Η οθόνη υποστηριζεί μόνο 100% κλίμακα οθόνης - - - Display Scaling - Κλίμακα Οθόνης - - - - dccV23::SearchInput - - Search - Αναζήτηση - - - - dccV23::SecondaryScreenDialog - - Brightness - Φωτεινότητα - - - - dccV23::SecurityLevelItem - - Weak - Αδύναμο - - - Medium - Μεσαίο - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Ακύρωση - - - Confirm - Επιβεβαίωση - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Επεξεργασία - - - Done - Τέλος - - - - dccV23::ShortCutSettingWidget - - System - Σύστημα - - - Window - Παράθυρο - - - Workspace - Χώρος εργασίας - - - Assistive Tools - Βοηθητικά Εργαλεία - - - Custom Shortcut - Προσαρμοσμένη Συντόμευση - - - Restore Defaults - Ανάκτηση Προεπιλογών - - - Shortcut - Συντόμευση - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Παρακαλώ Επαναφέρετε την Συντόμευση - - - Cancel - Ακύρωση - - - Replace - Αντικατάσταση - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Αυτή η συντόμευση αντιτίθεται με την %1, κάντε κλικ στο Αντικατάσταση για να εφαρμόσετε την συντόμευση άμεσα - - - - dccV23::ShortcutItem - - Enter a new shortcut - Εισάγετε μια νέα συντόμευση - - - - dccV23::SystemInfoModel - - available - διαθέσιμος - - - - dccV23::SystemInfoModule - - About This PC - Πληροφορίες Υπολογιστή - - - Computer Name - Όνομα Υπολογιστή - - - systemInfo - - - - OS Name - - - - Version - Έκδοση - - - Edition - - - - Type - Τύπος - - - Authorization - Εξουσιοδότηση - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Άδεια Έκδοσης - - - End User License Agreement - Συμφωνία Άδειας Χρήσης Τελικού Χρήστη - - - Privacy Policy - Πολιτική Απορρήτου - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Πληροφορίες Συστήματος - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Ακύρωση - - - Add - Προσθήκη - - - Add System Language - Προσθήκη Γλώσσας Συστήματος - - - - dccV23::SystemLanguageWidget - - Edit - Επεξεργασία - - - Language List - Λίστα Γλωσσών - - - Add Language - - - - Done - Τέλος - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Μην Ενοχλείτε (DND) - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Οι ειδοποιήσεις εφαρμογών δεν θα εμφανίζονται στην επιφάνεια εργασίας και οι ήχοι θα απενεργοποιηθούν, αλλά μπορείτε να δείτε όλα τα μηνύματα στο κέντρο ειδοποιήσεων - - - When the screen is locked - Όταν η οθόνη είναι κλειδωμένη - - - - dccV23::TimeSlotItem - - From - Από - - - To - Σε - - - - dccV23::TouchScreenModule - - Touch Screen - Οθόνη Αφής - - - Select your touch screen when connected or set it here. - Επιλέξτε την οθόνη αφής σας όταν συνδεθεί ή ορίστε την εδώ. - - - Confirm - Επιβεβαίωση - - - Cancel - Ακύρωση - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Ταχύτητα Δείκτη - - - Slow - Αργά - - - Fast - Γρήγορα - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Συμμετοχή στο Πρόγραμμα Εμπειρίας Χρήστη - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Με την συμμετοχή στο Πρόγραμμα Εμπειρίας Χρήστη συναινείτε στην συλλογή και χρήση μας πληροφοριών της συσκευής, του συστήματος και των εφαρμογών σας. Αν αρνείστε την συλλογή και χρήση μας των προαναφερόμενων πληροφοριών, μην συμμετάσχετε στο Πρόγραμμα Εμπειρίας Χρήστη. Για λεπτομέριες συμβουλευτείτε την Πολιτική Απορρήτου Deepin (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Με την συμμετοχή στο Πρόγραμμα Εμπειρίας Χρήστη συναινείτε στην συλλογή και χρήση μας πληροφοριών της συσκευής, του συστήματος και των εφαρμογών σας. Αν αρνείστε την συλλογή και χρήση μας των προαναφερόμενων πληροφοριών, μην συμμετάσχετε στο Πρόγραμμα Εμπειρίας Χρήστη. Για να μάθετε περισσότερα σχετικά με την διαχείριση των δεδομένων σας, παρακαλώ συμβουλευτείτε την Πολιτική Απορρήτου UnionTechOS (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Έτος - - - Month - Μήνας - - - Day - Ημέρα - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Απαιτείται πιστοποίηση για αλλαγή του NTP διακομιστή - - - - DefAppModule - - Default Applications - Προεπιλεγμένες Εφαρμογές - - - - DefAppPlugin - - Webpage - Ιστοσελίδα - - - Mail - Αλληλογραφία - - - Text - Κείμενο - - - Music - Μουσική - - - Video - Βίντεο - - - Picture - Εικόνα - - - Terminal - Τερματικό - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Ακύρωση - - - Next - Επόμενο - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Προσθήκη στην γραμμή εργασιών - - - Multiple Displays - Πολλαπλές Οθόνες - - - Show Dock - - - - Mode - Λειτουργία - - - Position - Θέση - - - Status - Κατάσταση - - - Show recent apps in Dock - - - - Size - Μέγεθος - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Μοντέρνα λειτουργία - - - Efficient mode - Αποτελεσματική λειτουργία - - - Top - Πάνω μέρος - - - Bottom - Κάτω μέρος - - - Left - Αριστερά - - - Right - Δεξιά - - - Location - Τοποθεσία - - - Keep shown - - - - Keep hidden - Κρατήστε κρυφό - - - Smart hide - Έξυπνη απόκρυψη - - - Small - Μικρό - - - Large - Μεγάλο - - - On screen where the cursor is - Στην οθόνη όπου βρίσκεται ο κέρσορας - - - Only on main screen - Μόνο στην κύρια οθόνη - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Επεξεργασία - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Τέλος - - - Add Face - - - - The name already exists - Το όνομα υπάρχει ήδη - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Προσθήκη Αποτυπώματος - - - Cancel - Ακύρωση - - - Next - Επόμενο - - - - FingerInfoWidget - - Place your finger - Τοποθετήστε το δάκτυλο σας - - - Place your finger firmly on the sensor until you're asked to lift it - Τοποθετήστε το δάκτυλο σας σταθερά στον αισθητήρα μέχρι να σας ζητηθεί να το σηκώσετε - - - Scan the edges of your fingerprint - Σάρωση των ακρών του δακτυλικού σας αποτυπώματος - - - Place the edges of your fingerprint on the sensor - Τοποθετήστε τις άκρες του δακτυλικού σας αποτυπώματος στον αισθητήρα - - - Lift your finger - Σηκώστε το δάκτυλο σας - - - Lift your finger and place it on the sensor again - Σηκώστε το δάκτυλο σας και τοποθετήστε το ξανά στον αισθητήρα - - - Adjust the position to scan the edges of your fingerprint - Προσαρμόστε την θέση για να σαρωθούν οι άκρες του δακτυλικού σας αποτυπώματος - - - Lift your finger and do that again - Σηκώστε το δάκτυλο σας και επαναλάβετε - - - Fingerprint added - Το δακτυλικό αποτύπωμα προστέθηκε - - - - FingerWidget - - Edit - Επεξεργασία - - - Fingerprint Password - Κωδικός Αποτυπώματος - - - You can add up to 10 fingerprints - Μπορείτε να προσθέσετε μέχρι και 10 δακτυλικά αποτυπώματα - - - Done - Τέλος - - - The name already exists - Το όνομα υπάρχει ήδη - - - Add Fingerprint - Προσθήκη Αποτυπώματος - - - - GeneralModule - - General - Γενικά - - - Balanced - Ισορροπημένο - - - Balance Performance - - - - High Performance - Υψηλής Επίδοσης - - - Power Saver - Εξοικονόμηση Ενέργειας - - - Power Plans - Σχέδια Ενέργειας - - - Power Saving Settings - Ρυθμίσεις Εξοικονόμησης Ενέργειας - - - Auto power saving on low battery - Αυτόματη εξοικονόμηση ενέργειας όταν η μπαταρία είναι χαμηλή - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Αυτόματη εξοικονόμηση ενέργειας όταν χρησίμοποιείται η μπαταρία - - - Wakeup Settings - Ρυθμίσεις Αφύπνισης - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Δεν μπορεί να αρχίζει ή να τελειώνει με κάτω παύλες - - - 1~63 characters please - 1~63 χαρακτήρες παρακαλώ - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Επεξεργασία - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Τέλος - - - Add Iris - - - - The name already exists - Το όνομα υπάρχει ήδη - - - Iris - - - - - KeyLabel - - None - Κανένα - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - Συσκευή Εισόδου - - - Automatic Noise Suppression - Αυτόματη Κατάπνιξη Θορύβου - - - Input Volume - Ένταση Εισόδου - - - Input Level - Επίπεδο Εισόδου - - - - PersonalizationDesktopModule - - Desktop - Επιφάνεια εργασίας - - - Window - Παράθυρο - - - Window Effect - Εφέ Παραθύρου - - - Window Minimize Effect - Εφέ Σμίκρυνσης Παραθύρου - - - Transparency - Διαφάνεια - - - Rounded Corner - Στρογγυλοποιημένη Γωνία - - - Scale - Κλίμακα - - - Magic Lamp - Μαγική Λάμπα - - - Small - Μικρό - - - Middle - - - - Large - Μεγάλο - - - - PersonalizationModule - - Personalization - Εξατομίκευση - - - - PersonalizationThemeList - - Cancel - Ακύρωση - - - Save - Αποθήκευση - - - Light - Ελαφριά - - - Dark - Σκούρο - - - Auto - Αυτόματο - - - Default - Προεπιλογή - - - - PersonalizationThemeModule - - Theme - Θέμα - - - Appearance - - - - Accent Color - Χρώμα Ανάδειξης - - - Icon Settings - - - - Icon Theme - Θέμα Εικονιδίων - - - Cursor Theme - Θέμα Κέρσορα - - - Text Settings - - - - Font Size - Μέγεθος Γραμματοσειράς - - - Standard Font - Τυπική Γραμματοσειρά - - - Monospaced Font - Γραμματοσειρά σταθερού πλάτους - - - Light - Ελαφριά - - - Auto - Αυτόματο - - - Dark - Σκούρο - - - - PersonalizationThemeWidget - - Light - Ελαφριά - General - /personalization/General - - - Dark - Σκούρο - General - /personalization/General - - - Auto - Αυτόματο - General - /personalization/General - - - Default - Προεπιλογή - - - - PersonalizationWorker - - Custom - Προσαρμογή - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Το PIN για την σύνδεση με την Bluetooth συσκευή είναι: - - - Cancel - Ακύρωση - - - Confirm - Επιβεβαίωση - - - - PowerModule - - Power - Ενέργεια - - - Battery low, please plug in - Χαμηλή μπαταρία, παρακαλώ συνδέστε - - - Battery critically low - Κρίσιμα χαμηλή μπαταρία - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Κάμερα - - - Microphone - Μικρόφωνο - - - User Folders - - - - Calendar - Ημερολόγιο - - - Screen Capture - - - - - QObject - - Control Center - Κέντρο Ελέγχου - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Ενεργοποιημένο - - - View - Εμφάνιση - - - To be activated - Προς ενεργοποιήση - - - Activate - Ενεργοποίηση - - - Expired - Έχει λήξει - - - In trial period - Σε περίδο δοκιμής - - - Trial expired - Η περίοδος δοκιμής έληξε - - - Touch Screen Settings - Ρυθμίσεις Οθόνης Αφής - - - The settings of touch screen changed - Οι ρυθμίσεις της οθόνης αφής άλλαξαν - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Ακύρωση - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Το σύστημα σας δεν είναι εξουσιοδοτημένο, παρακαλώ ενεργοποιήστε το πρώτα - - - Update successful - Επιτυχής ενημέρωση - - - Failed to update - Αποτυχία ενημέρωσης - - - - SearchInput - - Search - Αναζήτηση - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Ηχητικά Εφέ - - - - SoundModel - - Boot up - Εκκίνηση - - - Shut down - Τερματισμός λειτουργίας - - - Log out - Έξοδος χρήστη - - - Wake up - Αφύπνιση - - - Volume +/- - Ένταση +/- - - - Notification - Ειδοποίηση - - - Low battery - Χαμηλή στάθμη μπαταρίας - - - Send icon in Launcher to Desktop - Αποστολή εικονιδίου εκκινητή στην Επιφάνεια Εργασίας - - - Empty Trash - Αδειάστε τον κάδο απορριμάτων - - - Plug in - Συνδέστε στην πρίζα - - - Plug out - Αποσυνδέστε από την πρίζα - - - Removable device connected - Αφαιρούμενη συσκευή συνδέθηκε - - - Removable device removed - Αφαιρούμενη συσκευή αφαιρέθηκε - - - Error - Σφάλμα - - - - SoundModule - - Sound - Ήχος - - - - SoundPlugin - - Output - Έξοδος - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Είσοδος - - - Sound Effects - Ηχητικά Εφέ - - - Devices - Συσκευές - - - Input Devices - Συσκευές Εισόδου - - - Output Devices - Συσκεύες Εξόδου - - - - SpeakerPage - - Output Device - Συσκευή Εξόδου - - - Mode - Λειτουργία - - - Output Volume - Όγκος εξόδου - - - Volume Boost - Ενίσχυση Ήχου - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Αριστερή/Δεξιά Ισορροπία - - - Left - Αριστερά - - - Right - Δεξιά - - - - TimeSettingModule - - Time Settings - Ρυθμίσεις ώρας - - - Time - Ώρα - - - Auto Sync - Αυτόματος Συγχρονισμός - - - Reset - Επαναφορά - - - Save - Αποθήκευση - - - Server - Διακομιστής - - - Address - Διεύθυνση - - - Required - Απαιτείται - - - Customize - Προσαρμογή - - - Year - Έτος - - - Month - Μήνας - - - Day - Ημέρα - - - - TimeZoneChooser - - Cancel - Ακύρωση - - - Confirm - Επιβεβαίωση - - - Add Timezone - Προσθέστε Ζώνη ώρας - - - Add - Προσθήκη - - - Change Timezone - Αλλαγή Ζώνης Ώρας - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Επαναφορά - - - Save - Αποθήκευση - - - - TimezoneItem - - Tomorrow - Αύριο - - - Yesterday - Χθες - - - Today - Σήμερα - - - %1 hours earlier than local - %1 ώρες νωρίτερα από την τοπική - - - %1 hours later than local - %1 ώρες αργότερα από την τοπική - - - - TimezoneModule - - Timezone List - Λίστα Ζωνών Ώρας - - - System Timezone - Ζώνη ώρας Συστήματος - - - Add Timezone - Προσθέστε Ζώνη ώρας - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Ακύρωση - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - 'Ελεγχος Πάλι - - - Update failed: insufficient disk space - Αποτυχία αναβάθμισης: μη επαρκής χωρητικότητα δίσκου - - - Dependency error, failed to detect the updates - Σφάλμα εξαρτήσεων (dependency), αποτυχία ανίχνευσης ενημερώσεων - - - Restart the computer to use the system and the applications properly - Επανεκκινήστε τον υπολογιστή για να χρησιμοποιήσετε σωστά το σύστημα και τις εφαρμογές - - - Network disconnected, please retry after connected - Το δίκτυο αποσυνδέθηκε, παρακαλώ δοκιμάστε ξανά αφού συνδεθείτε - - - Your system is not authorized, please activate first - Το σύστημα σας δεν είναι εξουσιοδοτημένο, παρακαλώ ενεργοποιήστε το πρώτα - - - This update may take a long time, please do not shut down or reboot during the process - Αυτή η ενημέρωση μπορεί να χρειαστεί αρκετό χρόνο, παρακαλώ μην κάνετε απενεργοποίηση ή επανεκκίνηση κατά την διάρκεια της - - - Updates Available - - - - Current Edition - Τρέχουσα Έκδοση - - - Updating... - Γίνεται ενημέρωση... - - - Update All - - - - Last checking time: - Τελευταίος έλεγχος: - - - Your system is up to date - Το σύστημά σας είναι ενημερωμένο - - - Check for Updates - Έλεγχος για Ενημερώσεις - - - Checking for updates, please wait... - Έλεγχος για ενημερώσεις, παρακαλώ περιμένετε... - - - The newest system installed, restart to take effect - Η τελευταία έκδοση συστήματος εγκαταστάθηκε, επανεκκινήστε για να γίνει εφαρμογή των αλλαγών - - - %1% downloaded (Click to pause) - %1% κατέβηκαν (Πατήστε για παύση) - - - %1% downloaded (Click to continue) - %1% κατέβηκαν (Πατήστε για συνέχιση) - - - Your battery is lower than 50%, please plug in to continue - Η μπαταρία σας έχει λιγότερο από 50%, παρακαλώ συνδέστε την πρίζα για να συνεχίσετε - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Παρακαλώ εξασφαλίστε επαρκή ενέργεια για επανεκκίνηση, και μην απενεργοποιήσετε ή αποσυνδέσετε την συσκευή σας απο την πρίζα - - - Size - Μέγεθος - - - - UpdateModule - - Updates - Ενημερώσεις - - - - UpdatePlugin - - Check for Updates - Έλεγχος για Ενημερώσεις - - - - UpdateSettingItem - - Insufficient disk space - Μη επαρκής χωρητικότητα δίσκου - - - Update failed: insufficient disk space - Αποτυχία αναβάθμισης: μη επαρκής χωρητικότητα δίσκου - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Η τελευταία έκδοση συστήματος εγκαταστάθηκε, επανεκκινήστε για να γίνει εφαρμογή των αλλαγών - - - Waiting - Αναμονή - - - Backing up - - - - System backup failed - Η δημιουργία αντιγράφου ασφαλείας συστήματος απέτυχε - - - Release date: - - - - Server - Διακομιστής - - - Desktop - Επιφάνεια εργασίας - - - Version - Έκδοση - - - - UpdateSettingsModule - - Update Settings - Ρυθμίσεις Ενημερώσεων - - - System - Σύστημα - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - Ενεργοποιήστε το για να κατέβουν αυτόματα οι ενημερώσεις με ασύρματο ή ενσύρματο δίκτυο - - - Auto Install Updates - - - - Updates Notification - Ειδοποιήση Ενημερώσεων - - - Clear Package Cache - Εκκαθάριση Μνήμης Cache Πακέτων - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Ενημερώσεις Συστήματος - - - Security Updates - Ενημερώσεις Ασφαλείας - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Τρέχουσα Έκδοση - - - - UpdateWorker - - System Updates - Ενημερώσεις Συστήματος - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - Ενημερώσεις Ασφαλείας - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Με Μπαταρία - - - Never - Ποτέ - - - Shut down - Τερματισμός λειτουργίας - - - Suspend - Αναστολή λειτουργίας - - - Hibernate - Αδρανοποίηση - - - Turn off the monitor - Απενεργοποίηση της οθόνης - - - Do nothing - Να μην γίνει τίποτα - - - 1 Minute - 1 Λεπτό - - - %1 Minutes - %1 Λεπτά - - - 1 Hour - 1 Ώρα - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Κλείδωμα οθόνης μετά από - - - Computer suspends after - - - - Computer will suspend after - Ο υπολογιστής θα μπει σε κατάσταση αναστολής μετά από - - - When the lid is closed - Όταν το καπάκι κλείνει - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Χαμηλή στάθμη μπαταρίας - - - Auto suspend battery level - Αυτόματη αναστολή λειτουργίας βάσει επιπέδου μπαταρίας - - - Battery Management - - - - Display remaining using and charging time - Εμφάνιση διαθέσιμου χρόνου και χρόνου φόρτισης - - - Maximum capacity - Μέγιστη χωρητικότητα - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Στην πρίζα - - - 1 Minute - 1 Λεπτό - - - %1 Minutes - %1 Λεπτά - - - 1 Hour - 1 Ώρα - - - Never - Ποτέ - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Κλείδωμα οθόνης μετά από - - - Computer suspends after - - - - When the lid is closed - Όταν το καπάκι κλείνει - - - When the power button is pressed - - - - Shut down - Τερματισμός λειτουργίας - - - Suspend - Αναστολή λειτουργίας - - - Hibernate - Αδρανοποίηση - - - Turn off the monitor - Απενεργοποίηση της οθόνης - - - Show the shutdown Interface - - - - Do nothing - Να μην γίνει τίποτα - - - - WacomModule - - Drawing Tablet - Ταμπλέτα Σχεδιασμού - - - Mode - Λειτουργία - - - Pressure Sensitivity - Ευαισθησία Πίεσης - - - Pen - Γραφίδα - - - Mouse - Ποντίκι - - - Light - Ελαφριά - - - Heavy - Βαρύς - - - - main - - Control Center provides the options for system settings. - Το Κέντρο Ελέγχου παρέχει επιλογές για ρυθμίσεις συστήματος - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_el_GR.ts b/dcc-old/translations/dde-control-center_el_GR.ts deleted file mode 100644 index a50f5460c3..0000000000 --- a/dcc-old/translations/dde-control-center_el_GR.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_en.ts b/dcc-old/translations/dde-control-center_en.ts deleted file mode 100644 index d04b4b071b..0000000000 --- a/dcc-old/translations/dde-control-center_en.ts +++ /dev/null @@ -1,3987 +0,0 @@ - - - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AdvancedSettingModule - - Advanced Setting - - - - Audio Framework - - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - Start setting the new boot animation, please wait for a minute - - - - Setting new boot animation finished - - - - The settings will be applied after rebooting the system - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom Format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PlyMouthModule - - Boot Animation - - - - Small Size - - - - Big Size - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region Format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System Management - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Alignment - - - - Position - - - - Status - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Align center - - - - Align left - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Opacity - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and Format - - - - Country or Region - - - - Area - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Custom Format - - - - Operating system and applications may provide you with local content based on your country and region. - - - - Operating system and applications may set date and time formats based on regional formats. - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Updating... - - - - Download Updates - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Current Edition - - - - The backup update function is currently disabled. If the upgrade fails, the system cannot be rolled back! - - - - Cancel - - - - Update Now - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - System backup failed, space is full - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Backup updates - - - - Ensuring normal system rollback in case of upgrade failure - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_en_AU.ts b/dcc-old/translations/dde-control-center_en_AU.ts deleted file mode 100644 index d73a81a835..0000000000 --- a/dcc-old/translations/dde-control-center_en_AU.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - My Devices - My Devices - - - Other Devices - Other Devices - - - Show Bluetooth devices without names - - - - Connect - Connect - - - Disconnect - Disconnect - - - Rename - - - - Send Files - - - - Ignore this device - Ignore this device - - - Connecting - Connecting - - - Disconnecting - Disconnecting - - - - AddButtonWidget - - Add Application - Add Application - - - Open Desktop file - Open Desktop file - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Cancel - - - Next - Next - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Done - - - Failed to enroll your face - - - - Try Again - - - - Close - Close - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Cancel - - - Next - Next - - - Iris enrolled - - - - Done - Done - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - No more than 15 characters - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Fingerprint - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Connected - - - Not connected - Not connected - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Fingerprint1 - - - Fingerprint2 - Fingerprint2 - - - Fingerprint3 - Fingerprint3 - - - Fingerprint4 - Fingerprint4 - - - Fingerprint5 - Fingerprint5 - - - Fingerprint6 - Fingerprint6 - - - Fingerprint7 - Fingerprint7 - - - Fingerprint8 - Fingerprint8 - - - Fingerprint9 - Fingerprint9 - - - Fingerprint10 - Fingerprint10 - - - Scan failed - Scan failed - - - The fingerprint already exists - The fingerprint already exists - - - Please scan other fingers - Please scan other fingers - - - Unknown error - Unknown error - - - Scan suspended - Scan suspended - - - Cannot recognize - Cannot recognise - - - Moved too fast - Moved too fast - - - Finger moved too fast, please do not lift until prompted - Finger moved too fast, please do not lift until prompted - - - Unclear fingerprint - Unclear fingerprint - - - Clean your finger or adjust the finger position, and try again - Clean your finger or adjust the finger position, and try again - - - Already scanned - Already scanned - - - Adjust the finger position to scan your fingerprint fully - Adjust the finger position to scan your fingerprint fully - - - Finger moved too fast. Please do not lift until prompted - Finger moved too fast. Please do not lift until prompted - - - Lift your finger and place it on the sensor again - Lift your finger and place it on the sensor again - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Cancel - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Cancel - - - Confirm - button - Confirm - - - - dccV23::AccountSpinBox - - Always - Always - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Username - - - Change Password - Change Password - - - Delete User - - - - User Type - - - - Auto Login - Auto Login - - - Login Without Password - Login Without Password - - - Validity Days - Validity Days - - - Group - Group - - - The full name is too long - The full name is too long - - - Standard User - Standard User - - - Administrator - Administrator - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Full Name - - - Go to Settings - Go to Settings - - - Cancel - Cancel - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Your host was removed from the domain server successfully - - - Your host joins the domain server successfully - Your host joins the domain server successfully - - - Your host failed to leave the domain server - Your host failed to leave the domain server - - - Your host failed to join the domain server - Your host failed to join the domain server - - - AD domain settings - AD domain settings - - - Password not match - Password not match - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Show notifications from %1 on desktop and in the notification center. - - - Play a sound - Play a sound - - - Show messages on lockscreen - Show messages on lockscreen - - - Show in notification center - - - - Show message preview - Show message preview - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Cancel - - - Save - Save - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Images - - - - dccV23::BootWidget - - Updating... - Updating... - - - Startup Delay - Startup Delay - - - Theme - Theme - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Switch theme on to view it in boot menu - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Change Password - - - Boot Menu - Boot Menu - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Required - - - Cancel - button - Cancel - - - Confirm - button - Confirm - - - Password cannot be empty - Password cannot be empty - - - Passwords do not match - Passwords do not match - - - - dccV23::BrightnessWidget - - Brightness - Brightness - - - Color Temperature - Color Temperature - - - Auto Brightness - Auto-Brightness - - - Night Shift - Night Shift - - - The screen hue will be auto adjusted according to your location - The screen hue will be auto adjusted according to your location - - - Change Color Temperature - Change Color Temperature - - - Cool - Cool - - - Warm - Warm - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - My Devices - - - Other Devices - Other Devices - - - - dccV23::CommonInfoPlugin - - General Settings - General Settings - - - Boot Menu - Boot Menu - - - Developer Mode - Developer Mode - - - User Experience Program - User Experience Program - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Agree and Join User Experience Program - - - The Disclaimer of Developer Mode - The Disclaimer of Developer Mode - - - Agree and Request Root Access - Agree and Request Root Access - - - Failed to get root access - Failed to get root access - - - Please sign in to your Union ID first - Please sign in to your Union ID first - - - Cannot read your PC information - Cannot read your PC information - - - No network connection - No network connection - - - Certificate loading failed, unable to get root access - Certificate loading failed, unable to get root access - - - Signature verification failed, unable to get root access - Signature verification failed, unable to get root access - - - - dccV23::CreateAccountPage - - Group - Group - - - Cancel - Cancel - - - Create - Create - - - New User - - - - User Type - - - - Username - Username - - - Full Name - Full Name - - - Password - Password - - - Repeat Password - Repeat Password - - - Password Hint - - - - The full name is too long - The full name is too long - - - Passwords do not match - Passwords do not match - - - Standard User - Standard User - - - Administrator - Administrator - - - Customized - Customized - - - Required - Required - - - optional - optional - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Username must be between 3 and 32 characters - - - The first character must be a letter or number - The first character must be a letter or number - - - Your username should not only have numbers - Your username should not only have numbers - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Images - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Add Custom Shortcut - - - Name - Name - - - Required - Required - - - Command - Command - - - Cancel - Cancel - - - Add - Add - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - dccV23::CustomEdit - - Required - Required - - - Cancel - Cancel - - - Save - Save - - - Shortcut - Shortcut - - - Name - Name - - - Command - Command - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - dccV23::CustomItem - - Shortcut - Shortcut - - - Please enter a shortcut - Please enter a shortcut - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Request Root Access - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Please sign in to your Union ID first and continue - - - Next - Next - - - Export PC Info - Export PC Info - - - Import Certificate - Import Certificate - - - 1. Export your PC information - 1. Export your PC information - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - 3. Import the certificate - 3. Import the certificate - - - - dccV23::DeveloperModeWidget - - Request Root Access - Request Root Access - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - The feature is not available at present, please activate your system first - The feature is not available at present, please activate your system first - - - Failed to get root access - Failed to get root access - - - Please sign in to your Union ID first - Please sign in to your Union ID first - - - Cannot read your PC information - Cannot read your PC information - - - No network connection - No network connection - - - Certificate loading failed, unable to get root access - Certificate loading failed, unable to get root access - - - Signature verification failed, unable to get root access - Signature verification failed, unable to get root access - - - To make some features effective, a restart is required. Restart now? - To make some features effective, a restart is required. Restart now? - - - Cancel - Cancel - - - Restart Now - Restart Now - - - Root Access Allowed - Root Access Allowed - - - - dccV23::DisplayPlugin - - Display - Display - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Double-click Test - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Repeat Delay - - - Short - Short - - - Long - Long - - - Repeat Rate - Repeat Rate - - - Slow - Slow - - - Fast - Fast - - - Test here - Test here - - - Numeric Keypad - Numeric Keypad - - - Caps Lock Prompt - Caps Lock Prompt - - - - dccV23::GeneralSettingWidget - - Left Hand - Left Hand - - - Disable touchpad while typing - Disable touchpad while typing - - - Scrolling Speed - Scrolling Speed - - - Double-click Speed - Double-click Speed - - - Slow - Slow - - - Fast - Fast - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Keyboard Layout - - - Edit - Edit - - - Add Keyboard Layout - Add Keyboard Layout - - - Done - Done - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancel - - - Add - Add - - - Add Keyboard Layout - Add Keyboard Layout - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Keyboard and Language - - - Keyboard - Keyboard - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Keyboard Layout - - - Language - Language - - - Shortcuts - Shortcuts - - - - dccV23::MainWindow - - Help - Help - - - - dccV23::ModifyPasswdPage - - Change Password - Change Password - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Current Password - - - Forgot password? - - - - New Password - New Password - - - Repeat Password - Repeat Password - - - Password Hint - - - - Cancel - Cancel - - - Save - Save - - - Passwords do not match - Passwords do not match - - - Required - Required - - - Optional - Optional - - - Password cannot be empty - Password cannot be empty - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Wrong password - - - New password should differ from the current one - New password should differ from the current one - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Mouse - - - General - General - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Pointer Speed - - - Mouse Acceleration - Mouse Acceleration - - - Disable touchpad when a mouse is connected - Disable touchpad when a mouse is connected - - - Natural Scrolling - Natural Scrolling - - - Slow - Slow - - - Fast - Fast - - - - dccV23::MultiScreenWidget - - Multiple Displays - Multiple Displays - /display/Multiple Displays - - - Mode - Mode - /display/Mode - - - Main Screen - Main Screen - /display/Main Scree - - - Duplicate - Duplicate - - - Extend - Extend - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notification - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Palm Detection - - - Minimum Contact Surface - Minimum Contact Surface - - - Minimum Pressure Value - Minimum Pressure Value - - - Disable the option if touchpad doesn't work after enabled - Disable the option if touchpad doesn't work after enabled - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Privacy Policy - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - Password cannot be empty - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - Password must be no more than %1 characters - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - Refresh Rate - - - Hz - Hz - - - Recommended - Recommended - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Are you sure you want to delete this account? - - - Delete account directory - Delete account directory - - - Cancel - Cancel - - - Delete - Delete - - - - dccV23::ResolutionWidget - - Resolution - Resolution - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Default - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Recommended - - - - dccV23::RotateWidget - - Rotation - Rotation - /display/Rotation - - - Standard - Standard - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - The monitor only supports 100% display scaling - - - Display Scaling - Display Scaling - - - - dccV23::SearchInput - - Search - Search - - - - dccV23::SecondaryScreenDialog - - Brightness - Brightness - - - - dccV23::SecurityLevelItem - - Weak - Weak - - - Medium - Medium - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Cancel - - - Confirm - Confirm - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Edit - - - Done - Done - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - Window - - - Workspace - Workspace - - - Assistive Tools - Assistive Tools - - - Custom Shortcut - Custom Shortcut - - - Restore Defaults - Restore Defaults - - - Shortcut - Shortcut - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Please Reset Shortcut - - - Cancel - Cancel - - - Replace - Replace - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - dccV23::ShortcutItem - - Enter a new shortcut - Enter a new shortcut - - - - dccV23::SystemInfoModel - - available - available - - - - dccV23::SystemInfoModule - - About This PC - About This PC - - - Computer Name - Computer Name - - - systemInfo - - - - OS Name - - - - Version - Version - - - Edition - - - - Type - Type - - - Authorization - Authorisation - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Edition License - - - End User License Agreement - End User License Agreement - - - Privacy Policy - Privacy Policy - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - System Info - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancel - - - Add - Add - - - Add System Language - Add System Language - - - - dccV23::SystemLanguageWidget - - Edit - Edit - - - Language List - Language List - - - Add Language - - - - Done - Done - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Do Not Disturb - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - When the screen is locked - When the screen is locked - - - - dccV23::TimeSlotItem - - From - From - - - To - To - - - - dccV23::TouchScreenModule - - Touch Screen - Touch Screen - - - Select your touch screen when connected or set it here. - Select your touch screen when connected or set it here. - - - Confirm - Confirm - - - Cancel - Cancel - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Pointer Speed - - - Slow - Slow - - - Fast - Fast - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Join User Experience Program - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Year - - - Month - Month - - - Day - Day - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Authentication is required to change NTP server - - - - DefAppModule - - Default Applications - Default Applications - - - - DefAppPlugin - - Webpage - Webpage - - - Mail - Mail - - - Text - Text - - - Music - Music - - - Video - Video - - - Picture - Picture - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Cancel - - - Next - Next - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - Multiple Displays - - - Show Dock - - - - Mode - Mode - - - Position - - - - Status - Status - - - Show recent apps in Dock - - - - Size - Size - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - Top - - - Bottom - Bottom - - - Left - Left - - - Right - Right - - - Location - Location - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Edit - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Done - - - Add Face - - - - The name already exists - The name already exists - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Add Fingerprint - - - Cancel - Cancel - - - Next - Next - - - - FingerInfoWidget - - Place your finger - Place your finger - - - Place your finger firmly on the sensor until you're asked to lift it - Place your finger firmly on the sensor until you're asked to lift it - - - Scan the edges of your fingerprint - Scan the edges of your fingerprint - - - Place the edges of your fingerprint on the sensor - Place the edges of your fingerprint on the sensor - - - Lift your finger - Lift your finger - - - Lift your finger and place it on the sensor again - Lift your finger and place it on the sensor again - - - Adjust the position to scan the edges of your fingerprint - Adjust the position to scan the edges of your fingerprint - - - Lift your finger and do that again - Lift your finger and do that again - - - Fingerprint added - Fingerprint added - - - - FingerWidget - - Edit - Edit - - - Fingerprint Password - Fingerprint Password - - - You can add up to 10 fingerprints - You can add up to 10 fingerprints - - - Done - Done - - - The name already exists - The name already exists - - - Add Fingerprint - Add Fingerprint - - - - GeneralModule - - General - General - - - Balanced - Balanced - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - Power Saving Settings - - - Auto power saving on low battery - Auto power saving on low battery - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Auto power saving on battery - - - Wakeup Settings - Wakeup Settings - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Edit - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Done - - - Add Iris - - - - The name already exists - The name already exists - - - Iris - - - - - KeyLabel - - None - None - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Input Volume - - - Input Level - Input Level - - - - PersonalizationDesktopModule - - Desktop - Desktop - - - Window - Window - - - Window Effect - Window Effect - - - Window Minimize Effect - Window Minimize Effect - - - Transparency - Transparency - - - Rounded Corner - - - - Scale - Scale - - - Magic Lamp - Magic Lamp - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - Personalisation - - - - PersonalizationThemeList - - Cancel - Cancel - - - Save - Save - - - Light - Light - - - Dark - Dark - - - Auto - Auto - - - Default - Default - - - - PersonalizationThemeModule - - Theme - Theme - - - Appearance - - - - Accent Color - Accent Color - - - Icon Settings - - - - Icon Theme - Icon Theme - - - Cursor Theme - Cursor Theme - - - Text Settings - - - - Font Size - - - - Standard Font - Standard Font - - - Monospaced Font - Monospaced Font - - - Light - Light - - - Auto - Auto - - - Dark - Dark - - - - PersonalizationThemeWidget - - Light - Light - General - /personalization/General - - - Dark - Dark - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Default - - - - PersonalizationWorker - - Custom - Custom - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - The PIN for connecting to the Bluetooth device is: - - - Cancel - Cancel - - - Confirm - Confirm - - - - PowerModule - - Power - Power - - - Battery low, please plug in - Battery low, please plug in - - - Battery critically low - Battery critically low - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Camera - - - Microphone - Microphone - - - User Folders - - - - Calendar - Calendar - - - Screen Capture - - - - - QObject - - Control Center - Control Center - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Activated - - - View - View - - - To be activated - To be activated - - - Activate - Activate - - - Expired - Expired - - - In trial period - In trial period - - - Trial expired - Trial expired - - - Touch Screen Settings - Touch Screen Settings - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Cancel - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Your system is not authorised, please activate first - - - Update successful - Update successful - - - Failed to update - Failed to update - - - - SearchInput - - Search - Search - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Sound Effects - - - - SoundModel - - Boot up - Boot up - - - Shut down - Shut down - - - Log out - Log out - - - Wake up - Wake up - - - Volume +/- - Volume +/- - - - Notification - Notification - - - Low battery - Low battery - - - Send icon in Launcher to Desktop - Send icon in Launcher to Desktop - - - Empty Trash - Empty Trash - - - Plug in - Plug in - - - Plug out - Plug out - - - Removable device connected - Removable device connected - - - Removable device removed - Removable device removed - - - Error - Error - - - - SoundModule - - Sound - Sound - - - - SoundPlugin - - Output - Output - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Input - - - Sound Effects - Sound Effects - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Mode - - - Output Volume - Output Volume - - - Volume Boost - Volume Boost - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Left/Right Balance - - - Left - Left - - - Right - Right - - - - TimeSettingModule - - Time Settings - Time Settings - - - Time - - - - Auto Sync - Auto Sync - - - Reset - Reset - - - Save - Save - - - Server - Server - - - Address - Address - - - Required - Required - - - Customize - Customize - - - Year - Year - - - Month - Month - - - Day - Day - - - - TimeZoneChooser - - Cancel - Cancel - - - Confirm - Confirm - - - Add Timezone - Add Timezone - - - Add - Add - - - Change Timezone - Change Timezone - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Revert - - - Save - Save - - - - TimezoneItem - - Tomorrow - Tomorrow - - - Yesterday - Yesterday - - - Today - Today - - - %1 hours earlier than local - %1 hours earlier than local - - - %1 hours later than local - %1 hours later than local - - - - TimezoneModule - - Timezone List - Timezone List - - - System Timezone - System Timezone - - - Add Timezone - Add Timezone - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Cancel - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - Check Again - - - Update failed: insufficient disk space - Update failed: insufficient disk space - - - Dependency error, failed to detect the updates - Dependency error, failed to detect the updates - - - Restart the computer to use the system and the applications properly - Restart the computer to use the system and the applications properly - - - Network disconnected, please retry after connected - Network disconnected, please retry after connected - - - Your system is not authorized, please activate first - Your system is not authorised, please activate first - - - This update may take a long time, please do not shut down or reboot during the process - This update may take a long time, please do not shut down or reboot during the process - - - Updates Available - - - - Current Edition - Current Edition - - - Updating... - Updating... - - - Update All - - - - Last checking time: - Last checking time: - - - Your system is up to date - Your system is up to date - - - Check for Updates - Check for Updates - - - Checking for updates, please wait... - Checking for updates, please wait... - - - The newest system installed, restart to take effect - The newest system installed, restart to take effect - - - %1% downloaded (Click to pause) - %1% downloaded (Click to pause) - - - %1% downloaded (Click to continue) - %1% downloaded (Click to continue) - - - Your battery is lower than 50%, please plug in to continue - Your battery is lower than 50%, please plug in to continue - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - Size - Size - - - - UpdateModule - - Updates - Updates - - - - UpdatePlugin - - Check for Updates - Check for Updates - - - - UpdateSettingItem - - Insufficient disk space - Insufficient disk space - - - Update failed: insufficient disk space - Update failed: insufficient disk space - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - The newest system installed, restart to take effect - - - Waiting - Waiting - - - Backing up - - - - System backup failed - System backup failed - - - Release date: - - - - Server - Server - - - Desktop - Desktop - - - Version - Version - - - - UpdateSettingsModule - - Update Settings - Update Settings - - - System - System - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - Auto Download Updates - - - Switch it on to automatically download the updates in wireless or wired network - Switch it on to automatically download the updates in wireless or wired network - - - Auto Install Updates - - - - Updates Notification - Updates Notification - - - Clear Package Cache - Clear Package Cache - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Current Edition - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - On Battery - - - Never - Never - - - Shut down - Shut down - - - Suspend - Suspend - - - Hibernate - Hibernate - - - Turn off the monitor - Turn off the monitor - - - Do nothing - Do nothing - - - 1 Minute - 1 Minute - - - %1 Minutes - %1 Minutes - - - 1 Hour - 1 Hour - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Lock screen after - - - Computer suspends after - - - - Computer will suspend after - Computer will suspend after - - - When the lid is closed - When the lid is closed - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Low battery level - - - Auto suspend battery level - Auto suspend battery level - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - Maximum capacity - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Plugged In - - - 1 Minute - 1 Minute - - - %1 Minutes - %1 Minutes - - - 1 Hour - 1 Hour - - - Never - Never - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Lock screen after - - - Computer suspends after - - - - When the lid is closed - When the lid is closed - - - When the power button is pressed - - - - Shut down - Shut down - - - Suspend - Suspend - - - Hibernate - Hibernate - - - Turn off the monitor - Turn off the monitor - - - Show the shutdown Interface - - - - Do nothing - Do nothing - - - - WacomModule - - Drawing Tablet - Drawing Tablet - - - Mode - Mode - - - Pressure Sensitivity - Pressure Sensitivity - - - Pen - Pen - - - Mouse - Mouse - - - Light - Light - - - Heavy - Heavy - - - - main - - Control Center provides the options for system settings. - Control Center provides the options for system settings. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_en_GB.ts b/dcc-old/translations/dde-control-center_en_GB.ts deleted file mode 100644 index 403ac55332..0000000000 --- a/dcc-old/translations/dde-control-center_en_GB.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - Disconnect - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Cancel - - - Next - Next - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Done - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Cancel - - - Next - Next - - - Iris enrolled - - - - Done - Done - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Fingerprint - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Cancel - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Cancel - - - Confirm - button - Confirm - - - - dccV23::AccountSpinBox - - Always - Always - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Username - - - Change Password - Change Password - - - Delete User - - - - User Type - - - - Auto Login - Auto login - - - Login Without Password - Login Without Password - - - Validity Days - Validity Days - - - Group - GroupGroup - - - The full name is too long - The full name is too long - - - Standard User - Standard User - - - Administrator - Administrator - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Full Name - - - Go to Settings - Go to Settings - - - Cancel - Cancel - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - AD domain settings - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Cancel - - - Save - Save - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Images - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Change Password - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Required! - - - Cancel - button - Cancel - - - Confirm - button - Confirm - - - Password cannot be empty - - - - Passwords do not match - Passwords do not match - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - General Settings - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - GroupGroup - - - Cancel - Cancel - - - Create - Create - - - New User - - - - User Type - - - - Username - Username - - - Full Name - Full Name - - - Password - Password - - - Repeat Password - Repeat password - - - Password Hint - - - - The full name is too long - The full name is too long - - - Passwords do not match - Passwords do not match - - - Standard User - Standard User - - - Administrator - Administrator - - - Customized - Customized - - - Required - Required! - - - optional - optional - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Username must be between 3 and 32 characters - - - The first character must be a letter or number - The first character must be a letter or number - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Images - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - Required! - - - Command - - - - Cancel - Cancel - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Required! - - - Cancel - Cancel - - - Save - Save - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Next - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Cancel - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Display - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - Edit - - - Add Keyboard Layout - - - - Done - Done - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancel - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Keyboard and Language - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - Help - - - - dccV23::ModifyPasswdPage - - Change Password - Change Password - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Current password - - - Forgot password? - - - - New Password - New password - - - Repeat Password - Repeat password - - - Password Hint - - - - Cancel - Cancel - - - Save - Save - - - Passwords do not match - Passwords do not match - - - Required - Required! - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Mouse - - - General - - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Mode - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - Extend - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - Password must be no more than %1 characters - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Delete account directory - - - Cancel - Cancel - - - Delete - Delete - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - Standard - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Cancel - - - Confirm - Confirm - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Edit - - - Done - Done - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - - - - Workspace - - - - Assistive Tools - Assistive Tools - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Cancel - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - Type - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - System Info - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancel - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Edit - - - Language List - - - - Add Language - - - - Done - Done - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Confirm - - - Cancel - Cancel - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Default Applications - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - Text - - - Music - Music - - - Video - Video - - - Picture - Picture - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Cancel - - - Next - Next - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - Mode - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Edit - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Done - - - Add Face - - - - The name already exists - This name already exists - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Add fingerprint - - - Cancel - Cancel - - - Next - Next - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - Fingerprint added - - - - FingerWidget - - Edit - Edit - - - Fingerprint Password - Fingerprint password - - - You can add up to 10 fingerprints - - - - Done - Done - - - The name already exists - This name already exists - - - Add Fingerprint - Add fingerprint - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Edit - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Done - - - Add Iris - - - - The name already exists - This name already exists - - - Iris - - - - - KeyLabel - - None - None - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - Personalization - - - - PersonalizationThemeList - - Cancel - Cancel - - - Save - Save - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Icon Theme - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Cancel - - - Confirm - Confirm - - - - PowerModule - - Power - Power - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - Calendar - - - Screen Capture - - - - - QObject - - Control Center - Control Center - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Cancel - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - Shut down - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Sound - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Mode - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - Save - - - Server - - - - Address - - - - Required - Required! - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Cancel - - - Confirm - Confirm - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Save - - - - TimezoneItem - - Tomorrow - - - - Yesterday - Yesterday - - - Today - Today - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Cancel - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Dependency error, failed to detect the updates - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - Updates - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - System backup failed - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - System - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Never - - - Shut down - Shut down - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - Never - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Shut down - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - Drawing Tablet - - - Mode - Mode - - - Pressure Sensitivity - - - - Pen - Pen - - - Mouse - Mouse - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_en_NO.ts b/dcc-old/translations/dde-control-center_en_NO.ts deleted file mode 100644 index 1a7a55c635..0000000000 --- a/dcc-old/translations/dde-control-center_en_NO.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_en_US.ts b/dcc-old/translations/dde-control-center_en_US.ts deleted file mode 100644 index 1d7070ca05..0000000000 --- a/dcc-old/translations/dde-control-center_en_US.ts +++ /dev/null @@ -1,3983 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Allow other Bluetooth devices to find this device - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - My Devices - My Devices - - - Other Devices - Other Devices - - - Show Bluetooth devices without names - Show Bluetooth devices without names - - - Connect - Connect - - - Disconnect - Disconnect - - - Rename - Rename - - - Send Files - Send Files - - - Ignore this device - Ignore this device - - - Connecting - Connecting - - - Disconnecting - Disconnecting - - - - AddButtonWidget - - Add Application - Add Application - - - Open Desktop file - Open Desktop file - - - Apps (*.desktop) - Apps (*.desktop) - - - All files (*) - All files (*) - - - - AddFaceInfoDialog - - Enroll Face - Enroll Face - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - Cancel - Cancel - - - Next - Next - - - Face enrolled - Face enrolled - - - Use your face to unlock the device and make settings later - Use your face to unlock the device and make settings later - - - Done - Done - - - Failed to enroll your face - Failed to enroll your face - - - Try Again - Try Again - - - Close - Close - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - Enroll Iris - - - Cancel - Cancel - - - Next - Next - - - Iris enrolled - Iris enrolled - - - Done - Done - - - Failed to enroll your iris - Failed to enroll your iris - - - Try Again - Try Again - - - - AuthenticationInfoItem - - No more than 15 characters - No more than 15 characters - - - Use letters, numbers and underscores only, and no more than 15 characters - Use letters, numbers and underscores only, and no more than 15 characters - - - Use letters, numbers and underscores only - Use letters, numbers and underscores only - - - - AuthenticationModule - - Biometric Authentication - Biometric Authentication - - - - AuthenticationPlugin - - Fingerprint - Fingerprint - - - Face - Face - - - Iris - Iris - - - - BluetoothDeviceModel - - Connected - Connected - - - Not connected - Not connected - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Fingerprint1 - - - Fingerprint2 - Fingerprint2 - - - Fingerprint3 - Fingerprint3 - - - Fingerprint4 - Fingerprint4 - - - Fingerprint5 - Fingerprint5 - - - Fingerprint6 - Fingerprint6 - - - Fingerprint7 - Fingerprint7 - - - Fingerprint8 - Fingerprint8 - - - Fingerprint9 - Fingerprint9 - - - Fingerprint10 - Fingerprint10 - - - Scan failed - Scan failed - - - The fingerprint already exists - The fingerprint already exists - - - Please scan other fingers - Please scan other fingers - - - Unknown error - Unknown error - - - Scan suspended - Scan suspended - - - Cannot recognize - Cannot recognize - - - Moved too fast - Moved too fast - - - Finger moved too fast, please do not lift until prompted - Finger moved too fast, please do not lift until prompted - - - Unclear fingerprint - Unclear fingerprint - - - Clean your finger or adjust the finger position, and try again - Clean your finger or adjust the finger position, and try again - - - Already scanned - Already scanned - - - Adjust the finger position to scan your fingerprint fully - Adjust the finger position to scan your fingerprint fully - - - Finger moved too fast. Please do not lift until prompted - Finger moved too fast. Please do not lift until prompted - - - Lift your finger and place it on the sensor again - Lift your finger and place it on the sensor again - - - Position your face inside the frame - Position your face inside the frame - - - Face enrolled - Face enrolled - - - Position a human face please - Position a human face please - - - Keep away from the camera - Keep away from the camera - - - Get closer to the camera - Get closer to the camera - - - Do not position multiple faces inside the frame - Do not position multiple faces inside the frame - - - Make sure the camera lens is clean - Make sure the camera lens is clean - - - Do not enroll in dark, bright or backlit environments - Do not enroll in dark, bright or backlit environments - - - Keep your face uncovered - Keep your face uncovered - - - Scan timed out - Scan timed out - - - Device crashed, please scan again! - Device crashed, please scan again! - - - Cancel - Cancel - - - - CooperationSettingsDialog - - Collaboration Settings - Collaboration Settings - - - Share mouse and keyboard - Share mouse and keyboard - - - Share your mouse and keyboard across devices - Share your mouse and keyboard across devices - - - Share clipboard - Share clipboard - - - Storage path for shared files - Storage path for shared files - - - Share the copied content across devices - Share the copied content across devices - - - Cancel - button - Cancel - - - Confirm - button - Confirm - - - - dccV23::AccountSpinBox - - Always - Always - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Username - - - Change Password - Change Password - - - Delete User - - - - User Type - - - - Auto Login - Auto Login - - - Login Without Password - Login Without Password - - - Validity Days - Validity Days - - - Group - Group - - - The full name is too long - The full name is too long - - - Standard User - Standard User - - - Administrator - Administrator - - - Reset Password - Reset Password - - - The full name has been used by other user accounts - The full name has been used by other user accounts - - - Full Name - Full Name - - - Go to Settings - Go to Settings - - - Cancel - Cancel - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Your host was removed from the domain server successfully - - - Your host joins the domain server successfully - Your host joins the domain server successfully - - - Your host failed to leave the domain server - Your host failed to leave the domain server - - - Your host failed to join the domain server - Your host failed to join the domain server - - - AD domain settings - AD domain settings - - - Password not match - Password not match - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Show notifications from %1 on desktop and in the notification center. - - - Play a sound - Play a sound - - - Show messages on lockscreen - Show messages on lockscreen - - - Show in notification center - Show in notification center - - - Show message preview - Show message preview - - - - dccV23::AvatarListDialog - - Person - Person - - - Animal - Animal - - - Illustration - Illustration - - - Expression - Expression - - - Custom Picture - Custom Picture - - - Cancel - Cancel - - - Save - Save - - - - dccV23::AvatarListFrame - - Dimensional Style - Dimensional Style - - - Flat Style - Flat Style - - - - dccV23::AvatarListView - - Images - Images - - - - dccV23::BootWidget - - Updating... - Updating... - - - Startup Delay - Startup Delay - - - Theme - Theme - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - Click the option in boot menu to set it as the first boot - Click the option in boot menu to set it as the first boot - - - Switch theme on to view it in boot menu - Switch theme on to view it in boot menu - - - GRUB Authentication - GRUB Authentication - - - GRUB password is required to edit its configuration - GRUB password is required to edit its configuration - - - Change Password - Change Password - - - Boot Menu - Boot Menu - - - Change GRUB password - Change GRUB password - - - Username: - Username: - - - root - root - - - New password: - New password: - - - Repeat password: - Repeat password: - - - Required - Required - - - Cancel - button - Cancel - - - Confirm - button - Confirm - - - Password cannot be empty - Password cannot be empty - - - Passwords do not match - Passwords do not match - - - - dccV23::BrightnessWidget - - Brightness - Brightness - - - Color Temperature - Color Temperature - - - Auto Brightness - Auto Brightness - - - Night Shift - Night Shift - - - The screen hue will be auto adjusted according to your location - The screen hue will be auto adjusted according to your location - - - Change Color Temperature - Change Color Temperature - - - Cool - Cool - - - Warm - Warm - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Multi-Screen Collaboration - - - PC Collaboration - PC Collaboration - - - Connect to - Connect to - - - Select a device for collaboration - Select a device for collaboration - - - Device Orientation - Device Orientation - - - On the top - On the top - - - On the right - On the right - - - On the bottom - On the bottom - - - On the left - On the left - - - My Devices - My Devices - - - Other Devices - Other Devices - - - - dccV23::CommonInfoPlugin - - General Settings - General Settings - - - Boot Menu - Boot Menu - - - Developer Mode - Developer Mode - - - User Experience Program - User Experience Program - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Agree and Join User Experience Program - - - The Disclaimer of Developer Mode - The Disclaimer of Developer Mode - - - Agree and Request Root Access - Agree and Request Root Access - - - Failed to get root access - Failed to get root access - - - Please sign in to your Union ID first - Please sign in to your Union ID first - - - Cannot read your PC information - Cannot read your PC information - - - No network connection - No network connection - - - Certificate loading failed, unable to get root access - Certificate loading failed, unable to get root access - - - Signature verification failed, unable to get root access - Signature verification failed, unable to get root access - - - - dccV23::CreateAccountPage - - Group - Group - - - Cancel - Cancel - - - Create - Create - - - New User - - - - User Type - - - - Username - Username - - - Full Name - Full Name - - - Password - Password - - - Repeat Password - Repeat Password - - - Password Hint - Password Hint - - - The full name is too long - The full name is too long - - - Passwords do not match - Passwords do not match - - - Standard User - Standard User - - - Administrator - Administrator - - - Customized - Customized - - - Required - Required - - - optional - optional - - - The hint is visible to all users. Do not include the password here. - The hint is visible to all users. Do not include the password here. - - - Policykit authentication failed - Policykit authentication failed - - - Username must be between 3 and 32 characters - Username must be between 3 and 32 characters - - - The first character must be a letter or number - The first character must be a letter or number - - - Your username should not only have numbers - Your username should not only have numbers - - - The username has been used by other user accounts - The username has been used by other user accounts - - - The full name has been used by other user accounts - The full name has been used by other user accounts - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - You have not uploaded a picture, you can click or drag to upload a picture - - - Uploaded file type is incorrect, please upload again - Uploaded file type is incorrect, please upload again - - - Images - Images - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Add Custom Shortcut - - - Name - Name - - - Required - Required - - - Command - Command - - - Cancel - Cancel - - - Add - Add - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - dccV23::CustomEdit - - Required - Required - - - Cancel - Cancel - - - Save - Save - - - Shortcut - Shortcut - - - Name - Name - - - Command - Command - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - dccV23::CustomItem - - Shortcut - Shortcut - - - Please enter a shortcut - Please enter a shortcut - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - For more details, visit: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Request Root Access - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Please sign in to your Union ID first and continue - - - Next - Next - - - Export PC Info - Export PC Info - - - Import Certificate - Import Certificate - - - 1. Export your PC information - 1. Export your PC information - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - 3. Import the certificate - 3. Import the certificate - - - - dccV23::DeveloperModeWidget - - Request Root Access - Request Root Access - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - The feature is not available at present, please activate your system first - The feature is not available at present, please activate your system first - - - Failed to get root access - Failed to get root access - - - Please sign in to your Union ID first - Please sign in to your Union ID first - - - Cannot read your PC information - Cannot read your PC information - - - No network connection - No network connection - - - Certificate loading failed, unable to get root access - Certificate loading failed, unable to get root access - - - Signature verification failed, unable to get root access - Signature verification failed, unable to get root access - - - To make some features effective, a restart is required. Restart now? - To make some features effective, a restart is required. Restart now? - - - Cancel - Cancel - - - Restart Now - Restart Now - - - Root Access Allowed - Root Access Allowed - - - - dccV23::DisplayPlugin - - Display - Display - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Double-click Test - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Keyboard Settings - - - Repeat Delay - Repeat Delay - - - Short - Short - - - Long - Long - - - Repeat Rate - Repeat Rate - - - Slow - Slow - - - Fast - Fast - - - Test here - Test here - - - Numeric Keypad - Numeric Keypad - - - Caps Lock Prompt - Caps Lock Prompt - - - - dccV23::GeneralSettingWidget - - Left Hand - Left Hand - - - Disable touchpad while typing - Disable touchpad while typing - - - Scrolling Speed - Scrolling Speed - - - Double-click Speed - Double-click Speed - - - Slow - Slow - - - Fast - Fast - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Keyboard Layout - - - Edit - Edit - - - Add Keyboard Layout - Add Keyboard Layout - - - Done - Done - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancel - - - Add - Add - - - Add Keyboard Layout - Add Keyboard Layout - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Keyboard and Language - - - Keyboard - Keyboard - - - Keyboard Settings - Keyboard Settings - - - keyboard Layout - keyboard Layout - - - Keyboard Layout - Keyboard Layout - - - Language - Language - - - Shortcuts - Shortcuts - - - - dccV23::MainWindow - - Help - Help - - - - dccV23::ModifyPasswdPage - - Change Password - Change Password - - - Reset Password - Reset Password - - - Resetting the password will clear the data stored in the keyring. - Resetting the password will clear the data stored in the keyring. - - - Current Password - Current Password - - - Forgot password? - Forgot password? - - - New Password - New Password - - - Repeat Password - Repeat Password - - - Password Hint - Password Hint - - - Cancel - Cancel - - - Save - Save - - - Passwords do not match - Passwords do not match - - - Required - Required - - - Optional - Optional - - - Password cannot be empty - Password cannot be empty - - - The hint is visible to all users. Do not include the password here. - The hint is visible to all users. Do not include the password here. - - - Wrong password - Wrong password - - - New password should differ from the current one - New password should differ from the current one - - - System error - System error - - - Network error - Network error - - - - dccV23::MonitorControlWidget - - Identify - Identify - - - Gather Windows - Gather Windows - - - Screen rearrangement will take effect in %1s after changes - Screen rearrangement will take effect in %1s after changes - - - - dccV23::MousePlugin - - Mouse - Mouse - - - General - General - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Pointer Speed - - - Mouse Acceleration - Mouse Acceleration - - - Disable touchpad when a mouse is connected - Disable touchpad when a mouse is connected - - - Natural Scrolling - Natural Scrolling - - - Slow - Slow - - - Fast - Fast - - - - dccV23::MultiScreenWidget - - Multiple Displays - Multiple Displays - /display/Multiple Displays - - - Mode - Mode - /display/Mode - - - Main Screen - Main Screen - /display/Main Scree - - - Duplicate - Duplicate - - - Extend - Extend - - - Only on %1 - Only on %1 - - - - dccV23::NotificationModule - - AppNotify - AppNotify - - - Notification - Notification - - - SystemNotify - SystemNotify - - - - dccV23::PalmDetectSetting - - Palm Detection - Palm Detection - - - Minimum Contact Surface - Minimum Contact Surface - - - Minimum Pressure Value - Minimum Pressure Value - - - Disable the option if touchpad doesn't work after enabled - Disable the option if touchpad doesn't work after enabled - - - - dccV23::PluginManager - - following plugins load failed - following plugins load failed - - - plugins cannot loaded in time - plugins cannot loaded in time - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Privacy Policy - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Password cannot be empty - - - Password must have at least %1 characters - Password must have at least %1 characters - - - Password must be no more than %1 characters - Password must be no more than %1 characters - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - No more than %1 palindrome characters please - - - No more than %1 monotonic characters please - No more than %1 monotonic characters please - - - No more than %1 repeating characters please - No more than %1 repeating characters please - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Password must not contain more than 4 palindrome characters - - - Do not use common words and combinations as password - Do not use common words and combinations as password - - - Create a strong password please - Create a strong password please - - - It does not meet password rules - It does not meet password rules - - - - dccV23::RefreshRateWidget - - Refresh Rate - Refresh Rate - - - Hz - Hz - - - Recommended - Recommended - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Are you sure you want to delete this account? - - - Delete account directory - Delete account directory - - - Cancel - Cancel - - - Delete - Delete - - - - dccV23::ResolutionWidget - - Resolution - Resolution - /display/Resolution - - - Resize Desktop - Resize Desktop - /display/Resize Desktop - - - Default - Default - - - Fit - Fit - - - Stretch - Stretch - - - Center - Center - - - Recommended - Recommended - - - - dccV23::RotateWidget - - Rotation - Rotation - /display/Rotation - - - Standard - Standard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - The monitor only supports 100% display scaling - - - Display Scaling - Display Scaling - - - - dccV23::SearchInput - - Search - Search - - - - dccV23::SecondaryScreenDialog - - Brightness - Brightness - - - - dccV23::SecurityLevelItem - - Weak - Weak - - - Medium - Medium - - - Strong - Strong - - - - dccV23::SecurityQuestionsPage - - Security Questions - Security Questions - - - These questions will be used to help reset your password in case you forget it. - These questions will be used to help reset your password in case you forget it. - - - Security question 1 - Security question 1 - - - Security question 2 - Security question 2 - - - Security question 3 - Security question 3 - - - Cancel - Cancel - - - Confirm - Confirm - - - Keep the answer under 30 characters - Keep the answer under 30 characters - - - Do not choose a duplicate question please - Do not choose a duplicate question please - - - Please select a question - Please select a question - - - What's the name of the city where you were born? - What's the name of the city where you were born? - - - What's the name of the first school you attended? - What's the name of the first school you attended? - - - Who do you love the most in this world? - Who do you love the most in this world? - - - What's your favorite animal? - What's your favorite animal? - - - What's your favorite song? - What's your favorite song? - - - What's your nickname? - What's your nickname? - - - It cannot be empty - It cannot be empty - - - - dccV23::SettingsHead - - Edit - Edit - - - Done - Done - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - Window - - - Workspace - Workspace - - - Assistive Tools - Assistive Tools - - - Custom Shortcut - Custom Shortcut - - - Restore Defaults - Restore Defaults - - - Shortcut - Shortcut - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Please Reset Shortcut - - - Cancel - Cancel - - - Replace - Replace - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - dccV23::ShortcutItem - - Enter a new shortcut - Enter a new shortcut - - - - dccV23::SystemInfoModel - - available - available - - - - dccV23::SystemInfoModule - - About This PC - About This PC - - - Computer Name - Computer Name - - - systemInfo - systemInfo - - - OS Name - OS Name - - - Version - Version - - - Edition - Edition - - - Type - Type - - - Authorization - Authorization - - - Processor - Processor - - - Memory - Memory - - - Graphics Platform - Graphics Platform - - - Kernel - Kernel - - - Agreements and Privacy Policy - Agreements and Privacy Policy - - - Edition License - Edition License - - - End User License Agreement - End User License Agreement - - - Privacy Policy - Privacy Policy - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - System Info - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancel - - - Add - Add - - - Add System Language - Add System Language - - - - dccV23::SystemLanguageWidget - - Edit - Edit - - - Language List - Language List - - - Add Language - Add Language - - - Done - Done - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Do Not Disturb - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - When the screen is locked - When the screen is locked - - - - dccV23::TimeSlotItem - - From - From - - - To - To - - - - dccV23::TouchScreenModule - - Touch Screen - Touch Screen - - - Select your touch screen when connected or set it here. - Select your touch screen when connected or set it here. - - - Confirm - Confirm - - - Cancel - Cancel - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Pointer Speed - - - Slow - Slow - - - Fast - Fast - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Join User Experience Program - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Year - - - Month - Month - - - Day - Day - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Authentication is required to change NTP server - - - - DefAppModule - - Default Applications - Default Applications - - - - DefAppPlugin - - Webpage - Webpage - - - Mail - Mail - - - Text - Text - - - Music - Music - - - Video - Video - - - Picture - Picture - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Disclaimer - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - Cancel - Cancel - - - Next - Next - - - - DisclaimersItem - - I have read and agree to the - I have read and agree to the - - - Disclaimer - Disclaimer - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - Multiple Displays - - - Show Dock - Show Dock - - - Mode - Mode - - - Position - Position - - - Status - Status - - - Show recent apps in Dock - Show recent apps in Dock - - - Size - Size - - - Plugin Area - Plugin Area - - - Select which icons appear in the Dock - Select which icons appear in the Dock - - - Fashion mode - Fashion mode - - - Efficient mode - Efficient mode - - - Top - Top - - - Bottom - Bottom - - - Left - Left - - - Right - Right - - - Location - Location - - - Keep shown - Keep shown - - - Keep hidden - Keep hidden - - - Smart hide - Smart hide - - - Small - Small - - - Large - Large - - - On screen where the cursor is - On screen where the cursor is - - - Only on main screen - Only on main screen - - - - FaceInfoDialog - - Enroll Face - Enroll Face - - - Position your face inside the frame - Position your face inside the frame - - - - FaceWidget - - Edit - Edit - - - Manage Faces - Manage Faces - - - You can add up to 5 faces - You can add up to 5 faces - - - Done - Done - - - Add Face - Add Face - - - The name already exists - The name already exists - - - Faceprint - Faceprint - - - - FaceidDetailWidget - - No supported devices found - No supported devices found - - - - FingerDetailWidget - - No supported devices found - No supported devices found - - - - FingerDisclaimer - - Add Fingerprint - Add Fingerprint - - - Cancel - Cancel - - - Next - Next - - - - FingerInfoWidget - - Place your finger - Place your finger - - - Place your finger firmly on the sensor until you're asked to lift it - Place your finger firmly on the sensor until you're asked to lift it - - - Scan the edges of your fingerprint - Scan the edges of your fingerprint - - - Place the edges of your fingerprint on the sensor - Place the edges of your fingerprint on the sensor - - - Lift your finger - Lift your finger - - - Lift your finger and place it on the sensor again - Lift your finger and place it on the sensor again - - - Adjust the position to scan the edges of your fingerprint - Adjust the position to scan the edges of your fingerprint - - - Lift your finger and do that again - Lift your finger and do that again - - - Fingerprint added - Fingerprint added - - - - FingerWidget - - Edit - Edit - - - Fingerprint Password - Fingerprint Password - - - You can add up to 10 fingerprints - You can add up to 10 fingerprints - - - Done - Done - - - The name already exists - The name already exists - - - Add Fingerprint - Add Fingerprint - - - - GeneralModule - - General - General - - - Balanced - Balanced - - - Balance Performance - - - - High Performance - High Performance - - - Power Saver - Power Saver - - - Power Plans - Power Plans - - - Power Saving Settings - Power Saving Settings - - - Auto power saving on low battery - Auto power saving on low battery - - - Decrease Brightness - Decrease Brightness - - - Low battery threshold - - - - Auto power saving on battery - Auto power saving on battery - - - Wakeup Settings - Wakeup Settings - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - It cannot start or end with dashes - - - 1~63 characters please - 1~63 characters please - - - - InternalButtonItem - - Internal testing channel - Internal testing channel - - - click here open the link - click here open the link - - - - IrisDetailWidget - - No supported devices found - No supported devices found - - - - IrisWidget - - Edit - Edit - - - Manage Irises - Manage Irises - - - You can add up to 5 irises - You can add up to 5 irises - - - Done - Done - - - Add Iris - Add Iris - - - The name already exists - The name already exists - - - Iris - Iris - - - - KeyLabel - - None - None - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin Community - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Input Device - - - Automatic Noise Suppression - Automatic Noise Suppression - - - Input Volume - Input Volume - - - Input Level - Input Level - - - - PersonalizationDesktopModule - - Desktop - Desktop - - - Window - Window - - - Window Effect - Window Effect - - - Window Minimize Effect - Window Minimize Effect - - - Transparency - Transparency - - - Rounded Corner - Rounded Corner - - - Scale - Scale - - - Magic Lamp - Magic Lamp - - - Small - Small - - - Middle - Middle - - - Large - Large - - - - PersonalizationModule - - Personalization - Personalization - - - - PersonalizationThemeList - - Cancel - Cancel - - - Save - Save - - - Light - Light - - - Dark - Dark - - - Auto - Auto - - - Default - Default - - - - PersonalizationThemeModule - - Theme - Theme - - - Appearance - Appearance - - - Accent Color - Accent Color - - - Icon Settings - Icon Settings - - - Icon Theme - Icon Theme - - - Cursor Theme - Cursor Theme - - - Text Settings - Text Settings - - - Font Size - Font Size - - - Standard Font - Standard Font - - - Monospaced Font - Monospaced Font - - - Light - Light - - - Auto - Auto - - - Dark - Dark - - - - PersonalizationThemeWidget - - Light - Light - General - /personalization/General - - - Dark - Dark - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Default - - - - PersonalizationWorker - - Custom - Custom - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - The PIN for connecting to the Bluetooth device is: - - - Cancel - Cancel - - - Confirm - Confirm - - - - PowerModule - - Power - Power - - - Battery low, please plug in - Battery low, please plug in - - - Battery critically low - Battery critically low - - - - PrivacyModule - - Privacy and Security - Privacy and Security - - - - PrivacySecurityModel - - Camera - Camera - - - Microphone - Microphone - - - User Folders - User Folders - - - Calendar - Calendar - - - Screen Capture - Screen Capture - - - - QObject - - Control Center - Control Center - - - , - - - - Error occurred when reading the configuration files of password rules! - Error occurred when reading the configuration files of password rules! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Activated - - - View - View - - - To be activated - To be activated - - - Activate - Activate - - - Expired - Expired - - - In trial period - In trial period - - - Trial expired - Trial expired - - - Touch Screen Settings - Touch Screen Settings - - - The settings of touch screen changed - The settings of touch screen changed - - - Checking system versions, please wait... - Checking system versions, please wait... - - - Leave - Leave - - - Cancel - Cancel - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Your system is not authorized, please activate first - - - Update successful - Update successful - - - Failed to update - Failed to update - - - - SearchInput - - Search - Search - - - - ServiceSettingsModule - - Apps can access your camera: - Apps can access your camera: - - - Apps can access your microphone: - Apps can access your microphone: - - - Apps can access user folders: - Apps can access user folders: - - - Apps can access Calendar: - Apps can access Calendar: - - - Apps can access Screen Capture: - Apps can access Screen Capture: - - - No apps requested access to the camera - No apps requested access to the camera - - - No apps requested access to the microphone - No apps requested access to the microphone - - - No apps requested access to user folders - No apps requested access to user folders - - - No apps requested access to Calendar - No apps requested access to Calendar - - - No apps requested access to Screen Capture - No apps requested access to Screen Capture - - - - SoundEffectsPage - - Sound Effects - Sound Effects - - - - SoundModel - - Boot up - Boot up - - - Shut down - Shut down - - - Log out - Log out - - - Wake up - Wake up - - - Volume +/- - Volume +/- - - - Notification - Notification - - - Low battery - Low battery - - - Send icon in Launcher to Desktop - Send icon in Launcher to Desktop - - - Empty Trash - Empty Trash - - - Plug in - Plug in - - - Plug out - Plug out - - - Removable device connected - Removable device connected - - - Removable device removed - Removable device removed - - - Error - Error - - - - SoundModule - - Sound - Sound - - - - SoundPlugin - - Output - Output - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Input - - - Sound Effects - Sound Effects - - - Devices - Devices - - - Input Devices - Input Devices - - - Output Devices - Output Devices - - - - SpeakerPage - - Output Device - Output Device - - - Mode - Mode - - - Output Volume - Output Volume - - - Volume Boost - Volume Boost - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - Left/Right Balance - Left/Right Balance - - - Left - Left - - - Right - Right - - - - TimeSettingModule - - Time Settings - Time Settings - - - Time - Time - - - Auto Sync - Auto Sync - - - Reset - Reset - - - Save - Save - - - Server - Server - - - Address - Address - - - Required - Required - - - Customize - Customize - - - Year - Year - - - Month - Month - - - Day - Day - - - - TimeZoneChooser - - Cancel - Cancel - - - Confirm - Confirm - - - Add Timezone - Add Timezone - - - Add - Add - - - Change Timezone - Change Timezone - - - - TimeoutDialog - - Save the display settings? - Save the display settings? - - - Settings will be reverted in %1s. - Settings will be reverted in %1s. - - - Revert - Revert - - - Save - Save - - - - TimezoneItem - - Tomorrow - Tomorrow - - - Yesterday - Yesterday - - - Today - Today - - - %1 hours earlier than local - %1 hours earlier than local - - - %1 hours later than local - %1 hours later than local - - - - TimezoneModule - - Timezone List - Timezone List - - - System Timezone - System Timezone - - - Add Timezone - Add Timezone - - - - TreeCombox - - Collaboration Settings - Collaboration Settings - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - The user account is not linked to Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - Cancel - Cancel - - - Go to Link - Go to Link - - - - UnknownUpdateItem - - Release date: - Release date: - - - - UpdateCtrlWidget - - Check Again - Check Again - - - Update failed: insufficient disk space - Update failed: insufficient disk space - - - Dependency error, failed to detect the updates - Dependency error, failed to detect the updates - - - Restart the computer to use the system and the applications properly - Restart the computer to use the system and the applications properly - - - Network disconnected, please retry after connected - Network disconnected, please retry after connected - - - Your system is not authorized, please activate first - Your system is not authorized, please activate first - - - This update may take a long time, please do not shut down or reboot during the process - This update may take a long time, please do not shut down or reboot during the process - - - Updates Available - Updates Available - - - Current Edition - Current Edition - - - Updating... - Updating... - - - Update All - Update All - - - Last checking time: - Last checking time: - - - Your system is up to date - Your system is up to date - - - Check for Updates - Check for Updates - - - Checking for updates, please wait... - Checking for updates, please wait... - - - The newest system installed, restart to take effect - The newest system installed, restart to take effect - - - %1% downloaded (Click to pause) - %1% downloaded (Click to pause) - - - %1% downloaded (Click to continue) - %1% downloaded (Click to continue) - - - Your battery is lower than 50%, please plug in to continue - Your battery is lower than 50%, please plug in to continue - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - Size - Size - - - - UpdateModule - - Updates - Updates - - - - UpdatePlugin - - Check for Updates - Check for Updates - - - - UpdateSettingItem - - Insufficient disk space - Insufficient disk space - - - Update failed: insufficient disk space - Update failed: insufficient disk space - - - Update failed - Update failed - - - Network error - Network error - - - Network error, please check and try again - Network error, please check and try again - - - Packages error - Packages error - - - Packages error, please try again - Packages error, please try again - - - Dependency error - Dependency error - - - Unmet dependencies - Unmet dependencies - - - The newest system installed, restart to take effect - The newest system installed, restart to take effect - - - Waiting - Waiting - - - Backing up - Backing up - - - System backup failed - System backup failed - - - Release date: - Release date: - - - Server - Server - - - Desktop - Desktop - - - Version - Version - - - - UpdateSettingsModule - - Update Settings - Update Settings - - - System - System - - - Security Updates Only - Security Updates Only - - - Switch it on to only update security vulnerabilities and compatibility issues - Switch it on to only update security vulnerabilities and compatibility issues - - - Third-party Repositories - Third-party Repositories - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - Other settings - - - Auto Check for Updates - Auto Check for Updates - - - Auto Download Updates - Auto Download Updates - - - Switch it on to automatically download the updates in wireless or wired network - Switch it on to automatically download the updates in wireless or wired network - - - Auto Install Updates - Auto Install Updates - - - Updates Notification - Updates Notification - - - Clear Package Cache - Clear Package Cache - - - Updates from Internal Testing Sources - Updates from Internal Testing Sources - - - internal update - internal update - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - System Updates - - - Security Updates - Security Updates - - - Install updates automatically when the download is complete - Install updates automatically when the download is complete - - - Install "%1" automatically when the download is complete - Install "%1" automatically when the download is complete - - - - UpdateWidget - - Current Edition - Current Edition - - - - UpdateWorker - - System Updates - System Updates - - - Fixed some known bugs and security vulnerabilities - Fixed some known bugs and security vulnerabilities - - - Security Updates - Security Updates - - - Third-party Repositories - Third-party Repositories - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - Your are safe to leave the internal testing channel - Your are safe to leave the internal testing channel - - - Cannot find machineid - Cannot find machineid - - - Cannot Uninstall package - Cannot Uninstall package - - - Error when exit testingChannel - Error when exit testingChannel - - - try to manually uninstall package - try to manually uninstall package - - - Cannot install package - Cannot install package - - - - UseBatteryModule - - On Battery - On Battery - - - Never - Never - - - Shut down - Shut down - - - Suspend - Suspend - - - Hibernate - Hibernate - - - Turn off the monitor - Turn off the monitor - - - Do nothing - Do nothing - - - 1 Minute - 1 Minute - - - %1 Minutes - %1 Minutes - - - 1 Hour - 1 Hour - - - Screen and Suspend - Screen and Suspend - - - Turn off the monitor after - Turn off the monitor after - - - Lock screen after - Lock screen after - - - Computer suspends after - Computer suspends after - - - Computer will suspend after - Computer will suspend after - - - When the lid is closed - When the lid is closed - - - When the power button is pressed - When the power button is pressed - - - Low Battery - Low Battery - - - Low battery notification - Low battery notification - - - Low battery level - Low battery level - - - Auto suspend battery level - Auto suspend battery level - - - Battery Management - Battery Management - - - Display remaining using and charging time - Display remaining using and charging time - - - Maximum capacity - Maximum capacity - - - Show the shutdown Interface - Show the shutdown Interface - - - - UseElectricModule - - Plugged In - Plugged In - - - 1 Minute - 1 Minute - - - %1 Minutes - %1 Minutes - - - 1 Hour - 1 Hour - - - Never - Never - - - Screen and Suspend - Screen and Suspend - - - Turn off the monitor after - Turn off the monitor after - - - Lock screen after - Lock screen after - - - Computer suspends after - Computer suspends after - - - When the lid is closed - When the lid is closed - - - When the power button is pressed - When the power button is pressed - - - Shut down - Shut down - - - Suspend - Suspend - - - Hibernate - Hibernate - - - Turn off the monitor - Turn off the monitor - - - Show the shutdown Interface - Show the shutdown Interface - - - Do nothing - Do nothing - - - - WacomModule - - Drawing Tablet - Drawing Tablet - - - Mode - Mode - - - Pressure Sensitivity - Pressure Sensitivity - - - Pen - Pen - - - Mouse - Mouse - - - Light - Light - - - Heavy - Heavy - - - - main - - Control Center provides the options for system settings. - Control Center provides the options for system settings. - - - - updateControlPanel - - Downloading - Downloading - - - Waiting - Waiting - - - Installing - Installing - - - Backing up - Backing up - - - Download and install - Download and install - - - Learn more - Learn more - - - diff --git a/dcc-old/translations/dde-control-center_eo.ts b/dcc-old/translations/dde-control-center_eo.ts deleted file mode 100644 index 6c43334b2d..0000000000 --- a/dcc-old/translations/dde-control-center_eo.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Kunligi - - - Disconnect - Malkonekti - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - Malfermi labortablan dosieron - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Nuligi - - - Next - Sekva - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Farita - - - Failed to enroll your face - - - - Try Again - - - - Close - Fermi - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Nuligi - - - Next - Sekva - - - Iris enrolled - - - - Done - Farita - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Fingrospuro - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Konektita - - - Not connected - Ne konektita - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Nuligi - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Nuligi - - - Confirm - button - Konfirmi - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Uzantonomo - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - Aŭtomata ensaluto - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - Administranto - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Nuligi - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Nuligi - - - Save - Gardi - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Bildoj - - - - dccV23::BootWidget - - Updating... - Aktualigante... - - - Startup Delay - - - - Theme - Etoso - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - Starto menuo - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Nepra - - - Cancel - button - Nuligi - - - Confirm - button - Konfirmi - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - Lumeco - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - Nokta reĝimo - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - Starto menuo - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - Nuligi - - - Create - Krei - - - New User - - - - User Type - - - - Username - Uzantonomo - - - Full Name - - - - Password - Pasvorto - - - Repeat Password - Ripeti pasvorton - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - Administranto - - - Customized - - - - Required - Nepra - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Bildoj - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - Nomo - - - Required - Nepra - - - Command - Komando - - - Cancel - Nuligi - - - Add - Aldoni - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - La fulmoklavo kaŭzas konflikton kun %1, klaku sur Aldoni por efektivigi ĉi tiun fulmoklavon tuje - - - - dccV23::CustomEdit - - Required - Nepra - - - Cancel - Nuligi - - - Save - Gardi - - - Shortcut - Fulmoklavo - - - Name - Nomo - - - Command - Komando - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - La fulmoklavo kaŭzas konflikton kun %1, klaku sur Aldoni por efektivigi ĉi tiun fulmoklavon tuje - - - - dccV23::CustomItem - - Shortcut - Fulmoklavo - - - Please enter a shortcut - Bv. enigi fulmoklavon - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Sekva - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Nuligi - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Ekrano - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Ripeti prokaston - - - Short - - - - Long - - - - Repeat Rate - Ripeti ritmon - - - Slow - Malrapida - - - Fast - Rapida - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - Maldekstra mano - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Eltempiĝo de duobla alklako - - - Slow - Malrapida - - - Fast - Rapida - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - klavara dizajno - - - Edit - Redakti - - - Add Keyboard Layout - Aldoni klavararanĝon - - - Done - Farita - - - - dccV23::KeyboardLayoutDialog - - Cancel - Nuligi - - - Add - Aldoni - - - Add Keyboard Layout - Aldoni klavararanĝon - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Klavaro kaj lingvo - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - klavara dizajno - - - Language - Lingvo - - - Shortcuts - Fulmoklavoj - - - - dccV23::MainWindow - - Help - Helpo - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - Nova pasvorto - - - Repeat Password - Ripeti pasvorton - - - Password Hint - - - - Cancel - Nuligi - - - Save - Gardi - - - Passwords do not match - - - - Required - Nepra - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Erara pasvorto - - - New password should differ from the current one - Nova pasvorto devas esti malsama de la malnova - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - Tuŝbloko - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - Indikilrapido - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Natura rulado - - - Slow - Malrapida - - - Fast - Rapida - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Maniero - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Duplikati - - - Extend - Etendi - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Forigi kontan dosierujon - - - Cancel - Nuligi - - - Delete - Forigi - - - - dccV23::ResolutionWidget - - Resolution - Rezolucio - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Defaŭlta - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - Rotacio - /display/Rotation - - - Standard - Standarta - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Serĉi - - - - dccV23::SecondaryScreenDialog - - Brightness - Lumeco - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - Mezgranda - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Nuligi - - - Confirm - Konfirmi - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Redakti - - - Done - Farita - - - - dccV23::ShortCutSettingWidget - - System - Sistemo - - - Window - Fenestro - - - Workspace - Laborspaco - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - Fulmoklavo - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Nuligi - - - Replace - Anstataŭigi - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - Versio - - - Edition - - - - Type - Tipo - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Nuligi - - - Add - Aldoni - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Redakti - - - Language List - - - - Add Language - - - - Done - Farita - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Konfirmi - - - Cancel - Nuligi - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Indikilrapido - - - Slow - Malrapida - - - Fast - Rapida - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Jaro - - - Month - Monato - - - Day - Tago - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Defaŭltaj aplikaĵoj - - - - DefAppPlugin - - Webpage - - - - Mail - Retpoŝto - - - Text - Teksto - - - Music - Muziko - - - Video - Video - - - Picture - Bildo - - - Terminal - Terminalo - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Nuligi - - - Next - Sekva - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - Maniero - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - Dimensio - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Laŭstila maniero - - - Efficient mode - Efika maniero - - - Top - - - - Bottom - - - - Left - Maldekstra - - - Right - Dekstra - - - Location - Loko - - - Keep shown - - - - Keep hidden - Teni malvidebla - - - Smart hide - Kaŝi inteligente - - - Small - Malgranda - - - Large - Granda - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Redakti - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Farita - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Aldoni fingrospuron - - - Cancel - Nuligi - - - Next - Sekva - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Redakti - - - Fingerprint Password - Fingrospura pasvorto - - - You can add up to 10 fingerprints - - - - Done - Farita - - - The name already exists - - - - Add Fingerprint - Aldoni fingrospuron - - - - GeneralModule - - General - - - - Balanced - Ekvilibrigita - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Redakti - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Farita - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Neniu - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Eniga laŭteco - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Skribotablo - - - Window - Fenestro - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Malgranda - - - Middle - - - - Large - Granda - - - - PersonalizationModule - - Personalization - Personigo - - - - PersonalizationThemeList - - Cancel - Nuligi - - - Save - Gardi - - - Light - - - - Dark - - - - Auto - Aŭtomata - - - Default - Defaŭlta - - - - PersonalizationThemeModule - - Theme - Etoso - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - Aŭtomata - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - Aŭtomata - General - /personalization/General - - - Default - Defaŭlta - - - - PersonalizationWorker - - Custom - Personigo - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - La kodo por konekti al bludenta aparato estas: - - - Cancel - Nuligi - - - Confirm - Konfirmi - - - - PowerModule - - Power - Ŝalto - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamerao - - - Microphone - Mikrofono - - - User Folders - - - - Calendar - Kalendaro - - - Screen Capture - - - - - QObject - - Control Center - kontroloj centro - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Nuligi - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Serĉi - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - Elŝaltiti - - - Log out - Elsaluti - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - Vakigi korbeton - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Sono - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Maniero - - - Output Volume - Eliga laŭteco - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Mal/dekstra ekvilibrigo - - - Left - Maldekstra - - - Right - Dekstra - - - - TimeSettingModule - - Time Settings - Hor-agordoj - - - Time - - - - Auto Sync - - - - Reset - Restarigi - - - Save - Gardi - - - Server - - - - Address - - - - Required - Nepra - - - Customize - - - - Year - Jaro - - - Month - Monato - - - Day - Tago - - - - TimeZoneChooser - - Cancel - Nuligi - - - Confirm - Konfirmi - - - Add Timezone - Aldoni horzonon - - - Add - Aldoni - - - Change Timezone - Ŝanĝi horzonon - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Restarigi - - - Save - Gardi - - - - TimezoneItem - - Tomorrow - Morgaŭ - - - Yesterday - Hieraŭ - - - Today - Hodiaŭ - - - %1 hours earlier than local - %1 horojn plifrue ol loka horo - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Horzona listo - - - System Timezone - - - - Add Timezone - Aldoni horzonon - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Nuligi - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - Aktualigante... - - - Update All - - - - Last checking time: - - - - Your system is up to date - Via sistemo estas ĝisdatigita - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Dimensio - - - - UpdateModule - - Updates - Ĝisdatigoj - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - Skribotablo - - - Version - Versio - - - - UpdateSettingsModule - - Update Settings - - - - System - Sistemo - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Neniam - - - Shut down - Elŝaltiti - - - Suspend - Paŭzigi - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 minuto - - - %1 Minutes - - - - 1 Hour - 1 horo - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - Komputilo pendados post - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 minuto - - - %1 Minutes - - - - 1 Hour - 1 horo - - - Never - Neniam - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Elŝaltiti - - - Suspend - Paŭzigi - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Maniero - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_es.ts b/dcc-old/translations/dde-control-center_es.ts deleted file mode 100644 index e7af055b74..0000000000 --- a/dcc-old/translations/dde-control-center_es.ts +++ /dev/null @@ -1,3981 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Permitir que otros dispositivos Bluetooth encuentren este equipo - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Activar Bluetooth para buscar dispositivos (altavoz, teclado, ratón) - - - My Devices - Mis dispositivos - - - Other Devices - Otros dispositivos - - - Show Bluetooth devices without names - Mostrar dispositivos Bluetooth sin nombre - - - Connect - Conectar - - - Disconnect - Desconectar - - - Rename - Renombrar - - - Send Files - Enviar archivos - - - Ignore this device - Ignorar este dispositivo - - - Connecting - Conectando - - - Disconnecting - Desconectando - - - - AddButtonWidget - - Add Application - Añadir aplicación - - - Open Desktop file - Abrir un archivo del escritorio - - - Apps (*.desktop) - Aplicaciones (*.desktop) - - - All files (*) - Todos los archivos (*) - - - - AddFaceInfoDialog - - Enroll Face - Inscribir la cara - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Asegúrese de que todas las partes de su cara no estén cubiertas por objetos y sean claramente visibles. Su cara también debe estar bien iluminada. - - - Cancel - Cancelar - - - Next - Siguiente - - - Face enrolled - Cara inscrita - - - Use your face to unlock the device and make settings later - Utiliza tu cara para desbloquear el dispositivo y hacer ajustes más tarde - - - Done - Finalizar - - - Failed to enroll your face - No se ha podido inscribir su cara - - - Try Again - Inténtelo de nuevo - - - Close - Cerrar - - - - AddFingerDialog - - Cancel - Cancelar - - - Done - Finalizar - - - Scan Again - Escanear de nuevo - - - Scan Suspended - Escaneo suspendido - - - - AddIrisInfoDialog - - Enroll Iris - Inscribir el iris - - - Cancel - Cancelar - - - Next - Siguiente - - - Iris enrolled - Iris inscrito - - - Done - Finalizar - - - Failed to enroll your iris - No se ha podido inscribir el iris - - - Try Again - Inténtelo de nuevo - - - - AuthenticationInfoItem - - No more than 15 characters - No más de 15 caracteres - - - Use letters, numbers and underscores only, and no more than 15 characters - Utilice sólo letras, números y guiones bajos, y no más de 15 caracteres - - - Use letters, numbers and underscores only - Utilice sólo letras, números y guiones bajos - - - - AuthenticationModule - - Biometric Authentication - Autenticación biométrica - - - - AuthenticationPlugin - - Fingerprint - Huella dactilar - - - Face - Cara - - - Iris - Iris - - - - BluetoothDeviceModel - - Connected - Conectado - - - Not connected - No conectado - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Administrador de dispositivos Bluetooth - - - - CharaMangerModel - - Fingerprint1 - huella dactilar1 - - - Fingerprint2 - huella dactilar2 - - - Fingerprint3 - huella dactilar3 - - - Fingerprint4 - huella dactilar4 - - - Fingerprint5 - huella dactilar5 - - - Fingerprint6 - huella dactilar6 - - - Fingerprint7 - huella dactilar7 - - - Fingerprint8 - huella dactilar8 - - - Fingerprint9 - huella dactilar9 - - - Fingerprint10 - huella dactilar10 - - - Scan failed - Escaneo fallido - - - The fingerprint already exists - La huella dactilar ya existe - - - Please scan other fingers - Escanee otros dedos - - - Unknown error - Error desconocido - - - Scan suspended - Escaneo suspendido - - - Cannot recognize - No puedo reconocer - - - Moved too fast - Lo moviste muy rápido - - - Finger moved too fast, please do not lift until prompted - El dedo se movió demasiado rápido. Por favor, no lo levante hasta que se le indique - - - Unclear fingerprint - La huella dactilar es ilegible - - - Clean your finger or adjust the finger position, and try again - Limpie su dedo o ajuste la posición del mismo, e intente de nuevo - - - Already scanned - Escaneo finalizado - - - Adjust the finger position to scan your fingerprint fully - Ajuste la posición del dedo para escanear su huella dactilar completamente - - - Finger moved too fast. Please do not lift until prompted - Movió el dedo muy rápido. Por favor, no lo levante hasta que se indique - - - Lift your finger and place it on the sensor again - Suelte su dedico y colóquelo en el sensor de nuevo - - - Position your face inside the frame - Coloque su cara dentro del marco - - - Face enrolled - Cara inscrita - - - Position a human face please - Coloque una cara humana por favor - - - Keep away from the camera - Aléjese de la cámara - - - Get closer to the camera - Acérquese a la cámara - - - Do not position multiple faces inside the frame - No coloque varias caras dentro del marco - - - Make sure the camera lens is clean - Asegúrese de que el objetivo de la cámara está limpio - - - Do not enroll in dark, bright or backlit environments - No se inscriba en ambientes oscuros, brillantes o a contraluz - - - Keep your face uncovered - Mantenga su cara descubierta - - - Scan timed out - Tiempo de escaneo agotado - - - Device crashed, please scan again! - El dispositivo se ha estropeado, por favor, vuelva a escanear. - - - Cancel - Cancelar - - - - CooperationSettingsDialog - - Collaboration Settings - Configuración de colaboración - - - Share mouse and keyboard - Comparte ratón y teclado - - - Share your mouse and keyboard across devices - Comparta su mouse y teclado a otros dispositivos - - - Share clipboard - Compartir portapapeles - - - Storage path for shared files - Ruta de almacenamiento para archivos compartidos - - - Share the copied content across devices - Comparta el contenido copiado a otros dispositivos - - - Cancel - button - Cancelar - - - Confirm - button - Confirmar - - - - dccV23::AccountSpinBox - - Always - Siempre - - - - dccV23::AccountsModule - - Users - Usuarios - - - User management - Gestión de usuarios - - - Create User - Crear usuario - - - Username - Nombre de usuario - - - Change Password - Cambiar contraseña - - - Delete User - Eliminar usuario - - - User Type - Tipo de usuario - - - Auto Login - Inicio de sesión automático - - - Login Without Password - Iniciar sesión sin contraseña - - - Validity Days - Días vigentes - - - Group - Grupo - - - The full name is too long - El nombre completo es muy largo - - - Standard User - Usuario estándar - - - Administrator - Administrador - - - Reset Password - Restablecer contraseña - - - The full name has been used by other user accounts - El nombre completo ha sido utilizado por otras cuentas de usuario - - - Full Name - Nombre completo - - - Go to Settings - Ir a la configuración - - - Cancel - Cancelar - - - OK - Aceptar - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - El "Inicio de sesión automático" se puede habilitar solo para una cuenta, desactívelo primero para la cuenta "%1" - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Su host fue retirado del servidor de dominio exitosamente - - - Your host joins the domain server successfully - Su host se unió al servidor de dominio exitosamente - - - Your host failed to leave the domain server - Su host no se pudo retirar del servidor de dominio - - - Your host failed to join the domain server - Su host no pudo unirse al servidor de dominio - - - AD domain settings - Ajustes de dominio AD - - - Password not match - La contraseña no coincide - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Mostrar notificaciones de %1 en el escritorio y en el centro de notificaciones. - - - Play a sound - Reproducir un sonido - - - Show messages on lockscreen - Mostrar mensajes en la pantalla de bloqueo - - - Show in notification center - Mostrar en el centro de notificación - - - Show message preview - Mostrar vista previa del mensaje - - - - dccV23::AvatarListDialog - - Person - Persona - - - Animal - Animal - - - Illustration - Ilustración - - - Expression - Expression - - - Custom Picture - Imagen personalizada - - - Cancel - Cancelar - - - Save - Guardar - - - - dccV23::AvatarListFrame - - Dimensional Style - Estilo dimensional - - - Flat Style - Estilo plano - - - - dccV23::AvatarListView - - Images - Imágenes - - - - dccV23::BootWidget - - Updating... - Actualizando... - - - Startup Delay - Mostrar menú de arranque - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Haga clic para establecer la opción de arranque predeterminada. Arrastre y suelte una imagen para cambiar el fondo. - - - Click the option in boot menu to set it as the first boot - Haga clic en la opción del menú de inicio para configurarlo como el primero en el inicio - - - Switch theme on to view it in boot menu - Active el tema para verlo en el menú de arranque - - - GRUB Authentication - Autenticación de GRUB - - - GRUB password is required to edit its configuration - La contraseña de GRUB es necesaria para editar su configuración - - - Change Password - Cambiar contraseña - - - Boot Menu - Menú de arranque - - - Change GRUB password - Cambiar la contraseña de GRUB - - - Username: - Nombre de usuario: - - - root - raíz - - - New password: - Nueva contraseña: - - - Repeat password: - Repita la contraseña: - - - Required - Requerido - - - Cancel - button - Cancelar - - - Confirm - button - Confirmar - - - Password cannot be empty - La contraseña no puede estar vacía - - - Passwords do not match - Las contraseñas no coinciden - - - - dccV23::BrightnessWidget - - Brightness - Brillo - - - Color Temperature - Temperatura de color - - - Auto Brightness - Brillo automático - - - Night Shift - Modo nocturno - - - The screen hue will be auto adjusted according to your location - El tono de la pantalla se ajustará automáticamente de acuerdo con su ubicación - - - Change Color Temperature - Cambiar temperatura de color - - - Cool - Frio - - - Warm - Cálido - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Colaboración multipantalla - - - PC Collaboration - Colaboración de PC - - - Connect to - Conectar a - - - Select a device for collaboration - Seleccione un dispositivo para colaborar - - - Device Orientation - Orientación del dispositivo - - - On the top - Arriba - - - On the right - A la derecha - - - On the bottom - Abajo - - - On the left - A la izquierda - - - My Devices - Mis dispositivos - - - Other Devices - Otros dispositivos - - - - dccV23::CommonInfoPlugin - - General Settings - Configuración general - - - Boot Menu - Menú de arranque - - - Developer Mode - Modo desarrollador - - - User Experience Program - Experiencia de usuario - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Aceptar y unirse al programa de experiencia de usuario - - - The Disclaimer of Developer Mode - Descargo de responsabilidad del modo desarrollador - - - Agree and Request Root Access - Aceptar y solicitar el acceso de superusuario - - - Failed to get root access - Error al obtener acceso de superusuario - - - Please sign in to your Union ID first - Primero inicie sesión en su ID de la Unión - - - Cannot read your PC information - No se puede leer la información del equipo - - - No network connection - Sin conexión a red - - - Certificate loading failed, unable to get root access - La carga del certificado falló, no es posible obtener acceso de superusuario - - - Signature verification failed, unable to get root access - La verificación de la firma falló, no es posible obtener acceso de superusuario - - - - dccV23::CreateAccountPage - - Group - Grupo - - - Cancel - Cancelar - - - Create - Crear - - - New User - Nuevo usuario - - - User Type - Tipo de usuario - - - Username - Nombre de usuario - - - Full Name - Nombre completo - - - Password - Contraseña - - - Repeat Password - Repita la contraseña - - - Password Hint - Sugerencia de contraseña - - - The full name is too long - El nombre completo es muy largo - - - Passwords do not match - Las contraseñas no coinciden - - - Standard User - Usuario estándar - - - Administrator - Administrador - - - Customized - Personalizado - - - Required - Requerido - - - optional - opcional - - - The hint is visible to all users. Do not include the password here. - La pista es visible para todos los usuarios. No incluya aquí la contraseña. - - - Policykit authentication failed - Falló la autenticación de Policykit - - - Username must be between 3 and 32 characters - El nombre de usuario debe tener entre 3 y 32 caracteres - - - The first character must be a letter or number - El primer carácter debe ser una letra o número - - - Your username should not only have numbers - Su nombre de usuario no sólo debe contener números - - - The username has been used by other user accounts - El nombre de usuario ha sido utilizado por otras cuentas de usuario - - - The full name has been used by other user accounts - El nombre completo ha sido utilizado por otras cuentas de usuario - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - No ha subido una imagen, puede hacer clic o arrastrar para cargar una imagen - - - Uploaded file type is incorrect, please upload again - El tipo de archivo subido es incorrecto, súbalo de nuevo - - - Images - Imágenes - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Añadir atajo de teclado personalizado - - - Name - Nombre - - - Required - Requerido - - - Command - Comando - - - Cancel - Cancelar - - - Add - Añadir - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Este atajo de teclado entra en conflicto con %1, haga clic en Añadir para aplicarlo inmediatamente - - - - dccV23::CustomEdit - - Required - Requerido - - - Cancel - Cancelar - - - Save - Guardar - - - Shortcut - Atajo - - - Name - Nombre - - - Command - Comando - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Este atajo de teclado entra en conflicto con %1, haga clic en Añadir para aplicarlo inmediatamente - - - - dccV23::CustomItem - - Shortcut - Atajo - - - Please enter a shortcut - Por favor ingrese un atajo - - - - dccV23::CustomRegionFormatDialog - - Custom format - Formato personalizado - - - First day of week - Primer día de la semana - - - Short date - Fecha corta - - - Long date - Fecha larga - - - Short time - Hora corta - - - Long time - Hora larga - - - Currency symbol - Símbolo de la divisa - - - Numbers - Número - - - Paper - Papel - - - Cancel - Cancelar - - - Save - Guardar - - - - dccV23::DetailInfoItem - - For more details, visit: - Para más detalles, visite: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Solicitar acceso de superusuario - - - Online - En línea - - - Offline - Fuera de línea - - - Please sign in to your Union ID first and continue - Por favor, inicie primero con su ID y continúe - - - Next - Siguiente - - - Export PC Info - Exportar información - - - Import Certificate - Importar certificado - - - 1. Export your PC information - 1. Exporte la información de su equipo - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Vaya a https://www.chinauos.com/developMode para descargar un certificado sin conexión - - - 3. Import the certificate - 3. Importe el certificado - - - - dccV23::DeveloperModeWidget - - Request Root Access - Solicitar acceso de superusuario - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - El modo desarrollador le permite activar los privilegios de superusuario, instalar y ejecutar aplicaciones sin firmar que no son de la tienda de aplicaciones, pero también podría dañar la integridad de su sistema, por favor úselo cuidadosamente. - - - The feature is not available at present, please activate your system first - La función no está disponible, primero active su sistema - - - Failed to get root access - Error al obtener acceso de superusuario - - - Please sign in to your Union ID first - Primero inicie sesión en su ID de la Unión - - - Cannot read your PC information - No se puede leer la información del equipo - - - No network connection - Sin conexión a red - - - Certificate loading failed, unable to get root access - La carga del certificado falló, no es posible obtener acceso de superusuario - - - Signature verification failed, unable to get root access - La verificación de la firma falló, no es posible obtener acceso de superusuario - - - To make some features effective, a restart is required. Restart now? - Para que se apliquen algunas características, se requiere un reinicio. ¿Reiniciar ahora? - - - Cancel - Cancelar - - - Restart Now - Reinicar ahora - - - Root Access Allowed - Acceso de superusuario permitido - - - - dccV23::DisplayPlugin - - Display - Pantalla - - - Light, resolution, scaling and etc - Luz, resolución, escalado, etc. - - - - dccV23::DouTestWidget - - Double-click Test - Doble clic para probar - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Configuración de Teclado - - - Repeat Delay - Intervalo de repetición - - - Short - Corto - - - Long - Largo - - - Repeat Rate - Tasa de repetición - - - Slow - Lento - - - Fast - Rápido - - - Test here - Pruebe aquí - - - Numeric Keypad - Teclado numérico - - - Caps Lock Prompt - Indicador bloquear mayúsculas - - - - dccV23::GeneralSettingWidget - - Left Hand - Mano zurda - - - Disable touchpad while typing - Desactivar el panel táctil mientras escribe - - - Scrolling Speed - Velocidad de desplazamiento - - - Double-click Speed - Velocidad de doble clic - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Distribución del teclado - - - Edit - Editar - - - Add Keyboard Layout - Añadir distribución de teclado - - - Done - Finalizar - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancelar - - - Add - Añadir - - - Add Keyboard Layout - Añadir distribución de teclado - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Idioma y teclado - - - Keyboard - Teclado - - - Keyboard Settings - Configuración de Teclado - - - keyboard Layout - Distribución del teclado - - - Keyboard Layout - Distribución del teclado - - - Language - Idioma - - - Shortcuts - Atajos - - - - dccV23::MainWindow - - Help - Ayuda - - - - dccV23::ModifyPasswdPage - - Change Password - Cambiar contraseña - - - Reset Password - Restablecer contraseña - - - Resetting the password will clear the data stored in the keyring. - Restablecer la contraseña borrará los datos almacenados en el llavero. - - - Current Password - Contraseña actual - - - Forgot password? - ¿Ha olvidado su contraseña? - - - New Password - Nueva contraseña: - - - Repeat Password - Repita la contraseña - - - Password Hint - Sugerencia de contraseña - - - Cancel - Cancelar - - - Save - Guardar - - - Passwords do not match - Las contraseñas no coinciden - - - Required - Requerido - - - Optional - Opcional - - - Password cannot be empty - La contraseña no puede estar vacía - - - The hint is visible to all users. Do not include the password here. - La pista es visible para todos los usuarios. No incluya aquí la contraseña. - - - Wrong password - Contraseña incorrecta - - - New password should differ from the current one - La nueva contraseña debe ser diferente a la actual - - - System error - Error del sistema - - - Network error - Error de red - - - - dccV23::MonitorControlWidget - - Identify - Identificar - - - Gather Windows - Reunir ventanas - - - Screen rearrangement will take effect in %1s after changes - La reorganización de la pantalla tendrá efecto en %1s después de los cambios - - - - dccV23::MousePlugin - - Mouse - Ratón - - - General - General - - - Touchpad - Panel táctil - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Velocidad del puntero - - - Mouse Acceleration - Acceleración del ratón - - - Disable touchpad when a mouse is connected - Desactivar el panel táctil cuando el ratón está conectado - - - Natural Scrolling - Desplazamiento natural - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::MultiScreenWidget - - Multiple Displays - Múltiples pantallas - /display/Multiple Displays - - - Mode - Modo - /display/Mode - - - Main Screen - Pantalla principal - /display/Main Scree - - - Duplicate - Duplicada - - - Extend - Extendida - - - Only on %1 - Solo mostrada en %1 - - - - dccV23::NotificationModule - - AppNotify - Notificación de la aplicación - - - Notification - Notificaciones - - - SystemNotify - Notificación del sistema - - - - dccV23::PalmDetectSetting - - Palm Detection - Detección de palma - - - Minimum Contact Surface - Superficie de contacto mínima - - - Minimum Pressure Value - Valor de presión mínima - - - Disable the option if touchpad doesn't work after enabled - Desactive la opción si el panel táctil no funciona después de habilitar - - - - dccV23::PluginManager - - following plugins load failed - Falló la carga de los siguientes complementos - - - plugins cannot loaded in time - los complementos no se pueden cargar a tiempo - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Política de privacidad - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Somos profundamente conscientes de la importancia que tiene para usted su información personal. Tenemos la Política de privacidad que cubre cómo recopilamos, usamos, compartimos, transferimos, divulgamos públicamente y almacenamos su información.</p><p>Puede <a href="%1">hacer clic aquí</a> para ver nuestra política de privacidad más reciente o verla en línea visitando <a href="%1">%1</a>. Lea atentamente y comprenda completamente nuestras prácticas sobre la privacidad del cliente. Si tiene alguna pregunta, comuníquese con nosotros a: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - La contraseña no puede estar vacía - - - Password must have at least %1 characters - La contraseña debe tener al menos %1 caracteres - - - Password must be no more than %1 characters - La contraseña no debe tener más de %1 caracteres - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - La contraseña debe contener letras latinas (sensible a mayúsculas), números o símbolos (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - No más de %1 caracteres de palíndromo, por favor - - - No more than %1 monotonic characters please - No más de %1 caracteres monótonos por favor - - - No more than %1 repeating characters please - No más de %1 caracteres repetidos, por favor - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - La contraseña debe contener letras mayúsculas, minúsculas, números y símbolos (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - La contraseña no debe contener más de 4 caracteres palíndromos - - - Do not use common words and combinations as password - No use palabras y combinaciones simples como contraseña - - - Create a strong password please - Por favor, cree una contraseña fuerte - - - It does not meet password rules - No cumple con las reglas de la contraseña - - - - dccV23::RefreshRateWidget - - Refresh Rate - Tasa de refresco - - - Hz - Hz - - - Recommended - Recomendado - - - - dccV23::RegionFormatDialog - - Region format - Formato regional - - - Default format - Formato predeterminado - - - First of day - Primera del dia - - - Short date - Fecha corta - - - Long date - Fecha larga - - - Short time - Hora corta - - - Long time - Hora larga - - - Currency symbol - Símbolo de la divisa - - - Numbers - Número - - - Paper - Papel - - - Cancel - Cancelar - - - Save - Guardar - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - ¿Está seguro de que desea borrar esta cuenta? - - - Delete account directory - Borrar carpeta de cuenta - - - Cancel - Cancelar - - - Delete - Eliminar - - - - dccV23::ResolutionWidget - - Resolution - Resolución - /display/Resolution - - - Resize Desktop - Cambiar el tamaño del escritorio - /display/Resize Desktop - - - Default - Por defecto - - - Fit - Encajar - - - Stretch - Estirar - - - Center - Centro - - - Recommended - Recomendado - - - - dccV23::RotateWidget - - Rotation - Rotación - /display/Rotation - - - Standard - Estándar - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Este monitor solo soporta escalado del 100% - - - Display Scaling - Escalado de pantalla - - - - dccV23::SearchInput - - Search - Buscar en Internet - - - - dccV23::SecondaryScreenDialog - - Brightness - Brillo - - - - dccV23::SecurityLevelItem - - Weak - Débil - - - Medium - Medio - - - Strong - Fuerte - - - - dccV23::SecurityQuestionsPage - - Security Questions - Preguntas de seguridad - - - These questions will be used to help reset your password in case you forget it. - Estas preguntas se utilizarán para ayudar a restablecer su contraseña en caso de que la olvide. - - - Security question 1 - Pregunta de seguridad 1 - - - Security question 2 - Pregunta de seguridad 2 - - - Security question 3 - Pregunta de seguridad 3 - - - Cancel - Cancelar - - - Confirm - Confirmar - - - Keep the answer under 30 characters - Mantenga la respuesta por debajo de los 30 caracteres - - - Do not choose a duplicate question please - Por favor no elija una pregunta duplicada - - - Please select a question - Por favor, seleccione una pregunta - - - What's the name of the city where you were born? - ¿Cómo se llama la ciudad donde naciste? - - - What's the name of the first school you attended? - ¿Cómo se llama la primera escuela a la que asististe? - - - Who do you love the most in this world? - ¿A quién amas más en este mundo? - - - What's your favorite animal? - ¿Cuál es tu animal favorito? - - - What's your favorite song? - ¿Cuál es tu canción favorita? - - - What's your nickname? - ¿Cuál es tu apodo? - - - It cannot be empty - No puede estar vacío - - - - dccV23::SettingsHead - - Edit - Editar - - - Done - Finalizar - - - - dccV23::ShortCutSettingWidget - - System - Sistema - - - Window - Ventana - - - Workspace - Espacio de trabajo - - - Assistive Tools - Herramientas de asistencia - - - Custom Shortcut - Atajos personalizados - - - Restore Defaults - Restaurar valores predeterminados - - - Shortcut - Atajo - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Por favor reinicie los atajos - - - Cancel - Cancelar - - - Replace - Reemplazar - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Este atajo de teclado está en conflicto con %1, haga clic en Reemplazar para aplicar el atajo inmediatamente - - - - dccV23::ShortcutItem - - Enter a new shortcut - Entrar un nuevo atajo - - - - dccV23::SystemInfoModel - - available - disponible - - - - dccV23::SystemInfoModule - - About This PC - Acerca del equipo - - - Computer Name - Nombre del Ordenador - - - systemInfo - información del sistema - - - OS Name - Nombre del SO - - - Version - Versión - - - Edition - Edición - - - Type - Tipo - - - Authorization - Autorización - - - Processor - Procesador - - - Memory - Memoria - - - Graphics Platform - Plataforma de gráficos - - - Kernel - Kernel - - - Agreements and Privacy Policy - Acuerdo y Política de privacidad - - - Edition License - Licencia - - - End User License Agreement - Acuerdo de licencia de usuario final - - - Privacy Policy - Política de privacidad - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Sistema - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancelar - - - Add - Añadir - - - Add System Language - Añadir idioma del sistema - - - - dccV23::SystemLanguageWidget - - Edit - Editar - - - Language List - Lista de idiomas - - - Add Language - Añadir idioma - - - Done - Finalizar - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - No molestar - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Las notificaciones no se mostrarán en el escritorio y los sonidos se silenciarán, pero puede ver todos los mensajes en el centro de notificaciones. - - - When the screen is locked - Cuando la pantalla está bloqueada - - - - dccV23::TimeSlotItem - - From - De - - - To - Para - - - - dccV23::TouchScreenModule - - Touch Screen - Pantalla Táctil - - - Select your touch screen when connected or set it here. - Seleccione su pantalla táctil cuando la conecte o configúrela aquí. - - - Confirm - Confirmar - - - Cancel - Cancelar - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Velocidad del puntero - - - Enable TouchPad - Habilitar panel táctil - - - Tap to Click - Toque para hacer clic - - - Natural Scrolling - Desplazamiento natural - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Velocidad del puntero - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Unirme al programa de experiencia de usuario - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>El hecho de unirse al Programa de Experiencia del Usuario significa que nos concede y autoriza a recopilar y utilizar la información de su dispositivo, sistema y aplicaciones. Si se niega a que recopilemos y utilicemos la información mencionada, no se una al Programa de Experiencia de Usuario. Para más detalles, consulte la Política de Privacidad de Deepin (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>El hecho de unirse al Programa de Experiencia del Usuario significa que nos concede y autoriza a recopilar y utilizar la información de su dispositivo, sistema y aplicaciones. Si se niega a que recopilemos y utilicemos la información mencionada, no se una al Programa de Experiencia de Usuario. Para saber más sobre la gestión de sus datos, consulte la política de privacidad de UnionTech OS (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Año - - - Month - Mes - - - Day - Día - - - - DatetimeModule - - Time and Format - Hora y formato - - - - DatetimeWorker - - Authentication is required to change NTP server - Se requiere autenticación para cambiar el servidor NTP - - - - DefAppModule - - Default Applications - Aplicaciones - - - - DefAppPlugin - - Webpage - Navegador - - - Mail - Correo - - - Text - Texto - - - Music - Música - - - Video - Vídeo - - - Picture - Imagen - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Aviso legal - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Antes de usar el reconocimiento facial, tenga en cuenta que: -1. Su dispositivo puede ser desbloqueado por personas u objetos que se parecen a usted. -2. El reconocimiento facial es menos seguro que las contraseñas digitales y las contraseñas mixtas. -3. La tasa de éxito del desbloqueo de su dispositivo a través del reconocimiento facial se reducirá en un escenario con poca luz, mucha luz, contraluz, gran ángulo y otros escenarios. -4. No entregue su dispositivo a otros al azar, para evitar el uso malicioso del reconocimiento facial. -5. Además de los escenarios anteriores, debe prestar atención a otras situaciones que pueden afectar el uso normal del reconocimiento facial. - -Para un mejor uso del reconocimiento facial, preste atención a los siguientes asuntos al ingresar los datos faciales: -1. Permanezca en un lugar bien iluminado, evite la luz solar directa y otras personas que aparezcan en la pantalla grabada. -2. Preste atención al estado facial al ingresar datos y no permita que sus sombreros, cabello, anteojos de sol, máscaras, maquillaje pesado y otros factores cubran sus rasgos faciales. -3. Evite inclinar o bajar la cabeza, cerrar los ojos o mostrar solo un lado de la cara, y asegúrese de que su cara frontal aparezca clara y completamente en el cuadro de aviso. - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - La "autenticación biométrica" ​​​​es una función para la autenticación de la identidad del usuario proporcionada por UnionTech Software Technology Co., Ltd. A través de la "autenticación biométrica", los datos biométricos recopilados se compararán con los almacenados en el dispositivo y la identidad del usuario se verificará en función del resultado de la comparación. -Tenga en cuenta que UnionTech Software no recopilará ni accederá a su información biométrica, que se almacenará en su dispositivo local. Solo habilite la autenticación biométrica en su dispositivo personal y use su propia información biométrica para operaciones relacionadas, y deshabilite o elimine de inmediato la información biométrica de otras personas en ese dispositivo, de lo contrario, correrá con el riesgo que surja de ello. -UnionTech Software se compromete a investigar y mejorar la seguridad, precisión y estabilidad de la autenticación biométrica. Sin embargo, debido a factores ambientales, de equipo, técnicos y de otro tipo y al control de riesgos, no hay garantía de que pase la autenticación biométrica temporalmente. Por lo tanto, no tome la autenticación biométrica como la única forma de iniciar sesión en UnionTech OS. Si tiene alguna pregunta o sugerencia al usar la autenticación biométrica, puede enviar sus comentarios a través de "Servicio y soporte" en el sistema operativo UnionTech. - - - Cancel - Cancelar - - - Next - Siguiente - - - - DisclaimersItem - - I have read and agree to the - He leído y acepto las - - - Disclaimer - Aviso legal - - - - DockModuleObject - - Dock - Anclar - - - Multiple Displays - Múltiples pantallas - - - Show Dock - Mostrar el muelle - - - Mode - Modo - - - Position - Posición - - - Status - Estado - - - Show recent apps in Dock - Mostrar aplicaciones recientes en el muelle - - - Size - Tamaño - - - Plugin Area - Área de complementos - - - Select which icons appear in the Dock - Seleccione los iconos que aparecerán en el muelle - - - Fashion mode - Modo elegante - - - Efficient mode - Modo eficiente - - - Top - Arriba - - - Bottom - Abajo - - - Left - Izquierda - - - Right - Derecha - - - Location - Ubicación - - - Keep shown - Mantener visible - - - Keep hidden - Mantener oculto - - - Smart hide - Ocultar inteligentemente - - - Small - Pequeña - - - Large - Grande - - - On screen where the cursor is - En la pantalla donde está el cursor - - - Only on main screen - Solo en la pantalla principal - - - - FaceInfoDialog - - Enroll Face - Inscribir la cara - - - Position your face inside the frame - Coloque su cara dentro del marco - - - - FaceWidget - - Edit - Editar - - - Manage Faces - Gestionar caras - - - You can add up to 5 faces - Puede añadir hasta 5 caras - - - Done - Finalizar - - - Add Face - Añadir cara - - - The name already exists - El nombre ya existe - - - Faceprint - Huella facial - - - - FaceidDetailWidget - - No supported devices found - No se han encontrado dispositivos compatibles - - - - FingerDetailWidget - - No supported devices found - No se han encontrado dispositivos compatibles - - - - FingerDisclaimer - - Add Fingerprint - Añadir huella dactilar - - - Cancel - Cancelar - - - Next - Siguiente - - - - FingerInfoWidget - - Place your finger - Coloque su dedo - - - Place your finger firmly on the sensor until you're asked to lift it - Coloque su dedo firmemente en el sensor hasta que le pida que lo levante - - - Scan the edges of your fingerprint - Escanee los bordes de su huella dactilar - - - Place the edges of your fingerprint on the sensor - Coloque los bordes de su huella dactilar en el sensor - - - Lift your finger - Suelte su dedo - - - Lift your finger and place it on the sensor again - Suelte su dedico y colóquelo en el sensor de nuevo - - - Adjust the position to scan the edges of your fingerprint - Ajuste la posición para escanear los bordes de su huella dactilar - - - Lift your finger and do that again - Levante su dedo y colóquelo en el sensor nuevamente - - - Fingerprint added - Huella dactilar añadida - - - - FingerWidget - - Edit - Editar - - - Fingerprint Password - Contraseña de huella dactilar - - - You can add up to 10 fingerprints - Puede añadir hasta 10 huellas dactilares - - - Done - Finalizar - - - The name already exists - El nombre ya existe - - - Add Fingerprint - Añadir huella dactilar - - - - GeneralModule - - General - General - - - Balanced - Balanceado - - - Balance Performance - Rendimiento equilibrado - - - High Performance - Alto rendimiento - - - Power Saver - Ahorro de energía - - - Power Plans - Perfiles de energía - - - Power Saving Settings - Ajustes de energía - - - Auto power saving on low battery - Ahorro de energía automático cuando la batería está baja - - - Decrease Brightness - Disminuir el brillo - - - Low battery threshold - Umbral de batería baja - - - Auto power saving on battery - Ahorro automático de energía en la batería - - - Wakeup Settings - Ajustes de reactivación - - - Unlocking is required to wake up the computer - Se requiere desbloqueo para reactivar la computadora. - - - Unlocking is required to wake up the monitor - Es necesario desbloquearlo para activar el monitor. - - - - HostNameItem - - It cannot start or end with dashes - No puede empezar ni terminar con guiones - - - 1~63 characters please - De 1 a 63 caracteres, por favor - - - - InternalButtonItem - - Internal testing channel - Canal de pruebas internas - - - click here open the link - haga clic aquí abrir el enlace - - - - IrisDetailWidget - - No supported devices found - No se han encontrado dispositivos compatibles - - - - IrisWidget - - Edit - Editar - - - Manage Irises - Gestionar los iris - - - You can add up to 5 irises - Puede añadir hasta 5 iris - - - Done - Finalizar - - - Add Iris - Añadir iris - - - The name already exists - El nombre ya existe - - - Iris - Iris - - - - KeyLabel - - None - Ninguno - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Comunidad Deepin - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Dispositivo de entrada - - - Automatic Noise Suppression - Supresión automática de ruido - - - Input Volume - Volumen de entrada - - - Input Level - Nivel de entrada - - - - PersonalizationDesktopModule - - Desktop - Escritorio - - - Window - Ventana - - - Window Effect - Efectos de ventana - - - Window Minimize Effect - Efecto al minimizar ventana - - - Transparency - Transparencia - - - Rounded Corner - Esquinas redondeadas - - - Scale - Escala - - - Magic Lamp - Lámpara mágica - - - Small - Pequeño - - - Middle - Medio - - - Large - Grande - - - - PersonalizationModule - - Personalization - Personalización - - - - PersonalizationThemeList - - Cancel - Cancelar - - - Save - Guardar - - - Light - Claro - - - Dark - Oscuro - - - Auto - Automático - - - Default - Por defecto - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - Apariencia - - - Accent Color - Color del resaltado - - - Icon Settings - Ajustes de icono - - - Icon Theme - Tema de íconos - - - Cursor Theme - Tema de cursor - - - Text Settings - Ajustes de texto - - - Font Size - Tamaño de la fuente - - - Standard Font - Fuente estándar - - - Monospaced Font - Fuente monoespaciada - - - Light - Claro - - - Auto - Automático - - - Dark - Oscuro - - - - PersonalizationThemeWidget - - Light - Claro - General - /personalization/General - - - Dark - Oscuro - General - /personalization/General - - - Auto - Automático - General - /personalization/General - - - Default - Por defecto - - - - PersonalizationWorker - - Custom - Personalizar - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - El PIN para conectar el dispositivo Bluetooth es: - - - Cancel - Cancelar - - - Confirm - Confirmar - - - - PowerModule - - Power - Energía - - - Battery low, please plug in - Batería baja, por favor, conéctela - - - Battery critically low - Batería críticamente baja - - - - PrivacyModule - - Privacy and Security - Privacidad y Seguridad - - - - PrivacySecurityModel - - Camera - Cámara - - - Microphone - Micrófono - - - User Folders - Carpetas de usuario - - - Calendar - Calendario - - - Screen Capture - Captura de pantalla - - - - QObject - - Control Center - Centro de control - - - , - , - - - Error occurred when reading the configuration files of password rules! - Se ha producido un error al leer los archivos de configuración de las reglas de contraseña. - - - Auto adjust CPU operating frequency based on CPU load condition - Ajuste automático de la frecuencia de funcionamiento de la CPU según la condición de carga de la CPU - - - Aggressively adjust CPU operating frequency based on CPU load condition - Ajuste agresivo de la frecuencia de funcionamiento de la CPU según la condición de carga de la CPU - - - Be good to imporving performance, but power consumption and heat generation will increase - Será bueno mejorar el rendimiento, pero el consumo de energía y la generación de calor aumentarán. - - - CPU always works under low frequency, will reduce power consumption - Si la CPU funciona a baja frecuencia, se reducirá el consumo de energía. - - - Activated - Activado - - - View - Ver - - - To be activated - Activación pendiente - - - Activate - Activar - - - Expired - Vencido - - - In trial period - En período de prueba - - - Trial expired - Período de prueba finalizado - - - Touch Screen Settings - Ajustes de pantalla táctil - - - The settings of touch screen changed - La configuración de la pantalla táctil cambió - - - Checking system versions, please wait... - Comprobando versión del sistema, por favor espere... - - - Leave - Salir - - - Cancel - Cancelar - - - - RegionModule - - Region and format - Región y formato - - - Country or Region - Región - - - Format - Formato - - - Provide localized services based on your region. - Proporciona servicios localizados según su región. - - - Select matching date and time formats based on language and region - Seleccione formatos de fecha y hora coincidentes según el idioma y la región - - - Region format - Idioma y región - - - First day of week - Primer día de la semana - - - Short date - Fecha corta - - - Long date - Fecha larga - - - Short time - Hora corta - - - Long time - Hora larga - - - Currency symbol - Símbolo de la divisa - - - Numbers - Números - - - Paper - Papel - - - custom format - Formato personalizado - - - - ResultItem - - Your system is not authorized, please activate first - Su sistema no está autorizado, por favor, primero actívelo - - - Update successful - Actualización exitosa - - - Failed to update - La actualización falló - - - - SearchInput - - Search - Buscar en Internet - - - - ServiceSettingsModule - - Apps can access your camera: - Aplicaciones con acceso a su cámara: - - - Apps can access your microphone: - Aplicaciones con acceso a su microfono: - - - Apps can access user folders: - Aplicaciones con acceso a su carpeta de usuario: - - - Apps can access Calendar: - Aplicaciones con acceso al calendario: - - - Apps can access Screen Capture: - Aplicaciones con acceso al capturador de pantalla: - - - No apps requested access to the camera - Sin aplicaciones solicitando acceso a la cámara - - - No apps requested access to the microphone - Sin aplicaciones solicitando acceso al microfono - - - No apps requested access to user folders - Sin aplicaciones solicitando acceso a las carpetas de usuario - - - No apps requested access to Calendar - Sin aplicaciones solicitando acceso al Calendario - - - No apps requested access to Screen Capture - Sin aplicaciones solicitando acceso al Capturador de pantalla - - - - SoundEffectsPage - - Sound Effects - Efectos de sonido - - - - SoundModel - - Boot up - Arrancar - - - Shut down - Apagar - - - Log out - Cerrar sesión - - - Wake up - Despertar - - - Volume +/- - Volumen +/- - - - Notification - Notificaciones - - - Low battery - Batería baja - - - Send icon in Launcher to Desktop - Enviar ícono del lanzador al escritorio - - - Empty Trash - Vaciar papelera - - - Plug in - Enchufar - - - Plug out - Desenchufar - - - Removable device connected - Dispositivo extraíble conectado - - - Removable device removed - Dispositivo extraíble retirado - - - Error - Error - - - - SoundModule - - Sound - Sonido - - - - SoundPlugin - - Output - Salida - - - Auto pause - Pausa automática - - - Whether the audio will be automatically paused when the current audio device is unplugged - El audio se pausará automáticamente cuando se desconecte el dispositivo de audio actual - - - Input - Entrada - - - Sound Effects - Efectos de sonido - - - Devices - Dispositivos - - - Input Devices - Dispositivo de entrada - - - Output Devices - Dispositivo de salida - - - - SpeakerPage - - Output Device - Dispositivo de salida - - - Mode - Modo - - - Output Volume - Volumen de salida - - - Volume Boost - Amplificar el volumen - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Si el volumen es más fuerte que el 100%, puede distorsionar el audio y ser dañino para los dispositivos de salida - - - Left/Right Balance - Balance izquierda/derecha - - - Left - Izquierda - - - Right - Derecha - - - - TimeSettingModule - - Time Settings - Ajustes de hora - - - Time - Tiempo - - - Auto Sync - Autosincronizar - - - Reset - Reiniciar - - - Save - Guardar - - - Server - Servidor - - - Address - Dirección - - - Required - Requerido - - - Customize - Personalizar - - - Year - Año - - - Month - Mes - - - Day - Día - - - - TimeZoneChooser - - Cancel - Cancelar - - - Confirm - Confirmar - - - Add Timezone - Añadir zona horaria - - - Add - Añadir - - - Change Timezone - Cambiar la zona horaria - - - - TimeoutDialog - - Save the display settings? - ¿Guardar los ajustes de pantalla? - - - Settings will be reverted in %1s. - Los ajustes se revertirán en %1s. - - - Revert - Revertir - - - Save - Guardar - - - - TimezoneItem - - Tomorrow - Mañana - - - Yesterday - Ayer - - - Today - Hoy - - - %1 hours earlier than local - %1 horas antes que la local - - - %1 hours later than local - %1 hora más tarde que la local - - - - TimezoneModule - - Timezone List - Lista de zonas horarias - - - System Timezone - Zona horaria del sistema - - - Add Timezone - Añadir zona horaria - - - - TreeCombox - - Collaboration Settings - Configuración de colaboración - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - La cuenta de usuario no está vinculada al ID de la Unión - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Para restablecer las contraseñas, primero debe autenticar su Union ID. Haga clic en "Ir al enlace" para finalizar la configuración. - - - Cancel - Cancelar - - - Go to Link - Ir al enlace - - - - UnknownUpdateItem - - Release date: - Fecha de publicación: - - - - UpdateCtrlWidget - - Check Again - Buscar de nuevo - - - Update failed: insufficient disk space - La actualización falló: espacio de disco insuficiente - - - Dependency error, failed to detect the updates - Error de dependencias, no se encontraron actualizaciones. - - - Restart the computer to use the system and the applications properly - Reinicie el equipo para aplicar los cambios y poder usarlo con normalidad - - - Network disconnected, please retry after connected - Red desconectada, por favor vuelva a intentarlo después de conectarse - - - Your system is not authorized, please activate first - Su sistema no está autorizado, por favor, primero actívelo - - - This update may take a long time, please do not shut down or reboot during the process - Esta actualización puede tomar mucho tiempo, por favor no apague ni reinicie durante el proceso. - - - Updates Available - Actualizaciones disponibles - - - Current Edition - Edición actual - - - Updating... - Actualizando... - - - Update All - Actualizar todo - - - Last checking time: - Última comprobación: - - - Your system is up to date - Su sistema está actualizado - - - Check for Updates - Buscar actualizaciones - - - Checking for updates, please wait... - Comprobando actualizaciones, por favor espere… - - - The newest system installed, restart to take effect - Ha instalado la última versión, reinicie para aplicar los cambios - - - %1% downloaded (Click to pause) - %1% descargado (Clic para pausar) - - - %1% downloaded (Click to continue) - %1% descargado (Clic para continuar) - - - Your battery is lower than 50%, please plug in to continue - La batería tiene menos del 50% de carga, por favor, conéctela para continuar. - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Por favor asegúrese de tener suficiente energía para reiniciar, y no apague o desconecte su equipo - - - Size - Tamaño - - - - UpdateModule - - Updates - Actualizaciones - - - - UpdatePlugin - - Check for Updates - Buscar actualizaciones - - - - UpdateSettingItem - - Insufficient disk space - Espacio de disco insuficiente - - - Update failed: insufficient disk space - La actualización falló: espacio de disco insuficiente - - - Update failed - Actualización fallida - - - Network error - Error de red - - - Network error, please check and try again - Error de red, por favor, compruebe y vuelva a intentarlo - - - Packages error - Error de paquetes - - - Packages error, please try again - Error de paquetes, inténtalo de nuevo. - - - Dependency error - Error de dependencia - - - Unmet dependencies - Dependencias no satisfechas - - - The newest system installed, restart to take effect - Ha instalado la última versión, reinicie para aplicar los cambios - - - Waiting - Esperando - - - Backing up - Copia de seguridad - - - System backup failed - Copia de seguridad del sistema fallida - - - Release date: - Fecha de publicación: - - - Server - Servidor - - - Desktop - Escritorio - - - Version - Versión - - - - UpdateSettingsModule - - Update Settings - Ajustes de actualización - - - System - Sistema - - - Security Updates Only - Sólo actualizaciones de seguridad - - - Switch it on to only update security vulnerabilities and compatibility issues - Enciéndalo para actualizar únicamente las vulnerabilidades de seguridad y los problemas de compatibilidad - - - Third-party Repositories - Repositorios de terceros - - - linglong update - actualizar linglong - - - Linglong Package Update - Actualización de paquetes Linglong - - - If there is update for linglong package, system will update it for you - Si hay una actualización para paquetes Linglong, el sistema la actualizará por usted. - - - Other settings - Otros ajustes - - - Auto Check for Updates - Auto comprobación de actualizaciones - - - Auto Download Updates - Autodescargar actualizaciones - - - Switch it on to automatically download the updates in wireless or wired network - Actívelo para descargar automáticamente las actualizaciones - - - Auto Install Updates - Auto instalar actualizaciones - - - Updates Notification - Notificar actualizaciones - - - Clear Package Cache - Borrar caché de paquetes - - - Updates from Internal Testing Sources - Actualizaciones de fuentes internas de pruebas - - - internal update - actualización interna - - - Join the internal testing channel to get deepin latest updates - Únase al canal de pruebas interno para obtener más información sobre las últimas actualizaciones - - - System Updates - Actualizaciones del sistema - - - Security Updates - Actualizaciones de seguridad - - - Install updates automatically when the download is complete - Instalar actualizaciones automáticamente cuando se complete la descarga - - - Install "%1" automatically when the download is complete - Instalar "%1" automáticamente cuando se complete la descarga - - - - UpdateWidget - - Current Edition - Edición actual - - - - UpdateWorker - - System Updates - Actualizaciones del sistema - - - Fixed some known bugs and security vulnerabilities - Se corrigieron algunos errores conocidos y vulnerabilidades de seguridad. - - - Security Updates - Actualizaciones de seguridad - - - Third-party Repositories - Repositorios de terceros - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Tal vez no sea seguro que abandones el canal de pruebas interno ahora, ¿todavía quieres irte? - - - Your are safe to leave the internal testing channel - Está seguro de abandonar el canal de pruebas internas - - - Cannot find machineid - No se puede encontrar el ID de la máquina - - - Cannot Uninstall package - No se puede desinstalar el paquete - - - Error when exit testingChannel - Error al salir del canal de pruebas - - - try to manually uninstall package - intente desinstalar manualmente el paquete - - - Cannot install package - No se puede instalar el paquete - - - - UseBatteryModule - - On Battery - Con batería - - - Never - Nunca - - - Shut down - Apagar - - - Suspend - Suspender - - - Hibernate - Hibernar - - - Turn off the monitor - Apagar el monitor - - - Do nothing - No hacer nada - - - 1 Minute - 1 minuto - - - %1 Minutes - %1 minutos - - - 1 Hour - 1 hora - - - Screen and Suspend - Pantalla y Suspender - - - Turn off the monitor after - Apagar el monitor después - - - Lock screen after - Bloquear pantalla después de - - - Computer suspends after - Suspender la computadora después - - - Computer will suspend after - El ordenador se suspenderá después de - - - When the lid is closed - Cuando la tapa está cerrada - - - When the power button is pressed - Cuando se presiona el botón de encendido - - - Low Battery - Batería baja - - - Low battery notification - Notificación de batería baja - - - Low battery level - Nivel de batería bajo - - - Auto suspend battery level - Suspensión automática del nivel de la batería - - - Battery Management - Gestor de la Bateria - - - Display remaining using and charging time - Mostrar capacidad y tiempo de carga restante - - - Maximum capacity - Máxima capacidad - - - Show the shutdown Interface - Mostrar interfaz de apagado - - - - UseElectricModule - - Plugged In - Enchufado - - - 1 Minute - 1 minuto - - - %1 Minutes - %1 minutos - - - 1 Hour - 1 hora - - - Never - Nunca - - - Screen and Suspend - Pantalla y Suspender - - - Turn off the monitor after - Apagar el monitor después - - - Lock screen after - Bloquear pantalla después de - - - Computer suspends after - Suspender la computadora después - - - When the lid is closed - Cuando la tapa está cerrada - - - When the power button is pressed - Cuando se presiona el botón de encendido - - - Shut down - Apagar - - - Suspend - Suspender - - - Hibernate - Hibernar - - - Turn off the monitor - Apagar el monitor - - - Show the shutdown Interface - Mostrar interfaz de apagado - - - Do nothing - No hacer nada - - - - WacomModule - - Drawing Tablet - Tableta de dibujo - - - Mode - Modo - - - Pressure Sensitivity - Sensibilidad a la presión - - - Pen - Lápiz - - - Mouse - Ratón - - - Light - Clara - - - Heavy - Intensa - - - - main - - Control Center provides the options for system settings. - Centro de control de Deepin facilita la gestión de los ajustes del sistema. - - - - updateControlPanel - - Downloading - Descargando - - - Waiting - Esperando - - - Installing - Instalando - - - Backing up - Copia de seguridad - - - Download and install - Descargar e instalar - - - Learn more - Más información - - - diff --git a/dcc-old/translations/dde-control-center_et.ts b/dcc-old/translations/dde-control-center_et.ts deleted file mode 100644 index 24a7fe1713..0000000000 --- a/dcc-old/translations/dde-control-center_et.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Ühenda - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - Ingoreeri seda seaded - - - Connecting - Ühendamine - - - Disconnecting - - - - - AddButtonWidget - - Add Application - Lisa rakendus - - - Open Desktop file - Ava töölaua fail - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Loobu - - - Next - Järgmine - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Valmis - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Loobu - - - Next - Järgmine - - - Iris enrolled - - - - Done - Valmis - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Ühendatud - - - Not connected - Pole ühendatud - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - Liikus liiga kiiresti - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Loobu - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Loobu - - - Confirm - button - Kinnita - - - - dccV23::AccountSpinBox - - Always - Alati - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Kasutajanimi - - - Change Password - Muuda parooli - - - Delete User - - - - User Type - - - - Auto Login - Automaatne sisselogimine - - - Login Without Password - - - - Validity Days - - - - Group - Grupp - - - The full name is too long - - - - Standard User - Tavakasutaja - - - Administrator - Administraator - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Täispikk nimi - - - Go to Settings - Mine seadetesse - - - Cancel - Loobu - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Loobu - - - Save - Salvesta - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Pildid - - - - dccV23::BootWidget - - Updating... - Uuendamine... - - - Startup Delay - Käivitamise viivitus - - - Theme - Teema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Muuda parooli - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Nõutud - - - Cancel - button - Loobu - - - Confirm - button - Kinnita - - - Password cannot be empty - - - - Passwords do not match - Paroolid ei kattu - - - - dccV23::BrightnessWidget - - Brightness - Heledus - - - Color Temperature - - - - Auto Brightness - Automaatne heledus - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - Üldised seaded - - - Boot Menu - - - - Developer Mode - Arendajareziim - - - User Experience Program - Kasutajakogemuse programm - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - Võrguühendust pole - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Grupp - - - Cancel - Loobu - - - Create - Loo - - - New User - - - - User Type - - - - Username - Kasutajanimi - - - Full Name - Täispikk nimi - - - Password - Parool - - - Repeat Password - Korda parooli - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - Paroolid ei kattu - - - Standard User - Tavakasutaja - - - Administrator - Administraator - - - Customized - - - - Required - Nõutud - - - optional - valikuline - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Pildid - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Lisa kohandatud otsetee - - - Name - Nimi - - - Required - Nõutud - - - Command - Käsk - - - Cancel - Loobu - - - Add - Lisa - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Nõutud - - - Cancel - Loobu - - - Save - Salvesta - - - Shortcut - Otsetee - - - Name - Nimi - - - Command - Käsk - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - Otsetee - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Järgmine - - - Export PC Info - - - - Import Certificate - Impordi sertifikaat - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - Võrguühendust pole - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Loobu - - - Restart Now - Taaskäivita kohe - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - Lühike - - - Long - Pikk - - - Repeat Rate - - - - Slow - Aeglane - - - Fast - Kiire - - - Test here - Testi siin - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - Kerimise kiirus - - - Double-click Speed - Topelt kliki kiirus - - - Slow - Aeglane - - - Fast - Kiire - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Klaviatuuri paigutus - - - Edit - Muuda - - - Add Keyboard Layout - - - - Done - Valmis - - - - dccV23::KeyboardLayoutDialog - - Cancel - Loobu - - - Add - Lisa - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Klaviatuur ja keel - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Klaviatuuri paigutus - - - Language - - - - Shortcuts - Otseteed - - - - dccV23::MainWindow - - Help - Abiinfo - - - - dccV23::ModifyPasswdPage - - Change Password - Muuda parooli - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Praegune parool - - - Forgot password? - - - - New Password - Uus parool - - - Repeat Password - Korda parooli - - - Password Hint - - - - Cancel - Loobu - - - Save - Salvesta - - - Passwords do not match - Paroolid ei kattu - - - Required - Nõutud - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Vale parool - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Hiir - - - General - Üldine - - - Touchpad - Puuteplaat - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - Kursori kiirus - - - Mouse Acceleration - Hiire kiirendus - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - Aeglane - - - Fast - Kiire - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Režiim - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Tee koopia - - - Extend - Laienda - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Teavitused - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - Värskendussagedus - - - Hz - Hz - - - Recommended - Soovitatud - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Loobu - - - Delete - Kustuta - - - - dccV23::ResolutionWidget - - Resolution - Resolutsioon - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Vaikeväärtus - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Soovitatud - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Otsi - - - - dccV23::SecondaryScreenDialog - - Brightness - Heledus - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - Keskmine - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Loobu - - - Confirm - Kinnita - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Muuda - - - Done - Valmis - - - - dccV23::ShortCutSettingWidget - - System - Süsteem - - - Window - Aken - - - Workspace - - - - Assistive Tools - Abivahendid - - - Custom Shortcut - ohandatud otsetee - - - Restore Defaults - Taasta vaikeväärtused - - - Shortcut - Otsetee - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Loobu - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - Sinu arvuti info - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - Liik - - - Authorization - Autoriseerimine - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - %1-bitti - - - - dccV23::SystemInfoPlugin - - System Info - Süsteemi info - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Loobu - - - Add - Lisa - - - Add System Language - Lisa süsteemi keel - - - - dccV23::SystemLanguageWidget - - Edit - Muuda - - - Language List - Keelte nimekiri - - - Add Language - - - - Done - Valmis - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Kinnita - - - Cancel - Loobu - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Kursori kiirus - - - Slow - Aeglane - - - Fast - Kiire - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Liitu kasutajakogemuse programmiga - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Aasta - - - Month - Kuu - - - Day - Päev - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Vaikimisi rakendused - - - - DefAppPlugin - - Webpage - Veebisait - - - Mail - - - - Text - Tekst - - - Music - Muusikauusika - - - Video - Video - - - Picture - Pilt - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Loobu - - - Next - Järgmine - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Dokk - - - Multiple Displays - - - - Show Dock - - - - Mode - Režiim - - - Position - - - - Status - Staatus - - - Show recent apps in Dock - - - - Size - Suurus - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - Üleval - - - Bottom - All - - - Left - Vasakul - - - Right - Paremal - - - Location - Aukoht - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Muuda - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Valmis - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Lisa sõrmejälg - - - Cancel - Loobu - - - Next - Järgmine - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Muuda - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - Valmis - - - The name already exists - - - - Add Fingerprint - Lisa sõrmejälg - - - - GeneralModule - - General - Üldine - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Muuda - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Valmis - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Pole - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Sisendi helitugevus - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - Aken - - - Window Effect - Akna efekt - - - Window Minimize Effect - - - - Transparency - Läbipaistvus - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - Isikupärastamine - - - - PersonalizationThemeList - - Cancel - Loobu - - - Save - Salvesta - - - Light - Hele - - - Dark - Tume - - - Auto - Automaatne - - - Default - Vaikeväärtus - - - - PersonalizationThemeModule - - Theme - Teema - - - Appearance - - - - Accent Color - Aksendi värv - - - Icon Settings - - - - Icon Theme - Ikooniteema - - - Cursor Theme - Kursori teema - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - Hele - - - Auto - Automaatne - - - Dark - Tume - - - - PersonalizationThemeWidget - - Light - Hele - General - /personalization/General - - - Dark - Tume - General - /personalization/General - - - Auto - Automaatne - General - /personalization/General - - - Default - Vaikeväärtus - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Loobu - - - Confirm - Kinnita - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Kalender - - - Screen Capture - - - - - QObject - - Control Center - Juhtpaneel - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Aktiveeritud - - - View - Vaade - - - To be activated - - - - Activate - ktiveeri - - - Expired - Aegunud - - - In trial period - Prooviperioodil - - - Trial expired - Prooviperiood on aegunud - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Loobu - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Otsi - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Heliefektid - - - - SoundModel - - Boot up - - - - Shut down - Sule arvuti - - - Log out - Logi välja - - - Wake up - - - - Volume +/- - - - - Notification - Teavitused - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - Tühjenda prügikast - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Heli - - - - SoundPlugin - - Output - und - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Sisend - - - Sound Effects - Heliefektid - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Režiim - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - Vasakul - - - Right - Paremal - - - - TimeSettingModule - - Time Settings - Kellaaja seaded - - - Time - - - - Auto Sync - Automaatne sünkroonimine - - - Reset - - - - Save - Salvesta - - - Server - Server - - - Address - Aadress - - - Required - Nõutud - - - Customize - Kohanda - - - Year - Aasta - - - Month - Kuu - - - Day - Päev - - - - TimeZoneChooser - - Cancel - Loobu - - - Confirm - Kinnita - - - Add Timezone - Lisa ajavöönd - - - Add - Lisa - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Salvesta - - - - TimezoneItem - - Tomorrow - - - - Yesterday - Eile - - - Today - Täna - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Ajavööndite nimekiri - - - System Timezone - Süsteemi ajavöönd - - - Add Timezone - Lisa ajavöönd - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Loobu - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - Uuendamine... - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Suurus - - - - UpdateModule - - Updates - Uuendused - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Server - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - Uuendamise seaded - - - System - Süsteem - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - Uuenduste teavitused - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Akutoitel - - - Never - Mitte kunagi - - - Shut down - Sule arvuti - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 minut - - - %1 Minutes - - - - 1 Hour - 1 tund - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Võrgutoitel - - - 1 Minute - 1 minut - - - %1 Minutes - - - - 1 Hour - 1 tund - - - Never - Mitte kunagi - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Sule arvuti - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - Joonistustahvel - - - Mode - Režiim - - - Pressure Sensitivity - - - - Pen - Pliiats - - - Mouse - Hiir - - - Light - Hele - - - Heavy - Raske - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_eu.ts b/dcc-old/translations/dde-control-center_eu.ts deleted file mode 100644 index 5b40949a1d..0000000000 --- a/dcc-old/translations/dde-control-center_eu.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_fa.ts b/dcc-old/translations/dde-control-center_fa.ts deleted file mode 100644 index b409a328c4..0000000000 --- a/dcc-old/translations/dde-control-center_fa.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - به کار انداختن بلوتوث برای پیدا کردن وسایل مجاور ( بلندگو ، صفحه‌کلید ، موش واره ) - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - اتصال - - - Disconnect - قطع اتصال - - - Rename - تغییر نام - - - Send Files - - - - Ignore this device - نادیده گرفتن این دستگاه - - - Connecting - در حال اتصال - - - Disconnecting - - - - - AddButtonWidget - - Add Application - افزودن برنامه - - - Open Desktop file - باز کردن فایل دسکتاپ - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - انصراف - - - Next - بعدی - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - انجام شد - - - Failed to enroll your face - - - - Try Again - - - - Close - بستن - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - انصراف - - - Next - بعدی - - - Iris enrolled - - - - Done - انجام شد - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - اثرانگشت - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - متصل شده - - - Not connected - متصل نیست - - - - BluetoothModule - - Bluetooth - بلوتوث - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - انصراف - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - انصراف - - - Confirm - button - تایید - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - نام کاربری - - - Change Password - تغییر رمز عبور - - - Delete User - - - - User Type - - - - Auto Login - ورود خودکار - - - Login Without Password - ورود بدون رمز - - - Validity Days - - - - Group - گروه - - - The full name is too long - - - - Standard User - - - - Administrator - مدیر - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - نام کامل - - - Go to Settings - - - - Cancel - انصراف - - - OK - تایید - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - میزبان شما با موفقیت از سرور دامنه حذف شد - - - Your host joins the domain server successfully - میزبان با موفقیت به سرور دامنه پیوست - - - Your host failed to leave the domain server - میزبان شما نتوانست سرور دامنه را ترک کند - - - Your host failed to join the domain server - میزبان شما نتوانست به سرور دامنه بپیوندد - - - AD domain settings - تنظیمات دامنه AD - - - Password not match - رمز عبور مطابقت ندارد - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - انصراف - - - Save - ذخیره - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - تصاویر - - - - dccV23::BootWidget - - Updating... - به‌روزرسانی... - - - Startup Delay - تأخیر راه اندازی - - - Theme - تم - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - روی گزینه در منوی بوت کلیک کنید تا آن را به عنوان اولین بوت تنظیم کنید و برای تغییر پس زمینه ، تصویری را بکشید و رها کنید - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - تعویض تم برای نمایش آن در منوی راه‌اندازی - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - تغییر رمز عبور - - - Boot Menu - فهرست بوت - - - Change GRUB password - - - - Username: - نام کاربری: - - - root - - - - New password: - - - - Repeat password: - - - - Required - مورد نیاز - - - Cancel - button - انصراف - - - Confirm - button - تایید - - - Password cannot be empty - جایگاه رمزعبور نمی تواند خالی باشد. - - - Passwords do not match - گذرواژه ها یکسان نیستند. - - - - dccV23::BrightnessWidget - - Brightness - روشنایی - - - Color Temperature - - - - Auto Brightness - روشنایی خودکار - - - Night Shift - شیفت شب - - - The screen hue will be auto adjusted according to your location - رنگ صفحه با توجه به موقعیت مکانی شما تنظیم می شود - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - تنظیمات عمومی - - - Boot Menu - فهرست بوت - - - Developer Mode - حالت توسعه دهنده - - - User Experience Program - برنامه تجربه کاربر - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - موافقت و پیوستن به برنامه تجربه کاربر - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - گروه - - - Cancel - انصراف - - - Create - ایجاد - - - New User - - - - User Type - - - - Username - نام کاربری - - - Full Name - نام کامل - - - Password - رمزعبور - - - Repeat Password - تکرار رمز - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - گذرواژه ها یکسان نیستند. - - - Standard User - - - - Administrator - مدیر - - - Customized - - - - Required - مورد نیاز - - - optional - اختیاری - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - نام کاربری باید بین 3 تا 32 نویسه باشد - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - تصاویر - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - اضافه کردن میانبر سفارشی - - - Name - نام - - - Required - مورد نیاز - - - Command - دستور - - - Cancel - انصراف - - - Add - اضافه کردن - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - این میان‌بر با %1 تداخل دارد روی اضافه کلیک کنید تا این میان‌بر را فورا ً موثر کنید . - - - - dccV23::CustomEdit - - Required - مورد نیاز - - - Cancel - انصراف - - - Save - ذخیره - - - Shortcut - میانبر - - - Name - نام - - - Command - دستور - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - این میان‌بر با %1 تداخل دارد روی اضافه کلیک کنید تا این میان‌بر را فورا ً موثر کنید . - - - - dccV23::CustomItem - - Shortcut - میانبر - - - Please enter a shortcut - لطفا میانبری جدید وارد کنید - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - بعدی - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - انصراف - - - Restart Now - راه اندازی مجدد هم اکنون - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - نمایش - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - تست دوبار-کلیک - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - تاخیر تکرار - - - Short - کوتاه - - - Long - بلند - - - Repeat Rate - نرخ تکرار - - - Slow - آهسته - - - Fast - سریع - - - Test here - اینجا تست کنید - - - Numeric Keypad - صفحه کلید عددی - - - Caps Lock Prompt - وضعیت کلید Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - چپ دست - - - Disable touchpad while typing - صفحه لمسی را هنگام تایپ غیرفعال کن - - - Scrolling Speed - سرعت پیمایش - - - Double-click Speed - سرعت دوبار-کلیلک - - - Slow - آهسته - - - Fast - سریع - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - طرح بندی صفحه کلید - - - Edit - ویرایش - - - Add Keyboard Layout - اضافه کردن طرح بندی صفحه کلید - - - Done - انجام شد - - - - dccV23::KeyboardLayoutDialog - - Cancel - انصراف - - - Add - اضافه کردن - - - Add Keyboard Layout - اضافه کردن طرح بندی صفحه کلید - - - - dccV23::KeyboardPlugin - - Keyboard and Language - صفحه کلید و زبان - - - Keyboard - صفحه کلید - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - طرح بندی صفحه کلید - - - Language - زبان - - - Shortcuts - میانبر - - - - dccV23::MainWindow - - Help - راهنما - - - - dccV23::ModifyPasswdPage - - Change Password - تغییر رمز عبور - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - رمزعبور فعلی - - - Forgot password? - - - - New Password - رمزعبور جدید - - - Repeat Password - تکرار رمز - - - Password Hint - - - - Cancel - انصراف - - - Save - ذخیره - - - Passwords do not match - گذرواژه ها یکسان نیستند. - - - Required - مورد نیاز - - - Optional - اختیاری - - - Password cannot be empty - جایگاه رمزعبور نمی تواند خالی باشد. - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - رمزعبور اشتباه - - - New password should differ from the current one - رمزعبور جدید باید با رمز فعلی متفاوت باشد - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - ماوس - - - General - کلی - - - Touchpad - صفحه لمسی - - - TrackPoint - اهرم اشاره ای - - - - dccV23::MouseSettingWidget - - Pointer Speed - سرعت اشاره گر - - - Mouse Acceleration - شتاب ماوس - - - Disable touchpad when a mouse is connected - صفحه لمسی را هنگام اتصال ماوس غیر فعال کن - - - Natural Scrolling - پیمایش طبیعی - - - Slow - آهسته - - - Fast - سریع - - - - dccV23::MultiScreenWidget - - Multiple Displays - نمایشگرهای چندگانه - /display/Multiple Displays - - - Mode - حالت - /display/Mode - - - Main Screen - صفحه اصلی - /display/Main Scree - - - Duplicate - تکراری - - - Extend - گسترش - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - اعلان - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - تشخیص پالم - - - Minimum Contact Surface - حداقل سطح تماس - - - Minimum Pressure Value - حداقل مقدار فشار - - - Disable the option if touchpad doesn't work after enabled - اگر پد لمسی پس از فعال شدن کار نکند گزینه را غیرفعال کنید - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - جایگاه رمزعبور نمی تواند خالی باشد. - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - رمز عبور که کمتر از %1 نویسه نباید باشد - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - نرخ نوسازی - - - Hz - هرتز - - - Recommended - توصیه‌شده - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - آیا مطمئن هستید که می خواهید این حساب را حذف کنید؟ - - - Delete account directory - حذف دایرکتوری حساب - - - Cancel - انصراف - - - Delete - حذف - - - - dccV23::ResolutionWidget - - Resolution - وضوح تصویر - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - پیش فرض - - - Fit - - - - Stretch - - - - Center - - - - Recommended - توصیه‌شده - - - - dccV23::RotateWidget - - Rotation - چرخش - /display/Rotation - - - Standard - استاندارد - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - مانیتور فقط از 100% مقیاس گذاری صفحه نمایش پشتیبانی می کند - - - Display Scaling - نمایش مقیاس - - - - dccV23::SearchInput - - Search - جستجو - - - - dccV23::SecondaryScreenDialog - - Brightness - روشنایی - - - - dccV23::SecurityLevelItem - - Weak - ضعیف - - - Medium - متوسط - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - انصراف - - - Confirm - تایید - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - ویرایش - - - Done - انجام شد - - - - dccV23::ShortCutSettingWidget - - System - سیستم - - - Window - پنجره - - - Workspace - فضای کار - - - Assistive Tools - - - - Custom Shortcut - میانبر سفارشی - - - Restore Defaults - بازگرداندن پیش فرض ها - - - Shortcut - میانبر - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - لطفا میانبر را بازنشانی کنید - - - Cancel - انصراف - - - Replace - جایگزین - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - این میان‌بر با %1 تداخل دارد روی جایگزین کلیک کنید تا این میان‌بر را فورا ً موثر کنید . - - - - dccV23::ShortcutItem - - Enter a new shortcut - میانبری جدید وارد کنید - - - - dccV23::SystemInfoModel - - available - در دسترس - - - - dccV23::SystemInfoModule - - About This PC - درباره این رایانه - - - Computer Name - نام کامپیوتر - - - systemInfo - - - - OS Name - - - - Version - نسخه - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - مجوز نسخه - - - End User License Agreement - توافقنامه مجوز کاربر نهایی - - - Privacy Policy - - - - %1-bit - %1-بیت - - - - dccV23::SystemInfoPlugin - - System Info - اطلاعات سیستم - - - - dccV23::SystemLanguageSettingDialog - - Cancel - انصراف - - - Add - اضافه کردن - - - Add System Language - اضافه کردن زبان سیستم - - - - dccV23::SystemLanguageWidget - - Edit - ویرایش - - - Language List - فهرست زبان‌ها - - - Add Language - - - - Done - انجام شد - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - تایید - - - Cancel - انصراف - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - سرعت اشاره گر - - - Slow - آهسته - - - Fast - سریع - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - پیوستن به برنامه تجربه کاربر - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - سال - - - Month - ماه - - - Day - روز - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - برای تغییر سرور NTP احراز هویت لازم است - - - - DefAppModule - - Default Applications - برنامه های پیش فرض - - - - DefAppPlugin - - Webpage - صفحه وب - - - Mail - ایمیل - - - Text - متن - - - Music - موسیقی - - - Video - ویدیو - - - Picture - تصویر - - - Terminal - ترمینال - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - انصراف - - - Next - بعدی - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - داک - - - Multiple Displays - نمایشگرهای چندگانه - - - Show Dock - - - - Mode - حالت - - - Position - - - - Status - وضعیت - - - Show recent apps in Dock - - - - Size - حجم - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - حالت فشن - - - Efficient mode - حالت کارآمد - - - Top - بالا - - - Bottom - پایین - - - Left - چپ - - - Right - راست - - - Location - مکان - - - Keep shown - - - - Keep hidden - مخفی ماندن - - - Smart hide - مخفی سازی هوشمند - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - ویرایش - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - انجام شد - - - Add Face - - - - The name already exists - این نام از قبل وجود دارد - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - اضافه کردن اثرانگشت - - - Cancel - انصراف - - - Next - بعدی - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - اثر انگشت اضافه شد - - - - FingerWidget - - Edit - ویرایش - - - Fingerprint Password - رمزعبور اثرانگشت - - - You can add up to 10 fingerprints - - - - Done - انجام شد - - - The name already exists - این نام از قبل وجود دارد - - - Add Fingerprint - اضافه کردن اثرانگشت - - - - GeneralModule - - General - کلی - - - Balanced - متعادل - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - ویرایش - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - انجام شد - - - Add Iris - - - - The name already exists - این نام از قبل وجود دارد - - - Iris - - - - - KeyLabel - - None - هیچ - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - صدای ورودی - - - Input Level - سطح ورودی - - - - PersonalizationDesktopModule - - Desktop - دسکتاپ - - - Window - پنجره - - - Window Effect - جلوه های پنجره - - - Window Minimize Effect - - - - Transparency - شفافیت - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - شخصی سازی - - - - PersonalizationThemeList - - Cancel - انصراف - - - Save - ذخیره - - - Light - روشن - - - Dark - تیره - - - Auto - خودکار - - - Default - پیش فرض - - - - PersonalizationThemeModule - - Theme - تم - - - Appearance - - - - Accent Color - لهجه رنگ - - - Icon Settings - - - - Icon Theme - تم آیکون - - - Cursor Theme - تم اشاره گر - - - Text Settings - - - - Font Size - سایز فونت - - - Standard Font - قلم استاندارد - - - Monospaced Font - قلم Monospaced - - - Light - روشن - - - Auto - خودکار - - - Dark - تیره - - - - PersonalizationThemeWidget - - Light - روشن - General - /personalization/General - - - Dark - تیره - General - /personalization/General - - - Auto - خودکار - General - /personalization/General - - - Default - پیش فرض - - - - PersonalizationWorker - - Custom - شخصی - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN اتصال به دستگاه بلوتوث این است : - - - Cancel - انصراف - - - Confirm - تایید - - - - PowerModule - - Power - منبع قدرت - - - Battery low, please plug in - باتری شما کم است ، لطفاً دستگاه را برق وصل کنید - - - Battery critically low - باتری بسیار کم است - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - دوربین - - - Microphone - میکروفون - - - User Folders - - - - Calendar - تقویم - - - Screen Capture - - - - - QObject - - Control Center - مرکز کنترل - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - نما - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - انصراف - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - بروزرسانی موفق - - - Failed to update - بروزرسانی ناموفق - - - - SearchInput - - Search - جستجو - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - جلوه های صدا - - - - SoundModel - - Boot up - راه اندازی - - - Shut down - خاموش شدن - - - Log out - خارج شدن از حساب کاربری - - - Wake up - بیدار شدن - - - Volume +/- - صدا +/- - - - Notification - اعلان - - - Low battery - باتری کم - - - Send icon in Launcher to Desktop - آیکون برنامه را از لانچر به دسکتاپ بفرست - - - Empty Trash - خالی کردن زباله دان - - - Plug in - متصل شده به برق - - - Plug out - از برق کشیده شد - - - Removable device connected - دستگاه قابل جابجایی وصل شد - - - Removable device removed - دستگاه قابل جابجایی جدا شد - - - Error - خطا - - - - SoundModule - - Sound - صدا - - - - SoundPlugin - - Output - خروجی - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - ورودی - - - Sound Effects - جلوه های صدا - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - حالت - - - Output Volume - صدای خروجی - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - تعادل چپ/راست - - - Left - چپ - - - Right - راست - - - - TimeSettingModule - - Time Settings - تنظیمات زمان - - - Time - - - - Auto Sync - همگام سازی خودکار - - - Reset - تنظیم مجدد - - - Save - ذخیره - - - Server - سرور - - - Address - آدرس - - - Required - مورد نیاز - - - Customize - شخصی سازی - - - Year - سال - - - Month - ماه - - - Day - روز - - - - TimeZoneChooser - - Cancel - انصراف - - - Confirm - تایید - - - Add Timezone - اضافه کردن منطقه زمانی - - - Add - اضافه کردن - - - Change Timezone - تغییر منطقه زمانی - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - بازگشت - - - Save - ذخیره - - - - TimezoneItem - - Tomorrow - فردا - - - Yesterday - دیروز - - - Today - امروز - - - %1 hours earlier than local - %1 ساعت زودتر از محلی - - - %1 hours later than local - %1 ساعت دیرتر از محلی - - - - TimezoneModule - - Timezone List - فهرست منطقه زمانی - - - System Timezone - منطقه زمانی سیستم - - - Add Timezone - اضافه کردن منطقه زمانی - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - انصراف - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - بروزرسانی انجام نشد: فضای کافی در دیسک نیست - - - Dependency error, failed to detect the updates - خطای وابستگی ، شناسایی بروزرسانی ها شکست خورد . - - - Restart the computer to use the system and the applications properly - لطفاً برای استفاده صحیح از سیستم و برنامه های کاربردی پس از به روزرسانی مجدداً راه اندازی کنید - - - Network disconnected, please retry after connected - شبکه قطع شد ، لطفاً پس از اتصال دوباره امتحان کنید - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - این به‌هنگام‌سازی ممکن است زمان زیادی طول بکشد ، لطفا ً در طول فرآیند دستگاه خاموش و یا راه اندازی مجدد نشود - - - Updates Available - - - - Current Edition - نسخه جاری - - - Updating... - به‌روزرسانی... - - - Update All - - - - Last checking time: - - - - Your system is up to date - سیستم شما بروز است - - - Check for Updates - - - - Checking for updates, please wait... - در حال بررسی بروز رسانی ها لطفا صبر کنید - - - The newest system installed, restart to take effect - جدیدترین سیستم نصب شده ، راه اندازی مجدد کنید تا تغییرات اعمال شوند - - - %1% downloaded (Click to pause) - بارگیری %1% (برای مکث کلیک کنید) - - - %1% downloaded (Click to continue) - بارگیری %1% (برای ادامه کلیک کنید) - - - Your battery is lower than 50%, please plug in to continue - باتری شما کمتر از 50٪ است ، لطفاً برای ادامه دستگاه را برق وصل کنید - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - لطفاً از قدرت کافی برای راه اندازی مجدد اطمینان حاصل کنید ، و دستگاه خود را خاموش و یا از برق جدا نکنید - - - Size - حجم - - - - UpdateModule - - Updates - بروزرسانی ها - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - بروزرسانی انجام نشد: فضای کافی در دیسک نیست - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - جدیدترین سیستم نصب شده ، راه اندازی مجدد کنید تا تغییرات اعمال شوند - - - Waiting - - - - Backing up - - - - System backup failed - پشتیبان سیستم شکست خورد - - - Release date: - - - - Server - سرور - - - Desktop - دسکتاپ - - - Version - نسخه - - - - UpdateSettingsModule - - Update Settings - به روز رسانی تنظیمات - - - System - سیستم - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - دانلود خودکار بروزرسانی ها - - - Switch it on to automatically download the updates in wireless or wired network - این را روشن کنید تا به طور خودکار بروزرسانی ها در شبکه بی سیم یا سیمی بارگیری شود - - - Auto Install Updates - - - - Updates Notification - به روزرسانی هشدار - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - نسخه جاری - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - در باتری - - - Never - هرگز - - - Shut down - خاموش شدن - - - Suspend - معلق کردن - - - Hibernate - هایبرنت - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 دقیقه - - - %1 Minutes - %1 دقیقه - - - 1 Hour - ۱ ساعت - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - قفل صفحه بعد از - - - Computer suspends after - - - - Computer will suspend after - معلق شدن رایانه بعد از - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - متصل شده به برق - - - 1 Minute - 1 دقیقه - - - %1 Minutes - %1 دقیقه - - - 1 Hour - ۱ ساعت - - - Never - هرگز - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - قفل صفحه بعد از - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - خاموش شدن - - - Suspend - معلق کردن - - - Hibernate - هایبرنت - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - لوح ترسیم - - - Mode - حالت - - - Pressure Sensitivity - حساسیت به فشار - - - Pen - قلم - - - Mouse - ماوس - - - Light - روشن - - - Heavy - سنگین - - - - main - - Control Center provides the options for system settings. - مرکز کنترل گزینه هایی را برای تنظیمات سیستم ارائه می دهد. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_fi.ts b/dcc-old/translations/dde-control-center_fi.ts deleted file mode 100644 index 2905359ded..0000000000 --- a/dcc-old/translations/dde-control-center_fi.ts +++ /dev/null @@ -1,3983 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Salli Bluetooth-laitteiden löytää tämä laite - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Avaa Bluetooth etsiäksesi lähellä olevia laitteita (kaiutin, näppäimistö, hiiri) - - - My Devices - Omat laitteet - - - Other Devices - Muut laitteet - - - Show Bluetooth devices without names - Näytä Bluetooth-laitteet ilman nimiä - - - Connect - Yhdistä - - - Disconnect - Katkaise - - - Rename - Nimeä uudelleen - - - Send Files - Lähetä tiedostot - - - Ignore this device - Ohita tämä laite - - - Connecting - Yhdistää - - - Disconnecting - Katkaistaan yhteys - - - - AddButtonWidget - - Add Application - Lisää sovellus - - - Open Desktop file - Avaa työpöydän tiedosto - - - Apps (*.desktop) - Sovellukset (*.desktop) - - - All files (*) - Kaikki tiedostot (*) - - - - AddFaceInfoDialog - - Enroll Face - Kasvojen tunnistus - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Varmista, että esineet eivät peitä kasvojasi ja kokonaan selvästi näkyvissä. Valoa kasvoillesi tulee olla riittävästi. - - - Cancel - Peruuta - - - Next - Seuraava - - - Face enrolled - Kasvot tunnistettu - - - Use your face to unlock the device and make settings later - Käytä kasvoja lukituksen avaamiseen ja tee asetukset myöhemmin - - - Done - Valmis - - - Failed to enroll your face - Kasvojen tunnistus epäonnistui - - - Try Again - Yritä uudelleen - - - Close - Sulje - - - - AddFingerDialog - - Cancel - Peruuta - - - Done - Valmis - - - Scan Again - Skannaa uudelleen - - - Scan Suspended - Skannaus keskeytetty - - - - AddIrisInfoDialog - - Enroll Iris - Iiriksen tunnistus - - - Cancel - Peruuta - - - Next - Seuraava - - - Iris enrolled - Iiris tunnistettu - - - Done - Valmis - - - Failed to enroll your iris - Iiriksen tunnistus epäonnistui - - - Try Again - Yritä uudelleen - - - - AuthenticationInfoItem - - No more than 15 characters - Enintään 15 merkkiä - - - Use letters, numbers and underscores only, and no more than 15 characters - Käytä vain kirjaimia, numeroita ja alaviivoja, enintään 15 merkkiä - - - Use letters, numbers and underscores only - Käytä vain kirjaimia, numeroita ja alaviivoja - - - - AuthenticationModule - - Biometric Authentication - Biometrinen todennus - - - - AuthenticationPlugin - - Fingerprint - Sormenjälki - - - Face - Kasvot - - - Iris - Iiris - - - - BluetoothDeviceModel - - Connected - Yhdistetty - - - Not connected - Ei yhteyttä - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Bluetooth laitehallinta - - - - CharaMangerModel - - Fingerprint1 - Sormenjälki1 - - - Fingerprint2 - Sormenjälki2 - - - Fingerprint3 - Sormenjälki3 - - - Fingerprint4 - Sormenjälki4 - - - Fingerprint5 - Sormenjälki5 - - - Fingerprint6 - Sormenjälki6 - - - Fingerprint7 - Sormenjälki7 - - - Fingerprint8 - Sormenjälki8 - - - Fingerprint9 - Sormenjälki9 - - - Fingerprint10 - Sormenjälki10 - - - Scan failed - Skannaus epäonnistui - - - The fingerprint already exists - Sormenjälki on jo olemassa - - - Please scan other fingers - Tarkista muut sormet - - - Unknown error - Tuntematon virhe - - - Scan suspended - Skannaus keskeytetty - - - Cannot recognize - ei voi tunnistaa - - - Moved too fast - Pyyhkäisit liian nopeasti - - - Finger moved too fast, please do not lift until prompted - Olet liian nopea, älä nosta sormea ennen kuin pyydetään - - - Unclear fingerprint - Epäselvä sormenjälki - - - Clean your finger or adjust the finger position, and try again - Puhdista sormesi tai säädä sormen asentoa ja yritä uudelleen - - - Already scanned - Jo skannattu - - - Adjust the finger position to scan your fingerprint fully - Säädä sormen asentoa, jotta sormenjälkesi voidaan skannata - - - Finger moved too fast. Please do not lift until prompted - Sormi liikkui liian nopeasti. Älä nosta, ennen kuin pyydetään - - - Lift your finger and place it on the sensor again - Nosta sormesi ja aseta se lukijaan uudelleen - - - Position your face inside the frame - Aseta kasvosi kehyksen sisään - - - Face enrolled - Kasvot tunnistettu - - - Position a human face please - Aseta ihmisen kasvot - - - Keep away from the camera - Pysy kauempana kamerasta - - - Get closer to the camera - Siirry lähemmäs kameraa - - - Do not position multiple faces inside the frame - Ei useita kasvoja kehyksen sisään - - - Make sure the camera lens is clean - Varmista, että kameran linssi on puhdas - - - Do not enroll in dark, bright or backlit environments - Älä tunnistaudu pimeässä, liian kirkkaassa tai takavalaistussa ympäristössä - - - Keep your face uncovered - Pidä kasvosi paljaana - - - Scan timed out - Skannaus aikakatkaistiin - - - Device crashed, please scan again! - Laite kaatui, skannaa uudelleen! - - - Cancel - Peruuta - - - - CooperationSettingsDialog - - Collaboration Settings - Vuorovaikutuksen asetukset - - - Share mouse and keyboard - Jaa hiiri ja näppäimistö - - - Share your mouse and keyboard across devices - Jaa hiiri ja näppäimistö eri laitteiden välillä - - - Share clipboard - Jaa leikepöytä - - - Storage path for shared files - Jaettujen tiedostojen tallennuspolku - - - Share the copied content across devices - Jaa kopioitu sisältö laitteiden välillä - - - Cancel - button - Peruuta - - - Confirm - button - Vahvista - - - - dccV23::AccountSpinBox - - Always - Aina - - - - dccV23::AccountsModule - - Users - Käyttäjät - - - User management - Käyttäjien hallinta - - - Create User - Luo käyttäjä - - - Username - Käyttäjänimi - - - Change Password - Vaihda salasana - - - Delete User - Poista käyttäjä - - - User Type - Käyttäjän tyyppi - - - Auto Login - Automaattinen kirjautuminen - - - Login Without Password - Kirjaudu ilman salasanaa - - - Validity Days - Voimassaolo - - - Group - Ryhmä - - - The full name is too long - Nimi on liian pitkä - - - Standard User - Tavallinen käyttäjä - - - Administrator - Järjestelmänvalvoja - - - Reset Password - Nollaa salasana - - - The full name has been used by other user accounts - Koko nimeä on käytetty muilla käyttäjätileillä - - - Full Name - Koko nimi - - - Go to Settings - Mene asetuksiin - - - Cancel - Peruuta - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - "Automaattinen kirjautuminen" voidaan ottaa käyttöön vain yhdelle tilille, poista se ensin tililtä "%1". - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Laitteesi poistettiin toimialueen palvelimelta onnistuneesti - - - Your host joins the domain server successfully - Laitteesi liittyi toimialueen palvelimeen onnistuneesti - - - Your host failed to leave the domain server - Laitteesi poistuminen toimialueen palvelimelta epäonnistui - - - Your host failed to join the domain server - Laitteesi liittyminen toimialueen palvelimeen epäonnistui - - - AD domain settings - Toimialueen asetukset - - - Password not match - Salasana ei täsmää - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Näytä kohteesta %1 ilmoitukset työpöydällä ja ilmoitusalueella. - - - Play a sound - Toista ääni - - - Show messages on lockscreen - Näytä viestit lukitusnäytössä - - - Show in notification center - Näytä ilmoitusalueella - - - Show message preview - Näytä viestin esikatselu - - - - dccV23::AvatarListDialog - - Person - Henkilö - - - Animal - Eläin - - - Illustration - Kuvitus - - - Expression - Ilmaisu - - - Custom Picture - Kuva - - - Cancel - Peruuta - - - Save - Tallenna - - - - dccV23::AvatarListFrame - - Dimensional Style - Ulottuvuus - - - Flat Style - Tasainen - - - - dccV23::AvatarListView - - Images - Kuvat - - - - dccV23::BootWidget - - Updating... - Päivitetään... - - - Startup Delay - Käynnistysviive - - - Theme - Teema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Valitse käynnistysvalikon vaihtoehto, jonka haluat asettaa ensimmäiseksi käynnistykseksi. Vedä ja pudota kuva taustan muuttamiseksi. - - - Click the option in boot menu to set it as the first boot - Valitse käynnistysvalikon vaihtoehto, jonka haluat asettaa ensimmäiseksi - - - Switch theme on to view it in boot menu - Vaihda teema käynnistysvalikoon - - - GRUB Authentication - GRUB todennus - - - GRUB password is required to edit its configuration - Vaaditaan GRUB-salasana määrityksien muokkaamiseen - - - Change Password - Vaihda salasana - - - Boot Menu - Käynnistys valikko - - - Change GRUB password - Vaihda GRUB-salasana - - - Username: - Käyttäjänimi: - - - root - root - - - New password: - Uusi salasana: - - - Repeat password: - Salasana uudelleen: - - - Required - Vaadittu - - - Cancel - button - Peruuta - - - Confirm - button - Vahvista - - - Password cannot be empty - Salasana ei voi olla tyhjä - - - Passwords do not match - Salasanat eivät täsmää - - - - dccV23::BrightnessWidget - - Brightness - Kirkkaus - - - Color Temperature - Värilämpötila - - - Auto Brightness - Automaattinen kirkkaus - - - Night Shift - Yövalo - - - The screen hue will be auto adjusted according to your location - Näytön sävy säädetään automaattisesti sijaintisi mukaan - - - Change Color Temperature - Muuta värilämpötilaa - - - Cool - Kylmä - - - Warm - Lämmin - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Usean näytön vuorovaikutus - - - PC Collaboration - PC vuorovaikutus - - - Connect to - Muodosta yhteys - - - Select a device for collaboration - Valitse laite vuorovaikutusta varten - - - Device Orientation - Laitteen asento - - - On the top - Päällä - - - On the right - Oikealla - - - On the bottom - Alla - - - On the left - Vasemmalla - - - My Devices - Omat laitteet - - - Other Devices - Muut laitteet - - - - dccV23::CommonInfoPlugin - - General Settings - Yleiset asetukset - - - Boot Menu - Käynnistys valikko - - - Developer Mode - Kehittäjätila - - - User Experience Program - Käyttökokemusohjelma - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Hyväksy ja liity käyttökokemus ohjelmaan - - - The Disclaimer of Developer Mode - Kehittäjätilan vastuuvapauslauseke - - - Agree and Request Root Access - Hyväksy ja pyydä pääkäyttäjän oikeuksia - - - Failed to get root access - Pääkäyttäjän käyttöoikeuden hakeminen epäonnistui - - - Please sign in to your Union ID first - Kirjaudu ensin Union ID tunnukseesi - - - Cannot read your PC information - Tietokoneesi tietoja ei voi lukea - - - No network connection - Ei verkkoyhteyttä - - - Certificate loading failed, unable to get root access - Varmenteen lataaminen epäonnistui, pääkäyttäjän oikeuksia ei saada - - - Signature verification failed, unable to get root access - Varmenteen varmennus epäonnistui, pääkäyttäjän käyttöoikeutta ei voitu saada - - - - dccV23::CreateAccountPage - - Group - Ryhmä - - - Cancel - Peruuta - - - Create - Luo - - - New User - Uusi käyttäjä - - - User Type - Käyttäjän tyyppi - - - Username - Käyttäjänimi - - - Full Name - Koko nimi - - - Password - Salasana - - - Repeat Password - Toista salasana - - - Password Hint - Salasanan vihje - - - The full name is too long - Nimi on liian pitkä - - - Passwords do not match - Salasanat eivät täsmää - - - Standard User - Tavallinen käyttäjä - - - Administrator - Järjestelmänvalvoja - - - Customized - Muokattu - - - Required - Vaadittu - - - optional - valinnainen - - - The hint is visible to all users. Do not include the password here. - Vihje näkyy kaikille käyttäjille. Älä lisää salasanaa tähän. - - - Policykit authentication failed - Policykit todennus epäonnistui - - - Username must be between 3 and 32 characters - Käyttäjätunnuksen on oltava 3-32 merkin pituinen - - - The first character must be a letter or number - Ensimmäisen merkin on oltava kirjain tai numero - - - Your username should not only have numbers - Käyttäjänimessä ei pitäisi olla vain numeroita - - - The username has been used by other user accounts - Nimeä on käytetty muilla käyttäjätileillä - - - The full name has been used by other user accounts - Koko nimeä on käytetty muilla käyttäjätileillä - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Et ole ladannut kuvaa, voit ladata kuvan painikkeesta tai vetämällä - - - Uploaded file type is incorrect, please upload again - Ladattu tiedostotyyppi on virheellinen, lataa uudelleen - - - Images - Kuvat - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Lisää mukautettu pikakuvake - - - Name - Nimi - - - Required - Vaadittu - - - Command - Komento - - - Cancel - Peruuta - - - Add - Lisää - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Tämä pikakuvake on ristiriidassa %1 kanssa, napsauta Lisää, jotta pikakuvake tulee voimaan heti - - - - dccV23::CustomEdit - - Required - Vaadittu - - - Cancel - Peruuta - - - Save - Tallenna - - - Shortcut - Pikanäppäimet - - - Name - Nimi - - - Command - Komento - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Tämä pikakuvake on ristiriidassa %1 kanssa, napsauta Lisää, jotta pikakuvake tulee voimaan heti - - - - dccV23::CustomItem - - Shortcut - Pikanäppäimet - - - Please enter a shortcut - Anna uusi pikanäppäin - - - - dccV23::CustomRegionFormatDialog - - Custom format - Mukautettu formaatti - - - First day of week - Viikon ensimmäinen päivä - - - Short date - Lyhyt päivämäärä - - - Long date - Pitkä päivämäärä - - - Short time - Lyhyt aika - - - Long time - Pitkä aika - - - Currency symbol - Rahayksikön tunnus - - - Numbers - Numerot - - - Paper - Arkki - - - Cancel - Peruuta - - - Save - Tallenna - - - - dccV23::DetailInfoItem - - For more details, visit: - Lisätietoja osoitteessa: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Pyydä pääkäyttäjän oikeuksia - - - Online - Verkossa - - - Offline - Poissa - - - Please sign in to your Union ID first and continue - Kirjaudu ensin Union ID tunnukseesi ja jatka - - - Next - Seuraava - - - Export PC Info - Vie PC-tiedot - - - Import Certificate - Tuo varmenne - - - 1. Export your PC information - 1. Vie tietokoneesi informaatio - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Siirry https://www.chinauos.com/developMode ja lataa offline-sertifikaatti - - - 3. Import the certificate - 3. Tuo varmenne - - - - dccV23::DeveloperModeWidget - - Request Root Access - Pyydä pääkäyttäjän oikeuksia - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Kehittäjätilassa voit saada pääkäyttäjän oikeudet, asentaa ja suorittaa allekirjoittamattomia sovelluksia, joita ei ole listattu sovelluskaupassa. Voit myös vahingossa vaurioittaa järjestelmää, joten käytä oikeuksia huolellisesti. - - - The feature is not available at present, please activate your system first - Ominaisuus ei ole tällä hetkellä käytettävissä, aktivoi järjestelmä ensin - - - Failed to get root access - Pääkäyttäjän käyttöoikeuden hakeminen epäonnistui - - - Please sign in to your Union ID first - Kirjaudu ensin Union ID tunnukseesi - - - Cannot read your PC information - Tietokoneesi tietoja ei voi lukea - - - No network connection - Ei verkkoyhteyttä - - - Certificate loading failed, unable to get root access - Varmenteen lataaminen epäonnistui, pääkäyttäjän oikeuksia ei saada - - - Signature verification failed, unable to get root access - Varmenteen varmennus epäonnistui, pääkäyttäjän käyttöoikeutta ei voitu saada - - - To make some features effective, a restart is required. Restart now? - Käyttöönottoon, tarvitaan tietokoneen käynnistys. Käynnistä uudelleen nyt? - - - Cancel - Peruuta - - - Restart Now - Käynnistä nyt - - - Root Access Allowed - Root oikeudet sallittu - - - - dccV23::DisplayPlugin - - Display - Näyttö - - - Light, resolution, scaling and etc - Valo, resoluutio, skaalaus jne - - - - dccV23::DouTestWidget - - Double-click Test - Kaksoisnapsautuksen testi - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Näppäimistön asetukset - - - Repeat Delay - Toiston viive - - - Short - Lyhyt - - - Long - Pitkä - - - Repeat Rate - Toiston nopeus - - - Slow - Hidas - - - Fast - Nopea - - - Test here - Testaa täällä - - - Numeric Keypad - Numeronäppäimistö - - - Caps Lock Prompt - CapsLock ilmoitus - - - - dccV23::GeneralSettingWidget - - Left Hand - Vasenkätinen - - - Disable touchpad while typing - Kosketuslevy pois käytöstä kirjoittaessa - - - Scrolling Speed - Vierityksen nopeus - - - Double-click Speed - Kaksoisnapsautuksen aikaväli - - - Slow - Hidas - - - Fast - Nopea - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Näppäimistön asettelu - - - Edit - Muokkaa - - - Add Keyboard Layout - Lisää näppäimistömalli - - - Done - Valmis - - - - dccV23::KeyboardLayoutDialog - - Cancel - Peruuta - - - Add - Lisää - - - Add Keyboard Layout - Lisää näppäimistömalli - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Kieliasetukset - - - Keyboard - Näppäimistö - - - Keyboard Settings - Näppäimistön asetukset - - - keyboard Layout - näppäimistön asettelu - - - Keyboard Layout - Näppäimistön asettelu - - - Language - Kieli - - - Shortcuts - Pikanäppäimet - - - - dccV23::MainWindow - - Help - Ohje - - - - dccV23::ModifyPasswdPage - - Change Password - Vaihda salasana - - - Reset Password - Nollaa salasana - - - Resetting the password will clear the data stored in the keyring. - Salasanan nollaus tyhjentää avaimeen tallennetut tiedot. - - - Current Password - Nykyinen salasana - - - Forgot password? - Unohtuiko salasana? - - - New Password - Uusi salasana - - - Repeat Password - Toista salasana - - - Password Hint - Salasanan vihje - - - Cancel - Peruuta - - - Save - Tallenna - - - Passwords do not match - Salasanat eivät täsmää - - - Required - Vaadittu - - - Optional - Valinnainen - - - Password cannot be empty - Salasana ei voi olla tyhjä - - - The hint is visible to all users. Do not include the password here. - Vihje näkyy kaikille käyttäjille. Älä lisää salasanaa tähän. - - - Wrong password - Väärä salasana - - - New password should differ from the current one - Uusi salasana ei saa olla sama kuin nykyinen - - - System error - Järjestelmävirhe - - - Network error - Verkkovirhe - - - - dccV23::MonitorControlWidget - - Identify - Tunnista - - - Gather Windows - Ikkunoiden koonti - - - Screen rearrangement will take effect in %1s after changes - Näytön uudelleenjärjestely tulee voimaan %1s muutosten jälkeen - - - - dccV23::MousePlugin - - Mouse - Hiiri - - - General - Yleinen - - - Touchpad - Kosketuslevy - - - TrackPoint - Tappihiiri - - - - dccV23::MouseSettingWidget - - Pointer Speed - Osoittimen nopeus - - - Mouse Acceleration - Hiiren kiihtyvyys - - - Disable touchpad when a mouse is connected - Kosketuslevyn pois käytöstä, kun hiiri on kytketty - - - Natural Scrolling - Tasainen vieritys - - - Slow - Hidas - - - Fast - Nopea - - - - dccV23::MultiScreenWidget - - Multiple Displays - Useita näyttöjä - /display/Multiple Displays - - - Mode - Tila - /display/Mode - - - Main Screen - Päänäyttö - /display/Main Scree - - - Duplicate - Kahdenna - - - Extend - Laajenna - - - Only on %1 - Vain %1 - - - - dccV23::NotificationModule - - AppNotify - Sovellusilmoitus - - - Notification - Ilmoitus - - - SystemNotify - Järjestelmäilmoitus - - - - dccV23::PalmDetectSetting - - Palm Detection - Palm tunnistus - - - Minimum Contact Surface - Pienin kosketuspinta - - - Minimum Pressure Value - Pienin paineen arvo - - - Disable the option if touchpad doesn't work after enabled - Poista asetus käytöstä, jos kosketuslevy ei toimi käyttöönoton jälkeen - - - - dccV23::PluginManager - - following plugins load failed - seuraavien laajennusten lataus epäonnistui - - - plugins cannot loaded in time - laajennuksia ei voi ladata tällä hetkellä - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Tietosuojakäytäntö - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Olemme tietoisia henkilötietojen tärkeydestä sinulle. Siksi meillä on laadittu tietosuojakäytäntö, joka kertoo kuinka tietojasi kerätään, käytetään, jaetaan, siirretään, julkistaan ja tallenetaan.</p><p> Voit katsoa uusinta tietosuojakäytäntöämme <a href="%1">napsauttamalla tästä</a> tai verkossa osoitteessa <a href="%1">%1</a>. Lue huolellisesti ja ymmärrä täysin asiakkaidemme yksityisyyttä koskevat käytännöt. Jos sinulla on kysyttävää, ota meihin yhteyttä osoitteessa: support@uniontech.com</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Salasana ei voi olla tyhjä - - - Password must have at least %1 characters - Salasanassa on oltava vähintään %1 merkkiä - - - Password must be no more than %1 characters - Salasanassa saa olla enintään %1 merkkiä - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Salasana voi sisältää vain englanninkielisiä kirjaimia (isot ja pienet kirjaimet), numeroita tai erikoismerkkejä (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Enintään %1 merkkiä palindromina - - - No more than %1 monotonic characters please - Enintään %1 monotonista merkkiä peräkkäin - - - No more than %1 repeating characters please - Enintään %1 samaa merkkiä peräkkäin - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Salasanassa on oltava isoja kirjaimia, pieniä kirjaimia, numeroita ja symboleja (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Salasana ei saa sisältää takaperin enempää kuin 4 -merkkiä - - - Do not use common words and combinations as password - Älä käytä yleisiä sanoja ja yhdistelmiä salasanassa - - - Create a strong password please - Luo vahva salasana - - - It does not meet password rules - Tämä ei täytä salasanan sääntöjä - - - - dccV23::RefreshRateWidget - - Refresh Rate - Virkistystaajuus - - - Hz - Hz - - - Recommended - Suositeltava - - - - dccV23::RegionFormatDialog - - Region format - Alueen aikamuoto - - - Default format - Oletusmuoto - - - First of day - Ensimmäinen päivä - - - Short date - Lyhyt päivämäärä - - - Long date - Pitkä päivämäärä - - - Short time - Lyhyt aika - - - Long time - Pitkä aika - - - Currency symbol - Rahayksikön tunnus - - - Numbers - Numerot - - - Paper - Arkki - - - Cancel - Peruuta - - - Save - Tallenna - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Haluatko varmasti poistaa tämän tilin? - - - Delete account directory - Poista käyttätilin hakemisto - - - Cancel - Peruuta - - - Delete - Poista - - - - dccV23::ResolutionWidget - - Resolution - Resoluutio - /display/Resolution - - - Resize Desktop - Muuta työpöydän kokoa - /display/Resize Desktop - - - Default - oletus - - - Fit - Sovita - - - Stretch - Venytä - - - Center - Keskitetty - - - Recommended - Suositeltava - - - - dccV23::RotateWidget - - Rotation - Kääntö - /display/Rotation - - - Standard - Vakio - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Näyttö tukee vain 100% skaalausta - - - Display Scaling - Näytön skaalaus - - - - dccV23::SearchInput - - Search - Etsi - - - - dccV23::SecondaryScreenDialog - - Brightness - Kirkkaus - - - - dccV23::SecurityLevelItem - - Weak - Heikko - - - Medium - Keskitaso - - - Strong - Vahva - - - - dccV23::SecurityQuestionsPage - - Security Questions - Turvakysymykset - - - These questions will be used to help reset your password in case you forget it. - Näitä kysymyksiä käytetään apuna salasanan nollaamisessa, jos unohdat sen. - - - Security question 1 - Turvakysymys 1 - - - Security question 2 - Turvakysymys 2 - - - Security question 3 - Turvakysymys 3 - - - Cancel - Peruuta - - - Confirm - Vahvista - - - Keep the answer under 30 characters - Pidä vastaus alle 30 merkin pituisena - - - Do not choose a duplicate question please - Älä valitse päällekkäistä kysymystä - - - Please select a question - Valitse kysymys - - - What's the name of the city where you were born? - Kaupungin nimi, jossa synnyit? - - - What's the name of the first school you attended? - Mikä on ensimmäisen koulun nimi, jota kävit? - - - Who do you love the most in this world? - Ketä rakastat eniten tässä maailmassa? - - - What's your favorite animal? - Mikä on lempi eläimesi? - - - What's your favorite song? - Mikä on sinun lempikappale? - - - What's your nickname? - Mikä on lempinimesi? - - - It cannot be empty - Se ei voi olla tyhjä - - - - dccV23::SettingsHead - - Edit - Muokkaa - - - Done - Valmis - - - - dccV23::ShortCutSettingWidget - - System - Järjestelmä - - - Window - Ikkuna - - - Workspace - Välilehti - - - Assistive Tools - Apuvälineet - - - Custom Shortcut - Mukautettu pikakuvake - - - Restore Defaults - Palauta oletukset - - - Shortcut - Pikanäppäimet - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Nollaa pikanäppäin - - - Cancel - Peruuta - - - Replace - Korvaa - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Tämä pikanäppäin on ristiriidassa %1 kanssa, napsauta Korvaa, jotta tämä pikanäppäin toimii välittömästi - - - - dccV23::ShortcutItem - - Enter a new shortcut - Tee uusi pikakuvake - - - - dccV23::SystemInfoModel - - available - saatavilla - - - - dccV23::SystemInfoModule - - About This PC - Tietoja tästä tietokoneesta - - - Computer Name - Tietokoneen nimi - - - systemInfo - järjestelmän tiedot - - - OS Name - Käyttöjärjestelmä - - - Version - Versio - - - Edition - Versio - - - Type - Tyyppi - - - Authorization - Valtuutus - - - Processor - Prosessori - - - Memory - Muisti - - - Graphics Platform - Grafiikka-alusta - - - Kernel - Kernel - - - Agreements and Privacy Policy - Sopimukset ja tietosuojakäytäntö - - - Edition License - Järjestelmän käyttöoikeus - - - End User License Agreement - Loppukäyttäjän lisenssisopimus - - - Privacy Policy - Tietosuojakäytäntö - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Tietoja - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Peruuta - - - Add - Lisää - - - Add System Language - Lisää järjestelmän kieli - - - - dccV23::SystemLanguageWidget - - Edit - Muokkaa - - - Language List - Kieliluettelo - - - Add Language - Lisää kieli - - - Done - Valmis - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Älä häiritse - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Sovellusten ilmoituksia ei näytetä työpöydällä ja äänimerkit äänettömälle, mutta voit tarkastella kaikkia viestejä ilmoitusalueella. - - - When the screen is locked - Kun näyttö on lukittu - - - - dccV23::TimeSlotItem - - From - Alkaen - - - To - - - - - - dccV23::TouchScreenModule - - Touch Screen - Kosketusnäyttö - - - Select your touch screen when connected or set it here. - Valitse kosketusnäyttö, kun yhteys on muodostettu tai aseta se tässä. - - - Confirm - Vahvista - - - Cancel - Peruuta - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Osoittimen nopeus - - - Enable TouchPad - Kosketuslevy käyttöön - - - Tap to Click - Napauta klikkaa - - - Natural Scrolling - Tasainen vieritys - - - Slow - Hidas - - - Fast - Nopea - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Osoittimen nopeus - - - Slow - Hidas - - - Fast - Nopea - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Liity käyttökokemusohjelmaan - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Liittyminen käyttökokemusohjelmaan tarkoittaa sitä, että myönnät meille valtuuden kerätä laitteen, järjestelmän ja sovellusten tietoja. Jos kieltäydyt mainittujen tietojen käytöstä, älä liity käyttökokemusohjelmaan. Deepin tietosuojakäytännöstä lisätietoja (<a href="%1"> %1</a>). - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Liittyminen käyttökokemusohjelmaan tarkoittaa sitä, että myönnät meille valtuuden kerätä laitteen, järjestelmän ja sovellusten tietoja. Jos kieltäydyt mainittujen tietojen käytöstä, älä liity käyttökokemusohjelmaan. UnionTech OS tietosuojakäytännöstä lisätietoja (<a href="%1"> %1</a>). - - - - DateWidget - - Year - Vuosi - - - Month - Kuukausi - - - Day - Päivä - - - - DatetimeModule - - Time and Format - Aika ja aikamuoto - - - - DatetimeWorker - - Authentication is required to change NTP server - NTP-palvelimen muuttamiseen tarvitaan tunnistautuminen - - - - DefAppModule - - Default Applications - Oletusohjelmat - - - - DefAppPlugin - - Webpage - Salain - - - Mail - Sähköposti - - - Text - Teksti - - - Music - Musiikki - - - Video - Video - - - Picture - Kuva - - - Terminal - Pääte - - - - DisclaimersDialog - - Disclaimer - Vastuuvapauslauseke - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Ennen kuin käytät kasvojentunnistusta, ota huomioont: -1. Laitteesi lukituksen voivat avata ihmiset tai esineet, jotka näyttävät sinulta. -2. Kasvojentunnistus on vähemmän turvallinen kuin salasanat. -3. Laitteen lukituksen avaamisen onnistumisprosentti kasvojentunnistuksella vähenee valaistoksen ollessa heikko, korkea, takavalo tai suuressa kulmassa. -4. Älä anna laitettasi muille välttääksesi kasvojentunnistuksen haitallisen käytön. -5. Yllä olevien skenaarioiden lisäksi sinun tulee kiinnittää huomiota muihin tilanteisiin, jotka voivat vaikuttaa kasvojentunnistuksen normaaliin käyttöön. - -Kasvojentunnistuksen paremman toimivuuden varmistamiseksi huomioi seuraavat asiat kasvotietoja tallentaessa: -1. Ole hyvin valaistussa ympäristössä, vältä suoraa auringonvaloa ja muiden ihmisten esiintymistä. -2. Kiinnitä huomiota kasvojen asentoon, kun tallennat tietoja, äläkä anna hattujen, hiusten, aurinkolasien, raskaan meikin ja muiden tekijöiden peittää piirteitäsi. -3. Vältä kallistamasta tai laskemasta päätäsi, sulkemasta silmiä tai kuvaamasta vain toista kasvon puolta. Varmista, että kasvosi näkyvät selvästi ja kokonaan kuvausalueella. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - "Biometrinen todennus" on UnionTech Software Technology Co., Ltd:n tarjoama toiminto käyttäjän identiteetin todentamiseen. "Biometrisen todentamisen" avulla kerättyjä biometrisiä tietoja verrataan laitteeseen tallennettuihin tietoihin ja identiteetti varmistetaan näiden tietojen perusteella. -Huomaa, että UnionTech Software ei kerää tai käytä biometrisiä tietojasi, jotka tallennetaan paikallisesti tietokoneellesi. Ota biometrinen todennus käyttöön vain henkilökohtaiseen tietokoneeseen. Käytä omia biometrisiä tietojasi siihen liittyvissä toiminnoissa, sekä poista välittömästi muiden ihmisten biometriset tiedot laitteeltasi, muuten otat niistä aiheutuvan riskin. -UnionTech Software on sitoutunut tutkimaan ja parantamaan biometrisen todennuksen turvallisuutta, tarkkuutta ja vakautta. Ympäristöstä, teknisistä laitteista ja muista tekijöistä ei kuitenkaan ole takeita siitä, että läpäisit aina biometrisen todennuksen. Älä siksi pidä biometristä todennusta ainoana tapana kirjautua UnionTech OS:ään. Jos sinulla on kysyttävää tai ehdotuksia biometrisen todennuksen käyttämisestä, voit antaa palautetta UnionTech OS:n "Palvelut ja tuki" -kohdassa. - - - - Cancel - Peruuta - - - Next - Seuraava - - - - DisclaimersItem - - I have read and agree to the - Olen lukenut ja hyväksyn - - - Disclaimer - Vastuuvapauslauseke - - - - DockModuleObject - - Dock - Telakka - - - Multiple Displays - Useita näyttöjä - - - Show Dock - Näytä telakka - - - Mode - Tila - - - Position - Asema - - - Status - Näytä - - - Show recent apps in Dock - Näytä viimeisimmät sovellukset telakassa - - - Size - Koko - - - Plugin Area - Laajennusalue - - - Select which icons appear in the Dock - Valitse mitkä kuvakkeet näkyvät telakassa - - - Fashion mode - Muodikas - - - Efficient mode - Tehokas - - - Top - Ylös - - - Bottom - Alas - - - Left - Vasen - - - Right - Oikea - - - Location - Sijainti - - - Keep shown - Näytä aina - - - Keep hidden - Pidä piilossa - - - Smart hide - Älykäs piilotus - - - Small - Pieni - - - Large - Suuri - - - On screen where the cursor is - Näytöllä, jossa kohdistin on - - - Only on main screen - Vain päänäytöllä - - - - FaceInfoDialog - - Enroll Face - Kasvojen tunnistus - - - Position your face inside the frame - Aseta kasvosi kehyksen sisään - - - - FaceWidget - - Edit - Muokkaa - - - Manage Faces - Kasvojen hallinta - - - You can add up to 5 faces - Voit lisätä 5:t kasvot - - - Done - Valmis - - - Add Face - Lisää kasvot - - - The name already exists - Nimi on jo olemassa - - - Faceprint - Kasvojälki - - - - FaceidDetailWidget - - No supported devices found - Tuettuja laitteita ei löytynyt - - - - FingerDetailWidget - - No supported devices found - Tuettuja laitteita ei löytynyt - - - - FingerDisclaimer - - Add Fingerprint - Lisää sormenjälki - - - Cancel - Peruuta - - - Next - Seuraava - - - - FingerInfoWidget - - Place your finger - Aseta sormi - - - Place your finger firmly on the sensor until you're asked to lift it - Aseta sormesi tiukasti anturiin, kunnes sinua pyydetään nostamaan se - - - Scan the edges of your fingerprint - Skannaa sormenjäljen reunat - - - Place the edges of your fingerprint on the sensor - Aseta sormen reunat anturiin - - - Lift your finger - Nosta sormesi - - - Lift your finger and place it on the sensor again - Nosta sormesi ja aseta se lukijaan uudelleen - - - Adjust the position to scan the edges of your fingerprint - Säädä sijaintia kun haluat skannata sormenjäljen reunat - - - Lift your finger and do that again - Nosta sormeasi ja tee se uudelleen - - - Fingerprint added - Sormenjälki lisätty - - - - FingerWidget - - Edit - Muokkaa - - - Fingerprint Password - Sormenjäljen salasana - - - You can add up to 10 fingerprints - Voit lisätä enintään 10 sormenjälkeä - - - Done - Valmis - - - The name already exists - Nimi on jo olemassa - - - Add Fingerprint - Lisää sormenjälki - - - - GeneralModule - - General - Yleinen - - - Balanced - Tasapainoinen - - - Balance Performance - Tasapainoinen suoritusteho - - - High Performance - Korkea suoritusteho - - - Power Saver - Virransäästö - - - Power Plans - Virrankäyttö - - - Power Saving Settings - Virransäästön asetukset - - - Auto power saving on low battery - Automaattinen virransäästö alhaisella akulla - - - Decrease Brightness - Pienennä kirkkautta - - - Low battery threshold - Akun alhainen varaus - - - Auto power saving on battery - Automaattinen virransäästö akkutilassa - - - Wakeup Settings - Heräämisen asetukset - - - Unlocking is required to wake up the computer - Lukituksen avaus vaaditaan tietokoneen herättämiseksi - - - Unlocking is required to wake up the monitor - Lukituksen avaus vaaditaan näytön herättämiseksi - - - - HostNameItem - - It cannot start or end with dashes - Ei voi alkaa tai päättyä viivoilla - - - 1~63 characters please - Yhdestä 1~63 merkkiä - - - - InternalButtonItem - - Internal testing channel - Sisäinen testauskanava - - - click here open the link - avaa linkki painamalla tästä - - - - IrisDetailWidget - - No supported devices found - Tuettuja laitteita ei löytynyt - - - - IrisWidget - - Edit - Muokkaa - - - Manage Irises - iiristen hallinta - - - You can add up to 5 irises - Voit lisätä 5:t iirikset - - - Done - Valmis - - - Add Iris - Lisää iiris - - - The name already exists - Nimi on jo olemassa - - - Iris - Iiris - - - - KeyLabel - - None - Mitään - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin Community - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Sisääntulon laite - - - Automatic Noise Suppression - Automaattinen melunvaimennus - - - Input Volume - Sisääntulon voimakkuus - - - Input Level - Tulotaso - - - - PersonalizationDesktopModule - - Desktop - Työpöytä - - - Window - Ikkuna - - - Window Effect - Tehosteet - - - Window Minimize Effect - Minimointi - - - Transparency - Läpinäkyvyys - - - Rounded Corner - Pyöristettyt kulmat - - - Scale - Skaalaus - - - Magic Lamp - Taikalamppu - - - Small - Pieni - - - Middle - Keski - - - Large - Suuri - - - - PersonalizationModule - - Personalization - Personointi - - - - PersonalizationThemeList - - Cancel - Peruuta - - - Save - Tallenna - - - Light - Vaalea - - - Dark - Tumma - - - Auto - Automaattinen - - - Default - oletus - - - - PersonalizationThemeModule - - Theme - Teema - - - Appearance - Ulkoasu - - - Accent Color - Korostusväri - - - Icon Settings - Kuvakeasetukset - - - Icon Theme - Kuvake - - - Cursor Theme - Kohdistin - - - Text Settings - Tekstiasetukset - - - Font Size - Fonttikoko - - - Standard Font - Vakio - - - Monospaced Font - Tasaleveä - - - Light - Vaalea - - - Auto - Automaattinen - - - Dark - Tumma - - - - PersonalizationThemeWidget - - Light - Vaalea - General - /personalization/General - - - Dark - Tumma - General - /personalization/General - - - Auto - Automaattinen - General - /personalization/General - - - Default - oletus - - - - PersonalizationWorker - - Custom - Kustomoitu - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Bluetooth yhdistämiseen tarvittava PIN-koodi on: - - - Cancel - Peruuta - - - Confirm - Vahvista - - - - PowerModule - - Power - Virta - - - Battery low, please plug in - Virtataso alhainen, ole hyvä ja yhdistä verkkovirtaan - - - Battery critically low - Akku kriittisesti alhainen - - - - PrivacyModule - - Privacy and Security - Yksityisyys ja tietoturva - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofoni - - - User Folders - Käyttäjien kansiot - - - Calendar - Kalenteri - - - Screen Capture - Kaappaus - - - - QObject - - Control Center - Ohjauspaneli - - - , - , - - - Error occurred when reading the configuration files of password rules! - Tapahtui virhe luettaessa määrityksiä salasanasäännöt! - - - Auto adjust CPU operating frequency based on CPU load condition - Säädä prosessorin taajuutta automaattisesti kuormituksen perusteella - - - Aggressively adjust CPU operating frequency based on CPU load condition - Säädä prosessorin taajuutta aggressiivisesti kuormituksen perusteella - - - Be good to imporving performance, but power consumption and heat generation will increase - Parantaa suorituskykyä, mutta virrankulutus ja lämmön tuotto kasvaa - - - CPU always works under low frequency, will reduce power consumption - Prosessori toimii aina matalalla taajuudella, mikä vähentää virrankulutusta - - - Activated - Aktivoitu - - - View - Katsele - - - To be activated - Aktivoidaan - - - Activate - Aktivoi - - - Expired - Vanhentunut - - - In trial period - Kokeilujakso - - - Trial expired - Kokeilujakso päättynyt - - - Touch Screen Settings - Kosketusnäytön asetukset - - - The settings of touch screen changed - Kosketusnäytön asetukset muuttuivat - - - Checking system versions, please wait... - Tarkistetaan järjestelmän versioita, odota... - - - Leave - Poistu - - - Cancel - Peruuta - - - - RegionModule - - Region and format - Alue ja aikamuoto - - - Country or Region - Maa - - - Format - Formaatti - - - Provide localized services based on your region. - Tarjoaa palveluita maasi tai alueesi perusteella. - - - Select matching date and time formats based on language and region - Valitse päivämäärä- ja aikamuodot kielen, sekä alueen mukaan - - - Region format - Kieli ja asuinalue - - - First day of week - Viikon ensimmäinen päivä - - - Short date - Lyhyt päivämäärä - - - Long date - Pitkä päivämäärä - - - Short time - Lyhyt aika - - - Long time - Pitkä aika - - - Currency symbol - Rahayksikön tunnus - - - Numbers - Numerot - - - Paper - Arkki - - - custom format - Mukautettu formaatti - - - - ResultItem - - Your system is not authorized, please activate first - Järjestelmääsi ei ole valtuutettu, aktivoi ensin - - - Update successful - Päivitys onnistui - - - Failed to update - Päivitys epäonnistui - - - - SearchInput - - Search - Etsi - - - - ServiceSettingsModule - - Apps can access your camera: - Sovellukset voivat käyttää kameraa: - - - Apps can access your microphone: - Sovellukset voivat käyttää mikrofonia: - - - Apps can access user folders: - Sovellukset voivat käyttää käyttäjien kansioita: - - - Apps can access Calendar: - Sovellukset voivat käyttää kalenteria: - - - Apps can access Screen Capture: - Sovellukset voivat käyttää näytön kaappausta: - - - No apps requested access to the camera - Mikään sovellus ei pyytänyt pääsyä kameraan - - - No apps requested access to the microphone - Mikään sovellus ei pyytänyt pääsyä mikrofoniin - - - No apps requested access to user folders - Mikään sovellus ei pyytänyt pääsyä käyttäjien kansioihin - - - No apps requested access to Calendar - Mikään sovellus ei pyytänyt pääsyä kalenteriin - - - No apps requested access to Screen Capture - Mikään sovellus ei pyytänyt pääsyä näytön kaappaukseen - - - - SoundEffectsPage - - Sound Effects - Äänitehosteet - - - - SoundModel - - Boot up - Käynnistys - - - Shut down - Sammuta - - - Log out - Kirjaudu ulos - - - Wake up - Herää - - - Volume +/- - Voimakkuus +/- - - - Notification - Ilmoitus - - - Low battery - Akku vähissä - - - Send icon in Launcher to Desktop - Lähetä kuvake työpöydälle - - - Empty Trash - Tyhjennä roskakori - - - Plug in - Kytketty - - - Plug out - Poista laite - - - Removable device connected - Siirrettävä laite kytketty - - - Removable device removed - Siirrettävä laite poistettu - - - Error - Virhe - - - - SoundModule - - Sound - Ääni - - - - SoundPlugin - - Output - Ulostulo - - - Auto pause - Automaattinen keskeytys - - - Whether the audio will be automatically paused when the current audio device is unplugged - Keskeytetäänkö ääni automaattisesti, kun nykyinen äänilaite irrotetaan - - - Input - Sisääntulo - - - Sound Effects - Äänitehosteet - - - Devices - Laitteet - - - Input Devices - Sisääntulon laitteet - - - Output Devices - Ulostulon laitteet - - - - SpeakerPage - - Output Device - Ulostulon laite - - - Mode - Tila - - - Output Volume - Ulostulon voimakkuus - - - Volume Boost - Voimakkuuden tehostin - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Jos voimakkuus on suurempi kuin 100%, se voi vääristää ääntä ja olla haitallista toistolaitteille - - - Left/Right Balance - Tasapaino vasen/oikea - - - Left - Vasen - - - Right - Oikea - - - - TimeSettingModule - - Time Settings - Aika-asetukset - - - Time - Aika - - - Auto Sync - Automaattinen synkronointi - - - Reset - Nollaa - - - Save - Tallenna - - - Server - Palvelin - - - Address - Osoite - - - Required - Vaadittu - - - Customize - Muokkaa - - - Year - Vuosi - - - Month - Kuukausi - - - Day - Päivä - - - - TimeZoneChooser - - Cancel - Peruuta - - - Confirm - Vahvista - - - Add Timezone - Lisää aikavyöhyke - - - Add - Lisää - - - Change Timezone - Vaihda aikavyöhyke - - - - TimeoutDialog - - Save the display settings? - Tallenna näytön asetukset? - - - Settings will be reverted in %1s. - Asetukset palautetaan %1s kulttua. - - - Revert - Palauta asetukset - - - Save - Tallenna - - - - TimezoneItem - - Tomorrow - Huomenna - - - Yesterday - Eilen - - - Today - Tänään - - - %1 hours earlier than local - %1 tuntia edellä paikallista aikaa - - - %1 hours later than local - %1 tuntia paikallista myöhemmin - - - - TimezoneModule - - Timezone List - Aikavyöhykkeet - - - System Timezone - Järjestelmän aikavyöhyke - - - Add Timezone - Lisää aikavyöhyke - - - - TreeCombox - - Collaboration Settings - Vuorovaikutuksen asetukset - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Käyttäjätiliä ei ole linkitetty Union ID:lle - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Jos haluat nollata salasanat, sinun ensin tulee todentaa Union ID-tunnuksesi. Napsauta "Siirry linkkiin" ja viimeistele asetukset. - - - Cancel - Peruuta - - - Go to Link - Siirry linkkiin - - - - UnknownUpdateItem - - Release date: - Julkaisupäivä: - - - - UpdateCtrlWidget - - Check Again - Tarkista uudelleen - - - Update failed: insufficient disk space - Päivitys epäonnistui: levytilaa ei ole - - - Dependency error, failed to detect the updates - Riippuvuusvirhe, päivityksiä ei havaittu - - - Restart the computer to use the system and the applications properly - Päivityksen jälkeen käynnistä uudelleen - - - Network disconnected, please retry after connected - Verkko irti, yritä uudelleen kun yhteys on muodostettu - - - Your system is not authorized, please activate first - Järjestelmääsi ei ole valtuutettu, aktivoi ensin - - - This update may take a long time, please do not shut down or reboot during the process - Tämä päivitys voi kestää kauan, älä sammuta tai käynnistä uudelleen prosessin aikana. - - - Updates Available - Päivityksiä saatavilla - - - Current Edition - Nykyinen versio - - - Updating... - Päivitetään... - - - Update All - Päivitä - - - Last checking time: - Viimeisin tarkistus: - - - Your system is up to date - on ajan tasalla - - - Check for Updates - Tarkista päivitykset - - - Checking for updates, please wait... - Tarkistaa päivityksiä, odota ... - - - The newest system installed, restart to take effect - Uusin järjestelmä on asennettu, käynnistä uudelleen - - - %1% downloaded (Click to pause) - %1% ladattu (keskeytä klikkaamalla) - - - %1% downloaded (Click to continue) - %1% ladattu (klikkaa jatkaaksesi) - - - Your battery is lower than 50%, please plug in to continue - Akku varaus on alle 50%, kytke virta jatkaaksesi - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Varmista, että sinulla on riittävästi virtaa uudelleenkäynnistystä varten. Älä katkaise virtaa koneesta - - - Size - Koko - - - - UpdateModule - - Updates - Päivitykset - - - - UpdatePlugin - - Check for Updates - Tarkista päivitykset - - - - UpdateSettingItem - - Insufficient disk space - Liian vähän levytilaa - - - Update failed: insufficient disk space - Päivitys epäonnistui: levytilaa ei ole - - - Update failed - Päivitys epäonnistui - - - Network error - Verkkovirhe - - - Network error, please check and try again - Verkkovirhe, tarkista ja yritä uudelleen - - - Packages error - Pakettien virheet - - - Packages error, please try again - Pakettivirhe, yritä uudelleen - - - Dependency error - Riippuvuudet virhe - - - Unmet dependencies - Puuttuvat riippuvuudet - - - The newest system installed, restart to take effect - Uusin järjestelmä on asennettu, käynnistä uudelleen - - - Waiting - Odotetaan - - - Backing up - Varmuuskopiointi - - - System backup failed - Järjestelmän varmuuskopiointi epäonnistui - - - Release date: - Julkaisupäivä: - - - Server - Palvelin - - - Desktop - Työpöytä - - - Version - Versio - - - - UpdateSettingsModule - - Update Settings - Päivityksen asetukset - - - System - Järjestelmä - - - Security Updates Only - Vain tietoturvapäivitykset - - - Switch it on to only update security vulnerabilities and compatibility issues - Päivittää vain tietoturva-aukkoja ja yhteensopivuuden ongelmia - - - Third-party Repositories - Kolmannen osapuolen pakettivarastot - - - linglong update - linglong päivitys - - - Linglong Package Update - Linglong pakettipäivitys - - - If there is update for linglong package, system will update it for you - Jos linglong-paketille on päivitys, järjestelmä päivittää sen puolestasi - - - Other settings - Muut asetukset - - - Auto Check for Updates - Automaattiset päivitykset - - - Auto Download Updates - Päivitysten automaattinen lataaminen - - - Switch it on to automatically download the updates in wireless or wired network - Kytke automaattisesti lataamaan päivitykset langattomassa tai langallisessa verkossa - - - Auto Install Updates - Automaattiset päivitykset - - - Updates Notification - Päivitysten ilmoitus - - - Clear Package Cache - Tyhjennä pakettien välimuisti - - - Updates from Internal Testing Sources - Päivitykset testauslähteistä - - - internal update - sisäinen päivitys - - - Join the internal testing channel to get deepin latest updates - Liity testauskanavaan saadaksesi viimeisimmät päivitykset - - - System Updates - Järjestelmän päivitykset - - - Security Updates - Päivityksiä tietoturvaan - - - Install updates automatically when the download is complete - Asenna päivitykset automaattisesti, kun lataus on valmis - - - Install "%1" automatically when the download is complete - Asenna "%1" automaattisesti, kun lataus on valmis - - - - UpdateWidget - - Current Edition - Nykyinen versio - - - - UpdateWorker - - System Updates - Järjestelmän päivitykset - - - Fixed some known bugs and security vulnerabilities - Korjattu tunnettuja bugeja ja tietoturva-aukkoja - - - Security Updates - Päivityksiä tietoturvaan - - - Third-party Repositories - Kolmannen osapuolen pakettivarastot - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Sinun ei ehkä ole nyt turvallista poistua sisäisestä testauskanavasta, haluatko silti poistua? - - - Your are safe to leave the internal testing channel - Voit turvallisesti poistua sisäisestä testauskanavasta - - - Cannot find machineid - Konetunnusta ei löydy - - - Cannot Uninstall package - Paketin asennusta ei voi poistaa - - - Error when exit testingChannel - Virhe poistuessa testauskanavasta - - - try to manually uninstall package - yritä poistaa paketti manuaalisesti - - - Cannot install package - Pakettia ei voi asentaa - - - - UseBatteryModule - - On Battery - Akulla - - - Never - Ei koskaan - - - Shut down - Sammuta - - - Suspend - Valmiustila - - - Hibernate - Lepotila - - - Turn off the monitor - Näytön sammuttaminen - - - Do nothing - Älä tee mitään - - - 1 Minute - 1 minuutti - - - %1 Minutes - %1 minuuttia - - - 1 Hour - 1 tunti - - - Screen and Suspend - Näyttö ja keskeytys - - - Turn off the monitor after - Sammuta näyttö jälkeen - - - Lock screen after - Lukitaan näyttö - - - Computer suspends after - Tietokone siirtyy lepotilaan - - - Computer will suspend after - Tietokone siirtyy lepotilaan - - - When the lid is closed - Kun kansi on kiinni - - - When the power button is pressed - Kun virtapainiketta painetaan - - - Low Battery - Akku vähissä - - - Low battery notification - Alhaisen varauksen ilmoitus - - - Low battery level - Alhainen akun varaustaso - - - Auto suspend battery level - Automaattinen lepotila akun varaustasolla - - - Battery Management - Virran hallinta - - - Display remaining using and charging time - Näytä jäljellä oleva käyttö- ja latausaika - - - Maximum capacity - Täysi varaus - - - Show the shutdown Interface - Näytä sammutusliittymä - - - - UseElectricModule - - Plugged In - Kytketty - - - 1 Minute - 1 minuutti - - - %1 Minutes - %1 minuuttia - - - 1 Hour - 1 tunti - - - Never - Ei koskaan - - - Screen and Suspend - Näyttö ja keskeytys - - - Turn off the monitor after - Sammuta näyttö jälkeen - - - Lock screen after - Lukitaan näyttö - - - Computer suspends after - Tietokone siirtyy lepotilaan - - - When the lid is closed - Kun kansi on kiinni - - - When the power button is pressed - Kun virtapainiketta painetaan - - - Shut down - Sammuta - - - Suspend - Valmiustila - - - Hibernate - Lepotila - - - Turn off the monitor - Näytön sammuttaminen - - - Show the shutdown Interface - Näytä sammutusliittymä - - - Do nothing - Älä tee mitään - - - - WacomModule - - Drawing Tablet - Piirustusalusta - - - Mode - Tila - - - Pressure Sensitivity - Paineherkkyys - - - Pen - Kynä - - - Mouse - Hiiri - - - Light - Vaalea - - - Heavy - Painava - - - - main - - Control Center provides the options for system settings. - Ohjauspaneeli säätää asetukset järjestelmälle. - - - - updateControlPanel - - Downloading - Ladataan - - - Waiting - Odotetaan - - - Installing - Asennetaan - - - Backing up - Varmuuskopiointi - - - Download and install - Lataa ja asenna - - - Learn more - Lue lisää - - - diff --git a/dcc-old/translations/dde-control-center_fil.ts b/dcc-old/translations/dde-control-center_fil.ts deleted file mode 100644 index a90cb3f336..0000000000 --- a/dcc-old/translations/dde-control-center_fil.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Username - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - Username - - - Full Name - - - - Password - Password - - - Repeat Password - Ulitin ang Password - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - Restart Ngayon - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - Tulong - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - Ulitin ang Password - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - Musika - - - Video - Bidyo - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - Ngayon - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 Minuto - - - %1 Minutes - - - - 1 Hour - 1 Oras - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 Minuto - - - %1 Minutes - - - - 1 Hour - 1 Oras - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_fr.ts b/dcc-old/translations/dde-control-center_fr.ts deleted file mode 100644 index ccdc7c3597..0000000000 --- a/dcc-old/translations/dde-control-center_fr.ts +++ /dev/null @@ -1,3981 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Autoriser les autres appareils Bluetooth à trouver cet appareil - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Activer le Bluetooth pour trouver les appareils à proximité (haut-parleurs, clavier, souris) - - - My Devices - Mes appareils - - - Other Devices - Autres appareils - - - Show Bluetooth devices without names - Afficher les appareils Bluetooth sans nom - - - Connect - Se connecter - - - Disconnect - Déconnecter - - - Rename - Renommer - - - Send Files - Envoyer les fichiers - - - Ignore this device - Ignorer cet appareil - - - Connecting - Connexion en cours - - - Disconnecting - Déconnexion - - - - AddButtonWidget - - Add Application - Ajouter une application - - - Open Desktop file - Ouvrir le fichier de bureau - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - Inscrire le visage - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Assurez-vous que toutes les parties de votre visage ne sont pas couvertes par des objets et sont clairement visibles. Votre visage doit également être bien éclairé. - - - Cancel - Annuler - - - Next - Suivant - - - Face enrolled - Visage inscrit - - - Use your face to unlock the device and make settings later - Utiliser votre visage pour déverrouiller l'appareil et effectuer les réglages plus tard - - - Done - Terminé - - - Failed to enroll your face - Échec de l'inscription de votre visage - - - Try Again - Réessayer - - - Close - Fermer - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - Inscrire Iris - - - Cancel - Annuler - - - Next - Suivant - - - Iris enrolled - Iris inscrit - - - Done - Terminé - - - Failed to enroll your iris - Échec de l'inscription de votre iris - - - Try Again - Réessayer - - - - AuthenticationInfoItem - - No more than 15 characters - Pas plus de 15 caractères - - - Use letters, numbers and underscores only, and no more than 15 characters - Utiliser uniquement des lettres, des chiffres, traits de soulignement, et pas plus de 15 caractères - - - Use letters, numbers and underscores only - Utiliser uniquement des lettres, des chiffres et des traits de soulignement - - - - AuthenticationModule - - Biometric Authentication - Authentification biométrique - - - - AuthenticationPlugin - - Fingerprint - Empreinte digitale - - - Face - Visage - - - Iris - Iris - - - - BluetoothDeviceModel - - Connected - Connecté - - - Not connected - Pas connecté - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Empreinte digitale 1 - - - Fingerprint2 - Empreinte digitale 2 - - - Fingerprint3 - Empreinte digitale 3 - - - Fingerprint4 - Empreinte digitale 4 - - - Fingerprint5 - Empreinte digitale 5 - - - Fingerprint6 - Empreinte digitale 6 - - - Fingerprint7 - Empreinte digitale 7 - - - Fingerprint8 - Empreinte digitale 8 - - - Fingerprint9 - Empreinte digitale 9 - - - Fingerprint10 - Empreinte digitale 10 - - - Scan failed - Échec de l'analyse - - - The fingerprint already exists - L'empreinte existe déjà - - - Please scan other fingers - Veuillez enregistrer d'autres doigts - - - Unknown error - Erreur inconnue - - - Scan suspended - Analyse suspendue - - - Cannot recognize - Impossible de reconnaître - - - Moved too fast - Déplacé trop rapidement - - - Finger moved too fast, please do not lift until prompted - Le doigt s'est déplacé trop rapidement, veuillez ne pas le soulever avant d'y être invité - - - Unclear fingerprint - Empreinte digitale peu claire - - - Clean your finger or adjust the finger position, and try again - Nettoyer votre doigt ou ajuster la position du doigt, puis réessayer - - - Already scanned - Déjà analysé - - - Adjust the finger position to scan your fingerprint fully - Ajuster la position des doigts pour numériser complètement votre empreinte digitale - - - Finger moved too fast. Please do not lift until prompted - Le doigt a bougé trop vite. Veuillez ne pas le soulever avant d'y être invité - - - Lift your finger and place it on the sensor again - Soulever votre doigt et placer-le à nouveau sur le capteur - - - Position your face inside the frame - Placer votre visage à l'intérieur du cadre - - - Face enrolled - Visage inscrit - - - Position a human face please - Positionner un visage humain, s'il vous plaît - - - Keep away from the camera - Tenir à l'écart de la caméra - - - Get closer to the camera - Rapprochez-vous de la caméra - - - Do not position multiple faces inside the frame - Ne positionner pas plusieurs faces à l'intérieur du cadre - - - Make sure the camera lens is clean - Assurez-vous que l'objectif de la caméra est propre - - - Do not enroll in dark, bright or backlit environments - Ne vous inscrivez pas dans des environnements sombres, lumineux ou rétro-éclairés - - - Keep your face uncovered - Garder votre visage découvert - - - Scan timed out - L'analyse a expiré - - - Device crashed, please scan again! - L'appareil est tombé en panne, veuillez numériser à nouveau  ! - - - Cancel - Annuler - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Annuler - - - Confirm - button - Confirmer - - - - dccV23::AccountSpinBox - - Always - Toujours - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Nom d'utilisateur - - - Change Password - Changer le mot de passe - - - Delete User - - - - User Type - - - - Auto Login - Connexion automatique - - - Login Without Password - Connexion sans mot de passe - - - Validity Days - Jours de validité - - - Group - Groupe - - - The full name is too long - Le nom complet est trop long - - - Standard User - Utilisateur standard - - - Administrator - Administrateur - - - Reset Password - réinitialiser le mot de passe - - - The full name has been used by other user accounts - Le nom complet a été utilisé par d'autres comptes d'utilisateurs - - - Full Name - Nom - - - Go to Settings - Aller aux paramètres - - - Cancel - Annuler - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - La "Connexion automatique" ne peut être activée que pour un seul compte, veuillez d'abord la désactiver pour le compte "%1" - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Votre hôte a été supprimé du serveur de domaine avec succès - - - Your host joins the domain server successfully - Votre hôte rejoint le serveur de domaine avec succès - - - Your host failed to leave the domain server - Votre hôte n'a pas pu quitter le serveur de domaine - - - Your host failed to join the domain server - Votre hôte n'a pas réussi à rejoindre le serveur de domaine - - - AD domain settings - Paramètres du domaine AD - - - Password not match - Le mot de passe ne correspond pas - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Afficher les notifications de %1 sur le bureau et dans le centre de notifications. - - - Play a sound - Jouer un son - - - Show messages on lockscreen - Afficher les messages sur l'écran de verrouillage - - - Show in notification center - Afficher dans le centre de notification - - - Show message preview - Montrer l'aperçu du message - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Annuler - - - Save - Sauvegarder - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Images - - - - dccV23::BootWidget - - Updating... - Mise à jour... - - - Startup Delay - Délai de démarrage - - - Theme - Thème - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Cliquer sur l'option du menu de démarrage pour le définir comme démarrage principal, puis faites glisser une image pour remplacer l'arrière-plan - - - Click the option in boot menu to set it as the first boot - Cliquer sur l'option dans le menu de démarrage pour le définir comme premier démarrage - - - Switch theme on to view it in boot menu - Activer le thème pour l'afficher dans le menu de démarrage - - - GRUB Authentication - Authentification GRUB - - - GRUB password is required to edit its configuration - Le mot de passe GRUB est requis pour éditer sa configuration - - - Change Password - Changer le mot de passe - - - Boot Menu - Menu de démarrage - - - Change GRUB password - Changer le mot de passe GRUB - - - Username: - Nom d'utilisateur : - - - root - racine - - - New password: - Nouveau mot de passe : - - - Repeat password: - Répéter le mot de passe : - - - Required - Obligatoire - - - Cancel - button - Annuler - - - Confirm - button - Confirmer - - - Password cannot be empty - Le mot de passe ne peut pas être vide - - - Passwords do not match - Les mots de passe ne correspondent pas - - - - dccV23::BrightnessWidget - - Brightness - Luminosité - - - Color Temperature - Température de couleur - - - Auto Brightness - Luminosité automatique - - - Night Shift - Éclairage nocturne - - - The screen hue will be auto adjusted according to your location - La teinte de l'écran sera ajustée automatiquement en fonction de votre emplacement - - - Change Color Temperature - Changer la température de couleur - - - Cool - Froid - - - Warm - Chaud - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Mes appareils - - - Other Devices - Autres appareils - - - - dccV23::CommonInfoPlugin - - General Settings - Paramètres généraux - - - Boot Menu - Menu de démarrage - - - Developer Mode - Mode développeur - - - User Experience Program - Programme d'expérience utilisateur - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Accepter et rejoindre le programme d'expérience utilisateur - - - The Disclaimer of Developer Mode - La clause de non-responsabilité du mode développeur - - - Agree and Request Root Access - Accepter et demander un accès root - - - Failed to get root access - Impossible d'obtenir un accès root - - - Please sign in to your Union ID first - Veuillez d'abord vous connecter à votre Union ID - - - Cannot read your PC information - Impossible de lire les informations de votre PC - - - No network connection - Pas de connexion réseau - - - Certificate loading failed, unable to get root access - Échec du chargement du certificat, impossible d'obtenir l'accès root - - - Signature verification failed, unable to get root access - La vérification de la signature a échoué, impossible d'obtenir un accès root - - - - dccV23::CreateAccountPage - - Group - Groupe - - - Cancel - Annuler - - - Create - Créer - - - New User - - - - User Type - - - - Username - Nom d'utilisateur - - - Full Name - Nom - - - Password - Mot de passe - - - Repeat Password - Répéter le mot de passe - - - Password Hint - Question secrète de mot de passe - - - The full name is too long - Le nom complet est trop long - - - Passwords do not match - Les mots de passe ne correspondent pas - - - Standard User - Utilisateur standard - - - Administrator - Administrateur - - - Customized - Personnalisé - - - Required - Obligatoire - - - optional - optionnel - - - The hint is visible to all users. Do not include the password here. - L'indice est visible pour tous les utilisateurs. N'incluer pas le mot de passe ici. - - - Policykit authentication failed - L'authentification Policykit a échoué - - - Username must be between 3 and 32 characters - Le nom d'utilisateur doit être entre 3 et 32 caractères - - - The first character must be a letter or number - Le premier caractère doit être une lettre ou un chiffre - - - Your username should not only have numbers - Votre nom d'utilisateur ne doit pas seulement contenir des chiffres - - - The username has been used by other user accounts - Le nom d'utilisateur a été utilisé par d'autres comptes d'utilisateurs - - - The full name has been used by other user accounts - Le nom complet a été utilisé par d'autres comptes d'utilisateurs - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Images - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Ajouter un raccourci personnalisé - - - Name - Nom - - - Required - Obligatoire - - - Command - Commander - - - Cancel - Annuler - - - Add - Ajouter - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ce raccourci est en conflit avec %1, cliquer sur Ajouter pour rendre ce raccourci effectif immédiatement - - - - dccV23::CustomEdit - - Required - Obligatoire - - - Cancel - Annuler - - - Save - Sauvegarder - - - Shortcut - Raccourci - - - Name - Nom - - - Command - Commander - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ce raccourci est en conflit avec %1, cliquer sur Ajouter pour rendre ce raccourci effectif immédiatement - - - - dccV23::CustomItem - - Shortcut - Raccourci - - - Please enter a shortcut - Veuillez saisir un raccourci - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - Pour plus de détails, visiter : - - - - dccV23::DeveloperModeDialog - - Request Root Access - Demander un accès root - - - Online - En ligne - - - Offline - Hors ligne - - - Please sign in to your Union ID first and continue - Veuillez d'abord vous connecter à votre Union ID et continuer - - - Next - Suivant - - - Export PC Info - Exporter les informations sur le PC - - - Import Certificate - Certificat d'importation - - - 1. Export your PC information - 1. Exporter les informations de votre PC - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Accéder à https://www.chinauos.com/developMode pour télécharger un certificat hors ligne - - - 3. Import the certificate - 3. Importer le certificat - - - - dccV23::DeveloperModeWidget - - Request Root Access - Demander un accès root - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Le mode développeur vous permet d'obtenir les privilèges root, d'installer et d'exécuter des applications non signées non répertoriées dans l'App Store, mais l'intégrité de votre système peut également être endommagée, veuillez l'utiliser avec précaution. - - - The feature is not available at present, please activate your system first - La fonctionnalité n'est pas disponible pour le moment, veuillez d'abord activer votre système - - - Failed to get root access - Impossible d'obtenir un accès root - - - Please sign in to your Union ID first - Veuillez d'abord vous connecter à votre Union ID - - - Cannot read your PC information - Impossible de lire les informations de votre PC - - - No network connection - Pas de connexion réseau - - - Certificate loading failed, unable to get root access - Échec du chargement du certificat, impossible d'obtenir l'accès root - - - Signature verification failed, unable to get root access - La vérification de la signature a échoué, impossible d'obtenir un accès root - - - To make some features effective, a restart is required. Restart now? - Pour rendre certaines fonctionnalités effectives, un redémarrage est nécessaire. Redémarrer maintenant ? - - - Cancel - Annuler - - - Restart Now - Redémarrer - - - Root Access Allowed - Accès root autorisé - - - - dccV23::DisplayPlugin - - Display - Affichage - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Test du Double-clique - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Délai de répétition - - - Short - Court - - - Long - Longue - - - Repeat Rate - Taux de répétition - - - Slow - Lent - - - Fast - Rapide - - - Test here - Tester ici - - - Numeric Keypad - Pavé numérique - - - Caps Lock Prompt - Verrouillage des majuscules - - - - dccV23::GeneralSettingWidget - - Left Hand - Main gauche - - - Disable touchpad while typing - Désactiver le pavé tactile lors de la saisie - - - Scrolling Speed - Vitesse de défilement - - - Double-click Speed - Vitesse du double-clic - - - Slow - Lent - - - Fast - Rapide - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Disposition du clavier - - - Edit - Éditer - - - Add Keyboard Layout - Ajouter une disposition de clavier - - - Done - Terminé - - - - dccV23::KeyboardLayoutDialog - - Cancel - Annuler - - - Add - Ajouter - - - Add Keyboard Layout - Ajouter une disposition de clavier - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Clavier et langue - - - Keyboard - Clavier - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Disposition du clavier - - - Language - Language - - - Shortcuts - Raccourcis - - - - dccV23::MainWindow - - Help - Aide - - - - dccV23::ModifyPasswdPage - - Change Password - Changer le mot de passe - - - Reset Password - réinitialiser le mot de passe - - - Resetting the password will clear the data stored in the keyring. - La réinitialisation du mot de passe effacera les données stockées dans le trousseau de clés. - - - Current Password - Mot de passe actuel - - - Forgot password? - Mot de passe oublié ? - - - New Password - Nouveau mot de passe - - - Repeat Password - Répéter le mot de passe - - - Password Hint - Question secrète de mot de passe - - - Cancel - Annuler - - - Save - Sauvegarder - - - Passwords do not match - Les mots de passe ne correspondent pas - - - Required - Obligatoire - - - Optional - Optionnel - - - Password cannot be empty - Le mot de passe ne peut pas être vide - - - The hint is visible to all users. Do not include the password here. - L'indice est visible pour tous les utilisateurs. N'incluer pas le mot de passe ici. - - - Wrong password - Mauvais mot de passe - - - New password should differ from the current one - Le nouveau mot de passe doit être différent de celui en cours - - - System error - Erreur système - - - Network error - Erreur réseau - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Rassembler les fenêtres - - - Screen rearrangement will take effect in %1s after changes - La réorganisation de l'écran prendra effet dans %1s après les modifications - - - - dccV23::MousePlugin - - Mouse - Souris - - - General - Général - - - Touchpad - Pavé tactile - - - TrackPoint - Trackpoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Vitesse du pointeur - - - Mouse Acceleration - Vitesse de la souris - - - Disable touchpad when a mouse is connected - Désactiver le pavé tactile lorsqu'une souris est connectée - - - Natural Scrolling - Défilement naturel - - - Slow - Lent - - - Fast - Rapide - - - - dccV23::MultiScreenWidget - - Multiple Displays - Affichages multiples - /display/Multiple Displays - - - Mode - Mode - /display/Mode - - - Main Screen - Écran principal - /display/Main Scree - - - Duplicate - Dupliquer - - - Extend - Étendre - - - Only on %1 - Uniquement sur %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notification - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Détection de la paume - - - Minimum Contact Surface - Surface de contact minimale - - - Minimum Pressure Value - Valeur de pression minimale - - - Disable the option if touchpad doesn't work after enabled - Désactiver l'option si le pavé tactile ne fonctionne pas après avoir été activé - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Politique de confidentialité - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Nous sommes profondément conscients de l'importance de vos informations personnelles. Nous avons une politique de confidentialité qui couvre la manière dont nous collectons, utilisons, partageons, transférons, divulguons publiquement et stockons vos informations.</p><p>Vous pouvez <a href="%1">cliquer ici</a> pour consulter notre dernière politique de confidentialité et/ou la consulter en ligne en visitant <a href="%1">%1</a>. Veuillez lire attentivement et bien comprendre nos pratiques en matière de confidentialité des clients. Si vous avez des questions, veuillez nous contacter à : support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Le mot de passe ne peut pas être vide - - - Password must have at least %1 characters - Le mot de passe doit comporter au moins %1 caractères - - - Password must be no more than %1 characters - Le mot de passe ne doit pas comporter plus de %1 caractères - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Le mot de passe ne peut contenir que des lettres anglaises (sans accents), des chiffres ou des symboles spéciaux (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Pas plus de %1 caractères palindromes, s'il vous plaît - - - No more than %1 monotonic characters please - Pas plus de %1 caractères monotones, s'il vous plaît - - - No more than %1 repeating characters please - Pas plus de %1 caractères répétés, s'il vous plaît - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Le mot de passe doit contenir des lettres majuscules, des lettres minuscules, des chiffres et des symboles (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Le mot de passe ne doit pas contenir plus de 4 caractères palindrome - - - Do not use common words and combinations as password - N'utiliser pas de mots et de combinaisons courants comme mot de passe - - - Create a strong password please - Veuillez créer un mot de passe fort, s'il vous plaît - - - It does not meet password rules - Il ne répond pas aux règles de mot de passe - - - - dccV23::RefreshRateWidget - - Refresh Rate - Fréquence de rafraîchissement - - - Hz - Hz - - - Recommended - Recommandé - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Voulez-vous vraiment supprimer ce compte ? - - - Delete account directory - Supprimer le répertoire des comptes - - - Cancel - Annuler - - - Delete - Supprimer - - - - dccV23::ResolutionWidget - - Resolution - Résolution - /display/Resolution - - - Resize Desktop - Redimensionner le bureau - /display/Resize Desktop - - - Default - Par défaut - - - Fit - Adapter - - - Stretch - Extensible - - - Center - Centre - - - Recommended - Recommandé - - - - dccV23::RotateWidget - - Rotation - Rotation - /display/Rotation - - - Standard - Standard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Le moniteur ne prend en charge que la mise à l'échelle de l'affichage à 100% - - - Display Scaling - Mise à l'échelle de l'affichage - - - - dccV23::SearchInput - - Search - Rechercher - - - - dccV23::SecondaryScreenDialog - - Brightness - Luminosité - - - - dccV23::SecurityLevelItem - - Weak - Faible - - - Medium - Moyen - - - Strong - Fort - - - - dccV23::SecurityQuestionsPage - - Security Questions - Questions de sécurité - - - These questions will be used to help reset your password in case you forget it. - Ces questions seront utilisées pour aider à réinitialiser votre mot de passe au cas où vous l'oublieriez. - - - Security question 1 - Question de sécurité 1 - - - Security question 2 - Question de sécurité 2 - - - Security question 3 - Question de sécurité 3 - - - Cancel - Annuler - - - Confirm - Confirmer - - - Keep the answer under 30 characters - Garder la réponse sous 30 caractères - - - Do not choose a duplicate question please - Ne pas choisir une question en double, s'il vous plaît - - - Please select a question - veuillez sélectionner une question - - - What's the name of the city where you were born? - Comment s'appelle la ville où tu es né ? - - - What's the name of the first school you attended? - Comment s'appelle la première école que tu as fréquentée ? - - - Who do you love the most in this world? - Qui aimes-tu le plus dans ce monde ? - - - What's your favorite animal? - Quel est ton animal favori ? - - - What's your favorite song? - Quelle est votre chanson préférée ? - - - What's your nickname? - Quel est votre surnom ? - - - It cannot be empty - Il ne peut pas être vide - - - - dccV23::SettingsHead - - Edit - Éditer - - - Done - Terminé - - - - dccV23::ShortCutSettingWidget - - System - Système - - - Window - Fenêtre - - - Workspace - Espace de travail - - - Assistive Tools - Outils d'assistance - - - Custom Shortcut - Raccourci personnalisé - - - Restore Defaults - Réinitialiser - - - Shortcut - Raccourci - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Veuillez réinitialiser le raccourci - - - Cancel - Annuler - - - Replace - Remplacer - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Ce raccourci est en conflit avec %1, cliquer sur Remplacer pour rendre ce raccourci effectif immédiatement - - - - dccV23::ShortcutItem - - Enter a new shortcut - Entrer un nouveau raccourci - - - - dccV23::SystemInfoModel - - available - disponible - - - - dccV23::SystemInfoModule - - About This PC - À propos de ce PC - - - Computer Name - Nom de l'ordinateur - - - systemInfo - - - - OS Name - Nom du système d'exploitation - - - Version - Version - - - Edition - Édition - - - Type - Type - - - Authorization - Autorisation - - - Processor - Processeur - - - Memory - Mémoire - - - Graphics Platform - - - - Kernel - Noyau - - - Agreements and Privacy Policy - - - - Edition License - Licence d'édition - - - End User License Agreement - Contrat de licence de l'utilisateur final - - - Privacy Policy - Politique de confidentialité - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Informations système - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Annuler - - - Add - Ajouter - - - Add System Language - Ajouter une langue au système - - - - dccV23::SystemLanguageWidget - - Edit - Éditer - - - Language List - Liste des langues - - - Add Language - - - - Done - Terminé - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Ne pas déranger - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Les notifications d'applications ne seront pas affichées sur le bureau et les sons seront réduits au silence, mais vous pouvez afficher tous les messages dans le centre de notification. - - - When the screen is locked - Lorsque l'écran est verrouillé - - - - dccV23::TimeSlotItem - - From - De - - - To - À - - - - dccV23::TouchScreenModule - - Touch Screen - Écran tactile - - - Select your touch screen when connected or set it here. - Sélectionner votre écran tactile lorsque vous êtes connecté ou régler-le ici. - - - Confirm - Confirmer - - - Cancel - Annuler - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Vitesse du pointeur - - - Slow - Lent - - - Fast - Rapide - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Rejoindre le programme d'expérience utilisateur - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Rejoindre le programme d'expérience utilisateur signifie que vous nous accordez et nous autorisez à collecter et à utiliser les informations de votre appareil, système et applications. Si vous refusez notre collecte et notre utilisation des informations susmentionnées, ne pas rejoindre le programme d'expérience utilisateur. Pour plus de détails, veuillez consulter la politique de confidentialité de Deepin (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Année - - - Month - Mois - - - Day - Jour - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - L'authentification est nécessaire pour changer de serveur NTP - - - - DefAppModule - - Default Applications - Applications par défaut - - - - DefAppPlugin - - Webpage - Page Web - - - Mail - Courrier - - - Text - Texte - - - Music - Musique - - - Video - Vidéo - - - Picture - Image - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Clause de non-responsabilité - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Avant d'utiliser la reconnaissance faciale, veuillez noter que : -1. Votre appareil peut être déverrouillé par des personnes ou des objets qui vous ressemblent ou vous ressemblent. -2. La reconnaissance faciale est moins sécurisée que les mots de passe numériques et les mots de passe mixtes. -3. Le taux de réussite du déverrouillage de votre appareil grâce à la reconnaissance faciale sera réduit dans un scénario de faible luminosité, de haute luminosité, de contre-jour, de grand angle et d'autres scénarios. -4. Veuillez ne pas donner votre appareil à d'autres au hasard, afin d'éviter une utilisation malveillante de la reconnaissance faciale. -5. En plus des scénarios ci-dessus, vous devez faire attention à d'autres situations qui peuvent affecter l'utilisation normale de la reconnaissance faciale. - -Afin de mieux utiliser la reconnaissance faciale, veuillez prêter attention aux points suivants lors de la saisie du visage données : -1. Veuillez rester dans un endroit bien éclairé, éviter la lumière directe du soleil et d'autres personnes apparaissant sur l'écran enregistré. -2. Veuillez prêter attention à l'état du visage lors de la saisie des données et ne laisser pas vos chapeaux, cheveux, lunettes de soleil, masques, maquillage épais et autres facteurs couvrir vos traits du visage. -3. Veuillez éviter d'incliner ou de baisser la tête, de fermer les yeux ou de ne montrer qu'un seul côté de votre visage, et assurez-vous que votre face avant apparaît clairement et complètement dans la boîte de dialogue. - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - "L'authentification biométrique" est une fonction d'authentification de l'identité de l'utilisateur fournie par UnionTech Software Technology Co., Ltd. Grâce à "l'authentification biométrique", les données biométriques collectées seront comparées à celles stockées dans l'appareil, et l'identité de l'utilisateur sera vérifiée sur la base de le résultat de la comparaison. - Veuillez noter que UnionTech Software ne collectera ni n'accédera à vos informations biométriques, qui seront stockées sur votre appareil local. Veuillez n'activer l'authentification biométrique que sur votre appareil personnel et utiliser vos propres informations biométriques pour les opérations connexes, et désactiver ou supprimer rapidement les informations biométriques d'autres personnes sur cet appareil, sinon vous supporterez le risque qui en découle. -UnionTech Software s'engage à rechercher et à améliorer la sécurité, la précision et la stabilité de l'authentification biométrique. Cependant, en raison de facteurs environnementaux, d'équipement, techniques et autres et de contrôle des risques, il n'y a aucune garantie que vous réussirez temporairement l'authentification biométrique. Par conséquent, veuillez ne pas considérer l'authentification biométrique comme le seul moyen de vous connecter à UnionTech OS. Si vous avez des questions ou des suggestions concernant l'utilisation de l'authentification biométrique, vous pouvez donner votre avis via "Service et support" dans le système d'exploitation UnionTech. - - - Cancel - Annuler - - - Next - Suivant - - - - DisclaimersItem - - I have read and agree to the - j'ai lu et accepté les - - - Disclaimer - Clause de non-responsabilité - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - Affichages multiples - - - Show Dock - Afficher le dock - - - Mode - Mode - - - Position - Position - - - Status - Statut - - - Show recent apps in Dock - - - - Size - Taille - - - Plugin Area - Zone de plugins - - - Select which icons appear in the Dock - Sélectionner les icônes qui apparaissent dans le dock - - - Fashion mode - Mode dock - - - Efficient mode - Mode étendu - - - Top - Haut - - - Bottom - Bas - - - Left - Gauche - - - Right - Droite - - - Location - Emplacement - - - Keep shown - Garder affiché - - - Keep hidden - Maintenir caché - - - Smart hide - Masquer intelligemment - - - Small - Petit - - - Large - Grand - - - On screen where the cursor is - Sur l'écran où se trouve le curseur - - - Only on main screen - Uniquement sur l'écran principal - - - - FaceInfoDialog - - Enroll Face - Inscrire le visage - - - Position your face inside the frame - Placer votre visage à l'intérieur du cadre - - - - FaceWidget - - Edit - Éditer - - - Manage Faces - Gérer les visages - - - You can add up to 5 faces - Vous pouvez ajouter jusqu'à 5 visages - - - Done - Terminé - - - Add Face - Ajouter un visage - - - The name already exists - Le nom existe déjà - - - Faceprint - Empreinte faciale - - - - FaceidDetailWidget - - No supported devices found - Aucun appareil pris en charge trouvé - - - - FingerDetailWidget - - No supported devices found - Aucun appareil pris en charge trouvé - - - - FingerDisclaimer - - Add Fingerprint - Ajouter une empreinte digitale - - - Cancel - Annuler - - - Next - Suivant - - - - FingerInfoWidget - - Place your finger - Placer votre doigt - - - Place your finger firmly on the sensor until you're asked to lift it - Placer votre doigt fermement sur le capteur jusqu'à ce que vous soyez invité à le soulever - - - Scan the edges of your fingerprint - Scanner les bords de votre empreinte digitale - - - Place the edges of your fingerprint on the sensor - Placer les bords de votre empreinte digitale sur le capteur - - - Lift your finger - Soulever votre doigt - - - Lift your finger and place it on the sensor again - Soulever votre doigt et placer-le à nouveau sur le capteur - - - Adjust the position to scan the edges of your fingerprint - Ajuster la position pour numériser les bords de votre empreinte digitale - - - Lift your finger and do that again - Soulever votre doigt et recommencer - - - Fingerprint added - Empreinte digitale ajoutée - - - - FingerWidget - - Edit - Éditer - - - Fingerprint Password - Mot de passe d'empreinte digitale - - - You can add up to 10 fingerprints - Vous pouvez ajouter jusqu'à 10 empreintes digitales - - - Done - Terminé - - - The name already exists - Le nom existe déjà - - - Add Fingerprint - Ajouter une empreinte digitale - - - - GeneralModule - - General - Général - - - Balanced - Équilibré - - - Balance Performance - - - - High Performance - Haute performance - - - Power Saver - Économie d'énergie - - - Power Plans - Plans d'alimentation - - - Power Saving Settings - Paramètres d'économie d'énergie - - - Auto power saving on low battery - Économie d'énergie automatique sur batterie faible - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Économie d'énergie automatique sur batterie - - - Wakeup Settings - Paramètres de réveil - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Il ne peut pas commencer ou se terminer par des tirets - - - 1~63 characters please - 1 ~ 63 caractères s'il vous plaît - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - Aucun appareil pris en charge trouvé - - - - IrisWidget - - Edit - Éditer - - - Manage Irises - Gérer les iris - - - You can add up to 5 irises - Vous pouvez ajouter jusqu'à 5 iris - - - Done - Terminé - - - Add Iris - Ajouter un iris - - - The name already exists - Le nom existe déjà - - - Iris - Iris - - - - KeyLabel - - None - Aucun - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin Community - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Périphérique d'entrée - - - Automatic Noise Suppression - Suppression automatique du bruit - - - Input Volume - Volume d'entrée - - - Input Level - Volume d'entrée - - - - PersonalizationDesktopModule - - Desktop - Bureau - - - Window - Fenêtre - - - Window Effect - Effets de fenêtre - - - Window Minimize Effect - Effet de réduction de la fenêtre - - - Transparency - Transparence - - - Rounded Corner - Coin arrondi - - - Scale - Échelle - - - Magic Lamp - Lampe magique - - - Small - Petit - - - Middle - - - - Large - Grand - - - - PersonalizationModule - - Personalization - Personnalisation - - - - PersonalizationThemeList - - Cancel - Annuler - - - Save - Sauvegarder - - - Light - Clair - - - Dark - Sombre - - - Auto - Automatique - - - Default - Par défaut - - - - PersonalizationThemeModule - - Theme - Thème - - - Appearance - Apparence - - - Accent Color - Couleur d'accentuation - - - Icon Settings - - - - Icon Theme - Thème des icônes - - - Cursor Theme - Thème du curseur - - - Text Settings - - - - Font Size - Taille de police - - - Standard Font - Police standard - - - Monospaced Font - Police à espacement fixe - - - Light - Clair - - - Auto - Automatique - - - Dark - Sombre - - - - PersonalizationThemeWidget - - Light - Clair - General - /personalization/General - - - Dark - Sombre - General - /personalization/General - - - Auto - Automatique - General - /personalization/General - - - Default - Par défaut - - - - PersonalizationWorker - - Custom - Personnalisé - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Le code PIN pour se connecter à l'appareil Bluetooth est : - - - Cancel - Annuler - - - Confirm - Confirmer - - - - PowerModule - - Power - Alimentation - - - Battery low, please plug in - Batterie faible, veuillez brancher votre appareil - - - Battery critically low - Niveau de batterie critique - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Photo - - - Microphone - Micro - - - User Folders - - - - Calendar - Calendrier - - - Screen Capture - - - - - QObject - - Control Center - Centre de contrôle - - - , - - - - Error occurred when reading the configuration files of password rules! - Une erreur s'est produite lors de la lecture des fichiers de configuration des règles de mot de passe ! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Activé - - - View - Affichage - - - To be activated - À activer - - - Activate - Activer - - - Expired - Expiré - - - In trial period - En période d'essai - - - Trial expired - Essai expiré - - - Touch Screen Settings - Paramètres de l'écran tactile - - - The settings of touch screen changed - Les paramètres de l'écran tactile ont changé - - - Checking system versions, please wait... - Vérification des versions du système, veuillez patienter... - - - Leave - Quitter - - - Cancel - Annuler - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Votre système n'est pas autorisé, veuillez d'abord l'activer - - - Update successful - Mise à jour réussie - - - Failed to update - Échec de la mise à jour - - - - SearchInput - - Search - Rechercher - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Effets sonores - - - - SoundModel - - Boot up - Démarrer - - - Shut down - Arrêter - - - Log out - Se déconnecter - - - Wake up - Réveille - - - Volume +/- - Volume +/- - - - Notification - Notification - - - Low battery - Batterie faible - - - Send icon in Launcher to Desktop - Envoyer l'icône du lanceur sur le bureau - - - Empty Trash - Vider la corbeille - - - Plug in - Brancher - - - Plug out - Débrancher - - - Removable device connected - Appareil amovible connecté - - - Removable device removed - Périphérique amovible supprimé - - - Error - Erreur - - - - SoundModule - - Sound - Son - - - - SoundPlugin - - Output - Sortie - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Contribution - - - Sound Effects - Effets sonores - - - Devices - Périphériques - - - Input Devices - Périphériques d'entrée - - - Output Devices - Périphériques de sortie - - - - SpeakerPage - - Output Device - Périphérique de sortie - - - Mode - Mode - - - Output Volume - Volume de sortie - - - Volume Boost - Augmentation du volume - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Balance gauche/droite - - - Left - Gauche - - - Right - Droite - - - - TimeSettingModule - - Time Settings - Paramètres de temps - - - Time - Temps - - - Auto Sync - Synchronisation automatique - - - Reset - Réinitialiser - - - Save - Sauvegarder - - - Server - Serveur - - - Address - Adresse - - - Required - Obligatoire - - - Customize - Personnaliser - - - Year - Année - - - Month - Mois - - - Day - Jour - - - - TimeZoneChooser - - Cancel - Annuler - - - Confirm - Confirmer - - - Add Timezone - Ajouter un fuseau horaire - - - Add - Ajouter - - - Change Timezone - Modifier le fuseau horaire - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Rétablir - - - Save - Sauvegarder - - - - TimezoneItem - - Tomorrow - Demain - - - Yesterday - Hier - - - Today - Aujourd'hui - - - %1 hours earlier than local - %1 heures plus tôt que l'heure local - - - %1 hours later than local - %1 heures plus tard que l'heure local - - - - TimezoneModule - - Timezone List - Liste des fuseaux horaires - - - System Timezone - Fuseau horaire du système - - - Add Timezone - Ajouter un fuseau horaire - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Le compte d'utilisateur n'est pas lié à l'identifiant de l'Union - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Pour réinitialiser les mots de passe, vous devez d'abord authentifier votre identifiant syndical. Cliquer sur "Aller au lien" pour terminer les paramètres. - - - Cancel - Annuler - - - Go to Link - Aller au lien - - - - UnknownUpdateItem - - Release date: - Date de sortie : - - - - UpdateCtrlWidget - - Check Again - Revérifier - - - Update failed: insufficient disk space - Échec de la mise à jour : espace disque insuffisant - - - Dependency error, failed to detect the updates - Erreur de dépendance, échec de la détection des mises à jour - - - Restart the computer to use the system and the applications properly - Redémarrez l'ordinateur afin de pouvoir utiliser correctement le système et les applications - - - Network disconnected, please retry after connected - Réseau déconnecté, réessayer après vous être reconnecté - - - Your system is not authorized, please activate first - Votre système n'est pas autorisé, veuillez d'abord l'activer - - - This update may take a long time, please do not shut down or reboot during the process - Cette mise à jour peut prendre du temps, merci de ne pas éteindre ou redémarrer l'ordinateur pendant le processus. - - - Updates Available - Mises à jour disponibles - - - Current Edition - Édition actuelle - - - Updating... - Mise à jour... - - - Update All - Tout mettre à jour - - - Last checking time: - Dernière vérification : - - - Your system is up to date - Votre système est à jour - - - Check for Updates - Vérifier les mises à jour - - - Checking for updates, please wait... - Vérification des mises à jour, veuillez patienter... - - - The newest system installed, restart to take effect - Le système le plus récent installé, redémarrer pour que cela prenne effet - - - %1% downloaded (Click to pause) - %1% téléchargés (Cliquer pour suspendre) - - - %1% downloaded (Click to continue) - %1% téléchargé (Cliquer pour continuer) - - - Your battery is lower than 50%, please plug in to continue - Votre batterie est inférieure à 50%, veuillez la brancher pour continuer - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Veuillez vous assurer d'une puissance suffisante pour redémarrer et ne pas éteindre ou ne débrancher votre machine - - - Size - Taille - - - - UpdateModule - - Updates - Mises à jour - - - - UpdatePlugin - - Check for Updates - Vérifier les mises à jour - - - - UpdateSettingItem - - Insufficient disk space - Espace disque insuffisant - - - Update failed: insufficient disk space - Échec de la mise à jour : espace disque insuffisant - - - Update failed - Mise à jour a échoué - - - Network error - Erreur réseau - - - Network error, please check and try again - Erreur réseau, veuillez vérifier et réessayer - - - Packages error - Erreur de colis - - - Packages error, please try again - Erreur de paquets, veuillez réessayer - - - Dependency error - Erreur de dépendance - - - Unmet dependencies - Dépendances non satisfaites - - - The newest system installed, restart to take effect - Le système le plus récent installé, redémarrer pour que cela prenne effet - - - Waiting - En attente - - - Backing up - Sauvegarde - - - System backup failed - La sauvegarde du système a échoué - - - Release date: - Date de sortie : - - - Server - Serveur - - - Desktop - Bureau - - - Version - Version - - - - UpdateSettingsModule - - Update Settings - Mettre à jour les paramètres - - - System - Système - - - Security Updates Only - Mises à jour de sécurité uniquement - - - Switch it on to only update security vulnerabilities and compatibility issues - Activer-le pour mettre à jour uniquement les vulnérabilités de sécurité et les problèmes de compatibilité - - - Third-party Repositories - Référentiels tiers - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - Autres réglages - - - Auto Check for Updates - Vérification automatique des mises à jour - - - Auto Download Updates - Téléchargement des mises à jour automatique - - - Switch it on to automatically download the updates in wireless or wired network - Activer-le pour télécharger automatiquement les mises à jour en réseau sans fil ou câblé - - - Auto Install Updates - Mises à jour d'installation automatique - - - Updates Notification - Notification des mises à jour - - - Clear Package Cache - Effacer le cache du paquet - - - Updates from Internal Testing Sources - Mises à jour des sources de test internes - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Mises à jour du système - - - Security Updates - Mises à jour de sécurité - - - Install updates automatically when the download is complete - Installer les mises à jour automatiquement lorsque le téléchargement est terminé - - - Install "%1" automatically when the download is complete - Installer "%1" automatiquement une fois le téléchargement terminé - - - - UpdateWidget - - Current Edition - Édition actuelle - - - - UpdateWorker - - System Updates - Mises à jour du système - - - Fixed some known bugs and security vulnerabilities - Correction de quelques bugs connus et vulnérabilités de sécurité - - - Security Updates - Mises à jour de sécurité - - - Third-party Repositories - Référentiels tiers - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Sur batterie - - - Never - Jamais - - - Shut down - Arrêter - - - Suspend - Suspendre - - - Hibernate - Mise en veille prolongée - - - Turn off the monitor - Éteindre le moniteur - - - Do nothing - Ne rien faire - - - 1 Minute - 1 minute - - - %1 Minutes - %1 minutes - - - 1 Hour - 1 Heure - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Verrouiller l'écran après - - - Computer suspends after - - - - Computer will suspend after - L'ordinateur s'arrêtera après - - - When the lid is closed - Quand l'écran est fermé - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Niveau de batterie bas - - - Auto suspend battery level - Mise en veille automatique du niveau de la batterie - - - Battery Management - - - - Display remaining using and charging time - Afficher l'utilisation restante et le temps de charge - - - Maximum capacity - Capacité maximale - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Branché - - - 1 Minute - 1 minute - - - %1 Minutes - %1 minutes - - - 1 Hour - 1 Heure - - - Never - Jamais - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Verrouiller l'écran après - - - Computer suspends after - - - - When the lid is closed - Quand l'écran est fermé - - - When the power button is pressed - - - - Shut down - Arrêter - - - Suspend - Suspendre - - - Hibernate - Mise en veille prolongée - - - Turn off the monitor - Éteindre le moniteur - - - Show the shutdown Interface - - - - Do nothing - Ne rien faire - - - - WacomModule - - Drawing Tablet - Tablette de dessin - - - Mode - Mode - - - Pressure Sensitivity - Sensibilité à la pression - - - Pen - Stylo - - - Mouse - Souris - - - Light - Clair - - - Heavy - Forte - - - - main - - Control Center provides the options for system settings. - Le centre de contrôle fournit les options pour les paramètres système. - - - - updateControlPanel - - Downloading - Téléchargement - - - Waiting - Attendre - - - Installing - Installation - - - Backing up - Sauvegarde - - - Download and install - Télécharger et installer - - - Learn more - Apprendre encore plus - - - diff --git a/dcc-old/translations/dde-control-center_gl.ts b/dcc-old/translations/dde-control-center_gl.ts deleted file mode 100644 index 46b8ab9d85..0000000000 --- a/dcc-old/translations/dde-control-center_gl.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_gl_ES.ts b/dcc-old/translations/dde-control-center_gl_ES.ts deleted file mode 100644 index 0773d75709..0000000000 --- a/dcc-old/translations/dde-control-center_gl_ES.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Activar o bluetooth para atopar dispositivos cercanos (altofalantes, teclados, rato) - - - My Devices - Os meus dispositivos - - - Other Devices - Outros dispositivos - - - Show Bluetooth devices without names - - - - Connect - Conectar - - - Disconnect - Desconectar - - - Rename - Renomear - - - Send Files - Enviar ficheiros - - - Ignore this device - Ignorar este dispositivo - - - Connecting - Conectando - - - Disconnecting - Desconectando - - - - AddButtonWidget - - Add Application - Engadir aplicativo - - - Open Desktop file - Abrir ficheiro de escritorio - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Cancelar - - - Next - Seguinte - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Feito - - - Failed to enroll your face - - - - Try Again - - - - Close - Pechar - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Cancelar - - - Next - Seguinte - - - Iris enrolled - - - - Done - Feito - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - Non máis de 15 caracteres - - - Use letters, numbers and underscores only, and no more than 15 characters - Use só letras, números e guións baixos e non máis de 15 caracteres - - - Use letters, numbers and underscores only - Use só letras, números e guións baixos - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Pegada dixital - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Conectado - - - Not connected - Sen conexión - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Pegada dixital1 - - - Fingerprint2 - Pegada dixital2 - - - Fingerprint3 - Pegada dixital3 - - - Fingerprint4 - Pegada dixital4 - - - Fingerprint5 - Pegada dixital5 - - - Fingerprint6 - Pegada dixital6 - - - Fingerprint7 - Pegada dixital7 - - - Fingerprint8 - Pegada dixital8 - - - Fingerprint9 - Pegada dixital9 - - - Fingerprint10 - Pegada dixital10 - - - Scan failed - Fallou a dixitalización - - - The fingerprint already exists - A pegada dixital xa exite - - - Please scan other fingers - Escanea outras pegadas dixitais - - - Unknown error - Erro descoñecido - - - Scan suspended - Suspendeuse o escáner - - - Cannot recognize - Non se pode recoñecer - - - Moved too fast - Movido demasiado rápido - - - Finger moved too fast, please do not lift until prompted - O dedo moveuse demasiado rápido, por favor non o levante ata que se lle solicite - - - Unclear fingerprint - Pegada dixital sucia - - - Clean your finger or adjust the finger position, and try again - Limpa o dedo ou axusta a posición do dedo e inténteo de novo - - - Already scanned - Xa escaneado - - - Adjust the finger position to scan your fingerprint fully - Axuste a posición do dedo para dixitalizar a súa pegada dixital - - - Finger moved too fast. Please do not lift until prompted - O dedo moveuse demasiado rápido. Por favor, non o levante ata que o solicite - - - Lift your finger and place it on the sensor again - Levante o dedo e colóquelo de novo no sensor - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Cancelar - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Cancelar - - - Confirm - button - Confirmar - - - - dccV23::AccountSpinBox - - Always - Sempre - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Nome de usuario - - - Change Password - Cambiar contrasinal - - - Delete User - - - - User Type - - - - Auto Login - Inicio automático - - - Login Without Password - Iniciar sesión sen contrasinal - - - Validity Days - Días válidos - - - Group - Grupo - - - The full name is too long - O nome completo é longo de máis - - - Standard User - Usuario estándar - - - Administrator - Administrador - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Nome completo - - - Go to Settings - Ir aos Axustes - - - Cancel - Cancelar - - - OK - Aceptar - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - O seu acceso eliminouse do servidor de dominio correctamente - - - Your host joins the domain server successfully - O teu servidor únese correctamente ao servidor de dominio - - - Your host failed to leave the domain server - O seu servidor non puido saír do servidor de dominio - - - Your host failed to join the domain server - O seu servidor non se puido unir do servidor de dominio - - - AD domain settings - Configuración do dominio AD - - - Password not match - O contrasinal non coincide - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Amosar notificacións de% 1 no escritorio e no centro de notificacións. - - - Play a sound - Reproducir un son - - - Show messages on lockscreen - Ensinar mensaxes cando a pantalla estea bloqueada - - - Show in notification center - Ensinar no centro de notificacións - - - Show message preview - Ensinar unha previsualización das mensaxes - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Cancelar - - - Save - Gardar - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Imaxes - - - - dccV23::BootWidget - - Updating... - Actualizando... - - - Startup Delay - Espera para iniciar - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Prema na opción no menú de arranque para definilo como o primeiro arranque e arrastre e solte unha imaxe para cambiar o fondo - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Cambia o tema para velo no menú de arranque - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Cambiar contrasinal - - - Boot Menu - Menú de arranque - - - Change GRUB password - - - - Username: - Nome de usuario: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Requirido - - - Cancel - button - Cancelar - - - Confirm - button - Confirmar - - - Password cannot be empty - O contrasinal non pode estar vacío - - - Passwords do not match - Os contrasinais non coinciden - - - - dccV23::BrightnessWidget - - Brightness - Brillo - - - Color Temperature - Temperatura da cor - - - Auto Brightness - Brillo automático - - - Night Shift - Quenda de noite - - - The screen hue will be auto adjusted according to your location - A tonalidade da pantalla axustarase automaticamente segundo a súa situación - - - Change Color Temperature - Cambiar a temperatura da cor - - - Cool - Frío - - - Warm - Calor - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Os meus dispositivos - - - Other Devices - Outros dispositivos - - - - dccV23::CommonInfoPlugin - - General Settings - Axustes xerais - - - Boot Menu - Menú de arranque - - - Developer Mode - Modo desenvolvedor - - - User Experience Program - Programas para usuarios experimentados - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Aceptar e unirse ao programa de experiencia de usuario - - - The Disclaimer of Developer Mode - A renuncia do modo de desenvolvedor - - - Agree and Request Root Access - De acordo e solicitar acceso raíz - - - Failed to get root access - Erro ao acceder ao root - - - Please sign in to your Union ID first - Inicia sesión primeiro no seu ID de Unión - - - Cannot read your PC information - Non se pode ler a túa información do PC - - - No network connection - Non se pode conectar á rede - - - Certificate loading failed, unable to get root access - Erro ao cargar certificado, incapaz de acceder ao root - - - Signature verification failed, unable to get root access - Fallou a verificación de sinatura e non puido obter acceso root - - - - dccV23::CreateAccountPage - - Group - Grupo - - - Cancel - Cancelar - - - Create - Crear - - - New User - - - - User Type - - - - Username - Nome de usuario - - - Full Name - Nome completo - - - Password - Contrasinal - - - Repeat Password - Repetir contrasinal - - - Password Hint - - - - The full name is too long - O nome completo é longo de máis - - - Passwords do not match - Os contrasinais non coinciden - - - Standard User - Usuario estándar - - - Administrator - Administrador - - - Customized - Personalizado - - - Required - Requirido - - - optional - opcional - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - O nome de usuario ten de ter entre 3 e 32 caracteres - - - The first character must be a letter or number - O primeiro caracter debe ser unha letra ou número - - - Your username should not only have numbers - O nome de usuario non só debería ter números - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Imaxes - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Engadir atallo personalizado - - - Name - Nome - - - Required - Requirido - - - Command - Comando - - - Cancel - Cancelar - - - Add - Engadir - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Este atallo entra en conflito con %1, preme en Engadir para facelo efectivo inmediatamente - - - - dccV23::CustomEdit - - Required - Requirido - - - Cancel - Cancelar - - - Save - Gardar - - - Shortcut - Atallo - - - Name - Nome - - - Command - Comando - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Este atallo entra en conflito con %1, preme en Engadir para facelo efectivo inmediatamente - - - - dccV23::CustomItem - - Shortcut - Atallo - - - Please enter a shortcut - Por favor insire un atallo - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Solicitar acceso raíz - - - Online - En liña - - - Offline - Fóra de liña - - - Please sign in to your Union ID first and continue - Inicia sesión primeiro no seu ID de Unión e continúa - - - Next - Seguinte - - - Export PC Info - Exportar a información do PC - - - Import Certificate - Importar certificado - - - 1. Export your PC information - 1. Exporta a información do computador - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Vaia a https://www.chinauos.com/developMode para descargar un certificado sen conexión - - - 3. Import the certificate - 3. Importar o certificado - - - - dccV23::DeveloperModeWidget - - Request Root Access - Solicitar acceso raíz - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - O modo de desenvolvedor permítelle obter privilexios raíz, instalar e executar aplicativos non asinadas que non figuran na tenda de aplicativos, pero tamén se pode danar a integridade do seu sistema. Utilíceo atentamente. - - - The feature is not available at present, please activate your system first - A función non está dispoñible neste momento. Por favor, active o sistema primeiro - - - Failed to get root access - Erro ao acceder ao root - - - Please sign in to your Union ID first - Inicia sesión primeiro no seu ID de Unión - - - Cannot read your PC information - Non se pode ler a túa información do PC - - - No network connection - Non se pode conectar á rede - - - Certificate loading failed, unable to get root access - Erro ao cargar certificado, incapaz de acceder ao root - - - Signature verification failed, unable to get root access - Fallou a verificación de sinatura e non puido obter acceso root - - - To make some features effective, a restart is required. Restart now? - Para que algunhas funcións sexan efectivas, é necesario reiniciar. Reiniciar agora? - - - Cancel - Cancelar - - - Restart Now - Reiniciar agora - - - Root Access Allowed - Acceso raíz permitido - - - - dccV23::DisplayPlugin - - Display - Pantalla - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Proba do duplo clic - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Repetir atraso - - - Short - Longo - - - Long - Curto - - - Repeat Rate - Taxa de repetición - - - Slow - Lento - - - Fast - Rápido - - - Test here - Probe aquí - - - Numeric Keypad - Teclado numérico - - - Caps Lock Prompt - Indicador do Bloq Maiús - - - - dccV23::GeneralSettingWidget - - Left Hand - Xergo/a - - - Disable touchpad while typing - Desactive o touchpad mentres escribe - - - Scrolling Speed - Velocidade de desprazamento - - - Double-click Speed - Velocidade do duplo clic - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Disposición do teclado - - - Edit - Editar - - - Add Keyboard Layout - Engadir disposición do teclado - - - Done - Feito - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancelar - - - Add - Engadir - - - Add Keyboard Layout - Engadir disposición do teclado - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Teclado e Idioma - - - Keyboard - Teclado - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Disposición do teclado - - - Language - Idioma - - - Shortcuts - Atallos - - - - dccV23::MainWindow - - Help - Axuda - - - - dccV23::ModifyPasswdPage - - Change Password - Cambiar contrasinal - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Contrasinal actual - - - Forgot password? - - - - New Password - Novo contrasinal - - - Repeat Password - Repetir contrasinal - - - Password Hint - - - - Cancel - Cancelar - - - Save - Gardar - - - Passwords do not match - Os contrasinais non coinciden - - - Required - Requirido - - - Optional - Opcional - - - Password cannot be empty - O contrasinal non pode estar vacío - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Contrasinal non válido - - - New password should differ from the current one - O novo contrasinal ten que ser diferente do actual - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Rato - - - General - Xeral - - - Touchpad - Área táctil - - - TrackPoint - Trackpoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Velociade do punteiro - - - Mouse Acceleration - Aceleración do rato - - - Disable touchpad when a mouse is connected - Desactive o touchpad cando estea conectado un rato - - - Natural Scrolling - Desprazamento natural - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::MultiScreenWidget - - Multiple Displays - Pantallas múltiple - /display/Multiple Displays - - - Mode - Modo - /display/Mode - - - Main Screen - Pantalla principal - /display/Main Scree - - - Duplicate - Duplicar - - - Extend - Extender - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notificación - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Detección de palmas - - - Minimum Contact Surface - Superficie de contacto mínima - - - Minimum Pressure Value - Valor de presión mínimo - - - Disable the option if touchpad doesn't work after enabled - Desactiva a opción se o touchpad non funciona despois de estar activado - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Política de privacidade - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - O contrasinal non pode estar vacío - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - O contrasinal non debe ser superior a% 1 caracteres - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - O contrasinal non debe conter máis de 4 caracteres palíndromos - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - Recargar valoración - - - Hz - Hz - - - Recommended - Recomendado - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Está seguro que quere eliminar esta conta? - - - Delete account directory - Eliminar o cartafol da conta - - - Cancel - Cancelar - - - Delete - Eliminar - - - - dccV23::ResolutionWidget - - Resolution - Resolución - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Predefinido - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Recomendado - - - - dccV23::RotateWidget - - Rotation - Rotación - /display/Rotation - - - Standard - Estándar - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - O monitor só admite o 100% de escala de visualización - - - Display Scaling - Escala de visualización - - - - dccV23::SearchInput - - Search - Procurar - - - - dccV23::SecondaryScreenDialog - - Brightness - Brillo - - - - dccV23::SecurityLevelItem - - Weak - Débil - - - Medium - Medio - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Cancelar - - - Confirm - Confirmar - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Editar - - - Done - Feito - - - - dccV23::ShortCutSettingWidget - - System - Sistema - - - Window - Xanela - - - Workspace - Área de traballo - - - Assistive Tools - Ferramentas de asistencia - - - Custom Shortcut - Atallo personalizado - - - Restore Defaults - Restablecer o predefinido - - - Shortcut - Atallo - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Por favor, volve crear o atallo - - - Cancel - Cancelar - - - Replace - Substituír - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Este atallo entra en conflito con %1, preme en Substituír para facelo efectivo inmediatamente - - - - dccV23::ShortcutItem - - Enter a new shortcut - Insira un novo atallo - - - - dccV23::SystemInfoModel - - available - dispoñible - - - - dccV23::SystemInfoModule - - About This PC - Sobre este PC - - - Computer Name - Nome do computador - - - systemInfo - - - - OS Name - - - - Version - Versión - - - Edition - - - - Type - Tipo - - - Authorization - Autorización - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Licenza da edición - - - End User License Agreement - Acordo de licenza de usuario final - - - Privacy Policy - Política de privacidade - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Información do sistema - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancelar - - - Add - Engadir - - - Add System Language - Engadir lingua ao sistema - - - - dccV23::SystemLanguageWidget - - Edit - Editar - - - Language List - Lista de linguas - - - Add Language - - - - Done - Feito - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Non moleste - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - As notificacións do aplicativo non se amosarán no escritorio e os sons calarán, pero podes ver todas as mensaxes no centro de notificacións. - - - When the screen is locked - Cando a pantalla se bloquea - - - - dccV23::TimeSlotItem - - From - Desde - - - To - A - - - - dccV23::TouchScreenModule - - Touch Screen - Tocar pantalla - - - Select your touch screen when connected or set it here. - Seleccione a pantalla táctil cando estea conectado ou configúraa aquí. - - - Confirm - Confirmar - - - Cancel - Cancelar - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Velociade do punteiro - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Únete ao programa de experiencia de usuario - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Ano - - - Month - Mes - - - Day - Día - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - A autentificación é necesaria para cambiar o servidor NTP - - - - DefAppModule - - Default Applications - Aplicacións predefinidas - - - - DefAppPlugin - - Webpage - Páxina web - - - Mail - Correo - - - Text - Texto - - - Music - Música - - - Video - Vídeo - - - Picture - Fotos - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Cancelar - - - Next - Seguinte - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Doca - - - Multiple Displays - Pantallas múltiple - - - Show Dock - - - - Mode - Modo - - - Position - Posición - - - Status - Estado - - - Show recent apps in Dock - - - - Size - Tamaño - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Modo moderno - - - Efficient mode - Modo eficiente - - - Top - Arriba - - - Bottom - Abaixo - - - Left - Esquerda - - - Right - Dereita - - - Location - Localización - - - Keep shown - - - - Keep hidden - Manter oculto - - - Smart hide - Ocultar automaticamente - - - Small - Pequeno - - - Large - Grande - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Editar - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Feito - - - Add Face - - - - The name already exists - O nome xa existe - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Engadir pegada dixital - - - Cancel - Cancelar - - - Next - Seguinte - - - - FingerInfoWidget - - Place your finger - Coloque o seu dedo - - - Place your finger firmly on the sensor until you're asked to lift it - Coloque o dedo firmemente no sensor ata que che soliciten levantalo - - - Scan the edges of your fingerprint - Escanee os bordos da súa pegada dixital - - - Place the edges of your fingerprint on the sensor - Coloque os bordos da súa pegada no sensor - - - Lift your finger - Levante o dedo - - - Lift your finger and place it on the sensor again - Levante o dedo e colóquelo de novo no sensor - - - Adjust the position to scan the edges of your fingerprint - Axuste a posición para dixitalizar os bordos da súa pegada dixital - - - Lift your finger and do that again - Levante o dedo e volva a facelo - - - Fingerprint added - Pegadas dixitais engadidas - - - - FingerWidget - - Edit - Editar - - - Fingerprint Password - Pegada dixital como contrasinal - - - You can add up to 10 fingerprints - Podes engadir ata 10 pegadas dixitais - - - Done - Feito - - - The name already exists - O nome xa existe - - - Add Fingerprint - Engadir pegada dixital - - - - GeneralModule - - General - Xeral - - - Balanced - Equilibrado - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - Configuración de aforro de enerxía - - - Auto power saving on low battery - Aforro automático de enerxía na batería baixa - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Aforro automático da enerxía na batería - - - Wakeup Settings - Configuración de despertador - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Editar - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Feito - - - Add Iris - - - - The name already exists - O nome xa existe - - - Iris - - - - - KeyLabel - - None - Ningún - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - Dispositivo de entrada - - - Automatic Noise Suppression - Supresión automática do ruído - - - Input Volume - Volume de entrada - - - Input Level - Insira nivel - - - - PersonalizationDesktopModule - - Desktop - Escritorio - - - Window - Xanela - - - Window Effect - Efecto xanela - - - Window Minimize Effect - Minimizar o efecto da xanela - - - Transparency - Transparencia - - - Rounded Corner - - - - Scale - Escala - - - Magic Lamp - Lámpada máxica - - - Small - Pequeno - - - Middle - - - - Large - Grande - - - - PersonalizationModule - - Personalization - Personalización - - - - PersonalizationThemeList - - Cancel - Cancelar - - - Save - Gardar - - - Light - Luz - - - Dark - Escuro - - - Auto - Auto. - - - Default - Predefinido - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - Cor de acento - - - Icon Settings - - - - Icon Theme - Temas de iconas - - - Cursor Theme - Temas para o cursor - - - Text Settings - - - - Font Size - Tamaño da fonte - - - Standard Font - Fonte Estándar - - - Monospaced Font - Fonte Monospaced - - - Light - Luz - - - Auto - Auto. - - - Dark - Escuro - - - - PersonalizationThemeWidget - - Light - Luz - General - /personalization/General - - - Dark - Escuro - General - /personalization/General - - - Auto - Auto. - General - /personalization/General - - - Default - Predefinido - - - - PersonalizationWorker - - Custom - Personalizado - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - O PIN para conectar co dispositivo Bluetooth é: - - - Cancel - Cancelar - - - Confirm - Confirmar - - - - PowerModule - - Power - Enerxía - - - Battery low, please plug in - Batería baixa, conécteo - - - Battery critically low - Batería moi baixa - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Cámara - - - Microphone - Micrófono - - - User Folders - - - - Calendar - Calendario - - - Screen Capture - - - - - QObject - - Control Center - Centro de Control - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Activado - - - View - Ver - - - To be activated - Estar activado - - - Activate - Activar - - - Expired - Caducado - - - In trial period - En período de proba - - - Trial expired - O xuízo expirou - - - Touch Screen Settings - Configuración da pantalla táctil - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Cancelar - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - O teu sistema non está autorizado. Por favor, actíveo primeiro - - - Update successful - Actualizouse correctamente - - - Failed to update - Non foi posible actualizar - - - - SearchInput - - Search - Procurar - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Efectos de son - - - - SoundModel - - Boot up - Acender - - - Shut down - Apagar - - - Log out - Pechar sesión - - - Wake up - Activar - - - Volume +/- - Volume +/- - - - Notification - Notificación - - - Low battery - Batería baixa - - - Send icon in Launcher to Desktop - Enviar a icona en Launcher ao escritorio - - - Empty Trash - Baleirar o Lixo - - - Plug in - Enchufar - - - Plug out - Desenchufar - - - Removable device connected - Dispositivo extraíble conectado - - - Removable device removed - Eliminouse o dispositivo extraíble - - - Error - Erro - - - - SoundModule - - Sound - Son - - - - SoundPlugin - - Output - Saída - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Entrada - - - Sound Effects - Efectos de son - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - Dispositivo de saída - - - Mode - Modo - - - Output Volume - Volume de saída - - - Volume Boost - Aumento do volume - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Equilibrio esquerda/dereita - - - Left - Esquerda - - - Right - Dereita - - - - TimeSettingModule - - Time Settings - Axustes da hora - - - Time - - - - Auto Sync - Sincronización automática - - - Reset - Restabelecer - - - Save - Gardar - - - Server - Servidor - - - Address - Enderezo - - - Required - Requirido - - - Customize - Personalización - - - Year - Ano - - - Month - Mes - - - Day - Día - - - - TimeZoneChooser - - Cancel - Cancelar - - - Confirm - Confirmar - - - Add Timezone - Engadir fuso horario - - - Add - Engadir - - - Change Timezone - Mudar o fuso horario - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Reverter - - - Save - Gardar - - - - TimezoneItem - - Tomorrow - Mañá - - - Yesterday - Onte - - - Today - Hoxe - - - %1 hours earlier than local - %1 horas antes da local - - - %1 hours later than local - % 1 horas máis tarde que o local - - - - TimezoneModule - - Timezone List - Listaxe de fusos horarios - - - System Timezone - Fuso horario do sistema - - - Add Timezone - Engadir fuso horario - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Cancelar - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - Comprobar de novo - - - Update failed: insufficient disk space - Fallou a actualización: espazo de disco insuficiente - - - Dependency error, failed to detect the updates - Erro de dependencia non puido detectar as actualizacións - - - Restart the computer to use the system and the applications properly - Reinicie o computador para usar o sistema e os aplicativos correctamente - - - Network disconnected, please retry after connected - Rede desconectada, inténtao de novo despois de conectarte - - - Your system is not authorized, please activate first - O teu sistema non está autorizado. Por favor, actíveo primeiro - - - This update may take a long time, please do not shut down or reboot during the process - Esta actualización pode levar moito tempo. Por favor, non apague nin reinicie durante o proceso - - - Updates Available - - - - Current Edition - Edición actual - - - Updating... - Actualizando... - - - Update All - - - - Last checking time: - Última hora de comprobación: - - - Your system is up to date - O sistema está actualizado - - - Check for Updates - Comprobe se hai actualizacións - - - Checking for updates, please wait... - Buscando actualizacións, por favor agarda... - - - The newest system installed, restart to take effect - Instalouse a nova edición do sistema, reinicie para que teña efecto - - - %1% downloaded (Click to pause) - %1% descargado (Clic para pausar) - - - %1% downloaded (Click to continue) - % 1% descargado (Prema para continuar) - - - Your battery is lower than 50%, please plug in to continue - A batería está a menos do 50%, por favor conecta á corrente para continuar - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Por favor, asegúrate de ter batería abondo para reiniciar, e non apagues ou desconectes o computador - - - Size - Tamaño - - - - UpdateModule - - Updates - Actualizacións - - - - UpdatePlugin - - Check for Updates - Comprobe se hai actualizacións - - - - UpdateSettingItem - - Insufficient disk space - Espazo insuficiente do disco - - - Update failed: insufficient disk space - Fallou a actualización: espazo de disco insuficiente - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Instalouse a nova edición do sistema, reinicie para que teña efecto - - - Waiting - Agardando - - - Backing up - - - - System backup failed - Erro ao facer unha copia de seguranza do sistema - - - Release date: - - - - Server - Servidor - - - Desktop - Escritorio - - - Version - Versión - - - - UpdateSettingsModule - - Update Settings - Actualizar axustes - - - System - Sistema - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - Descargar automaticamente actualizacións - - - Switch it on to automatically download the updates in wireless or wired network - Acenda para descargar automaticamente as actualizacións en rede sen fíos ou por cable - - - Auto Install Updates - - - - Updates Notification - Notificacion das actualizacións - - - Clear Package Cache - Borrar caché de paquetes - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Edición actual - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Batería acendida - - - Never - Nunca - - - Shut down - Apagar - - - Suspend - Suspender - - - Hibernate - Hibernar - - - Turn off the monitor - Apagar o monitor - - - Do nothing - Non faga nada - - - 1 Minute - 1 minuto - - - %1 Minutes - %1 minutos - - - 1 Hour - 1 hora - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Bloquear a pantalla despois - - - Computer suspends after - - - - Computer will suspend after - O computador pasará a suspensión despois de - - - When the lid is closed - Cando a tapa está pechada - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Nivel baixo da batería - - - Auto suspend battery level - Suspensión automática do nivel da batería - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - Capacidade máxima - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Enchufado - - - 1 Minute - 1 minuto - - - %1 Minutes - %1 minutos - - - 1 Hour - 1 hora - - - Never - Nunca - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Bloquear a pantalla despois - - - Computer suspends after - - - - When the lid is closed - Cando a tapa está pechada - - - When the power button is pressed - - - - Shut down - Apagar - - - Suspend - Suspender - - - Hibernate - Hibernar - - - Turn off the monitor - Apagar o monitor - - - Show the shutdown Interface - - - - Do nothing - Non faga nada - - - - WacomModule - - Drawing Tablet - Tableta de debuxo - - - Mode - Modo - - - Pressure Sensitivity - Sensibilidade á presión - - - Pen - Débil - - - Mouse - Rato - - - Light - Luz - - - Heavy - Pesado - - - - main - - Control Center provides the options for system settings. - O Centro de control ofrece as opcións para a configuración do sistema. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_he.ts b/dcc-old/translations/dde-control-center_he.ts deleted file mode 100644 index 80ca5f3d3e..0000000000 --- a/dcc-old/translations/dde-control-center_he.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - התחבר - - - Disconnect - ניתוק - - - Rename - שינוי שם - - - Send Files - - - - Ignore this device - - - - Connecting - מתחבר - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - ביטול - - - Next - הבא - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - בוצע - - - Failed to enroll your face - - - - Try Again - - - - Close - סגירה - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - ביטול - - - Next - הבא - - - Iris enrolled - - - - Done - בוצע - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - חיבור פעיל - - - Not connected - - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - ביטול - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - ביטול - - - Confirm - button - אימות - - - - dccV23::AccountSpinBox - - Always - תמיד - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - שם משתמש - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - מנהל - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - ביטול - - - OK - אישור - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - ביטול - - - Save - שמור - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - מתבצע עדכון… - - - Startup Delay - - - - Theme - עיצוב - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - תפריט אתחול - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - ביטול - - - Confirm - button - אימות - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - בהירות - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - תפריט אתחול - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - ביטול - - - Create - - - - New User - - - - User Type - - - - Username - שם משתמש - - - Full Name - - - - Password - ססמה - - - Repeat Password - הססמה שוב - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - מנהל - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - שם - - - Required - - - - Command - פקודה - - - Cancel - ביטול - - - Add - הוספה - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - ביטול - - - Save - שמור - - - Shortcut - - - - Name - שם - - - Command - פקודה - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - הבא - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - ביטול - - - Restart Now - אתחל עכשיו - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - תצוגה - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - השהייה לפני חזרה - - - Short - - - - Long - - - - Repeat Rate - קצב חזרה - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - יד שמאל - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - מהירות לחיצה כפולה - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - פריסת מקלדת - - - Edit - ערוך - - - Add Keyboard Layout - הוספת פריסת מקלדת - - - Done - בוצע - - - - dccV23::KeyboardLayoutDialog - - Cancel - ביטול - - - Add - הוספה - - - Add Keyboard Layout - הוספת פריסת מקלדת - - - - dccV23::KeyboardPlugin - - Keyboard and Language - מקלדת ושפה - - - Keyboard - מקלדת - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - פריסת מקלדת - - - Language - שפה - - - Shortcuts - קיצורי מקשים - - - - dccV23::MainWindow - - Help - עזרה - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - ססמה חדשה: - - - Repeat Password - הססמה שוב - - - Password Hint - - - - Cancel - ביטול - - - Save - שמור - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - הססמה הנוכחית חייבת להיות שונה מהנוכחית - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - General - - - Touchpad - משטח מגע - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - מהירות סמן - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - גלילה טבעית - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - מצב - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - שכפל - - - Extend - הרחבה - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - ביטול - - - Delete - מחיקה - - - - dccV23::ResolutionWidget - - Resolution - רזולוציה - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - ברירת מחדל - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - הטיה - /display/Rotation - - - Standard - רגיל - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - חיפוש - - - - dccV23::SecondaryScreenDialog - - Brightness - בהירות - - - - dccV23::SecurityLevelItem - - Weak - חלש - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - ביטול - - - Confirm - אימות - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - ערוך - - - Done - בוצע - - - - dccV23::ShortCutSettingWidget - - System - מערכת - - - Window - חלון - - - Workspace - סביבת עבודה - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - ביטול - - - Replace - החלפה - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - שם המחשב - - - systemInfo - - - - OS Name - - - - Version - גרסה - - - Edition - - - - Type - סוג - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - ביטול - - - Add - הוספה - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - ערוך - - - Language List - - - - Add Language - - - - Done - בוצע - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - אימות - - - Cancel - ביטול - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - מהירות סמן - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - יישומי בררת מחדל - - - - DefAppPlugin - - Webpage - - - - Mail - דוא״ל - - - Text - טקסט - - - Music - מוזיקה - - - Video - וידאו - - - Picture - תמונות - - - Terminal - מסוף - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - ביטול - - - Next - הבא - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - מצב - - - Position - מיקום - - - Status - - - - Show recent apps in Dock - - - - Size - גודל - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - למעלה - - - Bottom - למטה - - - Left - שמאל - - - Right - ימין - - - Location - מקום - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - ערוך - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - בוצע - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - ביטול - - - Next - הבא - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - ערוך - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - בוצע - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - General - - - Balanced - מאוזן - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - ערוך - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - בוצע - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - ללא - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - עוצמת קלט שמע - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - שולחן העבודה - - - Window - חלון - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - התאמה אישית - - - - PersonalizationThemeList - - Cancel - ביטול - - - Save - שמור - - - Light - מוסיקה קלה - - - Dark - - - - Auto - אוטומטי - - - Default - ברירת מחדל - - - - PersonalizationThemeModule - - Theme - עיצוב - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - מוסיקה קלה - - - Auto - אוטומטי - - - Dark - - - - - PersonalizationThemeWidget - - Light - מוסיקה קלה - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - אוטומטי - General - /personalization/General - - - Default - ברירת מחדל - - - - PersonalizationWorker - - Custom - בהתאמה אישית - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - ביטול - - - Confirm - אימות - - - - PowerModule - - Power - צריכת חשמל - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - מצלמה - - - Microphone - מיקרופון - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - מרכז בקרה - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - תצוגה - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - ביטול - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - חיפוש - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - כיבוי - - - Log out - התנתקות - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - פינוי אשפה - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - שגיאה - - - - SoundModule - - Sound - שמע - - - - SoundPlugin - - Output - פלט - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - מצב - - - Output Volume - עוצמת פלט שמע - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - איזון שמאל/ימין - - - Left - שמאל - - - Right - ימין - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - איפוס - - - Save - שמור - - - Server - שרת - - - Address - כתובת - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - ביטול - - - Confirm - אימות - - - Add Timezone - הוספת אזור זמן - - - Add - הוספה - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - החזר לקדמותו - - - Save - שמור - - - - TimezoneItem - - Tomorrow - - - - Yesterday - אתמול - - - Today - היום - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - הוספת אזור זמן - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - ביטול - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - מתבצע עדכון… - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - גודל - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - ממתין - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - שרת - - - Desktop - שולחן העבודה - - - Version - גרסה - - - - UpdateSettingsModule - - Update Settings - - - - System - מערכת - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - אף פעם - - - Shut down - כיבוי - - - Suspend - השהיה - - - Hibernate - תרדמת - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - אף פעם - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - כיבוי - - - Suspend - השהיה - - - Hibernate - תרדמת - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - מצב - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - מוסיקה קלה - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_hi_IN.ts b/dcc-old/translations/dde-control-center_hi_IN.ts deleted file mode 100644 index 5130ba6602..0000000000 --- a/dcc-old/translations/dde-control-center_hi_IN.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - कनेक्ट करें - - - Disconnect - डिस्कनेक्ट है - - - Rename - रीनैम - - - Send Files - - - - Ignore this device - - - - Connecting - कनेक्ट हो रहा है - - - Disconnecting - - - - - AddButtonWidget - - Add Application - अनुप्रयोग जोड़ें - - - Open Desktop file - डेस्कटॉप फ़ाइल खोलें - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - रद्द करें - - - Next - आगे - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - पूर्ण हुआ - - - Failed to enroll your face - - - - Try Again - - - - Close - बंद करें - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - रद्द करें - - - Next - आगे - - - Iris enrolled - - - - Done - पूर्ण हुआ - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - अंगुली-चिन्ह - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - कनेक्ट है - - - Not connected - कनेक्ट नहीं है - - - - BluetoothModule - - Bluetooth - ब्लूटूथ - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - रद्द करें - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - रद्द करें - - - Confirm - button - पुष्टि करें - - - - dccV23::AccountSpinBox - - Always - हमेशा - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - उपयोक्ता नाम - - - Change Password - कूटशब्द बदलें - - - Delete User - - - - User Type - - - - Auto Login - स्वतः लॉगिन - - - Login Without Password - - - - Validity Days - - - - Group - समूह - - - The full name is too long - - - - Standard User - - - - Administrator - प्रबन्धक - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - पूरा नाम - - - Go to Settings - - - - Cancel - रद्द करें - - - OK - ठीक है - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - सक्रिय डायरेक्टरी डोमेन सेटिंग्स - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - रद्द करें - - - Save - संचित करें - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - चित्र - - - - dccV23::BootWidget - - Updating... - अपडेट किया जा रहा है... - - - Startup Delay - स्टार्टअप में विलंब - - - Theme - थीम - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - कूटशब्द बदलें - - - Boot Menu - बूट मेन्यू - - - Change GRUB password - - - - Username: - उपयोक्ता नाम : - - - root - - - - New password: - - - - Repeat password: - - - - Required - आवश्यक - - - Cancel - button - रद्द करें - - - Confirm - button - पुष्टि करें - - - Password cannot be empty - - - - Passwords do not match - कूटशब्द मेल नहीं खाते - - - - dccV23::BrightnessWidget - - Brightness - स्क्रीन की चमक - - - Color Temperature - - - - Auto Brightness - ऑटो ब्राइटनेस - - - Night Shift - नीले प्रकाश हेतु फिल्टर - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - सामान्य सेटिंग्स - - - Boot Menu - बूट मेन्यू - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - कोई नेटवर्क कनेक्शन नहीं - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - समूह - - - Cancel - रद्द करें - - - Create - बनाएँ - - - New User - - - - User Type - - - - Username - उपयोक्ता नाम - - - Full Name - पूरा नाम - - - Password - कूटशब्द - - - Repeat Password - कूटशब्द पुनः दर्ज करें - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - कूटशब्द मेल नहीं खाते - - - Standard User - - - - Administrator - प्रबन्धक - - - Customized - अनुकूलित - - - Required - आवश्यक - - - optional - वैकल्पिक - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - चित्र - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - अनुकूलित शॉर्टकट जोड़ें - - - Name - नाम - - - Required - आवश्यक - - - Command - कमांड - - - Cancel - रद्द करें - - - Add - जोड़ें - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - इस शॉर्टकट का %1 के साथ विरोधाभास है, 'में जोड़ें' पर क्लिक कर इसे तुरंत प्रभाव से लागू करें - - - - dccV23::CustomEdit - - Required - आवश्यक - - - Cancel - रद्द करें - - - Save - संचित करें - - - Shortcut - शॉर्टकट - - - Name - नाम - - - Command - कमांड - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - इस शॉर्टकट का %1 के साथ विरोधाभास है, 'में जोड़ें' पर क्लिक कर इसे तुरंत प्रभाव से लागू करें - - - - dccV23::CustomItem - - Shortcut - शॉर्टकट - - - Please enter a shortcut - कृपया शॉर्टकट दर्ज करें - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - ऑनलाइन - - - Offline - ऑफलाइन - - - Please sign in to your Union ID first and continue - - - - Next - आगे - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - कोई नेटवर्क कनेक्शन नहीं - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - रद्द करें - - - Restart Now - अभी पुनः आरंभ करें - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - प्रदर्शन - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - दोहरे-क्लिक का परीक्षण - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - कुंजी दोहराव में विलंब - - - Short - लघु - - - Long - दीर्घ - - - Repeat Rate - दोहराव की दर - - - Slow - धीमा - - - Fast - तेज़ - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - कैप्स लॉक सूचक - - - - dccV23::GeneralSettingWidget - - Left Hand - बायाँ हाथ - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - दोहरे-क्लिक की गति - - - Slow - धीमा - - - Fast - तेज़ - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - कुंजीपटल अभिन्यास - - - Edit - संपादित करें - - - Add Keyboard Layout - कुंजीपटल अभिन्यास जोड़ें - - - Done - पूर्ण हुआ - - - - dccV23::KeyboardLayoutDialog - - Cancel - रद्द करें - - - Add - जोड़ें - - - Add Keyboard Layout - कुंजीपटल अभिन्यास जोड़ें - - - - dccV23::KeyboardPlugin - - Keyboard and Language - कुंजीपटल व भाषा - - - Keyboard - कुंजीपटल - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - कुंजीपटल अभिन्यास - - - Language - भाषा - - - Shortcuts - शॉर्टकट - - - - dccV23::MainWindow - - Help - सहायता - - - - dccV23::ModifyPasswdPage - - Change Password - कूटशब्द बदलें - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - वर्तमान कूटशब्द - - - Forgot password? - - - - New Password - नया कूटशब्द - - - Repeat Password - कूटशब्द पुनः दर्ज करें - - - Password Hint - - - - Cancel - रद्द करें - - - Save - संचित करें - - - Passwords do not match - कूटशब्द मेल नहीं खाते - - - Required - आवश्यक - - - Optional - वैकल्पिक - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - गलत कूटशब्द - - - New password should differ from the current one - नया कूटशब्द वर्तमान वाले से अलग होना चाहिए - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - माउस - - - General - सामान्य - - - Touchpad - टचपैड - - - TrackPoint - ट्रैकपॉइंट - - - - dccV23::MouseSettingWidget - - Pointer Speed - पॉइंटर की गति - - - Mouse Acceleration - माउस त्वरण - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - सामान्य स्क्रॉल - - - Slow - धीमा - - - Fast - तेज़ - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - मोड - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - प्रतिकृति बनाएँ - - - Extend - विस्तारित करें - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - सूचना - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - कूटशब्द हेतु साधारण शब्द व संयोजन उपयोग न करें - - - Create a strong password please - - - - It does not meet password rules - यह कूटशब्द नियमानुसार नहीं है - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - खाता डायरेक्टरी हटाएँ - - - Cancel - रद्द करें - - - Delete - हटाएँ - - - - dccV23::ResolutionWidget - - Resolution - रिज़ॉल्यूशन - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - डिफ़ॉल्ट - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - परिक्रमण - /display/Rotation - - - Standard - मानक - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - खोजें - - - - dccV23::SecondaryScreenDialog - - Brightness - स्क्रीन की चमक - - - - dccV23::SecurityLevelItem - - Weak - कमजोर - - - Medium - मध्यम - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - रद्द करें - - - Confirm - पुष्टि करें - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - संपादित करें - - - Done - पूर्ण हुआ - - - - dccV23::ShortCutSettingWidget - - System - सिस्टम - - - Window - विंडो - - - Workspace - कार्यस्थल - - - Assistive Tools - - - - Custom Shortcut - अनुकूलित शॉर्टकट - - - Restore Defaults - डिफॉल्ट्स पुनःस्थापित करें - - - Shortcut - शॉर्टकट - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - कृपया शॉर्टकट पुनः सेट करें - - - Cancel - रद्द करें - - - Replace - प्रतिस्थापित करें - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - इस शॉर्टकट का %1 के साथ विरोधाभास है, 'प्रतिस्थापित करें' पर क्लिक कर इसे तुरंत प्रभाव से लागू करें - - - - dccV23::ShortcutItem - - Enter a new shortcut - नया शॉर्टकट दर्ज करें - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - कंप्यूटर का नाम - - - systemInfo - - - - OS Name - - - - Version - संस्करण - - - Edition - - - - Type - प्रकार - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - संस्करण का लाइसेंस - - - End User License Agreement - End User License Agreement - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - सिस्टम जानकारी - - - - dccV23::SystemLanguageSettingDialog - - Cancel - रद्द करें - - - Add - जोड़ें - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - संपादित करें - - - Language List - - - - Add Language - - - - Done - पूर्ण हुआ - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - पुष्टि करें - - - Cancel - रद्द करें - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - पॉइंटर की गति - - - Slow - धीमा - - - Fast - तेज़ - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - वर्ष - - - Month - माह - - - Day - दिन - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - डिफ़ॉल्ट अनुप्रयोग - - - - DefAppPlugin - - Webpage - वेबपेज - - - Mail - मेल - - - Text - टेक्स्ट - - - Music - संगीत - - - Video - वीडियो - - - Picture - चित्र - - - Terminal - टर्मिनल - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - रद्द करें - - - Next - आगे - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - मोड - - - Position - पायदान - - - Status - स्थिति - - - Show recent apps in Dock - - - - Size - आकार - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - फ़ैशन मोड - - - Efficient mode - दक्ष मोड - - - Top - ऊपर - - - Bottom - नीचे - - - Left - बाएँ - - - Right - दाएँ - - - Location - स्थान - - - Keep shown - - - - Keep hidden - छुपाएं रखें - - - Smart hide - स्मार्ट हाइड - - - Small - छोटा - - - Large - बड़ा - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - संपादित करें - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - पूर्ण हुआ - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - अंगुली-चिन्ह जोड़ें - - - Cancel - रद्द करें - - - Next - आगे - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - संपादित करें - - - Fingerprint Password - अंगुली-चिन्ह कूटशब्द - - - You can add up to 10 fingerprints - - - - Done - पूर्ण हुआ - - - The name already exists - - - - Add Fingerprint - अंगुली-चिन्ह जोड़ें - - - - GeneralModule - - General - सामान्य - - - Balanced - संतुलित - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - संपादित करें - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - पूर्ण हुआ - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - कोई नहीं - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - इनपुट ध्वनि स्तर - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - डेस्कटॉप - - - Window - विंडो - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - Transparency - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - छोटा - - - Middle - - - - Large - बड़ा - - - - PersonalizationModule - - Personalization - अनुकूलन - - - - PersonalizationThemeList - - Cancel - रद्द करें - - - Save - संचित करें - - - Light - हल्का - - - Dark - गहरा - - - Auto - स्वतः - - - Default - डिफ़ॉल्ट - - - - PersonalizationThemeModule - - Theme - थीम - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - आइकन थीम - - - Cursor Theme - कर्सर थीम - - - Text Settings - - - - Font Size - - - - Standard Font - सामान्य मुद्रलिपि - - - Monospaced Font - Monospace मुद्रलिपि - - - Light - हल्का - - - Auto - स्वतः - - - Dark - गहरा - - - - PersonalizationThemeWidget - - Light - हल्का - General - /personalization/General - - - Dark - गहरा - General - /personalization/General - - - Auto - स्वतः - General - /personalization/General - - - Default - डिफ़ॉल्ट - - - - PersonalizationWorker - - Custom - स्वयं के द्वारा - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - ब्लूटूथ डिवाइस से कनेक्ट करने के लिए है पिन है : - - - Cancel - रद्द करें - - - Confirm - पुष्टि करें - - - - PowerModule - - Power - पॉवर - - - Battery low, please plug in - बैटरी कम है, कृपया चार्ज करें - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - कैमरा - - - Microphone - माइक्रोफोन - - - User Folders - - - - Calendar - दिनदर्शिका - - - Screen Capture - - - - - QObject - - Control Center - नियंत्रण केंद्र - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - देखें - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - रद्द करें - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - अपडेट प्रक्रिया विफल रही - - - - SearchInput - - Search - खोजें - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - ध्वनि प्रभाव - - - - SoundModel - - Boot up - - - - Shut down - बंद करें - - - Log out - लॉग आउट - - - Wake up - - - - Volume +/- - - - - Notification - सूचना - - - Low battery - लो बैटरी - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - ध्वनि - - - - SoundPlugin - - Output - आउटपुट - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - इनपुट - - - Sound Effects - ध्वनि प्रभाव - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - मोड - - - Output Volume - आउटपुट ध्वनि स्तर - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - बायाँ/दायाँ ऑडियो संतुलन - - - Left - बाएँ - - - Right - दाएँ - - - - TimeSettingModule - - Time Settings - समय संबंधी सेटिंग्स - - - Time - - - - Auto Sync - स्वतः समकालीन - - - Reset - पुनः व्यवस्थित - - - Save - संचित करें - - - Server - सर्वर - - - Address - पता - - - Required - आवश्यक - - - Customize - - - - Year - वर्ष - - - Month - माह - - - Day - दिन - - - - TimeZoneChooser - - Cancel - रद्द करें - - - Confirm - पुष्टि करें - - - Add Timezone - समय-क्षेत्र जोड़ें - - - Add - जोड़ें - - - Change Timezone - समय-क्षेत्र बदलें - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - पूर्ववत् - - - Save - संचित करें - - - - TimezoneItem - - Tomorrow - आने वाला कल - - - Yesterday - बीता हुआ कल - - - Today - आज - - - %1 hours earlier than local - स्थानीय समय से %1 घंटे पहले - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - समय-क्षेत्र सूची - - - System Timezone - सिस्टम समय क्षेत्र - - - Add Timezone - समय-क्षेत्र जोड़ें - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - रद्द करें - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - नेटवर्क डिस्कनेक्ट हो गया है, कृपया कनेक्ट होने के बाद पुनः प्रयास करें - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - अपडेट किया जा रहा है... - - - Update All - - - - Last checking time: - - - - Your system is up to date - आपका सिस्टम नवीनतम है - - - Check for Updates - - - - Checking for updates, please wait... - अपडेट खोजी जा रही हैं, कृपया प्रतीक्षा करें... - - - The newest system installed, restart to take effect - नवीनतम सिस्टम इंस्टॉल कर दिया गया, लागू करने हेतु पुनः आरंभ करें - - - %1% downloaded (Click to pause) - %1% डाउनलोड किया गया (रोकने हेतु क्लिक करें) - - - %1% downloaded (Click to continue) - %1% डाउनलोड किया गया (जारी रखने हेतु क्लिक करें) - - - Your battery is lower than 50%, please plug in to continue - बैटरी का स्तर 50% से कम है, जारी रखने हेतु कृपया चार्जिंग पर लगाएँ - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - कृपया सुनिश्चित करें कि सिस्टम में पुनः आरंभ हो सकने जितनी बैटरी शेष हो, और कंप्यूटर को बंद न करें व न ही प्लग हटाएँ - - - Size - आकार - - - - UpdateModule - - Updates - अपडेट - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - नवीनतम सिस्टम इंस्टॉल कर दिया गया, लागू करने हेतु पुनः आरंभ करें - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - सर्वर - - - Desktop - डेस्कटॉप - - - Version - संस्करण - - - - UpdateSettingsModule - - Update Settings - अपडेट सेटिंग्स - - - System - सिस्टम - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - कभी नहीं - - - Shut down - बंद करें - - - Suspend - स्थगित करें - - - Hibernate - सुप्त करें - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 मिनट - - - %1 Minutes - %1 मिनट - - - 1 Hour - 1 घंटा - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - कंप्यूटर इस अवधि के बाद स्थगित हो जाएगा - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 मिनट - - - %1 Minutes - %1 मिनट - - - 1 Hour - 1 घंटा - - - Never - कभी नहीं - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - बंद करें - - - Suspend - स्थगित करें - - - Hibernate - सुप्त करें - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - मोड - - - Pressure Sensitivity - - - - Pen - पेन (Stylus) - - - Mouse - माउस - - - Light - हल्का - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_hr.ts b/dcc-old/translations/dde-control-center_hr.ts deleted file mode 100644 index d89e95f680..0000000000 --- a/dcc-old/translations/dde-control-center_hr.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Dozvoli drugim Bluetooth uređajima na nađu ovaj uređaj - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Omogući bluetooth za nalaženje obližnjih uređaja (zvučnici, tipkovnica, miš) - - - My Devices - Moji uređaji - - - Other Devices - Ostali uređaji - - - Show Bluetooth devices without names - Pokaži Bluetooth uređaje bez imena - - - Connect - Poveži - - - Disconnect - Odspoji - - - Rename - Preimenuj - - - Send Files - Šalji datoteke - - - Ignore this device - Ignoriraj ovaj uređaj - - - Connecting - Povezujem se - - - Disconnecting - Odspajam - - - - AddButtonWidget - - Add Application - Dodaj aplikaciju - - - Open Desktop file - Otvori datoteku radne površine - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Otkaži - - - Next - Slijedeće - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Učinjeno - - - Failed to enroll your face - - - - Try Again - - - - Close - Zatvori - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Otkaži - - - Next - Slijedeće - - - Iris enrolled - - - - Done - Učinjeno - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - Ne više od 15 znakova - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Otisak prsta - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Spojeno - - - Not connected - Nije spojeno - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Otisak prsta1 - - - Fingerprint2 - Otisak prsta2 - - - Fingerprint3 - Otisak prsta3 - - - Fingerprint4 - Otisak prsta4 - - - Fingerprint5 - Otisak prsta5 - - - Fingerprint6 - Otisak prsta6 - - - Fingerprint7 - Otisak prsta7 - - - Fingerprint8 - Otisak prsta8 - - - Fingerprint9 - Otisak prsta9 - - - Fingerprint10 - Otisak prsta10 - - - Scan failed - - - - The fingerprint already exists - Otisak prsta već postoji - - - Please scan other fingers - - - - Unknown error - Nepoznata greška - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - Prst se prebrzo pomicao, molim nemojte ga podizati dok ne budete obavješteni - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Otkaži - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Otkaži - - - Confirm - button - Potvrdi - - - - dccV23::AccountSpinBox - - Always - Uvijek - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Korisničko ime - - - Change Password - Promijeni lozinku - - - Delete User - - - - User Type - - - - Auto Login - Automatska prijava - - - Login Without Password - Prijava bez lozinke - - - Validity Days - - - - Group - Grupa - - - The full name is too long - Puno ime je predugo - - - Standard User - Standardni korisnik - - - Administrator - Administrator - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Puno ime - - - Go to Settings - Idi u postavke - - - Cancel - Otkaži - - - OK - U redu - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - Lozinka se ne podudara - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - Pokaži u centru obavijesti - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Otkaži - - - Save - Spremi - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Slike - - - - dccV23::BootWidget - - Updating... - Ažuriranje... - - - Startup Delay - Odgoda podizanja - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Promijeni lozinku - - - Boot Menu - Izbornik pokretanja sustava - - - Change GRUB password - - - - Username: - Korisničko ime: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Potrebno - - - Cancel - button - Otkaži - - - Confirm - button - Potvrdi - - - Password cannot be empty - Lozinka ne smije biti prazna - - - Passwords do not match - Lozinke se ne podudaraju - - - - dccV23::BrightnessWidget - - Brightness - Svjetlina - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - Noćna smjena - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - Hladno - - - Warm - Vruće - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Moji uređaji - - - Other Devices - Ostali uređaji - - - - dccV23::CommonInfoPlugin - - General Settings - Opće postavke - - - Boot Menu - Izbornik pokretanja sustava - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - Nema mrežne veze - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Grupa - - - Cancel - Otkaži - - - Create - Napravi - - - New User - - - - User Type - - - - Username - Korisničko ime - - - Full Name - Puno ime - - - Password - Lozinka - - - Repeat Password - Ponovi lozinku - - - Password Hint - - - - The full name is too long - Puno ime je predugo - - - Passwords do not match - Lozinke se ne podudaraju - - - Standard User - Standardni korisnik - - - Administrator - Administrator - - - Customized - Prilagođeno - - - Required - Potrebno - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Korisničko ime mora sadržavati između 3 i 32 znaka - - - The first character must be a letter or number - Prvi znak mora biti slovo ili broj - - - Your username should not only have numbers - Vaše korisničko ime ne smije sadržavati samo brojeve - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Slike - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Dodaj prilagođeni prečac - - - Name - Ime - - - Required - Potrebno - - - Command - Naredba - - - Cancel - Otkaži - - - Add - Dodaj - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Potrebno - - - Cancel - Otkaži - - - Save - Spremi - - - Shortcut - Prečac - - - Name - Ime - - - Command - Naredba - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - Prečac - - - Please enter a shortcut - Molim unesite prečac - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - Na mreži - - - Offline - Izvanmrežno - - - Please sign in to your Union ID first and continue - - - - Next - Slijedeće - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - Ova značajka nije dostupna sada, molim najprije aktivirajte vaš sustav - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - Nema mrežne veze - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Otkaži - - - Restart Now - Ponovno pokreni sada - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Zaslon - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Test dvostrukog klika - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Odgoda ponavljanja - - - Short - Kratko - - - Long - Dugo - - - Repeat Rate - Brzina ponavljanja - - - Slow - Polako - - - Fast - Brzo - - - Test here - Testiraj ovdje - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - Lijeva ruka - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Brzina dvostrukog klika - - - Slow - Polako - - - Fast - Brzo - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Raspored tipkovnice - - - Edit - Uredi - - - Add Keyboard Layout - Dodaj raspored tipkovnice - - - Done - Učinjeno - - - - dccV23::KeyboardLayoutDialog - - Cancel - Otkaži - - - Add - Dodaj - - - Add Keyboard Layout - Dodaj raspored tipkovnice - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tipkovnica i jezik - - - Keyboard - Tipkovnica - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Raspored tipkovnice - - - Language - Jezik - - - Shortcuts - Prečaci - - - - dccV23::MainWindow - - Help - Pomoć - - - - dccV23::ModifyPasswdPage - - Change Password - Promijeni lozinku - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Trenutna lozinka - - - Forgot password? - Zaboravili ste lozinku? - - - New Password - Nova lozinka - - - Repeat Password - Ponovi lozinku - - - Password Hint - - - - Cancel - Otkaži - - - Save - Spremi - - - Passwords do not match - Lozinke se ne podudaraju - - - Required - Potrebno - - - Optional - Opcionalno - - - Password cannot be empty - Lozinka ne smije biti prazna - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Neispravna lozinka - - - New password should differ from the current one - Nova lozinka mora se razlikovati od trenutačne - - - System error - Greška sustava - - - Network error - Mrežna greška - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Miš - - - General - Općenito - - - Touchpad - Dodirna ploča - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - Brzina pokazivača - - - Mouse Acceleration - Ubrzanje miša - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Prirodno pomicanje - - - Slow - Polako - - - Fast - Brzo - - - - dccV23::MultiScreenWidget - - Multiple Displays - Višestruki zasloni - /display/Multiple Displays - - - Mode - Način - /display/Mode - - - Main Screen - Glavni zaslon - /display/Main Scree - - - Duplicate - Udvostruči - - - Extend - Proširi - - - Only on %1 - Samo na %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Obavijest - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - Lozinka ne smije biti prazna - - - Password must have at least %1 characters - Lozinka mora imati najmanje %1 znakova - - - Password must be no more than %1 characters - Lozinka ne smije biti veća od %1 znakova - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Lozinka može sadržavati samo engleska slova (velika i mala), brojeve i posebne simbole (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Lozinka mora sadržavati velika slova, mala slova, brojeve i simbole (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - Ne koristi uobičajene riječi i kombinacije kao lozinku - - - Create a strong password please - Molim napravite jaku lozinku - - - It does not meet password rules - Nije u skladu s pravilima lozinke - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - Hz - - - Recommended - Preporučeno - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Jeste li sigurni da želite izbrisati ovaj račun? - - - Delete account directory - Izbriši direktorij računa - - - Cancel - Otkaži - - - Delete - Obriši - - - - dccV23::ResolutionWidget - - Resolution - Razlučivost - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Uobičajeno - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Preporučeno - - - - dccV23::RotateWidget - - Rotation - Rotacija - /display/Rotation - - - Standard - Standardan - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Traži - - - - dccV23::SecondaryScreenDialog - - Brightness - Svjetlina - - - - dccV23::SecurityLevelItem - - Weak - Slaba - - - Medium - Srednja - - - Strong - Jaka - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Otkaži - - - Confirm - Potvrdi - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - Ne može biti prazno - - - - dccV23::SettingsHead - - Edit - Uredi - - - Done - Učinjeno - - - - dccV23::ShortCutSettingWidget - - System - Sustav - - - Window - Prozor - - - Workspace - Radni prostor - - - Assistive Tools - - - - Custom Shortcut - Prilagođeni prečac - - - Restore Defaults - Obnovi zadano - - - Shortcut - Prečac - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Otkaži - - - Replace - Zamijeni - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - Unesite novi prečac - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - O ovom PC-u - - - Computer Name - Ime računala - - - systemInfo - - - - OS Name - - - - Version - Inačica - - - Edition - - - - Type - Vrsta - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Licenca izdanja - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Informacije o sustavu - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Otkaži - - - Add - Dodaj - - - Add System Language - Dodaj jezik sustava - - - - dccV23::SystemLanguageWidget - - Edit - Uredi - - - Language List - Lista jezika - - - Add Language - - - - Done - Učinjeno - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Ne smetaj - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - Od - - - To - Ka - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Potvrdi - - - Cancel - Otkaži - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Brzina pokazivača - - - Slow - Polako - - - Fast - Brzo - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Godina - - - Month - Mjesec - - - Day - Dan - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Uobičajene aplikacije - - - - DefAppPlugin - - Webpage - Web stranica - - - Mail - Pošta - - - Text - Tekst - - - Music - Glazba - - - Video - Video - - - Picture - Slika - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Otkaži - - - Next - Slijedeće - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - Višestruki zasloni - - - Show Dock - - - - Mode - Način - - - Position - Pozicija - - - Status - Status - - - Show recent apps in Dock - - - - Size - Veličina - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Moderan način - - - Efficient mode - Učinkoviti način - - - Top - Gore - - - Bottom - Dolje - - - Left - Lijevo - - - Right - Desno - - - Location - Lokacija - - - Keep shown - Drži prikazano - - - Keep hidden - Drži skriveno - - - Smart hide - Pametno skrivanje - - - Small - Maleno - - - Large - Veliko - - - On screen where the cursor is - Na zaslon gdje je pokazivač - - - Only on main screen - Samo na glavni zaslon - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Uredi - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Učinjeno - - - Add Face - - - - The name already exists - Ime već postoji - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Dodaj otisak prsta - - - Cancel - Otkaži - - - Next - Slijedeće - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - Dignite vaš prst - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - Otisak prsta dodan - - - - FingerWidget - - Edit - Uredi - - - Fingerprint Password - Lozinka otiskom prsta - - - You can add up to 10 fingerprints - Možete dodati do 10 otisaka pristiju - - - Done - Učinjeno - - - The name already exists - Ime već postoji - - - Add Fingerprint - Dodaj otisak prsta - - - - GeneralModule - - General - Općenito - - - Balanced - Uravnoteženo - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Uredi - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Učinjeno - - - Add Iris - - - - The name already exists - Ime već postoji - - - Iris - - - - - KeyLabel - - None - Nijedan - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Ulazna glasnoća - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Radna površina - - - Window - Prozor - - - Window Effect - Efekt prozora - - - Window Minimize Effect - - - - Transparency - Prozirnost - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Maleno - - - Middle - - - - Large - Veliko - - - - PersonalizationModule - - Personalization - Personalizacija - - - - PersonalizationThemeList - - Cancel - Otkaži - - - Save - Spremi - - - Light - Lagano - - - Dark - Tamno - - - Auto - Automatski - - - Default - Uobičajeno - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Tema ikona - - - Cursor Theme - Tema pokazivača - - - Text Settings - - - - Font Size - Veličina fonta - - - Standard Font - Standardni font - - - Monospaced Font - - - - Light - Lagano - - - Auto - Automatski - - - Dark - Tamno - - - - PersonalizationThemeWidget - - Light - Lagano - General - /personalization/General - - - Dark - Tamno - General - /personalization/General - - - Auto - Automatski - General - /personalization/General - - - Default - Uobičajeno - - - - PersonalizationWorker - - Custom - Prilagođeno - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN za spajanje na Bluetooth uređaj je: - - - Cancel - Otkaži - - - Confirm - Potvrdi - - - - PowerModule - - Power - Energija - - - Battery low, please plug in - Niska razina baterije, molim uključite - - - Battery critically low - Baterija je kritično nisko - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Kalendar - - - Screen Capture - - - - - QObject - - Control Center - Središte upravljanja - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Aktiviran - - - View - Pogled - - - To be activated - Biti će aktiviran - - - Activate - Aktiviraj - - - Expired - Isteklo - - - In trial period - U probnom periodu - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Otkaži - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - Neuspjelo ažuriranje - - - - SearchInput - - Search - Traži - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Zvučni efekti - - - - SoundModel - - Boot up - Učitaj sustav - - - Shut down - Isključi - - - Log out - Odjava - - - Wake up - Probudi - - - Volume +/- - Glasnoća +/- - - - Notification - Obavijest - - - Low battery - Slaba baterija - - - Send icon in Launcher to Desktop - Pošalji ikonu iz pokretača na radnu površinu - - - Empty Trash - Isprazni smeće - - - Plug in - Ukopčaj - - - Plug out - Iskopčaj - - - Removable device connected - Uklonjivi uređaj je spojen - - - Removable device removed - Uklonjivi uređaj je uklonjen - - - Error - Greška - - - - SoundModule - - Sound - Zvuk - - - - SoundPlugin - - Output - Izlaz - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Unos - - - Sound Effects - Zvučni efekti - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - Izlazni uređaj - - - Mode - Način - - - Output Volume - Izlazna glasnoća - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Lijevo/desno ravnoteža - - - Left - Lijevo - - - Right - Desno - - - - TimeSettingModule - - Time Settings - Postavke vremena - - - Time - Vrijeme - - - Auto Sync - - - - Reset - Vrati - - - Save - Spremi - - - Server - Poslužitelj - - - Address - Adresa - - - Required - Potrebno - - - Customize - Prilagodi - - - Year - Godina - - - Month - Mjesec - - - Day - Dan - - - - TimeZoneChooser - - Cancel - Otkaži - - - Confirm - Potvrdi - - - Add Timezone - Dodaj vremensku zonu - - - Add - Dodaj - - - Change Timezone - Promjeni vremensku zonu - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Vrati - - - Save - Spremi - - - - TimezoneItem - - Tomorrow - Sutra - - - Yesterday - Jučer - - - Today - Danas - - - %1 hours earlier than local - %1 sati ranije nego lokalno - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Lista vremenskih zona - - - System Timezone - Vremenska zona sustava - - - Add Timezone - Dodaj vremensku zonu - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Otkaži - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - Provjeri ponovno - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Greška zavisnosti, neuspjelo otkrivanje ažuriranja - - - Restart the computer to use the system and the applications properly - Ponovno pokrenite računalo da biste ispravno koristili sustav i aplikacije - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - Trenutno izdanje - - - Updating... - Ažuriranje... - - - Update All - - - - Last checking time: - Zadnje vrijeme provjere: - - - Your system is up to date - Vaš je sustav ažuriran - - - Check for Updates - Provjeri za ažuriranja - - - Checking for updates, please wait... - Provjera ažuriranja, molim pričekajte - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - %1% preuzeto (klikni za pauzu) - - - %1% downloaded (Click to continue) - %1% preuzeto (kliknite za nastavak) - - - Your battery is lower than 50%, please plug in to continue - Razina baterije je manja od 50%, molim uključite za nastavak - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Veličina - - - - UpdateModule - - Updates - Ažuriranja - - - - UpdatePlugin - - Check for Updates - Provjeri za ažuriranja - - - - UpdateSettingItem - - Insufficient disk space - Nedovoljno prostora na disku - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - Mrežna greška - - - Network error, please check and try again - Mrežna greška, molim provjerite i pokušajte ponovno - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - Čekanje - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Poslužitelj - - - Desktop - Radna površina - - - Version - Inačica - - - - UpdateSettingsModule - - Update Settings - Postavke ažuriranja - - - System - Sustav - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - Obavijesti o ažuriranjima - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Ažuriranja sustava - - - Security Updates - Sigurnosna ažuriranja - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Trenutno izdanje - - - - UpdateWorker - - System Updates - Ažuriranja sustava - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - Sigurnosna ažuriranja - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Na bateriji - - - Never - Nikada - - - Shut down - Isključi - - - Suspend - Suspendiraj - - - Hibernate - Hiberniraj - - - Turn off the monitor - Isključi monitor - - - Do nothing - - - - 1 Minute - 1 minuta - - - %1 Minutes - %1 minuta - - - 1 Hour - 1 sat - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Zaključaj zaslon nakon - - - Computer suspends after - - - - Computer will suspend after - Računalo će biti suspendirano nakon - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Priključeno - - - 1 Minute - 1 minuta - - - %1 Minutes - %1 minuta - - - 1 Hour - 1 sat - - - Never - Nikada - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Zaključaj zaslon nakon - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Isključi - - - Suspend - Suspendiraj - - - Hibernate - Hiberniraj - - - Turn off the monitor - Isključi monitor - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Način - - - Pressure Sensitivity - Osjetljivost pritiska - - - Pen - - - - Mouse - Miš - - - Light - Lagano - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_hu.ts b/dcc-old/translations/dde-control-center_hu.ts deleted file mode 100644 index 50e40beee0..0000000000 --- a/dcc-old/translations/dde-control-center_hu.ts +++ /dev/null @@ -1,4012 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Engedélyezze, hogy más Bluetooth eszközök megtalálják ezt az eszközt - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Engedélyezze a Bluetooth kapcsolatot a közeli eszközök (hangszórók, billentyűzet, egér) megkereséséhez - - - My Devices - Eszközeim - - - Other Devices - Egyéb eszközök - - - Show Bluetooth devices without names - Ismeretlen Bluetooth eszközök megjelenítése - - - Connect - Csatlakozás - - - Disconnect - Szétkapcsolás - - - Rename - Átnevezés - - - Send Files - Fájlok küldése - - - Ignore this device - Hagyja figyelmen kívül ezt az eszközt - - - Connecting - Kapcsolódás - - - Disconnecting - Kapcsolat bontása... - - - - AddButtonWidget - - Add Application - Alkalmazás hozzáadása - - - Open Desktop file - Az asztalon levő fájl megnyitása - - - Apps (*.desktop) - Alkalmazások (*.desktop) - - - All files (*) - Összes fájl (*) - - - - AddFaceInfoDialog - - Enroll Face - Arc rögzítése - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Ügyeljen arra, hogy arcának valamennyi része jól látható legyen, és ne takarják el tárgyak. Az arcának jól megvilágítottnak kell lennie. - - - Cancel - Mégsem - - - Next - Következő - - - Face enrolled - Az arc rögzítve - - - Use your face to unlock the device and make settings later - Használja arcát az eszköz zárolásának feloldásához, és későbbi beállítások elvégzéséhez - - - Done - Kész - - - Failed to enroll your face - Az arc rögzítése sikertelen - - - Try Again - Próbálja újra - - - Close - Bezárás - - - - AddFingerDialog - - Cancel - Mégsem - - - Done - Kész - - - Scan Again - Újra ellenőrzés - - - Scan Suspended - Az ellenőrzés felfüggesztve - - - - AddIrisInfoDialog - - Enroll Iris - Írisz rögzítése - - - Cancel - Mégsem - - - Next - Következő - - - Iris enrolled - Az írisz rögzítve - - - Done - Kész - - - Failed to enroll your iris - Az írisz azonosító rögzítése sikertelen - - - Try Again - Próbálja újra - - - - AdvancedSettingModule - - Advanced Setting - Haladó beállítások - - - Audio Framework - Audió keretrendszer - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - A különböző audió keretrendszereknek megvannak a maga előnyei és hátrányai, és kiválaszthatja a legmegfelelőbbet. - - - - AuthenticationInfoItem - - No more than 15 characters - Nem lehet több, mint 15 karakter - - - Use letters, numbers and underscores only, and no more than 15 characters - Csak betűket, számokat és aláhúzást használjon, és nem lehet több, mint 15 karakter - - - Use letters, numbers and underscores only - Csak betűket, számokat és aláhúzást használjon - - - - AuthenticationModule - - Biometric Authentication - Biometrikus hitelesítés - - - - AuthenticationPlugin - - Fingerprint - Ujjlenyomat - - - Face - Arc - - - Iris - Írisz - - - - BluetoothDeviceModel - - Connected - Csatlakoztatva - - - Not connected - Nincs kapcsolódva - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Bluetooth eszköz kezelő - - - - CharaMangerModel - - Fingerprint1 - Ujjlenyomat 1. - - - Fingerprint2 - Ujjlenyomat 2. - - - Fingerprint3 - Ujjlenyomat 3. - - - Fingerprint4 - Ujjlenyomat 4. - - - Fingerprint5 - Ujjlenyomat 5. - - - Fingerprint6 - Ujjlenyomat 6. - - - Fingerprint7 - Ujjlenyomat 7. - - - Fingerprint8 - Ujjlenyomat 8. - - - Fingerprint9 - Ujjlenyomat 9. - - - Fingerprint10 - Ujjlenyomat 10. - - - Scan failed - A beolvasás nem sikerült - - - The fingerprint already exists - Az ujjlenyomat már létezik - - - Please scan other fingers - Próbálja meg egy másik ujjával a beolvasást - - - Unknown error - Ismeretlen hiba - - - Scan suspended - A beolvasás felfüggesztve - - - Cannot recognize - Nem ismerhető fel - - - Moved too fast - Tartsa az ujját fixen. - - - Finger moved too fast, please do not lift until prompted - Az ujját túl gyorsan mozgatta, kérjük ne emelje fel, amíg nem kérjük - - - Unclear fingerprint - Nem tiszta ujjlenyomat - - - Clean your finger or adjust the finger position, and try again - Tartsa fixen az ujját, majd próbálja újra - - - Already scanned - Már beolvasva - - - Adjust the finger position to scan your fingerprint fully - Állítsa be az ujj helyzetét az ujjlenyomat teljes beolvasásához - - - Finger moved too fast. Please do not lift until prompted - Az ujját túl gyorsan mozgatta, kérjük ne emelje fel, amíg nem jelezzük - - - Lift your finger and place it on the sensor again - Emelje fel az ujját, és helyezze ismét az érzékelőre - - - Position your face inside the frame - Helyezze az arcát a keretbe - - - Face enrolled - Az arc rögzítve - - - Position a human face please - Kérjük a saját arcát helyezze a keretbe - - - Keep away from the camera - Tartsa távolabb a kamerától - - - Get closer to the camera - Menjen közelebb a kamerához - - - Do not position multiple faces inside the frame - Ne helyezzen több arcot a keretbe - - - Make sure the camera lens is clean - Győződjön meg arról, hogy a kamera lencséje tiszta - - - Do not enroll in dark, bright or backlit environments - Ne rögzítsen képet háttérvilágítás mellett, ill. túl világos, vagy túl sötét környezetben. - - - Keep your face uncovered - Tartsa fedetlenül az arcát - - - Scan timed out - Beolvasási időtúllépés - - - Device crashed, please scan again! - Az eszköz nem működik, kérjük ellenőrizze újra! - - - Cancel - Mégsem - - - - CooperationSettingsDialog - - Collaboration Settings - Együttműködési beállítások - - - Share mouse and keyboard - Egér és Billentyűzet megosztása - - - Share your mouse and keyboard across devices - Ossza meg az egerét és a billentyűzetét az eszközök között - - - Share clipboard - Vágólap megosztása - - - Storage path for shared files - Megosztott fájlok tárolási útvonala - - - Share the copied content across devices - Ossza meg a másolt tartalmat az eszközök között - - - Cancel - button - Mégsem - - - Confirm - button - Megerősítés - - - - dccV23::AccountSpinBox - - Always - Mindig - - - - dccV23::AccountsModule - - Users - Felhasználók - - - User management - Felhasználók kezelése - - - Create User - Felhasználó létrehozása - - - Username - Felhasználónév - - - Change Password - Jelszó megváltoztatása - - - Delete User - Felhasználó törlése - - - User Type - Felhasználó típusa - - - Auto Login - Automatikus bejelentkezés - - - Login Without Password - Bejelentkezés jelszó nélkül - - - Validity Days - Érvényesség - - - Group - Csoport - - - The full name is too long - A teljes név túl hosszú - - - Standard User - Általános felhasználó - - - Administrator - Rendszergazda - - - Reset Password - Jelszó visszaállítása - - - The full name has been used by other user accounts - Ez a Teljes név már használatban van - - - Full Name - Teljes név - - - Go to Settings - Ugrás a beállításokhoz - - - Cancel - Mégsem - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - Az "Automatikus bejelentkezés" csak egy fióknál engedélyezhető. Kérjük először kapcsolja ki azt a "%1" fióknál az automata bejelentkezést. - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - A számítógépe sikeresen eltávolítva a tartományból - - - Your host joins the domain server successfully - A számítógépe sikeresen csatlakozott a tartományhoz - - - Your host failed to leave the domain server - A számítógépe nem tudott kilépni a tartományból - - - Your host failed to join the domain server - A számítógépe nem tudott csatlakozni a tartományhoz - - - AD domain settings - AD tartományi beállítások - - - Password not match - A jelszavak nem egyeznek - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - A %1 értesítéseinek megjelenítése az asztalon és az értesítési központban. - - - Play a sound - Hang lejátszása - - - Show messages on lockscreen - Üzenetek megjelenítése a zárolási képernyőn - - - Show in notification center - Megjelenítés az értesítési központban - - - Show message preview - Üzenet előnézetének megjelenítése - - - - dccV23::AvatarListDialog - - Person - Ember - - - Animal - Állat - - - Illustration - Illusztráció - - - Expression - Kifejezés - - - Custom Picture - Egyéni kép - - - Cancel - Mégsem - - - Save - Mentés - - - - dccV23::AvatarListFrame - - Dimensional Style - Dimenzionális stílus - - - Flat Style - Keskeny stílus - - - - dccV23::AvatarListView - - Images - Képek - - - - dccV23::BootWidget - - Updating... - Frissítés... - - - Startup Delay - Indítás késleltetése - - - Theme - Téma - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Kattintson a rendszerindítási menü opciójára rendszerindításkor, majd illessze be a képet a háttér megváltoztatásához - - - Click the option in boot menu to set it as the first boot - Kattintson a rendszerindítási menü opciójára, hogy beállíthassa azt az első rendszerindítási elemnek - - - Switch theme on to view it in boot menu - A rendszerindítási menü témájának megváltoztatása - - - GRUB Authentication - GRUB Hitelesítés - - - GRUB password is required to edit its configuration - A konfiguráció szerkesztéséhez GRUB jelszó szükséges - - - Change Password - Jelszó megváltoztatása - - - Boot Menu - Rendszerindítási menü - - - Change GRUB password - GRUB jelszó megváltoztatása - - - Username: - Felhasználónév: - - - root - root - - - New password: - Új jelszó: - - - Repeat password: - Jelszó ismétlése: - - - Required - Kötelező - - - Cancel - button - Mégsem - - - Confirm - button - Megerősítés - - - Password cannot be empty - A jelszó nem lehet üres - - - Passwords do not match - A jelszavak nem egyeznek - - - - dccV23::BrightnessWidget - - Brightness - Fényerősség - - - Color Temperature - Színhőmérséklet - - - Auto Brightness - Automatikus fényerősség - - - Night Shift - Éjszakai üzemmód - - - The screen hue will be auto adjusted according to your location - A képernyő színárnyalata automatikusan, az Ön tartózkodási helyének megfelelően lesz beállítva - - - Change Color Temperature - Színhőmérséklet megváltoztatása - - - Cool - Hideg - - - Warm - Meleg - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Többképernyős mód - - - PC Collaboration - Illesztés TV készülékhez - - - Connect to - Csatlakozás a - - - Select a device for collaboration - Válasszon eszközt az együttműködéshez - - - Device Orientation - Képernyők elrendezése - - - On the top - A tetejére - - - On the right - A jobb oldalra - - - On the bottom - Az aljára - - - On the left - A bal oldalra - - - My Devices - Eszközeim - - - Other Devices - Egyéb eszközök - - - - dccV23::CommonInfoPlugin - - General Settings - Általános beállítások - - - Boot Menu - Rendszerindítási menü - - - Developer Mode - Fejlesztői mód - - - User Experience Program - Felhasználói élmény program - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Elfogadás, és csatlakozás a Felhasználói Élmény Programhoz - - - The Disclaimer of Developer Mode - A fejlesztői mód felelősségi nyilatkozata - - - Agree and Request Root Access - Egyetértés, és rendszergazdai hozzáférés kérése - - - Failed to get root access - A rendszergazdai hozzáférés sikertelen - - - Please sign in to your Union ID first - Kérjük először jelentkezzen be az Union® azonosító fiókjába - - - Cannot read your PC information - A számítógép információi nem olvashatóak ki. - - - No network connection - Nincs hálózati kapcsolat - - - Certificate loading failed, unable to get root access - A tanúsítvány betöltése sikertelen, így a rendszergazdai hozzáférés is - - - Signature verification failed, unable to get root access - Az aláírás ellenőrzése sikertelen, így a rendszergazdai hozzáférés is. - - - - dccV23::CreateAccountPage - - Group - Csoport - - - Cancel - Mégsem - - - Create - Létrehozás - - - New User - Új Felhasználó - - - User Type - Felhasználó típusa - - - Username - Felhasználónév - - - Full Name - Teljes név - - - Password - Jelszó - - - Repeat Password - Jelszó ismétlése - - - Password Hint - Jelszó emlékeztető - - - The full name is too long - A teljes név túl hosszú - - - Passwords do not match - A jelszavak nem egyeznek - - - Standard User - Általános felhasználó - - - Administrator - Rendszergazda - - - Customized - Testreszabott - - - Required - Kötelező - - - optional - Opcionális - - - The hint is visible to all users. Do not include the password here. - Az emlékeztető minden felhasználó számára látható. Ne adja meg itt a jelszavát - - - Policykit authentication failed - A házirend hitelesítése sikertelen - - - Username must be between 3 and 32 characters - A felhasználónévnek 3 és 32 karakter közötti hosszúságúnak kell lennie - - - The first character must be a letter or number - Az első karakternek betűnek vagy számnak kell lennie - - - Your username should not only have numbers - A felhasználónévnek nem csak számokat kell tartalmaznia - - - The username has been used by other user accounts - Ez a felhasználónév már használatban van - - - The full name has been used by other user accounts - Ez a Teljes név már használatban van - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Még nem töltött fel képet. Betallózhat, vagy idehúzhat egy képet - - - Uploaded file type is incorrect, please upload again - A feltöltött fájltípus nem támogatott, kérjük töltse fel más formátumban - - - Images - Képek - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Egyéni gyorsbillentyű hozzáadása - - - Name - Név - - - Required - Kötelező - - - Command - Parancs - - - Cancel - Mégsem - - - Add - Hozzáadás - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ez a gyorsbillentyű ütközik a következővel: %1. Válasszon másikat - - - - dccV23::CustomEdit - - Required - Kötelező - - - Cancel - Mégsem - - - Save - Mentés - - - Shortcut - Gyorsbillentyű - - - Name - Név - - - Command - Parancs - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ez a gyorsbillentyű ütközik a következővel: %1. Válasszon másikat - - - - dccV23::CustomItem - - Shortcut - Gyorsbillentyű - - - Please enter a shortcut - Kérjük adjon meg egy gyorsbillentyűt - - - - dccV23::CustomRegionFormatDialog - - Custom format - Egyedi formátum - - - First day of week - A hét első napja - - - Short date - Rövid -dátumformátum - - - Long date - Hosszú -dátumformátum - - - Short time - Rövid -időformátum - - - Long time - Hosszú -időformátum - - - Currency symbol - Pénznem szimbóluma - - - Numbers - Számok - - - Paper - Papír - - - Cancel - Mégsem - - - Save - Mentés - - - - dccV23::DetailInfoItem - - For more details, visit: - További részletekért látogassa meg a : - - - - dccV23::DeveloperModeDialog - - Request Root Access - Rendszergazdai hozzáférés kérése - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Először jelentkezzen be az Union® azonosító fiókjába, majd folytassa - - - Next - Következő - - - Export PC Info - A számítógép adatainak exportálása - - - Import Certificate - Tanúsítvány importálása - - - 1. Export your PC information - 1. Exportálja a számítógép adatait - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2.: Nyissa meg a https://www.chinauos.com/developMode webhelyet a tanúsítvány letöltéséhez - - - 3. Import the certificate - 3. Importálja a tanúsítványt - - - - dccV23::DeveloperModeWidget - - Request Root Access - Rendszergazdai hozzáférés kérése - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - A fejlesztői mód lehetővé teszi rendszergazdai jogosultságok megszerzését, az alkalmazásboltban nem szereplő, aláíratlan alkalmazások telepítését és futtatását, de ez által a rendszer integritása is sérülhet, kérjük használja körültekintően. - - - The feature is not available at present, please activate your system first - A szolgáltatás jelenleg nem érhető el, kérjük, először aktiválja a rendszert - - - Failed to get root access - Nem sikerült a rendszergazdai hozzáférés - - - Please sign in to your Union ID first - Kérjük először jelentkezzen be az Union® azonosító fiókjába - - - Cannot read your PC information - A számítógépe adatai nem olvashatóak - - - No network connection - Nincs hálózati kapcsolat - - - Certificate loading failed, unable to get root access - A tanúsítvány betöltése sikertelen, nem sikerült a rendszergazdai hozzáférés - - - Signature verification failed, unable to get root access - Az aláírás ellenőrzése sikertelen, nem sikerült a rendszergazdai hozzáférés - - - To make some features effective, a restart is required. Restart now? - Egyes funkciók működéséhez újra kell indítani a számítógépet. Újraindítja most? - - - Cancel - Mégsem - - - Restart Now - Újraindítás most - - - Root Access Allowed - A rendszergazdai hozzáférés engedélyezve - - - - dccV23::DisplayPlugin - - Display - Képernyő - - - Light, resolution, scaling and etc - Fényerő, felbontás, méretarány, stb. - - - - dccV23::DouTestWidget - - Double-click Test - Dupla kattintás tesztelése - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Billentyűzet beállításai - - - Repeat Delay - Ismétlés késleltetése - - - Short - Rövid - - - Long - Hosszú - - - Repeat Rate - Ismétlési arány - - - Slow - Lassú - - - Fast - Gyors - - - Test here - Itt tesztelheti - - - Numeric Keypad - Számbillentyűzet - - - Caps Lock Prompt - CapsLock figyelmeztetés - - - - dccV23::GeneralSettingWidget - - Left Hand - Bal kezes egér - - - Disable touchpad while typing - Érintőpad kikapcsolása gépelés közben - - - Scrolling Speed - Görgetési sebesség - - - Double-click Speed - Dupla kattintás sebessége - - - Slow - Lassú - - - Fast - Gyors - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Billentyűzetkiosztás - - - Edit - Szerkesztés - - - Add Keyboard Layout - Billentyűzetkiosztás hozzáadása - - - Done - Kész - - - - dccV23::KeyboardLayoutDialog - - Cancel - Mégsem - - - Add - Hozzáadás - - - Add Keyboard Layout - Billentyűzetkiosztás hozzáadása - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Billentyűzet és Nyelv - - - Keyboard - Billentyűzet - - - Keyboard Settings - Billentyűzet beállításai - - - keyboard Layout - Billentyűzetkiosztás - - - Keyboard Layout - Billentyűzetkiosztás - - - Language - Nyelv - - - Shortcuts - Gyorsbillentyűk - - - - dccV23::MainWindow - - Help - Segítség - - - - dccV23::ModifyPasswdPage - - Change Password - Jelszó megváltoztatása - - - Reset Password - Jelszó visszaállítása - - - Resetting the password will clear the data stored in the keyring. - A jelszó visszaállítása után nem lesz érvényes a külső adathordozón tárolt jelszó és emlékeztető. - - - Current Password - Jelenlegi jelszó - - - Forgot password? - Elfelejtette a jelszavát? - - - New Password - Új jelszó - - - Repeat Password - Jelszó ismétlése - - - Password Hint - Jelszó emlékeztető - - - Cancel - Mégsem - - - Save - Mentés - - - Passwords do not match - A jelszavak nem egyeznek - - - Required - Kötelező - - - Optional - Opcionális - - - Password cannot be empty - A jelszó nem lehet üres - - - The hint is visible to all users. Do not include the password here. - A jelszó emlékeztető minden felhasználó számára látható. Ne adja meg itt a jelszavát - - - Wrong password - Helytelen jelszó - - - New password should differ from the current one - Az új jelszónak különböznie kell a jelenlegitől - - - System error - Rendszer hiba - - - Network error - Hálózati hiba - - - - dccV23::MonitorControlWidget - - Identify - Azonosítás - - - Gather Windows - Ablakok összegyűjtése - - - Screen rearrangement will take effect in %1s after changes - A képernyő átrendezése a változtatások után %1s múlva lép életbe - - - - dccV23::MousePlugin - - Mouse - Egér - - - General - Általános - - - Touchpad - Érintőpanel - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Mutató sebessége - - - Mouse Acceleration - Egér sebességemutató - - - Disable touchpad when a mouse is connected - Érintőpad kikapcsolása egér csatlakoztatása esetén - - - Natural Scrolling - Természetes görgetés - - - Slow - Lassú - - - Fast - Gyors - - - - dccV23::MultiScreenWidget - - Multiple Displays - Többképernyős mód - /display/Multiple Displays - - - Mode - Mód - /display/Mode - - - Main Screen - Főképernyő - /display/Main Scree - - - Duplicate - Megkettőzés - - - Extend - Kiterjesztés - - - Only on %1 - Megjelenítés csak a %1 képernyőn - - - - dccV23::NotificationModule - - AppNotify - Alkalmazás értesítések - - - Notification - Értesítések - - - SystemNotify - Rendszer értesítések - - - - dccV23::PalmDetectSetting - - Palm Detection - Tenyér érzékelés - - - Minimum Contact Surface - Minimális érintkezési felület - - - Minimum Pressure Value - Minimális nyomásérték - - - Disable the option if touchpad doesn't work after enabled - Kapcsolja ki ezt az opciót, ha az érintőpad az engedélyezése után nem működik - - - - dccV23::PluginManager - - following plugins load failed - A következő bővítmények betöltése nem sikerült - - - plugins cannot loaded in time - A bővítmények nem tölthetők be időben - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Adatvédelmi irányelvek - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Teljes mértékben tisztában vagyunk személyes adatainak fontosságával. Adatvédelmi irányelvünk kiterjed az Ön adatainak gyűjtésére, felhasználására, megosztására, továbbítására, nyilvánosságra hozatalára és tárolására. </p> <p> Ide kattintva <a href="%1"> </a> megtekintheti a legfrissebb adatvédelmi irányelveinket, vagy online is megtekintheti a <a href="%1">% 1 </a> weboldalon. Kérjük olvassa el figyelmesen, ha kérdése van, lépjen velünk kapcsolatba a következő címen: support@uniontech.com. </p> - - - - dccV23::PwqualityManager - - Password cannot be empty - A jelszó nem lehet üres - - - Password must have at least %1 characters - A jelszónak legalább %1 karakterből kell állnia - - - Password must be no more than %1 characters - A jelszó nem lehet hosszabb %1 karakternél - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - A jelszó csak angol betűket (kis- és nagybetű érzékeny), számokat vagy speciális szimbólumokat tartalmazhat ( ~ ` ! @ # $ % ^ & * ( ) - _ + = | \ { } [ ] : " ' < > , . ? / ) - - - No more than %1 palindrome characters please - Kérjük ne legyen több, mint %1 fordított sorrendű karakter - - - No more than %1 monotonic characters please - Kérjük ne legyen több, mint %1 ABC sorrend szerinti egymás utáni karakter - - - No more than %1 repeating characters please - Kérjük ne legyen több, mint %1 ismételt karakter - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - A jelszónak tartalmaznia kell nagybetűket, kisbetűket, számokat és szimbólumokat ( ~ ` ! @ # $ % ^ & * ( ) - _ + = | \ { } [ ] : " ' < > , . ? / ) - - - Password must not contain more than 4 palindrome characters - A jelszó legfeljebb 4 fordított sorrendű karaktert tartalmazhat - - - Do not use common words and combinations as password - Ne használjon jelszóként gyakori szavakat és kombinációkat - - - Create a strong password please - Kérjük hozzon létre egy erős jelszót - - - It does not meet password rules - Nem felel meg a jelszavakra vonatkozó szabályoknak - - - - dccV23::RefreshRateWidget - - Refresh Rate - Frissítési arány - - - Hz - Hz - - - Recommended - Ajánlott - - - - dccV23::RegionFormatDialog - - Region format - Régió formátuma - - - Default format - Álapértelmezett formátum - - - First of day - Az első nap - - - Short date - Rövid -dátumformátum - - - Long date - Hosszú -dátumformátum - - - Short time - Rövid -időformátum - - - Long time - Hosszú -időformátum - - - Currency symbol - Pénznem szimbóluma - - - Numbers - Számok - - - Paper - Papír - - - Cancel - Mégsem - - - Save - Mentés - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Biztosan törölni szeretné ezt a felhasználói fiókot? - - - Delete account directory - Felhasználói fiók könyvtárának törlése - - - Cancel - Mégsem - - - Delete - Törlés - - - - dccV23::ResolutionWidget - - Resolution - Felbontás - /display/Resolution - - - Resize Desktop - Asztal átméretezése - /display/Resize Desktop - - - Default - Alapértelmezett - - - Fit - Méretre igazítás - - - Stretch - Kiterjesztés - - - Center - Központ - - - Recommended - Ajánlott - - - - dccV23::RotateWidget - - Rotation - Elforgatás - /display/Rotation - - - Standard - Általános - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - A monitor csak a képernyő 100% -os méretezését támogatja - - - Display Scaling - Képernyő méretezése - - - - dccV23::SearchInput - - Search - Keresés - - - - dccV23::SecondaryScreenDialog - - Brightness - Fényerősség - - - - dccV23::SecurityLevelItem - - Weak - Gyenge - - - Medium - Közepes - - - Strong - Erős - - - - dccV23::SecurityQuestionsPage - - Security Questions - Biztonsági Kérdések - - - These questions will be used to help reset your password in case you forget it. - Ezekkel a kérdésekkel segítünk visszaállítani jelszavát arra az esetre, ha elfelejtené. - - - Security question 1 - Biztonsági Kérdés 1. - - - Security question 2 - Biztonsági Kérdés 2. - - - Security question 3 - Biztonsági Kérdés 3. - - - Cancel - Mégsem - - - Confirm - Megerősítés - - - Keep the answer under 30 characters - Kérjük a válaszokat 30 karakter alatt adja meg - - - Do not choose a duplicate question please - Kérjük ne válasszon ismétlődő kérdést - - - Please select a question - Kérjük válasszon egy kérdést - - - What's the name of the city where you were born? - Mi a neve a városnak, ahol született? - - - What's the name of the first school you attended? - Mi a neve az első iskolának, ahova járt? - - - Who do you love the most in this world? - Kit szeret a legjobban ezen a világon? - - - What's your favorite animal? - Mi a kedvenc állata? - - - What's your favorite song? - Melyik a kedvenc zeneszáma? - - - What's your nickname? - Mi a beceneve? - - - It cannot be empty - Ez nem lehet üres - - - - dccV23::SettingsHead - - Edit - Szerkesztés - - - Done - Kész - - - - dccV23::ShortCutSettingWidget - - System - Rendszer - - - Window - Ablak - - - Workspace - Munkaterület - - - Assistive Tools - Kisegítő eszközök - - - Custom Shortcut - Egyedi gyorsbillentyű - - - Restore Defaults - Alapértelmezések visszaállítása - - - Shortcut - Gyorsbillentyű - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Kérjük állítsa alaphelyzetbe a gyorsbillentyűt - - - Cancel - Mégsem - - - Replace - Csere - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - A gyorsbillentyű ütközik ezzel: %1. Hozzon létre egy másik gyorsbillentyűt. - - - - dccV23::ShortcutItem - - Enter a new shortcut - Adjon meg egy új gyorsbillentyűt - - - - dccV23::SystemInfoModel - - available - Elérhető - - - - dccV23::SystemInfoModule - - About This PC - Erről a számítógépről - - - Computer Name - Számítógépnév - - - systemInfo - Rendszerinformáció - - - OS Name - Operációs rendszer neve - - - Version - Verzió - - - Edition - Operációs rendszer kiadása - - - Type - Típus - - - Authorization - Engedélyezés - - - Processor - Processzor - - - Memory - Memória - - - Graphics Platform - Grafikus felület - - - Kernel - Kernel - - - Agreements and Privacy Policy - Megállapodások és adatvédelmi szabályzat - - - Edition License - Kiadási licensz - - - End User License Agreement - Végfelhasználói szerződés - - - Privacy Policy - Adatvédelmi irányelvek - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Rendszer információk - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Mégsem - - - Add - Hozzáadás - - - Add System Language - Rendszernyelv hozzáadása - - - - dccV23::SystemLanguageWidget - - Edit - Szerkesztés - - - Language List - Elérhető nyelvek listája - - - Add Language - Nyelv hozzáadása - - - Done - Kész - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Ne zavarjanak üzemmód - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Az alkalmazás értesítései nem jelennek meg az asztalon, és a hangok elnémulnak, de az összes üzenetet megtekintheti az értesítési központban. - - - When the screen is locked - Ha a képernyő zárolva van - - - - dccV23::TimeSlotItem - - From - Kezdete - - - To - Vége - - - - dccV23::TouchScreenModule - - Touch Screen - Érintőképernyő - - - Select your touch screen when connected or set it here. - Válassza ki az érintőképernyőt, ha csatlakoztatva van, vagy állítsa be itt. - - - Confirm - Megerősítés - - - Cancel - Mégsem - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Mutató sebessége - - - Enable TouchPad - Érintőpad bekapcsolása - - - Tap to Click - Érintésre kattintás - - - Natural Scrolling - Természetes görgetés - - - Slow - Lassú - - - Fast - Gyors - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Mutató sebessége - - - Slow - Lassú - - - Fast - Gyors - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Csatlakozzon a Felhasználói élmény programhoz - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p> A felhasználói élményprogramhoz való csatlakozás azt jelenti, hogy Ön engedélyezi nekünk, hogy statisztikai adatokat gyűjtsünk az eszközeiről, rendszeréről és alkalmazásairól, a jövőbeli kiadások fejlesztése érdekében. Amennyiben nem ért egyet a felhasználói élményprogrammal, ne fogadja el azt. A részletekért tekintse meg a Deepin® adatvédelmi irányelveit (<a href="%1"> %1 </a>). </p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p> A felhasználói élményprogramhoz való csatlakozás azt jelenti, hogy Ön engedélyezi nekünk, hogy statisztikai adatokat gyűjtsünk az eszközeiről, rendszeréről és alkalmazásairól, a jövőbeli kiadások fejlesztése érdekében. Amennyiben nem ért egyet a felhasználói élményprogrammal, ne fogadja el azt. A részletekért tekintse meg az UnionTech adatvédelmi irányelveit (<a href="%1"> %1 </a>). </p> - - - - DateWidget - - Year - Év - - - Month - Hónap - - - Day - Nap - - - - DatetimeModule - - Time and Format - Idő és Formátum - - - - DatetimeWorker - - Authentication is required to change NTP server - Hitelesítés szükséges az NTP szerver megváltoztatásához - - - - DefAppModule - - Default Applications - Alapértelmezett alkalmazások - - - - DefAppPlugin - - Webpage - Weboldal - - - Mail - E-mail - - - Text - Szöveg - - - Music - Zene - - - Video - Videó - - - Picture - Kép - - - Terminal - Terminál - - - - DisclaimersDialog - - Disclaimer - Jogi nyilatkozat - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Az arcfelismerés használata előtt vegye figyelembe a következőket: -1. Eszközét feloldhatják olyan emberek vagy tárgyak, akik hasonlítanak Önhöz. -2. Az arcfelismerés kevésbé biztonságos, mint a digitális jelszavak és a vegyes jelszavak. -3. Az eszköz arcfelismeréssel történő feloldásának sikeraránya csökken gyenge megvilágítású, erős megvilágítású, háttérvilágítás, nagy látószögű kamera esetén. -4. Kérjük, hogy az arcfelismerés rosszindulatú használatának elkerülése érdekében véletlenszerűen ne adja át készülékét másoknak. -5. A fenti körülményeken kívül ügyeljen más olyan helyzetekre is, amelyek befolyásolhatják az arcfelismerés normál használatát. - -Az arcfelismerés jobb kihasználása érdekében az arcadatok bevitelekor ügyeljen a következőkre: -1. Kérjük maradjon jól megvilágított környezetben, kerülje a közvetlen napfényt és más személyek megjelenését a rögzített képernyőn. -2. Kérjük az adatok bevitelekor ügyeljen az arc állapotára, és ne hagyja, hogy sapkája, haja, napszemüvege, maszkja, erős sminkje és egyéb tényezők eltakarják arcvonásait. -3. Kérjük kerülje a fej megdöntését vagy lehajtását, a szemek becsukását vagy az arcának csak az egyik oldalának észlelését, és ügyeljen arra, hogy az elülső arca tisztán és teljesen megjelenjen a felszólító mezőben. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - A „Biometrikus hitelesítés” az UnionTech® Software Technology Co., Ltd. által biztosított, a felhasználók azonosságának hitelesítésére szolgáló funkció. A „Biometrikus hitelesítés” révén az összegyűjtött biometrikus adatok összehasonlításra kerülnek az eszközben tárolt adatokkal, és a felhasználói azonosság hitelesítése az összehasonlítás eredménye. -Felhívjuk figyelmét, hogy az UnionTech® nem gyűjti, és nem fér hozzá az Ön biometrikus adataihoz, amelyeket a helyi eszközön tárol. Kérjük csak a személyes eszközén engedélyezze a biometrikus hitelesítést, és használja saját biometrikus adatait a kapcsolódó műveletekhez, és haladéktalanul tiltsa le vagy törölje mások biometrikus adatait azon az eszközön, ellenkező esetben az ebből eredő kockázatot Ön viseli. -Az UnionTech® elkötelezett a biometrikus hitelesítés biztonságának, pontosságának és stabilitásának kutatása és javítása mellett. A környezeti, felszereltségi, műszaki és egyéb tényezők, valamint a kockázatkezelés miatt azonban nincs garancia arra, hogy ideiglenesen átmegy a biometrikus hitelesítésen. Ezért kérjük, ne használja a biometrikus hitelesítést az UnionTech® operációs rendszerbe való bejelentkezés egyetlen módjának. Ha bármilyen kérdése vagy javaslata van a biometrikus hitelesítés használatával kapcsolatban, visszajelzést küldhet az UnionTech® operációs rendszer „Szolgáltatás és támogatás” részében - - - - Cancel - Mégsem - - - Next - Következő - - - - DisclaimersItem - - I have read and agree to the - Elolvastam, és egyet értek a - - - Disclaimer - Jogi nyilatkozat - - - - DockModuleObject - - Dock - Kitűzés a Dokkolóra - - - Multiple Displays - Többképernyős mód - - - Show Dock - Dokkoló mutatása - - - Mode - Mód - - - Position - Pozíció - - - Status - Állapot - - - Show recent apps in Dock - Legutóbbi alkalmazások megjelenítése a Dokkon - - - Size - Méret - - - Plugin Area - Bővítmény terület - - - Select which icons appear in the Dock - Válassza ki, hogy mely ikonok jelenjenek meg a dokkolóban - - - Fashion mode - Stílusos mód - - - Efficient mode - Hatékony mód - - - Top - Fent - - - Bottom - Lent - - - Left - Bal - - - Right - Jobb - - - Location - Hely - - - Keep shown - Folyamatosan látható - - - Keep hidden - Rejtett - - - Smart hide - Intelligens elrejtés - - - Small - Kicsi - - - Large - Nagy - - - On screen where the cursor is - A képernyőn, ahol a kurzor található - - - Only on main screen - Csak a főképernyőn - - - - FaceInfoDialog - - Enroll Face - Arc rögzítése - - - Position your face inside the frame - Helyezze az arcát a keretbe - - - - FaceWidget - - Edit - Szerkesztés - - - Manage Faces - Arcok kezelése - - - You can add up to 5 faces - Legfeljebb 5 arcot adhat hozzá - - - Done - Kész - - - Add Face - Arc hozzáadása - - - The name already exists - Ez a név már létezik - - - Faceprint - Arclenyomat - - - - FaceidDetailWidget - - No supported devices found - Nem található támogatott eszköz - - - - FingerDetailWidget - - No supported devices found - Nem található támogatott eszköz - - - - FingerDisclaimer - - Add Fingerprint - Ujjlenyomat hozzáadása - - - Cancel - Mégsem - - - Next - Következő - - - - FingerInfoWidget - - Place your finger - Helyezze az ujját - - - Place your finger firmly on the sensor until you're asked to lift it - Tegye az ujját határozottan az érzékelőre, amíg nem kérjük, hogy emelje fel - - - Scan the edges of your fingerprint - Olvassa be az ujjlenyomat széleit - - - Place the edges of your fingerprint on the sensor - Helyezze az ujjlenyomat széleit az érzékelőre - - - Lift your finger - Emelje fel az ujját - - - Lift your finger and place it on the sensor again - Emelje fel az ujját, és helyezze ismét az érzékelőre - - - Adjust the position to scan the edges of your fingerprint - Állítsa be az ujj helyzetét az ujjlenyomat széleinek beolvasásához - - - Lift your finger and do that again - Emelje fel az ujját, és próbálja újra - - - Fingerprint added - Ujjlenyomat hozzáadva - - - - FingerWidget - - Edit - Szerkesztés - - - Fingerprint Password - Ujjlenyomathoz tartozó jelszó - - - You can add up to 10 fingerprints - Legfeljebb 10 ujjlenyomatot adhat hozzá - - - Done - Kész - - - The name already exists - Ez a név már létezik - - - Add Fingerprint - Ujjlenyomat hozzáadása - - - - GeneralModule - - General - Általános - - - Balanced - Kiegyensúlyozott - - - Balance Performance - Kiegyensúlyozott teljesítményű - - - High Performance - Nagy teljesítményű - - - Power Saver - Energiatakarékos - - - Power Plans - Energiagazdálkodási tervek - - - Power Saving Settings - Energiatakarékossági beállítások - - - Auto power saving on low battery - Automatikus energiatakarékosság alacsony akkumulátorszint mellett - - - Decrease Brightness - Fényerősség csökkentése - - - Low battery threshold - Alacsony akkumulátorszint küszöbértéke - - - Auto power saving on battery - Automatikus energiatakarékosság akkumulátoros üzemmódban - - - Wakeup Settings - Felébresztési beállítások - - - Unlocking is required to wake up the computer - Feloldás szükséges a számítógép felébresztéséhez - - - Unlocking is required to wake up the monitor - Feloldás szükséges a monitor felébresztéséhez - - - - HostNameItem - - It cannot start or end with dashes - Nem kezdődhet és nem zárulhat kötőjelekkel - - - 1~63 characters please - Kérjük 1~63 karakter legyen - - - - InternalButtonItem - - Internal testing channel - Belső tesztelési csatorna - - - click here open the link - Kattintson ide a hivatkozás megnyitásához - - - - IrisDetailWidget - - No supported devices found - Nem található támogatott eszköz - - - - IrisWidget - - Edit - Szerkesztés - - - Manage Irises - Íriszek kezelése - - - You can add up to 5 irises - Legfeljebb 5 íriszt adhat hozzá - - - Done - Kész - - - Add Iris - Írisz hozzáadása - - - The name already exists - Ez a név már létezik - - - Iris - Írisz - - - - KeyLabel - - None - Nincs - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Szerzői jog© 2011 - %1 Deepin® Közösség - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Szerzői Jog© 2019 - %1 UnionTech® Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Bemeneti eszköz - - - Automatic Noise Suppression - Automatikus zajcsökkentés - - - Input Volume - Bemeneti hangerő - - - Input Level - Bemeneti szint - - - - PersonalizationDesktopModule - - Desktop - Asztal - - - Window - Ablak - - - Window Effect - Ablakok effektezése - - - Window Minimize Effect - Ablak kicsinyítéseffektje - - - Transparency - Áttetszőség - - - Rounded Corner - Lekerekített sarkok - - - Scale - Méretezés - - - Magic Lamp - Mágikus Lámpa - - - Small - Kicsi - - - Middle - Közepes - - - Large - Nagy - - - - PersonalizationModule - - Personalization - Felhasználói felület - - - - PersonalizationThemeList - - Cancel - Mégsem - - - Save - Mentés - - - Light - Lágy - - - Dark - Sötét - - - Auto - Automatikus - - - Default - Alapértelmezett - - - - PersonalizationThemeModule - - Theme - Téma - - - Appearance - Megjelenés - - - Accent Color - Kiemelő szín - - - Icon Settings - Ikon beálltások - - - Icon Theme - Ikontéma - - - Cursor Theme - Kurzortéma - - - Text Settings - Szöveg beállítások - - - Font Size - Betűméret - - - Standard Font - Általános betűtípus - - - Monospaced Font - Állandó szélességű betűtípus - - - Light - Lágy - - - Auto - Automatikus - - - Dark - Sötét - - - - PersonalizationThemeWidget - - Light - Lágy - General - /personalization/General - - - Dark - Sötét - General - /personalization/General - - - Auto - Automatikus - General - /personalization/General - - - Default - Alapértelmezett - - - - PersonalizationWorker - - Custom - Egyéni - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - A Bluetooth-eszközhöz való kapcsolódás PIN-kódja: - - - Cancel - Mégsem - - - Confirm - Megerősítés - - - - PowerModule - - Power - Energiaellátás - - - Battery low, please plug in - Alacsony akkumulátor szint, kérjük csatlakoztassa a számítógépet a töltőre. - - - Battery critically low - Az akkumlátor töltöttsége kritikusan alacsony - - - - PrivacyModule - - Privacy and Security - Adatvédelem és biztonság - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - Felhasználói mappák - - - Calendar - Naptár - - - Screen Capture - Képernyőfelvétel - - - - QObject - - Control Center - Vezérlőpult - - - , - , - - - Error occurred when reading the configuration files of password rules! - Hiba történt a jelszószabályok konfigurációs fájljainak olvasásakor! - - - Auto adjust CPU operating frequency based on CPU load condition - A processzor működési frekvenciájának automatikus beállítása a processzor terhelési állapota alapján - - - Aggressively adjust CPU operating frequency based on CPU load condition - A processzor működési frekvenciájának agresszív beállítása a processzor terhelési állapota alapján - - - Be good to imporving performance, but power consumption and heat generation will increase - Ügyeljen a teljesítmény javítására, de az energiafogyasztás és a hőtermelés növekedni fog - - - CPU always works under low frequency, will reduce power consumption - A processzor mindig alacsony frekvencián működik, csökkenti az energiafogyasztást - - - Activated - Aktiválva - - - View - Megtekintés - - - To be activated - Aktiválandó - - - Activate - Aktiválás - - - Expired - Lejárt - - - In trial period - Próbaidőszakban - - - Trial expired - A próbaidőszak lejárt - - - Touch Screen Settings - Érintőképernyő beállításai - - - The settings of touch screen changed - Az érintőképernyő beállításai megváltoztak - - - Checking system versions, please wait... - Rendszer verzió ellenőrzése, kérjük várjon... - - - Leave - Elhagyás - - - Cancel - Mégsem - - - - RegionModule - - Region and format - Régió és Formátum - - - Country or Region - Régió - - - Format - Formátum - - - Provide localized services based on your region. - Az régiója alapján lokalizált szolgáltatások nyújtása. - - - Select matching date and time formats based on language and region - Válassza ki a megfelelő dátum- és időformátumot a nyelv és a régió alapján - - - Region format - Nyelv és Régió - - - First day of week - A hét első napja - - - Short date - Rövid -dátumformátum - - - Long date - Hosszú -dátumformátum - - - Short time - Rövid -időformátum - - - Long time - Hosszú -időformátum - - - Currency symbol - Pénznem szimbóluma - - - Numbers - Számok - - - Paper - Papír - - - Custom format - Egyedi formátum - - - - ResultItem - - Your system is not authorized, please activate first - A rendszere nincs engedélyezve, kérjük először aktiválja - - - Update successful - A frissítés sikeres - - - Failed to update - A frissítés sikertelen - - - - SearchInput - - Search - Keresés - - - - ServiceSettingsModule - - Apps can access your camera: - Alkalmazások, amelyek hozzáférhetnek a kamerához - - - Apps can access your microphone: - Alkalmazások, amelyek hozzáférhetnek mikrofonhoz: - - - Apps can access user folders: - Alkalmazások, amelyek hozzáférhetnek a felhasználói mappákhoz: - - - Apps can access Calendar: - Alkalmazások, amelyek hozzáférhetnek a naptárhoz: - - - Apps can access Screen Capture: - Alkalmazások, amelyek hozzáférhetnek a képernyő felvételekhez: - - - No apps requested access to the camera - Egyetlen alkalmazás sem kért hozzáférést a kamerához - - - No apps requested access to the microphone - Egyetlen alkalmazás sem kért hozzáférést a mikrofonhoz - - - No apps requested access to user folders - Egyetlen alkalmazás sem kért hozzáférést a felhasználói mappákhoz - - - No apps requested access to Calendar - Egyetlen alkalmazás sem kért hozzáférést a naptárhoz - - - No apps requested access to Screen Capture - Egyetlen alkalmazás sem kért hozzáférést a képernyő felvételekhez - - - - SoundEffectsPage - - Sound Effects - Hangeffektusok - - - - SoundModel - - Boot up - Rendszerindítás - - - Shut down - Leállítás - - - Log out - Kijelentkezés - - - Wake up - Felébresztés - - - Volume +/- - Hangerő +/- - - - Notification - Értesítések - - - Low battery - Alacsony akkumulátor töltöttség - - - Send icon in Launcher to Desktop - Ikon küldése az Indítóból az Asztalra - - - Empty Trash - Kuka ürítése - - - Plug in - Csatlakoztatva - - - Plug out - Lecsatlakoztatva - - - Removable device connected - Eltávolítható eszköz csatlakoztatva - - - Removable device removed - Eltávolítható eszköz lecsatlakozva - - - Error - Hiba - - - - SoundModule - - Sound - Hangok - - - - SoundPlugin - - Output - Kimenet - - - Auto pause - Automatikus szüneteltetés - - - Whether the audio will be automatically paused when the current audio device is unplugged - Meghatározza, hogy a hang automatikusan szünetel, amikor az aktuális audió eszközt leválasztják  - - - Input - Bemenet - - - Sound Effects - Hangeffektusok - - - Devices - Eszközök - - - Input Devices - Bemeneti eszközök - - - Output Devices - Kimeneti eszközök - - - - SpeakerPage - - Output Device - Kimeneti eszköz - - - Mode - Mód - - - Output Volume - Kimeneti hangerő - - - Volume Boost - Hangzás felerősítése - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Ha a hangerő 100%-nál nagyobb, az torzíthatja a hangot, és káros lehet a kimeneti eszközökre - - - Left/Right Balance - Bal / Jobb egyensúly - - - Left - Bal - - - Right - Jobb - - - - TimeSettingModule - - Time Settings - Idő beállításai - - - Time - Idő - - - Auto Sync - Automatikus szinkronizálás - - - Reset - Visszaállítás - - - Save - Mentés - - - Server - Szerver - - - Address - Cím - - - Required - Kötelező - - - Customize - Testreszabás - - - Year - Év - - - Month - Hónap - - - Day - Nap - - - - TimeZoneChooser - - Cancel - Mégsem - - - Confirm - Megerősítés - - - Add Timezone - Időzóna hozzáadása - - - Add - Hozzáadás - - - Change Timezone - Időzóna módosítása - - - - TimeoutDialog - - Save the display settings? - Menti a képernyő beállításokat? - - - Settings will be reverted in %1s. - A beállítások visszaállnak %1mp múlva. - - - Revert - Visszaállítás - - - Save - Mentés - - - - TimezoneItem - - Tomorrow - Holnap - - - Yesterday - Tegnap - - - Today - Ma - - - %1 hours earlier than local - %1 órával korábban, mint a helyi idő - - - %1 hours later than local - %1 órával később a helyi időhöz képest - - - - TimezoneModule - - Timezone List - Időzóna lista - - - System Timezone - Rendszer időzónája - - - Add Timezone - Időzóna hozzáadása - - - - TreeCombox - - Collaboration Settings - Együttműködési beállítások - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - A felhasználói fiók nincs összekapcsolva az Union® azonosítóval - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - A jelszavak visszaállításához először hitelesítenie kell Union® azonosítóját. Kattintson a "Ugrás a linkre" gombra a beállítások befejezéséhez. - - - Cancel - Mégsem - - - Go to Link - Ugrás a linkre - - - - UnknownUpdateItem - - Release date: - Kiadási dátum: - - - - UpdateCtrlWidget - - Check Again - Újra ellenőrzés - - - Update failed: insufficient disk space - A frissítés sikertelen: nincs elegendő lemezterület - - - Dependency error, failed to detect the updates - Függőségi hiba, a frissítések keresése sikertelen - - - Restart the computer to use the system and the applications properly - Indítsa újra a számítógépet a rendszer és az alkalmazások megfelelő használatához - - - Network disconnected, please retry after connected - A hálózat lecsatlakoztatva, kérjük próbálja meg újra a csatlakozás után. - - - Your system is not authorized, please activate first - A rendszere nincs engedélyezve, kérjük először aktiválja - - - This update may take a long time, please do not shut down or reboot during the process - Ez a frissítés hosszú időt vehet igénybe, kérjük ez alatt ne kapcsolja ki, és ne indítsa újra a számítógépet. - - - Updates Available - Frissítések érhetőek el - - - Current Edition - Jelenlegi verzió - - - Updating... - Frissítés... - - - Update All - Az összes frissítése - - - Last checking time: - Utolsó ellenőrzés ideje: - - - Your system is up to date - A rendszere naprakész - - - Check for Updates - Frissítések keresése - - - Checking for updates, please wait... - Frissítések keresése, kérjük várjon... - - - The newest system installed, restart to take effect - A legfrissebb rendszer telepítve, újraindítás szükséges a befejezéshez - - - %1% downloaded (Click to pause) - %1% letöltve (Kattintson a szüneteltetéshez) - - - %1% downloaded (Click to continue) - %1% letöltve (Kattintson a folytatáshoz) - - - Your battery is lower than 50%, please plug in to continue - Az akkumulátor töltöttsége 50% alatt van, kérjük csatlakoztassa a töltőre a készüléket. - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Kérjük gondoskodjon a megfelelő áramellátásról az újraindításhoz, ne kapcsolja ki vagy húzza ki a számítógépet - - - Size - Méret - - - - UpdateModule - - Updates - Frissítések - - - - UpdatePlugin - - Check for Updates - Frissítések keresése - - - - UpdateSettingItem - - Insufficient disk space - Nincs elég lemezterület - - - Update failed: insufficient disk space - A frissítés sikertelen: nincs elegendő lemezterület - - - Update failed - A frissítés sikertelen - - - Network error - Hálózati hiba - - - Network error, please check and try again - Hálózati hiba, kérjük ellenőrizze, és próbálja újra - - - Packages error - Csomag hiba - - - Packages error, please try again - Csomag hiba, kérjük próbálja újra - - - Dependency error - Függőségi hiba - - - Unmet dependencies - Ki nem elégített függőségek - - - The newest system installed, restart to take effect - A legfrissebb rendszer telepítve, újraindítás szükséges a befejezéshez - - - Waiting - Várakozás - - - Backing up - Biztonsági mentés folyamatban - - - System backup failed - Biztonsági mentés készítése sikertelen - - - Release date: - Kiadási dátum: - - - Server - Szerver - - - Desktop - Asztal - - - Version - Verzió - - - - UpdateSettingsModule - - Update Settings - Frissítési beállítások - - - System - Rendszer - - - Security Updates Only - Csak a Biztonsági frissítések - - - Switch it on to only update security vulnerabilities and compatibility issues - Kapcsolja be, hogy csak a biztonsági és kompatibilitási frissítések érvényesüljenek - - - Third-party Repositories - Harmadik féltől származó adattárak - - - linglong update - Linglong frissítés - - - Linglong Package Update - Linglong csomag frissítés - - - If there is update for linglong package, system will update it for you - Ha van frissítés a Linglong csomaghoz, a rendszer frissíti azt Ön helyett - - - Other settings - Egyéb beállítások - - - Auto Check for Updates - Frissítés automatikus ellenőrzése - - - Auto Download Updates - Frissítések automatikus letöltése - - - Switch it on to automatically download the updates in wireless or wired network - Kapcsolja be a frissítések automatikus letöltéséhez vezeték nélküli vagy vezetékes hálózatban - - - Auto Install Updates - Frissítések automatikus telepítése - - - Updates Notification - Frissítési értesítés - - - Clear Package Cache - Csomaggyorsítótár törlése - - - Updates from Internal Testing Sources - Belső tesztelési forrásokból származó frissítések - - - internal update - Belső frissítés - - - Join the internal testing channel to get deepin latest updates - Csatlakozzon a belső tesztelési csatornához, hogy megkapja a Deepin® legújabb frissítéseit - - - System Updates - Rendszer frissítések - - - Security Updates - Biztonsági frissítések - - - Install updates automatically when the download is complete - A letöltés befejeztével automatikusan telepítse a frissítéseket - - - Install "%1" automatically when the download is complete - A %1 automatikus telepítése a letöltés befejeztével - - - - UpdateWidget - - Current Edition - Jelenlegi verzió - - - - UpdateWorker - - System Updates - Rendszer frissítések - - - Fixed some known bugs and security vulnerabilities - Kijavítottunk néhány ismert hibát és biztonsági rést - - - Security Updates - Biztonsági frissítések - - - Third-party Repositories - Harmadik féltől származó adattárak - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Nem biztonságos, ha most elhagyja a belső tesztelési csatornát, továbbra is el akarja hagyni azt? - - - Your are safe to leave the internal testing channel - Biztonságosan kiléphet a teszt csoportból - - - Cannot find machineid - A Gép azonosító nem található - - - Cannot Uninstall package - A csomag nem távolítható el - - - Error when exit testingChannel - Hiba a Teszt csoportból való kilépéskor - - - try to manually uninstall package - Próbálja meg manuálisan eltávolítani a csomagot - - - Cannot install package - A csomag nem telepíthető - - - - UseBatteryModule - - On Battery - Akkumulátoron - - - Never - Soha - - - Shut down - Leállítás - - - Suspend - Alvó állapot - - - Hibernate - Hibernálás - - - Turn off the monitor - Monitor kikapcsolása - - - Do nothing - Ne tegyen semmit - - - 1 Minute - 1 perc - - - %1 Minutes - %1 perc - - - 1 Hour - 1 óra - - - Screen and Suspend - Képernyő és Alvó állapot - - - Turn off the monitor after - A Monitor kikapcsolása ennyi idő után - - - Lock screen after - Képernyő zárolása ennyi idő után: - - - Computer suspends after - A számítógép alvó állapotba kerül ennyi idő után - - - Computer will suspend after - A számítógép alvó állapotba kerül ennyi idő után: - - - When the lid is closed - Képernyő -lecsukásakor - - - When the power button is pressed - A bekapcsoló gomb megnyomásakor - - - Low Battery - Alacsony akkumulátor töltöttség - - - Low battery notification - Alacsony töltöttségi szint értesítés - - - Low battery level - Alacsony akkumulátor töltöttség értéke - - - Auto suspend battery level - Automatikus alvó állapot az akkumulátor alábbi töltöttségi szintjén - - - Battery Management - Akkumulátor Gazdálkodás - - - Display remaining using and charging time - A hátralévő használati idő, és a töltési idő megjelenítése - - - Maximum capacity - Akkumulátor maximális teljesítménye - - - Show the shutdown Interface - Leállítási felület mutatása - - - - UseElectricModule - - Plugged In - Áramforráshoz csatlakoztatva - - - 1 Minute - 1 perc - - - %1 Minutes - %1 perc - - - 1 Hour - 1 óra - - - Never - Soha - - - Screen and Suspend - Képernyő és Alvó állapot - - - Turn off the monitor after - A Monitor kikapcsolása ennyi idő után - - - Lock screen after - Képernyő zárolása ennyi idő után: - - - Computer suspends after - A számítógép alvó állapotba kerül ennyi idő után - - - When the lid is closed - Képernyő -lecsukásakor - - - When the power button is pressed - A bekapcsoló gomb megnyomásakor - - - Shut down - Leállítás - - - Suspend - Alvó állapot - - - Hibernate - Hibernálás - - - Turn off the monitor - Monitor kikapcsolása - - - Show the shutdown Interface - Leállítási felület mutatása - - - Do nothing - Ne tegyen semmit - - - - WacomModule - - Drawing Tablet - Rajztábla - - - Mode - Mód - - - Pressure Sensitivity - Nyomásérzékenység - - - Pen - Toll - - - Mouse - Egér - - - Light - Lágy - - - Heavy - Erős - - - - main - - Control Center provides the options for system settings. - A Vezérlőpulton keresztül módosíthatja a beállításokat - - - - updateControlPanel - - Downloading - Letöltés - - - Waiting - Várakozás - - - Installing - Telepítés - - - Backing up - Biztonsági mentés folyamatban - - - Download and install - Letöltés és telepítés - - - Learn more - Tudjon meg többet - - - diff --git a/dcc-old/translations/dde-control-center_hy.ts b/dcc-old/translations/dde-control-center_hy.ts deleted file mode 100644 index 7545911f4d..0000000000 --- a/dcc-old/translations/dde-control-center_hy.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - Վերանվանել - - - Send Files - - - - Ignore this device - - - - Connecting - Միացվում է - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Չեղարկել - - - Next - Հաջորդ - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - Փակել - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Չեղարկել - - - Next - Հաջորդ - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Չեղարկել - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Չեղարկել - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - Միշտ - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Չեղարկել - - - OK - Լավ - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Չեղարկել - - - Save - Պահել - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - Չեղարկել - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - Չեղարկել - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - Անվանում - - - Required - - - - Command - - - - Cancel - Չեղարկել - - - Add - Ավելացնել - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - Չեղարկել - - - Save - Պահել - - - Shortcut - - - - Name - Անվանում - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Հաջորդ - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Չեղարկել - - - Restart Now - Վերամեկնարկել Հիմա - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - Չեղարկել - - - Add - Ավելացնել - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - Ստեղնաշար - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - Չեղարկել - - - Save - Պահել - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - Գլխավոր - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Չեղարկել - - - Delete - Ջնջել - - - - dccV23::ResolutionWidget - - Resolution - Թույլտվություն - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Սովորական - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Փնտրել - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Չեղարկել - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - Պատուհան - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Չեղարկել - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - Տարբերակ - - - Edition - - - - Type - Ձև - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Չեղարկել - - - Add - Ավելացնել - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - Չեղարկել - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - Տեսանյութ - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Չեղարկել - - - Next - Հաջորդ - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - Չափս - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - Ձախ - - - Right - Աջ - - - Location - Վայր - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Չեղարկել - - - Next - Հաջորդ - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - Գլխավոր - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Աշխատասեղան - - - Window - Պատուհան - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - Չեղարկել - - - Save - Պահել - - - Light - - - - Dark - - - - Auto - - - - Default - Սովորական - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - Սովորական - - - - PersonalizationWorker - - Custom - Ընտրովի - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Չեղարկել - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - Ղեկավարման Կենտրոն - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Չեղարկել - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Փնտրել - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - Անջատել - - - Log out - Դուրս գալ համակարգից - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - Արտադրանք - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - Ձախ - - - Right - Աջ - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - Ետարկել - - - Save - Պահել - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Չեղարկել - - - Confirm - - - - Add Timezone - - - - Add - Ավելացնել - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Պահել - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Չեղարկել - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Չափս - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - Աշխատասեղան - - - Version - Տարբերակ - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - Անջատել - - - Suspend - Ընդհատել - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Անջատել - - - Suspend - Ընդհատել - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_id.ts b/dcc-old/translations/dde-control-center_id.ts deleted file mode 100644 index 88f6d17d75..0000000000 --- a/dcc-old/translations/dde-control-center_id.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Aktifkan bluetooth untuk menemukan perangkat terdekat (loudspeaker, papan tombol, tetikus) - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Sambungkan - - - Disconnect - Putus - - - Rename - Ganti nama - - - Send Files - - - - Ignore this device - Abaikan perangkat ini - - - Connecting - Menyambung - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - Buka berkas Desktop - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Batal - - - Next - Selanjutnya - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Selesai - - - Failed to enroll your face - - - - Try Again - - - - Close - Tutup - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Batal - - - Next - Selanjutnya - - - Iris enrolled - - - - Done - Selesai - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Sidik jari - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Tersambung - - - Not connected - Tidak tersambung - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - Jari digerakkan terlalu cepat, mohon jangan angkat sampai diminta - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Batal - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Batal - - - Confirm - button - Konfirmasi - - - - dccV23::AccountSpinBox - - Always - Selalu - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Nama pengguna - - - Change Password - Ganti sandi lewat - - - Delete User - - - - User Type - - - - Auto Login - Masuk Otomatis - - - Login Without Password - Masuk tanpa sandi lewat - - - Validity Days - - - - Group - Grup - - - The full name is too long - Nama lengkap terlalu panjang - - - Standard User - - - - Administrator - Administrator - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Nama Lengkap - - - Go to Settings - Pergi kepengaturan - - - Cancel - Batal - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Host anda sudah berhasil dihapus dari server domain - - - Your host joins the domain server successfully - Host anda telah berhasil gabung dengan peladen domain. - - - Your host failed to leave the domain server - Host anda telah gagal meninggalkan domain peladen. - - - Your host failed to join the domain server - Host anda gagal gabung dengan domain peladen. - - - AD domain settings - Pengaturan domain AD - - - Password not match - Sandi lewat tidak cocok - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Batal - - - Save - Simpan - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Gambar - - - - dccV23::BootWidget - - Updating... - Memperbarui... - - - Startup Delay - Jeda Pemulaian - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Aktifkan tema untuk melihatnya di menu muat ulang - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Ganti sandi lewat - - - Boot Menu - Menu Boot - - - Change GRUB password - - - - Username: - Nama pengguna: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Dibutuhkan - - - Cancel - button - Batal - - - Confirm - button - Konfirmasi - - - Password cannot be empty - Sandi lewat tidak boleh kosong - - - Passwords do not match - Sandi lewat tidak cocok - - - - dccV23::BrightnessWidget - - Brightness - Kecerahan - - - Color Temperature - - - - Auto Brightness - Kecerahan Otomatis - - - Night Shift - Bergeser Malam - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - Pengaturan Umum - - - Boot Menu - Menu Boot - - - Developer Mode - - - - User Experience Program - Program pengalaman pengguna - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Grup - - - Cancel - Batal - - - Create - Buat - - - New User - - - - User Type - - - - Username - Nama pengguna - - - Full Name - Nama Lengkap - - - Password - Sandi lewat - - - Repeat Password - Ulang Kata sandi - - - Password Hint - - - - The full name is too long - Nama lengkap terlalu panjang - - - Passwords do not match - Sandi lewat tidak cocok - - - Standard User - - - - Administrator - Administrator - - - Customized - - - - Required - Dibutuhkan - - - optional - opsional - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Nama pengguna harus terdiri dari 3-32 karakter - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Gambar - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Tambah Pintasan Sesuaian - - - Name - Nama - - - Required - Dibutuhkan - - - Command - Perintah - - - Cancel - Batal - - - Add - Tambah - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Pintasan ini bermasalah dengan %1, klik "Tambah" untuk membuat pintasan ini efektif secara langsung - - - - dccV23::CustomEdit - - Required - Dibutuhkan - - - Cancel - Batal - - - Save - Simpan - - - Shortcut - Pintasan - - - Name - Nama - - - Command - Perintah - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Pintasan ini bermasalah dengan %1, klik "Tambah" untuk membuat pintasan ini efektif secara langsung - - - - dccV23::CustomItem - - Shortcut - Pintasan - - - Please enter a shortcut - Mohon masukkan pintasan - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Selanjutnya - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Mode pengembang memungkinkan Anda untuk mendapatkan hak akses root, memasang dan menjalankan aplikasi yang tidak ditandatangani yang tidak terdaftar di app store, tetapi integritas sistem Anda mungkin juga rusak, harap gunakan dengan hati-hati. - - - The feature is not available at present, please activate your system first - Fitur ini tidak tersedia saat ini, harap aktifkan sistem Anda terlebih dahulu - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Batal - - - Restart Now - Nyalakan ulang Sekarang - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Tampilan - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Coba Klik-ganda - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Ulangi Jeda - - - Short - Pendek - - - Long - Panjang - - - Repeat Rate - Tingkat Pengulangan - - - Slow - Lambat - - - Fast - Cepat - - - Test here - Ujicoba di sini - - - Numeric Keypad - - - - Caps Lock Prompt - Caps Lock Prompt - - - - dccV23::GeneralSettingWidget - - Left Hand - Tangan Kiri - - - Disable touchpad while typing - - - - Scrolling Speed - Kecepatan Gulir - - - Double-click Speed - Kecepatan Klik-ganda - - - Slow - Lambat - - - Fast - Cepat - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Tata letak Papan tombol - - - Edit - Sunting - - - Add Keyboard Layout - Tambahkan Tata Letak tombol - - - Done - Selesai - - - - dccV23::KeyboardLayoutDialog - - Cancel - Batal - - - Add - Tambah - - - Add Keyboard Layout - Tambahkan Tata Letak tombol - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Papan tombol dan Bahasa - - - Keyboard - Papan Ketik - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Tata letak Papan tombol - - - Language - Bahasa - - - Shortcuts - Pintasan - - - - dccV23::MainWindow - - Help - Bantuan - - - - dccV23::ModifyPasswdPage - - Change Password - Ganti sandi lewat - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Kata sandi saat ini - - - Forgot password? - Lupa kata sandi? - - - New Password - Sandi Baru - - - Repeat Password - Ulang Kata sandi - - - Password Hint - - - - Cancel - Batal - - - Save - Simpan - - - Passwords do not match - Sandi lewat tidak cocok - - - Required - Dibutuhkan - - - Optional - Pilihan - - - Password cannot be empty - Sandi lewat tidak boleh kosong - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Sandi lewat salah - - - New password should differ from the current one - Kata sandi baru harus berbeda dari kata sandi saat ini - - - System error - - - - Network error - Jaringan bermasalah - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Tetikus - - - General - Umum - - - Touchpad - Bantalan sentuh - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Kecepatan Pointer - - - Mouse Acceleration - Akselerasi Tetikus - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Menggulung Alami - - - Slow - Lambat - - - Fast - Cepat - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Mode - /display/Mode - - - Main Screen - Layar Utama - /display/Main Scree - - - Duplicate - Duplikat - - - Extend - Beberkan - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notifikasi - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - Sandi lewat tidak boleh kosong - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - Hz - - - Recommended - Direkomendasikan - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Hapus direktori akun - - - Cancel - Batal - - - Delete - Hapus - - - - dccV23::ResolutionWidget - - Resolution - Resolusi - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Bawaan - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Direkomendasikan - - - - dccV23::RotateWidget - - Rotation - Rotasi - /display/Rotation - - - Standard - Standar - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Cari - - - - dccV23::SecondaryScreenDialog - - Brightness - Kecerahan - - - - dccV23::SecurityLevelItem - - Weak - Lemah - - - Medium - Sedang - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Batal - - - Confirm - Konfirmasi - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Sunting - - - Done - Selesai - - - - dccV23::ShortCutSettingWidget - - System - Sistem - - - Window - Jendela - - - Workspace - Ruang kerja - - - Assistive Tools - - - - Custom Shortcut - Pintasan Sesuaian - - - Restore Defaults - Pulihkan baku - - - Shortcut - Pintasan - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Silakan Setel ulang Pintasan - - - Cancel - Batal - - - Replace - Timpa - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Pintasan ini konflik dengan %1, klik pada Menimpa untuk membuat pintasan ini efektif secara langsung - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - tersedia - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - Nama Komputer - - - systemInfo - - - - OS Name - - - - Version - Versi - - - Edition - - - - Type - Tipe - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Edisi lisensi - - - End User License Agreement - Perjanjian Lisensi Pengguna Akhir - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - Informasi Sistem - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Batal - - - Add - Tambah - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Sunting - - - Language List - Daftar Bahasa - - - Add Language - - - - Done - Selesai - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Konfirmasi - - - Cancel - Batal - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Kecepatan Pointer - - - Slow - Lambat - - - Fast - Cepat - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Bergabung program pengalaman pengguna - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Tahun - - - Month - Bulan - - - Day - Hari - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Aplikasi-aplikasi Standar - - - - DefAppPlugin - - Webpage - Halaman Web - - - Mail - Surat - - - Text - Teks - - - Music - Musik - - - Video - Video - - - Picture - Gambar - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Batal - - - Next - Selanjutnya - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - - - - Show Dock - - - - Mode - Mode - - - Position - Posisi - - - Status - Status - - - Show recent apps in Dock - - - - Size - Ukuran - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Mode trendi - - - Efficient mode - Modus efisien - - - Top - Atas - - - Bottom - Bawah - - - Left - Kiri - - - Right - Kanan - - - Location - Lokasi - - - Keep shown - - - - Keep hidden - Biarkan tetap tersembunyi - - - Smart hide - Penyembunyian cerdas - - - Small - Kecil - - - Large - Besar - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Sunting - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Selesai - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Tambah Sidik Jari - - - Cancel - Batal - - - Next - Selanjutnya - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - Sidik jari ditambahkan - - - - FingerWidget - - Edit - Sunting - - - Fingerprint Password - Sandi lewat Sidik Jari - - - You can add up to 10 fingerprints - - - - Done - Selesai - - - The name already exists - - - - Add Fingerprint - Tambah Sidik Jari - - - - GeneralModule - - General - Umum - - - Balanced - Seimbang - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Sunting - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Selesai - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Tidak ada - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Volume Masukan - - - Input Level - Level Masukan - - - - PersonalizationDesktopModule - - Desktop - Destop - - - Window - Jendela - - - Window Effect - Efek Jendela - - - Window Minimize Effect - - - - Transparency - Transparansi - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Kecil - - - Middle - - - - Large - Besar - - - - PersonalizationModule - - Personalization - Personalisasi - - - - PersonalizationThemeList - - Cancel - Batal - - - Save - Simpan - - - Light - Light - - - Dark - Gelap - - - Auto - Otomatis - - - Default - Bawaan - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Tema Ikon - - - Cursor Theme - Tema Penunjuk - - - Text Settings - - - - Font Size - Ukuran Huruf - - - Standard Font - Fon Standar - - - Monospaced Font - Fon Monospace - - - Light - Light - - - Auto - Otomatis - - - Dark - Gelap - - - - PersonalizationThemeWidget - - Light - Light - General - /personalization/General - - - Dark - Gelap - General - /personalization/General - - - Auto - Otomatis - General - /personalization/General - - - Default - Bawaan - - - - PersonalizationWorker - - Custom - Kustom - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN untuk menyambungkan ke peralatan Bluetooth adalah: - - - Cancel - Batal - - - Confirm - Konfirmasi - - - - PowerModule - - Power - Daya - - - Battery low, please plug in - Baterai lemah, silakan tancapkan - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Kalender - - - Screen Capture - - - - - QObject - - Control Center - Pusat Kontrol - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - Lihat - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Batal - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - Gagal untuk memperbarui - - - - SearchInput - - Search - Cari - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Efek Suara - - - - SoundModel - - Boot up - Hidupkan - - - Shut down - Matikan - - - Log out - Keluar - - - Wake up - Bangunkan - - - Volume +/- - Volume +/- - - - Notification - Notifikasi - - - Low battery - Baterai hampir habis - - - Send icon in Launcher to Desktop - Kirim ikon di Launcher ke Desktop - - - Empty Trash - Kosongkan Tempat Sampah - - - Plug in - Masukan - - - Plug out - Keluarkan - - - Removable device connected - Perangkat removable terpasang - - - Removable device removed - Perangkat removable dilepas - - - Error - Galat - - - - SoundModule - - Sound - Suara - - - - SoundPlugin - - Output - Keluaran - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Masukan - - - Sound Effects - Efek Suara - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Mode - - - Output Volume - Volume Keluaran - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Keseimbangan Kiri/Kanan - - - Left - Kiri - - - Right - Kanan - - - - TimeSettingModule - - Time Settings - Pengaturan Waktu - - - Time - Waktu - - - Auto Sync - Sinkronisasi Otomatis - - - Reset - Atur ulang - - - Save - Simpan - - - Server - Peladen - - - Address - Alamat - - - Required - Dibutuhkan - - - Customize - Kustomisasi - - - Year - Tahun - - - Month - Bulan - - - Day - Hari - - - - TimeZoneChooser - - Cancel - Batal - - - Confirm - Konfirmasi - - - Add Timezone - Tambahkan Zona Waktu - - - Add - Tambah - - - Change Timezone - Ubah Zona Waktu - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Pulihkan - - - Save - Simpan - - - - TimezoneItem - - Tomorrow - Besok - - - Yesterday - Kemarin - - - Today - Hari ini - - - %1 hours earlier than local - %1 jam lebih cepat daripada waktu lokal - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Daftar Zona Waktu - - - System Timezone - Zona waktu sistem - - - Add Timezone - Tambahkan Zona Waktu - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Batal - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Dependensi error, gagal mendeteksi pembaruan - - - Restart the computer to use the system and the applications properly - Restart komputer untuk menggunakan sistem dan aplikasi dengan benar - - - Network disconnected, please retry after connected - Jaringan terputus, silahkan coba lagi setelah terhubung - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - Edisi saat ini - - - Updating... - Memperbarui... - - - Update All - - - - Last checking time: - - - - Your system is up to date - Sistem Anda sudah diperbarui - - - Check for Updates - - - - Checking for updates, please wait... - Memeriksa pembaruan, mohon menunggu... - - - The newest system installed, restart to take effect - Sistem paling baru telah diinstal, nyalakan ulang untuk melihat efek - - - %1% downloaded (Click to pause) - %1% diunduh (klik untuk menghentikan) - - - %1% downloaded (Click to continue) - %1% terunduh (klik untuk lanjut) - - - Your battery is lower than 50%, please plug in to continue - Baterai Anda kurang dari 50%, mohon menyambungkan untuk lanjut - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Mohon pastikan daya mencukupi untuk menyalakan ulang, dan jangan putuskan sambungan dari mesin Anda. - - - Size - Ukuran - - - - UpdateModule - - Updates - Perbarui - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - ruang disk tidak cukup - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - Jaringan bermasalah - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Sistem paling baru telah diinstal, nyalakan ulang untuk melihat efek - - - Waiting - Menunggu - - - Backing up - - - - System backup failed - Gagal mencadangkan sistem - - - Release date: - - - - Server - Peladen - - - Desktop - Destop - - - Version - Versi - - - - UpdateSettingsModule - - Update Settings - Pengaturan Pemutakhiran - - - System - Sistem - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - Unduh Pembaruan Otomatis - - - Switch it on to automatically download the updates in wireless or wired network - Aktifkan untuk mengunduh pembaruan secara otomatis di jaringan nirkabel atau kabel - - - Auto Install Updates - Pasang pembaruan otomatis - - - Updates Notification - Pemberitahuan Pembaruan - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Edisi saat ini - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Tidak pernah - - - Shut down - Matikan - - - Suspend - Tangguhkan - - - Hibernate - Hibernasi - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 menit - - - %1 Minutes - %1 menit - - - 1 Hour - 1 jam - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Kunci layar setelah - - - Computer suspends after - - - - Computer will suspend after - Komputer akan ditangguhkan setelah - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 menit - - - %1 Minutes - %1 menit - - - 1 Hour - 1 jam - - - Never - Tidak pernah - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Kunci layar setelah - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Matikan - - - Suspend - Tangguhkan - - - Hibernate - Hibernasi - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - Tablet gambar - - - Mode - Mode - - - Pressure Sensitivity - - - - Pen - Pen - - - Mouse - Tetikus - - - Light - Light - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - Memasang - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_id_ID.ts b/dcc-old/translations/dde-control-center_id_ID.ts deleted file mode 100644 index e27a049c92..0000000000 --- a/dcc-old/translations/dde-control-center_id_ID.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_it.ts b/dcc-old/translations/dde-control-center_it.ts deleted file mode 100644 index a35297ae15..0000000000 --- a/dcc-old/translations/dde-control-center_it.ts +++ /dev/null @@ -1,3998 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Rendi visibile agli altri dispositivi Bluetooth - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Abilita il bluetooth per identificare dispositivi nelle vicinanze (Speakers, mouse, tastiere..) - - - My Devices - I miei dispositivi - - - Other Devices - Altri dispositivi - - - Show Bluetooth devices without names - Mostra i dispositivi Bluetooth senza nome - - - Connect - Connetti - - - Disconnect - Disconnetti - - - Rename - Rinomina - - - Send Files - Invia file - - - Ignore this device - Ignora questo dispositivo - - - Connecting - Connessione in corso - - - Disconnecting - Disconnessione in corso - - - - AddButtonWidget - - Add Application - Aggiungi App - - - Open Desktop file - Apri file del Desktop - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - Registra viso - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Assicurati che tutte le parti del tuo viso non siano coperte da oggetti e siano chiaramente visibili. Anche il tuo viso dovrebbe essere ben illuminato. - - - Cancel - Annulla - - - Next - Avanti - - - Face enrolled - Viso acquisito - - - Use your face to unlock the device and make settings later - Usa il tuo viso per sbloccare il dispositivo e configurare le impostazioni in un secondo momento - - - Done - Fatto - - - Failed to enroll your face - Acquisizione viso fallito - - - Try Again - Riprova - - - Close - Chiudi - - - - AddFingerDialog - - Cancel - Annulla - - - Done - Fatto - - - Scan Again - Scansiona nuovamente - - - Scan Suspended - Scansione sospesa - - - - AddIrisInfoDialog - - Enroll Iris - Acquisisci iride - - - Cancel - Annulla - - - Next - Avanti - - - Iris enrolled - Iride acquisita - - - Done - Fatto - - - Failed to enroll your iris - Acquisizione iride fallita - - - Try Again - Riprova - - - - AdvancedSettingModule - - Advanced Setting - Impostazioni avanzate - - - Audio Framework - Audio Framework - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - Diversi framework audio presentano ognuno pregi e difetti, puoi scegliere quello che meglio si adatta alle tue esigenze - - - - AuthenticationInfoItem - - No more than 15 characters - Non più di 15 caratteri - - - Use letters, numbers and underscores only, and no more than 15 characters - Usa lettere, numeri ed il trattino basso, e non più di 15 caratteri - - - Use letters, numbers and underscores only - Utilizza delle lettere, numeri e trattini bassi - - - - AuthenticationModule - - Biometric Authentication - Autenticazione biometrica - - - - AuthenticationPlugin - - Fingerprint - Impronta digitale - - - Face - Viso - - - Iris - Iride - - - - BluetoothDeviceModel - - Connected - Connesso - - - Not connected - Non connesso - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Gestione dispositivi bluetooth - - - - CharaMangerModel - - Fingerprint1 - Impronta1 - - - Fingerprint2 - Impronta2 - - - Fingerprint3 - Impronta3 - - - Fingerprint4 - Impronta4 - - - Fingerprint5 - Impronta5 - - - Fingerprint6 - Impronta6 - - - Fingerprint7 - Impronta7 - - - Fingerprint8 - Impronta8 - - - Fingerprint9 - Impronta9 - - - Fingerprint10 - Impronta10 - - - Scan failed - Scansione fallita - - - The fingerprint already exists - L'impronta esiste già - - - Please scan other fingers - Scansiona un altro dito - - - Unknown error - Errore sconosciuto - - - Scan suspended - Scansione sospesa - - - Cannot recognize - Riconoscimento non riuscito - - - Moved too fast - L'hai mosso troppo in fretta - - - Finger moved too fast, please do not lift until prompted - Il dito è stato mosso troppo rapidamente, non spostarlo sino a quando non riceverai ulteriori istruzioni - - - Unclear fingerprint - Impronta non chiara - - - Clean your finger or adjust the finger position, and try again - Pulisci il lettore o riposiziona il dito prima di riprovare - - - Already scanned - Già scansionato - - - Adjust the finger position to scan your fingerprint fully - Sistema la posizione del dito per scannerizzare l'impronta correttamente - - - Finger moved too fast. Please do not lift until prompted - Movimento del dito troppo rapito, non spostarlo sino a nuova istruzione - - - Lift your finger and place it on the sensor again - Posiziona il dito nuovamente sul sensore - - - Position your face inside the frame - Posiziona il viso al centro dell'inquadratura - - - Face enrolled - Viso acquisito - - - Position a human face please - Posiziona il viso per cortesia - - - Keep away from the camera - Allontanati dalla webcam - - - Get closer to the camera - Avvicinati alla webcam - - - Do not position multiple faces inside the frame - Non posizionare più visi all'interno dell'inquadratura - - - Make sure the camera lens is clean - Assicurati che l'obiettivo della webcam sia pulito - - - Do not enroll in dark, bright or backlit environments - Non registrarti in ambienti bui, troppo luminosi o retroilluminati - - - Keep your face uncovered - Mostra il tuo viso - - - Scan timed out - Scansione fuori tempo limite - - - Device crashed, please scan again! - Il dispositivo si è arrestato in modo anomalo, eseguire nuovamente l'analisi! - - - Cancel - Annulla - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Annulla - - - Confirm - button - Conferma - - - - dccV23::AccountSpinBox - - Always - Sempre - - - - dccV23::AccountsModule - - Users - Utenti - - - User management - Gestione utenti - - - Create User - Crea utente - - - Username - Nome utente - - - Change Password - Cambia Password - - - Delete User - Elimina utente - - - User Type - Tipo utente - - - Auto Login - Login automatico - - - Login Without Password - Login senza password - - - Validity Days - Giorni di validità - - - Group - Gruppo - - - The full name is too long - Il nome completo è troppo lungo - - - Standard User - Utente standard - - - Administrator - Amministratore - - - Reset Password - Reset password - - - The full name has been used by other user accounts - Il nome completo è stato utilizzato da altri account utente - - - Full Name - Nome completo - - - Go to Settings - Vai alle impostazioni - - - Cancel - Annulla - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - "Accesso automatico" può essere abilitato per un solo account, disabilitalo prima per l'account "%1". - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - L'host è stato correttamente rimosso dal domain server - - - Your host joins the domain server successfully - L'host si è unito correttamente al domain server - - - Your host failed to leave the domain server - L'host ha fallito la disconnessione dal domain server - - - Your host failed to join the domain server - L'host ha fallitto l'aggancio al domain server - - - AD domain settings - Impostazioni Dominio AD - - - Password not match - La password non corrisponde - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Mostra le notifiche di %1 sul desktop e nel centro notifiche. - - - Play a sound - Esegui un suono di notifica - - - Show messages on lockscreen - Mostra i messaggi nella schermata di blocco - - - Show in notification center - Mostra nel centro notifiche - - - Show message preview - Mostra l'anteprima dei messaggi - - - - dccV23::AvatarListDialog - - Person - Persona - - - Animal - Animale - - - Illustration - Illustrazione - - - Expression - Espressione - - - Custom Picture - Immagine personalizzata - - - Cancel - Annulla - - - Save - Salva - - - - dccV23::AvatarListFrame - - Dimensional Style - Stile dimensioni - - - Flat Style - Stile flat - - - - dccV23::AvatarListView - - Images - Immagini - - - - dccV23::BootWidget - - Updating... - Aggiornamento... - - - Startup Delay - Ritardo avvio - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Puoi cliccare le opzioni del menu di boot per impostare il Sistema preferito, oltre che trascinare un'immagine ed impostarla come sfondo. - - - Click the option in boot menu to set it as the first boot - Clicca le opzioni del menu di boot per impostare l'ordine di avvio - - - Switch theme on to view it in boot menu - Modifica il tema del menu di boot - - - GRUB Authentication - Autenticazione GRUB - - - GRUB password is required to edit its configuration - La password del GRUB è necessaria per modificarne le impostazioni - - - Change Password - Cambia Password - - - Boot Menu - Menu Boot - - - Change GRUB password - Modifica password GRUB - - - Username: - Username: - - - root - root - - - New password: - Nuova password: - - - Repeat password: - Ripeti password: - - - Required - Richiesto - - - Cancel - button - Annulla - - - Confirm - button - Conferma - - - Password cannot be empty - La password non può essere assente - - - Passwords do not match - Le password non coincidono - - - - dccV23::BrightnessWidget - - Brightness - Luminosità - - - Color Temperature - Temperatura colore - - - Auto Brightness - Luminosità automatica - - - Night Shift - Modalità notturna - - - The screen hue will be auto adjusted according to your location - La tonalità dello schermo verrà regolata automaticamente individuando la tua localizzazione - - - Change Color Temperature - Cambia temperatura colore - - - Cool - Fredda - - - Warm - Calda - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - I miei dispositivi - - - Other Devices - Altri dispositivi - - - - dccV23::CommonInfoPlugin - - General Settings - Impostazioni generali - - - Boot Menu - Menu Boot - - - Developer Mode - Modalità sviluppatore - - - User Experience Program - Programma di Betatesting - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Accetta ed unisciti all'User Experience Program - - - The Disclaimer of Developer Mode - Termini e condizioni della Modalità Sviluppatore - - - Agree and Request Root Access - Conferma e richiedi accesso di Root - - - Failed to get root access - Ottenimento permessi di root fallito - - - Please sign in to your Union ID first - Accedi prima al tuo account Union ID - - - Cannot read your PC information - Impossibile leggere le info del PC - - - No network connection - Nessuna connessione ad internet - - - Certificate loading failed, unable to get root access - Caricamento certificato fallito, impossibile ottenere i permessi di root - - - Signature verification failed, unable to get root access - Verifica firma non riuscita, impossibile ottenere i permessi di root - - - - dccV23::CreateAccountPage - - Group - Gruppo - - - Cancel - Annulla - - - Create - Crea - - - New User - Nuovo utente - - - User Type - Tipo utente - - - Username - Nome utente - - - Full Name - Nome completo - - - Password - Password - - - Repeat Password - Ripeti password - - - Password Hint - Suggerimento password - - - The full name is too long - Il nome completo è troppo lungo - - - Passwords do not match - Le password non coincidono - - - Standard User - Utente standard - - - Administrator - Amministratore - - - Customized - Personalizzato - - - Required - Richiesto - - - optional - Opzionale - - - The hint is visible to all users. Do not include the password here. - Il suggerimento è visibile a tutti gli utenti. Non scrivere qui la password. - - - Policykit authentication failed - Autenticazione Policykit fallita - - - Username must be between 3 and 32 characters - L'username deve esser compresa tra 3 e 32 caratteri - - - The first character must be a letter or number - Il primo carattere deve essere una lettera o un numero - - - Your username should not only have numbers - Il nome utente non dovrebbe contenere solo numeri - - - The username has been used by other user accounts - Il nome utente è stato utilizzato da altri account utente - - - The full name has been used by other user accounts - Il nome completo è stato utilizzato da altri account utente - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Non hai caricato un'immagine, puoi cliccare o trascinare un'immagine da caricare - - - Uploaded file type is incorrect, please upload again - Tipo di immagine non corretto, riprova - - - Images - Immagini - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Aggiungi scorciatoia personalizzata - - - Name - Nome - - - Required - Richiesto - - - Command - Command - - - Cancel - Annulla - - - Add - Aggiungi - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Questa scorciatoia è in conflitto con %1, clicca Aggiungi per renderla effettiva - - - - dccV23::CustomEdit - - Required - Richiesto - - - Cancel - Annulla - - - Save - Salva - - - Shortcut - Scorciatoia - - - Name - Nome - - - Command - Command - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Questa scorciatoia è in conflitto con %1, clicca Aggiungi per renderla effettiva - - - - dccV23::CustomItem - - Shortcut - Scorciatoia - - - Please enter a shortcut - Inserisci una scorciatoia - - - - dccV23::CustomRegionFormatDialog - - Custom format - Formato personalizzato - - - First day of week - Primo giorno della settimana - - - Short date - Formato data corta - - - Long date - Formato data lunga - - - Short time - Formato orario breve - - - Long time - Formato orario lungo - - - Currency symbol - Simbolo valuta - - - Numbers - Numeri - - - Paper - Carta - - - Cancel - Annulla - - - Save - Salva - - - - dccV23::DetailInfoItem - - For more details, visit: - Per maggiori dettagli visita: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Richiesta accesso Root - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Accedi prima al tuo account Union ID per continuare - - - Next - Avanti - - - Export PC Info - Esporta info PC - - - Import Certificate - Importa certificato - - - 1. Export your PC information - 1. Esporta le info del PC - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Vai su https://www.chinauos.com/developMode per scaricare un certificato offline - - - 3. Import the certificate - 3. Importa il certificato certificato - - - - dccV23::DeveloperModeWidget - - Request Root Access - Richiesta accesso Root - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - La modalità sviluppatore ti consente di ottenere i privilegi di Root, installare ed eseguire app non firmate e non elencate nello Store ufficiale, ma l'integrità del tuo sistema potrebbe non essere più garantita, ti preghiamo di usarla con attenzione. - - - The feature is not available at present, please activate your system first - La funzionalità non è al momento disponibile, attiva il Sistema per renderla funzionante - - - Failed to get root access - Ottenimento permessi di root fallito - - - Please sign in to your Union ID first - Accedi prima al tuo account Union ID - - - Cannot read your PC information - Impossibile leggere le info del PC - - - No network connection - Nessuna connessione ad internet - - - Certificate loading failed, unable to get root access - Caricamento certificato fallito, impossibile ottenere i permessi di root - - - Signature verification failed, unable to get root access - Verifica firma non riuscita, impossibile ottenere i permessi di root - - - To make some features effective, a restart is required. Restart now? - Per attivare alcune funzionalità è necessario un riavvio, desideri farlo ora? - - - Cancel - Annulla - - - Restart Now - Riavvia ora - - - Root Access Allowed - Accesso di Root consentito - - - - dccV23::DisplayPlugin - - Display - Schermo - - - Light, resolution, scaling and etc - Luminosità, risoluzione, scala ecc - - - - dccV23::DouTestWidget - - Double-click Test - Test doppio-click - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Ritardo ripetizione - - - Short - Corta - - - Long - Lunga - - - Repeat Rate - Velocità ripetizione - - - Slow - Lenta - - - Fast - Veloce - - - Test here - Area test - - - Numeric Keypad - Abilita tasti numerici - - - Caps Lock Prompt - Avviso tasto Maiusc - - - - dccV23::GeneralSettingWidget - - Left Hand - Mano sinistra - - - Disable touchpad while typing - Disabilita il touchpad quando stai digitando - - - Scrolling Speed - Velocità di scorrimento - - - Double-click Speed - Velocità doppio click - - - Slow - Lenta - - - Fast - Veloce - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Layout della tastiera - - - Edit - Modifica - - - Add Keyboard Layout - Aggiungi un layout della tastiera - - - Done - Fatto - - - - dccV23::KeyboardLayoutDialog - - Cancel - Annulla - - - Add - Aggiungi - - - Add Keyboard Layout - Aggiungi un layout della tastiera - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tastiera e lingua - - - Keyboard - Tastiera - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Layout della tastiera - - - Language - Lingua - - - Shortcuts - Scorciatoie - - - - dccV23::MainWindow - - Help - Aiuto - - - - dccV23::ModifyPasswdPage - - Change Password - Cambia Password - - - Reset Password - Reset password - - - Resetting the password will clear the data stored in the keyring. - La reimpostazione della password cancellerà i dati memorizzati nel portachiavi. - - - Current Password - Password attuale - - - Forgot password? - Password dimenticata? - - - New Password - Nuova password - - - Repeat Password - Ripeti password - - - Password Hint - Suggerimento password - - - Cancel - Annulla - - - Save - Salva - - - Passwords do not match - Le password non coincidono - - - Required - Richiesto - - - Optional - Opzionale - - - Password cannot be empty - La password non può essere assente - - - The hint is visible to all users. Do not include the password here. - Il suggerimento è visibile a tutti gli utenti. Non scrivere qui la password. - - - Wrong password - Password errata - - - New password should differ from the current one - La nuova password deve esser differente dall'attuale - - - System error - Errore di sistema - - - Network error - Errore rete - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Raggruppa finestre - - - Screen rearrangement will take effect in %1s after changes - La riorganizzazione dello schermo avrà effetto tra %1s dopo le modifiche - - - - dccV23::MousePlugin - - Mouse - Mouse - - - General - Generale - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Velocità del Puntatore - - - Mouse Acceleration - Accelerazione del mouse - - - Disable touchpad when a mouse is connected - Disabilita il touchpad quando un mouse risulta collegato - - - Natural Scrolling - Scorrimento naturale - - - Slow - Lenta - - - Fast - Veloce - - - - dccV23::MultiScreenWidget - - Multiple Displays - Display multipli - /display/Multiple Displays - - - Mode - Modalità - /display/Mode - - - Main Screen - Schermo principale - /display/Main Scree - - - Duplicate - Duplica - - - Extend - Estendi - - - Only on %1 - Utilizza solo %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notifiche - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Rilevamento tocco - - - Minimum Contact Surface - Minima superficie di contatto - - - Minimum Pressure Value - Valore minimo di pressione - - - Disable the option if touchpad doesn't work after enabled - Disabilita l'opzione se il touchpad non funziona dopo l'abilitazione - - - - dccV23::PluginManager - - following plugins load failed - caricamento dei seguenti plugin fallito - - - plugins cannot loaded in time - plugin non caricati in tempo - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Privacy Policy - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Siamo profondamente consapevoli dell'importanza delle tue informazioni personali. Quindi abbiamo stilato un'Informativa sulla privacy che spieghi al meglio il modo in cui raccogliamo, utilizziamo, condividiamo, trasferiamo, divulghiamo pubblicamente e memorizziamo le tue informazioni.</p><p>Puoi <a href="%1">cliccare qui</a> per visualizzare la nostra ultima Privacy Policy e / o visualizzarla online visitando <a href="%1"> %1</a>. Si prega di leggere attentamente e comprendere appieno le nostre pratiche sulla privacy dei Clienti. In caso di domande, contattaci al seguente indirizzo: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - La password non può essere assente - - - Password must have at least %1 characters - La password deve contenere almeno %1 caratteri - - - Password must be no more than %1 characters - La password non può superare %1 caratteri - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - La password deve contenere lettere Italiane (case-sensitive), numeri o caratteri speciali (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Non più di %1 caratteri palindromi per favore - - - No more than %1 monotonic characters please - Non più di %1 caratteri monotoni per favore - - - No more than %1 repeating characters please - Non più di %1 caratteri ripetuti per favore - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - La password deve contenere lettere maiuscole, minuscole, numeri e simboli (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - La password non può contenere più di 4 caratteri palindromi - - - Do not use common words and combinations as password - Non utilizzare parole comuni e le loro combinazioni come password - - - Create a strong password please - Per cortesia, crea una password più sicura - - - It does not meet password rules - Non rispetta le regole di password - - - - dccV23::RefreshRateWidget - - Refresh Rate - Frequenza di aggiornamento - - - Hz - Hz - - - Recommended - Raccomandato - - - - dccV23::RegionFormatDialog - - Region format - Formato regione - - - Default format - Formato predefinito - - - First of day - Primo del giorno - - - Short date - Formato data corta - - - Long date - Formato data lunga - - - Short time - Formato orario breve - - - Long time - Formato orario lungo - - - Currency symbol - Simbolo valuta - - - Numbers - Numeri - - - Paper - Carta - - - Cancel - Annulla - - - Save - Salva - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Sicuro di voler eliminare questo Account? - - - Delete account directory - Elimina directory dell'account - - - Cancel - Annulla - - - Delete - Elimina - - - - dccV23::ResolutionWidget - - Resolution - Risoluzione - /display/Resolution - - - Resize Desktop - Ridimensiona desktop - /display/Resize Desktop - - - Default - Default - - - Fit - Adatta - - - Stretch - Allunga - - - Center - Centra - - - Recommended - Raccomandato - - - - dccV23::RotateWidget - - Rotation - Rotazione - /display/Rotation - - - Standard - Standard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Il monitor supporta al massimo lo scaling al 100% - - - Display Scaling - Scala di visualizzazione - - - - dccV23::SearchInput - - Search - Cerca - - - - dccV23::SecondaryScreenDialog - - Brightness - Luminosità - - - - dccV23::SecurityLevelItem - - Weak - Debole - - - Medium - Media - - - Strong - Forte - - - - dccV23::SecurityQuestionsPage - - Security Questions - Domande di sicurezza - - - These questions will be used to help reset your password in case you forget it. - Queste domande verranno utilizzate per reimpostare la password nel caso in cui la dimentichi. - - - Security question 1 - Domanda di sicurezza 1 - - - Security question 2 - Domanda di sicurezza 2 - - - Security question 3 - Domanda di sicurezza 3 - - - Cancel - Annulla - - - Confirm - Conferma - - - Keep the answer under 30 characters - La risposta non deve eccedere i 30 caratteri - - - Do not choose a duplicate question please - Non scegliere una domanda duplicata per favore - - - Please select a question - Seleziona una domanda - - - What's the name of the city where you were born? - Qual è il nome della città in cui sei nato? - - - What's the name of the first school you attended? - Qual è il nome della scuola primaria che hai frequentato? - - - Who do you love the most in this world? - Cosa ami di più a questo mondo? - - - What's your favorite animal? - Qual è il tuo animale preferito? - - - What's your favorite song? - Qual è la tua canzone preferita? - - - What's your nickname? - Qual è il tuo nickname? - - - It cannot be empty - Non può essere vuoto - - - - dccV23::SettingsHead - - Edit - Modifica - - - Done - Fatto - - - - dccV23::ShortCutSettingWidget - - System - Sistema - - - Window - Finestra - - - Workspace - Spazio di lavoro - - - Assistive Tools - Tecnologie assistive - - - Custom Shortcut - Scorciatoia personalizzata - - - Restore Defaults - Ripristina ai valori predefiniti - - - Shortcut - Scorciatoia - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Resetta le scorciatoie - - - Cancel - Annulla - - - Replace - Sostituisci - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Questa scorciatoia è in conflitto con %1, clicca Sostituisci per rendere questa scorciatoia subito funzionante - - - - dccV23::ShortcutItem - - Enter a new shortcut - Inserisci una nuova scorciatoia - - - - dccV23::SystemInfoModel - - available - disponibile - - - - dccV23::SystemInfoModule - - About This PC - Riguardo questo PC - - - Computer Name - Nome PC - - - systemInfo - systemInfo - - - OS Name - Nome OS - - - Version - Versione - - - Edition - Edizione - - - Type - Tipo - - - Authorization - Autorizzazione - - - Processor - Processore - - - Memory - Memoria - - - Graphics Platform - Piattaforma Grafica - - - Kernel - Kernel - - - Agreements and Privacy Policy - - - - Edition License - Licenza - - - End User License Agreement - Licenza d'uso - - - Privacy Policy - Privacy Policy - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Sistema - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Annulla - - - Add - Aggiungi - - - Add System Language - Aggiungi lingua di Sistema - - - - dccV23::SystemLanguageWidget - - Edit - Modifica - - - Language List - Lista lingue - - - Add Language - - - - Done - Fatto - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Non disturbare - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Le notifiche delle app non verranno visualizzate sul desktop e i suoni verranno disattivati, ma sarà possibile visualizzare tutti i messaggi nel centro notifiche. - - - When the screen is locked - Quando lo schermo è bloccato - - - - dccV23::TimeSlotItem - - From - Da - - - To - A - - - - dccV23::TouchScreenModule - - Touch Screen - Touch Screen - - - Select your touch screen when connected or set it here. - Seleziona il tuo touch screen quando connesso oppure impostalo qui - - - Confirm - Conferma - - - Cancel - Annulla - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Velocità puntatore - - - Enable TouchPad - Abilita TouchPad - - - Tap to Click - Tap to Click - - - Natural Scrolling - Scroll naturale - - - Slow - Lento - - - Fast - Veloce - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Velocità del Puntatore - - - Slow - Lenta - - - Fast - Veloce - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Unisciti all'User Experience Program - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>L'adesione al programma User Experience significa che ci concedi e ci autorizzi a raccogliere ed utilizzare le informazioni del tuo dispositivo, sistema e applicazioni. Se rifiuti la nostra raccolta ed utilizzo delle suddette informazioni, non aderire al Programma esperienza utente. Per i dettagli, fare riferimento alla Privacy Policy di Deepin (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Partecipare al Programma Esperienza utente significa che ci concedi ed autorizzi a raccogliere e utilizzare le informazioni del tuo dispositivo, sistema e applicazioni. Se rifiuti la nostra raccolta ed utilizzo delle suddette informazioni, non aderire al Programma esperienza utente. Per saperne di più sulla gestione dei tuoi dati, fai riferimento alla Privacy Policy di UnionTech OS (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Anno - - - Month - Mese - - - Day - Giorno - - - - DatetimeModule - - Time and Format - Ora e formato - - - - DatetimeWorker - - Authentication is required to change NTP server - Autenticazione necessaria per cambiare il server NTP - - - - DefAppModule - - Default Applications - App predefinite - - - - DefAppPlugin - - Webpage - Webpage - - - Mail - Mail - - - Text - Testo - - - Music - Musica - - - Video - Video - - - Picture - Immagini - - - Terminal - Terminale - - - - DisclaimersDialog - - Disclaimer - Disclaimer - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Prima di utilizzare il riconoscimento facciale, tieni presente che: -1. Il tuo dispositivo potrebbe essere sbloccato da persone o oggetti che ti somigliano o ti assomigliano. -2. Il riconoscimento facciale è meno sicuro delle password digitali e delle password miste. -3. La percentuale di successo dello sblocco del dispositivo tramite il riconoscimento facciale sarà ridotta in uno scenario di scarsa illuminazione, alta luminosità, retroilluminazione, ampio angolo ed altri scenari. -4. Si prega di non dare il proprio dispositivo ad altri in modo casuale, in modo da evitare un uso dannoso del riconoscimento facciale. -5. Oltre agli scenari di cui sopra, dovresti prestare attenzione ad altre situazioni che potrebbero influire sul normale utilizzo del riconoscimento facciale. - -Per un migliore utilizzo del riconoscimento facciale, prestare attenzione ai seguenti aspetti durante l'inserimento dei dati facciali: -1. Si prega di rimanere in un ambiente ben illuminato, evitare la luce solare diretta o che altre persone appaiono nell'inquadratura. -2. Si prega di prestare attenzione allo stato del viso quando si inseriscono i dati e non lasciare che cappelli, capelli, occhiali da sole, maschere, trucco particolare ed altri fattori coprano i lineamenti del viso. -3. Si prega di evitare di inclinare o abbassare la testa, chiudere gli occhi o mostrare solo un lato del viso e assicurarsi che il viso appaia chiaramente e completamente nella finestra dell'inquadratura. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - L'Autenticazione biometrica è una funzione per l'autenticazione dell'identità dell'utente fornita da UnionTech Software Technology Co., Ltd. Attraverso l'"autenticazione biometrica", i dati biometrici raccolti verranno confrontati con quelli memorizzati nel dispositivo e l'identità dell'utente verrà verificata in base al risultato del confronto software. -Tieni presente che il software UnionTech non raccoglierà né accederà alle tue informazioni biometriche, che verranno archiviate sul tuo dispositivo in locale. Ti preghiamo di abilitare l'autenticazione biometrica solo nel tuo dispositivo personale e di utilizzare le tue informazioni biometriche per operazioni correlate e di disabilitare o eliminare tempestivamente le informazioni biometriche di altre persone dal dispositivo, altrimenti ti assumerai il rischio che ne deriva dalla loro gestione. -UnionTech Software si impegna a ricercare e migliorare la sicurezza, l'accuratezza e la stabilità dell'autenticazione biometrica. Tuttavia, a causa dell'ambiente, delle attrezzature, dei fattori tecnici e di altro tipo e del controllo del rischio, non vi è alcuna garanzia che supererai temporaneamente l'autenticazione biometrica. Pertanto, non prendere l'autenticazione biometrica come l'unico modo per accedere a UnionTech OS. In caso di domande o suggerimenti sull'utilizzo dell'autenticazione biometrica, è possibile fornire feedback tramite "Servizio e supporto" nel sistema operativo UnionTech. - - - - Cancel - Annulla - - - Next - Avanti - - - - DisclaimersItem - - I have read and agree to the - Ho letto ed accetto il - - - Disclaimer - Disclaimer - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - Display multipli - - - Show Dock - Mostra la Dock - - - Mode - Modalità - - - Position - Posizione - - - Status - Comportamento - - - Show recent apps in Dock - - - - Size - Dimensioni - - - Plugin Area - Area plugin - - - Select which icons appear in the Dock - Seleziona quali icone appaiono nel Dock - - - Fashion mode - Modalità Fashion - - - Efficient mode - Modalità Efficient - - - Top - Sopra - - - Bottom - Sotto - - - Left - Sinistra - - - Right - Destra - - - Location - Posizione - - - Keep shown - Mostra sempre - - - Keep hidden - Lascia nascosta - - - Smart hide - Nascondi automaticamente - - - Small - Piccolo - - - Large - Grande - - - On screen where the cursor is - Sullo schermo dove è presente il cursore - - - Only on main screen - Solo sullo schermo principale - - - - FaceInfoDialog - - Enroll Face - Registra viso - - - Position your face inside the frame - Posiziona il viso al centro dell'inquadratura - - - - FaceWidget - - Edit - Modifica - - - Manage Faces - Gestisci visi - - - You can add up to 5 faces - Puoi aggiungere fino a 5 visi - - - Done - Fatto - - - Add Face - Aggiungi viso - - - The name already exists - Il nome esiste già - - - Faceprint - Viso - - - - FaceidDetailWidget - - No supported devices found - Nessun dispositivo supportato trovato - - - - FingerDetailWidget - - No supported devices found - Nessun dispositivo supportato trovato - - - - FingerDisclaimer - - Add Fingerprint - Aggiungi impronta digitale - - - Cancel - Annulla - - - Next - Avanti - - - - FingerInfoWidget - - Place your finger - Posiziona il dito - - - Place your finger firmly on the sensor until you're asked to lift it - Posiziona in modo stabile l'impronta ed attendi la conferma - - - Scan the edges of your fingerprint - Scansiona gli angoli della tua impronta - - - Place the edges of your fingerprint on the sensor - Posiziona il lato dell'impronta sul sensore - - - Lift your finger - Posiziona il dito - - - Lift your finger and place it on the sensor again - Posiziona il dito nuovamente sul sensore - - - Adjust the position to scan the edges of your fingerprint - Sistema la posizione del dito per scansionare gli angoli dell'impronta - - - Lift your finger and do that again - Solleva il dito e riprova - - - Fingerprint added - Impronta digitale aggiunta - - - - FingerWidget - - Edit - Modifica - - - Fingerprint Password - Password con impronta digitale - - - You can add up to 10 fingerprints - Puoi aggiungere sino a 10 impronte digitali - - - Done - Fatto - - - The name already exists - Il nome esiste già - - - Add Fingerprint - Aggiungi impronta digitale - - - - GeneralModule - - General - Generale - - - Balanced - Bilanciato - - - Balance Performance - Prestazioni bilanciate - - - High Performance - Alte prestazioni - - - Power Saver - Risparmio energetico - - - Power Plans - Piano alimentazione - - - Power Saving Settings - Impostazioni risparmio energetico - - - Auto power saving on low battery - Risparmio energetico automatico se la batteria è scarica - - - Decrease Brightness - - - - Low battery threshold - Limite carica di batteria - - - Auto power saving on battery - Risparmio energetico automatico quando non collegato alla rete - - - Wakeup Settings - Impostazioni risveglio - - - Unlocking is required to wake up the computer - Per riattivare il computer è necessario lo sblocco - - - Unlocking is required to wake up the monitor - Per risvegliare il computer è necessario lo sblocco - - - - HostNameItem - - It cannot start or end with dashes - Non può iniziare o finire con trattini - - - 1~63 characters please - 1~63 caratteri per cortesia - - - - InternalButtonItem - - Internal testing channel - Canale di Internal Testing - - - click here open the link - clicca qui per aprire il link - - - - IrisDetailWidget - - No supported devices found - Nessun dispositivo supportato trovato - - - - IrisWidget - - Edit - Modifica - - - Manage Irises - Gestisci iride - - - You can add up to 5 irises - Puoi aggiungere fino a 5 iridi - - - Done - Fatto - - - Add Iris - Aggiungi iride - - - The name already exists - Il nome esiste già - - - Iris - Iride - - - - KeyLabel - - None - No - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin Community, localizzazione italiana a cura di Massimo A. Carofano - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD, localizzazione italiana a cura di Massimo A. Carofano - - - - MicrophonePage - - Input Device - Dispositivo input - - - Automatic Noise Suppression - Soppressione automatica del rumore - - - Input Volume - Volume di ingresso - - - Input Level - Livello input - - - - PersonalizationDesktopModule - - Desktop - Desktop - - - Window - Finestra - - - Window Effect - Effetti grafici - - - Window Minimize Effect - Effetto riduzione finestra ad icona - - - Transparency - Trasparenza - - - Rounded Corner - Angoli arrotondati - - - Scale - Scala - - - Magic Lamp - Lampada magica - - - Small - Piccolo - - - Middle - Intermedio - - - Large - Grande - - - - PersonalizationModule - - Personalization - Personalizza - - - - PersonalizationThemeList - - Cancel - Annulla - - - Save - Salva - - - Light - Chiara - - - Dark - Scura - - - Auto - Auto - - - Default - Default - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - Aspetto - - - Accent Color - Colore testo - - - Icon Settings - - - - Icon Theme - Tema icone - - - Cursor Theme - Tema cursore - - - Text Settings - - - - Font Size - Dimensione font - - - Standard Font - Font Standard - - - Monospaced Font - Font monodimensionale - - - Light - Chiara - - - Auto - Auto - - - Dark - Scura - - - - PersonalizationThemeWidget - - Light - Chiara - General - /personalization/General - - - Dark - Scura - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Default - - - - PersonalizationWorker - - Custom - Personalizzazione - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Il PIN per connettersi al dispositivo Bluetooth è: - - - Cancel - Annulla - - - Confirm - Conferma - - - - PowerModule - - Power - Alimentazione - - - Battery low, please plug in - Livello batteria basso, collega il PC all'alimentazione - - - Battery critically low - Batteria molto scarica - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Webcam - - - Microphone - Microfono - - - User Folders - - - - Calendar - Calendario - - - Screen Capture - - - - - QObject - - Control Center - Centro di Controllo - - - , - , - - - Error occurred when reading the configuration files of password rules! - Si è verificato un errore durante la lettura dei file di configurazione delle regole della password! - - - Auto adjust CPU operating frequency based on CPU load condition - Regola automaticamente la frequenza operativa della CPU in base alle condizioni di carico - - - Aggressively adjust CPU operating frequency based on CPU load condition - Regola in modo aggressivo la frequenza operativa della CPU in base alle condizioni di carico - - - Be good to imporving performance, but power consumption and heat generation will increase - Gestione dolce nel miglioramento delle prestazioni, ma il consumo energetico e la generazione di calore aumenteranno - - - CPU always works under low frequency, will reduce power consumption - La CPU funzioerà sempre a bassa frequenza e ridurrà il consumo energetico - - - Activated - Attivato - - - View - Visualizza - - - To be activated - Da attivare - - - Activate - Attiva - - - Expired - Scaduto - - - In trial period - Periodo di prova - - - Trial expired - Periodo di prova scaduto - - - Touch Screen Settings - Impostazioni Touch Screen - - - The settings of touch screen changed - Le impostazioni del Touch Screen sono state modificate - - - Checking system versions, please wait... - Verifico la versione del Sistema, attendere... - - - Leave - Lascia - - - Cancel - Annulla - - - - RegionModule - - Region and format - Regione e formato - - - Country or Region - Regione - - - Format - Formato - - - Provide localized services based on your region. - Fornisce servizi localizzati in relazione alla tua Regione. - - - Select matching date and time formats based on language and region - Seleziona i formati di data e ora corrispondenti in base alla lingua e alla regione - - - Region format - Lingua e regione - - - First day of week - Primo giorno della settimana - - - Short date - Formato data corta - - - Long date - Formato data lunga - - - Short time - Formato orario breve - - - Long time - Formato orario lungo - - - Currency symbol - Simbolo valuta - - - Numbers - Numeri - - - Paper - Carta - - - Custom format - Formato personalizzato - - - - ResultItem - - Your system is not authorized, please activate first - Sistema non autorizzato, per cortesia attivalo - - - Update successful - Aggiornamento riuscito - - - Failed to update - Aggiornamento fallito - - - - SearchInput - - Search - Cerca - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Effetti audio - - - - SoundModel - - Boot up - Accensione - - - Shut down - Spegni - - - Log out - Logout - - - Wake up - Risveglio - - - Volume +/- - Volume +/- - - - Notification - Notifiche - - - Low battery - Batteria scarica - - - Send icon in Launcher to Desktop - Invia le app del Launcher sul Desktop - - - Empty Trash - Pulizia del Cestino - - - Plug in - Collegato alla rete elettrica - - - Plug out - Scollegato dalla rete - - - Removable device connected - Collegamento dispositivi removibili - - - Removable device removed - Rimozione dispositivi removibili - - - Error - Errore - - - - SoundModule - - Sound - Audio - - - - SoundPlugin - - Output - Uscita - - - Auto pause - Pausa automatica - - - Whether the audio will be automatically paused when the current audio device is unplugged - L'audio verrà automaticamente messo in pausa quando il dispositivo audio corrente viene scollegato - - - Input - Ingresso - - - Sound Effects - Effetti audio - - - Devices - Dispositivi - - - Input Devices - Dispositivi di input - - - Output Devices - Dispositivi di output - - - - SpeakerPage - - Output Device - Dispositivo output - - - Mode - Modalità - - - Output Volume - Volume di uscita - - - Volume Boost - Amplificazione volume - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Bilanciamento Sx-Dx - - - Left - Sinistra - - - Right - Destra - - - - TimeSettingModule - - Time Settings - Impostazioni Orario - - - Time - Ora - - - Auto Sync - Sincronizza automaticamente - - - Reset - Reset - - - Save - Salva - - - Server - Server - - - Address - Indirizzo - - - Required - Richiesto - - - Customize - Personalizza - - - Year - Anno - - - Month - Mese - - - Day - Giorno - - - - TimeZoneChooser - - Cancel - Annulla - - - Confirm - Conferma - - - Add Timezone - Aggiungi fuso orario - - - Add - Aggiungi - - - Change Timezone - Cambia fuso orario - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Inverti - - - Save - Salva - - - - TimezoneItem - - Tomorrow - Domani - - - Yesterday - Ieri - - - Today - Oggi - - - %1 hours earlier than local - %1 ore prima di quella locale - - - %1 hours later than local - %1 ore dopo quella Locale - - - - TimezoneModule - - Timezone List - Lista fusi orari - - - System Timezone - Fuso orario di Sistema - - - Add Timezone - Aggiungi fuso orario - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - L'account utente non è collegato a Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Per reimpostare le password, devi prima autenticare il tuo Union ID. Fare clic su "Vai al collegamento" per completare le impostazioni. - - - Cancel - Annulla - - - Go to Link - Vai al collegamento - - - - UnknownUpdateItem - - Release date: - Data release: - - - - UpdateCtrlWidget - - Check Again - Cerca nuovamente - - - Update failed: insufficient disk space - Aggiornamento fallito: spazio su disco insufficiente - - - Dependency error, failed to detect the updates - Errore dipendenza, rilevazione aggiornamenti fallita - - - Restart the computer to use the system and the applications properly - Riavvia per utilizzare il sistema e le applicazioni in modo appropriato - - - Network disconnected, please retry after connected - Rete disconnessa, riprova dopo aver stabilito una connessione - - - Your system is not authorized, please activate first - Sistema non autorizzato, per cortesia attivalo - - - This update may take a long time, please do not shut down or reboot during the process - Questo aggiornamento potrebbe richiedere molto tempo, non spegnere o riavviare il PC durante il processo. - - - Updates Available - Aggiornamenti disponibili - - - Current Edition - Versione attuale - - - Updating... - Aggiornamento... - - - Update All - Aggiorna tutto - - - Last checking time: - Ultima verifica: - - - Your system is up to date - Il sistema è aggiornato - - - Check for Updates - Ricerca aggiornamenti - - - Checking for updates, please wait... - Ricerca aggiornamenti, attendere prego... - - - The newest system installed, restart to take effect - Nuova versione di Sistema installata, è consigliato il riavvio - - - %1% downloaded (Click to pause) - %1% in download (Clicca per fermare) - - - %1% downloaded (Click to continue) - %1% scaricato (Clicca per continuare) - - - Your battery is lower than 50%, please plug in to continue - La tua batteria residua è inferiore al 50%, è consigliabile connettere l'alimentatore - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Assicurati di avere abbastanza carica per riavviare, non spegnere o disconnettere l'alimentatore dal tuo PC - - - Size - Dimensioni - - - - UpdateModule - - Updates - Aggiornamenti - - - - UpdatePlugin - - Check for Updates - Ricerca aggiornamenti - - - - UpdateSettingItem - - Insufficient disk space - Spazio su disco insufficiente - - - Update failed: insufficient disk space - Aggiornamento fallito: spazio su disco insufficiente - - - Update failed - Aggiornamento fallito - - - Network error - Errore rete - - - Network error, please check and try again - Errore di rete, verifica e riprova più tardi - - - Packages error - Errore pacchetti - - - Packages error, please try again - Errore pacchetti, riprova - - - Dependency error - Errore dipendenze - - - Unmet dependencies - Dipendenze non soddisfatte - - - The newest system installed, restart to take effect - Nuova versione di Sistema installata, è consigliato il riavvio - - - Waiting - Aspetta - - - Backing up - Backup in corso - - - System backup failed - Backup del Sistema fallito - - - Release date: - Data release: - - - Server - Server - - - Desktop - Desktop - - - Version - Versione - - - - UpdateSettingsModule - - Update Settings - Impostazioni aggiornamenti - - - System - Sistema - - - Security Updates Only - Solo aggiornamenti di sicurezza - - - Switch it on to only update security vulnerabilities and compatibility issues - Attivalo per ricevere solo gli aggiornamenti delle vulnerabilità di sicurezza e dei problemi di compatibilità - - - Third-party Repositories - Repo di terze parti - - - linglong update - Aggiornamento linglong - - - Linglong Package Update - Aggiornamento pacchetto linglong - - - If there is update for linglong package, system will update it for you - C'è un aggiornamento per il pacchetto linglong, il Sistema lo aggiornerà in autonomia - - - Other settings - Altre impostazioni - - - Auto Check for Updates - Ricerca automatica aggiornamenti - - - Auto Download Updates - Aggiorna automaticamente - - - Switch it on to automatically download the updates in wireless or wired network - Attiva per scaricare automaticamente gli aggiornamenti mediante connessione cablata o wifi - - - Auto Install Updates - Installa automaticamente gli aggiornamenti - - - Updates Notification - Notifiche aggiornamenti - - - Clear Package Cache - Pulizia cache pacchetti - - - Updates from Internal Testing Sources - Aggiornamenti da fonti di test interne - - - internal update - aggiornamento interno - - - Join the internal testing channel to get deepin latest updates - Unisciti all'Internal Testing per ricevere gli ultimi aggiornamenti di Deepin - - - System Updates - Aggiornamenti - - - Security Updates - Aggiornamenti di sicurezza - - - Install updates automatically when the download is complete - Installa gli aggiornamenti automaticamente al termine del download - - - Install "%1" automatically when the download is complete - Installa "%1" automaticamente al termine del download - - - - UpdateWidget - - Current Edition - Versione attuale - - - - UpdateWorker - - System Updates - Aggiornamenti - - - Fixed some known bugs and security vulnerabilities - Risolti alcuni bug noti e vulnerabilità di sicurezza - - - Security Updates - Aggiornamenti di sicurezza - - - Third-party Repositories - Repo di terze parti - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Potrebbe essere poco raccomandabile abbandonare l'Internal Testing ora, sicuro di voler abbandonare il Canale? - - - Your are safe to leave the internal testing channel - Lasciare il Canale Internal Testing non dovrebbe avere impatti negativi al momento - - - Cannot find machineid - Impossibile trovare machineid - - - Cannot Uninstall package - Impossibile disinstallare il pacchetto - - - Error when exit testingChannel - Errore in fase di uscita dal testingChannel - - - try to manually uninstall package - prova a disinstallare manualmente il pacchetto - - - Cannot install package - Impossibile installare il pacchetto - - - - UseBatteryModule - - On Battery - Alimentazione a batteria - - - Never - Mai - - - Shut down - Spegni - - - Suspend - Sospendi - - - Hibernate - Ibernazione - - - Turn off the monitor - Spegni il monitor - - - Do nothing - Non fare nulla - - - 1 Minute - 1 Minuto - - - %1 Minutes - %1 Minuti - - - 1 Hour - 1 Ora - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Blocca schermo dopo - - - Computer suspends after - - - - Computer will suspend after - Il PC andrà in sospensione dopo - - - When the lid is closed - Quando chiudi il coperchio del portatile - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Livello batteria scarica - - - Auto suspend battery level - Sospendi automaticamente ad un livello di batteria - - - Battery Management - - - - Display remaining using and charging time - Visualizza il tempo di utilizzo e di ricarica rimanente - - - Maximum capacity - Capacità massima - - - Show the shutdown Interface - Mostra l'interfaccia di spegnimento - - - - UseElectricModule - - Plugged In - Collegato al caricabatteria - - - 1 Minute - 1 Minuto - - - %1 Minutes - %1 Minuti - - - 1 Hour - 1 Ora - - - Never - Mai - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Blocca schermo dopo - - - Computer suspends after - - - - When the lid is closed - Quando chiudi il coperchio del portatile - - - When the power button is pressed - - - - Shut down - Spegni - - - Suspend - Sospendi - - - Hibernate - Ibernazione - - - Turn off the monitor - Spegni il monitor - - - Show the shutdown Interface - Mostra l'interfaccia di spegnimento - - - Do nothing - Non fare nulla - - - - WacomModule - - Drawing Tablet - Tavoletta grafica - - - Mode - Modalità - - - Pressure Sensitivity - Sensibilità alla pressione - - - Pen - Penna - - - Mouse - Mouse - - - Light - Chiara - - - Heavy - Pesante - - - - main - - Control Center provides the options for system settings. - Il Control Center fornisce tutti i parametri di personalizzazione del Sistema. - - - - updateControlPanel - - Downloading - In download - - - Waiting - Attendere - - - Installing - Installazione in corso - - - Backing up - Backup in corso - - - Download and install - Scarica ed installa - - - Learn more - Approfondisci - - - diff --git a/dcc-old/translations/dde-control-center_ja.ts b/dcc-old/translations/dde-control-center_ja.ts deleted file mode 100644 index ffdb8ebb23..0000000000 --- a/dcc-old/translations/dde-control-center_ja.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - 他のBluetoothデバイスがこのデバイスを検出するのを許可する - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - 近くのデバイス (スピーカー、キーボード、マウス) を検索するには、Bluetooth を有効にしてください - - - My Devices - お使いのデバイス - - - Other Devices - 他のデバイス - - - Show Bluetooth devices without names - 名前のないBluetoothデバイスを表示 - - - Connect - 接続 - - - Disconnect - 切断 - - - Rename - 名前を変更 - - - Send Files - ファイルを送信 - - - Ignore this device - このデバイスを無視 - - - Connecting - 接続試行中 - - - Disconnecting - 切断しています - - - - AddButtonWidget - - Add Application - アプリケーションを追加 - - - Open Desktop file - デスクトップファイルを開く - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - キャンセル - - - Next - 次へ - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - 完了 - - - Failed to enroll your face - - - - Try Again - - - - Close - 閉じる - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - キャンセル - - - Next - 次へ - - - Iris enrolled - - - - Done - 完了 - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - 指紋 - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - 接続済み - - - Not connected - 未接続 - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - 指を速く動かしすぎです。表示が出るまで離さないでください - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - キャンセル - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - キャンセル - - - Confirm - button - 確認 - - - - dccV23::AccountSpinBox - - Always - いつも - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - ユーザー名 - - - Change Password - パスワードを変更 - - - Delete User - - - - User Type - - - - Auto Login - 自動ログイン - - - Login Without Password - パスワードなしでログイン - - - Validity Days - - - - Group - グループ - - - The full name is too long - フルネームが長すぎます - - - Standard User - 標準ユーザー - - - Administrator - 管理者 - - - Reset Password - パスワードをリセット - - - The full name has been used by other user accounts - このフルネームは既に他のユーザーに使用されています - - - Full Name - フルネーム - - - Go to Settings - 設定に移動 - - - Cancel - キャンセル - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - ADドメイン設定 - - - Password not match - パスワードが一致しません - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - ロック画面にメッセージを表示する - - - Show in notification center - 通知センターに表示する - - - Show message preview - メッセージプレビューを表示する - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - キャンセル - - - Save - 保存 - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - 画像 - - - - dccV23::BootWidget - - Updating... - アップデートしています… - - - Startup Delay - 起動時の遅延 - - - Theme - テーマ - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - ブートメニューのオプションをクリックして、最初に起動するように設定します。背景を変更するには、画像をドラッグアンドドロップしてください - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - テーマを有効にすると、起動メニューで表示されます - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - パスワードを変更 - - - Boot Menu - 起動メニュー - - - Change GRUB password - - - - Username: - ユーザー名: - - - root - - - - New password: - - - - Repeat password: - - - - Required - 必須 - - - Cancel - button - キャンセル - - - Confirm - button - 確認 - - - Password cannot be empty - パスワードは空欄にできません - - - Passwords do not match - パスワードが一致しません - - - - dccV23::BrightnessWidget - - Brightness - 明るさ - - - Color Temperature - 色温度 - - - Auto Brightness - 明るさの自動調整 - - - Night Shift - 夜間モード - - - The screen hue will be auto adjusted according to your location - 現在地に応じて、画面の色合いを自動的に調整します - - - Change Color Temperature - 色温度を変更 - - - Cool - 寒色 - - - Warm - 暖色 - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - お使いのデバイス - - - Other Devices - 他のデバイス - - - - dccV23::CommonInfoPlugin - - General Settings - 一般設定 - - - Boot Menu - 起動メニュー - - - Developer Mode - 開発者モード - - - User Experience Program - ユーザーエクスペリエンスプログラム - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - 同意してユーザーエクスペリエンスプログラムに参加 - - - The Disclaimer of Developer Mode - 開発者モードの免責事項 - - - Agree and Request Root Access - 同意してルートアクセスを要求 - - - Failed to get root access - ルートアクセスを取得できませんでした - - - Please sign in to your Union ID first - まずUnion IDにサインインしてください - - - Cannot read your PC information - PC 情報を読み込めません - - - No network connection - ネットワーク接続がありません - - - Certificate loading failed, unable to get root access - 証明書を読み込めませんでした。ルートアクセスを取得できません - - - Signature verification failed, unable to get root access - 署名を確認できませんでした。ルートアクセスを取得できません - - - - dccV23::CreateAccountPage - - Group - グループ - - - Cancel - キャンセル - - - Create - 作成 - - - New User - - - - User Type - - - - Username - ユーザー名 - - - Full Name - フルネーム - - - Password - パスワード - - - Repeat Password - パスワードを再入力 - - - Password Hint - - - - The full name is too long - フルネームが長すぎます - - - Passwords do not match - パスワードが一致しません - - - Standard User - 標準ユーザー - - - Administrator - 管理者 - - - Customized - - - - Required - 必須 - - - optional - 省略可能 - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - ユーザー名は3文字以上32文字以下にする必要があります - - - The first character must be a letter or number - 最初の文字は英数字にする必要があります - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - このフルネームは既に他のユーザーに使用されています - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - 画像 - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - カスタムショートカットを追加 - - - Name - 名前 - - - Required - 必須 - - - Command - コマンド - - - Cancel - キャンセル - - - Add - 追加 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - このショートカットは %1 と競合します。このショートカットを今すぐ有効にするには、「追加」をクリックしてください - - - - dccV23::CustomEdit - - Required - 必須 - - - Cancel - キャンセル - - - Save - 保存 - - - Shortcut - ショートカット - - - Name - 名前 - - - Command - コマンド - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - このショートカットは %1 と競合します。このショートカットを今すぐ有効にするには、「追加」をクリックしてください - - - - dccV23::CustomItem - - Shortcut - ショートカット - - - Please enter a shortcut - ショートカットを入力してください - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - ルートアクセスを要求 - - - Online - オンライン - - - Offline - オフライン - - - Please sign in to your Union ID first and continue - まずUnion IDにサインインして続行してください - - - Next - 次へ - - - Export PC Info - PC 情報をエクスポート - - - Import Certificate - 証明書をインポート - - - 1. Export your PC information - 1. PC 情報をエクスポート - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. https://www.chinauos.com/developMode に移動して、オフライン証明書をダウンロード - - - 3. Import the certificate - 3. 証明書をインポート - - - - dccV23::DeveloperModeWidget - - Request Root Access - ルートアクセスを要求 - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - 開発者モードに切り替えると、ルートアクセスの取得や、アプリストアに掲載されていない未署名のアプリのインストールと実行が可能になりますが、システムの安全性に影響を及ぼす可能性があります。注意して使用してください。 - - - The feature is not available at present, please activate your system first - この機能は現在利用できません。まずシステムをアクティベートしてください - - - Failed to get root access - ルートアクセスを取得できませんでした - - - Please sign in to your Union ID first - まずUnion IDにサインインしてください - - - Cannot read your PC information - PC 情報を読み込めません - - - No network connection - ネットワーク接続がありません - - - Certificate loading failed, unable to get root access - 証明書を読み込めませんでした。ルートアクセスを取得できません - - - Signature verification failed, unable to get root access - 署名を確認できませんでした。ルートアクセスを取得できません - - - To make some features effective, a restart is required. Restart now? - 一部の機能を有効にするには、再起動が必要です。今すぐ再起動しますか? - - - Cancel - キャンセル - - - Restart Now - 今すぐ再起動 - - - Root Access Allowed - ルートアクセスが許可されました - - - - dccV23::DisplayPlugin - - Display - ディスプレイ - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - ダブルクリックテスト - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - 繰り返し時間 - - - Short - 短い - - - Long - 長い - - - Repeat Rate - 繰り返し率 - - - Slow - 遅い - - - Fast - 速い - - - Test here - ここで確認 - - - Numeric Keypad - 数字キーボード - - - Caps Lock Prompt - Caps Lockプロンプト - - - - dccV23::GeneralSettingWidget - - Left Hand - 左利き - - - Disable touchpad while typing - 入力中はタッチパッドを無効にする - - - Scrolling Speed - スクロールの速度 - - - Double-click Speed - ダブルクリックの速度 - - - Slow - 遅い - - - Fast - 速い - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - キーボードレイアウト - - - Edit - 編集 - - - Add Keyboard Layout - キーボードレイアウトの追加 - - - Done - 完了 - - - - dccV23::KeyboardLayoutDialog - - Cancel - キャンセル - - - Add - 追加 - - - Add Keyboard Layout - キーボードレイアウトの追加 - - - - dccV23::KeyboardPlugin - - Keyboard and Language - キーボードと言語 - - - Keyboard - キーボード - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - キーボードレイアウト - - - Language - 言語 - - - Shortcuts - ショートカット - - - - dccV23::MainWindow - - Help - ヘルプ - - - - dccV23::ModifyPasswdPage - - Change Password - パスワードを変更 - - - Reset Password - パスワードをリセット - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - 現在のパスワード - - - Forgot password? - - - - New Password - 新しいパスワード - - - Repeat Password - パスワードを再入力 - - - Password Hint - - - - Cancel - キャンセル - - - Save - 保存 - - - Passwords do not match - パスワードが一致しません - - - Required - 必須 - - - Optional - 省略可能 - - - Password cannot be empty - パスワードは空欄にできません - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - パスワードが違います - - - New password should differ from the current one - 新しいパスワードは現在とは異なるパスワードにしてください - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - マウス - - - General - 一般 - - - Touchpad - タッチパッド - - - TrackPoint - トラックポイント - - - - dccV23::MouseSettingWidget - - Pointer Speed - ポインターの速度 - - - Mouse Acceleration - マウスの加速 - - - Disable touchpad when a mouse is connected - マウス接続時はタッチパッドを無効にする - - - Natural Scrolling - ナチュラルスクロール - - - Slow - 遅い - - - Fast - 速い - - - - dccV23::MultiScreenWidget - - Multiple Displays - マルチディスプレイ - /display/Multiple Displays - - - Mode - モード - /display/Mode - - - Main Screen - メインスクリーン - /display/Main Scree - - - Duplicate - 複製 - - - Extend - 拡張 - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - 通知 - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - プライバシーポリシー - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - パスワードは空欄にできません - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - パスワードは %1 文字以上にする必要があります - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - リフレッシュレート - - - Hz - Hz - - - Recommended - 推奨 - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - アカウントのディレクトリを削除 - - - Cancel - キャンセル - - - Delete - 削除 - - - - dccV23::ResolutionWidget - - Resolution - 解像度 - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - デフォルト - - - Fit - - - - Stretch - - - - Center - 中央 - - - Recommended - 推奨 - - - - dccV23::RotateWidget - - Rotation - 回転 - /display/Rotation - - - Standard - 標準 - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - モニターは 100% ディスプレイスケーリングのみに対応しています - - - Display Scaling - ディスプレイスケーリング - - - - dccV23::SearchInput - - Search - 検索 - - - - dccV23::SecondaryScreenDialog - - Brightness - 明るさ - - - - dccV23::SecurityLevelItem - - Weak - 弱い - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - キャンセル - - - Confirm - 確認 - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - 編集 - - - Done - 完了 - - - - dccV23::ShortCutSettingWidget - - System - システム - - - Window - ウィンドウ - - - Workspace - ワークスペース - - - Assistive Tools - 支援ツール - - - Custom Shortcut - カスタムショートカット - - - Restore Defaults - デフォルトに復元 - - - Shortcut - ショートカット - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - ショートカットをリセットしてください - - - Cancel - キャンセル - - - Replace - 置き換える - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - この PC について - - - Computer Name - コンピューター名 - - - systemInfo - - - - OS Name - - - - Version - バージョン - - - Edition - - - - Type - 種類 - - - Authorization - 認証 - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - エディションのライセンス - - - End User License Agreement - 使用許諾契約書 - - - Privacy Policy - プライバシーポリシー - - - %1-bit - %1 ビット - - - - dccV23::SystemInfoPlugin - - System Info - システム情報 - - - - dccV23::SystemLanguageSettingDialog - - Cancel - キャンセル - - - Add - 追加 - - - Add System Language - システム言語を追加 - - - - dccV23::SystemLanguageWidget - - Edit - 編集 - - - Language List - 言語の一覧 - - - Add Language - - - - Done - 完了 - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - おやすみモード - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - 画面がロックされたとき - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - タッチスクリーン - - - Select your touch screen when connected or set it here. - - - - Confirm - 確認 - - - Cancel - キャンセル - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - ポインターの速度 - - - Slow - 遅い - - - Fast - 速い - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - ユーザーエクスペリエンスプログラムに参加 - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - 既定のアプリケーション - - - - DefAppPlugin - - Webpage - ウェブページ - - - Mail - メール - - - Text - テキスト - - - Music - ミュージック - - - Video - ビデオ - - - Picture - ピクチャー - - - Terminal - ターミナル - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - キャンセル - - - Next - 次へ - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - ドック - - - Multiple Displays - マルチディスプレイ - - - Show Dock - - - - Mode - モード - - - Position - 位置 - - - Status - 状態 - - - Show recent apps in Dock - - - - Size - サイズ - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - ファッションモード - - - Efficient mode - 効率モード - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - 位置 - - - Keep shown - - - - Keep hidden - 隠したままにする - - - Smart hide - スマートハイド - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - 編集 - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - 完了 - - - Add Face - - - - The name already exists - この名前はすでに存在します - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - 指紋を追加 - - - Cancel - キャンセル - - - Next - 次へ - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - 指紋を追加しました - - - - FingerWidget - - Edit - 編集 - - - Fingerprint Password - 指紋パスワード - - - You can add up to 10 fingerprints - - - - Done - 完了 - - - The name already exists - この名前はすでに存在します - - - Add Fingerprint - 指紋を追加 - - - - GeneralModule - - General - 一般 - - - Balanced - バランス - - - Balance Performance - - - - High Performance - 高パフォーマンス - - - Power Saver - 省電力モード - - - Power Plans - 電源プラン - - - Power Saving Settings - 省電力モードの設定 - - - Auto power saving on low battery - 低バッテリー時に自動で省電力モードにする - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - バッテリー駆動時に自動で省電力モードにする - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - 編集 - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - 完了 - - - Add Iris - - - - The name already exists - この名前はすでに存在します - - - Iris - - - - - KeyLabel - - None - なし - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - 入力デバイス - - - Automatic Noise Suppression - 自動ノイズ除去 - - - Input Volume - 入力音量 - - - Input Level - 入力レベル - - - - PersonalizationDesktopModule - - Desktop - デスクトップ - - - Window - ウィンドウ - - - Window Effect - ウィンドウ エフェクト - - - Window Minimize Effect - ウィンドウ最小化エフェクト - - - Transparency - 透明度 - - - Rounded Corner - 丸い角 - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - 個人設定 - - - - PersonalizationThemeList - - Cancel - キャンセル - - - Save - 保存 - - - Light - ライト - - - Dark - ダーク - - - Auto - 自動 - - - Default - デフォルト - - - - PersonalizationThemeModule - - Theme - テーマ - - - Appearance - 外観 - - - Accent Color - アクセントカラー - - - Icon Settings - - - - Icon Theme - アイコンテーマ - - - Cursor Theme - カーソルテーマ - - - Text Settings - - - - Font Size - フォントサイズ - - - Standard Font - 標準のフォント - - - Monospaced Font - 等幅フォント - - - Light - ライト - - - Auto - 自動 - - - Dark - ダーク - - - - PersonalizationThemeWidget - - Light - ライト - General - /personalization/General - - - Dark - ダーク - General - /personalization/General - - - Auto - 自動 - General - /personalization/General - - - Default - デフォルト - - - - PersonalizationWorker - - Custom - カスタム - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Bluetoothデバイスに接続するためのPIN: - - - Cancel - キャンセル - - - Confirm - 確認 - - - - PowerModule - - Power - 電源 - - - Battery low, please plug in - バッテリーが少なくなっています。電源に接続してください - - - Battery critically low - バッテリー残量がごくわずかです - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - カメラ - - - Microphone - マイク - - - User Folders - - - - Calendar - カレンダー - - - Screen Capture - - - - - QObject - - Control Center - コントロールセンター - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - 有効 - - - View - 表示 - - - To be activated - - - - Activate - 有効化 - - - Expired - 有効期限切れ - - - In trial period - 試用期間中 - - - Trial expired - 試用期間の有効期限切れ - - - Touch Screen Settings - タッチスクリーン設定 - - - The settings of touch screen changed - タッチスクリーンの設定を変更しました - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - キャンセル - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - お使いのシステムは認証されていません。まず有効化してください - - - Update successful - アップデート完了 - - - Failed to update - アップデートに失敗しました - - - - SearchInput - - Search - 検索 - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - 音響効果 - - - - SoundModel - - Boot up - 起動 - - - Shut down - シャットダウン - - - Log out - ログアウト - - - Wake up - ウェイクアップ - - - Volume +/- - 音量の調整 - - - Notification - 通知 - - - Low battery - 低バッテリー - - - Send icon in Launcher to Desktop - ランチャーのアイコンをデスクトップに送る - - - Empty Trash - ゴミ箱を空にする - - - Plug in - 電源に接続 - - - Plug out - 電源を切断 - - - Removable device connected - リムーバブルデバイスの接続 - - - Removable device removed - リムーバブルデバイスの取り外し - - - Error - エラー - - - - SoundModule - - Sound - サウンド - - - - SoundPlugin - - Output - 出力 - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - 入力 - - - Sound Effects - 音響効果 - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - 出力デバイス - - - Mode - モード - - - Output Volume - 出力音量 - - - Volume Boost - 音量増強 - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - 左右のバランス - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - 時間設定 - - - Time - タイム - - - Auto Sync - 自動同期 - - - Reset - リセット - - - Save - 保存 - - - Server - サーバー - - - Address - アドレス - - - Required - 必須 - - - Customize - カスタマイズ - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - キャンセル - - - Confirm - 確認 - - - Add Timezone - タイムゾーンを追加 - - - Add - 追加 - - - Change Timezone - タイムゾーンを変更 - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - 取り消す - - - Save - 保存 - - - - TimezoneItem - - Tomorrow - 明日 - - - Yesterday - 昨日 - - - Today - 今日 - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - タイムゾーンの一覧 - - - System Timezone - システムのタイムゾーン - - - Add Timezone - タイムゾーンを追加 - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - キャンセル - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - 再確認 - - - Update failed: insufficient disk space - アップデートに失敗しました: ディスクの空き領域が不足しています - - - Dependency error, failed to detect the updates - 依存関係エラーが発生したため、アップデートを検出できませんでした - - - Restart the computer to use the system and the applications properly - システムとアプリケーションが正常に動作するように再起動してください - - - Network disconnected, please retry after connected - ネットワークに接続されていません。接続後に再度お試しください - - - Your system is not authorized, please activate first - お使いのシステムは認証されていません。まず有効化してください - - - This update may take a long time, please do not shut down or reboot during the process - このアップデートには時間がかかる可能性があります。アップデート中にシャットダウンしたり再起動したりしないでください - - - Updates Available - - - - Current Edition - 現在のエディション - - - Updating... - アップデートしています… - - - Update All - - - - Last checking time: - 最終確認日時: - - - Your system is up to date - システムは最新です - - - Check for Updates - アップデートの確認 - - - Checking for updates, please wait... - アップデートを確認しています。お待ちください… - - - The newest system installed, restart to take effect - 最新のシステムがインストールされました。再起動すると反映されます。 - - - %1% downloaded (Click to pause) - %1% ダウンロード済み (一時停止するにはクリック) - - - %1% downloaded (Click to continue) - %1% ダウンロード済み (再開するにはクリック) - - - Your battery is lower than 50%, please plug in to continue - バッテリー残量が 50% 未満です。続けるには電源に接続してください - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - 再起動に十分なバッテリー残量があることを確認してください。また、電源を切ったり、電源コードを抜いたりしないでください - - - Size - サイズ - - - - UpdateModule - - Updates - アップデート - - - - UpdatePlugin - - Check for Updates - アップデートの確認 - - - - UpdateSettingItem - - Insufficient disk space - ディスクの空き領域が不足しています - - - Update failed: insufficient disk space - アップデートに失敗しました: ディスクの空き領域が不足しています - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - 最新のシステムがインストールされました。再起動すると反映されます。 - - - Waiting - お待ち下さい - - - Backing up - - - - System backup failed - システムをバックアップできませんでした - - - Release date: - - - - Server - サーバー - - - Desktop - デスクトップ - - - Version - バージョン - - - - UpdateSettingsModule - - Update Settings - アップデートの設定 - - - System - システム - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - アップデートを自動的にダウンロード - - - Switch it on to automatically download the updates in wireless or wired network - 無線または有線ネットワークでアップデートを自動的にダウンロードするにはオンにしてください - - - Auto Install Updates - - - - Updates Notification - アップデートの通知 - - - Clear Package Cache - パッケージキャッシュを消去 - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - システムアップデート - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - 現在のエディション - - - - UpdateWorker - - System Updates - システムアップデート - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - バッテリー時 - - - Never - しない - - - Shut down - シャットダウン - - - Suspend - サスペンド - - - Hibernate - ハイバネート - - - Turn off the monitor - モニターの電源を切る - - - Do nothing - 何もしない - - - 1 Minute - 1 分 - - - %1 Minutes - %1分 - - - 1 Hour - 1 時間 - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - 以下の時間が経過したら画面をロック - - - Computer suspends after - - - - Computer will suspend after - 以下の時間が経過したらコンピューターをサスペント - - - When the lid is closed - カバーを閉じたとき - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - 低バッテリー残量 - - - Auto suspend battery level - 自動サスペンドするバッテリー残量 - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - 最大駆動時間 - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - 電源接続時 - - - 1 Minute - 1 分 - - - %1 Minutes - %1分 - - - 1 Hour - 1 時間 - - - Never - しない - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - 以下の時間が経過したら画面をロック - - - Computer suspends after - - - - When the lid is closed - カバーを閉じたとき - - - When the power button is pressed - - - - Shut down - シャットダウン - - - Suspend - サスペンド - - - Hibernate - ハイバネート - - - Turn off the monitor - モニターの電源を切る - - - Show the shutdown Interface - - - - Do nothing - 何もしない - - - - WacomModule - - Drawing Tablet - ペンタブレット - - - Mode - モード - - - Pressure Sensitivity - 押し込み感度 - - - Pen - ペン - - - Mouse - マウス - - - Light - ライト - - - Heavy - 強い - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ka.ts b/dcc-old/translations/dde-control-center_ka.ts deleted file mode 100644 index bfdaa4c03e..0000000000 --- a/dcc-old/translations/dde-control-center_ka.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - დავრთოთ ნება სხვა Bluetooth მოწყობილობებს ამ მოწყობილობის სანახავად - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Bluetooth-ის ჩართვა ახლომახლო მოწყობილობების მოსაძებნად (დინამიკის, კლავიატურის, თაგვის) - - - My Devices - ჩემი მოწყობილობები - - - Other Devices - სხვა მოწყობილობები - - - Show Bluetooth devices without names - Bluetooth მოწყობილობების ნახვა სახელების გარეშე - - - Connect - დაკავშირება - - - Disconnect - გამოერთება - - - Rename - - - - Send Files - ფაილის გაგზავნა - - - Ignore this device - მოწყობილობის იგნორირება - - - Connecting - დაკავშირება - - - Disconnecting - გმოერთება - - - - AddButtonWidget - - Add Application - აპლიკაციის დამატება - - - Open Desktop file - დესკტოპ ფაილი გახსნა - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - გაუქმება - - - Next - შემდეგი - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - დასრულება - - - Failed to enroll your face - - - - Try Again - - - - Close - დახურვა - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - გაუქმება - - - Next - შემდეგი - - - Iris enrolled - - - - Done - დასრულება - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - არა უმეტეს 15 სიმბოლო - - - Use letters, numbers and underscores only, and no more than 15 characters - გამოიყენეთ მხოლოდ ლათინური ასოები და ციფრები, არა უმეტეს 15 სიმბოლოს - - - Use letters, numbers and underscores only - გამოიყენეთ მხოლოდ ლათინური ასოები, ციფრები და ქვედა ხაზი - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - დაკავშირებულია - - - Not connected - არ დაკავშირდა - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - გაუქმება - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - გაუქმება - - - Confirm - button - დადასტურება - - - - dccV23::AccountSpinBox - - Always - ყოველთვის - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - მომხარებელი - - - Change Password - პაროლის შეცვლა - - - Delete User - - - - User Type - - - - Auto Login - ავტომატური ავტორიზაცია - - - Login Without Password - პაროლის გარეშე ავტორიზაია - - - Validity Days - ვალიდური დღეები - - - Group - ჯგუფი - - - The full name is too long - სრული სახელი ძალიან გრძელია - - - Standard User - სტანდარტული მომხმარებელი - - - Administrator - ადმინისტრატორი - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - სრული სახელი - - - Go to Settings - პარამეტრებში გადასვლა - - - Cancel - გაუქმება - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - გაუქმება - - - Save - შენახვა - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - სურათები - - - - dccV23::BootWidget - - Updating... - განახლება... - - - Startup Delay - ჩართვის დაგვიანება - - - Theme - თემა - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - პირველ ჩამრთველად დასაყენებლად დააკლიკეთ სიაში არსებულ ვარიანტს. ფონის შესაცვლელად მოკიდეთ სურათს და გადმოიტანეთ - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - ჩართვის მენიუს თემის სანახავად შეცვლაეთ იგი - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - პაროლის შეცვლა - - - Boot Menu - ჩართვის მენიუ - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - აუცილებელია - - - Cancel - button - გაუქმება - - - Confirm - button - დადასტურება - - - Password cannot be empty - პაროლი არ შეიძლება იყოს ცარიელი - - - Passwords do not match - პარლი არ ემთხვევა - - - - dccV23::BrightnessWidget - - Brightness - განათება - - - Color Temperature - ტემპერატურის ფერი - - - Auto Brightness - ავტომატური განათება - - - Night Shift - ღამის ცვლა - - - The screen hue will be auto adjusted according to your location - ეკრანის ფერის ავტომატურად მორგება თქვენი მდებარეობის შესაბამისად - - - Change Color Temperature - ტემპერატურის ფერის შეცვლა - - - Cool - ცივი - - - Warm - თბილი - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - ჩემი მოწყობილობები - - - Other Devices - სხვა მოწყობილობები - - - - dccV23::CommonInfoPlugin - - General Settings - ძირითადი პარამეტრები - - - Boot Menu - ჩართვის მენიუ - - - Developer Mode - დეველოპერის რეჟიმი - - - User Experience Program - მომხმარებლის გამოცდილების პროგრამა - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - თანახმა ვარ გავწევრიანდე მომხმარებლის გამოცდილების პროგრამაში - - - The Disclaimer of Developer Mode - პასუხისმგებლობა დეველოპერულ რეჟიმზე - - - Agree and Request Root Access - თანახმა ვარ, Root წვდომის მოთხოვნა - - - Failed to get root access - შეცდომა root უფლების მიღებისას - - - Please sign in to your Union ID first - გთხოვთ გაიარეთ ავტორიზაცია თქვენს Union ID-ში - - - Cannot read your PC information - ვერ მოხერხდა თქვენი კომპიუტერის ინფორმაციის წაკითხვა - - - No network connection - არ არის ქსელთან კავშირი - - - Certificate loading failed, unable to get root access - ვერ მოხერხდა სერტიფიკატის ჩატვირთვა, ვერ მოხერხდა root უფლების მიღება - - - Signature verification failed, unable to get root access - ხელმოწერის დადასტურების შეცდომა, ვერ მოხერხდა root უფლების მიღება - - - - dccV23::CreateAccountPage - - Group - ჯგუფი - - - Cancel - გაუქმება - - - Create - შექმნა - - - New User - - - - User Type - - - - Username - მომხარებელი - - - Full Name - სრული სახელი - - - Password - პაროლი - - - Repeat Password - გაიმეორეთ პარლი - - - Password Hint - - - - The full name is too long - სრული სახელი ძალიან გრძელია - - - Passwords do not match - პარლი არ ემთხვევა - - - Standard User - სტანდარტული მომხმარებელი - - - Administrator - ადმინისტრატორი - - - Customized - მორგებული - - - Required - აუცილებელია - - - optional - არჩევითი - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - მეტსახელი უნდა შეიცავდეს 3 დან 32 სიმბოლომდე - - - The first character must be a letter or number - პირველი სიმბოლო უნყდა იყოს ასო ან სიმბოლო - - - Your username should not only have numbers - მეტსახელი ვერ იქნება მხოლოდ სიმბოლოები - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - სურათები - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - მორგებული იარლიყის დამატება - - - Name - სახელი - - - Required - აუცილებელია - - - Command - ბრძანება - - - Cancel - გაუქმება - - - Add - დამატება - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - იარლიყი წარმოქმნის კონფლიქტს %1-თთან, დააჭირეთ დამატებას მომენტალურად ძალაში შესასვლელად - - - - dccV23::CustomEdit - - Required - აუცილებელია - - - Cancel - გაუქმება - - - Save - შენახვა - - - Shortcut - იარლიყი - - - Name - სახელი - - - Command - ბრძანება - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - იარლიყი წარმოქმნის კონფლიქტს %1-თთან, დააჭირეთ დამატებას მომენტალურად ძალაში შესასვლელად - - - - dccV23::CustomItem - - Shortcut - იარლიყი - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Root წვდომის მოთხოვნა - - - Online - ონლაინ - - - Offline - არ არის ონლაინ - - - Please sign in to your Union ID first and continue - გაგრძელებამდე გთხოვთ ჯერ გიარეთ ავტორიზაცია Union ID-ში - - - Next - შემდეგი - - - Export PC Info - კომპიუტერი ინფორმაციის ექსპორტი - - - Import Certificate - სერტიფიკატის იმპორტი - - - 1. Export your PC information - 1. კომპიუტერი ინფორმაციის ექსპორტი - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. გადადით https://www.chinauos.com/developMode რათა გადმოწეროთ ოფლაინ სერტიფიკატი - - - 3. Import the certificate - 3. დააიმპორტირეთ სერტიფიკატი - - - - dccV23::DeveloperModeWidget - - Request Root Access - Root წვდომის მოთხოვნა - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - დეველოპერის რეჟიმი საშუალებას გაძლევთ მიიღოთ root პრივილეგიები, დააინსტალიროთ ნებისმიერ აპლიკაცია, რომელიც არ არის განთავსებული აპლიკაციების მაღაზიაში. გთხოვთ გაითვალისწინოთ, რომ თქვენი სისტემა შეიძლება დაზიანდეს არასწორი ქმედების ჩადენის შემთხვევაში - - - The feature is not available at present, please activate your system first - ეს ფუნქცია არ არის ამჟამად ნებადართული, გთხოვთ გააქტიურეთ თქვენი სისტემა - - - Failed to get root access - შეცდომა root უფლების მიღებისას - - - Please sign in to your Union ID first - გთხოვთ გაიარეთ ავტორიზაცია თქვენს Union ID-ში - - - Cannot read your PC information - ვერ მოხერხდა თქვენი კომპიუტერის ინფორმაციის წაკითხვა - - - No network connection - არ არის ქსელთან კავშირი - - - Certificate loading failed, unable to get root access - ვერ მოხერხდა სერტიფიკატის ჩატვირთვა, ვერ მოხერხდა root უფლების მიღება - - - Signature verification failed, unable to get root access - ხელმოწერის დადასტურების შეცდომა, ვერ მოხერხდა root უფლების მიღება - - - To make some features effective, a restart is required. Restart now? - ფუნქციის ეფქტური მუშაობისათვის საჭირო არის კომპიუტერის გადატვირთვა, გსურთ ამის შესრულება ახლა? - - - Cancel - გაუქმება - - - Restart Now - გადატვირთვა - - - Root Access Allowed - Root წვდომა ნებადართულია - - - - dccV23::DisplayPlugin - - Display - მონიტორი - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - განმეორების დაგვიანება - - - Short - მოკლე - - - Long - შორი - - - Repeat Rate - განმეორების სიხშირე - - - Slow - ნელი - - - Fast - სწრაფი - - - Test here - ტესტირება აქ - - - Numeric Keypad - ციფრების დაფა - - - Caps Lock Prompt - Caps Lock შეხსენება - - - - dccV23::GeneralSettingWidget - - Left Hand - ცაცია - - - Disable touchpad while typing - თაჩ პადის გათიშვა კლავიატურაზე აკრეფისას - - - Scrolling Speed - სქროლის სიჩქარე - - - Double-click Speed - ორმაგი კლიკის სიჩქარე - - - Slow - ნელი - - - Fast - სწრაფი - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - კლავიატურის განლაგება - - - Edit - რედაქტირება - - - Add Keyboard Layout - - - - Done - დასრულება - - - - dccV23::KeyboardLayoutDialog - - Cancel - გაუქმება - - - Add - დამატება - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - კლავიატურა და ენა - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - კლავიატურის განლაგება - - - Language - - - - Shortcuts - იარლიყები - - - - dccV23::MainWindow - - Help - დახმარება - - - - dccV23::ModifyPasswdPage - - Change Password - პაროლის შეცვლა - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - ამჟამინდელი პაროლი - - - Forgot password? - - - - New Password - ახალი პაროლი - - - Repeat Password - გაიმეორეთ პარლი - - - Password Hint - - - - Cancel - გაუქმება - - - Save - შენახვა - - - Passwords do not match - პარლი არ ემთხვევა - - - Required - აუცილებელია - - - Optional - სურვილისამებრ - - - Password cannot be empty - პაროლი არ შეიძლება იყოს ცარიელი - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - არასწორი პაროლი - - - New password should differ from the current one - ახალი პაროლი უნდა განსხვავდებოდეს ძველისგნა - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - თაგვი - - - General - ძირითადი - - - Touchpad - თაჩპადი - - - TrackPoint - თრექპოინტი - - - - dccV23::MouseSettingWidget - - Pointer Speed - კურსორის სიჩქარე - - - Mouse Acceleration - თაგვის აჩქარება - - - Disable touchpad when a mouse is connected - თაჩპადის გაუქმება როდესაც თაგვი დაკავშირებულია - - - Natural Scrolling - ნატურალური სქროლვა - - - Slow - ნელი - - - Fast - სწრაფი - - - - dccV23::MultiScreenWidget - - Multiple Displays - რამოდენიმე მონიტორი - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - მთავარი მონიტორი - /display/Main Scree - - - Duplicate - დუბლირება - - - Extend - გაშლა - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - შეტობინება - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - პაროლი არ შეიძლება იყოს ცარიელი - - - Password must have at least %1 characters - პაროლი უნდა შეიცავდეს მინიმუმ %1 სიმბოლო - - - Password must be no more than %1 characters - პაროლი არ უნდა იყოს %1 სიმბოლოზე მეტი - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - პაროლი არ უნდა შეიცავდეს მაქსიმუმ 4 პალინდრომ სიმბოლოს - - - Do not use common words and combinations as password - პაროლი არ უნდა შეიცავდეს გავრცელებულ სიტყვებს და კომბინაციებს - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - განახლების სიჩქარე - - - Hz - Hz - - - Recommended - რეკომენდირებულია - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - გაუქმება - - - Delete - წაშლა - - - - dccV23::ResolutionWidget - - Resolution - გაფართოება - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - რეკომენდირებულია - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - სტანდარტული - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - მონიტორს გააჩნია მხოლოდ 100%-იანი მასშტაბირება - - - Display Scaling - ჩვენების მასშტაბირება - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - განათება - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - გაუქმება - - - Confirm - დადასტურება - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - რედაქტირება - - - Done - დასრულება - - - - dccV23::ShortCutSettingWidget - - System - სისტემა - - - Window - ფანჯარა - - - Workspace - სამუშაო დაფა - - - Assistive Tools - დამხმარე ხელსაწყოები - - - Custom Shortcut - მორგებული იარლიყი - - - Restore Defaults - სტანდარტული პარამეტრების აღდგენა - - - Shortcut - იარლიყი - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - გაუქმება - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - ტიპი - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - სისტემის ინფორმაცია - - - - dccV23::SystemLanguageSettingDialog - - Cancel - გაუქმება - - - Add - დამატება - - - Add System Language - სისტემის ენის დამატება - - - - dccV23::SystemLanguageWidget - - Edit - რედაქტირება - - - Language List - ენების სია - - - Add Language - - - - Done - დასრულება - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - სენსორული ეკრანი - - - Select your touch screen when connected or set it here. - აირჩიეთ თქვენი სენსორული ეკრანი - - - Confirm - დადასტურება - - - Cancel - გაუქმება - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - კურსორის სიჩქარე - - - Slow - ნელი - - - Fast - სწრაფი - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - მომხმარებლის გამოცდილების პროგრამაში გაწევრიანება - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - წელი - - - Month - თვე - - - Day - დღე - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - სტანდარტული აპლიკაცია - - - - DefAppPlugin - - Webpage - ვებ-გვერდი - - - Mail - ელ-ფოსტა - - - Text - ტექსტი - - - Music - მუსიკა - - - Video - ვიდეო - - - Picture - სურათი - - - Terminal - ტერმინალი - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - გაუქმება - - - Next - შემდეგი - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - რამოდენიმე მონიტორი - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - რედაქტირება - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - დასრულება - - - Add Face - - - - The name already exists - სახელი უკვე არსებობს - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - თითის ანაბეჭდის დამატება - - - Cancel - გაუქმება - - - Next - შემდეგი - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - რედაქტირება - - - Fingerprint Password - თითის ანაბეჭდის პაროლი - - - You can add up to 10 fingerprints - თვენ შეგიძლიათ დაამატოთ 10-მდე თითის ანაბეჭდი - - - Done - დასრულება - - - The name already exists - სახელი უკვე არსებობს - - - Add Fingerprint - თითის ანაბეჭდის დამატება - - - - GeneralModule - - General - ძირითადი - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - რედაქტირება - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - დასრულება - - - Add Iris - - - - The name already exists - სახელი უკვე არსებობს - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - ფანჯარა - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - პერსონალიზაცია - - - - PersonalizationThemeList - - Cancel - გაუქმება - - - Save - შენახვა - - - Light - - - - Dark - - - - Auto - აუტომატური - - - Default - - - - - PersonalizationThemeModule - - Theme - თემა - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - თემის იქონი - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - აუტომატური - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - აუტომატური - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - გაუქმება - - - Confirm - დადასტურება - - - - PowerModule - - Power - კვება - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - კალენდარი - - - Screen Capture - - - - - QObject - - Control Center - მართვის ცენტრი - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - სენსორული მონიტორის პარამეტრები - - - The settings of touch screen changed - სენსორული მონიტორის პარამეტრები შეიცვალა - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - გაუქმება - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - შეტობინება - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - ხმა - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - დროის სარტყელის პარამეტრები - - - Time - - - - Auto Sync - ავტომატური სინქრონიზაცია - - - Reset - - - - Save - შენახვა - - - Server - სერვერი - - - Address - მისამართი - - - Required - აუცილებელია - - - Customize - მორგება - - - Year - წელი - - - Month - თვე - - - Day - დღე - - - - TimeZoneChooser - - Cancel - გაუქმება - - - Confirm - დადასტურება - - - Add Timezone - დროის სარტყელის დამატება - - - Add - დამატება - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - შენახვა - - - - TimezoneItem - - Tomorrow - ხვალ - - - Yesterday - გუშინ - - - Today - დღეს - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - დროის სარტყელის სია - - - System Timezone - სისტემის დროის სარტყელი - - - Add Timezone - დროის სარტყელის დამატება - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - გაუქმება - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - განახლება... - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - განახლება - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - სერვერი - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - სისტემა - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - არასდროს - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - არასდროს - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - ტაბლეტით ხატვა - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - თაგვი - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_kab.ts b/dcc-old/translations/dde-control-center_kab.ts deleted file mode 100644 index 60549d3754..0000000000 --- a/dcc-old/translations/dde-control-center_kab.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Sermed bluetooth i wakken ad d-tafeḍ ibenkan uqriben (imsawalen, anasiw, taɣerdayt) - - - My Devices - Ibenkan-inu - - - Other Devices - Ibenkan-nniḍen - - - Show Bluetooth devices without names - - - - Connect - Qqen - - - Disconnect - Ffeɣ seg tuqqna - - - Rename - - - - Send Files - - - - Ignore this device - Zgel ibenk-a - - - Connecting - Tuqqna - - - Disconnecting - - - - - AddButtonWidget - - Add Application - Rnu asnas - - - Open Desktop file - Ldi afaylu n tnarit - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Sefsex - - - Next - ɣer sdat - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Ifuk - - - Failed to enroll your face - - - - Try Again - - - - Close - Mdel - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Sefsex - - - Next - ɣer sdat - - - Iris enrolled - - - - Done - Ifuk - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - Ulac nnig 15 yizamulen - - - Use letters, numbers and underscores only, and no more than 15 characters - Seqdec kan isekkilen, izwilen akked yijerriden n uderrer, rnu ur ttεeddayen ara nnig 15 yizamulen - - - Use letters, numbers and underscores only - Seqdec kan isekkilen, izwilen akked yijerriden n uderrer - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Yeqqen - - - Not connected - Ur yeqqin ara - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - Tuccḍa tarussint - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Sefsex - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Sefsex - - - Confirm - button - Sentem - - - - dccV23::AccountSpinBox - - Always - Yal ass - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Isem n useqdac - - - Change Password - Beddel awal uffir - - - Delete User - - - - User Type - - - - Auto Login - Anekcum awurman - - - Login Without Password - Anekcum s war awal uffir - - - Validity Days - - - - Group - Agraw - - - The full name is too long - Isem ummid ɣezzif aṭas - - - Standard User - - - - Administrator - Anedbal - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Isem ummid - - - Go to Settings - Ddu ɣer yiɣewwaren - - - Cancel - Sefsex - - - OK - IH - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - Sken deg wagens n telɣut - - - Show message preview - Sken izen yezrin - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Sefsex - - - Save - Sekles - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Tugniwin - - - - dccV23::BootWidget - - Updating... - Aleqqem... - - - Startup Delay - - - - Theme - Asentel - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Beddel awal uffir - - - Boot Menu - Umuɣ n usenker - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Yettusra - - - Cancel - button - Sefsex - - - Confirm - button - Sentem - - - Password cannot be empty - Awal uffir ur ilaq ara ad yili d ilem - - - Passwords do not match - Awalen uffiren mgarraden - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Ibenkan-inu - - - Other Devices - Ibenkan-nniḍen - - - - dccV23::CommonInfoPlugin - - General Settings - Iɣewwaren imuta - - - Boot Menu - Umuɣ n usenker - - - Developer Mode - Askar n yineflayen - - - User Experience Program - Ahil n tirmit n useqdac - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - Awway n unekcum aẓar ur yeddi ara - - - Please sign in to your Union ID first - Ttxil-k·m kcem qbel qer usulay-inek·inem Union - - - Cannot read your PC information - Ur yessaweḍ ara ad d-iɣer talɣut n uselkim-inek·inem - - - No network connection - Ulac tuqqna ɣer uzeṭṭa - - - Certificate loading failed, unable to get root access - Asali n uselkin yecceḍd, d awezɣi ad d-yili wawway n unekcum - - - Signature verification failed, unable to get root access - Asenqed n uzmul yecceḍd, awway n unekcum aẓar dd awezɣi - - - - dccV23::CreateAccountPage - - Group - Agraw - - - Cancel - Sefsex - - - Create - Rnu - - - New User - - - - User Type - - - - Username - Isem n useqdac - - - Full Name - Isem ummid - - - Password - Awal uffir - - - Repeat Password - Ales i wawal uffir - - - Password Hint - - - - The full name is too long - Isem ummid ɣezzif aṭas - - - Passwords do not match - Awalen uffiren mgarraden - - - Standard User - - - - Administrator - Anedbal - - - Customized - Yettusagen - - - Required - Yettusra - - - optional - afrayan - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Isem n useqdac isefk ad isɛu gar 3 akked 32 n yisekkilen - - - The first character must be a letter or number - Asekkil amezwaru isefk ad yili d asekkil neɣ d amḍan - - - Your username should not only have numbers - Isem n uɛeddi inek ur ilaq ara ad isɛu anagar imḍanen - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Tugniwin - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Rnu inegzumen udmawanen - - - Name - Isem - - - Required - Yettusra - - - Command - - - - Cancel - Sefsex - - - Add - Rnu - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Yettusra - - - Cancel - Sefsex - - - Save - Sekles - - - Shortcut - Inegzumen - - - Name - Isem - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - Inegzumen - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Anekcum aẓar yettusran - - - Online - Srid - - - Offline - Beṛṛa n tuqqna - - - Please sign in to your Union ID first and continue - - - - Next - ɣer sdat - - - Export PC Info - Sifeḍ talɣut n uselkim - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - Anekcum aẓar yettusran - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - Tamahilt ulac-itt akka tura, ttxil-k·m rmed anagraw-inek·inem d amezwaru - - - Failed to get root access - Awway n unekcum aẓar ur yeddi ara - - - Please sign in to your Union ID first - Ttxil-k·m kcem qbel qer usulay-inek·inem Union - - - Cannot read your PC information - Ur yessaweḍ ara ad d-iɣer talɣut n uselkim-inek·inem - - - No network connection - Ulac tuqqna ɣer uzeṭṭa - - - Certificate loading failed, unable to get root access - Asali n uselkin yecceḍd, d awezɣi ad d-yili wawway n unekcum - - - Signature verification failed, unable to get root access - Asenqed n uzmul yecceḍd, awway n unekcum aẓar dd awezɣi - - - To make some features effective, a restart is required. Restart now? - I wakken ad terreḍ kra n tmahilin teddunt akken iwata, allus n usenker yettusra. Ales asenker tura? - - - Cancel - Sefsex - - - Restart Now - Ales tura asenker - - - Root Access Allowed - Anekcum aẓar yettusireg - - - - dccV23::DisplayPlugin - - Display - Askan - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - Wezzil - - - Long - Γezzif - - - Repeat Rate - - - - Slow - - - - Fast - Arurad - - - Test here - Akayad da - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - Afus azelmaḍ - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - Arurad - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Taneɣruft n unasiw - - - Edit - Ẓreg - - - Add Keyboard Layout - - - - Done - Ifuk - - - - dccV23::KeyboardLayoutDialog - - Cancel - Sefsex - - - Add - Rnu - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Anasiw d tutlayt - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Taneɣruft n unasiw - - - Language - - - - Shortcuts - Inegzumen - - - - dccV23::MainWindow - - Help - Tallalt - - - - dccV23::ModifyPasswdPage - - Change Password - Beddel awal uffir - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Awal uffir amiran - - - Forgot password? - - - - New Password - Awal uffir amaynut - - - Repeat Password - Ales i wawal uffir - - - Password Hint - - - - Cancel - Sefsex - - - Save - Sekles - - - Passwords do not match - Awalen uffiren mgarraden - - - Required - Yettusra - - - Optional - Afrayan - - - Password cannot be empty - Awal uffir ur ilaq ara ad yili d ilem - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Yir awal uffir - - - New password should differ from the current one - Awal uffir amaynut ilaq ad yemgarrad d wawal-a uffir amiran - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Taɣerdayt - - - General - Amatu - - - Touchpad - Touchpad - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - Arurad - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Askar - /display/Mode - - - Main Screen - Agdil agejdan - /display/Main Scree - - - Duplicate - Sleg - - - Extend - Siɣzef - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Talɣut - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Tasertit n tbaḍnit - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - Awal uffir ur ilaq ara ad yili d ilem - - - Password must have at least %1 characters - Awal uffir ilaq ad yesɛu ma drus %1 yisekkilen - - - Password must be no more than %1 characters - Awal uffir ur ilaq ara ad iɛeddi nnig n 1% n yisekkilen - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - Hz - - - Recommended - Yettuwelleh - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Kkes akaram n umiḍan - - - Cancel - Sefsex - - - Delete - Kkes - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Amezwer - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Yettuwelleh - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - Alugan - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Nadi - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - Alemmas - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Sefsex - - - Confirm - Sentem - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Ẓreg - - - Done - Ifuk - - - - dccV23::ShortCutSettingWidget - - System - Anagraw - - - Window - Asfaylu - - - Workspace - Tallunt n umahil - - - Assistive Tools - Ifecka n tallalt - - - Custom Shortcut - Sagen inegzumen - - - Restore Defaults - Err-d imezwer - - - Shortcut - Inegzumen - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Sefsex - - - Replace - Beddel - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - yella - - - - dccV23::SystemInfoModule - - About This PC - Ɣef uselkim-a - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - Lqem - - - Edition - - - - Type - Anaw - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Turagt n teẓrigt - - - End User License Agreement - - - - Privacy Policy - Tasertit n tbaḍnit - - - %1-bit - %1-ibiten - - - - dccV23::SystemInfoPlugin - - System Info - Talɣut n unagraw - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Sefsex - - - Add - Rnu - - - Add System Language - Rnu tutlayt n unagraw - - - - dccV23::SystemLanguageWidget - - Edit - Ẓreg - - - Language List - Tabdart n tutlayin - - - Add Language - - - - Done - Ifuk - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - Seg - - - To - Γer - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Sentem - - - Cancel - Sefsex - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - Arurad - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Rnu ɣer wahil n tirmit n useqdac - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Aseggas - - - Month - Ayyur - - - Day - Ass - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Isnasen imezwer - - - - DefAppPlugin - - Webpage - Asebter web - - - Mail - Imaylen - - - Text - Aḍdris - - - Music - Aẓawan - - - Video - Avidyu - - - Picture - Tugna - - - Terminal - Tadiwent - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Sefsex - - - Next - ɣer sdat - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - Askar - - - Position - - - - Status - Addad - - - Show recent apps in Dock - - - - Size - Teɣzi - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - Afella - - - Bottom - Adda - - - Left - Azelmaḍ - - - Right - Ayeffus - - - Location - Adig - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - Mecṭuḥ - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Ẓreg - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Ifuk - - - Add Face - - - - The name already exists - Isem yella yakan - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Sefsex - - - Next - ɣer sdat - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Ẓreg - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - Ifuk - - - The name already exists - Isem yella yakan - - - Add Fingerprint - - - - - GeneralModule - - General - Amatu - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Ẓreg - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Ifuk - - - Add Iris - - - - The name already exists - Isem yella yakan - - - Iris - - - - - KeyLabel - - None - Ula yiwen.yiwet - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - Ibenk n unekcum - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - Asfaylu - - - Window Effect - Asemdu n usfaylu - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Mecṭuḥ - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - Asagen - - - - PersonalizationThemeList - - Cancel - Sefsex - - - Save - Sekles - - - Light - Amceεlal - - - Dark - Aberkan - - - Auto - Awurman - - - Default - Amezwer - - - - PersonalizationThemeModule - - Theme - Asentel - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Asentel n tignit - - - Cursor Theme - Asentel n teḥnaccaḍt - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - Amceεlal - - - Auto - Awurman - - - Dark - Aberkan - - - - PersonalizationThemeWidget - - Light - Amceεlal - General - /personalization/General - - - Dark - Aberkan - General - /personalization/General - - - Auto - Awurman - General - /personalization/General - - - Default - Amezwer - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN n tuqqna ɣer yibenk Bluetooth d: - - - Cancel - Sefsex - - - Confirm - Sentem - - - - PowerModule - - Power - Tazmert - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - Asawaḍ - - - User Folders - - - - Calendar - Awitay - - - Screen Capture - - - - - QObject - - Control Center - Ammas n usenqed - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Yetturmed - - - View - Tamuɣli - - - To be activated - - - - Activate - - - - Expired - Yemmut - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Sefsex - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Nadi - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - Sens - - - Log out - Ffeɣ - - - Wake up - Kker - - - Volume +/- - Ableɣ +/- - - - Notification - Talɣut - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - Taqecwalt d tilemt - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - Tuccḍa - - - - SoundModule - - Sound - Imesli - - - - SoundPlugin - - Output - Tuffɣa - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Anekcum - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - Ibenk n tuffɣa - - - Mode - Askar - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - Azelmaḍ - - - Right - Ayeffus - - - - TimeSettingModule - - Time Settings - Iɣewwaren n wakud - - - Time - - - - Auto Sync - Amtawi awurman - - - Reset - - - - Save - Sekles - - - Server - Aqeddac - - - Address - Tansa - - - Required - Yettusra - - - Customize - Sagen - - - Year - Aseggas - - - Month - Ayyur - - - Day - Ass - - - - TimeZoneChooser - - Cancel - Sefsex - - - Confirm - Sentem - - - Add Timezone - Rnu tamnaḍt takudant - - - Add - Rnu - - - Change Timezone - Senfel tamnaḍt takudant - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Sekles - - - - TimezoneItem - - Tomorrow - Azekka - - - Yesterday - Azekka - - - Today - Ass-a - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Tabdart n temnaḍt takudant - - - System Timezone - Tamnaḍt takudant n unagraw - - - Add Timezone - Rnu tamnaḍt takudant - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Sefsex - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Tuccḍa deg tagelt, tifin n yileqman ur teddi ara - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - Taẓrigt tamirant - - - Updating... - Aleqqem... - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - Senqed ileqman - - - Checking for updates, please wait... - Asenqed n yileqman, ttxil-k·m ṛǧu... - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - %1% yettwasader (Sit ad yeḥbes) - - - %1% downloaded (Click to continue) - %1% yettwasader (Sit ad ikemmel) - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Teɣzi - - - - UpdateModule - - Updates - Ileqman - - - - UpdatePlugin - - Check for Updates - Senqed ileqman - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Aqeddac - - - Desktop - - - - Version - Lqem - - - - UpdateSettingsModule - - Update Settings - Iɣewwaren n lqem - - - System - Anagraw - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - Alɣu n yileqman - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Ileqman n unagraw - - - Security Updates - Ileqman n tɣellist - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Taẓrigt tamirant - - - - UpdateWorker - - System Updates - Ileqman n unagraw - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - Ileqman n tɣellist - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Werǧin - - - Shut down - Sens - - - Suspend - Seḥbes - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - Ur xedddem acemma - - - 1 Minute - 1 Tesdat - - - %1 Minutes - %1 tesdat - - - 1 Hour - 1 usrag - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Sekkeṛ mbeεd agdil - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 Tesdat - - - %1 Minutes - %1 tesdat - - - 1 Hour - 1 usrag - - - Never - Werǧin - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Sekkeṛ mbeεd agdil - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Sens - - - Suspend - Seḥbes - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - Ur xedddem acemma - - - - WacomModule - - Drawing Tablet - Sefsex - - - Mode - Askar - - - Pressure Sensitivity - - - - Pen - - - - Mouse - Taɣerdayt - - - Light - Amceεlal - - - Heavy - Ẓẓay - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_kk.ts b/dcc-old/translations/dde-control-center_kk.ts deleted file mode 100644 index 3a8da4e667..0000000000 --- a/dcc-old/translations/dde-control-center_kk.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Жаныңыздағы құрылғыларды табу үшін Bluetooth іске қосыңыз (колонка, пернетақта, тышқан) - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Байланысу - - - Disconnect - Байланысты үзу - - - Rename - - - - Send Files - - - - Ignore this device - Бұл құрылғыны елемеу - - - Connecting - Байланысуда - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Бас тарту - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Дайын - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Бас тарту - - - Next - - - - Iris enrolled - - - - Done - Дайын - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Саусақ баспасы - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Байланысқан - - - Not connected - - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Бас тарту - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Бас тарту - - - Confirm - button - Растау - - - - dccV23::AccountSpinBox - - Always - Әрқашан - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Пайдаланушы аты - - - Change Password - Парольді өзгерту - - - Delete User - - - - User Type - - - - Auto Login - Автокіру - - - Login Without Password - Парольсіз кіру - - - Validity Days - Жарамдылық мерзімі - - - Group - Топ - - - The full name is too long - - - - Standard User - Қалыпты пайдаланушы - - - Administrator - Әкімші - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Толық аты - - - Go to Settings - Баптауларға өту - - - Cancel - Бас тарту - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Бас тарту - - - Save - Сақтау - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Суреттер - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Парольді өзгерту - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Міндетті - - - Cancel - button - Бас тарту - - - Confirm - button - Растау - - - Password cannot be empty - - - - Passwords do not match - Парольдер өзара сәйкес келмейді - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - Жалпы баптаулар - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Топ - - - Cancel - Бас тарту - - - Create - Жасау - - - New User - - - - User Type - - - - Username - Пайдаланушы аты - - - Full Name - Толық аты - - - Password - Пароль - - - Repeat Password - Парольді қайталау - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - Парольдер өзара сәйкес келмейді - - - Standard User - Қалыпты пайдаланушы - - - Administrator - Әкімші - - - Customized - - - - Required - Міндетті - - - optional - міндетті емес - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Суреттер - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - Міндетті - - - Command - - - - Cancel - Бас тарту - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Міндетті - - - Cancel - Бас тарту - - - Save - Сақтау - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Бас тарту - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Экран - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - Дайын - - - - dccV23::KeyboardLayoutDialog - - Cancel - Бас тарту - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Пернетақта және тіл - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - Көмек - - - - dccV23::ModifyPasswdPage - - Change Password - Парольді өзгерту - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Ағымдағы пароль - - - Forgot password? - - - - New Password - Жаңа пароль - - - Repeat Password - Парольді қайталау - - - Password Hint - - - - Cancel - Бас тарту - - - Save - Сақтау - - - Passwords do not match - Парольдер өзара сәйкес келмейді - - - Required - Міндетті - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Пароль қате - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Тышқан - - - General - - - - Touchpad - Тачпад - - - TrackPoint - Трекпойнт - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Хабарламалар - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - Гц - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Бас тарту - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Бас тарту - - - Confirm - Растау - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - Дайын - - - - dccV23::ShortCutSettingWidget - - System - Жүйе - - - Window - - - - Workspace - - - - Assistive Tools - Көмекші технологиялар - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Бас тарту - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - Жүйе ақпараты - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Бас тарту - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - Дайын - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Растау - - - Cancel - Бас тарту - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Жыл - - - Month - Ай - - - Day - Күн - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Үнсіз келісім қолданбалары - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - Музыка - - - Video - Видео - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Бас тарту - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Дайын - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Саусақ баспасын қосу - - - Cancel - Бас тарту - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - Дайын - - - The name already exists - - - - Add Fingerprint - Саусақ баспасын қосу - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Дайын - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - Жекешелендіру - - - - PersonalizationThemeList - - Cancel - Бас тарту - - - Save - Сақтау - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Бас тарту - - - Confirm - Растау - - - - PowerModule - - Power - Қорек - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Бас тарту - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - Хабарламалар - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Дыбыс - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - Сақтау - - - Server - Сервер - - - Address - Адресі - - - Required - Міндетті - - - Customize - Баптау - - - Year - Жыл - - - Month - Ай - - - Day - Күн - - - - TimeZoneChooser - - Cancel - Бас тарту - - - Confirm - Растау - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Сақтау - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Бас тарту - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - Жаңартулар - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Сервер - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - Жүйе - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - Сурет салу планшеті - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - Тышқан - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_km_KH.ts b/dcc-old/translations/dde-control-center_km_KH.ts deleted file mode 100644 index 2a70a8f7c0..0000000000 --- a/dcc-old/translations/dde-control-center_km_KH.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - កំពុងភ្ជាប់ - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - បោះបង់ - - - Next - បន្ទាប់ - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - ធ្វើរួច - - - Failed to enroll your face - - - - Try Again - - - - Close - បិទ - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - បោះបង់ - - - Next - បន្ទាប់ - - - Iris enrolled - - - - Done - ធ្វើរួច - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - បានភ្ជាប់ - - - Not connected - មិនបាន​តភ្ជាប់ - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - បោះបង់ - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - បោះបង់ - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - បោះបង់ - - - OK - យល់ព្រម - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - បោះបង់ - - - Save - រក្សាទុក - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - បោះបង់ - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - បោះបង់ - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - បោះបង់ - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - បោះបង់ - - - Save - រក្សាទុក - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - បន្ទាប់ - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - បោះបង់ - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - កែសម្រួល - - - Add Keyboard Layout - - - - Done - ធ្វើរួច - - - - dccV23::KeyboardLayoutDialog - - Cancel - បោះបង់ - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - ជំនួយ - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - បោះបង់ - - - Save - រក្សាទុក - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - បោះបង់ - - - Delete - លុប - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - បោះបង់ - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - កែសម្រួល - - - Done - ធ្វើរួច - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - បោះបង់ - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - បោះបង់ - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - កែសម្រួល - - - Language List - - - - Add Language - - - - Done - ធ្វើរួច - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - បោះបង់ - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - បោះបង់ - - - Next - បន្ទាប់ - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - កែសម្រួល - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - ធ្វើរួច - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - បោះបង់ - - - Next - បន្ទាប់ - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - កែសម្រួល - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - ធ្វើរួច - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - កែសម្រួល - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - ធ្វើរួច - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - បោះបង់ - - - Save - រក្សាទុក - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - ស្បែករូបតំណាង - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - បោះបង់ - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - ប្រតិទិន - - - Screen Capture - - - - - QObject - - Control Center - មជ្ឈមណ្ឌលបញ្ជា - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - បោះបង់ - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - បិទ - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - រក្សាទុក - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - បោះបង់ - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - រក្សាទុក - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - ថ្ងៃនេះ - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - បោះបង់ - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - ចាប់ផ្ដើមកុំព្យូទ័រឡើងវិញដើម្បីប្រើប្រព័ន្ធនិងកម្មវិធីឱ្យបានត្រឹមត្រូវ - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - មិនដែល - - - Shut down - បិទ - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - មិនដែល - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - បិទ - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_kn_IN.ts b/dcc-old/translations/dde-control-center_kn_IN.ts deleted file mode 100644 index 0af610a9d7..0000000000 --- a/dcc-old/translations/dde-control-center_kn_IN.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - ಮುಂದೆ - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - ಮುಂದೆ - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - ಮುಂದೆ - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - ಸಹಾಯ - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - ಮುಂದೆ - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - ಮುಂದೆ - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - ಸಮಯದ ಸೆಟ್ಟಿಂಗ್ ಗಳು - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - ಇಂದು - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ko.ts b/dcc-old/translations/dde-control-center_ko.ts deleted file mode 100644 index a3ddfa2e4d..0000000000 --- a/dcc-old/translations/dde-control-center_ko.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - 블루투스를 활성화하여 근처 장치 찾기 (스피커, 키보드, 마우스) - - - My Devices - 내 장치 - - - Other Devices - 기타 장치 - - - Show Bluetooth devices without names - - - - Connect - 연결 - - - Disconnect - 연결 해제 - - - Rename - 이름 변경 - - - Send Files - - - - Ignore this device - 이 장치 무시 - - - Connecting - 연결 중 - - - Disconnecting - 연결 끊기 - - - - AddButtonWidget - - Add Application - 응용프로그램 추가 - - - Open Desktop file - 바탕화면 파일 열기 - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - 취소 - - - Next - 다음 - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - 완료 - - - Failed to enroll your face - - - - Try Again - - - - Close - 닫기 - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - 취소 - - - Next - 다음 - - - Iris enrolled - - - - Done - 완료 - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - 최대 15자 이내 - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - 지문 - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - 연결됨 - - - Not connected - 연결되지 않음 - - - - BluetoothModule - - Bluetooth - 블루투스 - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - 지문1 - - - Fingerprint2 - 지문2 - - - Fingerprint3 - 지문3 - - - Fingerprint4 - 지문4 - - - Fingerprint5 - 지문5 - - - Fingerprint6 - 지문6 - - - Fingerprint7 - 지문7 - - - Fingerprint8 - 지문8 - - - Fingerprint9 - 지문9 - - - Fingerprint10 - 지문10 - - - Scan failed - 스캔 실패 - - - The fingerprint already exists - 지문이 이미 존재합니다 - - - Please scan other fingers - 다른 손가락을 스캔하십시오 - - - Unknown error - 알 수 없는 오류 - - - Scan suspended - 검색 일시 중단됨 - - - Cannot recognize - 인식할 수 없음 - - - Moved too fast - 너무 빨리 움직였습니다 - - - Finger moved too fast, please do not lift until prompted - 손가락이 너무 빨리 움직입니다. 메시지가 표시 될 때까지 들어 올리지 마십시오 - - - Unclear fingerprint - 불명확한 지문 - - - Clean your finger or adjust the finger position, and try again - 손가락을 닦거나 손가락 위치를 조정하고 다시 시도하십시오 - - - Already scanned - 이미 스캔됨 - - - Adjust the finger position to scan your fingerprint fully - 지문을 완전히 스캔하도록 손가락 위치 조정 - - - Finger moved too fast. Please do not lift until prompted - 손가락이 너무 빨리 움직였습니다. 메시지가 표시될 때까지 들어 올리지 마십시오 - - - Lift your finger and place it on the sensor again - 손가락을 들어 센서에 다시 놓으십시오 - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - 취소 - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - 취소 - - - Confirm - button - 확인 - - - - dccV23::AccountSpinBox - - Always - 항상 - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - 사용자 이름 - - - Change Password - 비밀번호 변경 - - - Delete User - - - - User Type - - - - Auto Login - 자동 로그인 - - - Login Without Password - 비밀번호없이 로그인 - - - Validity Days - 유효 기간 - - - Group - 그룹 - - - The full name is too long - 이름이 너무 깁니다 - - - Standard User - 표준 사용자 - - - Administrator - 관리자 - - - Reset Password - 비밀번호 초기화 - - - The full name has been used by other user accounts - - - - Full Name - 이름 - - - Go to Settings - 설정으로 이동 - - - Cancel - 취소 - - - OK - 확인 - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - 호스트가 도메인 서버에서 제거되었습니다 - - - Your host joins the domain server successfully - 호스트가 도메인 서버에 성공적으로 참여합니다 - - - Your host failed to leave the domain server - 호스트가 도메인 서버를 종료하지 못했습니다 - - - Your host failed to join the domain server - 호스트가 도메인 서버에 참여하지 못했습니다 - - - AD domain settings - 광고 도메인 설정 - - - Password not match - 비밀번호가 일치하지 않습니다 - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - 데스크톱 및 알림 센터에서 %1의 알림을 표시합니다. - - - Play a sound - 사운드 재생 - - - Show messages on lockscreen - 잠금 화면에 메시지 표시 - - - Show in notification center - - - - Show message preview - 메시지 미리 보기 표시 - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - 취소 - - - Save - 저장 - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - 이미지  - - - - dccV23::BootWidget - - Updating... - 업데이트중... - - - Startup Delay - 시동 지연 - - - Theme - 테마 - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - 부팅 메뉴에서 옵션을 클릭하여 첫 번째 부팅으로 설정하고 그림을 끌어다 놓아 배경을 변경하십시오 - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - 부팅 메뉴에서 보여지는 테마 전환 - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - 비밀번호 변경 - - - Boot Menu - 부팅 메뉴 - - - Change GRUB password - - - - Username: - 사용자 이름: - - - root - - - - New password: - - - - Repeat password: - - - - Required - 필수 - - - Cancel - button - 취소 - - - Confirm - button - 확인 - - - Password cannot be empty - 비밀번호는 비워 둘 수 없습니다 - - - Passwords do not match - 비밀번호가 일치하지 않습니다 - - - - dccV23::BrightnessWidget - - Brightness - 밝기 - - - Color Temperature - 색 온도 - - - Auto Brightness - 자동 밝기 - - - Night Shift - 야간모드 전환 - - - The screen hue will be auto adjusted according to your location - 사용자 위치에 따라 화면 색상이 자동으로 조정됩니다 - - - Change Color Temperature - 색 온도 변경 - - - Cool - 차가운 - - - Warm - 따뜻한 - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - 내 장치 - - - Other Devices - 기타 장치 - - - - dccV23::CommonInfoPlugin - - General Settings - 일반 설정 - - - Boot Menu - 부팅 메뉴 - - - Developer Mode - 개발자 모드 - - - User Experience Program - 사용자 경험 프로그램 - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - 사용자 경험 프로그램 동의 및 참여 - - - The Disclaimer of Developer Mode - 개발자 모드의 면책 조항 - - - Agree and Request Root Access - 루트 액세스 동의 및 요청 - - - Failed to get root access - 루트 액세스 권한을 얻지 못했습니다 - - - Please sign in to your Union ID first - 먼저 Union ID에 로그인하십시오 - - - Cannot read your PC information - PC 정보를 읽을 수 없습니다 - - - No network connection - 네트워크 연결 없음 - - - Certificate loading failed, unable to get root access - 인증서를 불러오는 중에 실패하여, 루트 액세스 권한을 얻을 수 없습니다 - - - Signature verification failed, unable to get root access - 서명 확인에 실패하여, 루트 액세스 권한을 얻을 수 없습니다 - - - - dccV23::CreateAccountPage - - Group - 그룹 - - - Cancel - 취소 - - - Create - 생성 - - - New User - - - - User Type - - - - Username - 사용자 이름 - - - Full Name - 이름 - - - Password - 비밀번호 - - - Repeat Password - 비밀번호 재입력 - - - Password Hint - 비밀번호 힌트 - - - The full name is too long - 이름이 너무 깁니다 - - - Passwords do not match - 비밀번호가 일치하지 않습니다 - - - Standard User - 표준 사용자 - - - Administrator - 관리자 - - - Customized - 사용자화됨 - - - Required - 필수 - - - optional - 옵션 - - - The hint is visible to all users. Do not include the password here. - 힌트는 모든 사용자에게 표시됩니다. 여기에 비밀번호를 포함하지 마십시오 - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - 사용자 이름은 3 ~ 32 자 사이 여야합니다 - - - The first character must be a letter or number - 첫 번째 문자는 문자 또는 숫자여야 합니다. - - - Your username should not only have numbers - 사용자 이름에 숫자만 있어야 합니다 - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - 이미지  - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - 사용자 지정 바로가기 추가 - - - Name - 이름 - - - Required - 필수 - - - Command - 명령 - - - Cancel - 취소 - - - Add - 추가 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - 이 단축키는 %1과(와) 충돌합니다.이 바로 가기를 즉시 적용하려면 추가를 클릭하세요 - - - - dccV23::CustomEdit - - Required - 필수 - - - Cancel - 취소 - - - Save - 저장 - - - Shortcut - 단축키 - - - Name - 이름 - - - Command - 명령 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - 이 단축키는 %1과(와) 충돌합니다.이 바로 가기를 즉시 적용하려면 추가를 클릭하세요 - - - - dccV23::CustomItem - - Shortcut - 단축키 - - - Please enter a shortcut - 단축키를 입력하세요 - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - 루트 액세스 요청 - - - Online - 온라인 - - - Offline - 오프라인 - - - Please sign in to your Union ID first and continue - 먼저 Union ID에 로그인하고 계속하십시오 - - - Next - 다음 - - - Export PC Info - PC 정보 내보내기 - - - Import Certificate - 인증서 가져오기 - - - 1. Export your PC information - 1. PC 정보 내보내기 - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. https://www.chinauos.com/developMode 로 이동하여 오프라인 인증서를 다운로드합니다 - - - 3. Import the certificate - 3. 인증서 가져오기 - - - - dccV23::DeveloperModeWidget - - Request Root Access - 루트 액세스 요청 - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - 개발자 모드를 사용하면 루트 권한을 얻고 앱 스토어에 나열되지 않은 서명되지 않은 앱을 설치하고 실행할 수 있지만, 시스템 무결성도 손상될 수 있으므로 주의 깊게 사용하십시오. - - - The feature is not available at present, please activate your system first - 현재 이 기능을 사용할 수 없습니다. 먼저 시스템을 활성화하십시오 - - - Failed to get root access - 루트 액세스 권한을 얻지 못했습니다 - - - Please sign in to your Union ID first - 먼저 Union ID에 로그인하십시오 - - - Cannot read your PC information - PC 정보를 읽을 수 없습니다 - - - No network connection - 네트워크 연결 없음 - - - Certificate loading failed, unable to get root access - 인증서를 불러오는 중에 실패하여, 루트 액세스 권한을 얻을 수 없습니다 - - - Signature verification failed, unable to get root access - 서명 확인에 실패하여, 루트 액세스 권한을 얻을 수 없습니다 - - - To make some features effective, a restart is required. Restart now? - 일부 기능을 효과적으로 사용하려면, 다시 시작해야합니다. 지금 다시 시작 하시겠습니까? - - - Cancel - 취소 - - - Restart Now - 지금 다시 시작 - - - Root Access Allowed - 루트 액세스 허용됨 - - - - dccV23::DisplayPlugin - - Display - 디스플레이 - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - 더블클릭 시험 - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - 반복 지연 - - - Short - 짤게 - - - Long - 길게 - - - Repeat Rate - 반복 속도 - - - Slow - 느리게 - - - Fast - 빠르게 - - - Test here - 여기에서 테스트 - - - Numeric Keypad - 숫자 키패드 - - - Caps Lock Prompt - Caps Lock 알림 - - - - dccV23::GeneralSettingWidget - - Left Hand - 왼쪽 손 - - - Disable touchpad while typing - 입력하는 동안 터치패드 사용안함 - - - Scrolling Speed - 스크롤 속도 - - - Double-click Speed - 더블클릭 속도 - - - Slow - 느리게 - - - Fast - 빠르게 - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - 키보드 레이아웃 - - - Edit - 편집 - - - Add Keyboard Layout - 키보드 레이아웃 추가 - - - Done - 완료 - - - - dccV23::KeyboardLayoutDialog - - Cancel - 취소 - - - Add - 추가 - - - Add Keyboard Layout - 키보드 레이아웃 추가 - - - - dccV23::KeyboardPlugin - - Keyboard and Language - 키보드 및 언어 - - - Keyboard - 키보드 - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - 키보드 레이아웃 - - - Language - 언어 - - - Shortcuts - 단축키 - - - - dccV23::MainWindow - - Help - 도움말 - - - - dccV23::ModifyPasswdPage - - Change Password - 비밀번호 변경 - - - Reset Password - 비밀번호 초기화 - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - 현재 비밀번호 - - - Forgot password? - - - - New Password - 새 비밀번호 - - - Repeat Password - 비밀번호 재입력 - - - Password Hint - 비밀번호 힌트 - - - Cancel - 취소 - - - Save - 저장 - - - Passwords do not match - 비밀번호가 일치하지 않습니다 - - - Required - 필수 - - - Optional - 옵션 - - - Password cannot be empty - 비밀번호는 비워 둘 수 없습니다 - - - The hint is visible to all users. Do not include the password here. - 힌트는 모든 사용자에게 표시됩니다. 여기에 비밀번호를 포함하지 마십시오 - - - Wrong password - 잘못된 비밀번호 - - - New password should differ from the current one - 새 비밀번호는 현재 비밀번호와 같을 수 없습니다 - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - 마우스 - - - General - 일반 - - - Touchpad - 터치패드 - - - TrackPoint - 추적점 - - - - dccV23::MouseSettingWidget - - Pointer Speed - 포인터 속도 - - - Mouse Acceleration - 마우스 가속 - - - Disable touchpad when a mouse is connected - 마우스가 연결되면 터치패드 사용안함 - - - Natural Scrolling - 자연스러운 스크롤 - - - Slow - 느리게 - - - Fast - 빠르게 - - - - dccV23::MultiScreenWidget - - Multiple Displays - 다중 디스플레이 - /display/Multiple Displays - - - Mode - 모드 - /display/Mode - - - Main Screen - 기본 화면 - /display/Main Scree - - - Duplicate - 복제 - - - Extend - 확장 - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - 알림 - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - 손바닥 감지 - - - Minimum Contact Surface - 최소 접촉면 - - - Minimum Pressure Value - 최소 압력 값 - - - Disable the option if touchpad doesn't work after enabled - 터치 패드를 활성화 한 후 작동하지 않는 경우 옵션을 사용하지 않도록 설정 - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - 개인정보 보호정책 - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - 비밀번호는 비워 둘 수 없습니다 - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - 비밀번호는 %1 자 이하 여야합니다 - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - 비밀번호에는 4자 이상의 회문 문자가 포함되어서는 안됩니다 - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - 새로고침 속도 - - - Hz - Hz - - - Recommended - 권장 - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - 이 계정을 삭제 하시겠습니까? - - - Delete account directory - 계정 폴더 삭제 - - - Cancel - 취소 - - - Delete - 삭제 - - - - dccV23::ResolutionWidget - - Resolution - 해상도 - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - 기본값 - - - Fit - - - - Stretch - - - - Center - 가운데 - - - Recommended - 권장 - - - - dccV23::RotateWidget - - Rotation - 회전 - /display/Rotation - - - Standard - 표준 - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - 모니터가 100% 디스플레이 스케일링만 지원합니다. - - - Display Scaling - 디스플레이 크기조정 - - - - dccV23::SearchInput - - Search - 찾기 - - - - dccV23::SecondaryScreenDialog - - Brightness - 밝기 - - - - dccV23::SecurityLevelItem - - Weak - 약함 - - - Medium - 중간 - - - Strong - 강력함 - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - 취소 - - - Confirm - 확인 - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - 편집 - - - Done - 완료 - - - - dccV23::ShortCutSettingWidget - - System - 시스템 - - - Window - - - - Workspace - 작업 공간 - - - Assistive Tools - 보조 도구 - - - Custom Shortcut - 사용자 지정 바로가기 - - - Restore Defaults - 기본값 복원 - - - Shortcut - 단축키 - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - 단축키를 재설정하세요 - - - Cancel - 취소 - - - Replace - 교체 - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - 이 단축키가 %1과(와) 충돌합니다. 바꾸기를 클릭하면 단축키가 바로 적용됩니다. - - - - dccV23::ShortcutItem - - Enter a new shortcut - 새 바로가기 입력 - - - - dccV23::SystemInfoModel - - available - 사용 가능 - - - - dccV23::SystemInfoModule - - About This PC - 이 PC 정보 - - - Computer Name - 컴퓨터 이름 - - - systemInfo - - - - OS Name - - - - Version - 버전 - - - Edition - - - - Type - 타입 - - - Authorization - 허가 - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - 에디션 라이선스 - - - End User License Agreement - 최종 사용자 사용권 계약 - - - Privacy Policy - 개인정보 보호정책 - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - 시스템 정보 - - - - dccV23::SystemLanguageSettingDialog - - Cancel - 취소 - - - Add - 추가 - - - Add System Language - 시스템 언어 추가 - - - - dccV23::SystemLanguageWidget - - Edit - 편집 - - - Language List - 언어 목록 - - - Add Language - - - - Done - 완료 - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - 방해 금지 - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - 앱 알림은 바탕 화면에 표시되지 않으며 소리가 무음으로 표시되지만 알림 센터에서 모든 메시지를 볼 수 있습니다. - - - When the screen is locked - 화면이 잠겨 있는 경우 - - - - dccV23::TimeSlotItem - - From - From - - - To - To - - - - dccV23::TouchScreenModule - - Touch Screen - 터치 스크린 - - - Select your touch screen when connected or set it here. - 연결시 터치 스크린을 선택하거나 여기에 설정합니다. - - - Confirm - 확인 - - - Cancel - 취소 - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - 포인터 속도 - - - Slow - 느리게 - - - Fast - 빠르게 - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - 사용자 경험 프로그램 참여 - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - NTP 서버를 변경하려면 인증이 필요함 - - - - DefAppModule - - Default Applications - 기본 응용프로그램 - - - - DefAppPlugin - - Webpage - 웹페이지 - - - Mail - 메일 - - - Text - 텍스트 - - - Music - 음악 - - - Video - 동영상 - - - Picture - 사진 - - - Terminal - 터미널 - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - 취소 - - - Next - 다음 - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - 도구집 - - - Multiple Displays - 다중 디스플레이 - - - Show Dock - - - - Mode - 모드 - - - Position - 위치 - - - Status - 상태 - - - Show recent apps in Dock - - - - Size - 크기 - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - 패션(Fashion) 모드 - - - Efficient mode - 효율 모드 - - - Top - 상단 - - - Bottom - 하단 - - - Left - 왼쪽 - - - Right - 오른쪽 - - - Location - 위치 - - - Keep shown - - - - Keep hidden - 숨겨두기 - - - Smart hide - 스마트하이드 - - - Small - 소형 - - - Large - 대형 - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - 편집 - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - 완료 - - - Add Face - - - - The name already exists - 이름이 이미 존재합니다 - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - 지문 추가 - - - Cancel - 취소 - - - Next - 다음 - - - - FingerInfoWidget - - Place your finger - 손가락 갖다대기 - - - Place your finger firmly on the sensor until you're asked to lift it - 손가락을 들어 올리라는 메시지가 될 때까지 손가락을 센서에 확실히 갖다대기 - - - Scan the edges of your fingerprint - 지문 가장자리 스캔 - - - Place the edges of your fingerprint on the sensor - 지문 가장자리를 센서에 갖다대기 - - - Lift your finger - 손가락 들어 올리리기 - - - Lift your finger and place it on the sensor again - 손가락을 들어 센서에 다시 놓으십시오 - - - Adjust the position to scan the edges of your fingerprint - 지문 가장자리를 스캔할 위치를 조정하십시오 - - - Lift your finger and do that again - 손가락을 들고 다시 하십시오 - - - Fingerprint added - 지문 추가됨 - - - - FingerWidget - - Edit - 편집 - - - Fingerprint Password - 지문 비밀번호 - - - You can add up to 10 fingerprints - 최대 10개의 지문을 추가할 수 있습니다 - - - Done - 완료 - - - The name already exists - 이름이 이미 존재합니다 - - - Add Fingerprint - 지문 추가 - - - - GeneralModule - - General - 일반 - - - Balanced - 균형 - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - 절전 설정 - - - Auto power saving on low battery - 배터리 부족시 자동 절전 - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - 배터리 자동 절전 - - - Wakeup Settings - 절전모드 해제 설정 - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - 편집 - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - 완료 - - - Add Iris - - - - The name already exists - 이름이 이미 존재합니다 - - - Iris - - - - - KeyLabel - - None - 없음 - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - 입력 볼륨 - - - Input Level - 입력 수준 - - - - PersonalizationDesktopModule - - Desktop - 바탕 화면 - - - Window - - - - Window Effect - 창 효과 - - - Window Minimize Effect - 창 최소화 효과 - - - Transparency - 투명도 - - - Rounded Corner - - - - Scale - 크기조정 - - - Magic Lamp - 매직 램프 - - - Small - 소형 - - - Middle - - - - Large - 대형 - - - - PersonalizationModule - - Personalization - 개인 설정 - - - - PersonalizationThemeList - - Cancel - 취소 - - - Save - 저장 - - - Light - 가볍게 - - - Dark - 어두움 - - - Auto - 자동 - - - Default - 기본값 - - - - PersonalizationThemeModule - - Theme - 테마 - - - Appearance - 모양새 - - - Accent Color - 강조 색상 - - - Icon Settings - - - - Icon Theme - 아이콘 테마 - - - Cursor Theme - 커서 테마 - - - Text Settings - - - - Font Size - 글꼴 크기 - - - Standard Font - 표준 글꼴 - - - Monospaced Font - 고정폭 글꼴 - - - Light - 가볍게 - - - Auto - 자동 - - - Dark - 어두움 - - - - PersonalizationThemeWidget - - Light - 가볍게 - General - /personalization/General - - - Dark - 어두움 - General - /personalization/General - - - Auto - 자동 - General - /personalization/General - - - Default - 기본값 - - - - PersonalizationWorker - - Custom - 사용자 지정 - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - 블루투스 장치와 연결하기 위한 PIN번호 : - - - Cancel - 취소 - - - Confirm - 확인 - - - - PowerModule - - Power - 전원 - - - Battery low, please plug in - 배터리 부족,. 전원을 연결하세요 - - - Battery critically low - 배터리 잔량 부족 - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - 카메라 - - - Microphone - 마이크 - - - User Folders - - - - Calendar - 달력 - - - Screen Capture - - - - - QObject - - Control Center - 제어 센터 - - - , - - - - Error occurred when reading the configuration files of password rules! - 비밀번호 규칙의 구성 파일을 읽는 동안 오류가 발생했습니다! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - 활성화됨 - - - View - ㅂㅗ기 - - - To be activated - 활성화됩니다 - - - Activate - 활성화 - - - Expired - 만료 - - - In trial period - 평가판 사용 기간 - - - Trial expired - 평가판 만료됨 - - - Touch Screen Settings - 터치 스크린 설정 - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - 취소 - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - 시스템이 인증되지 않은 경우, 먼저 활성화하십시오 - - - Update successful - 업데이트 성공 - - - Failed to update - 업데이트에 실패했습니다. - - - - SearchInput - - Search - 찾기 - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - 사운드 효과 - - - - SoundModel - - Boot up - 부팅하기 - - - Shut down - 컴퓨터 끄기 - - - Log out - 로그아웃 - - - Wake up - 깨우기 - - - Volume +/- - 음량 +/- - - - Notification - 알림 - - - Low battery - 배터리 잔량 부족 - - - Send icon in Launcher to Desktop - 바탕화면으로 실행도구의 아이콘 보내기 - - - Empty Trash - 휴지통 비우기 - - - Plug in - 연결하기 - - - Plug out - 연결 해제 - - - Removable device connected - 이동식 장치 연결됨 - - - Removable device removed - 이동식 장치 제거됨 - - - Error - 오류 - - - - SoundModule - - Sound - 사운드 - - - - SoundPlugin - - Output - 출력 - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - 입력 - - - Sound Effects - 사운드 효과 - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - 모드 - - - Output Volume - 출력 볼륨 - - - Volume Boost - 볼륨 증폭 - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - 왼쪽/오른쪽 균형 - - - Left - 왼쪽 - - - Right - 오른쪽 - - - - TimeSettingModule - - Time Settings - 시간 설정 - - - Time - 시간 - - - Auto Sync - 자동 동기화 - - - Reset - 재설정 - - - Save - 저장 - - - Server - 서버 - - - Address - 주소 - - - Required - 필수 - - - Customize - 사용자 정의 - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - 취소 - - - Confirm - 확인 - - - Add Timezone - 시간대 추가 - - - Add - 추가 - - - Change Timezone - 시간대 변경 - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - 복구 - - - Save - 저장 - - - - TimezoneItem - - Tomorrow - 내일 - - - Yesterday - 어제 - - - Today - 오늘 - - - %1 hours earlier than local - 현재 지역보다 %1 시간 빠름 - - - %1 hours later than local - 현재 지역보다 %1 시간 느림 - - - - TimezoneModule - - Timezone List - 시간대 목록 - - - System Timezone - 시스템 시간대 - - - Add Timezone - 시간대 추가 - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - 취소 - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - 다시 확인 - - - Update failed: insufficient disk space - 업데이트 실패: 디스크 공간 부족 - - - Dependency error, failed to detect the updates - 종속성 오류, 업데이트를 검색하지 못했습니다 - - - Restart the computer to use the system and the applications properly - 시스템 및 응용프로그램을 올바르게 사용하려면 컴퓨터를 다시 시작하십시오 - - - Network disconnected, please retry after connected - 네트워크 연결이 끊김, 연결된 후 다시 시도하세요 - - - Your system is not authorized, please activate first - 시스템이 인증되지 않은 경우, 먼저 활성화하십시오 - - - This update may take a long time, please do not shut down or reboot during the process - 이 업데이트는 시간이 오래 걸릴 수 있습니다. 프로세스를 종료하거나 재부팅하지 마세요 - - - Updates Available - - - - Current Edition - 현재 에디션 - - - Updating... - 업데이트중... - - - Update All - - - - Last checking time: - 마지막 확인 시간: - - - Your system is up to date - 귀하의 시스템은 최신 상태입니다 - - - Check for Updates - 업데이트 확인 - - - Checking for updates, please wait... - 업데이트 확인중입니다, 기다려 주세요... - - - The newest system installed, restart to take effect - 최신 시스템이 설치되었습니다. 적용하려면 다시 시작하십시오 - - - %1% downloaded (Click to pause) - %1% 다운로드됨(일시 중지하려면 클릭) - - - %1% downloaded (Click to continue) - %1% 다운로드됨(계속하려면 클릭) - - - Your battery is lower than 50%, please plug in to continue - 배터리 잔량이 50%이하입니다, 계속하기 위해 전원을 연결해주세요 - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - 재시작을 위한 충분한 전력을 확보하고, 기기의 전원을 끄거나 전원 플러그를 뽑지 마세요 - - - Size - 크기 - - - - UpdateModule - - Updates - 업데이트 - - - - UpdatePlugin - - Check for Updates - 업데이트 확인 - - - - UpdateSettingItem - - Insufficient disk space - 디스크 공간 부족 - - - Update failed: insufficient disk space - 업데이트 실패: 디스크 공간 부족 - - - Update failed - - - - Network error - - - - Network error, please check and try again - 네트워크 연결 에러, 확인하고 다시 시도해 주세요 - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - 최신 시스템이 설치되었습니다. 적용하려면 다시 시작하십시오 - - - Waiting - - - - Backing up - - - - System backup failed - 시스템 백업 실패함 - - - Release date: - - - - Server - 서버 - - - Desktop - 바탕 화면 - - - Version - 버전 - - - - UpdateSettingsModule - - Update Settings - 업데이트 설정 - - - System - 시스템 - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - 자동 다운로드 업데이트 - - - Switch it on to automatically download the updates in wireless or wired network - 무선 또는 유선 네트워크에서 업데이트를 자동으로 다운로드하려면 이 스위치를 켜십시오 - - - Auto Install Updates - - - - Updates Notification - 알림 업데이트 - - - Clear Package Cache - 패키지 캐시 지우기 - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - 현재 에디션 - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - 배터리 켜기 - - - Never - 없음 - - - Shut down - 컴퓨터 끄기 - - - Suspend - 대기모드 - - - Hibernate - 최대 절전 모드 - - - Turn off the monitor - 모니터 끄기 - - - Do nothing - 아무것도 하지 않기 - - - 1 Minute - 1 분 - - - %1 Minutes - %1 분 - - - 1 Hour - 1 시간 - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - 다음 시간 이후 화면 잠금 - - - Computer suspends after - - - - Computer will suspend after - 다음 시간 이후 컴퓨터 대기모드 - - - When the lid is closed - 뚜껑이 닫혔을 때 - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - 배터리 수준 낮음 - - - Auto suspend battery level - 자동 대기모드 배터리 수준 - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - 최대 용량 - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - 연결됨 - - - 1 Minute - 1 분 - - - %1 Minutes - %1 분 - - - 1 Hour - 1 시간 - - - Never - 없음 - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - 다음 시간 이후 화면 잠금 - - - Computer suspends after - - - - When the lid is closed - 뚜껑이 닫혔을 때 - - - When the power button is pressed - - - - Shut down - 컴퓨터 끄기 - - - Suspend - 대기모드 - - - Hibernate - 최대 절전 모드 - - - Turn off the monitor - 모니터 끄기 - - - Show the shutdown Interface - - - - Do nothing - 아무것도 하지 않기 - - - - WacomModule - - Drawing Tablet - 그리기 태블릿 - - - Mode - 모드 - - - Pressure Sensitivity - 압력 감도 - - - Pen - - - - Mouse - 마우스 - - - Light - 가볍게 - - - Heavy - 무겁게 - - - - main - - Control Center provides the options for system settings. - 제어 센터는 시스템 설정에 대한 옵션을 제공합니다. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ku.ts b/dcc-old/translations/dde-control-center_ku.ts deleted file mode 100644 index f5711b5feb..0000000000 --- a/dcc-old/translations/dde-control-center_ku.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - Girêdan Tune - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Betal Bike - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Çêbû - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Betal Bike - - - Next - - - - Iris enrolled - - - - Done - Çêbû - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Tilîşop - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Girêdayî ye - - - Not connected - Ne girêdayî ye - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Betal Bike - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Betal Bike - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Navê Bikarhêner - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - Têketina Otomatîk - - - Login Without Password - Bêpeyvborînê Têkeve - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Betal Bike - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Hewangeha te bi serkeftî ji rajekara navperê hat rakirin - - - Your host joins the domain server successfully - Hewangeha te bi serkeftî beşdarî rajekara navperê bû - - - Your host failed to leave the domain server - Derketina hewangeha te ya ji rajekara navperê bi ser neket - - - Your host failed to join the domain server - Beşdarbûna hewangeha te ya li rajekara navperê bi ser neket - - - AD domain settings - Sazkariyên navpera ADê - - - Password not match - Peyvborîn li hev nehat - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Betal Bike - - - Save - Qeyd Bike - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Wêne - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Pêwîst - - - Cancel - button - Betal Bike - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - Betal Bike - - - Create - Çêke - - - New User - - - - User Type - - - - Username - Navê Bikarhêner - - - Full Name - - - - Password - Peyvborîn - - - Repeat Password - Peyvborînê dîsa binivîsîne - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - Pêwîst - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Wêne - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - Pêwîst - - - Command - - - - Cancel - Betal Bike - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Pêwîst - - - Cancel - Betal Bike - - - Save - Qeyd Bike - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Betal Bike - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - Serrast Bike - - - Add Keyboard Layout - - - - Done - Çêbû - - - - dccV23::KeyboardLayoutDialog - - Cancel - Betal Bike - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Peyvborîna Derbasdar - - - Forgot password? - - - - New Password - Peyvborîna Nû - - - Repeat Password - Peyvborînê dîsa binivîsîne - - - Password Hint - - - - Cancel - Betal Bike - - - Save - Qeyd Bike - - - Passwords do not match - - - - Required - Pêwîst - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - Peyvborîn divê ji ya derbasdarê cuda be - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - Fireh bike - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Agahdarî - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Pêlrêça hesabê jê bibe - - - Cancel - Betal Bike - - - Delete - Jê Bibe - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Lê bigere - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Betal Bike - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Serrast Bike - - - Done - Çêbû - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Betal Bike - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Betal Bike - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Serrast Bike - - - Language List - - - - Add Language - - - - Done - Çêbû - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - Betal Bike - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Betal Bike - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Bênder - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Serrast Bike - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Çêbû - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Tilîşopê Tevlî Bike - - - Cancel - Betal Bike - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Serrast Bike - - - Fingerprint Password - Peyvborîna Tilîşopê - - - You can add up to 10 fingerprints - - - - Done - Çêbû - - - The name already exists - - - - Add Fingerprint - Tilîşopê Tevlî Bike - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Serrast Bike - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Çêbû - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Tune - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - Betal Bike - - - Save - Qeyd Bike - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Betal Bike - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - Salname - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Betal Bike - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Lê bigere - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - Pêşbarkirin - - - Shut down - Bigire - - - Log out - Derkeve - - - Wake up - Hişyar Bike - - - Volume +/- - Deng +/- - - - Notification - Agahdarî - - - Low battery - Pîla kêm - - - Send icon in Launcher to Desktop - Îkona ku di Destpêkerê de ye bişîne Sermaseyê - - - Empty Trash - Çopa Vala - - - Plug in - Têxe prîzê - - - Plug out - Ji prîzê derxe - - - Removable device connected - Amûra hilgirter grêdayî ye - - - Removable device removed - Amûra hilgirter derxistî ye - - - Error - Çewtî - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - Hevdemiya Otomatîk - - - Reset - - - - Save - Qeyd Bike - - - Server - - - - Address - - - - Required - Pêwîst - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Betal Bike - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Qeyd Bike - - - - TimezoneItem - - Tomorrow - - - - Yesterday - Do - - - Today - Îro - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Betal Bike - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Çewtiya bestekî, nebû ku hildem bêne peyitandin - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - Hildem - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - Sazkariyên Hildeman - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - Bigire - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Bigire - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ku_IQ.ts b/dcc-old/translations/dde-control-center_ku_IQ.ts deleted file mode 100644 index 9aefe8cd25..0000000000 --- a/dcc-old/translations/dde-control-center_ku_IQ.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - Dîsa nav lê bide - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - پاشگەزبوونەوە - - - Next - Pêşve - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - داخستن - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - پاشگەزبوونەوە - - - Next - Pêşve - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - پاشگەزبوونەوە - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - پاشگەزبوونەوە - - - Confirm - button - Bipejirîne - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - پاشگەزبوونەوە - - - OK - Baş e - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - پاشگەزبوونەوە - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - پاشگەزبوونەوە - - - Confirm - button - Bipejirîne - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - پاشگەزبوونەوە - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - پاشگەزبوونەوە - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - پاشگەزبوونەوە - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Pêşve - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - پاشگەزبوونەوە - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - پاشگەزبوونەوە - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - Kurtebirî - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - پاشگەزبوونەوە - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - پاشگەزبوونەوە - - - Delete - Jê bibe - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Destpêkî - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Lê bigere - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - پاشگەزبوونەوە - - - Confirm - Bipejirîne - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - Mîhengên Destpêkê Dîsa Bîne - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - پاشگەزبوونەوە - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - پاشگەزبوونەوە - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Bipejirîne - - - Cancel - پاشگەزبوونەوە - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - Mûzîk - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - پاشگەزبوونەوە - - - Next - Pêşve - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - پاشگەزبوونەوە - - - Next - Pêşve - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - پاشگەزبوونەوە - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - Destpêkî - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - Mezinahiya Tîpa Nivîsê - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - Destpêkî - - - - PersonalizationWorker - - Custom - Taybet - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - پاشگەزبوونەوە - - - Confirm - Bipejirîne - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - Salname - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - Dîtin - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - پاشگەزبوونەوە - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Lê bigere - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Deng - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - پاشگەزبوونەوە - - - Confirm - Bipejirîne - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - ئەمڕۆ - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - پاشگەزبوونەوە - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ky.ts b/dcc-old/translations/dde-control-center_ky.ts deleted file mode 100644 index acb0360116..0000000000 --- a/dcc-old/translations/dde-control-center_ky.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - жокко чыгаруу - - - Next - кийинки - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - бүттү - - - Failed to enroll your face - - - - Try Again - - - - Close - жабуу - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - жокко чыгаруу - - - Next - кийинки - - - Iris enrolled - - - - Done - бүттү - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - жокко чыгаруу - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - жокко чыгаруу - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - жокко чыгаруу - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - жокко чыгаруу - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - жокко чыгаруу - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - жокко чыгаруу - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - жокко чыгаруу - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - жокко чыгаруу - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - кийинки - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - жокко чыгаруу - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - бүттү - - - - dccV23::KeyboardLayoutDialog - - Cancel - жокко чыгаруу - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - жокко чыгаруу - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - жокко чыгаруу - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - жокко чыгаруу - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - бүттү - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - жокко чыгаруу - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - жокко чыгаруу - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - бүттү - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - жокко чыгаруу - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - жокко чыгаруу - - - Next - кийинки - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - бүттү - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - жокко чыгаруу - - - Next - кийинки - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - бүттү - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - бүттү - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - жокко чыгаруу - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - жокко чыгаруу - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - жокко чыгаруу - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - жокко чыгаруу - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - жокко чыгаруу - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ky@Arab.ts b/dcc-old/translations/dde-control-center_ky@Arab.ts deleted file mode 100644 index 15c2922e2a..0000000000 --- a/dcc-old/translations/dde-control-center_ky@Arab.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - جوققو چىعارۇۇ - - - Next - كئيىنكى - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - بۉتتۉ - - - Failed to enroll your face - - - - Try Again - - - - Close - جابۇۇ - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - جوققو چىعارۇۇ - - - Next - كئيىنكى - - - Iris enrolled - - - - Done - بۉتتۉ - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - جوققو چىعارۇۇ - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - جوققو چىعارۇۇ - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - جوققو چىعارۇۇ - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - جوققو چىعارۇۇ - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - جوققو چىعارۇۇ - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - جوققو چىعارۇۇ - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - جوققو چىعارۇۇ - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - جوققو چىعارۇۇ - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - كئيىنكى - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - جوققو چىعارۇۇ - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - رەداكتسيالوو - - - Add Keyboard Layout - - - - Done - بۉتتۉ - - - - dccV23::KeyboardLayoutDialog - - Cancel - جوققو چىعارۇۇ - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - جوققو چىعارۇۇ - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - جوققو چىعارۇۇ - - - Delete - ۅچۉرۉۉ - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - جوققو چىعارۇۇ - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - رەداكتسيالوو - - - Done - بۉتتۉ - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - جوققو چىعارۇۇ - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - جوققو چىعارۇۇ - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - رەداكتسيالوو - - - Language List - - - - Add Language - - - - Done - بۉتتۉ - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - جوققو چىعارۇۇ - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - تەكىست - - - Music - - - - Video - - - - Picture - سۉرۅت - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - جوققو چىعارۇۇ - - - Next - كئيىنكى - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - رەداكتسيالوو - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - بۉتتۉ - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - جوققو چىعارۇۇ - - - Next - كئيىنكى - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - رەداكتسيالوو - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - بۉتتۉ - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - رەداكتسيالوو - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - بۉتتۉ - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - جوققو چىعارۇۇ - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - جوققو چىعارۇۇ - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - جوققو چىعارۇۇ - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - جوققو چىعارۇۇ - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - كەچەە - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - جوققو چىعارۇۇ - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - ەچ قاچان - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - ەچ قاچان - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_la.ts b/dcc-old/translations/dde-control-center_la.ts deleted file mode 100644 index 5b67a594c7..0000000000 --- a/dcc-old/translations/dde-control-center_la.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - Dilato - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_lo.ts b/dcc-old/translations/dde-control-center_lo.ts deleted file mode 100644 index abe8760f2f..0000000000 --- a/dcc-old/translations/dde-control-center_lo.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - ເຊື່ອມຕໍ່ - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - ຍົກເລີກ - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - ຍົກເລີກ - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - ຍົກເລີກ - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - ຍົກເລີກ - - - Confirm - button - ຢັ້ງຢືນ - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - ຍົກເລີກ - - - OK - ຕົກ​ລົງ - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - ຍົກເລີກ - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - ຍົກເລີກ - - - Confirm - button - ຢັ້ງຢືນ - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - ຍົກເລີກ - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - ລະຫັດພ່ານ - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - ຍົກເລີກ - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - ຍົກເລີກ - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - ຍົກເລີກ - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - ຍົກເລີກ - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - ຍົກເລີກ - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - ຊໍ້າ - - - Extend - ຂະຫຍາຍ - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - ຍົກເລີກ - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - ຍົກເລີກ - - - Confirm - ຢັ້ງຢືນ - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - ລະບົບ - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - ຍົກເລີກ - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - ຍົກເລີກ - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - ຢັ້ງຢືນ - - - Cancel - ຍົກເລີກ - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - ເພງ - - - Video - ວີກີໂອ - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - ຍົກເລີກ - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - ຍົກເລີກ - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - ຍົກເລີກ - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - ຍົກເລີກ - - - Confirm - ຢັ້ງຢືນ - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - ຍົກເລີກ - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - ປິດ​ເຄື່ອງ - - - Log out - ອອກ​ຈາກ​ລະ​ບົບ - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - ຍົກເລີກ - - - Confirm - ຢັ້ງຢືນ - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - ຍົກເລີກ - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - ລະບົບ - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - ປິດ​ເຄື່ອງ - - - Suspend - ຢຸດໄວ້ - - - Hibernate - ນອນ - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - ປິດ​ເຄື່ອງ - - - Suspend - ຢຸດໄວ້ - - - Hibernate - ນອນ - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_lt.ts b/dcc-old/translations/dde-control-center_lt.ts deleted file mode 100644 index 8faf2b06ff..0000000000 --- a/dcc-old/translations/dde-control-center_lt.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Įjunkite Bluetooth, norėdami rasti šalia esančius įrenginius (garsiakalbius, klaviatūrą, pelę) - - - My Devices - Mano įrenginiai - - - Other Devices - Kiti įrenginiai - - - Show Bluetooth devices without names - - - - Connect - Prisijungti - - - Disconnect - Atsijungti - - - Rename - Pervadinti - - - Send Files - Siųsti failus - - - Ignore this device - Nepaisyti šį įrenginį - - - Connecting - Jungiamasi - - - Disconnecting - Atsijungiama - - - - AddButtonWidget - - Add Application - Pridėti programą - - - Open Desktop file - Atverti Desktop failą - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Atsisakyti - - - Next - Kitas - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Atlikta - - - Failed to enroll your face - - - - Try Again - - - - Close - Užverti - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Atsisakyti - - - Next - Kitas - - - Iris enrolled - - - - Done - Atlikta - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Pirštų atspaudas - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Prisijungta - - - Not connected - Neprijungta - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Atsisakyti - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Atsisakyti - - - Confirm - button - Patvirtinti - - - - dccV23::AccountSpinBox - - Always - Visada - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Naudotojo vardas - - - Change Password - Keisti slaptažodį - - - Delete User - - - - User Type - - - - Auto Login - Automatinis prisijungimas - - - Login Without Password - Prisijungti be slaptažodžio - - - Validity Days - - - - Group - Grupė - - - The full name is too long - - - - Standard User - Standartinis naudotojas - - - Administrator - Administratorius - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Visas vardas - - - Go to Settings - Pereiti į nustatymus - - - Cancel - Atsisakyti - - - OK - Gerai - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Jūsų serveris buvo sekmingai pašalintas iš srities serverio - - - Your host joins the domain server successfully - Jūsų serveris sėkmingai prisijungia prie srities serverio - - - Your host failed to leave the domain server - Jūsų serveriui nepavyko išeiti iš srities serverio - - - Your host failed to join the domain server - Jūsų serveriui nepavyko prisijungti prie srities serverio - - - AD domain settings - Aktyvaus katalogo srities nustatymai - - - Password not match - Slaptažodžiai nesutampa - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Atsisakyti - - - Save - Įrašyti - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Paveikslai - - - - dccV23::BootWidget - - Updating... - Atnaujinama... - - - Startup Delay - Paleisties delsa - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Spustelėkite paleidimo meniu ant parametro, kad nustatytumėte jį kaip pirmą paleidžiamą ir vilkite paveikslą, norėdami pakeisti foną - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Įjunkite temą, norėdami ją matyti paleidimo meniu - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Keisti slaptažodį - - - Boot Menu - Paleidimo meniu - - - Change GRUB password - - - - Username: - Naudotojo vardas: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Būtina - - - Cancel - button - Atsisakyti - - - Confirm - button - Patvirtinti - - - Password cannot be empty - Slaptažodis negali būti tuščias - - - Passwords do not match - Slaptažodžiai nesutampa - - - - dccV23::BrightnessWidget - - Brightness - Ryškumas - - - Color Temperature - - - - Auto Brightness - Automatinis ryškumas - - - Night Shift - Naktinė pamaina - - - The screen hue will be auto adjusted according to your location - Ekrano atspalvis bus automatiškai reguliuojamas pagal jūsų buvimo vietą - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Mano įrenginiai - - - Other Devices - Kiti įrenginiai - - - - dccV23::CommonInfoPlugin - - General Settings - Bendri nustatymai - - - Boot Menu - Paleidimo meniu - - - Developer Mode - Plėtotojo veiksena - - - User Experience Program - Naudotojo patyrimo programa - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Sutinku ir prisijungiu prie naudotojo patyrimo programos - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - Nepavyksta perskaityti jūsų kompiuterio informacijos - - - No network connection - Nėra tinklo ryšio - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Grupė - - - Cancel - Atsisakyti - - - Create - Sukurti - - - New User - - - - User Type - - - - Username - Naudotojo vardas - - - Full Name - Visas vardas - - - Password - Slaptažodis - - - Repeat Password - Pakartokite slaptažodį - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - Slaptažodžiai nesutampa - - - Standard User - Standartinis naudotojas - - - Administrator - Administratorius - - - Customized - - - - Required - Būtina - - - optional - nebūtina - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Naudotojo vardas privalo būti nuo 3 iki 32 simbolių - - - The first character must be a letter or number - Pirmasis simbolis privalo būti raidė arba skaitmuo - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Paveikslai - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Pridėti tinkintą trumpinį - - - Name - Pavadinimas - - - Required - Būtina - - - Command - Komanda - - - Cancel - Atsisakyti - - - Add - Pridėti - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Šis trumpinys konfliktuoja su trumpiniu %1, spustelėkite Pridėti, norėdami, kad šis trumpinys nedelsiant įsigaliotų - - - - dccV23::CustomEdit - - Required - Būtina - - - Cancel - Atsisakyti - - - Save - Įrašyti - - - Shortcut - Trumpinys - - - Name - Pavadinimas - - - Command - Komanda - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Šis trumpinys konfliktuoja su trumpiniu %1, spustelėkite Pridėti, norėdami, kad šis trumpinys nedelsiant įsigaliotų - - - - dccV23::CustomItem - - Shortcut - Trumpinys - - - Please enter a shortcut - Prašome įvesti trumpinį - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Kitas - - - Export PC Info - Eksportuoti kompiuterio informaciją - - - Import Certificate - Importuoti liudijimą - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - Nepavyksta perskaityti jūsų kompiuterio informacijos - - - No network connection - Nėra tinklo ryšio - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Atsisakyti - - - Restart Now - Paleisti iš naujo dabar - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Ekranas - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Dvikarčio spustelėjimo išbandymas - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Klaviatūros nustatymai - - - Repeat Delay - Ženklo kartojimo delsa - - - Short - Trumpa - - - Long - Ilga - - - Repeat Rate - Ženklo kartojimo dažnis - - - Slow - Lėtas - - - Fast - Greitas - - - Test here - Išbandykite čia - - - Numeric Keypad - Skaitmeninė klaviatūra - - - Caps Lock Prompt - Didžiųjų raidžių užrakto informacija - - - - dccV23::GeneralSettingWidget - - Left Hand - Kairė ranka - - - Disable touchpad while typing - Išjungti jutiklinį kilimėlį, renkant tekstą - - - Scrolling Speed - Slinkimo greitis - - - Double-click Speed - Dvikarčio spustelėjimo greitis - - - Slow - Lėtas - - - Fast - Greitas - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Klaviatūros išdėstymas - - - Edit - Redaguoti - - - Add Keyboard Layout - Pridėti klaviatūros išdėstymą - - - Done - Atlikta - - - - dccV23::KeyboardLayoutDialog - - Cancel - Atsisakyti - - - Add - Pridėti - - - Add Keyboard Layout - Pridėti klaviatūros išdėstymą - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Klaviatūra ir kalba - - - Keyboard - Klaviatūra - - - Keyboard Settings - Klaviatūros nustatymai - - - keyboard Layout - Klaviatūros išdėstymas - - - Keyboard Layout - Klaviatūros išdėstymas - - - Language - Kalba - - - Shortcuts - Trumpiniai - - - - dccV23::MainWindow - - Help - Žinynas - - - - dccV23::ModifyPasswdPage - - Change Password - Keisti slaptažodį - - - Reset Password - Atstatyti slaptažodį - - - Resetting the password will clear the data stored in the keyring. - Atstačius slaptažodį bus išvalyti raktinėje saugomi duomenys. - - - Current Password - Dabartinis slaptažodis - - - Forgot password? - Pamiršote slaptažodį? - - - New Password - Naujas slaptažodis - - - Repeat Password - Pakartokite slaptažodį - - - Password Hint - Užuomina apie slaptažodį - - - Cancel - Atsisakyti - - - Save - Įrašyti - - - Passwords do not match - Slaptažodžiai nesutampa - - - Required - Būtina - - - Optional - Nebūtina - - - Password cannot be empty - Slaptažodis negali būti tuščias - - - The hint is visible to all users. Do not include the password here. - Užuomina yra matoma visiems naudotojams. Nerašykite čia savo slaptažodžio. - - - Wrong password - Neteisingas slaptažodis - - - New password should differ from the current one - Naujas slaptažodis turėtų skirtis nuo esamo - - - System error - Sistemos klaida - - - Network error - Tinklo klaida - - - - dccV23::MonitorControlWidget - - Identify - Tapatybė - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Pelė - - - General - Bendra - - - Touchpad - Jutiklinis kilimėlis - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Rodyklės greitis - - - Mouse Acceleration - Pelės pagreitis - - - Disable touchpad when a mouse is connected - Išjungti jutiklinį kilimėlį, prijungus pelę - - - Natural Scrolling - Natūrali slinktis - - - Slow - Lėtas - - - Fast - Greitas - - - - dccV23::MultiScreenWidget - - Multiple Displays - Keli ekranai - /display/Multiple Displays - - - Mode - Veiksena - /display/Mode - - - Main Screen - Pagrindinis ekranas - /display/Main Scree - - - Duplicate - Dubliuoti - - - Extend - Išplėsti - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Pranešimai - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Delninuko aptikimas - - - Minimum Contact Surface - Minimalus kontaktinis paviršius - - - Minimum Pressure Value - Mažiausia spaudimo reikšmė - - - Disable the option if touchpad doesn't work after enabled - Jeigu įjungus, jutiklinis kilimėlis nebeveikia, tuomet parametrą išjunkite - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Privatumo politika - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - Slaptažodis negali būti tuščias - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - Slaptažodis privalo būti neilgesnis nei %1 simboliai - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - Atnaujinimo dažnis - - - Hz - Hz - - - Recommended - Rekomenduojama - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Ar tikrai norite ištrinti šią paskyrą? - - - Delete account directory - Ištrinti paskyros katalogą - - - Cancel - Atsisakyti - - - Delete - Ištrinti - - - - dccV23::ResolutionWidget - - Resolution - Raiška - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Numatytasis - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Rekomenduojama - - - - dccV23::RotateWidget - - Rotation - Pasukimas - /display/Rotation - - - Standard - Standartinis - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Monitorius palaiko tik 100% ekrano mastelį - - - Display Scaling - Ekrano mastelis - - - - dccV23::SearchInput - - Search - Ieškoti - - - - dccV23::SecondaryScreenDialog - - Brightness - Ryškumas - - - - dccV23::SecurityLevelItem - - Weak - Silpnas - - - Medium - Vidutinė - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - Saugumo klausimai - - - These questions will be used to help reset your password in case you forget it. - Šie klausimai bus naudojami padedant jums atstatyti slaptažodį tuo atveju, jeigu jį pamiršite. - - - Security question 1 - Saugumo klausimas 1 - - - Security question 2 - Saugumo klausimas 2 - - - Security question 3 - Saugumo klausimas 3 - - - Cancel - Atsisakyti - - - Confirm - Patvirtinti - - - Keep the answer under 30 characters - Atsakymas neturi viršyti 30 simbolių - - - Do not choose a duplicate question please - Nesirinkite pasikartojančių klausimų - - - Please select a question - Pasirinkite klausimą - - - What's the name of the city where you were born? - Kaip vadinasi miestas, kuriame gimėte? - - - What's the name of the first school you attended? - Jūsų pirmosios mokyklos pavadinimas? - - - Who do you love the most in this world? - Ką šiame pasaulyje labiausiai mylite? - - - What's your favorite animal? - Koks yra jūsų mėgstamiausias gyvūnas? - - - What's your favorite song? - Kokia yra jūsų mėgstamiausia daina? - - - What's your nickname? - Koks yra jūsų slapyvardis? - - - It cannot be empty - Jis negali būti tuščias - - - - dccV23::SettingsHead - - Edit - Redaguoti - - - Done - Atlikta - - - - dccV23::ShortCutSettingWidget - - System - Sistema - - - Window - Langas - - - Workspace - Darbo sritis - - - Assistive Tools - - - - Custom Shortcut - Tinkintas trumpinys - - - Restore Defaults - Atkurti numatytuosius - - - Shortcut - Trumpinys - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Atstatykite trumpinį - - - Cancel - Atsisakyti - - - Replace - Pakeisti - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Šis trumpinys konfliktuoja su trumpiniu %1, spustelėkite Pakeisti, norėdami, kad šis trumpinys nedelsiant įsigaliotų - - - - dccV23::ShortcutItem - - Enter a new shortcut - Įveskite naują trumpinį - - - - dccV23::SystemInfoModel - - available - prieinama - - - - dccV23::SystemInfoModule - - About This PC - Apie šį kompiuterį - - - Computer Name - Kompiuterio pavadinimas - - - systemInfo - - - - OS Name - - - - Version - Versija - - - Edition - - - - Type - Tipas - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - Branduolys - - - Agreements and Privacy Policy - - - - Edition License - Laidos licencija - - - End User License Agreement - Galutinio naudotojo licencijos sutikimas - - - Privacy Policy - Privatumo politika - - - %1-bit - %1 bitų - - - - dccV23::SystemInfoPlugin - - System Info - Sistemos informacija - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Atsisakyti - - - Add - Pridėti - - - Add System Language - Pridėti sistemos kalbą - - - - dccV23::SystemLanguageWidget - - Edit - Redaguoti - - - Language List - Kalbų sąrašas - - - Add Language - Pridėti kalbą - - - Done - Atlikta - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Netrukdyti - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - Kai ekranas užrakintas - - - - dccV23::TimeSlotItem - - From - Nuo - - - To - Iki - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Patvirtinti - - - Cancel - Atsisakyti - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Rodyklės greitis - - - Slow - Lėtas - - - Fast - Greitas - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Dalyvauti naudotojo patyrimo programoje - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Metai - - - Month - Mėnesis - - - Day - Diena - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Norint pakeisti NTP serverį, reikalingas tapatybės nustatymas - - - - DefAppModule - - Default Applications - Numatytosios programos - - - - DefAppPlugin - - Webpage - Internetinės svetainės - - - Mail - Paštas - - - Text - Tekstas - - - Music - Muzika - - - Video - Vaizdo įrašai - - - Picture - Paveikslai - - - Terminal - Terminalas - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Atsisakyti - - - Next - Kitas - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Dokas - - - Multiple Displays - Keli ekranai - - - Show Dock - - - - Mode - Veiksena - - - Position - Vieta - - - Status - Būsena - - - Show recent apps in Dock - - - - Size - Dydis - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Madinga veiksena - - - Efficient mode - Efektyvi veiksena - - - Top - Viršus - - - Bottom - Apačia - - - Left - Kairė - - - Right - Dešinė - - - Location - Vieta - - - Keep shown - - - - Keep hidden - Laikyti paslėptą - - - Smart hide - Išmaniai slėpti - - - Small - Mažas - - - Large - Didelis - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Redaguoti - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Atlikta - - - Add Face - - - - The name already exists - Pavadinimas jau yra - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Pridėti piršto atspaudą - - - Cancel - Atsisakyti - - - Next - Kitas - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - Piršto atspaudas pridėtas - - - - FingerWidget - - Edit - Redaguoti - - - Fingerprint Password - Piršto atspaudo slaptažodis - - - You can add up to 10 fingerprints - - - - Done - Atlikta - - - The name already exists - Pavadinimas jau yra - - - Add Fingerprint - Pridėti piršto atspaudą - - - - GeneralModule - - General - Bendra - - - Balanced - Subalansuotas - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Redaguoti - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Atlikta - - - Add Iris - - - - The name already exists - Pavadinimas jau yra - - - Iris - - - - - KeyLabel - - None - Nėra - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Įvesties garsis - - - Input Level - Įvesties lygis - - - - PersonalizationDesktopModule - - Desktop - Darbalaukis - - - Window - Langas - - - Window Effect - Langų efektai - - - Window Minimize Effect - Langų suskleidimo efektas - - - Transparency - Permatomumas - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Mažas - - - Middle - - - - Large - Didelis - - - - PersonalizationModule - - Personalization - Personalizacija - - - - PersonalizationThemeList - - Cancel - Atsisakyti - - - Save - Įrašyti - - - Light - Silpnas - - - Dark - Tamsi - - - Auto - Automatinis - - - Default - Numatytasis - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - Pabrėžimo spalva - - - Icon Settings - - - - Icon Theme - Piktogramų tema - - - Cursor Theme - Žymeklio tema - - - Text Settings - - - - Font Size - Šrifto dydis - - - Standard Font - Standartinis šriftas - - - Monospaced Font - Lygiaplotis šriftas - - - Light - Silpnas - - - Auto - Automatinis - - - Dark - Tamsi - - - - PersonalizationThemeWidget - - Light - Silpnas - General - /personalization/General - - - Dark - Tamsi - General - /personalization/General - - - Auto - Automatinis - General - /personalization/General - - - Default - Numatytasis - - - - PersonalizationWorker - - Custom - Pasirinktinas - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN, skirtas prisijungimui prie Bluetooth įrenginio, yra: - - - Cancel - Atsisakyti - - - Confirm - Patvirtinti - - - - PowerModule - - Power - Energija - - - Battery low, please plug in - Baterija baigia išsikrauti, prijunkite maitinimą - - - Battery critically low - Kritiškai žema baterijos įkrova - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofonas - - - User Folders - - - - Calendar - Kalendorius - - - Screen Capture - - - - - QObject - - Control Center - Valdymo centras - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Aktyvuotas - - - View - Žiūrėti - - - To be activated - - - - Activate - Aktyvuoti - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Atsisakyti - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - Atnaujinimas sėkmingas - - - Failed to update - Nepavyko atnaujinti - - - - SearchInput - - Search - Ieškoti - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Garso efektai - - - - SoundModel - - Boot up - Paleisti - - - Shut down - Išjungti - - - Log out - Atsijungti - - - Wake up - Atsikelti - - - Volume +/- - Garsis +/- - - - Notification - Pranešimai - - - Low battery - Žema baterijos įkrova - - - Send icon in Launcher to Desktop - Siųsti piktogramą iš leistuko į darbalaukį - - - Empty Trash - Išvalyti šiukšlinę - - - Plug in - Prijungti - - - Plug out - Atjungti - - - Removable device connected - Keičiamasis įrenginys prijungtas - - - Removable device removed - Keičiamasis įrenginys pašalintas - - - Error - Klaida - - - - SoundModule - - Sound - Garsas - - - - SoundPlugin - - Output - Išvestis - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Įvestis - - - Sound Effects - Garso efektai - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Veiksena - - - Output Volume - Išvesties garsis - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Kairės/Dešinės balansas - - - Left - Kairė - - - Right - Dešinė - - - - TimeSettingModule - - Time Settings - Laiko nustatymai - - - Time - Laikas - - - Auto Sync - Automatinis sinchronizavimas - - - Reset - Atstatyti - - - Save - Įrašyti - - - Server - Serveris - - - Address - Adresas - - - Required - Būtina - - - Customize - Tinkinti - - - Year - Metai - - - Month - Mėnesis - - - Day - Diena - - - - TimeZoneChooser - - Cancel - Atsisakyti - - - Confirm - Patvirtinti - - - Add Timezone - Pridėti laiko juostą - - - Add - Pridėti - - - Change Timezone - Pakeisti laiko juostą - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Sugrąžinti - - - Save - Įrašyti - - - - TimezoneItem - - Tomorrow - Rytoj - - - Yesterday - Vakar - - - Today - Šiandien - - - %1 hours earlier than local - %1 valandos anksčiau nei vietinis laikas - - - %1 hours later than local - %1 val. vėliau nei vietinis laikas - - - - TimezoneModule - - Timezone List - Laiko juostų sąrašas - - - System Timezone - Sistemos laiko juosta - - - Add Timezone - Pridėti laiko juostą - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Atsisakyti - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - Atnaujinimas nepavyko: trūksta vietos diske - - - Dependency error, failed to detect the updates - Priklausomybių klaida, nepavyko aptikti atnaujinimų - - - Restart the computer to use the system and the applications properly - Norėdami tinkamai naudotis sistema ir programomis, paleiskite kompiuterį iš naujo - - - Network disconnected, please retry after connected - Tinklas atjungtas, prisijungę prie tinklo bandykite dar kartą - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - Šis atnaujinimas gali užimti daug laiko, prašome proceso metu neišjungti ir nepaleisti kompiuterio iš naujo. - - - Updates Available - - - - Current Edition - Dabartinė laida - - - Updating... - Atnaujinama... - - - Update All - - - - Last checking time: - - - - Your system is up to date - Jūsų sistemoje yra įdiegti visi atnaujinimai - - - Check for Updates - - - - Checking for updates, please wait... - Tikrinami atnaujinimai, prašome palaukti... - - - The newest system installed, restart to take effect - Naujausia sistema įdiegta, paleiskite iš naujo, kad įsigaliotų pakeitimai - - - %1% downloaded (Click to pause) - %1% atsisiųsta (Spustelėkite, norėdami pristabdyti) - - - %1% downloaded (Click to continue) - %1% atsisiųsta (Spustelėkite, norėdami tęsti) - - - Your battery is lower than 50%, please plug in to continue - Jūsų baterijos įkrova yra žemiau 50%, norėdami tęsti prijunkite prie maitinimo šaltinio - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Prašome užtikrinti, kad pakaks energijos kompiuterio paleidimui iš naujo bei neišjungti kompiuterio ir neištraukti kištuko - - - Size - Dydis - - - - UpdateModule - - Updates - Atnaujinimai - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - Nepakanka vietos diske - - - Update failed: insufficient disk space - Atnaujinimas nepavyko: trūksta vietos diske - - - Update failed - - - - Network error - - - - Network error, please check and try again - Tinklo klaida, patikrinkite ir bandykite dar kartą - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Naujausia sistema įdiegta, paleiskite iš naujo, kad įsigaliotų pakeitimai - - - Waiting - - - - Backing up - - - - System backup failed - Sistemos atsarginė kopija patyrė nesėkmę - - - Release date: - - - - Server - Serveris - - - Desktop - Darbalaukis - - - Version - Versija - - - - UpdateSettingsModule - - Update Settings - Atnaujinimų nustatymai - - - System - Sistema - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - Automatiškai atsisiųsti atnaujinimus - - - Switch it on to automatically download the updates in wireless or wired network - Įjunkite, norėdami automatiškai atsisiųsti atnaujinimus, kai naudojamas laidinis ar belaidis tinklas - - - Auto Install Updates - - - - Updates Notification - Pranešimas apie atnaujinimus - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Dabartinė laida - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Baterijos energija - - - Never - Niekada - - - Shut down - Išjungti - - - Suspend - Pristabdyti - - - Hibernate - Užmigdyti - - - Turn off the monitor - - - - Do nothing - Nieko nedaryti - - - 1 Minute - 1 minutės - - - %1 Minutes - %1 minučių - - - 1 Hour - 1 valandos - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Užrakinti ekraną po - - - Computer suspends after - - - - Computer will suspend after - Kompiuteris bus pristabdytas po - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Elektros maitinimas - - - 1 Minute - 1 minutės - - - %1 Minutes - %1 minučių - - - 1 Hour - 1 valandos - - - Never - Niekada - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Užrakinti ekraną po - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Išjungti - - - Suspend - Pristabdyti - - - Hibernate - Užmigdyti - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - Nieko nedaryti - - - - WacomModule - - Drawing Tablet - Piešimo planšetė - - - Mode - Veiksena - - - Pressure Sensitivity - Spaudimo jautrumas - - - Pen - Rašiklis - - - Mouse - Pelė - - - Light - Silpnas - - - Heavy - Stiprus - - - - main - - Control Center provides the options for system settings. - Valdymo centras pateikia sistemos nustatymų parametrus. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_lv.ts b/dcc-old/translations/dde-control-center_lv.ts deleted file mode 100644 index 3db16377fe..0000000000 --- a/dcc-old/translations/dde-control-center_lv.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Atcelt - - - Next - Talāk - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Pabeigts - - - Failed to enroll your face - - - - Try Again - - - - Close - Aizvērt - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Atcelt - - - Next - Talāk - - - Iris enrolled - - - - Done - Pabeigts - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Atcelt - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Atcelt - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - Automātiskā pierakstīšanās - - - Login Without Password - Pierakstīšanās bez paroles - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Atcelt - - - OK - Labi - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Atcelt - - - Save - Saglabāt - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Attēli - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - Atcelt - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - Atcelt - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - Parole - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Attēli - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - Atcelt - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - Atcelt - - - Save - Saglabāt - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Talāk - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Atcelt - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - Rediģēt - - - Add Keyboard Layout - - - - Done - Pabeigts - - - - dccV23::KeyboardLayoutDialog - - Cancel - Atcelt - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - Palīdzība - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - Atcelt - - - Save - Saglabāt - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - Paplašināt - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Paziņojums - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Atcelt - - - Delete - Dzēst - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Meklēt - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Atcelt - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Rediģēt - - - Done - Pabeigts - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Atcelt - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - Veids - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Atcelt - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Rediģēt - - - Language List - - - - Add Language - - - - Done - Pabeigts - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - Atcelt - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Atcelt - - - Next - Talāk - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Rediģēt - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Pabeigts - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Atcelt - - - Next - Talāk - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Rediģēt - - - Fingerprint Password - Pirkstu nospiedumu parole - - - You can add up to 10 fingerprints - - - - Done - Pabeigts - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Rediģēt - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Pabeigts - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Nekas - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - Atcelt - - - Save - Saglabāt - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Atcelt - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - Kalendārs - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Atcelt - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Meklēt - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - Ieslēgt - - - Shut down - Izslēgt - - - Log out - Izrakstīties - - - Wake up - Pamodināt - - - Volume +/- - Skaļums +/- - - - Notification - Paziņojums - - - Low battery - Zems baterijas līmenis - - - Send icon in Launcher to Desktop - Nosūtīt Palaidēja ikonu uz Darbvirsmu - - - Empty Trash - Iztukšot miskasti - - - Plug in - Pievienot - - - Plug out - Atvienot - - - Removable device connected - Noņemamā ierīce savienota - - - Removable device removed - Noņemamā ierīce atvienota - - - Error - Kļūda - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - Saglabāt - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Atcelt - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Saglabāt - - - - TimezoneItem - - Tomorrow - - - - Yesterday - Vakar - - - Today - Šodiena - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Atcelt - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Saistīto pakotņu kļūda, neizdevās noteikt atjauninājumus - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - Atjauninājumi - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Nekad - - - Shut down - Izslēgt - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - Nekad - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Izslēgt - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ml.ts b/dcc-old/translations/dde-control-center_ml.ts deleted file mode 100644 index 2ab4ec1d61..0000000000 --- a/dcc-old/translations/dde-control-center_ml.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - ബന്ധിപ്പിക്കുക - - - Disconnect - വിച്ഛേദിക്കുക - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - റദ്ദാക്കുക - - - Next - അടുത്തത് - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - പൂർത്തിയായി - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - റദ്ദാക്കുക - - - Next - അടുത്തത് - - - Iris enrolled - - - - Done - പൂർത്തിയായി - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - ബന്ധിച്ചിരിക്കുന്നു - - - Not connected - - - - - BluetoothModule - - Bluetooth - ബ്ലൂടൂത്ത് - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - റദ്ദാക്കുക - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - റദ്ദാക്കുക - - - Confirm - button - ഉറപ്പാക്കുക - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - ഉപയോക്തൃനാമം - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - റദ്ദാക്കുക - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - റദ്ദാക്കുക - - - Save - സൂക്ഷിക്കുക - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - പുതുക്കുന്നു..... - - - Startup Delay - - - - Theme - തീം - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - ബൂട്ട് മെനു - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - റദ്ദാക്കുക - - - Confirm - button - ഉറപ്പാക്കുക - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - തെളിച്ചം - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - ബൂട്ട് മെനു - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - റദ്ദാക്കുക - - - Create - - - - New User - - - - User Type - - - - Username - ഉപയോക്തൃനാമം - - - Full Name - - - - Password - രഹസ്യവാക്ക് - - - Repeat Password - രഹസ്യവാക്ക് വീണ്ടും - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - പേര് - - - Required - - - - Command - നിർദേശം - - - Cancel - റദ്ദാക്കുക - - - Add - ചേർക്കുക - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - റദ്ദാക്കുക - - - Save - സൂക്ഷിക്കുക - - - Shortcut - - - - Name - പേര് - - - Command - നിർദേശം - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - അടുത്തത് - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - റദ്ദാക്കുക - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - പ്രദർശനം - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - ദിവസവും ആവർത്തിക്കുക - - - Short - - - - Long - - - - Repeat Rate - ആവർത്തന നിരക്ക് - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - കീബോർഡ് ലേയൗട്ട് - - - Edit - - - - Add Keyboard Layout - കീബോർഡ് ലേയൗട്ട് ചേർക്കുക - - - Done - പൂർത്തിയായി - - - - dccV23::KeyboardLayoutDialog - - Cancel - റദ്ദാക്കുക - - - Add - ചേർക്കുക - - - Add Keyboard Layout - കീബോർഡ് ലേയൗട്ട് ചേർക്കുക - - - - dccV23::KeyboardPlugin - - Keyboard and Language - കീബോർഡ് ഭാഷ - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - കീബോർഡ് ലേയൗട്ട് - - - Language - ഭാഷ - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - രഹസ്യവാക്ക് വീണ്ടും - - - Password Hint - - - - Cancel - റദ്ദാക്കുക - - - Save - സൂക്ഷിക്കുക - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - രീതി - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - ദീർഘിപ്പിക്കുക - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - റദ്ദാക്കുക - - - Delete - നീക്കം ചെയ്യുക - - - - dccV23::ResolutionWidget - - Resolution - റെസലൂഷൻ - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - കറക്കം - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - തിരയുക - - - - dccV23::SecondaryScreenDialog - - Brightness - തെളിച്ചം - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - ഇടത്തരം - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - റദ്ദാക്കുക - - - Confirm - ഉറപ്പാക്കുക - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - പൂർത്തിയായി - - - - dccV23::ShortCutSettingWidget - - System - സിസ്റ്റം - - - Window - ജാലകം - - - Workspace - പ്രവർത്തന സ്ഥലം - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - റദ്ദാക്കുക - - - Replace - മാറ്റിവയ്ക്കുക - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - റദ്ദാക്കുക - - - Add - ചേർക്കുക - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - പൂർത്തിയായി - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - ഉറപ്പാക്കുക - - - Cancel - റദ്ദാക്കുക - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - സ്വതേ അപ്ലിക്കേഷനുകൾ - - - - DefAppPlugin - - Webpage - - - - Mail - മെയിൽ - - - Text - ടെക്സ്റ്റ് - - - Music - സംഗീതം - - - Video - ചലച്ചിത്രം - - - Picture - ചിത്രം - - - Terminal - ടെർമിനൽ - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - റദ്ദാക്കുക - - - Next - അടുത്തത് - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - രീതി - - - Position - - - - Status - അവസ്ഥ - - - Show recent apps in Dock - - - - Size - വലുപ്പം - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - മുകളിൽ - - - Bottom - താഴെ - - - Left - ഇടതു് - - - Right - വലതു് - - - Location - സ്ഥാനം - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - ചെറുത് - - - Large - വലുത് - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - പൂർത്തിയായി - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - റദ്ദാക്കുക - - - Next - അടുത്തത് - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - പൂർത്തിയായി - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - പൂർത്തിയായി - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - ഡെസ്ക്ടോപ്പ് - - - Window - ജാലകം - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - ചെറുത് - - - Middle - - - - Large - വലുത് - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - റദ്ദാക്കുക - - - Save - സൂക്ഷിക്കുക - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - തീം - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - കസ്റ്റം - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - റദ്ദാക്കുക - - - Confirm - ഉറപ്പാക്കുക - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - കാമറ - - - Microphone - - - - User Folders - - - - Calendar - കലണ്ടർ - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - റദ്ദാക്കുക - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - തിരയുക - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - നിർത്തുക - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - രീതി - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - ഇടതു് - - - Right - വലതു് - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - പുനഃക്രമീകരിക്കുക - - - Save - സൂക്ഷിക്കുക - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - റദ്ദാക്കുക - - - Confirm - ഉറപ്പാക്കുക - - - Add Timezone - - - - Add - ചേർക്കുക - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - തിരിച്ചു പോകുക - - - Save - സൂക്ഷിക്കുക - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - ഇന്ന് - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - റദ്ദാക്കുക - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - പുതുക്കുന്നു..... - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - വലുപ്പം - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - ഡെസ്ക്ടോപ്പ് - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - സിസ്റ്റം - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - ഒരിക്കലും വേണ്ട - - - Shut down - നിർത്തുക - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 മിനുട്ട് - - - %1 Minutes - - - - 1 Hour - 1 മണിക്കൂർ - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 മിനുട്ട് - - - %1 Minutes - - - - 1 Hour - 1 മണിക്കൂർ - - - Never - ഒരിക്കലും വേണ്ട - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - നിർത്തുക - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - രീതി - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_mn.ts b/dcc-old/translations/dde-control-center_mn.ts deleted file mode 100644 index 8aae3f6003..0000000000 --- a/dcc-old/translations/dde-control-center_mn.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Холбогдох - - - Disconnect - Салгах - - - Rename - Дахин нэрлэх - - - Send Files - - - - Ignore this device - Энэ төхөөрөмжийг алгасах - - - Connecting - Холбогдож байна - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - Ажлын тавцангийн файл нээх - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Цуцлах - - - Next - Дараах - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Дуусгах - - - Failed to enroll your face - - - - Try Again - - - - Close - Хаах - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Цуцлах - - - Next - Дараах - - - Iris enrolled - - - - Done - Дуусгах - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Хурууны хээ - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Холбогдсон - - - Not connected - Холбогдоогүй - - - - BluetoothModule - - Bluetooth - Блютүүт - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Цуцлах - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Цуцлах - - - Confirm - button - Батлах - - - - dccV23::AccountSpinBox - - Always - Үргэлж - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Хэрэглэгчийн нэр - - - Change Password - Нууц үг солих - - - Delete User - - - - User Type - - - - Auto Login - Автоматаар нэвтрэх - - - Login Without Password - Нууц үггүй нэвтрэх - - - Validity Days - Хүчинтэй хугацаа - - - Group - Групп - - - The full name is too long - Бүтэн нэр хэтэрхий урт байна - - - Standard User - Энгийн хэрэглэгч - - - Administrator - Администратор - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Бүтэн нэр - - - Go to Settings - Тохиргооруу очих - - - Cancel - Цуцлах - - - OK - ЗА - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Таны хост домэйн серверээс амжилттай устгагдсан - - - Your host joins the domain server successfully - Таны хост домэйн серверт амжилттай холбогдсон - - - Your host failed to leave the domain server - Таны хост домэйн серверийг орхиж чадсангүй - - - Your host failed to join the domain server - Таны хост домэйн серверт нэгдэх боломжгүй байна - - - AD domain settings - AD домэйн тохиргоо - - - Password not match - Нууц үг тохирсонгүй - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Цуцлах - - - Save - Хадгалах - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Зургууд - - - - dccV23::BootWidget - - Updating... - Шинэчилж байна... - - - Startup Delay - Эхлэлийн хүлээгдэл - - - Theme - Харагдах байдал - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Харагдах байдалыг сонголтыг туршаад үзээрэй. - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Нууц үг солих - - - Boot Menu - Ачаалагчын цэс - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Шаардлагатай - - - Cancel - button - Цуцлах - - - Confirm - button - Батлах - - - Password cannot be empty - - - - Passwords do not match - Нууц үгтэй тохирохгүй байна - - - - dccV23::BrightnessWidget - - Brightness - Цайралт - - - Color Temperature - - - - Auto Brightness - Автомат гэрэлтүүлэг - - - Night Shift - Шөнийн шилжилт - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - Ерөнхий тохиргоо - - - Boot Menu - Ачаалагчын цэс - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Групп - - - Cancel - Цуцлах - - - Create - Үүсгэх - - - New User - - - - User Type - - - - Username - Хэрэглэгчийн нэр - - - Full Name - Бүтэн нэр - - - Password - Нууц үг - - - Repeat Password - Нууц үг давтах - - - Password Hint - - - - The full name is too long - Бүтэн нэр хэтэрхий урт байна - - - Passwords do not match - Нууц үгтэй тохирохгүй байна - - - Standard User - Энгийн хэрэглэгч - - - Administrator - Администратор - - - Customized - - - - Required - Шаардлагатай - - - optional - Шаардлагагүй - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Хэрэглэгчийн нэр 3-32 тэмдэгтийн хооронд байх ёстой - - - The first character must be a letter or number - Хамгийн эхний тэмдэгт үсэг эсвэл тоо байх ёстой - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Зургууд - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Тусгай товчилбор оруулах - - - Name - Нэр - - - Required - Шаардлагатай - - - Command - Комманд - - - Cancel - Цуцлах - - - Add - Нэмэх - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Энэ товчилбор %1 товчилбортой давхцаж байна. Бусад товчилборуудтай давхцуулалгүйгээр нэмэх хэрэгтэй - - - - dccV23::CustomEdit - - Required - Шаардлагатай - - - Cancel - Цуцлах - - - Save - Хадгалах - - - Shortcut - Товчилбор - - - Name - Нэр - - - Command - Комманд - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Энэ товчилбор %1 товчилбортой давхцаж байна. Бусад товчилборуудтай давхцуулалгүйгээр нэмэх хэрэгтэй - - - - dccV23::CustomItem - - Shortcut - Товчилбор - - - Please enter a shortcut - Товчилборыг оруулна уу - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Дараах - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Цуцлах - - - Restart Now - Одоо дахин эхлүүлэх - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Дэлгэц - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Хоёр дарж туршна уу - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Давтах хүлээлт - - - Short - Богино - - - Long - Удаан - - - Repeat Rate - Давтах хурд - - - Slow - Удаан - - - Fast - Хурдан - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - Том үсгийн мэдэгдэл - - - - dccV23::GeneralSettingWidget - - Left Hand - Зүүн гар - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Давхар товших Хурд - - - Slow - Удаан - - - Fast - Хурдан - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Гарын байршил - - - Edit - Засах - - - Add Keyboard Layout - Гарын байрлал нэмэх - - - Done - Дуусгах - - - - dccV23::KeyboardLayoutDialog - - Cancel - Цуцлах - - - Add - Нэмэх - - - Add Keyboard Layout - Гарын байрлал нэмэх - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Гар болон хэл - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Гарын байршил - - - Language - Хэл - - - Shortcuts - Товчилборууд - - - - dccV23::MainWindow - - Help - Тусламж - - - - dccV23::ModifyPasswdPage - - Change Password - Нууц үг солих - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Одоогийн нууц үг - - - Forgot password? - - - - New Password - Шинэ нууц үг - - - Repeat Password - Нууц үг давтах - - - Password Hint - - - - Cancel - Цуцлах - - - Save - Хадгалах - - - Passwords do not match - Нууц үгтэй тохирохгүй байна - - - Required - Шаардлагатай - - - Optional - Шаардлаггүй - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Нууц үг буруу байна - - - New password should differ from the current one - Шинэ нууц үг одоогийнхоос өөр байх ёстой - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Хулгана - - - General - Ерөнхий - - - Touchpad - Мэдрэгч самбар - - - TrackPoint - Чиглүүлэгч цэг - - - - dccV23::MouseSettingWidget - - Pointer Speed - Чиглүүлэгчийн хурд - - - Mouse Acceleration - Хулганы хурдатгал - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Байгалийн гүйлгэлт - - - Slow - Удаан - - - Fast - Хурдан - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Горим - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Хувилах - - - Extend - Өрөгтгөх - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Мэдэгдэл - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - Нууц үг %1 тэмдэгтээс илүүгүй байх ёстой - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Бүртгэлийн санг устгах - - - Cancel - Цуцлах - - - Delete - Устгах - - - - dccV23::ResolutionWidget - - Resolution - Нягтаршил - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Үндсэн - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - Стандарт - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Хайх - - - - dccV23::SecondaryScreenDialog - - Brightness - Цайралт - - - - dccV23::SecurityLevelItem - - Weak - Сул - - - Medium - Дундаж - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Цуцлах - - - Confirm - Батлах - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Засах - - - Done - Дуусгах - - - - dccV23::ShortCutSettingWidget - - System - Систем - - - Window - Цонх - - - Workspace - Ажлийн талбар - - - Assistive Tools - Туслах хэрэгслүүд - - - Custom Shortcut - Тусгай товчилбор - - - Restore Defaults - Анхдагч утга сэргээх - - - Shortcut - Товчилбор - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Товчилборыг дахин тохируулах - - - Cancel - Цуцлах - - - Replace - Солих - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Энэ товчилбор %1 товчилбортой зөрчилдөж байна, Солих товч дээр дарж энэ товчилборыг сайжруулаарай - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - Хувилбар - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Лицензийн хувилбар - - - End User License Agreement - Хэрэглэгчийн лицензийн гэрээг дуусгах - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - Системийн мэдээлэл - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Цуцлах - - - Add - Нэмэх - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Засах - - - Language List - - - - Add Language - - - - Done - Дуусгах - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Батлах - - - Cancel - Цуцлах - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Чиглүүлэгчийн хурд - - - Slow - Удаан - - - Fast - Хурдан - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Жил - - - Month - Сар - - - Day - Өдөр - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Ерөнхий Аппликейшнүүд - - - - DefAppPlugin - - Webpage - Вэб хуудас - - - Mail - Мэйл - - - Text - Текст - - - Music - Хөгжим - - - Video - Видео - - - Picture - Зураг - - - Terminal - Терминал - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Цуцлах - - - Next - Дараах - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - Горим - - - Position - - - - Status - Төлөв - - - Show recent apps in Dock - - - - Size - Хэмжээ - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Загварлаг горим - - - Efficient mode - Үр дүнт горим - - - Top - Дээр - - - Bottom - Доор - - - Left - Зүүн - - - Right - Баруун - - - Location - Байршил - - - Keep shown - - - - Keep hidden - Үргэлж нуулт - - - Smart hide - Ухаалаг нуулт - - - Small - Жижиг - - - Large - Том - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Засах - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Дуусгах - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Хурууны хээ нэмэх - - - Cancel - Цуцлах - - - Next - Дараах - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - Хурууны хээ нэмэгдлээ - - - - FingerWidget - - Edit - Засах - - - Fingerprint Password - Хурууны хээн нууц үг - - - You can add up to 10 fingerprints - - - - Done - Дуусгах - - - The name already exists - - - - Add Fingerprint - Хурууны хээ нэмэх - - - - GeneralModule - - General - Ерөнхий - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Засах - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Дуусгах - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Байхгүй - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Оролтын дууны хүч - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Дэлгэц - - - Window - Цонх - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - Нэвтрэлт - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Жижиг - - - Middle - - - - Large - Том - - - - PersonalizationModule - - Personalization - Харагдах байдал - - - - PersonalizationThemeList - - Cancel - Цуцлах - - - Save - Хадгалах - - - Light - Хөнгөн - - - Dark - - - - Auto - Автомат - - - Default - Үндсэн - - - - PersonalizationThemeModule - - Theme - Харагдах байдал - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Дүрсний харагдац - - - Cursor Theme - Заагчын харагдац - - - Text Settings - - - - Font Size - - - - Standard Font - Стандарт фонт - - - Monospaced Font - Кодчлолын фонт - - - Light - Хөнгөн - - - Auto - Автомат - - - Dark - - - - - PersonalizationThemeWidget - - Light - Хөнгөн - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - Автомат - General - /personalization/General - - - Default - Үндсэн - - - - PersonalizationWorker - - Custom - Тусгайлсан - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Блютүүт төхөөрөмжид холбогдох ПИН код: - - - Cancel - Цуцлах - - - Confirm - Батлах - - - - PowerModule - - Power - Цэнэг - - - Battery low, please plug in - Цэнэг дууслаа, цэнэглэгчээ залгана уу - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Камер - - - Microphone - Микрофон - - - User Folders - - - - Calendar - Хуанли - - - Screen Capture - - - - - QObject - - Control Center - Удирдлагын хэсэг - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Цуцлах - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - Шинэчлэлт амжилтгүй боллоо - - - - SearchInput - - Search - Хайх - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Дууны эффект - - - - SoundModel - - Boot up - Ачаална - - - Shut down - Унтраах - - - Log out - Гарах - - - Wake up - Сэрээх - - - Volume +/- - Дуу +/- - - - Notification - Мэдэгдэл - - - Low battery - Бага цэнэгтэй - - - Send icon in Launcher to Desktop - Дүрсийг ажлын тавцанруу илгээх - - - Empty Trash - Хоосон хогийн сав - - - Plug in - Залгах - - - Plug out - Салгах - - - Removable device connected - Зөөвөрийн төхөөрөмж холбогдлоо - - - Removable device removed - Зөөвөрийн төхөөрөмж салгагдлаа - - - Error - Алдаа - - - - SoundModule - - Sound - Дуу - - - - SoundPlugin - - Output - Гаралт - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Оролт - - - Sound Effects - Дууны эффект - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Горим - - - Output Volume - Гаралтын дууны хүч - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Баруун/Зүүн тэнцвэржүүлэлт - - - Left - Зүүн - - - Right - Баруун - - - - TimeSettingModule - - Time Settings - Цагны тохиргоо - - - Time - - - - Auto Sync - - - - Reset - Дахин шинэчлэх - - - Save - Хадгалах - - - Server - Сервер - - - Address - Хаяг - - - Required - Шаардлагатай - - - Customize - - - - Year - Жил - - - Month - Сар - - - Day - Өдөр - - - - TimeZoneChooser - - Cancel - Цуцлах - - - Confirm - Батлах - - - Add Timezone - Цагийн бүс Нэмэх - - - Add - Нэмэх - - - Change Timezone - Цагын бүс өөрчлөх - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Буцаах - - - Save - Хадгалах - - - - TimezoneItem - - Tomorrow - Маргааш - - - Yesterday - Өчигдөр - - - Today - Өнөөдөр - - - %1 hours earlier than local - Орон нутгийнхаас %1 цагаар эрт - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Цагын бүсийн жагсаалт - - - System Timezone - - - - Add Timezone - Цагийн бүс Нэмэх - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Цуцлах - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Дефендесын алдаа, шинэчлэлийг илрүүлж чадсангүй - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - Сүлжээ тасарсан, холбогдсоны дараа дахин оролдож үзнэ үү - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - Шинэчилж байна... - - - Update All - - - - Last checking time: - - - - Your system is up to date - Таны систем шинэчлэгдсэн - - - Check for Updates - - - - Checking for updates, please wait... - Шинэчлэлийг шалгаж байна, түр хүлээнэ үү... - - - The newest system installed, restart to take effect - Шинэ систем суулгагдсан, системийг дахин эхлүүлснээр хүчин төгөлдөржинө - - - %1% downloaded (Click to pause) - %1% татаж авсан (Дараад түр зогсоох) - - - %1% downloaded (Click to continue) - %1% татаж авсан (Дараад үргэлжилүүлэх) - - - Your battery is lower than 50%, please plug in to continue - Таны цэнэг 50 хувиас бага байна, тогонд залгана уу - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Системийг дахин эхлүүлхэд таны цэнэг хангалтгүй байгаа тул төхөөрөмжөө унтраах эсвэл тогноос бүү салгаарай - - - Size - Хэмжээ - - - - UpdateModule - - Updates - Шинэчлэлүүд - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Шинэ систем суулгагдсан, системийг дахин эхлүүлснээр хүчин төгөлдөржинө - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Сервер - - - Desktop - Дэлгэц - - - Version - Хувилбар - - - - UpdateSettingsModule - - Update Settings - Шинэчлэлийн тохиргоо - - - System - Систем - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - Утасгүй болон утастай сүлжээнд холбогдсон үед шинэчлэлүүдийг автоматаар татаж авах болно. - - - Auto Install Updates - - - - Updates Notification - Шинэчлэлийн мэдэгдэл - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Хэзээ ч - - - Shut down - Унтраах - - - Suspend - Түр зогсоох - - - Hibernate - Амраах - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 Минут - - - %1 Minutes - %1 минут - - - 1 Hour - 1 Цаг - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - Компьютер амрах хугацаа - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 Минут - - - %1 Minutes - %1 минут - - - 1 Hour - 1 Цаг - - - Never - Хэзээ ч - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Унтраах - - - Suspend - Түр зогсоох - - - Hibernate - Амраах - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Горим - - - Pressure Sensitivity - Даралтын мэдрэг - - - Pen - Үзэг - - - Mouse - Хулгана - - - Light - Хөнгөн - - - Heavy - Хүнд - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_mr.ts b/dcc-old/translations/dde-control-center_mr.ts deleted file mode 100644 index 109092d2ee..0000000000 --- a/dcc-old/translations/dde-control-center_mr.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_ms.ts b/dcc-old/translations/dde-control-center_ms.ts deleted file mode 100644 index de7b66d37c..0000000000 --- a/dcc-old/translations/dde-control-center_ms.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Izin peranti Bluetooth lain mencari peranti ini - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Benarkan Bluetooth untuk mencari peranti berhampiran (pembesar suara, papan kekunci, tetikus) - - - My Devices - Peranti Saya - - - Other Devices - Peranti Lain - - - Show Bluetooth devices without names - Tunjuk peranti Bluetooth tanpa nama - - - Connect - Sambung - - - Disconnect - Putuskan - - - Rename - Nama Semula - - - Send Files - Hantar Fail - - - Ignore this device - Abai peranti ini - - - Connecting - Menyambung - - - Disconnecting - Memutuskan - - - - AddButtonWidget - - Add Application - Tambah Aplikasi - - - Open Desktop file - Buka fail Atas Meja - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Batal - - - Next - Berikutnya - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Selesai - - - Failed to enroll your face - - - - Try Again - - - - Close - Tutup - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Batal - - - Next - Berikutnya - - - Iris enrolled - - - - Done - Selesai - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - Tidak lebih dari 15 aksara - - - Use letters, numbers and underscores only, and no more than 15 characters - Guna abjad, nombor dan garis bawah sahaja, dan tidak melebihi 15 aksara - - - Use letters, numbers and underscores only - Guna abjad, nombor dan garis bawah sahaja - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Cap jari - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Bersambung - - - Not connected - Tidak bersambung - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Capjari1 - - - Fingerprint2 - Capjari2 - - - Fingerprint3 - Capjari3 - - - Fingerprint4 - Capjari4 - - - Fingerprint5 - Capjari5 - - - Fingerprint6 - Capjari6 - - - Fingerprint7 - Capjari7 - - - Fingerprint8 - Capjari8 - - - Fingerprint9 - Capjari9 - - - Fingerprint10 - Capjari10 - - - Scan failed - Imbas gagal - - - The fingerprint already exists - Cap jari sudah wujud - - - Please scan other fingers - Sila imbas jari yang lain - - - Unknown error - Ralat tidak diketahui - - - Scan suspended - Imbas ditangguh - - - Cannot recognize - Tidak dapat kenal pasti - - - Moved too fast - Gerak terlalu pantas - - - Finger moved too fast, please do not lift until prompted - Jari digerak terlalu pantas. Jangan angkat sehingga diberitahu - - - Unclear fingerprint - Cap jari tidak jelas - - - Clean your finger or adjust the finger position, and try again - Bersih dahulu jari anda atau laras kedudukan jari, dan cuba sekali lagi - - - Already scanned - Sudah diimbas - - - Adjust the finger position to scan your fingerprint fully - Laras kedudukan jari supaya dapat mengimbas cap jari sepenuhnya - - - Finger moved too fast. Please do not lift until prompted - Jari digerak terlalu pantas. Jangan angkat sehingga diberitahu - - - Lift your finger and place it on the sensor again - Angkat jari anda dan letak ia di atas penderia sekali lagi - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Batal - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Batal - - - Confirm - button - Sahkan - - - - dccV23::AccountSpinBox - - Always - Sentiasa - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Nama Pengguna - - - Change Password - Ubah Kata Laluan - - - Delete User - - - - User Type - - - - Auto Login - Daftar Masuk Automatik - - - Login Without Password - Daftar Masuk Tanpa Kata Laluan - - - Validity Days - Hari Sah - - - Group - Kumpulan - - - The full name is too long - Nama penuh terlalu panjang - - - Standard User - Pengguna Piawai - - - Administrator - Pentadbir - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Nama Penuh - - - Go to Settings - Pergi ke Tetapan - - - Cancel - Batal - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Hos anda telah berjaya dibuang daripada pelayan domain - - - Your host joins the domain server successfully - Hos anda berjaya menyertai pelayan domain - - - Your host failed to leave the domain server - Hos anda gagal keluar dari pelayan domain - - - Your host failed to join the domain server - Hos anda gagal menyertai pelayan domain - - - AD domain settings - Tetapan domain AD - - - Password not match - Kata laluan tidak sepadan - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Tunjuk pemberitahuan dari %1 pada atas meja dan dalam pusat pemberitahuan. - - - Play a sound - Mainkan satu bunyi - - - Show messages on lockscreen - Tunjuk mesej atas skrin kunci - - - Show in notification center - Tunjuk dalam pusat pemberitahuan - - - Show message preview - Tunjuk pratonton mesej - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Batal - - - Save - Simpan - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Imej - - - - dccV23::BootWidget - - Updating... - Mengemas kini... - - - Startup Delay - Lengah Permulaan - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Klik pilihan dalam menu but untuk tetap ia sebagai but pertama, kemudian seret dan lepas satu gambar untuk mengubah latar belakang. - - - Click the option in boot menu to set it as the first boot - Klik pilihan dalam menu but untuk menetapkannya sebagai but pertama - - - Switch theme on to view it in boot menu - Tukar tema untuk melihatnya di dalam menu but - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Ubah Kata Laluan - - - Boot Menu - Menu But - - - Change GRUB password - - - - Username: - Nama Pengguna: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Diperlukan - - - Cancel - button - Batal - - - Confirm - button - Sahkan - - - Password cannot be empty - Kata laluan tidak boleh kosong - - - Passwords do not match - Kata laluan tidak sepadan - - - - dccV23::BrightnessWidget - - Brightness - Kecerahan - - - Color Temperature - Suhu Warna - - - Auto Brightness - Kecerahan Automatik - - - Night Shift - Shif Malam - - - The screen hue will be auto adjusted according to your location - Rona skrin akan diauto-laras berdasarkan lokasi anda berada. - - - Change Color Temperature - Ubah Suhu Warna - - - Cool - Sejuk - - - Warm - Suam - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Peranti Saya - - - Other Devices - Peranti Lain - - - - dccV23::CommonInfoPlugin - - General Settings - Tetapan Am - - - Boot Menu - Menu But - - - Developer Mode - Mod Pembangun - - - User Experience Program - Program Pengalaman Pengguna - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Setuju dan Sertai Program Pengalaman Pengguna - - - The Disclaimer of Developer Mode - Penafian Mod Pembangun - - - Agree and Request Root Access - Setuju dan Mohon Capaian Akar - - - Failed to get root access - Gagal mendapatkan capaian akar - - - Please sign in to your Union ID first - Sila daftar masuk ke ID Union anda terlebih dahulu - - - Cannot read your PC information - Tidak dapat membaca maklumat PC anda - - - No network connection - Tiada sambungan rangkaian - - - Certificate loading failed, unable to get root access - Sijil gagal dimuatkan, tidak boleh mendapatkan capaian akar - - - Signature verification failed, unable to get root access - Pengesahan tanda tangan gagal, tidak boleh mendapatkan capaian akar - - - - dccV23::CreateAccountPage - - Group - Kumpulan - - - Cancel - Batal - - - Create - Cipta - - - New User - - - - User Type - - - - Username - Nama Pengguna - - - Full Name - Nama Penuh - - - Password - Kata Laluan - - - Repeat Password - Ulang Kata Laluan - - - Password Hint - - - - The full name is too long - Nama penuh terlalu panjang - - - Passwords do not match - Kata laluan tidak sepadan - - - Standard User - Pengguna Piawai - - - Administrator - Pentadbir - - - Customized - Tersuai - - - Required - Diperlukan - - - optional - pilihan - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - Pengesahihan Policykit gagal - - - Username must be between 3 and 32 characters - Nama pengguna mestilah antara 3 hingga 32 aksara - - - The first character must be a letter or number - Aksara pertama mesti satu abjad atau angka - - - Your username should not only have numbers - Nama pengguna anda tidak semestinya nombor sahaja - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Imej - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Tambah Pintasan Suai - - - Name - Nama - - - Required - Diperlukan - - - Command - Perintah - - - Cancel - Batal - - - Add - Tambah - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Pintasan ini berkonflik dengan %1, klik untuk Tambah supaya pintasan ini berkesan serta-merta - - - - dccV23::CustomEdit - - Required - Diperlukan - - - Cancel - Batal - - - Save - Simpan - - - Shortcut - Pintasan - - - Name - Nama - - - Command - Perintah - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Pintasan ini berkonflik dengan %1, klik untuk Tambah supaya pintasan ini berkesan serta-merta - - - - dccV23::CustomItem - - Shortcut - Pintasan - - - Please enter a shortcut - Sila masukkan satu pintasan - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Mohon Capaian Akar - - - Online - Dalam Talian - - - Offline - Luar Talian - - - Please sign in to your Union ID first and continue - Sila daftar masuk ke ID Union anda terlebih dahulu dan teruskan - - - Next - Berikutnya - - - Export PC Info - Eksport Maklumat PC - - - Import Certificate - Import Sijil - - - 1. Export your PC information - 1. Eksport maklumat PC anda - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Pergi ke https://www.chinauos.com/developMode untuk memuat turun satu sijil luar talian - - - 3. Import the certificate - 3. Import sijil - - - - dccV23::DeveloperModeWidget - - Request Root Access - Mohon Capaian Akar - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Mod pembangun membolehkan anda dapatkan kelayakan akar, pasang dan jalankan apl tiada tanda tangan yang tidak tersenarai dalam kedai, tetapi integriti sistem anda boleh rosak, sila guna ia dengan hati-hati. - - - The feature is not available at present, please activate your system first - Fitur ini tidak tersedia masa kini, sila aktifkan sistem anda terlebih dahulu - - - Failed to get root access - Gagal mendapatkan capaian akar - - - Please sign in to your Union ID first - Sila daftar masuk ke ID Union anda terlebih dahulu - - - Cannot read your PC information - Tidak dapat membaca maklumat PC anda - - - No network connection - Tiada sambungan rangkaian - - - Certificate loading failed, unable to get root access - Sijil gagal dimuatkan, tidak boleh mendapatkan capaian akar - - - Signature verification failed, unable to get root access - Pengesahan tanda tangan gagal, tidak boleh mendapatkan capaian akar - - - To make some features effective, a restart is required. Restart now? - Untuk memastikan beberapa fitur berkesan, satu mula semula diperlukan. Mula semula sekarang? - - - Cancel - Batal - - - Restart Now - Mula Semula Sekarang - - - Root Access Allowed - Capaian Akar Dibenarkan - - - - dccV23::DisplayPlugin - - Display - Paparan - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Ujian Dwi-klik - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Lengah Ulang - - - Short - Pendek - - - Long - Panjang - - - Repeat Rate - Kadar Ulang - - - Slow - Perlahan - - - Fast - Pantas - - - Test here - Uji di sini - - - Numeric Keypad - Pad Kekunci Numerik - - - Caps Lock Prompt - Makluman Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Tangan Kiri - - - Disable touchpad while typing - Lumpuhkan pad sentuh ketika menaip - - - Scrolling Speed - Kelajuan Penatalan - - - Double-click Speed - Kelajuan Dwi-klik - - - Slow - Perlahan - - - Fast - Pantas - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Bentangan Papan Kekunci - - - Edit - Sunting - - - Add Keyboard Layout - Tambah Bentangan Papan Kekunci - - - Done - Selesai - - - - dccV23::KeyboardLayoutDialog - - Cancel - Batal - - - Add - Tambah - - - Add Keyboard Layout - Tambah Bentangan Papan Kekunci - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Papan Kekunci dan Bahasa - - - Keyboard - Papan Kekunci - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Bentangan Papan Kekunci - - - Language - Bahasa - - - Shortcuts - Pintasan - - - - dccV23::MainWindow - - Help - Bantuan - - - - dccV23::ModifyPasswdPage - - Change Password - Ubah Kata Laluan - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Kata Laluan Semasa - - - Forgot password? - - - - New Password - Kata Laluan Baharu - - - Repeat Password - Ulang Kata Laluan - - - Password Hint - - - - Cancel - Batal - - - Save - Simpan - - - Passwords do not match - Kata laluan tidak sepadan - - - Required - Diperlukan - - - Optional - Pilihan - - - Password cannot be empty - Kata laluan tidak boleh kosong - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Kata laluan salah - - - New password should differ from the current one - Kata laluan baharu seharusnya berbeza dengan nilai semasa - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Himpun Tetingkap - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Tetikus - - - General - Am - - - Touchpad - Pad Sentuh - - - TrackPoint - Titik Jejak - - - - dccV23::MouseSettingWidget - - Pointer Speed - Kelajuan Penuding - - - Mouse Acceleration - Pemecutan Tetikus - - - Disable touchpad when a mouse is connected - Lumpuhkan pad sentuh ketika tetikus disambungkan - - - Natural Scrolling - Penatalan Tabii - - - Slow - Perlahan - - - Fast - Pantas - - - - dccV23::MultiScreenWidget - - Multiple Displays - Paparan Berbilang - /display/Multiple Displays - - - Mode - Mod - /display/Mode - - - Main Screen - Skrin Utama - /display/Main Scree - - - Duplicate - Gandakan - - - Extend - Lanjut - - - Only on %1 - Hanya di %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Pemberitahuan - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Pengesanan Tapak Tangan - - - Minimum Contact Surface - Permukaan Sentuhan Minimum - - - Minimum Pressure Value - Nilai Tekanan Minimum - - - Disable the option if touchpad doesn't work after enabled - Lumpuhkan pilihan ini jika pad sentuh tidak berfungsi selepas dibenarkan - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Dasar Persendirian - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Kami sedar akan kepentingan maklumat peribadi anda. Oleh itu, dengan Dasar Persendirian kami, ia meliputi bagaimanakah kami kutip, guna, kongsi, pindah, dedah umum, dan simpan maklumat anda.</p><p>Anda boleh <a href="%1">klik di sini</a> untuk membaca dasar persendirian terkini kami dan/atau membaca dalam-talian di <a href="%1"> %1</a>. Pastikan anda membaca secara cermat dan fahami sepenuhnya amalan kami berkaitan privasi pengguna. Jika anda masih ada pertanyaan, sila hubungi kami di: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Kata laluan tidak boleh kosong - - - Password must have at least %1 characters - Kata laluan mesti sekurang-kurangnya %1 aksara - - - Password must be no more than %1 characters - Kata laluan mestilah tidak lebih daripada %1 aksara - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Kata laluan hanya boleh mengandungi abjad Inggeris (sensitif-kata), angka atau simbol khas (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Kata laluan mesti mengandungi abjad huruf besar, abjad huruf kecil, angka dan simbol (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Kata laluan mesti tidak mengandungi lebih daripada 4 aksara palindrome - - - Do not use common words and combinations as password - Jangan guna perkataan dan gabungan umum sebagai kata laluan - - - Create a strong password please - Sila cipta satu kata laluan yang kuat - - - It does not meet password rules - Ia tidak menepati peraturan kata laluan - - - - dccV23::RefreshRateWidget - - Refresh Rate - Kadar Segar Semula - - - Hz - Hz - - - Recommended - Disarankan - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Anda pasti mahu memadam akaun ini? - - - Delete account directory - Padam direktori akaun - - - Cancel - Batal - - - Delete - Padam - - - - dccV23::ResolutionWidget - - Resolution - Resolusi - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Lalai - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Disarankan - - - - dccV23::RotateWidget - - Rotation - Putaran - /display/Rotation - - - Standard - Piawai - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Monitor hanya menyokong penskalaan paparan 100% - - - Display Scaling - Penskalaan Paparan - - - - dccV23::SearchInput - - Search - Gelintar - - - - dccV23::SecondaryScreenDialog - - Brightness - Kecerahan - - - - dccV23::SecurityLevelItem - - Weak - Lemah - - - Medium - Sederhana - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Batal - - - Confirm - Sahkan - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Sunting - - - Done - Selesai - - - - dccV23::ShortCutSettingWidget - - System - Sistem - - - Window - Tetingkap - - - Workspace - Ruang Kerja - - - Assistive Tools - Alatan Bantuan - - - Custom Shortcut - Pintasan Suai - - - Restore Defaults - Pulih ke Lalai - - - Shortcut - Pintasan - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Sila Tetapkan Semula Pintasan - - - Cancel - Batal - - - Replace - Ganti - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Pintasan ini berkonflik dengan %1, klik untuk Ganti supaya pintasan ini berkesan serta-merta - - - - dccV23::ShortcutItem - - Enter a new shortcut - Masukkan satu pintasan baharu - - - - dccV23::SystemInfoModel - - available - tersedia - - - - dccV23::SystemInfoModule - - About This PC - Perihal Komputer Ini - - - Computer Name - Nama Komputer - - - systemInfo - - - - OS Name - - - - Version - Versi - - - Edition - - - - Type - Jenis - - - Authorization - Pengesahihan - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Lesen Edisi - - - End User License Agreement - Perjanjian Lesen Pengguna Akhir - - - Privacy Policy - Dasar Persendirian - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Maklumat Sistem - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Batal - - - Add - Tambah - - - Add System Language - Tambah Bahasa Sistem - - - - dccV23::SystemLanguageWidget - - Edit - Sunting - - - Language List - Senarai Bahasa - - - Add Language - - - - Done - Selesai - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Jangan Ganggu - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Pemberitahuan apl tidak akan ditunjukkan di atas meja dan bunyi akan disenyapkan, tetapi anda masih boleh melihat semua mesej di dalam pusat pemberitahuan. - - - When the screen is locked - Bila skrin dikunci - - - - dccV23::TimeSlotItem - - From - Daripada - - - To - Kepada - - - - dccV23::TouchScreenModule - - Touch Screen - Skrin Sentuh - - - Select your touch screen when connected or set it here. - Pilih skrin sentuh anda bila bersambung atau tetapkannya di sini. - - - Confirm - Sahkan - - - Cancel - Batal - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Kelajuan Penuding - - - Slow - Perlahan - - - Fast - Pantas - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Sertai Program Pengalaman Pengguna - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Tahun - - - Month - Bulan - - - Day - Hari - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Pengesahihan diperlukan untuk mengubah pelayan NTP - - - - DefAppModule - - Default Applications - Aplikasi Lalai - - - - DefAppPlugin - - Webpage - Laman Sesawang - - - Mail - Mel - - - Text - Teks - - - Music - Muzik - - - Video - Video - - - Picture - Gambar - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Batal - - - Next - Berikutnya - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Labuh - - - Multiple Displays - Paparan Berbilang - - - Show Dock - - - - Mode - Mod - - - Position - Kedudukan - - - Status - Status - - - Show recent apps in Dock - - - - Size - Saiz - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Mod fesyen - - - Efficient mode - Mod efisyen - - - Top - Teratas - - - Bottom - Bawah - - - Left - Kiri - - - Right - Kanan - - - Location - Lokasi - - - Keep shown - - - - Keep hidden - Kekal tersembunyi - - - Smart hide - Sembunyi pintar - - - Small - Kecil - - - Large - Besar - - - On screen where the cursor is - Atas skrin yang mana kursor berada - - - Only on main screen - Hanya dalam skrin utama - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Sunting - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Selesai - - - Add Face - - - - The name already exists - Nama sudah wujud - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Tambah Cap Jari - - - Cancel - Batal - - - Next - Berikutnya - - - - FingerInfoWidget - - Place your finger - Letak jari anda - - - Place your finger firmly on the sensor until you're asked to lift it - Letak jari anda di atas penderia sehingga anda disuruh mengangkatnya - - - Scan the edges of your fingerprint - Imbas hujung cap jari anda - - - Place the edges of your fingerprint on the sensor - Letak hujung cap jari anda di atas penderia - - - Lift your finger - Angkat jari anda - - - Lift your finger and place it on the sensor again - Angkat jari anda dan letak ia di atas penderia sekali lagi - - - Adjust the position to scan the edges of your fingerprint - Laras kedudukan untuk mengimbas hujung cap jari anda - - - Lift your finger and do that again - Angkat jari anda dan buat sekali lagi - - - Fingerprint added - Cap jari ditambah - - - - FingerWidget - - Edit - Sunting - - - Fingerprint Password - Kata Laluan Cap Jari - - - You can add up to 10 fingerprints - Anda boleh tambah sehingga 10 cap jari - - - Done - Selesai - - - The name already exists - Nama sudah wujud - - - Add Fingerprint - Tambah Cap Jari - - - - GeneralModule - - General - Am - - - Balanced - Seimbang - - - Balance Performance - - - - High Performance - Prestasi Tinggi - - - Power Saver - Jimat Kuasa - - - Power Plans - Pelan Kuasa - - - Power Saving Settings - Tetapan Penjimatan Kuasa - - - Auto power saving on low battery - Penjimatan kuasa automatik bila kuasa bateri rendah - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Penjimatan kuasa automatik pada bateri - - - Wakeup Settings - Tetapan Bangun - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Tidak boleh mula atau tamat dengan tanda sempang - - - 1~63 characters please - 1~63 aksara sahaja - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Sunting - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Selesai - - - Add Iris - - - - The name already exists - Nama sudah wujud - - - Iris - - - - - KeyLabel - - None - Tiada - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - Peranti Input - - - Automatic Noise Suppression - Penindasan HIngar Automatik - - - Input Volume - Volum Input - - - Input Level - Aras Input - - - - PersonalizationDesktopModule - - Desktop - Desktop - - - Window - Tetingkap - - - Window Effect - Kesan Tetingkap - - - Window Minimize Effect - Kesan Minimum Tetingkap - - - Transparency - Kelutsinaran - - - Rounded Corner - Bucu Terbundar - - - Scale - Skala - - - Magic Lamp - Lampu Ajaib - - - Small - Kecil - - - Middle - - - - Large - Besar - - - - PersonalizationModule - - Personalization - Penampilan - - - - PersonalizationThemeList - - Cancel - Batal - - - Save - Simpan - - - Light - Ringan - - - Dark - Gelap - - - Auto - Auto - - - Default - Lalai - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - Warna Serlah - - - Icon Settings - - - - Icon Theme - Tema Ikon - - - Cursor Theme - Tema Kursor - - - Text Settings - - - - Font Size - Saiz Fon - - - Standard Font - Fon Piawai - - - Monospaced Font - Fon Bermonospace - - - Light - Ringan - - - Auto - Auto - - - Dark - Gelap - - - - PersonalizationThemeWidget - - Light - Ringan - General - /personalization/General - - - Dark - Gelap - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Lalai - - - - PersonalizationWorker - - Custom - Suai - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN untuk bersambung dengan peranti Bluetooth ialah: - - - Cancel - Batal - - - Confirm - Sahkan - - - - PowerModule - - Power - Kuasa - - - Battery low, please plug in - Kuasa bateri lemah, sila palamkan kuasa - - - Battery critically low - Kuasa bateri sangat rendah - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Kalendar - - - Screen Capture - - - - - QObject - - Control Center - Pusat Kawalan - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Diaktifkan - - - View - Lihat - - - To be activated - Untuk diaktifkan - - - Activate - Aktifkan - - - Expired - Luput - - - In trial period - Dalam tempoh percubaan - - - Trial expired - Percubaan telah luput - - - Touch Screen Settings - Tetapan Skrin Sentuh - - - The settings of touch screen changed - Tetapan skrin sentuh berubah - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Batal - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Sistem anda tidak disahihkan, sila aktifkan dahulu - - - Update successful - Kemas kini berjaya - - - Failed to update - Gagal dikemaskinikan - - - - SearchInput - - Search - Gelintar - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Kesan Bunyi - - - - SoundModel - - Boot up - Butkan - - - Shut down - Matikan - - - Log out - Daftar keluar - - - Wake up - Bangun - - - Volume +/- - Volum +/- - - - Notification - Pemberitahuan - - - Low battery - Bateri rendah - - - Send icon in Launcher to Desktop - Hantar ikon dalam Pelancar ke Desktop - - - Empty Trash - Kosongkan Tong Sampah - - - Plug in - Palam masuk - - - Plug out - Palam keluar - - - Removable device connected - Peranti boleh tanggal bersambung - - - Removable device removed - Peranti boleh tanggal dikeluarkan - - - Error - Ralat - - - - SoundModule - - Sound - Bunyi - - - - SoundPlugin - - Output - Output - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Input - - - Sound Effects - Kesan Bunyi - - - Devices - Peranti - - - Input Devices - Peranti Input - - - Output Devices - Peranti Output - - - - SpeakerPage - - Output Device - Peranti output - - - Mode - Mod - - - Output Volume - Volum Output - - - Volume Boost - Galak Volum - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Imbangan Kiri/Kanan - - - Left - Kiri - - - Right - Kanan - - - - TimeSettingModule - - Time Settings - Tetapan Waktu - - - Time - Masa - - - Auto Sync - Auto Segerak - - - Reset - Tetap semula - - - Save - Simpan - - - Server - Pelayan - - - Address - Alamat - - - Required - Diperlukan - - - Customize - Suaikan - - - Year - Tahun - - - Month - Bulan - - - Day - Hari - - - - TimeZoneChooser - - Cancel - Batal - - - Confirm - Sahkan - - - Add Timezone - Tambah Zon Waktu - - - Add - Tambah - - - Change Timezone - Ubah Zon Waktu - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Kembali - - - Save - Simpan - - - - TimezoneItem - - Tomorrow - Esok - - - Yesterday - Semalam - - - Today - Hari ini - - - %1 hours earlier than local - %1 jam lebih awal dari setempat - - - %1 hours later than local - %1 jam lebih lambat berbanding setempat - - - - TimezoneModule - - Timezone List - Senarai Zon Waktu - - - System Timezone - Zon Waktu Sistem - - - Add Timezone - Tambah Zon Waktu - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Batal - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - Periksa Lagi - - - Update failed: insufficient disk space - Kemas kini gagal: ruang cakera tidak mencukupi - - - Dependency error, failed to detect the updates - Ralat dependensi, gagal mengesan kemaskini - - - Restart the computer to use the system and the applications properly - Mulakan semula komputer supaya dapat menggunakan sistem dan aplikasi dengan baik - - - Network disconnected, please retry after connected - Rangkaian terputus, cuba sekali lagi selepas bersambung - - - Your system is not authorized, please activate first - Sistem anda tidak disahihkan, sila aktifkan dahulu - - - This update may take a long time, please do not shut down or reboot during the process - Kemas kini ini mengambil masa yang lama, jangan matikan atau but semula ketika proses ini masih berlangsung - - - Updates Available - - - - Current Edition - Edisi Semasa - - - Updating... - Mengemas kini... - - - Update All - - - - Last checking time: - Masa pemeriksaan terakhir: - - - Your system is up to date - Sistem anda sudah dikemaskinikan - - - Check for Updates - Periksa Kemas Kini - - - Checking for updates, please wait... - Memeriksa kemas kini, tunggu sebentar... - - - The newest system installed, restart to take effect - Sistem terbaharu dipasang, mula semula supaya ia berkesan - - - %1% downloaded (Click to pause) - %1 dimuat turun (Klik untuk jeda) - - - %1% downloaded (Click to continue) - %1 dimuat turun (Klik untuk teruskan) - - - Your battery is lower than 50%, please plug in to continue - Kuasa bateri anda lebih rendah dari 50%, sila palamkan untuk diteruskan - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Sila pastikan kuasa mencukupi untuk memulakan semula, dan matikan atau tanggalkan pemalam kuasa komputer anda. - - - Size - Saiz - - - - UpdateModule - - Updates - Kemas Kini - - - - UpdatePlugin - - Check for Updates - Periksa Kemas Kini - - - - UpdateSettingItem - - Insufficient disk space - Ruang cakera tidak mencukupi - - - Update failed: insufficient disk space - Kemas kini gagal: ruang cakera tidak mencukupi - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Sistem terbaharu dipasang, mula semula supaya ia berkesan - - - Waiting - Menunggu - - - Backing up - - - - System backup failed - Sandar sistem gagal - - - Release date: - - - - Server - Pelayan - - - Desktop - Desktop - - - Version - Versi - - - - UpdateSettingsModule - - Update Settings - Tetapan Kemas Kini - - - System - Sistem - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - Auto Muat Turun Kemas Kini - - - Switch it on to automatically download the updates in wireless or wired network - Hidupkannya untuk muat turun secara automatik dengan rangkaian tanpa wayar atau berwayar - - - Auto Install Updates - - - - Updates Notification - Pemberitahuan Kemas Kini - - - Clear Package Cache - Kosongkan Cache Pakej - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Kemas Kini Sistem - - - Security Updates - Kemas Kini Keselamatan - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Edisi Semasa - - - - UpdateWorker - - System Updates - Kemas Kini Sistem - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - Kemas Kini Keselamatan - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Kuasa Bateri - - - Never - Tidak sesekali - - - Shut down - Matikan - - - Suspend - Tangguh - - - Hibernate - Hibernasi - - - Turn off the monitor - Matikan monitor - - - Do nothing - Jangan buat apa-apa - - - 1 Minute - 1 Minit - - - %1 Minutes - %1 Minit - - - 1 Hour - 1 Jam - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Kunci skrin selepas - - - Computer suspends after - - - - Computer will suspend after - Komputer akan ditangguh selepas - - - When the lid is closed - Bila penutup komputer ditutup - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Aras kuasa bateri rendah - - - Auto suspend battery level - Aras kuasa bateri ditangguh automatik - - - Battery Management - - - - Display remaining using and charging time - Papar baki penggunaan dan masa mengecas - - - Maximum capacity - Kapasiti maksimum - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Dipalam masuk - - - 1 Minute - 1 Minit - - - %1 Minutes - %1 Minit - - - 1 Hour - 1 Jam - - - Never - Tidak sesekali - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Kunci skrin selepas - - - Computer suspends after - - - - When the lid is closed - Bila penutup komputer ditutup - - - When the power button is pressed - - - - Shut down - Matikan - - - Suspend - Tangguh - - - Hibernate - Hibernasi - - - Turn off the monitor - Matikan monitor - - - Show the shutdown Interface - - - - Do nothing - Jangan buat apa-apa - - - - WacomModule - - Drawing Tablet - Tablet Lukis - - - Mode - Mod - - - Pressure Sensitivity - Kepekaan Tekanan - - - Pen - Pen - - - Mouse - Tetikus - - - Light - Ringan - - - Heavy - Berat - - - - main - - Control Center provides the options for system settings. - Pusat Kawalan menyediakan pilihan untuk tetapan sistem. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_nb.ts b/dcc-old/translations/dde-control-center_nb.ts deleted file mode 100644 index ca0d36bfda..0000000000 --- a/dcc-old/translations/dde-control-center_nb.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Koble til - - - Disconnect - Koble fra - - - Rename - Endre navn - - - Send Files - - - - Ignore this device - - - - Connecting - Kobler til - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - Åpne fil på skrivebord - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Avbryt - - - Next - Neste - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Ferdig - - - Failed to enroll your face - - - - Try Again - - - - Close - Lukk - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Avbryt - - - Next - Neste - - - Iris enrolled - - - - Done - Ferdig - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Fingeravtrykk - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Tilkoblet - - - Not connected - Frakoblet - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Avbryt - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Avbryt - - - Confirm - button - Bekreft - - - - dccV23::AccountSpinBox - - Always - Alltid - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Brukernavn - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - Automatisk innlogging - - - Login Without Password - Innlogging uten passord - - - Validity Days - - - - Group - Gruppe - - - The full name is too long - - - - Standard User - - - - Administrator - Administrator - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Avbryt - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Vellykket fjerning av vert fra domenets server - - - Your host joins the domain server successfully - Vellykket tilkobling av din vert mot domenets server - - - Your host failed to leave the domain server - Din vert klarte ikke å forlate domenets server - - - Your host failed to join the domain server - Din vert klarte ikke å koble til domenets server - - - AD domain settings - Active Directory innstillinger - - - Password not match - Passord stemmer ikke - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Avbryt - - - Save - Lagre - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Bilder - - - - dccV23::BootWidget - - Updating... - Oppdaterer... - - - Startup Delay - Oppstartsforsinkelse - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Skru på tema for å se det i oppstartsmenyen - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - Oppstartsmeny - - - Change GRUB password - - - - Username: - Brukernavn: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Påkrevd - - - Cancel - button - Avbryt - - - Confirm - button - Bekreft - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - Lysstyrke - - - Color Temperature - - - - Auto Brightness - Auto Lysstyrke - - - Night Shift - Nattskift - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - Oppstartsmeny - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Gruppe - - - Cancel - Avbryt - - - Create - Opprett - - - New User - - - - User Type - - - - Username - Brukernavn - - - Full Name - - - - Password - Passord - - - Repeat Password - Gjenta passord - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - Administrator - - - Customized - - - - Required - Påkrevd - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Bilder - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Legg til egendefinert snarvei - - - Name - Navn - - - Required - Påkrevd - - - Command - Kommando - - - Cancel - Avbryt - - - Add - Legg til - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Denne snarveien er i konflikt med %1, klikk på "Legg til" for å aktivere denne snarveien - - - - dccV23::CustomEdit - - Required - Påkrevd - - - Cancel - Avbryt - - - Save - Lagre - - - Shortcut - Snarvei - - - Name - Navn - - - Command - Kommando - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Denne snarveien er i konflikt med %1, klikk på "Legg til" for å aktivere denne snarveien - - - - dccV23::CustomItem - - Shortcut - Snarvei - - - Please enter a shortcut - Vennligst tast inn en snarvei - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Neste - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Avbryt - - - Restart Now - Restart nå - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Skjerm - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Dobbeltklikk test - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Gjenta Forsinkelse - - - Short - Kort - - - Long - Lang - - - Repeat Rate - Gjenta Hastighet - - - Slow - Sakte - - - Fast - Fort - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - Caps Lock prompt - - - - dccV23::GeneralSettingWidget - - Left Hand - Venstre hånd - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Dobbeltklikk Hastighet - - - Slow - Sakte - - - Fast - Fort - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Tastaturoppsett - - - Edit - Rediger - - - Add Keyboard Layout - Legge til Keyboard Oppsett - - - Done - Ferdig - - - - dccV23::KeyboardLayoutDialog - - Cancel - Avbryt - - - Add - Legg til - - - Add Keyboard Layout - Legge til Keyboard Oppsett - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tastatur og Språk - - - Keyboard - Tastatur - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Tastaturoppsett - - - Language - Språk - - - Shortcuts - Hurtigtaster - - - - dccV23::MainWindow - - Help - Hjelp - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Nåværende passord - - - Forgot password? - - - - New Password - Nytt Passord - - - Repeat Password - Gjenta passord - - - Password Hint - - - - Cancel - Avbryt - - - Save - Lagre - - - Passwords do not match - - - - Required - Påkrevd - - - Optional - Valgfri - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Feil passord - - - New password should differ from the current one - Nytt passord må være ulikt det gamle - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Mus - - - General - Generel - - - Touchpad - Styreplate - - - TrackPoint - Styrekule - - - - dccV23::MouseSettingWidget - - Pointer Speed - Peker Hastighet - - - Mouse Acceleration - Pekerhastighet - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Naturlig Rulling - - - Slow - Sakte - - - Fast - Fort - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Modus - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Kopi - - - Extend - Utvide - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notifikasjon - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Slett kontoens mappe - - - Cancel - Avbryt - - - Delete - Slett - - - - dccV23::ResolutionWidget - - Resolution - Oppløsning - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Standard - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - Rotasjon - /display/Rotation - - - Standard - Standard - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - Skjermskalering - - - - dccV23::SearchInput - - Search - Søk - - - - dccV23::SecondaryScreenDialog - - Brightness - Lysstyrke - - - - dccV23::SecurityLevelItem - - Weak - Sva - - - Medium - Medium - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Avbryt - - - Confirm - Bekreft - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Rediger - - - Done - Ferdig - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - Vindu - - - Workspace - Arbeidsområde - - - Assistive Tools - - - - Custom Shortcut - Egendefinert snarvei - - - Restore Defaults - Gjenopprett Standard - - - Shortcut - Snarvei - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Vennligst nullstill snarvei - - - Cancel - Avbryt - - - Replace - Erstatt - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Denne snarveien er i konflikt med %1, klikk på "Legg til" for å aktivere denne snarveien allikevel - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - Datamaskin Navn - - - systemInfo - - - - OS Name - - - - Version - Versjon - - - Edition - - - - Type - Type - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Versjonslisens: - - - End User License Agreement - Sluttbrukeravtale - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Avbryt - - - Add - Legg til - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Rediger - - - Language List - - - - Add Language - - - - Done - Ferdig - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Bekreft - - - Cancel - Avbryt - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Peker Hastighet - - - Slow - Sakte - - - Fast - Fort - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - År - - - Month - Måned - - - Day - Dag - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Standardprogrammer - - - - DefAppPlugin - - Webpage - Nettside - - - Mail - E-post - - - Text - Tekst - - - Music - Musikk - - - Video - Video - - - Picture - Bilde - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Avbryt - - - Next - Neste - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - Modus - - - Position - Posisjon - - - Status - Status - - - Show recent apps in Dock - - - - Size - Størrelse - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Motemodus - - - Efficient mode - Effektivitetsmodus - - - Top - Toppen - - - Bottom - Bunn - - - Left - Venstre - - - Right - Høyre - - - Location - Lokasjon - - - Keep shown - - - - Keep hidden - Behold skjult - - - Smart hide - Smartskjul - - - Small - Liten - - - Large - Stor - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Rediger - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Ferdig - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Legg til fingeravtrykk - - - Cancel - Avbryt - - - Next - Neste - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Rediger - - - Fingerprint Password - Fingeravtrykk - - - You can add up to 10 fingerprints - - - - Done - Ferdig - - - The name already exists - - - - Add Fingerprint - Legg til fingeravtrykk - - - - GeneralModule - - General - Generel - - - Balanced - Normal - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Rediger - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Ferdig - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Ingen - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Inngangs Volum - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Skrivebord - - - Window - Vindu - - - Window Effect - Vinduseffekt - - - Window Minimize Effect - - - - Transparency - Transparens - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Liten - - - Middle - - - - Large - Stor - - - - PersonalizationModule - - Personalization - Personalisering - - - - PersonalizationThemeList - - Cancel - Avbryt - - - Save - Lagre - - - Light - Lys - - - Dark - - - - Auto - Auto - - - Default - Standard - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Tema for ikoner - - - Cursor Theme - Tema for musepeker - - - Text Settings - - - - Font Size - Skriftstørrelse - - - Standard Font - Standard-font - - - Monospaced Font - Monospaced-font - - - Light - Lys - - - Auto - Auto - - - Dark - - - - - PersonalizationThemeWidget - - Light - Lys - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Standard - - - - PersonalizationWorker - - Custom - Egendefinert - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN for å koble til Bluetooth enhet: - - - Cancel - Avbryt - - - Confirm - Bekreft - - - - PowerModule - - Power - Strøm - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Kalender - - - Screen Capture - - - - - QObject - - Control Center - Kontrollsenter - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - Vis - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Avbryt - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - Oppdatering feilet - - - - SearchInput - - Search - Søk - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Lydeffekter - - - - SoundModel - - Boot up - Start opp - - - Shut down - Slå av - - - Log out - Logg ut - - - Wake up - Våkne - - - Volume +/- - Volum +/- - - - Notification - Notifikasjon - - - Low battery - Lav batteri - - - Send icon in Launcher to Desktop - Send ikon i Launcher til Skrivebord - - - Empty Trash - Tøm Papirkurv - - - Plug in - Plugg inn - - - Plug out - Plugg ut - - - Removable device connected - Fjernbar enhet tilkoblet - - - Removable device removed - Fjernbar enhet fjernet - - - Error - Feil - - - - SoundModule - - Sound - Lyd - - - - SoundPlugin - - Output - Utganger - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Inngang - - - Sound Effects - Lydeffekter - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Modus - - - Output Volume - Utgangs Volum - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Venstre/Høyre Balanse - - - Left - Venstre - - - Right - Høyre - - - - TimeSettingModule - - Time Settings - Tidsinnstillinger - - - Time - - - - Auto Sync - - - - Reset - Reset - - - Save - Lagre - - - Server - Server - - - Address - Adresse - - - Required - Påkrevd - - - Customize - - - - Year - År - - - Month - Måned - - - Day - Dag - - - - TimeZoneChooser - - Cancel - Avbryt - - - Confirm - Bekreft - - - Add Timezone - Legg til tidssone - - - Add - Legg til - - - Change Timezone - Endre tidssone - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Tilbakestille - - - Save - Lagre - - - - TimezoneItem - - Tomorrow - I morgen - - - Yesterday - I går - - - Today - I dag - - - %1 hours earlier than local - %1 timer forran lokal tid - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Liste over tiddsoner - - - System Timezone - - - - Add Timezone - Legg til tidssone - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Avbryt - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Avhengighetsfeil, klarte ikke å finne oppdateringene - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - Nettverk frakoblet, vennligst prøv på nytt etter å ha gjenopprettet forbindelse - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - Denne oppdateringen kan ta lang tid. Vennligst ikke skru av eller gjør en omstart mens oppdateringen pågår. - - - Updates Available - - - - Current Edition - - - - Updating... - Oppdaterer... - - - Update All - - - - Last checking time: - - - - Your system is up to date - Systemet er oppdatert - - - Check for Updates - - - - Checking for updates, please wait... - Søker etter oppdateringer, vennligst vent... - - - The newest system installed, restart to take effect - Nyeste systemoppdateringer installert, start maskinen på nytt for å ta dem i bruk - - - %1% downloaded (Click to pause) - %1% nedlastet (Trykk for å pause) - - - %1% downloaded (Click to continue) - %1% lastet ned (Klikk for å fortsette) - - - Your battery is lower than 50%, please plug in to continue - Batteriet har mindre enn 50% gjenværende strøm, vennligst koble til strømforsyning for å fortsette - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Vennligst sørg for at der er nok strøm på batteriet for å utføre omstart, og ikke slå av eller koble fra strømforsyningen - - - Size - Størrelse - - - - UpdateModule - - Updates - Oppdateringer - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Nyeste systemoppdateringer installert, start maskinen på nytt for å ta dem i bruk - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Server - - - Desktop - Skrivebord - - - Version - Versjon - - - - UpdateSettingsModule - - Update Settings - Oppdateringsinnstillinger - - - System - System - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - Skru på for å automatisk laste ned oppdateringer via trådløst eller kablet nettverk - - - Auto Install Updates - - - - Updates Notification - Oppdateringsnotifikasjon - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Aldri - - - Shut down - Slå av - - - Suspend - Suspendere - - - Hibernate - Dvale - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 minutt - - - %1 Minutes - %1 minutter - - - 1 Hour - 1 time - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - Datamaskinen vil bli slukket etter - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 minutt - - - %1 Minutes - %1 minutter - - - 1 Hour - 1 time - - - Never - Aldri - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Slå av - - - Suspend - Suspendere - - - Hibernate - Dvale - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Modus - - - Pressure Sensitivity - Trykksensitivitet - - - Pen - Penn - - - Mouse - Mus - - - Light - Lys - - - Heavy - Tung - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ne.ts b/dcc-old/translations/dde-control-center_ne.ts deleted file mode 100644 index d197eded95..0000000000 --- a/dcc-old/translations/dde-control-center_ne.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - नजिकैको उपकरण फेला पार्नका लागि ब्लुटुथ सक्षम गर्नुहोस् (लाउडस्पीकर, कीबोर्ड, माउस) - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - विच्छेद - - - Rename - - - - Send Files - - - - Ignore this device - यो उपकरण वास्ता नगर्नुहोस - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - डेस्कटपको फाइल खोल्नुहोस् - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - रद्द गर्नुहोस् - - - Next - अर्को - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - सम्पन्न भयो - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - रद्द गर्नुहोस् - - - Next - अर्को - - - Iris enrolled - - - - Done - सम्पन्न भयो - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - फिंगरप्रिन्ट - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - जोडिएको - - - Not connected - जोडिएको छैन - - - - BluetoothModule - - Bluetooth - ब्लुटूथ - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - रद्द गर्नुहोस् - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - रद्द गर्नुहोस् - - - Confirm - button - पक्का गर्नु - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - प्रयोगकर्तानाम - - - Change Password - गोप्य शब्द बदल्नुहोस - - - Delete User - - - - User Type - - - - Auto Login - स्वत: लगइन - - - Login Without Password - गोप्य शब्द बिना लगइन - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - पुरा नाम - - - Go to Settings - - - - Cancel - रद्द गर्नुहोस् - - - OK - ठिक छ - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - AD डोमेन सेटिंग्स - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - रद्द गर्नुहोस् - - - Save - सुरक्षित गर्नुहोस् - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - इमेज - - - - dccV23::BootWidget - - Updating... - अद्यावधिक/अपडेट हुँदैछ - - - Startup Delay - स्टार्टअप ढिलाइ - - - Theme - विषयवस्तु /थिम - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - कम्प्युटरको मुख्य प्रणाली छान्न विकल्प क्लिक गर्नुहोस्, र पृष्ठभूमि बदल्नको लागी तस्वीर ड्र्याग गर्नुहोस् र ड्रप गर्नुहोस्। - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - कम्प्युटर शुरु हुंदा तस्वीर देखाउन थीम सुचारु गर्नुहोस - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - गोप्य शब्द बदल्नुहोस - - - Boot Menu - बूट मेनु - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - आवश्यक छ - - - Cancel - button - रद्द गर्नुहोस् - - - Confirm - button - पक्का गर्नु - - - Password cannot be empty - गोप्य शब्द खाली हुन सक्दैन - - - Passwords do not match - गोप्य शब्द मिलेन - - - - dccV23::BrightnessWidget - - Brightness - चम्किलोपन - - - Color Temperature - - - - Auto Brightness - स्वत: चमक - - - Night Shift - रात्री शिफ्ट - - - The screen hue will be auto adjusted according to your location - स्क्रिन को रङ्ग् तपाईंको स्थान अनुसार स्वत: समायोजित हुनेछ - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - सामान्य व्यवस्थापन - - - Boot Menu - बूट मेनु - - - Developer Mode - - - - User Experience Program - प्रयोगकर्ता अनुभव कार्यक्रम - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - सहमत हुनुहोस र प्रयोगकर्ता अनुभव कार्यक्रम मा सामेल हुनुहोस् - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - रद्द गर्नुहोस् - - - Create - सिर्जना गर्नुहोस् - - - New User - - - - User Type - - - - Username - प्रयोगकर्तानाम - - - Full Name - पुरा नाम - - - Password - पासवर्ड - - - Repeat Password - गोप्य शब्द दोहोर्याउँनुहोस् - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - गोप्य शब्द मिलेन - - - Standard User - - - - Administrator - - - - Customized - - - - Required - आवश्यक छ - - - optional - वैकल्पिक - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - प्रयोगकर्ता को नाम 3 देखि 32 अक्षर को हुनुपर्छ - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - इमेज - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - कस्टम सर्टकट थप्नुहोस् - - - Name - नाम - - - Required - आवश्यक छ - - - Command - आदेश - - - Cancel - रद्द गर्नुहोस् - - - Add - थप्नुहोस् - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - dccV23::CustomEdit - - Required - आवश्यक छ - - - Cancel - रद्द गर्नुहोस् - - - Save - सुरक्षित गर्नुहोस् - - - Shortcut - सर्टकट - - - Name - नाम - - - Command - आदेश - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - dccV23::CustomItem - - Shortcut - सर्टकट - - - Please enter a shortcut - कृपया सर्टकट प्रविष्ट गर्नुहोस् - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - अर्को - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - रद्द गर्नुहोस् - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - डिस्प्ले - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - जांच को लागि डबल क्लिक गर्नुहोस् - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - विलम्ब दोहोर्याउनुहोस् - - - Short - छोटो - - - Long - लामो - - - Repeat Rate - दोहोराउनु को दर - - - Slow - ढिलो - - - Fast - छिटो - - - Test here - यहाँ परीक्षण गर्नुहोस् - - - Numeric Keypad - संख्यात्मक कीप्याड् - - - Caps Lock Prompt - केप्स लक प्रम्प्ट - - - - dccV23::GeneralSettingWidget - - Left Hand - बायाँ हात - - - Disable touchpad while typing - टाइप गर्दा टचप्याड असक्षम पार्नुहोस् - - - Scrolling Speed - स्क्रोल गति - - - Double-click Speed - डबल-क्लिक स्पीड - - - Slow - ढिलो - - - Fast - छिटो - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - किबोर्ड लेआउट - - - Edit - सम्पादन गर्नुहोस् - - - Add Keyboard Layout - किबोर्ड लेआउट थप्नुहोस् - - - Done - सम्पन्न भयो - - - - dccV23::KeyboardLayoutDialog - - Cancel - रद्द गर्नुहोस् - - - Add - थप्नुहोस् - - - Add Keyboard Layout - किबोर्ड लेआउट थप्नुहोस् - - - - dccV23::KeyboardPlugin - - Keyboard and Language - किबोर्ड र भाषा - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - किबोर्ड लेआउट - - - Language - - - - Shortcuts - सर्टकटहरू - - - - dccV23::MainWindow - - Help - सयोग - - - - dccV23::ModifyPasswdPage - - Change Password - गोप्य शब्द बदल्नुहोस - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - हालको गोप्य शब्द - - - Forgot password? - - - - New Password - नया गोप्य शब्द - - - Repeat Password - गोप्य शब्द दोहोर्याउँनुहोस् - - - Password Hint - - - - Cancel - रद्द गर्नुहोस् - - - Save - सुरक्षित गर्नुहोस् - - - Passwords do not match - गोप्य शब्द मिलेन - - - Required - आवश्यक छ - - - Optional - वैकल्पिक - - - Password cannot be empty - गोप्य शब्द खाली हुन सक्दैन - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - गलत गोप्य शब्द - - - New password should differ from the current one - नयाँ पासवर्ड हालैबाट फरक हुनुपर्दछ - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - माउस - - - General - सामान्य - - - Touchpad - टचप्याड - - - TrackPoint - चिह्न बिंदु - - - - dccV23::MouseSettingWidget - - Pointer Speed - पोइंटर को गति - - - Mouse Acceleration - माउस एक्सेलेरेशन - - - Disable touchpad when a mouse is connected - माउस जोडिंदा टचप्याड असक्षम गर्नुहोस् - - - Natural Scrolling - प्राकृतिक स्क्रोलिङ - - - Slow - ढिलो - - - Fast - छिटो - - - - dccV23::MultiScreenWidget - - Multiple Displays - बहु प्रदर्शन - /display/Multiple Displays - - - Mode - मोड - /display/Mode - - - Main Screen - मुख्य स्क्रिन - /display/Main Scree - - - Duplicate - नक्कल - - - Extend - बढाउनुहोस् - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - गोप्य शब्द खाली हुन सक्दैन - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - रिफ़्रेश् दर - - - Hz - हर्ज - - - Recommended - सिफारिस गरिएको - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - खाता डाइरेक्टरी मेट्नुहोस् - - - Cancel - रद्द गर्नुहोस् - - - Delete - मेटाउनुहोस् - - - - dccV23::ResolutionWidget - - Resolution - रिजोल्युसन - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - सिफारिस गरिएको - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - द्रिश्य आकार - - - - dccV23::SearchInput - - Search - खोजी गर्नुहोस् - - - - dccV23::SecondaryScreenDialog - - Brightness - चम्किलोपन - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - मेडियम - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - रद्द गर्नुहोस् - - - Confirm - पक्का गर्नु - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - सम्पादन गर्नुहोस् - - - Done - सम्पन्न भयो - - - - dccV23::ShortCutSettingWidget - - System - सिस्टम / प्रणाली - - - Window - विन्डो - - - Workspace - कार्य क्षेत्र - - - Assistive Tools - - - - Custom Shortcut - कस्टम सर्टकट - - - Restore Defaults - फेरी पहिलाकै अवस्था मा लैजानुहोस् - - - Shortcut - सर्टकट - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - कृपया सर्टकट रिसेट गर्नुहोस् - - - Cancel - रद्द गर्नुहोस् - - - Replace - बदल्नुहोस् - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - संस्करण लाइसेन्स - - - End User License Agreement - अन्त्य प्रयोगकर्ता इजाजत पत्र सम्झौता / EULA - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - प्रणाली जानकारी - - - - dccV23::SystemLanguageSettingDialog - - Cancel - रद्द गर्नुहोस् - - - Add - थप्नुहोस् - - - Add System Language - सिस्टम भाषा / प्रणाली भाषा थप्नुहोस् - - - - dccV23::SystemLanguageWidget - - Edit - सम्पादन गर्नुहोस् - - - Language List - भाषा सुचि - - - Add Language - - - - Done - सम्पन्न भयो - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - पक्का गर्नु - - - Cancel - रद्द गर्नुहोस् - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - पोइंटर को गति - - - Slow - ढिलो - - - Fast - छिटो - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - प्रयोगकर्ता अनुभव कार्यक्रम मा सामेल हुनुहोस - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - वर्ष - - - Month - महिना - - - Day - दिन - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - पूर्वनिर्धारित अनुप्रयोगहरू - - - - DefAppPlugin - - Webpage - वेबपृष्ठ - - - Mail - चिठी पत्र - - - Text - Text - - - Music - संगीत - - - Video - भिडियो - - - Picture - चित्र - - - Terminal - टर्मिनल - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - रद्द गर्नुहोस् - - - Next - अर्को - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - बहु प्रदर्शन - - - Show Dock - - - - Mode - मोड - - - Position - - - - Status - स्थिती - - - Show recent apps in Dock - - - - Size - आकार - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - माथी - - - Bottom - तल - - - Left - बाँया - - - Right - दाँया - - - Location - स्थान - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - सानो - - - Large - लार्ज - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - सम्पादन गर्नुहोस् - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - सम्पन्न भयो - - - Add Face - - - - The name already exists - नाम पहिल्यै अवस्थित छ - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - फिंगरप्रिन्ट थप्नुहोस् - - - Cancel - रद्द गर्नुहोस् - - - Next - अर्को - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - फिंगरप्रिन्ट थपियो - - - - FingerWidget - - Edit - सम्पादन गर्नुहोस् - - - Fingerprint Password - फिंगरप्रिन्ट पासवर्ड - - - You can add up to 10 fingerprints - - - - Done - सम्पन्न भयो - - - The name already exists - नाम पहिल्यै अवस्थित छ - - - Add Fingerprint - फिंगरप्रिन्ट थप्नुहोस् - - - - GeneralModule - - General - सामान्य - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - सम्पादन गर्नुहोस् - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - सम्पन्न भयो - - - Add Iris - - - - The name already exists - नाम पहिल्यै अवस्थित छ - - - Iris - - - - - KeyLabel - - None - कुनै पनि होइन - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - आगत भोल्युम - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - विन्डो - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - सानो - - - Middle - - - - Large - लार्ज - - - - PersonalizationModule - - Personalization - वैयक्तिकरण - - - - PersonalizationThemeList - - Cancel - रद्द गर्नुहोस् - - - Save - सुरक्षित गर्नुहोस् - - - Light - - - - Dark - - - - Auto - स्वत: - - - Default - - - - - PersonalizationThemeModule - - Theme - विषयवस्तु /थिम - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - स्वत: - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - स्वत: - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - ब्लुटुथ उपकरण जडान गर्न पिन: - - - Cancel - रद्द गर्नुहोस् - - - Confirm - पक्का गर्नु - - - - PowerModule - - Power - पावर - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - माइक्रोफ़ोन - - - User Folders - - - - Calendar - क्यालेन्डर - - - Screen Capture - - - - - QObject - - Control Center - नियन्त्रण केन्द्र - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - रद्द गर्नुहोस् - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - अपडेट गर्न असफल भयो - - - - SearchInput - - Search - खोजी गर्नुहोस् - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - ध्वनि प्रभाव - - - - SoundModel - - Boot up - - - - Shut down - बन्द गर्नुहोस् - - - Log out - बाहिर निस्कनुहोस् - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - ध्वनि/आवाज - - - - SoundPlugin - - Output - आउटपुट - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - इनपुट - - - Sound Effects - ध्वनि प्रभाव - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - मोड - - - Output Volume - आउटपुट भोल्यूम - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - बाँया / दायाँ ब्यालेन्स - - - Left - बाँया - - - Right - दाँया - - - - TimeSettingModule - - Time Settings - समय सेटिंग्स - - - Time - - - - Auto Sync - स्वचालित सिंक(Sync) - - - Reset - - - - Save - सुरक्षित गर्नुहोस् - - - Server - सर्भर - - - Address - ठेगाना - - - Required - आवश्यक छ - - - Customize - अनुकूलन गर्नुहोस् - - - Year - वर्ष - - - Month - महिना - - - Day - दिन - - - - TimeZoneChooser - - Cancel - रद्द गर्नुहोस् - - - Confirm - पक्का गर्नु - - - Add Timezone - समय क्षेत्र थप्नुहोस् - - - Add - थप्नुहोस् - - - Change Timezone - समय क्षेत्र परिवर्तन गर्नुहोस् - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - सुरक्षित गर्नुहोस् - - - - TimezoneItem - - Tomorrow - भोलि - - - Yesterday - हिजो - - - Today - आज - - - %1 hours earlier than local - % 1 घण्टा स्थानीय भन्दा बढी भयो - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - समयक्षेत्र सूची - - - System Timezone - प्रणाली समय क्षेत्र - - - Add Timezone - समय क्षेत्र थप्नुहोस् - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - रद्द गर्नुहोस् - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - सञ्जाल/नेटवर्क विच्छेदन गरियो, कृपया जडान पछि पुनः प्रयास गर्नुहोस् - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - अद्यावधिक/अपडेट हुँदैछ - - - Update All - - - - Last checking time: - - - - Your system is up to date - तपाईको प्रणाली नया छ - - - Check for Updates - - - - Checking for updates, please wait... - अद्यावधिकहरूको लागि जाँच गर्दै, कृपया पर्खनुहोस् ... - - - The newest system installed, restart to take effect - नयाँ प्रणाली स्थापना भयो, प्रभाव लिन पुनः सुरु गर्नुहोस् - - - %1% downloaded (Click to pause) - % 1% डाउनलोड गरियो (पज गर्न क्लिक गर्नुहोस्) - - - %1% downloaded (Click to continue) - % 1% डाउनलोड (जारी राख्नका लागि क्लिक गर्नुहोस्) - - - Your battery is lower than 50%, please plug in to continue - तपाईंको ब्याट्रि 50% भन्दा कम छ, कृपया जारी राख्न प्लग इन गर्नुहोस् - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - कृपया पुन: सुरू गर्न पर्याप्त शक्ति सुनिश्चित गर्नुहोस्, र तपाईंको मेसिनलाई बन्द नगर्नुहोस् वा अनप्लग नगर्नुहोस् - - - Size - आकार - - - - UpdateModule - - Updates - अपडेट - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - नयाँ प्रणाली स्थापना भयो, प्रभाव लिन पुनः सुरु गर्नुहोस् - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - सर्भर - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - सेटिङ्हरू अपडेट गर्नुहोस् - - - System - सिस्टम / प्रणाली - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - स्वचालित रूपमा वायरलेस वा वायर्ड नेटवर्कमा अद्यावधिकहरू डाउनलोड गर्न स्विच गर्नुहोस् - - - Auto Install Updates - - - - Updates Notification - अधिसूचनाहरू - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - बन्द गर्नुहोस् - - - Suspend - निलम्बन गर्नुहोस् - - - Hibernate - हाइबर्नेट - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 मिनेट - - - %1 Minutes - % 1 मिनेट - - - 1 Hour - 1 घण्टा - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 मिनेट - - - %1 Minutes - % 1 मिनेट - - - 1 Hour - 1 घण्टा - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - बन्द गर्नुहोस् - - - Suspend - निलम्बन गर्नुहोस् - - - Hibernate - हाइबर्नेट - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - रेखाङ्कन ट्याब्लेट - - - Mode - मोड - - - Pressure Sensitivity - - - - Pen - पेन - - - Mouse - माउस - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_nl.ts b/dcc-old/translations/dde-control-center_nl.ts deleted file mode 100644 index 522b39e562..0000000000 --- a/dcc-old/translations/dde-control-center_nl.ts +++ /dev/null @@ -1,3988 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Andere bluetooth-apparaten toestaan dit apparaat te vinden - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Schakel bluetooth in om apparaten in de buurt te vinden (zoals luidsprekers, toetsenborden en muizen) - - - My Devices - Mijn apparaten - - - Other Devices - Andere apparaten - - - Show Bluetooth devices without names - Naamloze bluetooth-apparaten tonen - - - Connect - Verbinden - - - Disconnect - Verbinding verbreken - - - Rename - Naam wijzigen - - - Send Files - Bestanden versturen - - - Ignore this device - Apparaat negeren - - - Connecting - Bezig met verbinden - - - Disconnecting - Bezig met verbreken - - - - AddButtonWidget - - Add Application - Programma toevoegen - - - Open Desktop file - Bureaubladbestand openen - - - Apps (*.desktop) - Programma's (*.desktop) - - - All files (*) - Alle bestanden (*) - - - - AddFaceInfoDialog - - Enroll Face - Gezichtsherkenning - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Zorg er voor dat je gezicht volledig in beeld en onbedekt is, en zorg voor goede belichting. - - - Cancel - Annuleren - - - Next - Volgende - - - Face enrolled - Je gezicht is herkend - - - Use your face to unlock the device and make settings later - Ontgrendel je apparaat met je gezicht - - - Done - Klaar - - - Failed to enroll your face - Je gezicht is niet herkend - - - Try Again - Opnieuw proberen - - - Close - Sluiten - - - - AddFingerDialog - - Cancel - Annuleren - - - Done - Klaar - - - Scan Again - Opnieuw scannen - - - Scan Suspended - Scan onderbroken - - - - AddIrisInfoDialog - - Enroll Iris - Irisherkenning - - - Cancel - Annuleren - - - Next - Volgende - - - Iris enrolled - Je iris is herkend - - - Done - Klaar - - - Failed to enroll your iris - Je iris is niet herkend - - - Try Again - Opnieuw proberen - - - - AdvancedSettingModule - - Advanced Setting - Geavanceerde instellingen - - - Audio Framework - Geluidssysteem - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - Er zijn verschillende geluidssystemen met ieder hun eigen voor- en nadelen. Hier kun je het systeem kiezen dat het beste bij je gebruiksdoel past. - - - - AuthenticationInfoItem - - No more than 15 characters - Maximaal 15 tekens - - - Use letters, numbers and underscores only, and no more than 15 characters - Gebruik max. 15 letters, cijfers en onderliggende streepjes - - - Use letters, numbers and underscores only - Gebruik alleen letters, cijfers en onderliggende streepjes - - - - AuthenticationModule - - Biometric Authentication - Biometrische verificatie - - - - AuthenticationPlugin - - Fingerprint - Vingerafdruk - - - Face - Gezicht - - - Iris - Iris - - - - BluetoothDeviceModel - - Connected - Verbonden - - - Not connected - Niet verbonden - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Bluetooth-apparaatbeheer - - - - CharaMangerModel - - Fingerprint1 - Vingerafdruk 1 - - - Fingerprint2 - Vingerafdruk 2 - - - Fingerprint3 - Vingerafdruk 3 - - - Fingerprint4 - Vingerafdruk 4 - - - Fingerprint5 - Vingerafdruk 5 - - - Fingerprint6 - Vingerafdruk 6 - - - Fingerprint7 - Vingerafdruk 7 - - - Fingerprint8 - Vingerafdruk 8 - - - Fingerprint9 - Vingerafdruk 9 - - - Fingerprint10 - Vingerafdruk 10 - - - Scan failed - Scannen mislukt - - - The fingerprint already exists - Deze vingerafdruk is al toegevoegd - - - Please scan other fingers - Scan andere vingers - - - Unknown error - Onbekende fout - - - Scan suspended - Scannen onderbroken - - - Cannot recognize - Niet herkend - - - Moved too fast - Te snel bewogen - - - Finger moved too fast, please do not lift until prompted - De vinger is te snel bewogen - til niet op totdat dit wordt aangegeven - - - Unclear fingerprint - Onduidelijke vingerafdruk - - - Clean your finger or adjust the finger position, and try again - Maak je vinger schoon of pas je vingerpositie aan en probeer het opnieuw - - - Already scanned - Reeds gescand - - - Adjust the finger position to scan your fingerprint fully - Pas je vingerpositie aan om je gehele vinger te scannen - - - Finger moved too fast. Please do not lift until prompted - De vinger is te snel bewogen - til niet op totdat dit wordt aangegeven - - - Lift your finger and place it on the sensor again - Til je vinger op en plaats hem nogmaals op de lezer - - - Position your face inside the frame - Zorg dat je gezicht binnen het kader blijft - - - Face enrolled - Je gezicht is herkend - - - Position a human face please - Alleen menselijke gezichten zijn toegestaan - - - Keep away from the camera - Ga iets naar achteren - - - Get closer to the camera - Ga iets naar voren - - - Do not position multiple faces inside the frame - Zorg dat alleen jóuw gezicht te zien is - - - Make sure the camera lens is clean - Zorg dat de cameralens schoon is - - - Do not enroll in dark, bright or backlit environments - Voer de herkenning niet uit in te donkere of overbelichte omgevingen - - - Keep your face uncovered - Zorg dat je gezicht onbedekt is - - - Scan timed out - Het scannen is verlopen - - - Device crashed, please scan again! - Je apparaat is gecrasht - probeer het opnieuw! - - - Cancel - Annuleren - - - - CooperationSettingsDialog - - Collaboration Settings - Samenwerkingsinstellingen - - - Share mouse and keyboard - Muis en toetsenbord delen - - - Share your mouse and keyboard across devices - Deel je muis en toetsenbord tussen apparaten - - - Share clipboard - Klembord delen - - - Storage path for shared files - Opslaglocatie van gedeelde bestanden - - - Share the copied content across devices - Deel gekopieerde inhoud tussen apparaten - - - Cancel - button - Annuleren - - - Confirm - button - Oké - - - - dccV23::AccountSpinBox - - Always - Altijd - - - - dccV23::AccountsModule - - Users - Gebruikers - - - User management - Gebruikersbeheer - - - Create User - Gebruiker toevoegen - - - Username - Gebruikersnaam - - - Change Password - Wachtwoord wijzigen - - - Delete User - Gebruiker verwijderen - - - User Type - Soort gebruiker - - - Auto Login - Automatisch aanmelden - - - Login Without Password - Aanmelden zonder wachtwoord - - - Validity Days - Geldigheidsduur - - - Group - Groep - - - The full name is too long - De volledige naam is te lang - - - Standard User - Standaardgebruiker - - - Administrator - Beheerder - - - Reset Password - Wachtwoord herstellen - - - The full name has been used by other user accounts - Deze volledige naam is al in gebruik door een ander account - - - Full Name - Volledige naam - - - Go to Settings - Ga naar de instellingen - - - Cancel - Annuleren - - - OK - Oké - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - Automatisch inloggen kan slechts op één account worden ingeschakeld. Schakel deze functie uit bij het account ‘%1’. - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - De toegang tot de domeinserver is verwijderd - - - Your host joins the domain server successfully - De toegang tot de domeinserver is geslaagd - - - Your host failed to leave the domain server - De toegang tot de domeinserver is niet verbroken - - - Your host failed to join the domain server - De toegang tot de domeinserver is mislukt - - - AD domain settings - AD-domeininstellingen - - - Password not match - De wachtwoorden komen niet overeen - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Toon meldingen van %1 op het bureaublad en in het meldingencentrum. - - - Play a sound - Geluid afspelen - - - Show messages on lockscreen - Meldingen tonen op vergrendelscherm - - - Show in notification center - Tonen in meldingencentrum - - - Show message preview - Voorbeeld tonen - - - - dccV23::AvatarListDialog - - Person - Persoon - - - Animal - Dier - - - Illustration - Tekening - - - Expression - Uitdrukking - - - Custom Picture - Eigen afbeelding - - - Cancel - Annuleren - - - Save - Opslaan - - - - dccV23::AvatarListFrame - - Dimensional Style - 3D-stijl - - - Flat Style - Platte stijl - - - - dccV23::AvatarListView - - Images - Afbeeldingen - - - - dccV23::BootWidget - - Updating... - Bezig met bijwerken… - - - Startup Delay - Opstartvertraging - - - Theme - Thema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Klik op de optie in het opstartmenu om deze in te stellen als eerste opstart, of sleep een afbeelding hiernaartoe om de achtergrond te wijzigen - - - Click the option in boot menu to set it as the first boot - Klik op de optie in het opstartmenu om deze in te stellen als eerste opstart - - - Switch theme on to view it in boot menu - Schakel het thema in om het te zien in het opstartmenu - - - GRUB Authentication - GRUB-verificatie - - - GRUB password is required to edit its configuration - Voer het GRUB-wachtwoord in om de instellingen aan te passen - - - Change Password - Wachtwoord wijzigen - - - Boot Menu - Opstartmenu - - - Change GRUB password - GRUB-wachtwoord wijzigen - - - Username: - Gebruikersnaam: - - - root - Beheerder - - - New password: - Nieuw wachtwoord: - - - Repeat password: - Wachtwoord herhalen: - - - Required - Vereist - - - Cancel - button - Annuleren - - - Confirm - button - Bevestigen - - - Password cannot be empty - Voer een wachtwoord in - - - Passwords do not match - De wachtwoorden komen niet overeen - - - - dccV23::BrightnessWidget - - Brightness - Helderheid - - - Color Temperature - Kleurtemperatuur - - - Auto Brightness - Automatische helderheid - - - Night Shift - Nachtmodus - - - The screen hue will be auto adjusted according to your location - De schermtint wordt automatisch aangepast aan je locatie - - - Change Color Temperature - Kleurtemperatuur aanpassen - - - Cool - Koel - - - Warm - Warm - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Samenwerken op meerdere schermen - - - PC Collaboration - Computersamenwerking - - - Connect to - Verbinden met - - - Select a device for collaboration - Kies een apparaat voor samenwerking - - - Device Orientation - Apparaatoriëntatie - - - On the top - Bovenaan - - - On the right - Rechts - - - On the bottom - Onderaan - - - On the left - Links - - - My Devices - Mijn apparaten - - - Other Devices - Andere apparaten - - - - dccV23::CommonInfoPlugin - - General Settings - Algemene instellingen - - - Boot Menu - Opstartmenu - - - Developer Mode - Ontwikkelaarsmodus - - - User Experience Program - Programma omtrent gebruikerservaringen - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Ik ga akkoord en neem deel aan het programma omtrent gebruikerservaringen - - - The Disclaimer of Developer Mode - Vrijwaringsclausule omtrent ontwikkelaarsmodus - - - Agree and Request Root Access - Ik ga akkoord en verzoek administratortoegang - - - Failed to get root access - Geen administratortoegang - - - Please sign in to your Union ID first - Log in met je Union ID - - - Cannot read your PC information - Je computerinformatie kan niet worden uitgelezen - - - No network connection - Geen internetverbinding - - - Certificate loading failed, unable to get root access - Het certificaat kan niet worden geladen omdat er geen beheerderstoegang kan worden verkregen - - - Signature verification failed, unable to get root access - De handtekeningverificatie is mislukt omdat er geen beheerderstoegang kan worden verkregen - - - - dccV23::CreateAccountPage - - Group - Groep - - - Cancel - Annuleren - - - Create - Aanmaken - - - New User - Nieuwe gebruiker - - - User Type - Soort gebruiker - - - Username - Gebruikersnaam - - - Full Name - Volledige naam - - - Password - Wachtwoord - - - Repeat Password - Wachtwoord herhalen - - - Password Hint - Wachtwoordhint - - - The full name is too long - De volledige naam is te lang - - - Passwords do not match - De wachtwoorden komen niet overeen - - - Standard User - Standaardgebruiker - - - Administrator - Beheerder - - - Customized - Aangepast - - - Required - Vereist - - - optional - optioneel - - - The hint is visible to all users. Do not include the password here. - Deze hint is zichtbaar voor alle gebruikers, dus zet hier NIET je wachtwoord neer. - - - Policykit authentication failed - Policykit-verificatie mislukt - - - Username must be between 3 and 32 characters - De gebruikersnaam moet tussen de 3 en 32 tekens lang zijn - - - The first character must be a letter or number - Het eerste teken moet een letter of cijfer zijn - - - Your username should not only have numbers - Je gebruikersnaam mag niet alleen uit cijfers bestaan - - - The username has been used by other user accounts - Deze gebruikersnaam is al in gebruik door een ander account - - - The full name has been used by other user accounts - Deze volledige naam is al in gebruik door een ander account - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Je hebt nog geen afbeeldingen gekozen. Klik om te kiezen of sleep een afbeelding hierheen. - - - Uploaded file type is incorrect, please upload again - Dit bestandstype wordt niet ondersteund. Probeer het opnieuw. - - - Images - Afbeeldingen - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Eigen sneltoets toevoegen - - - Name - Naam - - - Required - Vereist - - - Command - Opdracht - - - Cancel - Annuleren - - - Add - Toevoegen - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Deze sneltoets wordt al gebruikt door ‘%1’. Klik op ‘Toevoegen’ om de nieuwe sneltoets toe te wijzen. - - - - dccV23::CustomEdit - - Required - Vereist - - - Cancel - Annuleren - - - Save - Opslaan - - - Shortcut - Sneltoets - - - Name - Naam - - - Command - Opdracht - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Deze sneltoets wordt al gebruikt door ‘%1’. Klik op ‘Toevoegen’ om de nieuwe sneltoets toe te wijzen. - - - - dccV23::CustomItem - - Shortcut - Sneltoets - - - Please enter a shortcut - Druk op een sneltoets - - - - dccV23::CustomRegionFormatDialog - - Custom format - Eigen opmaak - - - First day of week - Eerste dag van de week - - - Short date - Korte datum - - - Long date - Lange datum - - - Short time - Korte tijd - - - Long time - Lange tijd - - - Currency symbol - Valutateken - - - Numbers - Getallen - - - Paper - Papierformaat - - - Cancel - Annuleren - - - Save - Opslaan - - - - dccV23::DetailInfoItem - - For more details, visit: - Meer informatie: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Administratortoegang verzoeken - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Log in met je Union ID om verder te gaan - - - Next - Volgende - - - Export PC Info - Computerinformatie exporteren - - - Import Certificate - Certificaat importeren - - - 1. Export your PC information - 1. Exporteer je computerinformatie - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Ga naar https://www.chinauos.com/developMode om een offline-certificaat op te halen - - - 3. Import the certificate - 3. Importeer het certificaat - - - - dccV23::DeveloperModeWidget - - Request Root Access - Administratortoegang verzoeken - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - De ontwikkelaarsmodus stelt je in staat administratortoegang te verkrijgen en niet-ondertekende programma's, die niet in de appwinkel te vinden zijn, te installeren en uit te voeren. Hierdoor komt de systeemintegriteit in het gedrang - wees dus voorzichtig. - - - The feature is not available at present, please activate your system first - Deze optie is momenteel niet beschikbaar. Activeer je systeem. - - - Failed to get root access - Geen administratortoegang - - - Please sign in to your Union ID first - Log in met je Union ID - - - Cannot read your PC information - Je computerinformatie kan niet worden uitgelezen - - - No network connection - Geen internetverbinding - - - Certificate loading failed, unable to get root access - Het certificaat kan niet worden geladen omdat er geen beheerderstoegang kan worden verkregen - - - Signature verification failed, unable to get root access - De handtekeningverificatie is mislukt omdat er geen beheerderstoegang kan worden verkregen - - - To make some features effective, a restart is required. Restart now? - Om bepaalde opties beschikbaar te maken, is een herstart vereist. Wil je nu herstarten? - - - Cancel - Annuleren - - - Restart Now - Nu herstarten - - - Root Access Allowed - Administratortoegang toegestaan - - - - dccV23::DisplayPlugin - - Display - Beeldscherm - - - Light, resolution, scaling and etc - Belichting, resolutie, afmetingen, etc. - - - - dccV23::DouTestWidget - - Double-click Test - Dubbelkliktest - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Toetsenbordinstellingen - - - Repeat Delay - Herhaalvertraging - - - Short - Kort - - - Long - Lang - - - Repeat Rate - Herhaalsnelheid - - - Slow - Traag - - - Fast - Snel - - - Test here - Test hier - - - Numeric Keypad - Numeriek toetsenbord - - - Caps Lock Prompt - Caps Lock-melding - - - - dccV23::GeneralSettingWidget - - Left Hand - Linkerhand - - - Disable touchpad while typing - Touchpad uitschakelen tijdens typen - - - Scrolling Speed - Scrollsnelheid - - - Double-click Speed - Dubbelkliksnelheid - - - Slow - Traag - - - Fast - Snel - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Toetsenbordindeling - - - Edit - Bewerken - - - Add Keyboard Layout - Toetsenbordindeling toevoegen - - - Done - Klaar - - - - dccV23::KeyboardLayoutDialog - - Cancel - Annuleren - - - Add - Toevoegen - - - Add Keyboard Layout - Toetsenbordindeling toevoegen - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Toetsenbord en taal - - - Keyboard - Toetsenbord - - - Keyboard Settings - Toetsenbordinstellingen - - - keyboard Layout - Toetsenbordindeling - - - Keyboard Layout - Toetsenbordindeling - - - Language - Taal - - - Shortcuts - Sneltoetsen - - - - dccV23::MainWindow - - Help - Hulp - - - - dccV23::ModifyPasswdPage - - Change Password - Wachtwoord wijzigen - - - Reset Password - Wachtwoord herstellen - - - Resetting the password will clear the data stored in the keyring. - Door het wachtwoord te herstellen, worden alle in de sleutelbos opgeslagen gegevens gewist. - - - Current Password - Huidig wachtwoord - - - Forgot password? - Wachtwoord vergeten? - - - New Password - Nieuw wachtwoord - - - Repeat Password - Wachtwoord herhalen - - - Password Hint - Wachtwoordhint - - - Cancel - Annuleren - - - Save - Opslaan - - - Passwords do not match - De wachtwoorden komen niet overeen - - - Required - Vereist - - - Optional - Optioneel - - - Password cannot be empty - Voer een wachtwoord in - - - The hint is visible to all users. Do not include the password here. - Deze hint is zichtbaar voor alle gebruikers, dus zet hier NIET je wachtwoord neer. - - - Wrong password - Onjuist wachtwoord - - - New password should differ from the current one - Het nieuwe wachtwoord moet verschillen van het huidige wachtwoord - - - System error - Systeemfout - - - Network error - Netwerkfout - - - - dccV23::MonitorControlWidget - - Identify - Identificeren - - - Gather Windows - Vensters verzamelen - - - Screen rearrangement will take effect in %1s after changes - De schermindeling wordt over %1s toegepast - - - - dccV23::MousePlugin - - Mouse - Muis - - - General - Algemeen - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Cursorsnelheid - - - Mouse Acceleration - Muisversnelling - - - Disable touchpad when a mouse is connected - Touchpad uitschakelen als er een muis verbonden is - - - Natural Scrolling - Natuurlijk scrollen - - - Slow - Traag - - - Fast - Snel - - - - dccV23::MultiScreenWidget - - Multiple Displays - Meerdere beeldschermen - /display/Multiple Displays - - - Mode - Modus - /display/Mode - - - Main Screen - Hoofdscherm - /display/Main Scree - - - Duplicate - Klonen - - - Extend - Uitbreiden - - - Only on %1 - Alleen op %1 - - - - dccV23::NotificationModule - - AppNotify - AppNotify - - - Notification - Melding - - - SystemNotify - SystemNotify - - - - dccV23::PalmDetectSetting - - Palm Detection - Handpalmdetectie - - - Minimum Contact Surface - Minimaal aanraakgebied - - - Minimum Pressure Value - Minimale drukwaarde - - - Disable the option if touchpad doesn't work after enabled - Schakel deze optie uit als het touchpad niet blijkt te werken - - - - dccV23::PluginManager - - following plugins load failed - De volgende invoegtoepassingen kunnen niet worden geladen - - - plugins cannot loaded in time - De volgende invoegtoepassingen kunnen niet worden geladen - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Privacybeleid - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>We zijn ons maar al te goed bewust van het feit dat persoonlijke privacy belangrijk is. In ons privacybeleid leggen we uit wat we verzamelen, gebruiken, delen, overdragen, openbaren en opslaan. </p><p><a href="https://www.uniontech.com/agreement/privacy-en">Klik hier</a> om ons nieuwste privacybeleid te lezen view our latest privacy policy of lees het online op <a href="https://www.uniontech.com/agreement/privacy-en"> %1</a> (Engels). Lees het zorgvuldig door en begrijp wat we doen om je privacy te beschermen. Als je vragen hebt, neem dan contact met ons op via support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Voer een wachtwoord in - - - Password must have at least %1 characters - Het wachtwoord moet minimaal %1 tekens bevatten - - - Password must be no more than %1 characters - Het wachtwoord mag niet langer zijn dan %1 tekens - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Het wachtwoord mag alleen Nederlandstalige letters (hoofdlettergevoelig), cijfers of speciale tekens (~!@#$%^&*()[]{}\|/?,.<>) bevatten - - - No more than %1 palindrome characters please - Maximaal %1 palindroomtekens - - - No more than %1 monotonic characters please - Maximaal %1 monotone tekens - - - No more than %1 repeating characters please - Maximaal %1 dezelfde tekens - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Het wachtwoord moet hoofdletters, kleine letters, getallen en speciale tekens bevatten (~!@#$%^&*()[]{}\|/?,.<>) - - - Password must not contain more than 4 palindrome characters - Het wachtwoord mag niet meer dan 4 palindroomtekens bevatten - - - Do not use common words and combinations as password - Het wachtwoord mag geen algemene woorden of samenstellingen bevatten - - - Create a strong password please - Stel een sterk wachtwoord samen - - - It does not meet password rules - Het wachtwoord voldoet niet aan de vereisten - - - - dccV23::RefreshRateWidget - - Refresh Rate - Ververssnelheid - - - Hz - Hz - - - Recommended - Aanbevolen - - - - dccV23::RegionFormatDialog - - Region format - Regionale opmaak - - - Default format - Standaardopmaak - - - First of day - Eerste van de dag - - - Short date - Korte datum - - - Long date - Lange datum - - - Short time - Korte tijd - - - Long time - Lange tijd - - - Currency symbol - Valutateken - - - Numbers - Getallen - - - Paper - Papierformaat - - - Cancel - Annuleren - - - Save - Opslaan - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Weet je zeker dat je dit account wilt verwijderen? - - - Delete account directory - Accountmap verwijderen - - - Cancel - Annuleren - - - Delete - Verwijderen - - - - dccV23::ResolutionWidget - - Resolution - Resolutie - /display/Resolution - - - Resize Desktop - Werkbladgrootte aanpassen - /display/Resize Desktop - - - Default - Standaard - - - Fit - Inpassen - - - Stretch - Uitrekken - - - Center - Centreren - - - Recommended - Aanbevolen - - - - dccV23::RotateWidget - - Rotation - Draaiing - /display/Rotation - - - Standard - Standaard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Het beeldscherm ondersteunt alleen 100%-schaling - - - Display Scaling - Beeldgrootte - - - - dccV23::SearchInput - - Search - Zoeken - - - - dccV23::SecondaryScreenDialog - - Brightness - Helderheid - - - - dccV23::SecurityLevelItem - - Weak - Zwak - - - Medium - Redelijk - - - Strong - Sterk - - - - dccV23::SecurityQuestionsPage - - Security Questions - Beveiligingsvragen - - - These questions will be used to help reset your password in case you forget it. - Aan de hand van deze vragen kun je je wachtwoord herstellen als je het vergeten bent. - - - Security question 1 - Beveiligingsvraag 1 - - - Security question 2 - Beveiligingsvraag 2 - - - Security question 3 - Beveiligingsvraag 3 - - - Cancel - Annuleren - - - Confirm - Bevestigen - - - Keep the answer under 30 characters - Het antwoord mag maximaal 30 tekens bevatten - - - Do not choose a duplicate question please - Elke vraag dient anders te zijn - - - Please select a question - Kies een vraag - - - What's the name of the city where you were born? - In welke plaats ben je geboren? - - - What's the name of the first school you attended? - Wat is de naam van de eerste school waar je op zat? - - - Who do you love the most in this world? - Wat is je favoriete bezigheid? - - - What's your favorite animal? - Wat is je favoriete huisdier? - - - What's your favorite song? - Wat is je favoriete nummer? - - - What's your nickname? - Wat is je bijnaam? - - - It cannot be empty - Het veld mag niet leeg zijn - - - - dccV23::SettingsHead - - Edit - Bewerken - - - Done - Klaar - - - - dccV23::ShortCutSettingWidget - - System - Systeem - - - Window - Venster - - - Workspace - Werkblad - - - Assistive Tools - Hulpmiddelen - - - Custom Shortcut - Aangepaste sneltoets - - - Restore Defaults - Standaardwaarden herstellen - - - Shortcut - Sneltoets - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Stel de sneltoets opnieuw in - - - Cancel - Annuleren - - - Replace - Vervangen - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Deze sneltoets wordt al gebruikt door ‘1%’. Klik op ‘Vervangen’ om de nieuwe sneltoets toe te wijzen. - - - - dccV23::ShortcutItem - - Enter a new shortcut - Druk op een sneltoets - - - - dccV23::SystemInfoModel - - available - beschikbaar - - - - dccV23::SystemInfoModule - - About This PC - Over deze computer - - - Computer Name - Computernaam - - - systemInfo - Systeeminformatie - - - OS Name - Besturingssysteem: - - - Version - Versie - - - Edition - Editie: - - - Type - Soort - - - Authorization - Verificatie - - - Processor - Processor: - - - Memory - Geheugen: - - - Graphics Platform - Grafisch platform - - - Kernel - Kernel: - - - Agreements and Privacy Policy - Algemene voorwaarden en privacybeleid - - - Edition License - Editielicentie - - - End User License Agreement - Licentie-overeenkomst - - - Privacy Policy - Privacybeleid - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Systeeminformatie - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Annuleren - - - Add - Toevoegen - - - Add System Language - Systeemtaal toevoegen - - - - dccV23::SystemLanguageWidget - - Edit - Bewerken - - - Language List - Taallijst - - - Add Language - Taal toevoegen - - - Done - Klaar - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Niet storen - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Er worden geen programmameldingen op het bureaublad getoond en geen geluiden afgespeeld, maar alle meldingen zijn terug te vinden in het meldingencentrum. - - - When the screen is locked - Als het scherm vergrendeld is - - - - dccV23::TimeSlotItem - - From - Van - - - To - Tot - - - - dccV23::TouchScreenModule - - Touch Screen - Touchscreen - - - Select your touch screen when connected or set it here. - Kies je touchscreen (indien verbonden) of stel het hier in. - - - Confirm - Bevestigen - - - Cancel - Annuleren - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Cursorsnelheid - - - Enable TouchPad - Touchpad inschakelen - - - Tap to Click - Tik om te klikken - - - Natural Scrolling - Natuurlijk scrollen - - - Slow - Traag - - - Fast - Snel - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Cursorsnelheid - - - Slow - Traag - - - Fast - Snel - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Neem deel aan het programma omtrent gebruikerservaringen - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Door deel te nemen aan het gebruikersverbeteringsprogramma, ga je akkoord met het feit dat we je apparaat-, systeem- en programma-informatie verzamelen en gebruiken. Als je hier niet mee akkoord gaat, neem dan geen deel aan het programma. Meer informatie is te vinden in het privacybeleid (<a href="%1">%1</a>). - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Door deel te nemen aan het gebruikersverbeteringsprogramma, ga je akkoord met het feit dat we je apparaat-, systeem- en programma-informatie verzamelen en gebruiken. Als je hier niet mee akkoord gaat, neem dan geen deel aan het programma. Meer informatie is te vinden in het privacybeleid (<a href="%1">%1</a>). - - - - DateWidget - - Year - Jaar - - - Month - Maand - - - Day - Dag - - - - DatetimeModule - - Time and Format - Tijd en opmaak - - - - DatetimeWorker - - Authentication is required to change NTP server - Voer je wachtwoord in om de ntp-server te wijzigen - - - - DefAppModule - - Default Applications - Standaardprogramma's - - - - DefAppPlugin - - Webpage - Webpagina - - - Mail - E-mail - - - Text - Tekst - - - Music - Muziek - - - Video - Video - - - Picture - Afbeelding - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Verklaring - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Voordat je gezichtsherkenning instelt, is het belangrijk om het volgende in acht te nemen:<br><br>1. Je apparaat kan worden ontgrendeld door iemand die op jou lijkt of door een foto van jou voor de webcam te houden;<br><br>2. Gezichtsherkenning is minder veilig dan een wachtwoord;<br><br>3. De herkenning is slechter in donkere, slecht belichte of overbelichte omgevingen;<br><br>4. Deel je apparaat niet met anderen om misbruik te voorkomen;<br><br>5. Let ook op de factoren die het gebruik kunnen belemmeren.<br><br>Neem het volgende in acht om de gezichtsherkenning zo goed als mogelijk in te stellen:<br><br>1. Zorg voor goede belichting, vermijd zonlicht en voorkom dat anderen in beeld komen;<br><br>2. Let op je uiterlijk: laat je haar niet over je gezicht vallen, en draag geen hoed, zonnebril, masker of een dikke laag make-up;<br><br>3. Kijk recht in de camera, houd je ogen open en zorg dat je hoofd volledig binnen het kader blijft.<br><br><br> - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - ‘Biometrische authenticatie’ is een functie die de gebruiker authenticeert. Deze functie wordt aangeboden door UnionTech Software Technology Co., Ltd. De biometrische gegevens worden vergeleken met de lokale gegevens op het apparaat, waarna er al dan niet verificatie plaatsvindt. -Let op: UnionTech Software verzamelt geen biometrische gegevens en heeft er ook geen toegang tot, aangezien alles lokaal wordt opgeslagen op je apparaat. Schakel biometrische authenticatie alléén in op je persoonlijke apparaat en gebruik het alleen voor authenticatiedoeleinden. Schakel de functie uit en/of verwijder de biometrische gegevens van anderen. -UnionTech Software is doet onderzoek naar de verbetering en beveiliging van de functie, alsmede de juistheid en stabiliteit. Er is echter geen garantie dat de functie niet tijdelijk te omzeilen is. Zorg er dan ook voor dat je de functie naast andere inlogmethoden gebruikt op UnionTech OS. Heb je vragen of suggesties hieromtrent? Geef dan feedback via ‘Dienstverlening en ondersteuning’ op UnionTech OS. - - - - Cancel - Annuleren - - - Next - Volgende - - - - DisclaimersItem - - I have read and agree to the - Ik geef hierbij aan dat ik kennisgenomen heb van en akkoord ga met - - - Disclaimer - Verklaring - - - - DockModuleObject - - Dock - Vastmaken - - - Multiple Displays - Meerdere beeldschermen - - - Show Dock - Dock tonen - - - Mode - Modus - - - Position - Positie - - - Status - Status - - - Show recent apps in Dock - Recente programma's op dock tonen - - - Size - Grootte - - - Plugin Area - Invoegtoepassingsgebied - - - Select which icons appear in the Dock - Geef aan welke pictogrammen moeten worden getoond op het dock - - - Fashion mode - Moderne modus - - - Efficient mode - Efficiënte modus - - - Top - Bovenaan - - - Bottom - Onderaan - - - Left - Links - - - Right - Rechts - - - Location - Locatie - - - Keep shown - Altijd tonen - - - Keep hidden - Altijd verbergen - - - Smart hide - Slim verbergen - - - Small - Klein - - - Large - Groot - - - On screen where the cursor is - Op het scherm waar de cursor is - - - Only on main screen - Alleen op hoofdscherm - - - - FaceInfoDialog - - Enroll Face - Gezichtsherkenning - - - Position your face inside the frame - Zorg dat je gezicht binnen het kader blijft - - - - FaceWidget - - Edit - Bewerken - - - Manage Faces - Gezichten beheren - - - You can add up to 5 faces - Je kan max. 5 gezichten toevoegen - - - Done - Klaar - - - Add Face - Gezicht toevoegen - - - The name already exists - Deze naam is al in gebruik - - - Faceprint - Gezichtsafdruk - - - - FaceidDetailWidget - - No supported devices found - Geen geschikt apparaat aangetroffen - - - - FingerDetailWidget - - No supported devices found - Geen geschikt apparaat aangetroffen - - - - FingerDisclaimer - - Add Fingerprint - Vingerafdruk toevoegen - - - Cancel - Annuleren - - - Next - Volgende - - - - FingerInfoWidget - - Place your finger - Plaats je vinger - - - Place your finger firmly on the sensor until you're asked to lift it - Plaats je vinger goed op de lezer totdat wordt aangegeven dat je hem moet optillen - - - Scan the edges of your fingerprint - Scan de randen van je vingerafdruk - - - Place the edges of your fingerprint on the sensor - Plaats de randen van je vinger op de lezer - - - Lift your finger - Til je vinger op - - - Lift your finger and place it on the sensor again - Til je vinger op en plaats hem nogmaals op de lezer - - - Adjust the position to scan the edges of your fingerprint - Pas je vingerpositie aan om de randen te scannen - - - Lift your finger and do that again - Til je vinger op en probeer het opnieuw - - - Fingerprint added - Vingerafdruk toegevoegd - - - - FingerWidget - - Edit - Bewerken - - - Fingerprint Password - Vingerafdrukwachtwoord - - - You can add up to 10 fingerprints - Je kan max. 10 vingerafdrukken toevoegen - - - Done - Klaar - - - The name already exists - Deze naam is al in gebruik - - - Add Fingerprint - Vingerafdruk toevoegen - - - - GeneralModule - - General - Algemeen - - - Balanced - Gebalanceerd - - - Balance Performance - Gebalanceerde prestaties - - - High Performance - Hoge prestaties - - - Power Saver - Energiebesparing - - - Power Plans - Energieschema's - - - Power Saving Settings - Energiebesparingsinstellingen - - - Auto power saving on low battery - Energiebesparing inschakelen bij laag accuniveau - - - Decrease Brightness - Helderheid verlagen - - - Low battery threshold - Drempelwaarde laag accuniveau - - - Auto power saving on battery - Energiebesparing inschakelen bij werken op accu - - - Wakeup Settings - Ontwaakinstellingen - - - Unlocking is required to wake up the computer - Wachtwoord vereisen om computer te ontwaken - - - Unlocking is required to wake up the monitor - Wachtwoord vereisen om beeldscherm te ontwaken - - - - HostNameItem - - It cannot start or end with dashes - De naam mag niet beginnen met of eindigen op streepjes - - - 1~63 characters please - Voer 1-63 tekens in - - - - InternalButtonItem - - Internal testing channel - Intern testkanaal - - - click here open the link - Klik hier om de link te openen - - - - IrisDetailWidget - - No supported devices found - Geen geschikt apparaat aangetroffen - - - - IrisWidget - - Edit - Bewerken - - - Manage Irises - Irissen beheren - - - You can add up to 5 irises - Je kan max. 5 irissen toevoegen - - - Done - Klaar - - - Add Iris - Iris toevoegen - - - The name already exists - Deze naam is al in gebruik - - - Iris - Iris - - - - KeyLabel - - None - Geen - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin-gemeenschap - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Invoerapparaat - - - Automatic Noise Suppression - Automatische ruisonderdrukking - - - Input Volume - Invoervolume - - - Input Level - Invoerniveau - - - - PersonalizationDesktopModule - - Desktop - Computer - - - Window - Venster - - - Window Effect - Vensteranimatie - - - Window Minimize Effect - Minimaliseeranimatie - - - Transparency - Doorzichtigheid - - - Rounded Corner - Afgeronde hoeken - - - Scale - Schalen - - - Magic Lamp - Magische lamp - - - Small - Klein - - - Middle - Normaal - - - Large - Groot - - - - PersonalizationModule - - Personalization - Vormgeving - - - - PersonalizationThemeList - - Cancel - Annuleren - - - Save - Opslaan - - - Light - Licht - - - Dark - Donker - - - Auto - Automatisch - - - Default - Standaard - - - - PersonalizationThemeModule - - Theme - Thema - - - Appearance - Vormgeving - - - Accent Color - Accentuering - - - Icon Settings - Pictograminstellingen - - - Icon Theme - Pictogramthema - - - Cursor Theme - Cursorthema - - - Text Settings - Tekstinstellingen - - - Font Size - Lettergrootte - - - Standard Font - Standaardlettertype - - - Monospaced Font - Monospacelettertype - - - Light - Licht - - - Auto - Automatisch - - - Dark - Donker - - - - PersonalizationThemeWidget - - Light - Licht - General - /personalization/General - - - Dark - Donker - General - /personalization/General - - - Auto - Automatisch - General - /personalization/General - - - Default - Standaard - - - - PersonalizationWorker - - Custom - Aangepast - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - De pincode voor het koppelen van het bluetoothapparaat is: - - - Cancel - Annuleren - - - Confirm - Bevestigen - - - - PowerModule - - Power - Energie - - - Battery low, please plug in - De accu is bijna leeg - sluit de netstroomadapter aan - - - Battery critically low - Het accuniveau is zeer laag - - - - PrivacyModule - - Privacy and Security - Privacy en beveiliging - - - - PrivacySecurityModel - - Camera - Camera - - - Microphone - Microfoon - - - User Folders - Gebruikersmappen - - - Calendar - Kalender - - - Screen Capture - Schermopname - - - - QObject - - Control Center - Instellingencentrum - - - , - , - - - Error occurred when reading the configuration files of password rules! - Er is een fout opgetreden tijdens het uitlezen van de configuratiebestanden omtrent de wachtwoordregels! - - - Auto adjust CPU operating frequency based on CPU load condition - Pas de cpu-snelheid automatisch aan op basis van de belasting - - - Aggressively adjust CPU operating frequency based on CPU load condition - Pas de cpu-snelheid automatisch op agressieve wijze aan op basis van de belasting - - - Be good to imporving performance, but power consumption and heat generation will increase - Verhoogt de prestaties, maar ook het energieverbruik en warmte - - - CPU always works under low frequency, will reduce power consumption - Verlaagt de prestaties en het energieverbruik - - - Activated - Geactiveerd - - - View - Bekijk - - - To be activated - Activatie benodigd - - - Activate - Activeren - - - Expired - Verlopen - - - In trial period - Proefperiode - - - Trial expired - Proefperiode verlopen - - - Touch Screen Settings - Touchscreeninstellingen - - - The settings of touch screen changed - De touchscreeninstellingen zijn aangepast - - - Checking system versions, please wait... - Bezig met controleren van systeemversies… - - - Leave - Uitschakelen - - - Cancel - Annuleren - - - - RegionModule - - Region and format - Regio en opmaak - - - Country or Region - Regio - - - Format - Opmaak - - - Provide localized services based on your region. - Biedt lokale diensten aan op basis van je land of regio. - - - Select matching date and time formats based on language and region - Kies de datum- en tijdopmaak op basis van de ingestelde taal en regio - - - Region format - Taal en regio - - - First day of week - Eerste dag van de week - - - Short date - Korte datum - - - Long date - Lange datum - - - Short time - Korte tijd - - - Long time - Lange tijd - - - Currency symbol - Valutateken - - - Numbers - Getallen - - - Paper - Papierformaat - - - Custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Je systeem is niet geactiveerd - - - Update successful - Je systeem is bijgewerkt - - - Failed to update - Het bijwerken is mislukt - - - - SearchInput - - Search - Zoeken - - - - ServiceSettingsModule - - Apps can access your camera: - Programma's met toegang tot je camera: - - - Apps can access your microphone: - Programma's met toegang tot je microfoon: - - - Apps can access user folders: - Programma's met toegang tot gebruikersmappen: - - - Apps can access Calendar: - Programma's met toegang tot je agenda: - - - Apps can access Screen Capture: - Programma's met toegang tot schermopname: - - - No apps requested access to the camera - Er zijn geen programma's die toegang hebben verzocht - - - No apps requested access to the microphone - Er zijn geen programma's die toegang hebben verzocht - - - No apps requested access to user folders - Er zijn geen programma's die toegang hebben verzocht - - - No apps requested access to Calendar - Er zijn geen programma's die toegang hebben verzocht - - - No apps requested access to Screen Capture - Er zijn geen programma's die toegang hebben verzocht - - - - SoundEffectsPage - - Sound Effects - Geluidseffecten - - - - SoundModel - - Boot up - Opstarten - - - Shut down - Afsluiten - - - Log out - Afmelden - - - Wake up - Ontwaken - - - Volume +/- - Volume +/- - - - Notification - Meldingen - - - Low battery - Laag accuniveau - - - Send icon in Launcher to Desktop - Bureaubladsnelkoppeling maken - - - Empty Trash - Prullenbak legen - - - Plug in - Aankoppelen - - - Plug out - Loskoppelen - - - Removable device connected - Verwijderbaar apparaat aangekoppeld - - - Removable device removed - Verwijderbaar apparaat losgekoppeld - - - Error - Foutmelding - - - - SoundModule - - Sound - Geluid - - - - SoundPlugin - - Output - Uitvoer - - - Auto pause - Automatisch pauzeren - - - Whether the audio will be automatically paused when the current audio device is unplugged - Pauzeer audio automatisch als het huidige geluidsapparaat wordt afgekoppeld - - - Input - Invoer - - - Sound Effects - Geluidseffecten - - - Devices - Apparaten - - - Input Devices - Invoerapparaten - - - Output Devices - Uitvoerapparaten - - - - SpeakerPage - - Output Device - Uitvoerapparaat - - - Mode - Modus - - - Output Volume - Uitvoervolume - - - Volume Boost - Volumeverhoging - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Als het volume hoger dan 100% wordt ingesteld, is er kans op vervormd geluid en luidsprekerschade - - - Left/Right Balance - Balans links/rechts - - - Left - Links - - - Right - Rechts - - - - TimeSettingModule - - Time Settings - Tijdinstellingen - - - Time - Tijdstip - - - Auto Sync - Automatisch synchroniseren - - - Reset - Herstellen - - - Save - Opslaan - - - Server - Server - - - Address - Adres - - - Required - Vereist - - - Customize - Aanpassen - - - Year - Jaar - - - Month - Maand - - - Day - Dag - - - - TimeZoneChooser - - Cancel - Annuleren - - - Confirm - Bevestigen - - - Add Timezone - Tijdzone toevoegen - - - Add - Toevoegen - - - Change Timezone - Tijdzone wijzigen - - - - TimeoutDialog - - Save the display settings? - Wil je de beeldscherminstellingen opslaan? - - - Settings will be reverted in %1s. - De instellingen worden over %1 sec. teruggezet. - - - Revert - Herstellen - - - Save - Opslaan - - - - TimezoneItem - - Tomorrow - Morgen - - - Yesterday - Gisteren - - - Today - Vandaag - - - %1 hours earlier than local - %1 uur vroeger dan lokaal - - - %1 hours later than local - %1 uur later dan lokaal - - - - TimezoneModule - - Timezone List - Tijdzonelijst - - - System Timezone - Systeemtijdzone - - - Add Timezone - Tijdzone toevoegen - - - - TreeCombox - - Collaboration Settings - Samenwerkingsinstellingen - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Het gebruikersaccount is niet gekoppeld aan de Union ID! - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Je kunt wachtwoorden herstellen door je Union ID te verifiëren. Klik op ‘Ga naar link’ om dit te doen. - - - Cancel - Annuleren - - - Go to Link - Ga naar link - - - - UnknownUpdateItem - - Release date: - Uitgebracht op: - - - - UpdateCtrlWidget - - Check Again - Opnieuw controleren - - - Update failed: insufficient disk space - Bijwerken mislukt: onvoldoende vrije schijfruimte - - - Dependency error, failed to detect the updates - Bijwerken mislukt: afhankelijkheidsfout - - - Restart the computer to use the system and the applications properly - Start de computer opnieuw op om de wijzigingen toe te passen - - - Network disconnected, please retry after connected - Geen netwerkverbinding - maak verbinding en probeer het opnieuw - - - Your system is not authorized, please activate first - Je systeem is niet geactiveerd - - - This update may take a long time, please do not shut down or reboot during the process - Het bijwerken kan lang duren. Sluit het systeem niet af en start niet opnieuw op. - - - Updates Available - Updates beschikbaar - - - Current Edition - Huidige versie - - - Updating... - Bezig met bijwerken… - - - Update All - Alles bijwerken - - - Last checking time: - Recenste controle: - - - Your system is up to date - Je systeem is actueel - - - Check for Updates - Controleren op updates - - - Checking for updates, please wait... - Bezig met controleren op updates… - - - The newest system installed, restart to take effect - De nieuwste versie is geïnstalleerd - herstart om de wijzigingen toe te passen - - - %1% downloaded (Click to pause) - %1% gedownload (klik om te pauzeren) - - - %1% downloaded (Click to continue) - %1% gedownload (klik om verder te gaan) - - - Your battery is lower than 50%, please plug in to continue - Je accuniveau is lager dan 50% - sluit de netstroomadapter aan om door te gaan - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Zorg er voor dat je voldoende vermogen hebt om opnieuw op te starten. Schakel je computer niet uit en koppel de netstroomadapter niet af. - - - Size - Grootte - - - - UpdateModule - - Updates - Updates - - - - UpdatePlugin - - Check for Updates - Controleren op updates - - - - UpdateSettingItem - - Insufficient disk space - Onvoldoende vrije ruimte - - - Update failed: insufficient disk space - Bijwerken mislukt: onvoldoende vrije schijfruimte - - - Update failed - Update mislukt - - - Network error - Netwerkfout - - - Network error, please check and try again - Netwerkfout - probeer het opnieuw - - - Packages error - Pakketfout - - - Packages error, please try again - Pakketfout - probeer het opnieuw - - - Dependency error - Afhankelijkheidsfout - - - Unmet dependencies - Niet-voldane afhankelijkheden - - - The newest system installed, restart to take effect - De nieuwste versie is geïnstalleerd - herstart om de wijzigingen toe te passen - - - Waiting - Bezig met wachten… - - - Backing up - Bezig met back-uppen… - - - System backup failed - Back-uppen mislukt - - - Release date: - Uitgebracht op: - - - Server - Server - - - Desktop - Computer - - - Version - Versie - - - - UpdateSettingsModule - - Update Settings - Update-instellingen - - - System - Systeem - - - Security Updates Only - Alleen beveiligingsupdates - - - Switch it on to only update security vulnerabilities and compatibility issues - Schakel in om alléén beveiligings- en compatibiliteitsupdates te installeren - - - Third-party Repositories - Externe pakketbronnen - - - linglong update - Linglong-update - - - Linglong Package Update - Linglong-pakketupdate - - - If there is update for linglong package, system will update it for you - Als er een update van een linglong-pakket is, dan wordt deze automatisch geïnstalleerd - - - Other settings - Overige instellingen - - - Auto Check for Updates - Automatisch controleren op updates - - - Auto Download Updates - Updates automatisch downloaden - - - Switch it on to automatically download the updates in wireless or wired network - Schakel in om automatisch updates te downloaden via bekabelde of draadloze verbindingen - - - Auto Install Updates - Updates automatisch installeren - - - Updates Notification - Updatemeldingen tonen - - - Clear Package Cache - Pakketcache legen - - - Updates from Internal Testing Sources - Updates uit interne testbronnen - - - internal update - Interne update - - - Join the internal testing channel to get deepin latest updates - Schakel het interne testkanaal in om de nieuwste Deepin-updates te ontvangen - - - System Updates - Systeemupdates - - - Security Updates - Beveiligingsupdates - - - Install updates automatically when the download is complete - Updates automatisch installeren zodra het downloaden is afgerond - - - Install "%1" automatically when the download is complete - ‘%1’ automatisch installeren zodra het downloaden is afgerond - - - - UpdateWidget - - Current Edition - Huidige versie - - - - UpdateWorker - - System Updates - Systeemupdates - - - Fixed some known bugs and security vulnerabilities - Er zijn enkele gemelde bugs en beveiligingsproblemen opgelost - - - Security Updates - Beveiligingsupdates - - - Third-party Repositories - Externe pakketbronnen - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Als je het interne testkanaal nu verlaat, kan je systeem mogelijk beschadigd raken. Weet je het zeker? - - - Your are safe to leave the internal testing channel - Het is veilig om het interne testkanaal te verlaten - - - Cannot find machineid - Geen computer-id aangetroffen - - - Cannot Uninstall package - Het pakket kan niet worden verwijderd - - - Error when exit testingChannel - Het testkanaal kan niet worden uitgeschakeld - - - try to manually uninstall package - Probeer het pakket handmatig te verwijderen - - - Cannot install package - Het pakket kan niet worden geïnstalleerd - - - - UseBatteryModule - - On Battery - Op accu - - - Never - Nooit - - - Shut down - Afsluiten - - - Suspend - Pauzestand - - - Hibernate - Slaapstand - - - Turn off the monitor - Beeldscherm uitschakelen - - - Do nothing - Niets doen - - - 1 Minute - 1 minuut - - - %1 Minutes - %1 minuten - - - 1 Hour - 1 uur - - - Screen and Suspend - Beeldscherm en pauzestand - - - Turn off the monitor after - Beeldscherm uitschakelen na - - - Lock screen after - Het scherm wordt vergrendeld na - - - Computer suspends after - Computer onderbreken na - - - Computer will suspend after - De computer wordt onderbroken na - - - When the lid is closed - Als het deksel wordt gesloten - - - When the power button is pressed - Actie na indrukken van aan-/uitknop - - - Low Battery - Laag accuniveau - - - Low battery notification - Melding tonen als accuniveau laag is - - - Low battery level - Laag accuniveau - - - Auto suspend battery level - Automatisch onderbreken bij accuniveau van - - - Battery Management - Accubeheer - - - Display remaining using and charging time - Resterend gebruik en resterende oplaadtijd tonen - - - Maximum capacity - Maximale capaciteit - - - Show the shutdown Interface - Afsluitscherm tonen - - - - UseElectricModule - - Plugged In - Op netstroom - - - 1 Minute - 1 minuut - - - %1 Minutes - %1 minuten - - - 1 Hour - 1 uur - - - Never - Nooit - - - Screen and Suspend - Beeldscherm en pauzestand - - - Turn off the monitor after - Beeldscherm uitschakelen na - - - Lock screen after - Het scherm wordt vergrendeld na - - - Computer suspends after - Computer onderbreken na - - - When the lid is closed - Als het deksel wordt gesloten - - - When the power button is pressed - Actie na indrukken van aan-/uitknop - - - Shut down - Afsluiten - - - Suspend - Pauzestand - - - Hibernate - Slaapstand - - - Turn off the monitor - Beeldscherm uitschakelen - - - Show the shutdown Interface - Afsluitscherm tonen - - - Do nothing - Niets doen - - - - WacomModule - - Drawing Tablet - Tekentablet - - - Mode - Modus - - - Pressure Sensitivity - Drukgevoeligheid - - - Pen - Pen - - - Mouse - Muis - - - Light - Licht - - - Heavy - Zwaar - - - - main - - Control Center provides the options for system settings. - In het instellingencentrum vind je de systeeminstellingen. - - - - updateControlPanel - - Downloading - Bezig met downloaden… - - - Waiting - Bezig met wachten… - - - Installing - Bezig met installeren… - - - Backing up - Bezig met back-uppen… - - - Download and install - Downloaden en installeren - - - Learn more - Meer informatie - - - diff --git a/dcc-old/translations/dde-control-center_pa.ts b/dcc-old/translations/dde-control-center_pa.ts deleted file mode 100644 index ee29a3fe0f..0000000000 --- a/dcc-old/translations/dde-control-center_pa.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - ਕਨੈਕਟ ਕਰੋ - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - ਰੱਦ ਕਰੋ - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - ਮੁਕੰਮਲ - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - ਰੱਦ ਕਰੋ - - - Next - - - - Iris enrolled - - - - Done - ਮੁਕੰਮਲ - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - 15 ਅੱਖਰਾਂ ਤੋਂ ਵੱਧ ਨਹੀਂ - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - ਬਲੂਟੁੱਥ - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - ਰੱਦ ਕਰੋ - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - ਰੱਦ ਕਰੋ - - - Confirm - button - ਤਸਦੀਕ ਕਰੋ - - - - dccV23::AccountSpinBox - - Always - ਹਮੇਸ਼ਾਂ - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - ਵਰਤੋਂਕਾਰ ਨਾਂ - - - Change Password - ਪਾਸਵਰਡ ਬਦਲੋ - - - Delete User - - - - User Type - - - - Auto Login - ਆਟੋ ਲਾਗਇਨ - - - Login Without Password - ਪਾਸਵਰਡ ਬਿਨਾਂ ਲਾਗਇਨ ਕਰੋ - - - Validity Days - ਵੈਧਤਾ ਦਿਨ - - - Group - ਗਰੁੱਪ - - - The full name is too long - ਪੂਰਾ ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਹੈ - - - Standard User - ਮਿਆਰੀ ਵਰਤੋਂਕਾਰ - - - Administrator - ਪਰਸ਼ਾਸ਼ਕ - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - ਪੂਰਾ ਨਾਂ - - - Go to Settings - ਸੈਟਿੰਗਾਂ ਉੱਤੇ ਜਾਓ - - - Cancel - ਰੱਦ ਕਰੋ - - - OK - ਠੀਕ ਹੈ - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - ਰੱਦ ਕਰੋ - - - Save - ਸੰਭਾਲੋ - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - ਚਿਤੱਰ - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - ਪਾਸਵਰਡ ਬਦਲੋ - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - ਲੋੜੀਂਦੀ - - - Cancel - button - ਰੱਦ ਕਰੋ - - - Confirm - button - ਤਸਦੀਕ ਕਰੋ - - - Password cannot be empty - ਪਾਸਵਰਡ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ - - - Passwords do not match - ਪਾਸਵਰਡ ਮਿਲਦੇ ਨਹੀਂ ਹਨ - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - ਆਮ ਸੈਟਿੰਗਾਂ - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - ਗਰੁੱਪ - - - Cancel - ਰੱਦ ਕਰੋ - - - Create - ਬਣਾਓ - - - New User - - - - User Type - - - - Username - ਵਰਤੋਂਕਾਰ ਨਾਂ - - - Full Name - ਪੂਰਾ ਨਾਂ - - - Password - ਪਾਸਵਰਡ - - - Repeat Password - ਪਾਸਵਰਡ ਦੁਹਰਾਓ - - - Password Hint - - - - The full name is too long - ਪੂਰਾ ਨਾਂ ਬਹੁਤ ਲੰਮਾ ਹੈ - - - Passwords do not match - ਪਾਸਵਰਡ ਮਿਲਦੇ ਨਹੀਂ ਹਨ - - - Standard User - ਮਿਆਰੀ ਵਰਤੋਂਕਾਰ - - - Administrator - ਪਰਸ਼ਾਸ਼ਕ - - - Customized - ਕਸਟਾਈਜ਼ ਕੀਤਾ - - - Required - ਲੋੜੀਂਦੀ - - - optional - ਚੋਣਵਾਂ - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - ਪਾਲਸੀਕਿੱਟ ਪਰਮਾਣਕਿਤਾ ਅਸਫ਼ਲ ਹੈ - - - Username must be between 3 and 32 characters - ਵਰਤੋਂਕਾਰ-ਨਾਂ 3 ਤੋਂ 32 ਅੱਖਰਾਂ ਵਿਚਾਲੇ ਚਾਹੀਦਾ ਹੈ - - - The first character must be a letter or number - ਪਹਿਲਾਂ ਅੱਖਰ ਵਰਣਮਾਲਾ ਜਾਂ ਅੰਕ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ - - - Your username should not only have numbers - ਤੁਹਾਡੇ ਵਰਤੋਂਕਾਰ-ਨਾਂ ਵਿੱਚ ਸਿਰਫ਼ ਨਹੀਂ ਹੋਣੇ ਚਾਹੀਦੇ - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - ਚਿਤੱਰ - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - ਲੋੜੀਂਦੀ - - - Command - - - - Cancel - ਰੱਦ ਕਰੋ - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - ਲੋੜੀਂਦੀ - - - Cancel - ਰੱਦ ਕਰੋ - - - Save - ਸੰਭਾਲੋ - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - ਰੱਦ ਕਰੋ - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - ਡਿਸਪਲੇਅ - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - ਸੋਧੋ - - - Add Keyboard Layout - - - - Done - ਮੁਕੰਮਲ - - - - dccV23::KeyboardLayoutDialog - - Cancel - ਰੱਦ ਕਰੋ - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - ਕੀਬੋਰਡ ਤੇ ਭਾਸ਼ਾ - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - ਮਦਦ - - - - dccV23::ModifyPasswdPage - - Change Password - ਪਾਸਵਰਡ ਬਦਲੋ - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - ਮੌਜੂਦਾ ਪਾਸਵਰਡ - - - Forgot password? - - - - New Password - ਨਵਾਂ ਪਾਸਵਰਡ - - - Repeat Password - ਪਾਸਵਰਡ ਦੁਹਰਾਓ - - - Password Hint - - - - Cancel - ਰੱਦ ਕਰੋ - - - Save - ਸੰਭਾਲੋ - - - Passwords do not match - ਪਾਸਵਰਡ ਮਿਲਦੇ ਨਹੀਂ ਹਨ - - - Required - ਲੋੜੀਂਦੀ - - - Optional - - - - Password cannot be empty - ਪਾਸਵਰਡ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - ਮਾਊਸ - - - General - - - - Touchpad - ਟੱਚਪੈਡ - - - TrackPoint - ਟਰੈਕਪੈਡ - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - ਦੁਹਰਾ ਬਣਾਓ - - - Extend - ਫੈਲਾਓ - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - ਨੋਟੀਫਿਕੇਸ਼ਨ - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - ਪਾਸਵਰਡ ਖਾਲੀ ਨਹੀਂ ਹੋ ਸਕਦਾ ਹੈ - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - ਰੱਦ ਕਰੋ - - - Delete - ਹਟਾਓ - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - ਲੱਭੋ - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - ਰੱਦ ਕਰੋ - - - Confirm - ਤਸਦੀਕ ਕਰੋ - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - ਸੋਧੋ - - - Done - ਮੁਕੰਮਲ - - - - dccV23::ShortCutSettingWidget - - System - ਸਿਸਟਮ - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - ਰੱਦ ਕਰੋ - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - ਸਿਸਟਮ ਜਾਣਕਾਰੀ - - - - dccV23::SystemLanguageSettingDialog - - Cancel - ਰੱਦ ਕਰੋ - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - ਸੋਧੋ - - - Language List - - - - Add Language - - - - Done - ਮੁਕੰਮਲ - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - ਤਸਦੀਕ ਕਰੋ - - - Cancel - ਰੱਦ ਕਰੋ - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - ਮੂਲ ਐਪਲੀਕੇਸ਼ਨਾਂ - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - ਸੰਗੀਤ - - - Video - ਵੀਡਿਓ - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - ਰੱਦ ਕਰੋ - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - ਆਕਾਰ - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - ਟਿਕਾਣਆ - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - ਸੋਧੋ - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - ਮੁਕੰਮਲ - - - Add Face - - - - The name already exists - ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - ਫਿੰਗਰਪਰਿੰਟ ਜੋੜੋ - - - Cancel - ਰੱਦ ਕਰੋ - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - ਸੋਧੋ - - - Fingerprint Password - ਫਿੰਗਰਪਰਿੰਟ ਪਾਸਵਰਡ - - - You can add up to 10 fingerprints - ਤੁਸੀਂ 10 ਫਿੰਗਰਪਰਿੰਟ ਤੱਕ ਜੋੜ ਸਕਦੇ ਹੋ - - - Done - ਮੁਕੰਮਲ - - - The name already exists - ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ - - - Add Fingerprint - ਫਿੰਗਰਪਰਿੰਟ ਜੋੜੋ - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - ਸੋਧੋ - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - ਮੁਕੰਮਲ - - - Add Iris - - - - The name already exists - ਨਾਂ ਪਹਿਲਾਂ ਹੀ ਮੌਜੂਦ ਹੈ - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - ਨਿੱਜੀ ਬਣਾਉਣਾ - - - - PersonalizationThemeList - - Cancel - ਰੱਦ ਕਰੋ - - - Save - ਸੰਭਾਲੋ - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - ਰੱਦ ਕਰੋ - - - Confirm - ਤਸਦੀਕ ਕਰੋ - - - - PowerModule - - Power - ਊਰਜਾ - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - ਕੈਲੰਡਰ - - - Screen Capture - - - - - QObject - - Control Center - ਕੰਟਰੋਲ ਸੈਂਟਰ - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - ਰੱਦ ਕਰੋ - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - ਲੱਭੋ - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - ਬੰਦ ਕਰੋ - - - Log out - ਲਾਗ ਆਉਟ ਕਰੋ - - - Wake up - - - - Volume +/- - - - - Notification - ਨੋਟੀਫਿਕੇਸ਼ਨ - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - ਆਵਾਜ਼ - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - ਸਮਾਂ ਸੈਟਿੰਗਾਂ - - - Time - - - - Auto Sync - - - - Reset - - - - Save - ਸੰਭਾਲੋ - - - Server - - - - Address - - - - Required - ਲੋੜੀਂਦੀ - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - ਰੱਦ ਕਰੋ - - - Confirm - ਤਸਦੀਕ ਕਰੋ - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - ਸੰਭਾਲੋ - - - - TimezoneItem - - Tomorrow - - - - Yesterday - ਕੱਲ੍ਹ - - - Today - ਅੱਜ - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - ਰੱਦ ਕਰੋ - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - ਆਕਾਰ - - - - UpdateModule - - Updates - ਅੱਪਡੇਟ ਕਰੋ - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - ਸਿਸਟਮ - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - ਬੰਦ ਕਰੋ - - - Suspend - ਸਸਪੈਂਡ ਕਰੋ - - - Hibernate - ਹਾਈਬਰਨੇਟ - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - ਬੰਦ ਕਰੋ - - - Suspend - ਸਸਪੈਂਡ ਕਰੋ - - - Hibernate - ਹਾਈਬਰਨੇਟ - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - ਡਰਾਇੰਗ ਟੇਬਲੇਟ - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - ਮਾਊਸ - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_pam.ts b/dcc-old/translations/dde-control-center_pam.ts deleted file mode 100644 index 0c4339932b..0000000000 --- a/dcc-old/translations/dde-control-center_pam.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Kumunekta - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - I-cancel - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - Isara - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - I-cancel - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - I-cancel - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - I-cancel - - - Confirm - button - Kumpirman - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Username - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - Administrador - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - I-cancel - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - I-cancel - - - Save - Isinup - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - I-cancel - - - Confirm - button - Kumpirman - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - I-cancel - - - Create - - - - New User - - - - User Type - - - - Username - Username - - - Full Name - - - - Password - Pasword - - - Repeat Password - Pasibayuan Password - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - Administrador - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - Lagyu - - - Required - - - - Command - - - - Cancel - I-cancel - - - Add - Idagdag - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - I-cancel - - - Save - Isinup - - - Shortcut - - - - Name - Lagyu - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - I-cancel - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - Alilan - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - I-cancel - - - Add - Idagdag - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - Pasibayuan Password - - - Password Hint - - - - Cancel - I-cancel - - - Save - Isinup - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - General - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - I-cancel - - - Delete - Buran - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - Standard - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Manintun - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - I-cancel - - - Confirm - Kumpirman - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Alilan - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - Workspace - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - I-cancel - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - I-cancel - - - Add - Idagdag - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Alilan - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Kumpirman - - - Cancel - I-cancel - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - Musika - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - I-cancel - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Alilan - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - I-cancel - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Alilan - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - General - - - Balanced - Normal - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Alilan - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Desktop - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - I-cancel - - - Save - Isinup - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - Custom - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - I-cancel - - - Confirm - Kumpirman - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - I-cancel - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Manintun - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - Kamalian - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - Ireset - - - Save - Isinup - - - Server - Server - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - I-cancel - - - Confirm - Kumpirman - - - Add Timezone - - - - Add - Idagdag - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Isinup - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - I-cancel - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Server - - - Desktop - Desktop - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_pl.ts b/dcc-old/translations/dde-control-center_pl.ts deleted file mode 100644 index a881e67614..0000000000 --- a/dcc-old/translations/dde-control-center_pl.ts +++ /dev/null @@ -1,3983 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Zezwól innym urządzeniom Bluetooth znaleźć to urządzenie - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Włącz Bluetooth, aby znaleźć pobliskie urządzenia (głośniki, klawiaturę, myszkę) - - - My Devices - Moje urządzenia - - - Other Devices - Inne urządzenia - - - Show Bluetooth devices without names - Pokaż urządzenia Bluetooth bez nazw - - - Connect - Połącz - - - Disconnect - Rozłącz - - - Rename - Zmień nazwę - - - Send Files - Wyślij pliki - - - Ignore this device - Zignoruj to urządzenie - - - Connecting - Łączenie - - - Disconnecting - Rozłączanie - - - - AddButtonWidget - - Add Application - Dodaj program - - - Open Desktop file - Otwórz plik .desktop - - - Apps (*.desktop) - Aplikacje (*.desktop) - - - All files (*) - Wszystkie pliki (*) - - - - AddFaceInfoDialog - - Enroll Face - Zapisz twarz - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Upewnij się, że wszystkie części twarzy są odkryte i dobrze widoczne. Twoja twarz powinna być również dobrze oświetlona. - - - Cancel - Anuluj - - - Next - Następna - - - Face enrolled - Twarz zapisana - - - Use your face to unlock the device and make settings later - Użyj swojej twarzy, aby odblokować urządzenie i skonfiguruj urządzenie później - - - Done - Gotowe - - - Failed to enroll your face - Nie udało się zapisać twarzy - - - Try Again - Spróbuj ponownie - - - Close - Zamknij - - - - AddFingerDialog - - Cancel - Anuluj - - - Done - Gotowe - - - Scan Again - Skanuj ponownie - - - Scan Suspended - Skanowanie zatrzymane - - - - AddIrisInfoDialog - - Enroll Iris - Zapisz tęczówkę - - - Cancel - Anuluj - - - Next - Następna - - - Iris enrolled - Tęczówka zapisana - - - Done - Gotowe - - - Failed to enroll your iris - Nie udało się zapisać Twojej tęczówki - - - Try Again - Spróbuj ponownie - - - - AuthenticationInfoItem - - No more than 15 characters - Nie więcej niż 15 znaków - - - Use letters, numbers and underscores only, and no more than 15 characters - Używaj tylko liter, cyfr i znaków podkreślenia, nie więcej niż 15 znaków - - - Use letters, numbers and underscores only - Używaj tylko liter, cyfr i podkreśleń - - - - AuthenticationModule - - Biometric Authentication - Uwierzytelnienie biometryczne - - - - AuthenticationPlugin - - Fingerprint - Odcisk palca - - - Face - Twarz - - - Iris - Tęczówka - - - - BluetoothDeviceModel - - Connected - Połączono - - - Not connected - Nie połączono - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Menedżer urządzeń Bluetooth - - - - CharaMangerModel - - Fingerprint1 - Odcisk palca 1 - - - Fingerprint2 - Odcisk palca 2 - - - Fingerprint3 - Odcisk palca 3 - - - Fingerprint4 - Odcisk palca 4 - - - Fingerprint5 - Odcisk palca 5 - - - Fingerprint6 - Odcisk palca 6 - - - Fingerprint7 - Odcisk palca 7 - - - Fingerprint8 - Odcisk palca 8 - - - Fingerprint9 - Odcisk palca 9 - - - Fingerprint10 - Odcisk palca 10 - - - Scan failed - Skanowanie nie powiodło się - - - The fingerprint already exists - Odcisk palca już istnieje - - - Please scan other fingers - Proszę zeskanować inne palce - - - Unknown error - Nieznany błąd - - - Scan suspended - Skanowanie zatrzymane - - - Cannot recognize - Nie można rozpoznać - - - Moved too fast - Przesunięto zbyt szybko - - - Finger moved too fast, please do not lift until prompted - Palec został przesunięty zbyt szybko, nie podnoś go bez otrzymania komunikatu - - - Unclear fingerprint - Nieczytelny odcisk palca - - - Clean your finger or adjust the finger position, and try again - Oczyść palec lub dostosuj pozycję palca i spróbuj ponownie - - - Already scanned - Już zeskanowane - - - Adjust the finger position to scan your fingerprint fully - Dostosuj pozycję palca, aby w pełni zeskanować odcisk palca - - - Finger moved too fast. Please do not lift until prompted - Palec został przesunięty zbyt szybko, proszę nie podnoś go bez otrzymania komunikatu - - - Lift your finger and place it on the sensor again - Podnieś palec i ponownie umieść go na czujniku - - - Position your face inside the frame - Ustaw swoją twarz wewnątrz ramki - - - Face enrolled - Twarz zapisana - - - Position a human face please - Proszę o ustawienie ludzkiej twarzy - - - Keep away from the camera - Oddal się od kamery - - - Get closer to the camera - Zbliż się do kamery - - - Do not position multiple faces inside the frame - Nie wprowadzaj więcej niż jednej twarzy wewnątrz ramki - - - Make sure the camera lens is clean - Upewnij się, że soczewka kamery jest czysta - - - Do not enroll in dark, bright or backlit environments - Nie skanuj w ciemnych, jaskrawych lub podświetlonych miejscach - - - Keep your face uncovered - Utrzymuj swoją twarz odkrytą - - - Scan timed out - Upłynął czas oczekiwania skanowania - - - Device crashed, please scan again! - Urządzenie zawiesiło się, proszę zeskanuj ponownie! - - - Cancel - Anuluj - - - - CooperationSettingsDialog - - Collaboration Settings - Ustawienia kolaboracji - - - Share mouse and keyboard - Udostępnij myszkę i klawiaturę - - - Share your mouse and keyboard across devices - Udostępnij myszkę i klawiaturę pomiędzy urządzeniami - - - Share clipboard - Udostępnij schowek - - - Storage path for shared files - Ścieżka zapisu dla plików współdzielonych - - - Share the copied content across devices - Udostępnij skopiowaną zawartość pomiędzy urządzeniami - - - Cancel - button - Anuluj - - - Confirm - button - Potwierdź - - - - dccV23::AccountSpinBox - - Always - Zawsze - - - - dccV23::AccountsModule - - Users - Użytkownicy - - - User management - Zarządzanie użytkownikami - - - Create User - Utwórz użytkownika - - - Username - Nazwa użytkownika - - - Change Password - Zmień hasło - - - Delete User - Usuń użytkownika - - - User Type - Typ użytkownika - - - Auto Login - Automatyczne logowanie - - - Login Without Password - Logowanie bez podawania hasła - - - Validity Days - Dni ważności - - - Group - Grupa - - - The full name is too long - Imię i nazwisko jest za długie - - - Standard User - Standardowy użytkownik - - - Administrator - Administrator - - - Reset Password - Resetuj hasło - - - The full name has been used by other user accounts - Imię i nazwisko jest już w użyciu przez innych użytkowników - - - Full Name - Imię i nazwisko - - - Go to Settings - Przejdź do ustawień - - - Cancel - Anuluj - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - "Automatyczne logowanie" może być włączone tylko dla jednego użytkownika, prosimy najpierw wyłącz tę opcję dla "%1" - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Twój host został pomyślnie usunięty z serwera domeny - - - Your host joins the domain server successfully - Twój host pomyślnie dołącza do serwera domeny - - - Your host failed to leave the domain server - Twój host nie mógł opuścić serwera domeny - - - Your host failed to join the domain server - Twój host nie przyłączył się do serwera domeny - - - AD domain settings - Ustawienia domeny AD - - - Password not match - Hasła nie pasują do siebie - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Pokaż powiadomienia z %1 na komputerze i w Centrum powiadomień. - - - Play a sound - Odtwórz dźwięk - - - Show messages on lockscreen - Pokaż wiadomości na ekranie blokady - - - Show in notification center - Pokaż w Centrum powiadomień - - - Show message preview - Pokaż podgląd wiadomości - - - - dccV23::AvatarListDialog - - Person - Osoba - - - Animal - Zwierzę - - - Illustration - Ilustracja - - - Expression - Ekspresja - - - Custom Picture - Własne zdjęcie - - - Cancel - Anuluj - - - Save - Zapisz - - - - dccV23::AvatarListFrame - - Dimensional Style - Styl wymiarowy - - - Flat Style - Styl płaski - - - - dccV23::AvatarListView - - Images - Obrazy - - - - dccV23::BootWidget - - Updating... - Aktualizowanie... - - - Startup Delay - Opóźnienie startu systemu - - - Theme - Motyw - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Kliknij opcję w menu rozruchu, aby ustawić ją jako domyślną, a następnie przeciągnij i upuść obraz, aby zmienić tło - - - Click the option in boot menu to set it as the first boot - Zaznacz opcję w menu rozruchu aby ustawić jako pierwszy wybór - - - Switch theme on to view it in boot menu - Włącz motyw, aby wyświetlić go w menu rozruchu - - - GRUB Authentication - Uwierzytelnienie GRUB - - - GRUB password is required to edit its configuration - Hasło GRUB jest wymagane, aby móc edytować jego plik konfiguracyjny - - - Change Password - Zmień hasło - - - Boot Menu - Menu rozruchu - - - Change GRUB password - Zmień hasło GRUB - - - Username: - Nazwa użytkownika: - - - root - root - - - New password: - Nowe hasło: - - - Repeat password: - Powtórz hasło: - - - Required - Wymagane - - - Cancel - button - Anuluj - - - Confirm - button - Potwierdź - - - Password cannot be empty - Hasło nie może być puste - - - Passwords do not match - Hasła nie pasują do siebie - - - - dccV23::BrightnessWidget - - Brightness - Jasność - - - Color Temperature - Temperatura koloru - - - Auto Brightness - Automatyczna jasność - - - Night Shift - Nocna zmiana - - - The screen hue will be auto adjusted according to your location - Odcień ekranu zostanie automatycznie dostosowany do Twojej lokalizacji - - - Change Color Temperature - Zmień temperaturę barwową - - - Cool - Chłodny - - - Warm - Ciepły - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Kolaboracja wieloekranowa - - - PC Collaboration - Kolaboracja PC - - - Connect to - Połącz z - - - Select a device for collaboration - Wybierz urządzenie do kolaboracji - - - Device Orientation - Orientacja urządzenia - - - On the top - Na górze - - - On the right - Po prawej - - - On the bottom - Na dole - - - On the left - Po lewej - - - My Devices - Moje urządzenia - - - Other Devices - Inne urządzenia - - - - dccV23::CommonInfoPlugin - - General Settings - Ustawienia ogólne - - - Boot Menu - Menu rozruchu - - - Developer Mode - Tryb dewelopera - - - User Experience Program - Program doświadczeń użytkownika - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Zaakceptuj i dołącz do programu doświadczeń użytkownika - - - The Disclaimer of Developer Mode - Ostrzeżenie o trybie dewelopera - - - Agree and Request Root Access - Zaakceptuj i poproś o dostęp do konta root - - - Failed to get root access - Nie udało się uzyskać dostępu do konta root - - - Please sign in to your Union ID first - Najpierw zaloguj się do swojego Union ID - - - Cannot read your PC information - Nie można odczytać informacji o komputerze - - - No network connection - Brak połączenia z siecią - - - Certificate loading failed, unable to get root access - Wczytywanie certyfikatu nie powiodło się, nie można uzyskać dostępu do konta root - - - Signature verification failed, unable to get root access - Weryfikacja podpisu nie powiodła się, nie można uzyskać dostępu do konta root - - - - dccV23::CreateAccountPage - - Group - Grupa - - - Cancel - Anuluj - - - Create - Utwórz - - - New User - Nowy użytkownik - - - User Type - Typ użytkownika - - - Username - Nazwa użytkownika - - - Full Name - Imię i nazwisko - - - Password - Hasło - - - Repeat Password - Powtórz hasło - - - Password Hint - Wskazówka do hasła - - - The full name is too long - Imię i nazwisko jest za długie - - - Passwords do not match - Hasła nie pasują do siebie - - - Standard User - Standardowy użytkownik - - - Administrator - Administrator - - - Customized - Dostosowane - - - Required - Wymagane - - - optional - Opcjonalne - - - The hint is visible to all users. Do not include the password here. - Wskazówka będzie widoczna dla wszystkich użytkowników. Nie wprowadzaj tutaj swojego hasła. - - - Policykit authentication failed - Uwierzytelnienie Policykit nie powiodło się - - - Username must be between 3 and 32 characters - Nazwa użytkownika musi zawierać od 3 do 32 znaków - - - The first character must be a letter or number - Pierwszy znak musi być literą lub cyfrą - - - Your username should not only have numbers - Twoja nazwa użytkownika powinna zawierać nie tylko cyfry - - - The username has been used by other user accounts - Nazwa użytkownika jest już używana przez innych użytkowników - - - The full name has been used by other user accounts - Imię i nazwisko jest już w użyciu przez innych użytkowników - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Jeszcze nie załadowano zdjęcia, kliknij lub przeciągnij, aby załadować zdjęcie - - - Uploaded file type is incorrect, please upload again - Załadowany typ pliku jest nieprawidłowy, spróbuj ponownie - - - Images - Obrazy - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Dodaj własny skrót - - - Name - Nazwa - - - Required - Wymagane - - - Command - Komenda - - - Cancel - Anuluj - - - Add - Dodaj - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ten skrót jest w konflikcie z %1, kliknij Dodaj, aby go nadpisać - - - - dccV23::CustomEdit - - Required - Wymagane - - - Cancel - Anuluj - - - Save - Zapisz - - - Shortcut - Skrót - - - Name - Nazwa - - - Command - Komenda - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ten skrót jest w konflikcie z %1, kliknij Dodaj, aby go nadpisać - - - - dccV23::CustomItem - - Shortcut - Skrót - - - Please enter a shortcut - Wprowadź skrót - - - - dccV23::CustomRegionFormatDialog - - Custom format - Format niestandardowy - - - First day of week - Pierwszy dzień tygodnia - - - Short date - Krótka data - - - Long date - Długa data - - - Short time - Krótka godzina - - - Long time - Długa godzina - - - Currency symbol - Symbol waluty - - - Numbers - Liczby - - - Paper - Papier - - - Cancel - Anuluj - - - Save - Zapisz - - - - dccV23::DetailInfoItem - - For more details, visit: - Aby uzyskać więcej informacji, odwiedź: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Poproś o dostęp do konta root - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Najpierw zaloguj się do swojego Union ID - - - Next - Następna - - - Export PC Info - Eksportuj informacje o komputerze - - - Import Certificate - Importuj certyfikat - - - 1. Export your PC information - 1. Wyeksportuj informacje o komputerze - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Przejdź do https://www.chinauos.com/developMode, aby pobrać certyfikat offline - - - 3. Import the certificate - 3. Zaimportuj certyfikat - - - - dccV23::DeveloperModeWidget - - Request Root Access - Poproś o dostęp do konta root - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Tryb dewelopera umożliwia uzyskanie uprawnień administratora, instalowanie i uruchamianie niepodpisanych aplikacji niewymienionych w sklepie z aplikacjami, jednakże integralność systemu może ulec naruszeniu, prosimy zachować ostrożność. - - - The feature is not available at present, please activate your system first - Ta funkcja nie jest obecnie dostępna, prosimy najpierw o aktywację systemu - - - Failed to get root access - Nie udało się uzyskać dostępu do konta root - - - Please sign in to your Union ID first - Najpierw zaloguj się do swojego Union ID - - - Cannot read your PC information - Nie można odczytać informacji o komputerze - - - No network connection - Brak połączenia z siecią - - - Certificate loading failed, unable to get root access - Wczytywanie certyfikatu nie powiodło się, nie można uzyskać dostępu do konta root - - - Signature verification failed, unable to get root access - Weryfikacja podpisu nie powiodła się, nie można uzyskać dostępu do konta root - - - To make some features effective, a restart is required. Restart now? - Aby zastosować zmiany, wymagany jest restart. Uruchomić ponownie teraz? - - - Cancel - Anuluj - - - Restart Now - Uruchom ponownie teraz - - - Root Access Allowed - Dostęp do konta root dozwolony - - - - dccV23::DisplayPlugin - - Display - Ekran - - - Light, resolution, scaling and etc - Jasność, skalowanie, rozdzielczość itp. - - - - dccV23::DouTestWidget - - Double-click Test - Test dwukrotnego kliknięcia - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Ustawienia klawiatury - - - Repeat Delay - Opóźnienie powtórzenia - - - Short - Krótki - - - Long - Długi - - - Repeat Rate - Tempo powtórzenia - - - Slow - Powolna - - - Fast - Szybka - - - Test here - Przetestuj tutaj - - - Numeric Keypad - Klawiatura numeryczna - - - Caps Lock Prompt - Komunikat Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Tryb dla leworęcznych - - - Disable touchpad while typing - Wyłącz touchpad podczas pisania - - - Scrolling Speed - Szybkość przewijania - - - Double-click Speed - Szybkość dwukliku - - - Slow - Powolna - - - Fast - Szybka - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Układ klawiatury - - - Edit - Edytuj - - - Add Keyboard Layout - Dodaj układ klawiatury - - - Done - Gotowe - - - - dccV23::KeyboardLayoutDialog - - Cancel - Anuluj - - - Add - Dodaj - - - Add Keyboard Layout - Dodaj układ klawiatury - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Klawiatura i język - - - Keyboard - Klawiatura - - - Keyboard Settings - Ustawienia klawiatury - - - keyboard Layout - Układ klawiatury - - - Keyboard Layout - Układ klawiatury - - - Language - Język - - - Shortcuts - Skróty - - - - dccV23::MainWindow - - Help - Pomoc - - - - dccV23::ModifyPasswdPage - - Change Password - Zmień hasło - - - Reset Password - Resetuj hasło - - - Resetting the password will clear the data stored in the keyring. - Zresetowanie hasła spowoduje usunięcie danych zapisanych w keyringu. - - - Current Password - Bieżące hasło - - - Forgot password? - Zapomniałeś hasła? - - - New Password - Nowe hasło - - - Repeat Password - Powtórz hasło - - - Password Hint - Wskazówka do hasła - - - Cancel - Anuluj - - - Save - Zapisz - - - Passwords do not match - Hasła nie pasują do siebie - - - Required - Wymagane - - - Optional - Opcjonalne - - - Password cannot be empty - Hasło nie może być puste - - - The hint is visible to all users. Do not include the password here. - Wskazówka będzie widoczna dla wszystkich użytkowników. Nie wprowadzaj tutaj swojego hasła. - - - Wrong password - Błędne hasło - - - New password should differ from the current one - Nowe hasło powinno różnić się od bieżącego - - - System error - Błąd systemu - - - Network error - Błąd sieci - - - - dccV23::MonitorControlWidget - - Identify - Identyfikuj - - - Gather Windows - Zbierz Okna - - - Screen rearrangement will take effect in %1s after changes - Zmiana ułożenia ekranu nastąpi za %1s, po zatwierdzeniu ustawień - - - - dccV23::MousePlugin - - Mouse - Myszka - - - General - Ogólne - - - Touchpad - Touchpad - - - TrackPoint - Manipulator punktowy - - - - dccV23::MouseSettingWidget - - Pointer Speed - Szybkość wskaźnika - - - Mouse Acceleration - Akceleracja myszki - - - Disable touchpad when a mouse is connected - Wyłącz touchpad po podłączeniu myszki - - - Natural Scrolling - Naturalne przewijanie - - - Slow - Powolna - - - Fast - Szybka - - - - dccV23::MultiScreenWidget - - Multiple Displays - Wiele ekranów - /display/Multiple Displays - - - Mode - Tryb - /display/Mode - - - Main Screen - Ekran główny - /display/Main Scree - - - Duplicate - Duplikuj - - - Extend - Rozszerz - - - Only on %1 - Tylko na %1 - - - - dccV23::NotificationModule - - AppNotify - Powiadomienia aplikacji - - - Notification - Powiadomienia - - - SystemNotify - Powiadomienia systemowe - - - - dccV23::PalmDetectSetting - - Palm Detection - Wykrywanie dłoni - - - Minimum Contact Surface - Minimalna powierzchnia styku - - - Minimum Pressure Value - Minimalna wartość ciśnienia - - - Disable the option if touchpad doesn't work after enabled - Wyłącz tę opcję, jeśli touchpad nie działa po włączeniu - - - - dccV23::PluginManager - - following plugins load failed - Błąd wczytywania następujących wtyczek - - - plugins cannot loaded in time - Nie udało się wczytać wtyczki na czas - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Polityka prywatności - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Jesteśmy świadomi jak ważne Twoje dane osobiste są dla Ciebie. Mając to na uwadze stworzyliśmy Politykę Prywatności, która tłumaczy jak zbieramy, używamy, udostępniamy, przenosimy, ujawniamy publicznie i przechowujemy Twoje informacje.</p><p>Możesz <a href="%1">kliknąć tutaj</a>, aby zobaczyć naszą najnowszą politykę prywatności i/lub zobaczyć ją online poprzez odwiedziny <a href="%1">%1</a>. Prosimy abyś uważnie przeczytał i przyswoił nasze działania w stosunku do prywatności konsumentów. Jeśli masz jakieś pytania, skontaktuj się z nami pod adresem: support@uniontech.com</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Hasło nie może być puste - - - Password must have at least %1 characters - Hasło musi zawierać co najmniej %1 znaków - - - Password must be no more than %1 characters - Hasło nie może zawierać więcej niż %1 znaków - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Hasło musi zawierać tylko litery angielskie (z rozróżnieniem wielkich i małych), cyfry lub symbole specjalne (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Nie więcej niż %1 znaki palindromowe - - - No more than %1 monotonic characters please - Nie więcej niż %1 znaki monotoniczne - - - No more than %1 repeating characters please - Nie więcej niż %1 powtarzające się znaki - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Hasło musi zawierać wielkie litery, małe litery, cyfry i symbole (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Hasło nie może zawierać więcej niż 4 znaki palindromowe - - - Do not use common words and combinations as password - Nie używaj popularnych słów i kombinacji jako hasła - - - Create a strong password please - Utwórz silne hasło - - - It does not meet password rules - Nie spełnia zasad dotyczących haseł - - - - dccV23::RefreshRateWidget - - Refresh Rate - Częstotliwość odświeżania - - - Hz - Hz - - - Recommended - Zalecana - - - - dccV23::RegionFormatDialog - - Region format - Format regionu - - - Default format - Format domyślny - - - First of day - Pierwszy dzień tygodnia - - - Short date - Krótka data - - - Long date - Długa data - - - Short time - Krótka godzina - - - Long time - Długa godzina - - - Currency symbol - Symbol waluty - - - Numbers - Liczby - - - Paper - Papier - - - Cancel - Anuluj - - - Save - Zapisz - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Czy na pewno chcesz usunąć to konto? - - - Delete account directory - Usuń katalog konta - - - Cancel - Anuluj - - - Delete - Usuń - - - - dccV23::ResolutionWidget - - Resolution - Rozdzielczość - /display/Resolution - - - Resize Desktop - Zmień rozmiar pulpitu - /display/Resize Desktop - - - Default - Domyślne - - - Fit - Dopasuj - - - Stretch - Rozciągnij - - - Center - Wyśrodkuj - - - Recommended - Zalecana - - - - dccV23::RotateWidget - - Rotation - Obrót - /display/Rotation - - - Standard - Standardowy - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Monitor obsługuje tylko 100% skalowanie wyświetlania - - - Display Scaling - Skalowanie wyświetlacza - - - - dccV23::SearchInput - - Search - Szukaj - - - - dccV23::SecondaryScreenDialog - - Brightness - Jasność - - - - dccV23::SecurityLevelItem - - Weak - Słabe - - - Medium - Średnie - - - Strong - Silne - - - - dccV23::SecurityQuestionsPage - - Security Questions - Pytania bezpieczeństwa - - - These questions will be used to help reset your password in case you forget it. - Zadane pytania pomogą ci odzyskać hasło, jeśli uda ci się je zapomnieć. - - - Security question 1 - Pytanie bezpieczeństwa 1 - - - Security question 2 - Pytanie bezpieczeństwa 2 - - - Security question 3 - Pytanie bezpieczeństwa 3 - - - Cancel - Anuluj - - - Confirm - Potwierdź - - - Keep the answer under 30 characters - Utrzymaj odpowiedź w maksymalnie 30 znakach - - - Do not choose a duplicate question please - Nie wybieraj dwa razy tego samego pytania - - - Please select a question - Wybierz pytanie - - - What's the name of the city where you were born? - Jak nazywa się miasto, w którym się urodziłeś(aś)? - - - What's the name of the first school you attended? - Jak nazywa się pierwsza szkoła, do której uczęszczałeś(aś)? - - - Who do you love the most in this world? - Kogo kochasz najbardziej na świecie? - - - What's your favorite animal? - Jakie jest twoje ulubione zwierzę? - - - What's your favorite song? - Jaka jest twoja ulubiona piosenka? - - - What's your nickname? - Jaka jest twoja ksywka? - - - It cannot be empty - To pole nie może być puste - - - - dccV23::SettingsHead - - Edit - Edytuj - - - Done - Gotowe - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - Okno - - - Workspace - Obszar roboczy - - - Assistive Tools - Narzędzia pomocnicze - - - Custom Shortcut - Własny skrót - - - Restore Defaults - Przywróć domyślne - - - Shortcut - Skrót - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Resetuj skrót - - - Cancel - Anuluj - - - Replace - Zamień - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Ten skrót jest w konflikcie z %1, kliknij Zastąp, aby go nadpisać - - - - dccV23::ShortcutItem - - Enter a new shortcut - Wprowadź nowy skrót - - - - dccV23::SystemInfoModel - - available - dostępne - - - - dccV23::SystemInfoModule - - About This PC - O tym komputerze - - - Computer Name - Nazwa komputera - - - systemInfo - informacjesystemowe - - - OS Name - Nazwa systemu - - - Version - Wersja - - - Edition - Wydanie - - - Type - Typ - - - Authorization - Autoryzacja - - - Processor - Procesor - - - Memory - Pamięć - - - Graphics Platform - Platforma graficzna - - - Kernel - Kernel - - - Agreements and Privacy Policy - Porozumienie i polityka prywatności - - - Edition License - Licencja wydania - - - End User License Agreement - Umowa licencyjna EULA - - - Privacy Policy - Polityka prywatności - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Info systemu - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Anuluj - - - Add - Dodaj - - - Add System Language - Dodaj język systemu - - - - dccV23::SystemLanguageWidget - - Edit - Edytuj - - - Language List - Lista języków - - - Add Language - Dodaj język - - - Done - Gotowe - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Nie przeszkadzać - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Powiadomienia aplikacji nie będą wyświetlane, dźwięki zostaną wyciszone, a wszystkie wiadomości będzie można przeczytać w Centrum powiadomień. - - - When the screen is locked - Gdy ekran jest zablokowany - - - - dccV23::TimeSlotItem - - From - Od - - - To - Do - - - - dccV23::TouchScreenModule - - Touch Screen - Ekran dotykowy - - - Select your touch screen when connected or set it here. - Wybierz ekran dotykowy po podłączeniu lub ustaw go tutaj. - - - Confirm - Potwierdź - - - Cancel - Anuluj - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Szybkość wskaźnika - - - Enable TouchPad - Włącz touchpada - - - Tap to Click - Klikaj stuknięciem - - - Natural Scrolling - Naturalne przewijanie - - - Slow - Powolna - - - Fast - Szybka - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Szybkość wskaźnika - - - Slow - Powolna - - - Fast - Szybka - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Dołącz do programu doświadczeń użytkownika - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Przystąpienie do Programu doświadczeń użytkowników oznacza, że udzielasz nam i upoważniasz nas do gromadzenia i wykorzystywania informacji o Twoim urządzeniu, systemie i aplikacjach. Jeśli odmówisz nam gromadzenia i wykorzystywania wyżej wymienionych informacji, nie dołączaj do Programu doświadczeń użytkowników. Aby uzyskać szczegółowe informacje, zapoznaj się z Polityką prywatności Deepin (<a href="%1"> %1</a>). - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Przystąpienie do programu doświadczeń użytkowników oznacza, że udzielasz nam i upoważniasz nas do gromadzenia i wykorzystywania informacji o Twoim urządzeniu, systemie i aplikacjach. Jeśli odmówisz gromadzenia i wykorzystywania wyżej wymienionych informacji, nie dołączaj do programu doświadczeń użytkowników. Aby dowiedzieć się więcej o zarządzaniu Twoimi danymi, zapoznaj się z polityką prywatności UnionTech OS (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Rok - - - Month - Miesiąc - - - Day - Dzień - - - - DatetimeModule - - Time and Format - Czas i format - - - - DatetimeWorker - - Authentication is required to change NTP server - Wymagane jest uwierzytelnienie do zmiany serwera NTP - - - - DefAppModule - - Default Applications - Programy domyślne - - - - DefAppPlugin - - Webpage - Witryna - - - Mail - Poczta - - - Text - Tekst - - - Music - Muzyka - - - Video - Wideo - - - Picture - Zdjęcie - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Ostrzeżenie - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Przed użyciem rozpoznawania twarzy zwróć uwagę na punkty poniżej: -1. Twoje urządzenie może zostać odblokowane przez osoby lub obiekt, który wygląda lub wydaje się podobny do Ciebie. -2. Rozpoznawanie twarzy jest mniej bezpieczne niż hasło. -3. Szanse powodzenia odblokowania urządzenia za pomocą rozpoznawania twarzy zostaną zmniejszone w scenariuszach słabego oświetlenia, mocnego oświetlenia, podświetlenia, dużego kąta i innych tego typu scenariuszy. -4. Prosimy nie udostępniać swojego urządzenia innym osobom, aby uniknąć złośliwego wykorzystania funkcji rozpoznawania twarzy. -5. Oprócz scenariuszy wymienionych powyżej, zwróć uwagę na inne sytuacje, które mogą mieć wpływ na korzystanie z rozpoznawania twarzy. - -Aby umiejętnie korzystać z rozpoznawania twarzy, podczas wprowadzania danych twarzy zwróć uwagę na punkty poniżej: -1. Proszę pozostawać w dobrze oświetlonym miejscu, unikać bezpośredniego światła słonecznego oraz innych osób pojawiających się na nagrywanym ekranie. -2. Podczas wprowadzania danych zwróć uwagę na stan twarzy i nie pozwól, aby nakrycia głowy, włosy, okulary przeciwsłoneczne, maski, mocny makijaż i inne czynniki zakrywały rysy twarzy. -3. Unikaj przechylania lub opuszczania głowy, zamykania oczu lub pokazywania tylko jednej strony twarzy. Upewnij się, że przedni profil twarzy jest wyraźnie i całkowicie widoczny na ekranie. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - „Uwierzytelnienie biometryczne” to funkcja uwierzytelnienia tożsamości użytkownika stworzona przez UnionTech Software Technology Co., Ltd. Dzięki „uwierzytelnieniu biometrycznemu” zebrane dane biometryczne będą porównywane z danymi przechowywanymi na urządzeniu, a tożsamość użytkownika zostanie zweryfikowana na podstawie wyniku porównania. -Należy pamiętać, że oprogramowanie UnionTech nie będzie gromadzić, ani uzyskiwać dostępu do żadnych danych biometrycznych użytkownika, które będą przechowywane lokalnie na urządzeniu. Aktywuj uwierzytelnienie biometryczne wyłącznie na swoim urządzeniu osobistym i posługuj się wyłącznie swoimi informacjami biometrycznymi. Pamiętaj również, aby usunąć dane innych użytkowników, by uniknąć potencjalnych nieprzyjemności w przyszłości z tym związanych. -Firma UnionTech Software jest zaangażowana w badania i poprawę jakości bezpieczeństwa, dokładności i stabilności uwierzytelniania biometrycznego. Jednak ze względu na czynniki środowiskowe, sprzętowe, techniczne i tym podobne oraz kontrole ryzyka związanego z tą technologią, nie możemy zagwarantować, że to rozwiązanie będzie działać za każdym razem. Dlatego nie należy traktować uwierzytelniania biometrycznego jako jedyny sposób logowania do systemu UnionTech OS. Jeśli masz jakiekolwiek pytania lub sugestie dotyczące uwierzytelniania biometrycznego, możesz przekazać opinię poprzez „Serwis i wsparcie” w systemie UnionTech OS. - - - - Cancel - Anuluj - - - Next - Następna - - - - DisclaimersItem - - I have read and agree to the - Przeczytałem i akceptuję - - - Disclaimer - Ostrzeżenie - - - - DockModuleObject - - Dock - Dok - - - Multiple Displays - Wiele ekranów - - - Show Dock - Pokaż dok - - - Mode - Tryb - - - Position - Umiejscowienie - - - Status - Status - - - Show recent apps in Dock - Pokaż ostatnie aplikacje w doku - - - Size - Rozmiar - - - Plugin Area - Strefa wtyczek - - - Select which icons appear in the Dock - Wybierz, które wtyczki pojawią się w doku - - - Fashion mode - Tryb modny - - - Efficient mode - Tryb wydajny - - - Top - Góra - - - Bottom - Dół - - - Left - Lewo - - - Right - Prawo - - - Location - Położenie - - - Keep shown - Zawsze wyświetlaj - - - Keep hidden - Zawsze ukrywaj - - - Smart hide - Inteligentne ukrywanie - - - Small - Mały - - - Large - Duży - - - On screen where the cursor is - Na ekranie, tam gdzie jest kursor - - - Only on main screen - Tylko na ekranie głównym - - - - FaceInfoDialog - - Enroll Face - Zapisz twarz - - - Position your face inside the frame - Ustaw swoją twarz wewnątrz ramki - - - - FaceWidget - - Edit - Edytuj - - - Manage Faces - Zarządzaj Twarzami - - - You can add up to 5 faces - Możesz dodać aż do 5 twarzy - - - Done - Gotowe - - - Add Face - Dodaj twarz - - - The name already exists - Taka nazwa już istnieje - - - Faceprint - Odbitka twarzy - - - - FaceidDetailWidget - - No supported devices found - Nie znaleziono wspieranych urządzeń - - - - FingerDetailWidget - - No supported devices found - Nie znaleziono wspieranych urządzeń - - - - FingerDisclaimer - - Add Fingerprint - Dodaj odcisk palca - - - Cancel - Anuluj - - - Next - Następna - - - - FingerInfoWidget - - Place your finger - Umieść palec - - - Place your finger firmly on the sensor until you're asked to lift it - Przyłóż mocno palec do czujnika, aż zostaniesz poproszony o jego podniesienie - - - Scan the edges of your fingerprint - Zeskanuj krawędzie odcisku palca - - - Place the edges of your fingerprint on the sensor - Umieść krawędzie odcisku palca na czujniku - - - Lift your finger - Podnieś palec - - - Lift your finger and place it on the sensor again - Podnieś palec i ponownie umieść go na czujniku - - - Adjust the position to scan the edges of your fingerprint - Dostosuj pozycję, aby zeskanować krawędzie odcisku palca - - - Lift your finger and do that again - Podnieś palec i zrób to jeszcze raz - - - Fingerprint added - Dodano odcisk palca - - - - FingerWidget - - Edit - Edytuj - - - Fingerprint Password - Hasło odcisku palca - - - You can add up to 10 fingerprints - Możesz dodać do 10 odcisków palców - - - Done - Gotowe - - - The name already exists - Taka nazwa już istnieje - - - Add Fingerprint - Dodaj odcisk palca - - - - GeneralModule - - General - Ogólne - - - Balanced - Zrównoważony - - - Balance Performance - Wydajność zbalansowana - - - High Performance - Wysoka wydajność - - - Power Saver - Oszczędzanie energii - - - Power Plans - Plany zasilania - - - Power Saving Settings - Ustawienia oszczędzania energii - - - Auto power saving on low battery - Automatyczne oszczędzanie energii przy niskim poziomie naładowania - - - Decrease Brightness - Zmniejsz jasność - - - Low battery threshold - Niski próg baterii - - - Auto power saving on battery - Automatyczne oszczędzanie energii na baterii - - - Wakeup Settings - Ustawienia wybudzania - - - Unlocking is required to wake up the computer - Wymagaj odblokowania po wybudzeniu komputera - - - Unlocking is required to wake up the monitor - Wymagaj odblokowania po wybudzeniu monitora - - - - HostNameItem - - It cannot start or end with dashes - Nie może rozpoczynać lub kończyć się myślnikiem - - - 1~63 characters please - 1~63 znaków proszę - - - - InternalButtonItem - - Internal testing channel - Wewnętrzny kanał testowy - - - click here open the link - kliknij tutaj, aby otworzyć odnośnik - - - - IrisDetailWidget - - No supported devices found - Nie znaleziono wspieranych urządzeń - - - - IrisWidget - - Edit - Edytuj - - - Manage Irises - Zarządzaj Tęczówkami - - - You can add up to 5 irises - Możesz dodać aż do 5 tęczówek - - - Done - Gotowe - - - Add Iris - Dodaj tęczówkę - - - The name already exists - Taka nazwa już istnieje - - - Iris - Tęczówka - - - - KeyLabel - - None - Brak - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin Community - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Urządzenie wejściowe - - - Automatic Noise Suppression - Automatyczne tłumienie hałasu - - - Input Volume - Głośność na wejściu - - - Input Level - Poziom wejściowy - - - - PersonalizationDesktopModule - - Desktop - Pulpit - - - Window - Okno - - - Window Effect - Efekty okna - - - Window Minimize Effect - Efekt minimalizacji okna - - - Transparency - Przezroczystość - - - Rounded Corner - Zaokrąglony róg - - - Scale - Skalowanie - - - Magic Lamp - Magiczna lampa - - - Small - Mały - - - Middle - Średni - - - Large - Duży - - - - PersonalizationModule - - Personalization - Personalizacja - - - - PersonalizationThemeList - - Cancel - Anuluj - - - Save - Zapisz - - - Light - Jasny - - - Dark - Ciemny - - - Auto - Automatycznie - - - Default - Domyślne - - - - PersonalizationThemeModule - - Theme - Motyw - - - Appearance - Wygląd - - - Accent Color - Kolor akcentu - - - Icon Settings - Ustawienia ikon - - - Icon Theme - Motyw ikon - - - Cursor Theme - Motyw kursora - - - Text Settings - Ustawienia tekstu - - - Font Size - Rozmiar Czcionki - - - Standard Font - Czcionka zwykła - - - Monospaced Font - Czcionka o stałej szerokości - - - Light - Jasny - - - Auto - Automatycznie - - - Dark - Ciemny - - - - PersonalizationThemeWidget - - Light - Jasny - General - /personalization/General - - - Dark - Ciemny - General - /personalization/General - - - Auto - Automatycznie - General - /personalization/General - - - Default - Domyślne - - - - PersonalizationWorker - - Custom - Własne - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Kod PIN do połączenia z urządzeniem Bluetooth to: - - - Cancel - Anuluj - - - Confirm - Potwierdź - - - - PowerModule - - Power - Zasilanie - - - Battery low, please plug in - Niski poziom baterii, podłącz zasilanie - - - Battery critically low - Krytycznie niski poziom baterii - - - - PrivacyModule - - Privacy and Security - Prywatność i bezpieczeństwo - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - Foldery użytkownika - - - Calendar - Kalendarz - - - Screen Capture - Przechwytywanie ekranu - - - - QObject - - Control Center - Centrum kontroli - - - , - , - - - Error occurred when reading the configuration files of password rules! - Nastąpił błąd podczas wczytywania pliku konfiguracyjnego zawierającego reguły haseł! - - - Auto adjust CPU operating frequency based on CPU load condition - Automatycznie dostosuj częstotliwość procesora zależnie od jego obciążenia - - - Aggressively adjust CPU operating frequency based on CPU load condition - Agresywnie dostosuj częstotliwość procesora zależnie od jego obciążenia - - - Be good to imporving performance, but power consumption and heat generation will increase - Ta opcja zwiększy wydajność procesora kosztem większego poboru energii i generowaniem ciepła - - - CPU always works under low frequency, will reduce power consumption - Praca procesora na niskich częstotliwościach zmniejszy pobór energii - - - Activated - Aktywowany - - - View - Wyświetl - - - To be activated - Do aktywacji - - - Activate - Aktywuj - - - Expired - Wygasł - - - In trial period - W okresie próbnym - - - Trial expired - Okres próbny wygasł - - - Touch Screen Settings - Ustawienia ekranu dotykowego - - - The settings of touch screen changed - Zmieniono ustawienia ekranu dotykowego - - - Checking system versions, please wait... - Sprawdzanie wersji systemu, proszę czekać... - - - Leave - Opuść - - - Cancel - Anuluj - - - - RegionModule - - Region and format - Region i format - - - Country or Region - Country or Region - - - Format - Format - - - Provide localized services based on your region. - Dostarczanie usług względem Twojego regionu. - - - Select matching date and time formats based on language and region - Wybierz pasujący format daty i godziny zależnie od języka i regionu - - - Region format - Język i region - - - First day of week - Pierwszy dzień tygodnia - - - Short date - Krótka data - - - Long date - Długa data - - - Short time - Krótka godzina - - - Long time - Długa godzina - - - Currency symbol - Symbol waluty - - - Numbers - Liczby - - - Paper - Papier - - - custom format - Format niestandardowy - - - - ResultItem - - Your system is not authorized, please activate first - Twój system nie jest autoryzowany, prosimy o aktywację - - - Update successful - Zaktualizowano pomyślnie - - - Failed to update - Nie udało się zaktualizować - - - - SearchInput - - Search - Szukaj - - - - ServiceSettingsModule - - Apps can access your camera: - Aplikacje mające dostęp do kamery: - - - Apps can access your microphone: - Aplikacje mające dostęp do mikrofonu: - - - Apps can access user folders: - Aplikacje mające dostęp do folderów użytkownika: - - - Apps can access Calendar: - Aplikacje mające dostęp do kalendarza: - - - Apps can access Screen Capture: - Aplikacje mające dostęp do przechwytywania ekranu: - - - No apps requested access to the camera - Brak aplikacji żądających dostępu do kamery - - - No apps requested access to the microphone - Brak aplikacji żądających dostępu do mikrofonu - - - No apps requested access to user folders - Brak aplikacji żądających dostępu do folderów użytkownika - - - No apps requested access to Calendar - Brak aplikacji żądających dostępu do kalendarza - - - No apps requested access to Screen Capture - Brak aplikacji żądających dostępu do przechwytywania ekranu - - - - SoundEffectsPage - - Sound Effects - Dźwięki systemu - - - - SoundModel - - Boot up - Uruchomienie - - - Shut down - Wyłącz - - - Log out - Wyloguj - - - Wake up - Wybudzenie - - - Volume +/- - Głośność +/- - - - Notification - Powiadomienia - - - Low battery - Niski poziom baterii - - - Send icon in Launcher to Desktop - Wysłanie ikony programu wywołującego na pulpit - - - Empty Trash - Opróżnienie kosza - - - Plug in - Podłączenie do zasilania - - - Plug out - Odłączenie od zasilania - - - Removable device connected - Urządzenie wymienne zostało podłączone - - - Removable device removed - Urządzenie wymienne zostało usunięte - - - Error - Błąd - - - - SoundModule - - Sound - Dźwięk - - - - SoundPlugin - - Output - Wyjście - - - Auto pause - Automatyczna pauza - - - Whether the audio will be automatically paused when the current audio device is unplugged - Dźwięk zostanie automatycznie zatrzymany, gdy bieżące urządzenie audio zostanie odłączone. - - - Input - Wejście - - - Sound Effects - Dźwięki systemu - - - Devices - Urządzenia - - - Input Devices - Urządzenia wejściowe - - - Output Devices - Urządzenia wyjściowe - - - - SpeakerPage - - Output Device - Urządzenie wyjściowe - - - Mode - Tryb - - - Output Volume - Głośność na wyjściu - - - Volume Boost - Zwiększenie głośności - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Jeśli głośność jest większa niż 100%, może to zniekształcić dźwięk i być szkodliwe dla urządzeń wyjściowych - - - Left/Right Balance - Balans Lewo/Prawo - - - Left - Lewo - - - Right - Prawo - - - - TimeSettingModule - - Time Settings - Ustawienia czasu - - - Time - Czas - - - Auto Sync - Automatyczna synchronizacja - - - Reset - Resetuj - - - Save - Zapisz - - - Server - Serwer - - - Address - Adres - - - Required - Wymagane - - - Customize - Dostosuj - - - Year - Rok - - - Month - Miesiąc - - - Day - Dzień - - - - TimeZoneChooser - - Cancel - Anuluj - - - Confirm - Potwierdź - - - Add Timezone - Dodaj strefę czasową - - - Add - Dodaj - - - Change Timezone - Zmień strefę czasową - - - - TimeoutDialog - - Save the display settings? - Zapisać ustawienia wyświetlania? - - - Settings will be reverted in %1s. - Ustawienia zostaną przywrócone za %1s. - - - Revert - Przywróć - - - Save - Zapisz - - - - TimezoneItem - - Tomorrow - Jutro - - - Yesterday - Wczoraj - - - Today - Dzisiaj - - - %1 hours earlier than local - %1 godziny wcześniej niż lokalnie - - - %1 hours later than local - %1 godziny później niż lokalnie - - - - TimezoneModule - - Timezone List - Lista stref czasowych - - - System Timezone - Strefa czasowa systemu - - - Add Timezone - Dodaj strefę czasową - - - - TreeCombox - - Collaboration Settings - Ustawienia kolaboracji - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Konto użytkownika nie jest powiązane z Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Żeby zresetować hasło, powinieneś najpierw uwierzytelnić twoje Union ID. Naciśnij "Przejdź do łączenia", aby zakończyć proces ustawiania. - - - Cancel - Anuluj - - - Go to Link - Przejdź do łączenia - - - - UnknownUpdateItem - - Release date: - Data wydania: - - - - UpdateCtrlWidget - - Check Again - Sprawdź ponownie - - - Update failed: insufficient disk space - Niepowodzenie aktualizacji: za mało miejsca na dysku - - - Dependency error, failed to detect the updates - Błąd zależności, nie udało się wykryć aktualizacji - - - Restart the computer to use the system and the applications properly - Uruchom ponownie komputer, aby móc poprawnie korzystać z systemu i aplikacji - - - Network disconnected, please retry after connected - Sieć jest rozłączona, spróbuj ponownie po podłączeniu - - - Your system is not authorized, please activate first - Twój system nie jest autoryzowany, prosimy o aktywację - - - This update may take a long time, please do not shut down or reboot during the process - Ta aktualizacja może zająć dużo czasu, nie wyłączaj komputera, ani nie uruchamiaj ponownie w trakcie - - - Updates Available - Aktualizacje są dostępne - - - Current Edition - Obecne wydanie - - - Updating... - Aktualizowanie... - - - Update All - Aktualizuj wszystko - - - Last checking time: - Data ostatniego sprawdzania: - - - Your system is up to date - Twój system operacyjny jest aktualny - - - Check for Updates - Sprawdź aktualizacje - - - Checking for updates, please wait... - Sprawdzanie aktualizacji, proszę czekać... - - - The newest system installed, restart to take effect - Zainstalowano najnowszą wersję systemu, uruchom ponownie, aby zastosować zmiany - - - %1% downloaded (Click to pause) - Pobrano %1% (Kliknij, aby wstrzymać) - - - %1% downloaded (Click to continue) - Pobrano %1% (Kliknij, aby kontynuować) - - - Your battery is lower than 50%, please plug in to continue - Poziom baterii spadł poniżej 50%, podłącz do zasilania, aby kontynuować - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Prosimy zapewnić dostateczną ilość zasilania, aby uruchomić ponownie. Nie wyłączaj komputera, ani odcinaj źródła zasilania. - - - Size - Rozmiar - - - - UpdateModule - - Updates - Aktualizacje - - - - UpdatePlugin - - Check for Updates - Sprawdź aktualizacje - - - - UpdateSettingItem - - Insufficient disk space - Za mało miejsca na dysku - - - Update failed: insufficient disk space - Aktualizacja nie powiodła się: za mało miejsca na dysku - - - Update failed - Błąd aktualizacji - - - Network error - Błąd sieci - - - Network error, please check and try again - Błąd sieci, spróbuj ponownie - - - Packages error - Błąd pakietów - - - Packages error, please try again - Błąd pakietów, spróbuj ponownie - - - Dependency error - Błąd zależności - - - Unmet dependencies - Niezaspokojone zależności - - - The newest system installed, restart to take effect - Zainstalowano najnowszą wersję systemu, uruchom ponownie, aby zastosować zmiany - - - Waiting - Oczekiwanie - - - Backing up - Tworzenie kopii zapasowej - - - System backup failed - Tworzenie kopii zapasowej systemu nie powiodło się - - - Release date: - Data wydania: - - - Server - Serwer - - - Desktop - Pulpit - - - Version - Wersja - - - - UpdateSettingsModule - - Update Settings - Ustawienia aktualizacji - - - System - System - - - Security Updates Only - Tylko aktualizacje zabezpieczeń - - - Switch it on to only update security vulnerabilities and compatibility issues - Włącz, aby otrzymywać wyłącznie aktualizacje luk bezpieczeństwa i problemów z kompatybilnością - - - Third-party Repositories - Zewnętrzne repozytoria - - - linglong update - Aktualizacja linglong - - - Linglong Package Update - Aktualizacja pakietu linglong - - - If there is update for linglong package, system will update it for you - System automatycznie zaktualizuje pakiet linglong dla Ciebie - - - Other settings - Pozostałe ustawienia - - - Auto Check for Updates - Automatyczne sprawdzanie aktualizacji - - - Auto Download Updates - Automatyczne pobieranie aktualizacji - - - Switch it on to automatically download the updates in wireless or wired network - Włącz, aby automatycznie pobierać aktualizacje w sieci bezprzewodowej lub przewodowej - - - Auto Install Updates - Automatyczne instalowanie aktualizacji - - - Updates Notification - Powiadomienia aktualizacji - - - Clear Package Cache - Wyczyść pamięć podręczną pakietów - - - Updates from Internal Testing Sources - Aktualizacje z wewnętrznych źródeł testowych - - - internal update - aktualizacje wewnętrzne - - - Join the internal testing channel to get deepin latest updates - Dołącz do wewnętrznego kanału testowego, aby uzyskać dostęp do najnowszych funkcji - - - System Updates - Aktualizacje systemu - - - Security Updates - Aktualizacje zabezpieczeń - - - Install updates automatically when the download is complete - Zainstaluj aktualizacje automatycznie, jak tylko pobieranie zostanie zakończone - - - Install "%1" automatically when the download is complete - Zainstaluj "%1" automatycznie, jak tylko pobieranie zostanie zakończone - - - - UpdateWidget - - Current Edition - Obecne wydanie - - - - UpdateWorker - - System Updates - Aktualizacje systemu - - - Fixed some known bugs and security vulnerabilities - Naprawiono kilka znanych błędów i luk bezpieczeństwa - - - Security Updates - Aktualizacje zabezpieczeń - - - Third-party Repositories - Zewnętrzne repozytoria - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Opuszczenie wewnętrznego kanału testowego teraz może być niebezpieczne. Czy na pewno chcesz opuścić? - - - Your are safe to leave the internal testing channel - Możesz bezpiecznie opuścić wewnętrzny kanał testowy - - - Cannot find machineid - Nie można znaleźć machineid - - - Cannot Uninstall package - Nie można usunąć pakietu - - - Error when exit testingChannel - Błąd podczas opuszczania kanału testowego - - - try to manually uninstall package - spróbuj ręcznie odinstalować pakiet - - - Cannot install package - Nie można zainstalować pakietu - - - - UseBatteryModule - - On Battery - Na baterii - - - Never - Nigdy - - - Shut down - Wyłącz - - - Suspend - Wstrzymaj - - - Hibernate - Hibernacja - - - Turn off the monitor - Wyłącz monitor - - - Do nothing - Nic nie rób - - - 1 Minute - 1 minucie - - - %1 Minutes - %1 minutach - - - 1 Hour - 1 godzinie - - - Screen and Suspend - Ekran i wstrzymanie - - - Turn off the monitor after - Wyłącz monitor po - - - Lock screen after - Zablokuj ekran po - - - Computer suspends after - Wstrzymaj komputer po - - - Computer will suspend after - Wstrzymaj komputer po - - - When the lid is closed - Kiedy pokrywa jest zamknięta - - - When the power button is pressed - Po naciśnięciu przycisku zasilania - - - Low Battery - Niski poziom baterii - - - Low battery notification - Powiadomienie o niskim poziomie baterii - - - Low battery level - Niski poziom baterii - - - Auto suspend battery level - Poziom baterii do wstrzymania - - - Battery Management - Zarządzanie baterią - - - Display remaining using and charging time - Wyświetl pozostały czas użytkowania i ładowania - - - Maximum capacity - Maksymalna pojemność - - - Show the shutdown Interface - Pokaż interfejs wyłączania - - - - UseElectricModule - - Plugged In - Podłączony - - - 1 Minute - 1 minucie - - - %1 Minutes - %1 minutach - - - 1 Hour - 1 godzinie - - - Never - Nigdy - - - Screen and Suspend - Ekran i wstrzymanie - - - Turn off the monitor after - Wyłącz monitor po - - - Lock screen after - Zablokuj ekran po - - - Computer suspends after - Wstrzymaj komputer po - - - When the lid is closed - Kiedy pokrywa jest zamknięta - - - When the power button is pressed - Po naciśnięciu przycisku zasilania - - - Shut down - Wyłącz - - - Suspend - Wstrzymaj - - - Hibernate - Hibernacja - - - Turn off the monitor - Wyłącz monitor - - - Show the shutdown Interface - Pokaż interfejs wyłączania - - - Do nothing - Nic nie rób - - - - WacomModule - - Drawing Tablet - Tablet graficzny - - - Mode - Tryb - - - Pressure Sensitivity - Wrażliwość nacisku - - - Pen - Pióro - - - Mouse - Myszka - - - Light - Lekka - - - Heavy - Ciężka - - - - main - - Control Center provides the options for system settings. - Centrum Kontroli umożliwia zmianę ustawień systemowych. - - - - updateControlPanel - - Downloading - Pobieranie - - - Waiting - Oczekiwanie - - - Installing - Instalowanie - - - Backing up - Tworzenie kopii zapasowej - - - Download and install - Pobierz i zainstaluj - - - Learn more - Dowiedz się więcej - - - diff --git a/dcc-old/translations/dde-control-center_ps.ts b/dcc-old/translations/dde-control-center_ps.ts deleted file mode 100644 index d08e0c9fce..0000000000 --- a/dcc-old/translations/dde-control-center_ps.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - باورييل - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - ساتل - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - باورييل - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - ساتل - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - ساتل - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - باورييل - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - باورييل - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - ساتل - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - دوديز - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - باورييل - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - ساتل - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - باورييل - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - ساتل - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_pt.ts b/dcc-old/translations/dde-control-center_pt.ts deleted file mode 100644 index 62bf7f5d91..0000000000 --- a/dcc-old/translations/dde-control-center_pt.ts +++ /dev/null @@ -1,3983 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Permitir que outros dispositivos Bluetooth encontrem este dispositivo - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Ativar o bluetooth para encontrar dispositivos próximos (colunas, teclado, rato) - - - My Devices - Os meus dispositivos - - - Other Devices - Outros Dispositivos - - - Show Bluetooth devices without names - Mostrar dispositivos Bluetooth sem nomes - - - Connect - Ligar - - - Disconnect - Desligar - - - Rename - Renomear - - - Send Files - Enviar ficheiros - - - Ignore this device - Ignorar este dispositivo - - - Connecting - A ligar - - - Disconnecting - A desligar - - - - AddButtonWidget - - Add Application - Adicionar Aplicação - - - Open Desktop file - Abrir ficheiro do ambiente de trabalho - - - Apps (*.desktop) - - - - All files (*) - Todos os ficheiros (*) - - - - AddFaceInfoDialog - - Enroll Face - Registar Rosto - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Certifique-se de que todas as partes do seu rosto não estejam cobertas por objetos e sejam claramente visíveis. Seu rosto também deve estar bem iluminado. - - - Cancel - Cancelar - - - Next - Seguinte - - - Face enrolled - Rosto registado - - - Use your face to unlock the device and make settings later - Use seu rosto para desbloquear o dispositivo e realizar configurações mais tarde - - - Done - Concluído - - - Failed to enroll your face - Falha ao registar o rosto - - - Try Again - Tente novamente - - - Close - Fechar - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - Registar Íris - - - Cancel - Cancelar - - - Next - Seguinte - - - Iris enrolled - Íris registada - - - Done - Concluído - - - Failed to enroll your iris - Falha ao registar a íris - - - Try Again - Tente novamente - - - - AuthenticationInfoItem - - No more than 15 characters - Não mais de 15 carateres - - - Use letters, numbers and underscores only, and no more than 15 characters - Utilize apenas letras, números e sublinhados, e não mais de 15 carateres - - - Use letters, numbers and underscores only - Utilize apenas letras, números e sublinhados - - - - AuthenticationModule - - Biometric Authentication - Autenticação biométrica - - - - AuthenticationPlugin - - Fingerprint - Impressão digital - - - Face - Rosto - - - Iris - Íris - - - - BluetoothDeviceModel - - Connected - Ligado - - - Not connected - Desligado - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Impressão digital1 - - - Fingerprint2 - Impressão digital2 - - - Fingerprint3 - Impressão digital3 - - - Fingerprint4 - Impressão digital4 - - - Fingerprint5 - Impressão digital5 - - - Fingerprint6 - Impressão digital6 - - - Fingerprint7 - Impressão digital7 - - - Fingerprint8 - Impressão digital8 - - - Fingerprint9 - Impressão digital9 - - - Fingerprint10 - Impressão digital10 - - - Scan failed - Falha ao verificar - - - The fingerprint already exists - A impressão digital já existe - - - Please scan other fingers - Verificar outros dedos - - - Unknown error - Erro desconhecido - - - Scan suspended - Verificação suspensa - - - Cannot recognize - Não é possível reconhecer - - - Moved too fast - Movido demasiado depressa - - - Finger moved too fast, please do not lift until prompted - O dedo moveu-se demasiado depressa. Não levantar o dedo até ser solicitado - - - Unclear fingerprint - Impressão digital pouco clara - - - Clean your finger or adjust the finger position, and try again - Limpar ou ajustar a posição do dedo e tentar novamente - - - Already scanned - Já verificado - - - Adjust the finger position to scan your fingerprint fully - Ajustar a posição do dedo para verificar completamente a sua impressão digital - - - Finger moved too fast. Please do not lift until prompted - O dedo moveu-se demasiado depressa. Não levantar o dedo até ser solicitado - - - Lift your finger and place it on the sensor again - Levante o dedo e coloque-o novamente sobre o sensor - - - Position your face inside the frame - Posicione a sua face na moldura - - - Face enrolled - Rosto registado - - - Position a human face please - Use uma face humana por favor - - - Keep away from the camera - Afaste-se da câmara - - - Get closer to the camera - Aproxime-se da câmara - - - Do not position multiple faces inside the frame - Não posicione várias faces dentro da moldura - - - Make sure the camera lens is clean - Certifique-se que a lente da câmara está limpa - - - Do not enroll in dark, bright or backlit environments - Não usar em ambientes de iluminação reduzida ou excessiva - - - Keep your face uncovered - Manter o rosto descoberto - - - Scan timed out - Tempo de verificação esgotado - - - Device crashed, please scan again! - O dispositivo bloqueou, repita a captura por favor! - - - Cancel - Cancelar - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Cancelar - - - Confirm - button - Confirmar - - - - dccV23::AccountSpinBox - - Always - Sempre - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Nome de utilizador - - - Change Password - Alterar palavra-passe - - - Delete User - - - - User Type - - - - Auto Login - Início de sessão automático - - - Login Without Password - Iniciar sessão sem palavra-passe - - - Validity Days - Dias de validade - - - Group - Grupo - - - The full name is too long - O nome completo é muito comprido - - - Standard User - Utilizador padrão - - - Administrator - Administrador - - - Reset Password - Repor palavra-passe - - - The full name has been used by other user accounts - Nome completo já em uso em outra conta - - - Full Name - Nome completo - - - Go to Settings - Ir para Definições - - - Cancel - Cancelar - - - OK - Aceitar - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - O "Início de sessão automático" pode ser ativado apenas para uma conta, primeiro desative-o para a conta "%1" - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - O seu host foi removido do servidor de domínio com sucesso - - - Your host joins the domain server successfully - O seu host juntou-se ao servidor de domínio com sucesso - - - Your host failed to leave the domain server - O seu host não deixou o servidor de domínio devido a uma falha - - - Your host failed to join the domain server - O seu host não se juntou ao servidor de domínio devido a uma falha - - - AD domain settings - Definições de domínio AD - - - Password not match - A palavra-passe não coincide - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Mostrar notificações de %1 no ambiente de trabalho e no centro de notificações. - - - Play a sound - Tocar um som - - - Show messages on lockscreen - Mostrar mensagens no ecrã de bloqueio - - - Show in notification center - Mostrar no centro de notificações - - - Show message preview - Mostrar pré-visualização da mensagem - - - - dccV23::AvatarListDialog - - Person - Pessoa - - - Animal - Animal - - - Illustration - Ilustração - - - Expression - Expressão - - - Custom Picture - Imagem personalizada - - - Cancel - Cancelar - - - Save - Guardar - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Imagens - - - - dccV23::BootWidget - - Updating... - A atualizar... - - - Startup Delay - Atraso no arranque - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Clicar na opção no menu de arranque para definir como o primeiro a arrancar e arraste e largue uma imagem para alterar o fundo - - - Click the option in boot menu to set it as the first boot - Clique na opção do menu de arranque para defini-lo como o primeiro a arrancar - - - Switch theme on to view it in boot menu - Ligar o tema para o ver no menu de arranque - - - GRUB Authentication - Autenticação do GRUB - - - GRUB password is required to edit its configuration - A palavra-passe GRUB é necessária para editar esta configuração - - - Change Password - Alterar palavra-passe - - - Boot Menu - Menu de arranque - - - Change GRUB password - Alterar a palavra-passe do GRUB - - - Username: - Nome de utilizador: - - - root - root - - - New password: - Nova palavra-passe: - - - Repeat password: - Repetir palavra-passe: - - - Required - Necessário - - - Cancel - button - Cancelar - - - Confirm - button - Confirmar - - - Password cannot be empty - A palavra-passe não pode estar em branco - - - Passwords do not match - As palavras-passe não coincidem - - - - dccV23::BrightnessWidget - - Brightness - Luminosidade - - - Color Temperature - Temperatura da cor - - - Auto Brightness - Luminosidade automática - - - Night Shift - Luz noturna - - - The screen hue will be auto adjusted according to your location - A tonalidade do ecrã será ajustada automaticamente de acordo com a sua localização - - - Change Color Temperature - Alterar a temperatura da cor - - - Cool - Fria - - - Warm - Quente - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Os meus dispositivos - - - Other Devices - Outros dispositivos - - - - dccV23::CommonInfoPlugin - - General Settings - Definições Gerais - - - Boot Menu - Menu de arranque - - - Developer Mode - Modo de programador - - - User Experience Program - Programa de experiência do utilizador - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Concordar e Aderir ao Programa de Experiência do Utilizador - - - The Disclaimer of Developer Mode - A isenção de responsabilidade do modo de programador - - - Agree and Request Root Access - Concordar e solicitar acesso root - - - Failed to get root access - Não foi possível obter acesso root - - - Please sign in to your Union ID first - Por favor, inicie primeiro a sessão no seu Union ID - - - Cannot read your PC information - Não é possível ler a informação do seu PC - - - No network connection - Sem ligação à rede - - - Certificate loading failed, unable to get root access - O carregamento do certificado falhou, não é possível obter acesso root - - - Signature verification failed, unable to get root access - A verificação da assinatura falhou, não é possível obter acesso root - - - - dccV23::CreateAccountPage - - Group - Grupo - - - Cancel - Cancelar - - - Create - Criar - - - New User - - - - User Type - - - - Username - Nome de utilizador - - - Full Name - Nome completo - - - Password - Palavra-passe - - - Repeat Password - Repetir palavra-passe - - - Password Hint - Dica de palavra-passe - - - The full name is too long - O nome completo é muito comprido - - - Passwords do not match - As palavras-passe não coincidem - - - Standard User - Utilizador padrão - - - Administrator - Administrador - - - Customized - Personalizada - - - Required - Necessário - - - optional - opcional - - - The hint is visible to all users. Do not include the password here. - A dica é visível para todos os utilizadores. Não inclua aqui a palavra-passe. - - - Policykit authentication failed - Falha na autenticação do Policykit - - - Username must be between 3 and 32 characters - O nome de utilizador deve ter entre 3 e 32 caracteres - - - The first character must be a letter or number - O primeiro caracter deve ser uma letra ou número - - - Your username should not only have numbers - O seu nome de utilizador não deverá ter apenas números - - - The username has been used by other user accounts - O nome de utilizador tem sido utilizado por outras contas de utilizador - - - The full name has been used by other user accounts - Nome completo já em uso em outra conta - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Imagens - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Adicionar atalho personalizado - - - Name - Nome - - - Required - Necessário - - - Command - Comando - - - Cancel - Cancelar - - - Add - Adicionar - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Este atalho entra em conflito com o %1, clicar em Adicionar para que este atalho tenha efeito imediato - - - - dccV23::CustomEdit - - Required - Necessário - - - Cancel - Cancelar - - - Save - Guardar - - - Shortcut - Atalho - - - Name - Nome - - - Command - Comando - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Este atalho entra em conflito com o %1, clicar em Adicionar para que este atalho tenha efeito imediato - - - - dccV23::CustomItem - - Shortcut - Atalho - - - Please enter a shortcut - Introduza um atalho - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - Para mais detalhes, visite: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Solicitar acesso root - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Por favor, inicie primeiro a sessão no seu Union ID e continue - - - Next - Seguinte - - - Export PC Info - Exportar Informação do PC - - - Import Certificate - Importar Certificado - - - 1. Export your PC information - 1. Exportar a informação do seu PC - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Ir para https://www.chinauos.com/developMode para transferir um certificado offline - - - 3. Import the certificate - 3. Importar o certificado - - - - dccV23::DeveloperModeWidget - - Request Root Access - Solicitar acesso root - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - O modo de programador permite obter privilégios de root, instalar e executar aplicações não assinadas não listadas na loja de aplicações, mas a integridade do sistema também pode ser danificada, use-o com cuidado. - - - The feature is not available at present, please activate your system first - De momento, esta funcionalidade não está disponível, por favor, ative primeiro o seu sistema - - - Failed to get root access - Não foi possível obter acesso root - - - Please sign in to your Union ID first - Por favor, inicie primeiro a sessão no seu Union ID - - - Cannot read your PC information - Não é possível ler a informação do seu PC - - - No network connection - Sem ligação à rede - - - Certificate loading failed, unable to get root access - O carregamento do certificado falhou, não é possível obter acesso root - - - Signature verification failed, unable to get root access - A verificação da assinatura falhou, não é possível obter acesso root - - - To make some features effective, a restart is required. Restart now? - Para tornar algumas funcionalidades efetivas, é necessário reiniciar. Reiniciar agora? - - - Cancel - Cancelar - - - Restart Now - Reiniciar agora - - - Root Access Allowed - Permitido acesso root - - - - dccV23::DisplayPlugin - - Display - Ecrã - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Testar duplo clique - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Atraso de repetição - - - Short - Curto - - - Long - Longo - - - Repeat Rate - Taxa de repetição - - - Slow - Lento - - - Fast - Rápido - - - Test here - Testar aqui - - - Numeric Keypad - Teclado numérico - - - Caps Lock Prompt - Informar ao usar Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Mão esquerda - - - Disable touchpad while typing - Desativar o touchpad enquanto escreve - - - Scrolling Speed - Velocidade de deslocação - - - Double-click Speed - Velocidade do duplo clique - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Esquema do teclado - - - Edit - Editar - - - Add Keyboard Layout - Adicionar esquema de teclado - - - Done - Concluído - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancelar - - - Add - Adicionar - - - Add Keyboard Layout - Adicionar esquema de teclado - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Teclado e Idioma - - - Keyboard - Teclado - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Esquema do teclado - - - Language - Idioma - - - Shortcuts - Atalhos - - - - dccV23::MainWindow - - Help - Ajuda - - - - dccV23::ModifyPasswdPage - - Change Password - Alterar palavra-passe - - - Reset Password - Repor palavra-passe - - - Resetting the password will clear the data stored in the keyring. - Repor a palavra-passe limpará os dados armazenados no keyring. - - - Current Password - Palavra-passe atual - - - Forgot password? - Esqueceu-se da palavra-passe? - - - New Password - Nova palavra-passe - - - Repeat Password - Repetir palavra-passe - - - Password Hint - Dica de palavra-passe - - - Cancel - Cancelar - - - Save - Guardar - - - Passwords do not match - As palavras-passe não coincidem - - - Required - Necessário - - - Optional - Opcional - - - Password cannot be empty - A palavra-passe não pode estar em branco - - - The hint is visible to all users. Do not include the password here. - A dica é visível para todos os utilizadores. Não inclua aqui a palavra-passe. - - - Wrong password - Palavra-passe incorreta - - - New password should differ from the current one - A nova palavra-passe deve ser diferente da atual - - - System error - Erro de Sistema - - - Network error - Erro de rede - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Juntar janelas - - - Screen rearrangement will take effect in %1s after changes - Reorganização do ecrã terá efeito em %1s após alterações - - - - dccV23::MousePlugin - - Mouse - Rato - - - General - Geral - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Velocidade do cursor - - - Mouse Acceleration - Aceleração do rato - - - Disable touchpad when a mouse is connected - Desativar o touchpad quando um rato é ligado - - - Natural Scrolling - Deslocamento natural - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::MultiScreenWidget - - Multiple Displays - Vários ecrãs - /display/Multiple Displays - - - Mode - Modo - /display/Mode - - - Main Screen - Ecrã principal - /display/Main Scree - - - Duplicate - Duplicar - - - Extend - Estender - - - Only on %1 - Apenas em %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notificação - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Deteção de palma - - - Minimum Contact Surface - Superfície mínima de contacto - - - Minimum Pressure Value - Valor mínimo de pressão - - - Disable the option if touchpad doesn't work after enabled - Desativar a opção se o touchpad não funcionar depois de ativado - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Política de Privacidade - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Estamos profundamente conscientes da importância da sua informação pessoal para si. Assim, temos a Política de Privacidade que abrange a forma como recolhemos, utilizamos, partilhamos, transferimos, divulgamos publicamente, e armazenamos as suas informações.</p> <p>Pode <a href="%1">clicar aqui</a> para ver a nossa mais recente política de privacidade e/ou vê-la online, ao aceder <a href="%1"> %1</a> Leia atentamente e compreenda plenamente as nossas práticas em matéria de privacidade do cliente. Se tiver alguma dúvida, por favor contacte-nos em: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - A palavra-passe não pode estar em branco - - - Password must have at least %1 characters - A palavra-passe deve ter pelo menos %1 caracteres - - - Password must be no more than %1 characters - A palavra-passe não deve ter mais do que %1 caracteres - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - A palavra-passe apenas pode conter letras em Inglês (maiúsculas e minúsculas), números ou símbolos especiais (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Não mais de %1 caracteres palíndroma por favor - - - No more than %1 monotonic characters please - Não mais de %1 caracteres mono tónicos por favor - - - No more than %1 repeating characters please - Não mais de %1 caracteres repetidos por favor - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - A palavra-passe deve conter letras maiúsculas, letras minúsculas, números e símbolos (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - A palavra-passe não deve conter mais de 4 caracteres palíndromo - - - Do not use common words and combinations as password - Não utilizar palavras e combinações comuns como palavra-passe - - - Create a strong password please - Crie uma palavra-passe forte - - - It does not meet password rules - Não cumpre as regras de palavra-passe - - - - dccV23::RefreshRateWidget - - Refresh Rate - Taxa de atualização - - - Hz - Hz - - - Recommended - Recomendado - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Eliminar esta conta? - - - Delete account directory - Eliminar o diretório da conta - - - Cancel - Cancelar - - - Delete - Eliminar - - - - dccV23::ResolutionWidget - - Resolution - Resolução - /display/Resolution - - - Resize Desktop - Redimensionar ambiente de trabalho - /display/Resize Desktop - - - Default - Predefinição - - - Fit - Ajustar - - - Stretch - Esticar - - - Center - Centrar - - - Recommended - Recomendado - - - - dccV23::RotateWidget - - Rotation - Rotação - /display/Rotation - - - Standard - Padrão - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - O monitor apenas suporta escala de visualização de 100% - - - Display Scaling - Escala de visualização - - - - dccV23::SearchInput - - Search - Pesquisar - - - - dccV23::SecondaryScreenDialog - - Brightness - Luminosidade - - - - dccV23::SecurityLevelItem - - Weak - Fraca - - - Medium - Médio - - - Strong - Forte - - - - dccV23::SecurityQuestionsPage - - Security Questions - Perguntas de Segurança - - - These questions will be used to help reset your password in case you forget it. - Estas perguntas vão ajuda-lo a recuperar a sua palavra-passe caso a esqueça. - - - Security question 1 - Pergunta de Segurança 1 - - - Security question 2 - Pergunta de Segurança 2 - - - Security question 3 - Pergunta de Segurança 3 - - - Cancel - Cancelar - - - Confirm - Confirmar - - - Keep the answer under 30 characters - A resposta deve ter menos de 30 caracteres. - - - Do not choose a duplicate question please - Por favor não escolha uma pergunta em duplicado - - - Please select a question - Por favor escolha uma pergunta - - - What's the name of the city where you were born? - Qual o nome da cidade onde nasceu? - - - What's the name of the first school you attended? - Qual o nome da primeira escola que frequentou? - - - Who do you love the most in this world? - O que ama mais neste mundo? - - - What's your favorite animal? - Qual o seu animal favorito? - - - What's your favorite song? - Qual a sua música favorita? - - - What's your nickname? - Qual a sua alcunha? - - - It cannot be empty - Não pode estar em branco - - - - dccV23::SettingsHead - - Edit - Editar - - - Done - Concluído - - - - dccV23::ShortCutSettingWidget - - System - Sistema - - - Window - Janela - - - Workspace - Área de trabalho - - - Assistive Tools - Ferramentas de apoio - - - Custom Shortcut - Atalho personalizado - - - Restore Defaults - Restaurar predefinições - - - Shortcut - Atalho - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Repor atalho - - - Cancel - Cancelar - - - Replace - Substituir - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Este atalho entra em conflito com o %1, clicar em Substituir para que este atalho tenha efeito imediato - - - - dccV23::ShortcutItem - - Enter a new shortcut - Introduza um novo atalho - - - - dccV23::SystemInfoModel - - available - disponível - - - - dccV23::SystemInfoModule - - About This PC - Acerca deste PC - - - Computer Name - Nome do Computador - - - systemInfo - - - - OS Name - Nome do SO - - - Version - Versão - - - Edition - Edição - - - Type - Tipo - - - Authorization - Autorização - - - Processor - Processador - - - Memory - Memória - - - Graphics Platform - - - - Kernel - Kernel - - - Agreements and Privacy Policy - - - - Edition License - Licença de edição - - - End User License Agreement - Acordo de licença do utilizador final - - - Privacy Policy - Política de Privacidade - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Informação do Sistema - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancelar - - - Add - Adicionar - - - Add System Language - Adicionar idioma do sistema - - - - dccV23::SystemLanguageWidget - - Edit - Editar - - - Language List - Lista de idiomas - - - Add Language - - - - Done - Concluído - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Não incomodar - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - As notificações das aplicações não serão mostradas no ambiente de trabalho e os sons serão silenciados, mas pode ver todas as mensagens no centro de notificações. - - - When the screen is locked - Quando o ecrã está bloqueado - - - - dccV23::TimeSlotItem - - From - Das - - - To - Até - - - - dccV23::TouchScreenModule - - Touch Screen - Ecrã tátil - - - Select your touch screen when connected or set it here. - Selecione o seu ecrã tátil quando ligado ou defina-o aqui - - - Confirm - Confirmar - - - Cancel - Cancelar - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Velocidade do cursor - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Aderir ao Programa de Experiência do Utilizador - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Juntar-se ao programa de utilizador de testes significa que permite e autoriza-nos a recolher e utilizar informação do seu dispositivo, sistema e aplicações. Se recusa as condições mencionadas, não aceite juntar-se ao programa de utilizador de testes. Para detalhes, por favor consulte a Política de Privacidade Deepin (<a href="%1"> %1 </a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Juntar-se ao programa de utilizador de testes significa que permite e autoriza-nos a recolher e utilizar informação do seu dispositivo, sistema e aplicações. Se recusa as condições mencionadas, não aceite juntar-se ao programa de utilizador de testes. Para saber mais acerca da gestão dos seus dados, por favor consulte a Política de Privacidade UnionTech OS (<a href="%1"> %1 </a>).</p> - - - - DateWidget - - Year - Ano - - - Month - Mês - - - Day - Dia - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - É necessária autenticação para alterar o servidor NTP - - - - DefAppModule - - Default Applications - Aplicações predefinidas - - - - DefAppPlugin - - Webpage - Página da Web - - - Mail - Correio - - - Text - Texto - - - Music - Música - - - Video - Vídeo - - - Picture - Imagem - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Aviso Legal - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Antes de usar o reconhecimento facial, tenha em consideração que: -1. O seu dispositivo poderá ser desbloqueado por pessoas ou objetos com aparência similar à sua. -2. O reconhecimento facial é menos seguro que palavras-passe digitais e palavras-passe mistas. -3. O reconhecimento facial com o seu dispositivo será menos funcional em luz reduzida, excesso de luz, iluminação por trás de si, cenários de ângulo largo e outras situações diversas. -4. Por favor não confie o seu dispositivo a terceiros, evitando assim o uso malicioso da função de reconhecimento facial. -5. Em adição das situações acima referidas, tenha em consideração outras potenciais situações que limitem a funcionalidade de reconhecimento facial. - -Para um melhor uso da função de reconhecimento facial, tenha em consideração os seguintes pontos aquando do registo da sua face: -1. Escolha um ambiente bem iluminado sem luz solar direta e sem outras pessoas no ecrã de gravação. -2. Tenha especial atenção a elementos condicionantes ao reconhecimento quando introduzir os seus dados faciais, tais como chapéus, cabelo, óculos de sol, máscara facial, maquilhagem excessiva e outros elementos que possam ocultar caraterísticas faciais. -3. Por favor evite inclinar ou baixar a cabeça, fechar os olhos ou mostrar apenas um lado da face, e certifique-se que a face surge de frente completamente e nitidamente na caixa de gravação. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - A "Autenticação Biométrica" é uma função de autenticação de identidade fornecida pela UnionTech Software Technology Co., Ltd. Recorrendo a "autenticação biométrica", os dados biométricos recebidos serão comparados com os guardados no dispositivo, sendo depois a identidade do utilizador validada com base nos resultados da sua comparação. -Em caso algum a UnionTech Software irá aceder ou guardar em sua posse a sua informação biométrica que se encontra guardada no seu dispositivo local. Por favor utilize a autenticação biométrica exclusivamente num dispositivo da sua propriedade, e ativamente remova ou desative a autenticação biométrica de terceiros nesse mesmo dispositivo sendo quaisquer danos causado pelos mesmos terceiros da sua exclusiva responsabilidade. -A UnionTech Software é empenhada em pesquisa e melhoramento da segurança, eficiência e estabilidade da autenticação biométrica. No entanto, por condições meteorológicas, equipamento, fatores técnicos e controlo de risco, não é garantido que consiga, dado estas mesmas condicionantes, aceder sempre via autenticação biométrica. Assim sendo, não considere a autenticação biométrica como a única forma de início de sessão no Sistema Operativo UnionTech. Se tiver quaisquer questões ou sugestões sobre a utilização da autenticação biométrica, por favor dê-nos feedback através do "Serviço e Suporte" no Sistema Operativo UnionTech. - - - - Cancel - Cancelar - - - Next - Seguinte - - - - DisclaimersItem - - I have read and agree to the - Li e aceito a - - - Disclaimer - Aviso Legal - - - - DockModuleObject - - Dock - Afixar na doca - - - Multiple Displays - Vários ecrãs - - - Show Dock - Mostrar Doca - - - Mode - Modo - - - Position - Posição - - - Status - Estado - - - Show recent apps in Dock - - - - Size - Tamanho - - - Plugin Area - Área de plugins - - - Select which icons appear in the Dock - Selecione quais os ícones que aparecem na Doca - - - Fashion mode - Modo Elegante - - - Efficient mode - Modo eficiente - - - Top - Superior - - - Bottom - Inferior - - - Left - Esquerda - - - Right - Direita - - - Location - Localização - - - Keep shown - Manter visível - - - Keep hidden - Manter ocultada - - - Smart hide - Ocultação inteligente - - - Small - Pequeno - - - Large - Grande - - - On screen where the cursor is - No ecrã onde se encontra o cursor - - - Only on main screen - Apenas no ecrã principal - - - - FaceInfoDialog - - Enroll Face - Registar Rosto - - - Position your face inside the frame - Posicione a sua face na moldura - - - - FaceWidget - - Edit - Editar - - - Manage Faces - Gerir Rostos - - - You can add up to 5 faces - Pode adicionar até 5 faces - - - Done - Concluído - - - Add Face - Adicionar Rosto - - - The name already exists - O nome de já existe - - - Faceprint - Impressão facial - - - - FaceidDetailWidget - - No supported devices found - Não foram encontrados dispositivos suportados - - - - FingerDetailWidget - - No supported devices found - Não foram encontrados dispositivos suportados - - - - FingerDisclaimer - - Add Fingerprint - Adicionar impressão digital - - - Cancel - Cancelar - - - Next - Seguinte - - - - FingerInfoWidget - - Place your finger - Coloque o dedo - - - Place your finger firmly on the sensor until you're asked to lift it - Coloque o dedo firmemente sobre o sensor até que lhe seja pedido que o levante - - - Scan the edges of your fingerprint - Verificar as margens da sua impressão digital - - - Place the edges of your fingerprint on the sensor - Coloque as extremidades da sua impressão digital no sensor - - - Lift your finger - Levante o dedo - - - Lift your finger and place it on the sensor again - Levante o dedo e coloque-o novamente sobre o sensor - - - Adjust the position to scan the edges of your fingerprint - Ajustar a posição do dedo para verificar as margens da sua impressão digital - - - Lift your finger and do that again - Levante o dedo e faça isso novamente - - - Fingerprint added - Impressão digital adicionada - - - - FingerWidget - - Edit - Editar - - - Fingerprint Password - Palavra-passe por impressão digital - - - You can add up to 10 fingerprints - Pode adicionar até 10 impressões digitais - - - Done - Concluído - - - The name already exists - O nome de já existe - - - Add Fingerprint - Adicionar impressão digital - - - - GeneralModule - - General - Geral - - - Balanced - Equilibrado - - - Balance Performance - - - - High Performance - Elevado desempenho - - - Power Saver - Poupança de energia - - - Power Plans - Planos de energia - - - Power Saving Settings - Definições de poupança de energia - - - Auto power saving on low battery - Poupança automática de energia com bateria fraca - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Poupança automática de energia com bateria - - - Wakeup Settings - Definições de retomar - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Não pode começar ou terminar com travessões - - - 1~63 characters please - 1~63 caracteres - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - Não foram encontrados dispositivos suportados - - - - IrisWidget - - Edit - Editar - - - Manage Irises - Gerir Íris - - - You can add up to 5 irises - Pode adicionar até 5 íris - - - Done - Concluído - - - Add Iris - Adicionar Íris - - - The name already exists - O nome de já existe - - - Iris - Íris - - - - KeyLabel - - None - Nenhum - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin Community - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Dispositivo de entrada - - - Automatic Noise Suppression - Supressão automática de ruído - - - Input Volume - Volume de entrada - - - Input Level - Nível de entrada - - - - PersonalizationDesktopModule - - Desktop - Ambiente de Trabalho - - - Window - Janela - - - Window Effect - Efeitos visuais - - - Window Minimize Effect - Efeito ao minimizar janela - - - Transparency - Transparência - - - Rounded Corner - Canto arredondado - - - Scale - Escala - - - Magic Lamp - Lâmpada Mágica - - - Small - Pequeno - - - Middle - - - - Large - Grande - - - - PersonalizationModule - - Personalization - Personalização - - - - PersonalizationThemeList - - Cancel - Cancelar - - - Save - Guardar - - - Light - Claro - - - Dark - Escuro - - - Auto - Automático - - - Default - Predefinição - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - Cor de destaque - - - Icon Settings - - - - Icon Theme - Tema de ícones - - - Cursor Theme - Tema do cursor - - - Text Settings - - - - Font Size - Tamanho da Letra - - - Standard Font - Fonte predefinida - - - Monospaced Font - Fonte mono-espaçada - - - Light - Claro - - - Auto - Automático - - - Dark - Escuro - - - - PersonalizationThemeWidget - - Light - Claro - General - /personalization/General - - - Dark - Escuro - General - /personalization/General - - - Auto - Automático - General - /personalization/General - - - Default - Predefinição - - - - PersonalizationWorker - - Custom - Personalizado - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - O PIN para ligar ao dispositivo Bluetooth é: - - - Cancel - Cancelar - - - Confirm - Confirmar - - - - PowerModule - - Power - Energia - - - Battery low, please plug in - Bateria fraca, ligue à corrente - - - Battery critically low - Bateria em estado crítico - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Câmara - - - Microphone - Microfone - - - User Folders - - - - Calendar - Calendário - - - Screen Capture - - - - - QObject - - Control Center - Centro de Controlo - - - , - - - - Error occurred when reading the configuration files of password rules! - Ocorreu um erro ao ler os ficheiros de configuração das regras de palavra-passe! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Ativado - - - View - Ver - - - To be activated - A ser ativado - - - Activate - Ativar - - - Expired - Expirado - - - In trial period - Em período experimental - - - Trial expired - O período experimental expirou - - - Touch Screen Settings - Definições do ecrã tátil - - - The settings of touch screen changed - As definições do ecrã tátil foram alteradas - - - Checking system versions, please wait... - A verificar versões do sistema, por favor aguarde... - - - Leave - Sair - - - Cancel - Cancelar - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - O seu sistema não está autorizado, ativar primeiro - - - Update successful - Atualização bem sucedida - - - Failed to update - Falha ao atualizar - - - - SearchInput - - Search - Pesquisar - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Efeitos sonoros - - - - SoundModel - - Boot up - Arrancar - - - Shut down - Encerrar - - - Log out - Terminar sessão - - - Wake up - Retomar - - - Volume +/- - Volume +/- - - - Notification - Notificação - - - Low battery - Bateria fraca - - - Send icon in Launcher to Desktop - Enviar ícone no lançador para o ambiente de trabalho - - - Empty Trash - Esvaziar o lixo - - - Plug in - Ligar - - - Plug out - Desligar - - - Removable device connected - Dispositivo removível ligado - - - Removable device removed - Dispositivo removível retirado - - - Error - Erro - - - - SoundModule - - Sound - Som - - - - SoundPlugin - - Output - Saída - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Entrada - - - Sound Effects - Efeitos sonoros - - - Devices - Dispositivos - - - Input Devices - Dispositivos de entrada - - - Output Devices - Dispositivos de saída - - - - SpeakerPage - - Output Device - Dispositivo de saída - - - Mode - Modo - - - Output Volume - Volume de saída - - - Volume Boost - Aumento do volume - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Equilíbrio Esquerdo/Direito - - - Left - Esquerda - - - Right - Direita - - - - TimeSettingModule - - Time Settings - Definições horárias - - - Time - Hora - - - Auto Sync - Sincronização Automática - - - Reset - Repor - - - Save - Guardar - - - Server - Servidor - - - Address - Endereço - - - Required - Necessário - - - Customize - Personalizar - - - Year - Ano - - - Month - Mês - - - Day - Dia - - - - TimeZoneChooser - - Cancel - Cancelar - - - Confirm - Confirmar - - - Add Timezone - Adicionar Fuso Horário - - - Add - Adicionar - - - Change Timezone - Alterar fuso horário - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Reverter - - - Save - Guardar - - - - TimezoneItem - - Tomorrow - Amanhã - - - Yesterday - Ontem - - - Today - Hoje - - - %1 hours earlier than local - %1 horas antes da local - - - %1 hours later than local - %1 horas depois da local - - - - TimezoneModule - - Timezone List - Lista de fusos horários - - - System Timezone - Fuso Horário do Sistema - - - Add Timezone - Adicionar Fuso Horário - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - A conta de utilizador não está ligada ao Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Para alterar palavras-passe primeiro precisa autenticar o seu Union ID. Clique em "Ir para o endereço" para finalizar as alterações. - - - Cancel - Cancelar - - - Go to Link - Ir para ligação - - - - UnknownUpdateItem - - Release date: - Data de lançamento: - - - - UpdateCtrlWidget - - Check Again - Verificar novamente - - - Update failed: insufficient disk space - Falha na atualização: espaço em disco insuficiente - - - Dependency error, failed to detect the updates - Erro de dependência, falha ao detetar as atualizações - - - Restart the computer to use the system and the applications properly - Reinicie o computador para utilizar o sistema e as aplicações corretamente - - - Network disconnected, please retry after connected - Rede desligada, tente novamente após ligado - - - Your system is not authorized, please activate first - O seu sistema não está autorizado, ativar primeiro - - - This update may take a long time, please do not shut down or reboot during the process - Esta atualização pode demorar muito tempo, não encerre ou reinicie durante o processo - - - Updates Available - Atualizações disponíveis - - - Current Edition - Edição atual - - - Updating... - A atualizar... - - - Update All - Atualizar tudo - - - Last checking time: - Hora da última verificação: - - - Your system is up to date - O sistema está atualizado - - - Check for Updates - Procurar por atualizações - - - Checking for updates, please wait... - A procurar por atualizações, aguarde... - - - The newest system installed, restart to take effect - A versão mais recente do sistema foi instalada. Reinicie para ter efeito - - - %1% downloaded (Click to pause) - %1% transferido (Clique para parar) - - - %1% downloaded (Click to continue) - %1% transferido (Clique para continuar) - - - Your battery is lower than 50%, please plug in to continue - A sua bateria está abaixo dos 50%, ligue à corrente para continuar - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Certifique-se que tem carga suficiente para reiniciar e não encerre nem desligue da corrente o seu computador - - - Size - Tamanho - - - - UpdateModule - - Updates - Atualizações - - - - UpdatePlugin - - Check for Updates - Procurar por atualizações - - - - UpdateSettingItem - - Insufficient disk space - Espaço em disco insuficiente - - - Update failed: insufficient disk space - Falha na atualização: espaço em disco insuficiente - - - Update failed - Falha ao atualizar - - - Network error - Erro de rede - - - Network error, please check and try again - Erro de rede, verifique e tente novamente - - - Packages error - Erro nos pacotes - - - Packages error, please try again - Erro nos pacotes, por favor tente novamente - - - Dependency error - Erro de dependência - - - Unmet dependencies - Faltam dependências - - - The newest system installed, restart to take effect - A versão mais recente do sistema foi instalada. Reinicie para ter efeito - - - Waiting - A aguardar - - - Backing up - A efetuar cópia de segurança - - - System backup failed - Falha ao criar cópia de segurança do sistema - - - Release date: - Data de lançamento: - - - Server - Servidor - - - Desktop - Ambiente de Trabalho - - - Version - Versão - - - - UpdateSettingsModule - - Update Settings - Definições de atualização - - - System - Sistema - - - Security Updates Only - Apenas atualizações de segurança - - - Switch it on to only update security vulnerabilities and compatibility issues - Ative para apenas receber atualizações de vulnerabilidades de segurança e problemas de compatibilidade - - - Third-party Repositories - Repositórios de Terceiros - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - Outras Definições - - - Auto Check for Updates - Verificar por Atualizações Automaticamente - - - Auto Download Updates - Transferir atualizações automaticamente - - - Switch it on to automatically download the updates in wireless or wired network - Ativar para transferir automaticamente as atualizações na rede por cabo ou sem fios - - - Auto Install Updates - Instalar atualizações automaticamente - - - Updates Notification - Notificação de atualizações - - - Clear Package Cache - Limpar cache do pacote - - - Updates from Internal Testing Sources - Atualizações a partir de fontes de teste internas - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Atualizações do sistema - - - Security Updates - Atualizações de segurança - - - Install updates automatically when the download is complete - Instalar atualizações automaticamente ao completar download - - - Install "%1" automatically when the download is complete - Instalar "%1" automaticamente ao completar download - - - - UpdateWidget - - Current Edition - Edição atual - - - - UpdateWorker - - System Updates - Atualizações do sistema - - - Fixed some known bugs and security vulnerabilities - Corrigidos alguns bugs conhecidos e vulnerabilidades de segurança - - - Security Updates - Atualizações de segurança - - - Third-party Repositories - Repositórios de Terceiros - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - A bateria - - - Never - Nunca - - - Shut down - Encerrar - - - Suspend - Suspender - - - Hibernate - Hibernar - - - Turn off the monitor - Desligar o monitor - - - Do nothing - Não fazer nada - - - 1 Minute - 1 Minuto - - - %1 Minutes - %1 Minutos - - - 1 Hour - 1 Hora - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Bloquear o ecrã após - - - Computer suspends after - - - - Computer will suspend after - O computador irá suspender após - - - When the lid is closed - Ao fechar a tampa - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Nível de bateria baixo - - - Auto suspend battery level - Suspensão automática do nível da bateria - - - Battery Management - - - - Display remaining using and charging time - Mostrar tempo restante de utilização e carregamento - - - Maximum capacity - Capacidade máxima - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Ligado - - - 1 Minute - 1 Minuto - - - %1 Minutes - %1 Minutos - - - 1 Hour - 1 Hora - - - Never - Nunca - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Bloquear o ecrã após - - - Computer suspends after - - - - When the lid is closed - Ao fechar a tampa - - - When the power button is pressed - - - - Shut down - Encerrar - - - Suspend - Suspender - - - Hibernate - Hibernar - - - Turn off the monitor - Desligar o monitor - - - Show the shutdown Interface - - - - Do nothing - Não fazer nada - - - - WacomModule - - Drawing Tablet - Tablet de Desenho - - - Mode - Modo - - - Pressure Sensitivity - Sensibilidade da pressão - - - Pen - Caneta - - - Mouse - Rato - - - Light - Claro - - - Heavy - Pesada - - - - main - - Control Center provides the options for system settings. - O Centro de Controlo fornece as opções para as definições do sistema. - - - - updateControlPanel - - Downloading - A transferir - - - Waiting - A aguardar - - - Installing - A instalar - - - Backing up - A efetuar cópia de segurança - - - Download and install - Transferir e instalar - - - Learn more - Saiba mais - - - diff --git a/dcc-old/translations/dde-control-center_pt_BR.ts b/dcc-old/translations/dde-control-center_pt_BR.ts deleted file mode 100644 index 3e9cba41cb..0000000000 --- a/dcc-old/translations/dde-control-center_pt_BR.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Permitir que os outros dispositivos encontrem este dispositivo - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Ative o Bluetooth para detectar dispositivos próximos - - - My Devices - Dispositivos Pareados - - - Other Devices - Outros Dispositivos - - - Show Bluetooth devices without names - Exibir os dispositivos sem nome - - - Connect - Conectar - - - Disconnect - Desconectar - - - Rename - Renomear - - - Send Files - Enviar Arquivos - - - Ignore this device - Ignorar este dispositivo - - - Connecting - Conectando - - - Disconnecting - Desconectando - - - - AddButtonWidget - - Add Application - Acrescentar Aplicativo - - - Open Desktop file - Abrir o arquivo da Área de Trabalho - - - Apps (*.desktop) - Aplicativos (*.desktop) - - - All files (*) - Todos os arquivos (*) - - - - AddFaceInfoDialog - - Enroll Face - Registar Rosto - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Certifique-se de que todas as partes do seu rosto não estejam cobertas por objetos e sejam claramente visíveis. Seu rosto também deve estar bem iluminado. - - - Cancel - Cancelar - - - Next - Próximo - - - Face enrolled - Rosto registrado - - - Use your face to unlock the device and make settings later - Use seu rosto para desbloquear o dispositivo e fazer as configurações mais tarde - - - Done - Concluído - - - Failed to enroll your face - Falha ao registrar seu rosto - - - Try Again - Tente novamente - - - Close - Fechar - - - - AddFingerDialog - - Cancel - Cancelar - - - Done - Concluído - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Cancelar - - - Next - Próximo - - - Iris enrolled - - - - Done - Concluído - - - Failed to enroll your iris - - - - Try Again - Tente novamente - - - - AuthenticationInfoItem - - No more than 15 characters - Não mais do que 15 caracteres - - - Use letters, numbers and underscores only, and no more than 15 characters - Use apenas letras, números e underlines; não mais do que 15 caracteres - - - Use letters, numbers and underscores only - Use apenas letras, números e underlines - - - - AuthenticationModule - - Biometric Authentication - Autenticação Biométrica - - - - AuthenticationPlugin - - Fingerprint - Impressão Digital - - - Face - - - - Iris - Íris - - - - BluetoothDeviceModel - - Connected - Conectado - - - Not connected - Não conectado - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Gerenciador de dispositivos Bluetooth - - - - CharaMangerModel - - Fingerprint1 - Impressão digital 1 - - - Fingerprint2 - Impressão digital 2 - - - Fingerprint3 - Impressão digital 3 - - - Fingerprint4 - Impressão digital 4 - - - Fingerprint5 - Impressão digital 5 - - - Fingerprint6 - Impressão digital 6 - - - Fingerprint7 - Impressão digital 7 - - - Fingerprint8 - Impressão digital 8 - - - Fingerprint9 - Impressão digital 9 - - - Fingerprint10 - Impressão digital 10 - - - Scan failed - A leitura falhou - - - The fingerprint already exists - A impressão digital já existe - - - Please scan other fingers - Digitalize os outros dedos - - - Unknown error - Erro desconhecido - - - Scan suspended - Leitura suspensa - - - Cannot recognize - Não reconhecida - - - Moved too fast - Moveu-se muito rápido - - - Finger moved too fast, please do not lift until prompted - O dedo se moveu muito rápido; não levante até que seja solicitado - - - Unclear fingerprint - Impressão digital pouco nítida - - - Clean your finger or adjust the finger position, and try again - Limpe o dedo ou ajuste a posição do mesmo, e tente novamente - - - Already scanned - Já digitalizado - - - Adjust the finger position to scan your fingerprint fully - Ajuste a posição do dedo para digitalizar totalmente a impressão digital - - - Finger moved too fast. Please do not lift until prompted - O dedo se moveu muito rápido; não levante até que seja solicitado - - - Lift your finger and place it on the sensor again - Levante o dedo e posicione-o sobre o sensor - - - Position your face inside the frame - Posicione o seu rosto dentro da moldura - - - Face enrolled - Rosto registrado - - - Position a human face please - Use uma face humana por favor - - - Keep away from the camera - Afaste-se da câmera - - - Get closer to the camera - Aproxime-se da câmera - - - Do not position multiple faces inside the frame - Não posicione vários rostos dentro do quadro - - - Make sure the camera lens is clean - Certifique-se que a lente da câmera está limpa - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Cancelar - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Cancelar - - - Confirm - button - Confirmar - - - - dccV23::AccountSpinBox - - Always - Sempre - - - - dccV23::AccountsModule - - Users - Usuários - - - User management - - - - Create User - - - - Username - Nome de usuário - - - Change Password - Alterar senha - - - Delete User - Excluir usuário - - - User Type - - - - Auto Login - Login automático - - - Login Without Password - Login sem senha - - - Validity Days - Dias válidos - - - Group - Grupo - - - The full name is too long - O nome completo é muito longo - - - Standard User - Usuário Padrão - - - Administrator - Administrador - - - Reset Password - Redefinir a senha - - - The full name has been used by other user accounts - Nome completo já está em uso em outra conta - - - Full Name - Nome completo - - - Go to Settings - Ir para Configurações - - - Cancel - Cancelar - - - OK - Ok - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - "Login Automático" só pode ser habilitado para uma conta, por favor desabilite-o para a conta "%1" primeiro - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - O host foi removido do servidor de domínio - - - Your host joins the domain server successfully - O host ingressou no servidor de domínio - - - Your host failed to leave the domain server - Seu host falhou em deixar o servidor de domínio - - - Your host failed to join the domain server - Seu host falhou em juntar-se ao servidor de domínio - - - AD domain settings - Configurações de domínio AD - - - Password not match - A senha não coincide - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Exibir notificações do %1 na área de trabalho e na central de notificações. - - - Play a sound - Emitir um som - - - Show messages on lockscreen - Exibir mensagens na tela de bloqueio - - - Show in notification center - Exibir na Central de Notificações - - - Show message preview - Exibir pré-visualização da mensagem - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Cancelar - - - Save - Salvar - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Imagens - - - - dccV23::BootWidget - - Updating... - Atualizando... - - - Startup Delay - Atrasar inicialização - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Clique na opção para defini-la como primeira opção de inicialização. E arraste uma imagem para alterar o plano de fundo de inicialização - - - Click the option in boot menu to set it as the first boot - Clique na opção para defini-la como primeira opção de inicialização - - - Switch theme on to view it in boot menu - Alternar tema para visualizá-lo no menu de inicialização - - - GRUB Authentication - Autenticação do GRUB - - - GRUB password is required to edit its configuration - A senha do GRUB é necessária para alterar esta configuração - - - Change Password - Alterar senha - - - Boot Menu - Menu de Inicialização - - - Change GRUB password - Alterar a senha do GRUB - - - Username: - Nome de Usuário: - - - root - - - - New password: - Nova senha: - - - Repeat password: - Repita a senha: - - - Required - Obrigatório - - - Cancel - button - Cancelar - - - Confirm - button - Confirmar - - - Password cannot be empty - A senha não pode estar vazia - - - Passwords do not match - As senhas não coincidem - - - - dccV23::BrightnessWidget - - Brightness - Brilho - - - Color Temperature - Temperatura de Cor - - - Auto Brightness - Brilho Automático - - - Night Shift - Filtro de luz azul - - - The screen hue will be auto adjusted according to your location - A tonalidade de cor se ajustará automaticamente de acordo com a sua localização - - - Change Color Temperature - Balanço de branco - - - Cool - Frio - - - Warm - Quente - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Dispositivos Pareados - - - Other Devices - Outros Dispositivos - - - - dccV23::CommonInfoPlugin - - General Settings - Configurações Gerais - - - Boot Menu - Menu de Inicialização - - - Developer Mode - Modo de Desenvolvedor - - - User Experience Program - Programa de Experiência do Usuário - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Concordar e Participar do Programa de Experiência do Usuário - - - The Disclaimer of Developer Mode - Aviso Legal do Modo de Desenvolvedor - - - Agree and Request Root Access - Concordar e Solicitar Acesso Administrativo - - - Failed to get root access - Falha ao obter o acesso administrativo - - - Please sign in to your Union ID first - Por favor faça login no Union ID primeiro - - - Cannot read your PC information - Não é possível ler as informações do PC - - - No network connection - Nenhuma conexão de rede - - - Certificate loading failed, unable to get root access - O carregamento do certificado falhou, impossível obter o acesso root - - - Signature verification failed, unable to get root access - A verificação da assinatura falhou, impossível obter o acesso root - - - - dccV23::CreateAccountPage - - Group - Grupo - - - Cancel - Cancelar - - - Create - Criar - - - New User - - - - User Type - - - - Username - Nome de Usuário - - - Full Name - Nome completo - - - Password - Senha - - - Repeat Password - Repetir Senha - - - Password Hint - Dica de senha - - - The full name is too long - O nome completo é muito longo - - - Passwords do not match - As senhas não coincidem - - - Standard User - Usuário Padrão - - - Administrator - Administrador - - - Customized - Personalizado - - - Required - Obrigatório - - - optional - opcional - - - The hint is visible to all users. Do not include the password here. - A dica está visível para todos. Não digite senhas aqui. - - - Policykit authentication failed - A autenticação do policykit falhou - - - Username must be between 3 and 32 characters - O nome de usuário deve conter entre 3 a 32 caracteres - - - The first character must be a letter or number - O primeiro caractere deve ser uma letra ou um número - - - Your username should not only have numbers - Seu nome de usuário não pode conter apenas números - - - The username has been used by other user accounts - O nome de utilizador tem sido utilizado por outras contas de utilizador - - - The full name has been used by other user accounts - Nome completo já está em uso em outra conta - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Imagens - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Adicionar um Atalho Personalizado - - - Name - Nome - - - Required - Obrigatório - - - Command - Comando - - - Cancel - Cancelar - - - Add - Adicionar - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Este atalho conflita com %1; clique em Adicionar para efetivá-lo - - - - dccV23::CustomEdit - - Required - Obrigatório - - - Cancel - Cancelar - - - Save - Salvar - - - Shortcut - Atalho - - - Name - Nome - - - Command - Comando - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Este atalho conflita com %1; clique em Adicionar para efetivá-lo - - - - dccV23::CustomItem - - Shortcut - Atalho - - - Please enter a shortcut - Forneça um atalho - - - - dccV23::CustomRegionFormatDialog - - Custom format - Formato personalizado - - - First day of week - Primeiro dia da semana - - - Short date - Data curta - - - Long date - Data longa - - - Short time - Hora curta - - - Long time - Hora longa - - - Currency symbol - Símbolo monetário - - - Numbers - Números - - - Paper - Tamanho de papel - - - Cancel - Cancelar - - - Save - Salvar - - - - dccV23::DetailInfoItem - - For more details, visit: - Para mais detalhes, visite: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Solicitar Acesso Administrativo - - - Online - On-line - - - Offline - Off-line - - - Please sign in to your Union ID first and continue - Faça login no Union ID e continue - - - Next - Próximo - - - Export PC Info - Exportar Informações do PC - - - Import Certificate - Importar Certificado - - - 1. Export your PC information - 1. Exportar as informações do PC - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Visite https://www.chinauos.com/developMode para baixar um certificado local - - - 3. Import the certificate - 3. Importar o certificado - - - - dccV23::DeveloperModeWidget - - Request Root Access - Solicitar Acesso Administrativo - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - O modo de desenvolvedor permite que você obtenha o acesso administrativo, e possa instalar e executar aplicativos não assinados e não listados na loja de aplicativos; mas, a integridade do sistema poderá ser danificada; use-o com cuidado. - - - The feature is not available at present, please activate your system first - No momento, o recurso não está disponível; é necessário ativar o sistema - - - Failed to get root access - Falha ao obter o acesso administrativo - - - Please sign in to your Union ID first - Por favor faça login no Union ID primeiro - - - Cannot read your PC information - Não é possível ler as informações do PC - - - No network connection - Nenhuma conexão de rede - - - Certificate loading failed, unable to get root access - O carregamento do certificado falhou, impossível obter o acesso root - - - Signature verification failed, unable to get root access - A verificação da assinatura falhou, impossível obter o acesso root - - - To make some features effective, a restart is required. Restart now? - Para efetivar alguns recursos, é necessária uma reinicialização. Reiniciar agora? - - - Cancel - Cancelar - - - Restart Now - Reiniciar - - - Root Access Allowed - Acesso Administrativo Permitido - - - - dccV23::DisplayPlugin - - Display - Tela - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Teste de Clique Duplo - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Configurações de Teclado - - - Repeat Delay - Atraso de Repetição - - - Short - Curto - - - Long - Longo - - - Repeat Rate - Taxa de Repetição - - - Slow - Lento - - - Fast - Rápido - - - Test here - Teste aqui - - - Numeric Keypad - Indicador do Teclado Numérico - - - Caps Lock Prompt - Indicador do Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Mão Esquerda - - - Disable touchpad while typing - Desativar toque na tela durante a escrita - - - Scrolling Speed - Velocidade de Rolagem - - - Double-click Speed - Velocidade do Clique Duplo - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Layout de Teclado - - - Edit - Editar - - - Add Keyboard Layout - Adicionar Layout de Teclado - - - Done - Concluído - - - - dccV23::KeyboardLayoutDialog - - Cancel - Cancelar - - - Add - Adicionar - - - Add Keyboard Layout - Adicionar Layout de Teclado - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Teclado e Idioma - - - Keyboard - Teclado - - - Keyboard Settings - Configurações de Teclado - - - keyboard Layout - - - - Keyboard Layout - Layout de Teclado - - - Language - Idioma - - - Shortcuts - Atalhos - - - - dccV23::MainWindow - - Help - Ajuda - - - - dccV23::ModifyPasswdPage - - Change Password - Alterar senha - - - Reset Password - Redefinir a senha - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Senha - - - Forgot password? - Esqueceu a senha? - - - New Password - Nova Senha - - - Repeat Password - Repetir Senha - - - Password Hint - Dica de senha - - - Cancel - Cancelar - - - Save - Salvar - - - Passwords do not match - As senhas não coincidem - - - Required - Obrigatório - - - Optional - Opcional - - - Password cannot be empty - A senha não pode estar vazia - - - The hint is visible to all users. Do not include the password here. - A dica está visível para todos. Não digite senhas aqui. - - - Wrong password - Senha incorreta - - - New password should differ from the current one - A nova senha deve ser diferente da senha atual - - - System error - Erro no sistema - - - Network error - Erro de rede - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Agrupar Janelas - - - Screen rearrangement will take effect in %1s after changes - O rearranjo de tela estará visível %1s após as mudanças - - - - dccV23::MousePlugin - - Mouse - Mouse - - - General - Geral - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Velocidade do Cursor - - - Mouse Acceleration - Aceleração do Mouse - - - Disable touchpad when a mouse is connected - Desativar o touchpad ao conectar o mouse - - - Natural Scrolling - Rolagem Natural - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::MultiScreenWidget - - Multiple Displays - Multiple Displays - /display/Multiple Displays - - - Mode - Modo - /display/Mode - - - Main Screen - Tela Principal - /display/Main Scree - - - Duplicate - Duplicar - - - Extend - Estender - - - Only on %1 - Somente em %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notificação - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Detecção de Palma - - - Minimum Contact Surface - Superfície de contato mínima - - - Minimum Pressure Value - Valor mínimo de pressão - - - Disable the option if touchpad doesn't work after enabled - Desative essa opção se o touchpad não funcionar - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Política de Privacidade - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Estamos cientes sobre a importância das suas informações. Portanto, temos uma Política de Privacidade que protege o que coletamos, usamos, compartilhamos, transferimos, divulgamos e armazenamos.</p><p>Você pode <a href="%1">clicar aqui</a> para ver a nossa política de privacidade ou acessar <a href="%1"> %1</a>. Leia atentamente as nossas práticas sobre a proteção à privacidade do cliente. Qualquer dúvida, entre em contato conosco: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - A senha não pode estar vazia - - - Password must have at least %1 characters - A senha deve ter pelo menos %1 caracteres - - - Password must be no more than %1 characters - A senha não deve ter mais do que %1 caracteres - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - A senha pode conter apenas letras em Inglês (sensível a maiúsculas e minúsculas), números ou símbolos especiais (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Não mais do que %1 caracteres palíndromos, por favor - - - No more than %1 monotonic characters please - Não mais que %1 caracteres monotônicos, por favor - - - No more than %1 repeating characters please - Não mais do que %1 caracteres repetidos, por favor - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - A senha deve conter letras maiúsculas, letras minúsculas, números e símbolos (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - A senha não deve conter mais do que 4 caracteres palíndromos - - - Do not use common words and combinations as password - Não utilize palavras comuns e combinações como senha - - - Create a strong password please - Crie uma senha forte - - - It does not meet password rules - Não atende às regras de senha - - - - dccV23::RefreshRateWidget - - Refresh Rate - Taxa de atualização - - - Hz - Hz - - - Recommended - recomendado - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - Primeiro dia - - - Short date - Data curta - - - Long date - Data longa - - - Short time - Hora curta - - - Long time - Hora longa - - - Currency symbol - Símbolo monetário - - - Numbers - Números - - - Paper - Tamanho de papel - - - Cancel - Cancelar - - - Save - Salvar - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Excluir esta conta? - - - Delete account directory - Apagar diretório da conta - - - Cancel - Cancelar - - - Delete - Excluir - - - - dccV23::ResolutionWidget - - Resolution - Resolução - /display/Resolution - - - Resize Desktop - Redimensionar a Área de Trabalho - /display/Resize Desktop - - - Default - Padrão - - - Fit - Ajustar - - - Stretch - Alongar - - - Center - Centralizar - - - Recommended - recomendado - - - - dccV23::RotateWidget - - Rotation - Rotação - /display/Rotation - - - Standard - Padrão - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - O monitor suporta apenas 100% da escala de exibição - - - Display Scaling - Escala de Exibição - - - - dccV23::SearchInput - - Search - Pesquisar - - - - dccV23::SecondaryScreenDialog - - Brightness - Brilho - - - - dccV23::SecurityLevelItem - - Weak - Fraca - - - Medium - Média - - - Strong - Forte - - - - dccV23::SecurityQuestionsPage - - Security Questions - Perguntas de Segurança - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - Pergunta de Segurança 1 - - - Security question 2 - Pergunta de Segurança 2 - - - Security question 3 - Pergunta de Segurança 3 - - - Cancel - Cancelar - - - Confirm - Confirmar - - - Keep the answer under 30 characters - A resposta deve ter menos de 30 caracteres. - - - Do not choose a duplicate question please - Por favor, não escolha uma pergunta em duplicado - - - Please select a question - Por favor, escolha uma pergunta - - - What's the name of the city where you were born? - Qual o nome da cidade onde nasceu? - - - What's the name of the first school you attended? - Qual o nome da primeira escola que frequentou? - - - Who do you love the most in this world? - Quem você mais ama neste mundo? - - - What's your favorite animal? - Qual o seu animal favorito? - - - What's your favorite song? - Qual a sua música favorita? - - - What's your nickname? - Qual é o seu apelido? - - - It cannot be empty - Não pode estar em branco - - - - dccV23::SettingsHead - - Edit - Editar - - - Done - Concluído - - - - dccV23::ShortCutSettingWidget - - System - Sistema - - - Window - Janela - - - Workspace - Área de Trabalho - - - Assistive Tools - Ferramentas de Assistência - - - Custom Shortcut - Atalho Personalizado - - - Restore Defaults - Restaurar Padrões - - - Shortcut - Atalho - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Redefina o atalho - - - Cancel - Cancelar - - - Replace - Substituir - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Este atalho conflita com %1, clique Substituir para tornar este atalho ativo imediatamente - - - - dccV23::ShortcutItem - - Enter a new shortcut - Insira um novo atalho - - - - dccV23::SystemInfoModel - - available - disponível - - - - dccV23::SystemInfoModule - - About This PC - Sobre - - - Computer Name - Nome do Computador - - - systemInfo - - - - OS Name - Sistema Operacional - - - Version - Versão - - - Edition - Edição - - - Type - Arquitetura - - - Authorization - Autorização - - - Processor - Processador - - - Memory - Memória - - - Graphics Platform - Servidor de Exibição - - - Kernel - - - - Agreements and Privacy Policy - Acordos e Política de Privacidade - - - Edition License - Licença desta Versão - - - End User License Agreement - Acordo de Licença de Usuário Final - - - Privacy Policy - Política de Privacidade - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Informações do Sistema - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Cancelar - - - Add - Adicionar - - - Add System Language - Adicionar Idioma do Sistema - - - - dccV23::SystemLanguageWidget - - Edit - Editar - - - Language List - Lista de Idiomas - - - Add Language - - - - Done - Concluído - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Não Perturbe - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - As notificações do aplicativo não serão exibidas na área de trabalho e os sons serão silenciados; mas, você poderá ver todas as mensagens na central de notificações. - - - When the screen is locked - Quando a tela está bloqueada - - - - dccV23::TimeSlotItem - - From - De - - - To - Para - - - - dccV23::TouchScreenModule - - Touch Screen - Touch Screen - - - Select your touch screen when connected or set it here. - Selecione o touch screen quando estiver conectado ou configure-o aqui. - - - Confirm - Confirmar - - - Cancel - Cancelar - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Velocidade do Cursor - - - Slow - Lento - - - Fast - Rápido - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Participar do Programa de Experiência do Usuário - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Juntar-se ao Programa de Experiência do Usuário significa que você concorda e autoriza-nos a coletar e usar as informações de seu dispositivo, sistema e aplicativos. Se você rejeita nossas condições supracitadas e o uso das informações, não junte-se ao Programa de Experiência do Usuário. Para ver detalhes, por favor consulte a Política de Privacidade Deepin (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Juntar-se ao Programa de Experiência do Usuário significa que você concorda e autoriza-nos a coletar e usar as informações de seu dispositivo, sistema e aplicativos. Se você rejeita nossas condições supracitadas e o uso das informações, não junte-se ao Programa de Experiência do Usuário. Para ver detalhes, por favor consulte a Política de Privacidade Deepin (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Ano - - - Month - Mês - - - Day - Dia - - - - DatetimeModule - - Time and Format - Hora e Formato - - - - DatetimeWorker - - Authentication is required to change NTP server - A autenticação é necessária para alterar o Servidor NTP - - - - DefAppModule - - Default Applications - Programas Padrão - - - - DefAppPlugin - - Webpage - Página da Web - - - Mail - E-mail - - - Text - Texto - - - Music - Player de Música - - - Video - Player de Vídeo - - - Picture - Foto - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Aviso Legal - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Cancelar - - - Next - Próximo - - - - DisclaimersItem - - I have read and agree to the - Li e concordo com a - - - Disclaimer - Aviso Legal - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - Multiple Displays - - - Show Dock - Exibir dock - - - Mode - Modo - - - Position - Posição - - - Status - Estado - - - Show recent apps in Dock - Exibir os aplicativos recentes no dock - - - Size - Tamanho - - - Plugin Area - Área de Plug-ins - - - Select which icons appear in the Dock - Selecione quais ícones devem aparecer no Dock - - - Fashion mode - Fashion - - - Efficient mode - Eficiente - - - Top - Superior - - - Bottom - Inferior - - - Left - Esquerda - - - Right - Direita - - - Location - Posição - - - Keep shown - Sempre exibir - - - Keep hidden - Sempre ocultar - - - Smart hide - Ocultar automaticamente - - - Small - Pequeno - - - Large - Grande - - - On screen where the cursor is - On screen where the cursor is - - - Only on main screen - Only on main screen - - - - FaceInfoDialog - - Enroll Face - Registar Rosto - - - Position your face inside the frame - Posicione o seu rosto dentro da moldura - - - - FaceWidget - - Edit - Editar - - - Manage Faces - Gerir Rostos - - - You can add up to 5 faces - Pode adicionar até 5 faces - - - Done - Concluído - - - Add Face - Adicionar Rosto - - - The name already exists - O nome já existe - - - Faceprint - Impressão facial - - - - FaceidDetailWidget - - No supported devices found - Não foram encontrados dispositivos compatíveis - - - - FingerDetailWidget - - No supported devices found - Não foram encontrados dispositivos compatíveis - - - - FingerDisclaimer - - Add Fingerprint - Adicionar Impressão Digital - - - Cancel - Cancelar - - - Next - Próximo - - - - FingerInfoWidget - - Place your finger - Posicione o dedo - - - Place your finger firmly on the sensor until you're asked to lift it - Posicione o dedo firmemente sobre o sensor, até que lhe seja solicitado a levantá-lo - - - Scan the edges of your fingerprint - Digitalize as laterais da sua impressão digital - - - Place the edges of your fingerprint on the sensor - Posicione as laterais da impressão digital sobre o sensor - - - Lift your finger - Levante o dedo - - - Lift your finger and place it on the sensor again - Levante o dedo e posicione-o sobre o sensor - - - Adjust the position to scan the edges of your fingerprint - Posicione corretamente o dedo para digitalizar as laterais da sua impressão digital - - - Lift your finger and do that again - Levante o dedo e digitalize novamente - - - Fingerprint added - Impressão digital adicionada - - - - FingerWidget - - Edit - Editar - - - Fingerprint Password - Senha por Impressão Digital - - - You can add up to 10 fingerprints - Você pode adicionar até 10 impressões digitais - - - Done - Concluído - - - The name already exists - O nome já existe - - - Add Fingerprint - Adicionar Impressão Digital - - - - GeneralModule - - General - Geral - - - Balanced - Equilibrado - - - Balance Performance - - - - High Performance - Alto Desempenho - - - Power Saver - Economia de Energia - - - Power Plans - Planos de Energia - - - Power Saving Settings - Configurações de Economia de Energia - - - Auto power saving on low battery - Economia de energia automática com bateria fraca - - - Decrease Brightness - Reduzir brilho - - - Low battery threshold - - - - Auto power saving on battery - Economia de energia automática na bateria - - - Wakeup Settings - Configurações de Acordar - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - It cannot start or end with dashes - - - 1~63 characters please - 1~63 caracteres - - - - InternalButtonItem - - Internal testing channel - Canal de testes interno - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - Não foram encontrados dispositivos compatíveis - - - - IrisWidget - - Edit - Editar - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Concluído - - - Add Iris - - - - The name already exists - O nome já existe - - - Iris - Íris - - - - KeyLabel - - None - Nenhum - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 deepin Community - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - Dispositivo de Entrada - - - Automatic Noise Suppression - Cancelamento Automático de Ruído - - - Input Volume - Volume de Entrada - - - Input Level - Nível de Entrada - - - - PersonalizationDesktopModule - - Desktop - Área de trabalho - - - Window - Janela - - - Window Effect - Efeito janela - - - Window Minimize Effect - Efeito de minimizar janela - - - Transparency - Transparência - - - Rounded Corner - Canto curvo - - - Scale - Escala - - - Magic Lamp - Lâmpada Mágica - - - Small - Pequeno - - - Middle - - - - Large - Grande - - - - PersonalizationModule - - Personalization - Personalização - - - - PersonalizationThemeList - - Cancel - Cancelar - - - Save - Salvar - - - Light - Claro - - - Dark - Escuro - - - Auto - Automático - - - Default - Padrão - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - Aparência - - - Accent Color - Cor em destaque - - - Icon Settings - Configurações de Ícone - - - Icon Theme - Tema de ícone - - - Cursor Theme - Tema de cursor - - - Text Settings - Configurações de Texto - - - Font Size - Tamanho da Fonte - - - Standard Font - Fonte padrão - - - Monospaced Font - Fonte monoespaçada - - - Light - Claro - - - Auto - Automático - - - Dark - Escuro - - - - PersonalizationThemeWidget - - Light - Claro - General - /personalization/General - - - Dark - Escuro - General - /personalization/General - - - Auto - Automático - General - /personalization/General - - - Default - Padrão - - - - PersonalizationWorker - - Custom - Personalizar - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - O PIN para conectar-se ao dispositivo é: - - - Cancel - Cancelar - - - Confirm - Confirmar - - - - PowerModule - - Power - Energia - - - Battery low, please plug in - A bateria está com pouca carga; conecte o carregador - - - Battery critically low - Bateria criticamente fraca - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Câmera - - - Microphone - Microfone - - - User Folders - Pastas do Usuário - - - Calendar - Calendário - - - Screen Capture - Captura de Tela - - - - QObject - - Control Center - Central de Controle - - - , - , - - - Error occurred when reading the configuration files of password rules! - Ocorreu um erro durante a leitura dos arquivos de configuração ou regras de senha! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Ativado - - - View - Visualizar - - - To be activated - Para ser ativado - - - Activate - Ativar - - - Expired - Expirado - - - In trial period - Em período de avaliação - - - Trial expired - A avaliação expirou - - - Touch Screen Settings - Configurações do Touch Screen - - - The settings of touch screen changed - As configurações do touch screen foram alteradas - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Cancelar - - - - RegionModule - - Region and format - Região e Formato - - - Country or Region - Região - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - Idioma e região - - - First day of week - Primeiro dia da semana - - - Short date - Data curta - - - Long date - Data longa - - - Short time - Hora curta - - - Long time - Hora longa - - - Currency symbol - Símbolo monetário - - - Numbers - Números - - - Paper - Tamanho de papel - - - custom format - Formato personalizado - - - - ResultItem - - Your system is not authorized, please activate first - O sistema não está autorizado, ative-o - - - Update successful - Atualizado com sucesso - - - Failed to update - Falha ao atualizar - - - - SearchInput - - Search - Pesquisar - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Efeitos Sonoros - - - - SoundModel - - Boot up - Inicialização - - - Shut down - Desligar - - - Log out - Sair - - - Wake up - Acordar - - - Volume +/- - Volume +/- - - - Notification - Notificações - - - Low battery - Bateria fraca - - - Send icon in Launcher to Desktop - Enviar ícone do Lançador para a Área de Trabalho - - - Empty Trash - Esvaziar Lixeira - - - Plug in - Plugar - - - Plug out - Desplugar - - - Removable device connected - Dispositivo removível conectado - - - Removable device removed - Dispositivo removível desconectado - - - Error - Erro - - - - SoundModule - - Sound - Som - - - - SoundPlugin - - Output - Saída - - - Auto pause - Pausar automaticamente - - - Whether the audio will be automatically paused when the current audio device is unplugged - Quando o dispositivo de áudio atual for desconectado, o áudio será automaticamente pausado - - - Input - Entrada - - - Sound Effects - Efeitos Sonoros - - - Devices - Dispositivos - - - Input Devices - Dispositivos de Entrada - - - Output Devices - Dispositivos de Saída - - - - SpeakerPage - - Output Device - Dispositivo de Saída - - - Mode - Modo - - - Output Volume - Volume de Saída - - - Volume Boost - Amplificar volume - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Se o volume for superior a 100%, haverá distorção do áudio e o alto-falante poderá ser danificado - - - Left/Right Balance - Balanço Esquerda/Direita - - - Left - Esquerda - - - Right - Direita - - - - TimeSettingModule - - Time Settings - Configurações de Data e Hora - - - Time - Horário - - - Auto Sync - Sincronizar com Servidor NTP - - - Reset - Redefinir - - - Save - Salvar - - - Server - Servidor - - - Address - Endereço - - - Required - Obrigatório - - - Customize - Personalizar - - - Year - Ano - - - Month - Mês - - - Day - Dia - - - - TimeZoneChooser - - Cancel - Cancelar - - - Confirm - Confirmar - - - Add Timezone - Adicionar fuso horário - - - Add - Adicionar - - - Change Timezone - Alterar Fuso Horário - - - - TimeoutDialog - - Save the display settings? - Salvar as configurações de exibição? - - - Settings will be reverted in %1s. - - - - Revert - Reverter - - - Save - Salvar - - - - TimezoneItem - - Tomorrow - Amanhã - - - Yesterday - Ontem - - - Today - Hoje - - - %1 hours earlier than local - %1 horas mais cedo que a local - - - %1 hours later than local - %1 horas mais tarde que a local - - - - TimezoneModule - - Timezone List - Lista de Fusos Horários - - - System Timezone - Fuso Horário do Sistema - - - Add Timezone - Adicionar fuso horário - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - A conta de usuário não está conectada à Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Para alterar senhas, você primeiro precisa autenticar seu Union ID. Clique em "Ir para o endereço" para finalizar as alterações. - - - Cancel - Cancelar - - - Go to Link - Ir para o endereço - - - - UnknownUpdateItem - - Release date: - Data de lançamento: - - - - UpdateCtrlWidget - - Check Again - Verificar novamente - - - Update failed: insufficient disk space - A atualização falhou: espaço insuficiente em disco - - - Dependency error, failed to detect the updates - Erro de Dependência! Falha ao Detectar Atualizações - - - Restart the computer to use the system and the applications properly - Reinicie o computador para utilizar o sistema normalmente - - - Network disconnected, please retry after connected - Rede desconectada; tente novamente, após conectar-se - - - Your system is not authorized, please activate first - O sistema não está autorizado, ative-o - - - This update may take a long time, please do not shut down or reboot during the process - Esta atualização pode demorar, não desligue ou reinicie durante o processo - - - Updates Available - Há atualizações disponíveis - - - Current Edition - Versão atual - - - Updating... - Atualizando... - - - Update All - Atualizar tudo - - - Last checking time: - Data da última verificação: - - - Your system is up to date - O sistema está atualizado - - - Check for Updates - Verificar se há atualizações - - - Checking for updates, please wait... - Verificando se há atualizações, aguarde... - - - The newest system installed, restart to take effect - O sistema mais recente está instalado. Reinicie para efetivar. - - - %1% downloaded (Click to pause) - %1% baixado (clique para pausar) - - - %1% downloaded (Click to continue) - %1% baixado (clique para continuar) - - - Your battery is lower than 50%, please plug in to continue - A carga da bateria está abaixo de 50%; conecte o carregador - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Certifique-se de que há energia suficiente para reiniciar; não desligue ou desconecte o carregador - - - Size - Tamanho - - - - UpdateModule - - Updates - Atualizações - - - - UpdatePlugin - - Check for Updates - Verificar se há atualizações - - - - UpdateSettingItem - - Insufficient disk space - Espaço insuficiente em disco - - - Update failed: insufficient disk space - A atualização falhou: espaço insuficiente em disco - - - Update failed - A atualização falhou - - - Network error - Erro de rede - - - Network error, please check and try again - Houve um erro na rede. Por favor, verifique e tente novamente - - - Packages error - Erro nos pacotes - - - Packages error, please try again - Erro nos pacotes, por favor, tente novamente - - - Dependency error - Erro de dependência - - - Unmet dependencies - - - - The newest system installed, restart to take effect - O sistema mais recente está instalado. Reinicie para efetivar. - - - Waiting - Aguardando - - - Backing up - Respaldando - - - System backup failed - O respaldo de sistema falhou - - - Release date: - Data de lançamento: - - - Server - Servidor - - - Desktop - Área de trabalho - - - Version - Versão - - - - UpdateSettingsModule - - Update Settings - Configurações de Atualização - - - System - Sistema - - - Security Updates Only - Apenas atualizações de segurança - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - Repositórios de terceiros - - - linglong update - atualizar linglong - - - Linglong Package Update - Pacotes Linglong - - - If there is update for linglong package, system will update it for you - Se houver alguma atualização para os pacotes Linglong, o sistema atualizará para você - - - Other settings - Outras configurações - - - Auto Check for Updates - Verificar por Atualizações Automaticamente - - - Auto Download Updates - Baixar atualizações automaticamente - - - Switch it on to automatically download the updates in wireless or wired network - As atualizações serão baixadas automaticamente; mas, serão instaladas apenas com a intervenção do usuário - - - Auto Install Updates - Instalar atualizações automaticamente - - - Updates Notification - Notificar se há atualizações disponíveis - - - Clear Package Cache - Limpar cache de pacotes - - - Updates from Internal Testing Sources - Atualizações do Repositório de Testes Interno - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Atualizações do Sistema - - - Security Updates - Atualizações de Segurança - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Versão atual - - - - UpdateWorker - - System Updates - Atualizações do Sistema - - - Fixed some known bugs and security vulnerabilities - Corrigidos alguns bugs conhecidos e vulnerabilidades de segurança - - - Security Updates - Atualizações de Segurança - - - Third-party Repositories - Repositórios de terceiros - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Na Bateria - - - Never - Nunca - - - Shut down - Desligar - - - Suspend - Suspender - - - Hibernate - Hibernar - - - Turn off the monitor - Desligar o monitor - - - Do nothing - Não fazer nada - - - 1 Minute - 1 minuto - - - %1 Minutes - %1 minutos - - - 1 Hour - 1 hora - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Bloquear a tela após - - - Computer suspends after - - - - Computer will suspend after - Suspender o computador após - - - When the lid is closed - Quando a tampa é fechada - - - When the power button is pressed - - - - Low Battery - Bateria Fraca - - - Low battery notification - Notificação de bateria fraca - - - Low battery level - Nível de bateria baixo - - - Auto suspend battery level - Nível de bateria para suspensão automática - - - Battery Management - Gerenciamento de Energia - - - Display remaining using and charging time - Exibir o tempo restante de uso e carregamento - - - Maximum capacity - Capacidade máxima - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Na Tomada - - - 1 Minute - 1 minuto - - - %1 Minutes - %1 minutos - - - 1 Hour - 1 hora - - - Never - Nunca - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Bloquear a tela após - - - Computer suspends after - - - - When the lid is closed - Quando a tampa é fechada - - - When the power button is pressed - - - - Shut down - Desligar - - - Suspend - Suspender - - - Hibernate - Hibernar - - - Turn off the monitor - Desligar o monitor - - - Show the shutdown Interface - - - - Do nothing - Não fazer nada - - - - WacomModule - - Drawing Tablet - Mesa Digitalizadora - - - Mode - Modo - - - Pressure Sensitivity - Sensibilidade à Pressão - - - Pen - Caneta - - - Mouse - Mouse - - - Light - Claro - - - Heavy - Pesado - - - - main - - Control Center provides the options for system settings. - A Central de Controle fornece todas as opções para as configurações do sistema. - - - - updateControlPanel - - Downloading - Baixando - - - Waiting - Aguardando - - - Installing - Instalando - - - Backing up - Respaldando - - - Download and install - Baixar e instalar - - - Learn more - Aprender mais - - - diff --git a/dcc-old/translations/dde-control-center_ro.ts b/dcc-old/translations/dde-control-center_ro.ts deleted file mode 100644 index 73cc123e39..0000000000 --- a/dcc-old/translations/dde-control-center_ro.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Permiteți altor dispozitive Bluetooth să găsească acest dispozitiv - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Activați bluetooth pentru a descoperi dispozitive din apropiere (boxă, tastatură, mouse) - - - My Devices - Dispozitivele mele - - - Other Devices - Alte dispozitive - - - Show Bluetooth devices without names - Afișați dispozitivele Bluetooth fără nume - - - Connect - Conectare - - - Disconnect - Deconectare - - - Rename - Redenumire - - - Send Files - Trimiteți fișiere - - - Ignore this device - Ignoră dispozitiv - - - Connecting - Conectare - - - Disconnecting - Deconectare - - - - AddButtonWidget - - Add Application - Adaugă aplicație - - - Open Desktop file - Deschide un fișier de pe Desktop - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Anulează - - - Next - Următorul - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Gata - - - Failed to enroll your face - - - - Try Again - - - - Close - Închidere - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Anulează - - - Next - Următorul - - - Iris enrolled - - - - Done - Gata - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - Nu mai mult de 15 caractere - - - Use letters, numbers and underscores only, and no more than 15 characters - Folosește doar litere, numere și subliniere, și nu mai mult de 15 caractere - - - Use letters, numbers and underscores only - Folosește doar litere, numere și subliniere - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Amprentă - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Conectat - - - Not connected - Neconectat - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Amprenta1 - - - Fingerprint2 - Amprenta2 - - - Fingerprint3 - Amprenta3 - - - Fingerprint4 - Amprenta4 - - - Fingerprint5 - Amprenta - - - Fingerprint6 - Amprenta6 - - - Fingerprint7 - Amprenta7 - - - Fingerprint8 - Amprenta8 - - - Fingerprint9 - Amprenta9 - - - Fingerprint10 - Amprenta10 - - - Scan failed - Scanare eșuată - - - The fingerprint already exists - Amprenta există deja - - - Please scan other fingers - Vă rugăm scanați alte degete - - - Unknown error - Eroare necunoscută - - - Scan suspended - Scanare suspendată - - - Cannot recognize - Nu se poate recunoaște - - - Moved too fast - Ați mișcat prea repede - - - Finger moved too fast, please do not lift until prompted - Degetul s-a mișcat prea repede, nu ridicați degetul până nu vi se solicită - - - Unclear fingerprint - Amprentă neclară - - - Clean your finger or adjust the finger position, and try again - Curățați degetul sau reglați poziția degetului și încercați din nou - - - Already scanned - Scanat deja - - - Adjust the finger position to scan your fingerprint fully - Reglați poziția degetului pentru a vă scana complet amprenta - - - Finger moved too fast. Please do not lift until prompted - Degetul se mișcă prea repede. Vă rugăm să nu ridicați până când vi se solicită - - - Lift your finger and place it on the sensor again - Ridicați degetul și plasați-l din nou pe senzor - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Anulează - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Anulează - - - Confirm - button - Confirmare - - - - dccV23::AccountSpinBox - - Always - Mereu - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Nume utilizator - - - Change Password - Schimbă Parola - - - Delete User - - - - User Type - - - - Auto Login - Autentificare automată - - - Login Without Password - Autentificare fară Parolă - - - Validity Days - Zile de valabilitate - - - Group - Grup - - - The full name is too long - Numele complet este prea lung - - - Standard User - Utilizator standard - - - Administrator - Administrator - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Nume Complet - - - Go to Settings - Mergi la setări - - - Cancel - Anulează - - - OK - Ok - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Gazda dvs. a fost eliminată de pe serverul de domeniu cu succes - - - Your host joins the domain server successfully - Gazda dvs. se alătură cu succes serverului de domeniu - - - Your host failed to leave the domain server - Gazda dvs. a eşuat sa fie eliminată de pe serverul de domeniu - - - Your host failed to join the domain server - Gazda dvs. a eşuat alăturarea cu serverul de domeniu - - - AD domain settings - Adăugare setări domeniu - - - Password not match - Necorespondenta parolă - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Afișați notificările de la %1 pe desktop și în centrul de notificări. - - - Play a sound - Redă un sunet - - - Show messages on lockscreen - Afișați mesajele pe ecranul de blocare - - - Show in notification center - Afișați în centrul de notificare - - - Show message preview - Afișați previzualizarea mesajului - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Anulează - - - Save - Salvare - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Imagini - - - - dccV23::BootWidget - - Updating... - Actualizare... - - - Startup Delay - Amânare Pornire - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Faceți clic pe opțiunea din meniul de pornire pentru a o seta drept primul boot și trageți și fixați o fotografie pentru a schimba fundalul - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Activați tema pentru a o vizualiza în meniul de pornire - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Schimbă Parola - - - Boot Menu - Meniu pornire - - - Change GRUB password - - - - Username: - Nume de utilizator: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Necesar - - - Cancel - button - Anulează - - - Confirm - button - Confirmare - - - Password cannot be empty - Parolă goală interzis - - - Passwords do not match - Noua parolă nu corespunde - - - - dccV23::BrightnessWidget - - Brightness - Luminozitate - - - Color Temperature - Temperatură Culoare - - - Auto Brightness - Luminozitate automată - - - Night Shift - Mod de noapte - - - The screen hue will be auto adjusted according to your location - Nuanța ecranului vai fi ajustată automat în conformitate cu locația ta - - - Change Color Temperature - Schimbă Temperatura de Culoare - - - Cool - Rece - - - Warm - Cald - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Dispozitivele mele - - - Other Devices - Alte dispozitive - - - - dccV23::CommonInfoPlugin - - General Settings - Setări Generale - - - Boot Menu - Meniu pornire - - - Developer Mode - Mod Dezvoltator - - - User Experience Program - Program de experiență utilizator - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Acceptă și alătură-te programului de experiență utilizator - - - The Disclaimer of Developer Mode - Declinare responsabilitate Mod Dezvoltator - - - Agree and Request Root Access - Agreează și Cere Acces Root - - - Failed to get root access - Accesul la root nu a reușit - - - Please sign in to your Union ID first - Vă rugăm să vă conectați mai întâi cu ID Union - - - Cannot read your PC information - Nu se pot citi informațiile computerului - - - No network connection - Nu există conexiune la rețea - - - Certificate loading failed, unable to get root access - Încărcarea certificatului a eșuat, imposibil de obținut accesul la root - - - Signature verification failed, unable to get root access - Verificarea semnăturii a eșuat, imposibil de obținut accesul la root - - - - dccV23::CreateAccountPage - - Group - Grup - - - Cancel - Anulează - - - Create - Creați - - - New User - - - - User Type - - - - Username - Nume utilizator - - - Full Name - Nume Complet - - - Password - Parola - - - Repeat Password - Repetați parola - - - Password Hint - - - - The full name is too long - Numele complet este prea lung - - - Passwords do not match - Noua parolă nu corespunde - - - Standard User - Utilizator standard - - - Administrator - Administrator - - - Customized - Personalizat - - - Required - Necesar - - - optional - Opțional - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - KitPolitici autentificare eșuată - - - Username must be between 3 and 32 characters - Numele de utilizator trebuie să aibă între 3 şi 32 caractere - - - The first character must be a letter or number - Primul caracter trebuie să fie o literă sau un număr - - - Your username should not only have numbers - Numele de utilizator nu ar trebui să aibă doar numere - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Imagini - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Adaugă o scurtătură personalizată - - - Name - Nume - - - Required - Necesar - - - Command - Comandă - - - Cancel - Anulează - - - Add - Adaugă - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Această scurtătură este în conflict cu %1, apăsați pe Adaugă pentru a face această scurtătură valabilă imediat - - - - dccV23::CustomEdit - - Required - Necesar - - - Cancel - Anulează - - - Save - Salvare - - - Shortcut - Scurtătură - - - Name - Nume - - - Command - Comandă - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Această scurtătură este în conflict cu %1, apăsați pe Adaugă pentru a face această scurtătură valabilă imediat - - - - dccV23::CustomItem - - Shortcut - Scurtătură - - - Please enter a shortcut - Vă rugăm, introduceți o scurtătură - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Cere Acces Root - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Vă rugăm să vă conectați mai întâi cu ID Union și continuați - - - Next - Următorul - - - Export PC Info - Exportare Info PC - - - Import Certificate - Importă Certificate - - - 1. Export your PC information - 1. Exportați informațiile computerului dvs - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Mergeți la https://www.chinauos.com/developMode to download an offline certificate - - - 3. Import the certificate - 3. Importați certificatul - - - - dccV23::DeveloperModeWidget - - Request Root Access - Cere Acces Root - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Modul dezvoltator vă permite să obțineți privilegii de root, să instalați și să rulați aplicații nesemnate care nu sunt listate în magazinul de aplicații, însă integritatea sistemului dvs. poate fi, de asemenea, deteriorată, vă rugăm să o folosiți cu atenție. - - - The feature is not available at present, please activate your system first - Funcția nu este disponibilă în prezent, vă rugăm să activați mai întâi sistemul - - - Failed to get root access - Accesul la root nu a reușit - - - Please sign in to your Union ID first - Vă rugăm să vă conectați mai întâi cu ID Union - - - Cannot read your PC information - Nu se pot citi informațiile computerului - - - No network connection - Nu există conexiune la rețea - - - Certificate loading failed, unable to get root access - Încărcarea certificatului a eșuat, imposibil de obținut accesul la root - - - Signature verification failed, unable to get root access - Verificarea semnăturii a eșuat, imposibil de obținut accesul la root - - - To make some features effective, a restart is required. Restart now? - Pentru ca unele caracteristici să fie eficiente, este necesară o repornire. Reporniți acum? - - - Cancel - Anulează - - - Restart Now - Restartați acum - - - Root Access Allowed - Acces Root Permis - - - - dccV23::DisplayPlugin - - Display - Afişaj - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Test de dublu click - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Repetare amânare - - - Short - Scurt - - - Long - Lung - - - Repeat Rate - Rată de repetare - - - Slow - Încet - - - Fast - Repede - - - Test here - Testează aici - - - Numeric Keypad - Tastatură numerică - - - Caps Lock Prompt - Solicitare Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Mâna stângă - - - Disable touchpad while typing - Dezactivează touchpad-ul în timp ce tastați - - - Scrolling Speed - Viteză Derulare - - - Double-click Speed - Viteză dublu click - - - Slow - Încet - - - Fast - Repede - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Aspect tastatură - - - Edit - Editare - - - Add Keyboard Layout - Adăugare aspect tastatură - - - Done - Gata - - - - dccV23::KeyboardLayoutDialog - - Cancel - Anulează - - - Add - Adaugă - - - Add Keyboard Layout - Adăugare aspect tastatură - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tastatură şi limbă - - - Keyboard - Tastatură - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Aspect tastatură - - - Language - Limba - - - Shortcuts - Scurtături - - - - dccV23::MainWindow - - Help - Ajutor - - - - dccV23::ModifyPasswdPage - - Change Password - Schimbă Parola - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Parola actuală - - - Forgot password? - - - - New Password - Parolă nouă - - - Repeat Password - Repetați parola - - - Password Hint - - - - Cancel - Anulează - - - Save - Salvare - - - Passwords do not match - Noua parolă nu corespunde - - - Required - Necesar - - - Optional - Opțional - - - Password cannot be empty - Parolă goală interzis - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Parolă greșită - - - New password should differ from the current one - Parola nouă trebuie să fie diferită de cea actuală - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Maus - - - General - General - - - Touchpad - Panou tactil - - - TrackPoint - Instrument Indicator - - - - dccV23::MouseSettingWidget - - Pointer Speed - Viteză indicator - - - Mouse Acceleration - Accelerația mausului - - - Disable touchpad when a mouse is connected - Dezactivează touchpad-ul la conectarea mouse-ului - - - Natural Scrolling - Derulare fizică - - - Slow - Încet - - - Fast - Repede - - - - dccV23::MultiScreenWidget - - Multiple Displays - Afișaje multiple - /display/Multiple Displays - - - Mode - Mod - /display/Mode - - - Main Screen - Ecran Principal - /display/Main Scree - - - Duplicate - Duplicare - - - Extend - Extindere - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Notificare - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Detectarea palmei - - - Minimum Contact Surface - Suprafață contact minimă - - - Minimum Pressure Value - Valoare minimă presiune - - - Disable the option if touchpad doesn't work after enabled - Dezactivați opțiunea dacă touchpad-ul nu funcționează după activare - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Politica de Confidențialitate - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - Parolă goală interzis - - - Password must have at least %1 characters - Parola trebuie să aibă cel puțin %1 caractere - - - Password must be no more than %1 characters - Parola nu trebuie să conțină mai mult de %1 caractere - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - Parola nu trebuie să conțină mai mult de 4 caractere palindrome - - - Do not use common words and combinations as password - Nu utilizați cuvinte și combinații obișnuite ca parolă - - - Create a strong password please - - - - It does not meet password rules - Nu respectă regulile de parolă - - - - dccV23::RefreshRateWidget - - Refresh Rate - Rată Improspătare - - - Hz - Hz - - - Recommended - Recomandat - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Sigur doriți să ștergeți acest cont? - - - Delete account directory - Ștergeți directorul contului - - - Cancel - Anulează - - - Delete - Șterge - - - - dccV23::ResolutionWidget - - Resolution - Rezoluție - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Implicit - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Recomandat - - - - dccV23::RotateWidget - - Rotation - Rotire - /display/Rotation - - - Standard - Standard - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Monitorul suportă doar 100% scalarea afișajului - - - Display Scaling - Scalare afișare - - - - dccV23::SearchInput - - Search - Căutare - - - - dccV23::SecondaryScreenDialog - - Brightness - Luminozitate - - - - dccV23::SecurityLevelItem - - Weak - Slab - - - Medium - Mediu - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Anulează - - - Confirm - Confirmare - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Editare - - - Done - Gata - - - - dccV23::ShortCutSettingWidget - - System - Sistem - - - Window - Fereastră - - - Workspace - Spațiu de lucru - - - Assistive Tools - Instrumente de asistență - - - Custom Shortcut - Scurtătură personalizată - - - Restore Defaults - Restaurare setări implicite - - - Shortcut - Scurtătură - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Vă rugăm să resetați scurtătura - - - Cancel - Anulează - - - Replace - Înlocuire - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Această scurtătură este în conflict cu %1, apăsați pe Înlocuiește pentru a face această scurtătură valabilă imediat - - - - dccV23::ShortcutItem - - Enter a new shortcut - Introduceți scurtătură nouă - - - - dccV23::SystemInfoModel - - available - disponibil - - - - dccV23::SystemInfoModule - - About This PC - Despre Computer - - - Computer Name - Nume Calculator - - - systemInfo - - - - OS Name - - - - Version - Versiune - - - Edition - - - - Type - Tip - - - Authorization - Autorizare - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Ediție Licenţă - - - End User License Agreement - Acord Licenţă Utilizator Final - - - Privacy Policy - Politica de Confidențialitate - - - %1-bit - %1-biti - - - - dccV23::SystemInfoPlugin - - System Info - Info Sistem - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Anulează - - - Add - Adaugă - - - Add System Language - Adăugare limba sistem - - - - dccV23::SystemLanguageWidget - - Edit - Editare - - - Language List - Lista limbaj - - - Add Language - - - - Done - Gata - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Nu Deranja - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Notificările aplicației nu vor fi afișate pe desktop și sunetele vor fi reduse la tăcere, dar puteți vizualiza toate mesajele din centrul de notificări. - - - When the screen is locked - Când ecranul este blocat - - - - dccV23::TimeSlotItem - - From - De la - - - To - Către - - - - dccV23::TouchScreenModule - - Touch Screen - Ecran Tactil - - - Select your touch screen when connected or set it here. - Selectați ecranul tactil atunci când sunteți conectat sau setați-l aici. - - - Confirm - Confirmare - - - Cancel - Anulează - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Viteză indicator - - - Slow - Încet - - - Fast - Repede - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Alătură-te programului de experiență utilizator - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - An - - - Month - Lună - - - Day - Zi - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Autentificare necesară pentru scimbare server NTP - - - - DefAppModule - - Default Applications - Aplicații implicite - - - - DefAppPlugin - - Webpage - Pagină Web - - - Mail - Poștă - - - Text - Text - - - Music - Muzică - - - Video - Video - - - Picture - Imagine - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Anulează - - - Next - Următorul - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - Afișaje multiple - - - Show Dock - - - - Mode - Mod - - - Position - Poziție - - - Status - Stare - - - Show recent apps in Dock - - - - Size - Dimensiune - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Mod fashion - - - Efficient mode - Mod eficient - - - Top - Sus - - - Bottom - Jos - - - Left - Stânga - - - Right - Dreapta - - - Location - Locație - - - Keep shown - - - - Keep hidden - Păstraţi ascuns - - - Smart hide - Ascundere inteligentă - - - Small - Mic - - - Large - Mare - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Editare - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Gata - - - Add Face - - - - The name already exists - Numele există deja - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Adăugați o amprentă - - - Cancel - Anulează - - - Next - Următorul - - - - FingerInfoWidget - - Place your finger - Așezați degetul - - - Place your finger firmly on the sensor until you're asked to lift it - Așezați ferm degetul pe senzor până când vi se cere să îl ridicați - - - Scan the edges of your fingerprint - Scanați marginile amprentei - - - Place the edges of your fingerprint on the sensor - Așezați marginile amprentei pe senzor - - - Lift your finger - Ridicați degetul - - - Lift your finger and place it on the sensor again - Ridicați degetul și plasați-l din nou pe senzor - - - Adjust the position to scan the edges of your fingerprint - Reglați poziția pentru a scana marginile amprentei - - - Lift your finger and do that again - Ridică degetul și fă-o din nou - - - Fingerprint added - Amprentă adăugată - - - - FingerWidget - - Edit - Editare - - - Fingerprint Password - Parolă cu amprentă - - - You can add up to 10 fingerprints - Puteți adăuga până la 10 amprente - - - Done - Gata - - - The name already exists - Numele există deja - - - Add Fingerprint - Adăugați o amprentă - - - - GeneralModule - - General - General - - - Balanced - Echilibrat - - - Balance Performance - - - - High Performance - Performanță ridicată - - - Power Saver - Economisire energie - - - Power Plans - Planuri de Alimentare - - - Power Saving Settings - Setări de economisire a energiei - - - Auto power saving on low battery - Economisire automată de energie la baterie descărcată - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Economisire automată a energiei pe baterie - - - Wakeup Settings - Setări de trezire - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Editare - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Gata - - - Add Iris - - - - The name already exists - Numele există deja - - - Iris - - - - - KeyLabel - - None - Nici un - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - Dispozitiv de intrare - - - Automatic Noise Suppression - Suprimarea automată a zgomotului - - - Input Volume - Volum intrare - - - Input Level - Nivel introducere - - - - PersonalizationDesktopModule - - Desktop - Spațiu de lucru - - - Window - Fereastră - - - Window Effect - Efect Fereastră - - - Window Minimize Effect - Efect Minimizare fereastră - - - Transparency - Transparență - - - Rounded Corner - Colțuri rotunjite - - - Scale - Scalare - - - Magic Lamp - Lampa magica - - - Small - Mic - - - Middle - - - - Large - Mare - - - - PersonalizationModule - - Personalization - Personalizare - - - - PersonalizationThemeList - - Cancel - Anulează - - - Save - Salvare - - - Light - Ușoară - - - Dark - Întunecat - - - Auto - Auto - - - Default - Implicit - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - Culoare accent - - - Icon Settings - - - - Icon Theme - Temă Icoane - - - Cursor Theme - Temă Cursor - - - Text Settings - - - - Font Size - Mărime font - - - Standard Font - Font Standard - - - Monospaced Font - Font Monospațiat - - - Light - Ușoară - - - Auto - Auto - - - Dark - Întunecat - - - - PersonalizationThemeWidget - - Light - Ușoară - General - /personalization/General - - - Dark - Întunecat - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Implicit - - - - PersonalizationWorker - - Custom - Personalizare - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN-ul pentru conectarea la dispozitivul bluetooth este: - - - Cancel - Anulează - - - Confirm - Confirmare - - - - PowerModule - - Power - Energie - - - Battery low, please plug in - Baterie scăzută, vă rugăm conectați - - - Battery critically low - Baterie critic scăzută - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Camera Web - - - Microphone - Microfon - - - User Folders - - - - Calendar - Calendar - - - Screen Capture - - - - - QObject - - Control Center - Centru Control - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Activat - - - View - Aspect - - - To be activated - Pentru a fi activat - - - Activate - Activați - - - Expired - Expirat - - - In trial period - In perioadă de probă - - - Trial expired - Perioadă de probă expirată - - - Touch Screen Settings - Setări Ecran Tactil - - - The settings of touch screen changed - Setările ecranului tactil au fost schimbate - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Anulează - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Sistemul dvs. nu este autorizat, vă rugăm să activați mai întâi - - - Update successful - Actualizare reușită - - - Failed to update - Actualizare eşuată - - - - SearchInput - - Search - Căutare - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Efecte sonore - - - - SoundModel - - Boot up - Pornire - - - Shut down - Închidere - - - Log out - Ieșire - - - Wake up - Trezire - - - Volume +/- - Volum +/- - - - Notification - Notificare - - - Low battery - Baterie descărcată - - - Send icon in Launcher to Desktop - Trimite pictograma din Lansator pe desktop - - - Empty Trash - Golire Coşul de Gunoi - - - Plug in - Conecteaza - - - Plug out - Deconecteaza - - - Removable device connected - Dispozitiv detașabil conectat - - - Removable device removed - Dispozitiv detașabil deconectat - - - Error - Eroare - - - - SoundModule - - Sound - Sunet - - - - SoundPlugin - - Output - Ieșire - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Intrare - - - Sound Effects - Efecte sonore - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - Dispozitiv de ieșire - - - Mode - Mod - - - Output Volume - Volum ieşire - - - Volume Boost - Boost Volum - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Echilibrare Stânga/Dreapta - - - Left - Stânga - - - Right - Dreapta - - - - TimeSettingModule - - Time Settings - Configurări pentru timp - - - Time - - - - Auto Sync - Auto Sincronizare - - - Reset - Resetare - - - Save - Salvare - - - Server - Server - - - Address - Adresă - - - Required - Necesar - - - Customize - Personalizare - - - Year - An - - - Month - Lună - - - Day - Zi - - - - TimeZoneChooser - - Cancel - Anulează - - - Confirm - Confirmare - - - Add Timezone - Adaugă fus orar - - - Add - Adaugă - - - Change Timezone - Schimbă fusul orar - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Înversați - - - Save - Salvare - - - - TimezoneItem - - Tomorrow - Mâine - - - Yesterday - Ieri - - - Today - Azi - - - %1 hours earlier than local - %1 ore mai devreme decât ora locală - - - %1 hours later than local - %1 ore mai târziu decât ora locală - - - - TimezoneModule - - Timezone List - Lista fusurilor orare - - - System Timezone - Fus orar sistem - - - Add Timezone - Adaugă fus orar - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Anulează - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - Verifică din nou - - - Update failed: insufficient disk space - Actualizare eșuată: spațiu pe disc insuficient - - - Dependency error, failed to detect the updates - Eroare dependențe, eșuat detectare actualizări - - - Restart the computer to use the system and the applications properly - Reporniți computerul pentru a utiliza corect sistemul și aplicațiile - - - Network disconnected, please retry after connected - Rețeaua deconectată, reîncercați după conectare - - - Your system is not authorized, please activate first - Sistemul dvs. nu este autorizat, vă rugăm să activați mai întâi - - - This update may take a long time, please do not shut down or reboot during the process - Această actualizare poate dura mult timp, vă rugăm să nu opriți sau să reporniți în timpul procesului - - - Updates Available - - - - Current Edition - Ediție Curentă - - - Updating... - Actualizare... - - - Update All - - - - Last checking time: - Ultima oră de verificare: - - - Your system is up to date - Sistemul este actualizat - - - Check for Updates - Căutați actualizări - - - Checking for updates, please wait... - Verificare actualizări, vă rugăm să așteptați ... - - - The newest system installed, restart to take effect - Cel mai nou sistem instalat, reporniți pentru a intra în vigoare - - - %1% downloaded (Click to pause) - %1% descărcat (Click pentru pauză) - - - %1% downloaded (Click to continue) - %1% descărcat (Click pentru continuare) - - - Your battery is lower than 50%, please plug in to continue - Bateria dvs. este mai mică de 50%, vă rugăm să conectați pentru a continua - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Vă rugăm să asigurați o putere suficientă pentru a reporni, nu opriți sau deconectați mașina - - - Size - Dimensiune - - - - UpdateModule - - Updates - Actualizări - - - - UpdatePlugin - - Check for Updates - Căutați actualizări - - - - UpdateSettingItem - - Insufficient disk space - Spațiu disc insuficient - - - Update failed: insufficient disk space - Actualizare eșuată: spațiu pe disc insuficient - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Cel mai nou sistem instalat, reporniți pentru a intra în vigoare - - - Waiting - Aşteptare - - - Backing up - - - - System backup failed - Copia de rezervă a sistemului a eșuat - - - Release date: - - - - Server - Server - - - Desktop - Spațiu de lucru - - - Version - Versiune - - - - UpdateSettingsModule - - Update Settings - Setări Actualizare - - - System - Sistem - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - Descărcare Automată Actualizări - - - Switch it on to automatically download the updates in wireless or wired network - Porniți-l pentru a descărca automat actualizările în rețea cablu sau wireless - - - Auto Install Updates - - - - Updates Notification - Notificări Actualizări - - - Clear Package Cache - Goliți Cache Pachete - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Actualizări de Sistem - - - Security Updates - Actualizări de securitate - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Ediție Curentă - - - - UpdateWorker - - System Updates - Actualizări de Sistem - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - Actualizări de securitate - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Pe Baterie - - - Never - Niciodată - - - Shut down - Închidere - - - Suspend - Suspendare - - - Hibernate - Hibernare - - - Turn off the monitor - Oprește Monitorul - - - Do nothing - Nu face nimic - - - 1 Minute - 1 Minut - - - %1 Minutes - %1 Minute - - - 1 Hour - 1 Oră - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Blocare ecran după - - - Computer suspends after - - - - Computer will suspend after - Computerul va fi suspendat după - - - When the lid is closed - Când capacul este închis - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Nivel Baterie Scăzut - - - Auto suspend battery level - Suspendarea automată a nivelului bateriei - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - Capacitate maximă - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Conectat - - - 1 Minute - 1 Minut - - - %1 Minutes - %1 Minute - - - 1 Hour - 1 Oră - - - Never - Niciodată - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Blocare ecran după - - - Computer suspends after - - - - When the lid is closed - Când capacul este închis - - - When the power button is pressed - - - - Shut down - Închidere - - - Suspend - Suspendare - - - Hibernate - Hibernare - - - Turn off the monitor - Oprește Monitorul - - - Show the shutdown Interface - - - - Do nothing - Nu face nimic - - - - WacomModule - - Drawing Tablet - Tableta Desen - - - Mode - Mod - - - Pressure Sensitivity - Sensibilitate apăsare - - - Pen - Stilou - - - Mouse - Maus - - - Light - Ușoară - - - Heavy - Greu - - - - main - - Control Center provides the options for system settings. - Control Center oferă opțiunile pentru setările sistemului. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ru.ts b/dcc-old/translations/dde-control-center_ru.ts deleted file mode 100644 index 581d6b745a..0000000000 --- a/dcc-old/translations/dde-control-center_ru.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Разрешить другим устройствам Bluetooth обнаруживать это устройство - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Включите Bluetooth, чтобы найти ближайшие устройства (динамики, клавиатура, мышь) - - - My Devices - Мои устройства - - - Other Devices - Другие устройства - - - Show Bluetooth devices without names - Показывать устройства Bluetooth без имен - - - Connect - Подключить - - - Disconnect - Отключить - - - Rename - Переименовать - - - Send Files - Отправить файлы - - - Ignore this device - Игнорировать это устройство - - - Connecting - Соединение - - - Disconnecting - Отсоединение - - - - AddButtonWidget - - Add Application - Добавить приложение - - - Open Desktop file - Открыть файл рабочего стола - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Отмена - - - Next - Далее - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Готово - - - Failed to enroll your face - - - - Try Again - Попробовать снова - - - Close - Закрыть - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Отмена - - - Next - Далее - - - Iris enrolled - - - - Done - Готово - - - Failed to enroll your iris - - - - Try Again - Попробовать снова - - - - AuthenticationInfoItem - - No more than 15 characters - Не более 15 символов - - - Use letters, numbers and underscores only, and no more than 15 characters - Используйте только буквы, цифры и подчеркивание, не более 15 символов - - - Use letters, numbers and underscores only - Используйте только буквы, цифры и подчеркивания - - - - AuthenticationModule - - Biometric Authentication - Биометрическая аутентификация - - - - AuthenticationPlugin - - Fingerprint - Отпечаток пальца - - - Face - Лицо - - - Iris - Радужка - - - - BluetoothDeviceModel - - Connected - Подключено - - - Not connected - Не подключено - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Отпечаток1 - - - Fingerprint2 - Отпечаток2 - - - Fingerprint3 - Отпечаток3 - - - Fingerprint4 - Отпечаток4 - - - Fingerprint5 - Отпечаток5 - - - Fingerprint6 - Отпечаток6 - - - Fingerprint7 - Отпечаток7 - - - Fingerprint8 - Отпечаток8 - - - Fingerprint9 - Отпечаток9 - - - Fingerprint10 - Отпечаток10 - - - Scan failed - Сканирование не удалось - - - The fingerprint already exists - Отпечаток уже существует - - - Please scan other fingers - Пожалуйста, сканируйте другие пальцы - - - Unknown error - Неизвестная ошибка - - - Scan suspended - Сканирование приостановлено - - - Cannot recognize - Не возможно распознать - - - Moved too fast - Перемещен слишком быстро - - - Finger moved too fast, please do not lift until prompted - Палец был убран слишком быстро, пожалуйста, не убирайте его, пока устройство не разблокируется - - - Unclear fingerprint - Неясный отпечаток пальца - - - Clean your finger or adjust the finger position, and try again - Почистите палец или отрегулируйте положение пальца и попробуйте снова - - - Already scanned - Уже отсканирован - - - Adjust the finger position to scan your fingerprint fully - Отрегулируйте положение пальца для полного сканирования отпечатка пальца - - - Finger moved too fast. Please do not lift until prompted - Палец двигался слишком быстро. Пожалуйста, не поднимайте палец, пока он не будет отсканирован - - - Lift your finger and place it on the sensor again - Поднимите палец и снова поместите его на датчик - - - Position your face inside the frame - Расположите Ваше лицо внутри рамки - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - Отодвиньтесь от камеры - - - Get closer to the camera - Приблизьтесь к камере - - - Do not position multiple faces inside the frame - Не размещайте несколько лиц внутри рамки - - - Make sure the camera lens is clean - Убедитесь, что объектив камеры чистый - - - Do not enroll in dark, bright or backlit environments - Не регистрируйтесь в темных, ярких или плохо освещенных помещениях - - - Keep your face uncovered - Не закрывайте Ваше лицо - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Отмена - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Отмена - - - Confirm - button - Применить - - - - dccV23::AccountSpinBox - - Always - Всегда - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Имя пользователя - - - Change Password - Смена пароля - - - Delete User - - - - User Type - - - - Auto Login - Автоматическая авторизация - - - Login Without Password - Входить в систему без ввода пароля - - - Validity Days - Срок действия - - - Group - Группа - - - The full name is too long - Полное имя слишком длинное - - - Standard User - Обычный пользователь - - - Administrator - Администратор - - - Reset Password - Сброс пароля - - - The full name has been used by other user accounts - Это полное имя уже используется другими учетными записями - - - Full Name - Полное имя - - - Go to Settings - Перейти к настройкам - - - Cancel - Отмена - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - Автоматический вход в систему можно включить только для одной учетной записи, сначала отключите его у пользователя «%1» - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Ваш хост был успешно удален с сервера домена - - - Your host joins the domain server successfully - Ваш хост успешно подключается к серверу домена - - - Your host failed to leave the domain server - Ваш хост не смог покинуть сервер домена - - - Your host failed to join the domain server - Ваш хост не присоединился к серверу домена - - - AD domain settings - Настройки домена AD - - - Password not match - Пароль не совпадает - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Показывать уведомления от %1 на рабочем столе и в центре уведомлений. - - - Play a sound - Воспроизводить звук - - - Show messages on lockscreen - Показывать сообщения на заблокированном экране - - - Show in notification center - Показывать в центре уведомлений - - - Show message preview - Показать предварительный просмотр сообщения - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Отмена - - - Save - Сохранить - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Изображения - - - - dccV23::BootWidget - - Updating... - Обновление... - - - Startup Delay - Задержка запуска - - - Theme - Тема - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Выберите вариант в меню загрузки, чтобы задать его в качестве первоначально загружаемого, и перетащите сюда изображение, чтобы изменить фон - - - Click the option in boot menu to set it as the first boot - Выберите опцию в меню загрузки, чтобы установить загружаемым первым при запуске системы - - - Switch theme on to view it in boot menu - Включите тему, чтобы просмотреть ее в меню загрузки. - - - GRUB Authentication - Аутентификация GRUB - - - GRUB password is required to edit its configuration - Для редактирования настроек GRUB требуется его пароль - - - Change Password - Смена пароля - - - Boot Menu - Меню Загрузки - - - Change GRUB password - Смена пароля GRUB - - - Username: - Имя пользователя: - - - root - - - - New password: - Новый пароль: - - - Repeat password: - Повторите пароль: - - - Required - Требуется - - - Cancel - button - Отмена - - - Confirm - button - Применить - - - Password cannot be empty - Пароль не может быть пустым - - - Passwords do not match - Пароли не совпадают - - - - dccV23::BrightnessWidget - - Brightness - Яркость - - - Color Temperature - Цветовая Температура - - - Auto Brightness - Автоматическая яркость - - - Night Shift - Ночной режим - - - The screen hue will be auto adjusted according to your location - Оттенок экрана будет автоматически настраиваться в соответствии с Вашим местоположением - - - Change Color Temperature - Изменить Цветовую Температуру - - - Cool - Холодный - - - Warm - Теплый - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Мои устройства - - - Other Devices - Другие устройства - - - - dccV23::CommonInfoPlugin - - General Settings - Общие настройки - - - Boot Menu - Меню Загрузки - - - Developer Mode - Режим разработчика - - - User Experience Program - Программа взаимодействия с пользователем - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Дать согласие и присоединиться к Программе взаимодействия с пользователем - - - The Disclaimer of Developer Mode - Отказ от ответственности за режим разработчика - - - Agree and Request Root Access - Дать согласие и запросить root-доступ - - - Failed to get root access - Не удалось получить root-доступ - - - Please sign in to your Union ID first - Пожалуйста, сначала войдите в свой Union ID - - - Cannot read your PC information - Не удалось прочитать информацию о вашем ПК - - - No network connection - Нет подключения к сети - - - Certificate loading failed, unable to get root access - Ошибка загрузки сертификата, не удалось получить root-доступ - - - Signature verification failed, unable to get root access - Ошибка проверки подписи, не удалось получить root-доступ - - - - dccV23::CreateAccountPage - - Group - Группа - - - Cancel - Отмена - - - Create - Создать - - - New User - - - - User Type - - - - Username - Имя пользователя - - - Full Name - Полное имя - - - Password - Пароль - - - Repeat Password - Повторите пароль - - - Password Hint - Подсказка пароля - - - The full name is too long - Полное имя слишком длинное - - - Passwords do not match - Пароли не совпадают - - - Standard User - Обычный пользователь - - - Administrator - Администратор - - - Customized - Пользовательский - - - Required - Требуется - - - optional - необязательный - - - The hint is visible to all users. Do not include the password here. - Подсказка видна всем пользователям. Не указывайте здесь пароль. - - - Policykit authentication failed - Сбой проверки подлинности Policykit - - - Username must be between 3 and 32 characters - Имя пользователя должно быть длинной 3-32 символа - - - The first character must be a letter or number - Первый символ должен быть буквой или цифрой - - - Your username should not only have numbers - Имя пользователя не должно состоять только из цифр - - - The username has been used by other user accounts - Это имя уже используется другой учетной записью - - - The full name has been used by other user accounts - Это полное имя уже используется другими учетными записями - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Изображения - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Добавить сочетание - - - Name - Название - - - Required - Требуется - - - Command - Команда - - - Cancel - Отмена - - - Add - Добавить - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Это сочетание клавиш конфликтует с %1, нажмите на Добавить, чтобы выбрать именно такое сочетание клавиш - - - - dccV23::CustomEdit - - Required - Требуется - - - Cancel - Отмена - - - Save - Сохранить - - - Shortcut - Сочетание клавиш - - - Name - Название - - - Command - Команда - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Это сочетание клавиш конфликтует с %1, нажмите на Добавить, чтобы выбрать именно такое сочетание клавиш - - - - dccV23::CustomItem - - Shortcut - Сочетание клавиш - - - Please enter a shortcut - Пожалуйста, введите сочетание клавиш - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Запросить root-доступ - - - Online - В сети - - - Offline - Не в сети - - - Please sign in to your Union ID first and continue - Пожалуйста, войдите сначала в свой Union ID и продолжите - - - Next - Далее - - - Export PC Info - Экспорт информации о ПК - - - Import Certificate - Импорт сертификата - - - 1. Export your PC information - 1. Экспортируйте информацию о вашем ПК - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Перейдите на https://www.chinauos.com/developMode, чтобы загрузить оффлайн сертификат. - - - 3. Import the certificate - 3. Импортируйте сертификат - - - - dccV23::DeveloperModeWidget - - Request Root Access - Запросить root-доступ - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Режим разработчика позволяет вам получить права суперпользователя, устанавливать и запускать неподписанные приложения не перечисленные в магазине приложений, но целостность системы из-за этого может быть нарушена, пожалуйста, используйте его с осторожностью. - - - The feature is not available at present, please activate your system first - В настоящее время функция недоступна, пожалуйста, сначала активируйте вашу систему - - - Failed to get root access - Не удалось получить root-доступ - - - Please sign in to your Union ID first - Пожалуйста, сначала войдите в свой Union ID - - - Cannot read your PC information - Не удалось прочитать информацию о вашем ПК - - - No network connection - Нет подключения к сети - - - Certificate loading failed, unable to get root access - Ошибка загрузки сертификата, не удалось получить root-доступ - - - Signature verification failed, unable to get root access - Ошибка проверки подписи, не удалось получить root-доступ - - - To make some features effective, a restart is required. Restart now? - Чтобы его задействовать, требуется перезагрузка. Перезагрузить сейчас? - - - Cancel - Отмена - - - Restart Now - Перезагрузить сейчас - - - Root Access Allowed - Root-доступ разрешен - - - - dccV23::DisplayPlugin - - Display - Дисплей - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Дважды щелкните для тестирования - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Задержка повтора - - - Short - Короткая - - - Long - Длинная - - - Repeat Rate - Частота повтора - - - Slow - Медленно - - - Fast - Быстро - - - Test here - Проверьте здесь - - - Numeric Keypad - Цифровая клавиатура - - - Caps Lock Prompt - Индикатор Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Левая рука - - - Disable touchpad while typing - Отключать сенсорную панель во время набора текста - - - Scrolling Speed - Скорость прокрутки - - - Double-click Speed - Скорость двойного щелчка - - - Slow - Медленно - - - Fast - Быстро - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Раскладка клавиатуры - - - Edit - Редактировать - - - Add Keyboard Layout - Добавить раскладку клавиатуры - - - Done - Готово - - - - dccV23::KeyboardLayoutDialog - - Cancel - Отмена - - - Add - Добавить - - - Add Keyboard Layout - Добавить раскладку клавиатуры - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Язык и клавиатура - - - Keyboard - Клавиатура - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Раскладка клавиатуры - - - Language - Язык - - - Shortcuts - Сочетание клавиш - - - - dccV23::MainWindow - - Help - Помощь - - - - dccV23::ModifyPasswdPage - - Change Password - Смена пароля - - - Reset Password - Сброс пароля - - - Resetting the password will clear the data stored in the keyring. - Сброс пароля очистит данные, хранящиеся в связке ключей. - - - Current Password - Текущий пароль - - - Forgot password? - Забыли пароль? - - - New Password - Новый пароль - - - Repeat Password - Повторите пароль - - - Password Hint - Подсказка пароля - - - Cancel - Отмена - - - Save - Сохранить - - - Passwords do not match - Пароли не совпадают - - - Required - Требуется - - - Optional - Необязательный - - - Password cannot be empty - Пароль не может быть пустым - - - The hint is visible to all users. Do not include the password here. - Подсказка видна всем пользователям. Не указывайте здесь пароль. - - - Wrong password - Неверный пароль - - - New password should differ from the current one - Новый пароль должен отличаться от текущего - - - System error - Системная ошибка - - - Network error - Ошибка сети - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Собрать Окна - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Мышь - - - General - Основной - - - Touchpad - Сенсорная панель - - - TrackPoint - Манипулятор TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Скорость указателя - - - Mouse Acceleration - Ускорение мыши - - - Disable touchpad when a mouse is connected - Отключать тачпад при подключении мыши - - - Natural Scrolling - Естественная прокрутка - - - Slow - Медленно - - - Fast - Быстро - - - - dccV23::MultiScreenWidget - - Multiple Displays - Несколько Дисплеев - /display/Multiple Displays - - - Mode - Режим - /display/Mode - - - Main Screen - Главный Экран - /display/Main Scree - - - Duplicate - Дублировать - - - Extend - Расширить - - - Only on %1 - Только на %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Уведомление - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Обнаружение ладони - - - Minimum Contact Surface - Минимальная площадь контакта - - - Minimum Pressure Value - Минимальное значение давления - - - Disable the option if touchpad doesn't work after enabled - Отключите эту опцию, если тачпад не работает после включения - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Политика конфиденциальности - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Мы глубоко осознаем важность Вашей личной информации для вас. Таким образом, у нас есть Политика Конфиденциальности, в которой описано, как мы собираем, используем, передаем, публично раскрываем и храним вашу информацию.</p><p>Вы можете <a href="%1">нажать здесь, чтобы просмотреть нашу последнюю политику конфиденциальности и/или просмотреть ее онлайн, посетив <a href="%1"> %1</a>. Пожалуйста, внимательно прочитайте и полностью поймите нашу работу по конфиденциальности клиентов. Если у Вас возникли какие-либо вопросы, пожалуйста, свяжитесь с нами по адресу: support@uniontech.com. </p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Пароль не может быть пустым - - - Password must have at least %1 characters - Пароль должен содержать не менее %1 символов - - - Password must be no more than %1 characters - Пароль должен содержать не более %1 символов - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Пароль может содержать только английские буквы (с учетом регистра), цифры или специальные символы(~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Слишком много палиндромов: %1 - - - No more than %1 monotonic characters please - Слишком много символов по порядку: %1 - - - No more than %1 repeating characters please - Слишком много повторяющихся символов: %1 - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Пароль должен содержать прописные буквы, строчные буквы, цифры и символы (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Пароль не должен содержать более 4 символов палиндрома - - - Do not use common words and combinations as password - Не используйте общие слова и комбинации в качестве пароля - - - Create a strong password please - Пожалуйста, создайте надежный пароль - - - It does not meet password rules - Не соответствует правилам паролей - - - - dccV23::RefreshRateWidget - - Refresh Rate - Частота Обновления - - - Hz - Гц - - - Recommended - Рекомендуемый - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Вы уверены, что хотите удалить эту учетную запись? - - - Delete account directory - Удалить каталог учетной записи - - - Cancel - Отмена - - - Delete - Удалить - - - - dccV23::ResolutionWidget - - Resolution - Разрешение - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - По умолчанию - - - Fit - - - - Stretch - - - - Center - Центр - - - Recommended - Рекомендуемый - - - - dccV23::RotateWidget - - Rotation - Поворот - /display/Rotation - - - Standard - Стандартное - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Монитор поддерживает только 100% масштабирование дисплея - - - Display Scaling - Масштабирование Дисплея - - - - dccV23::SearchInput - - Search - Поиск - - - - dccV23::SecondaryScreenDialog - - Brightness - Яркость - - - - dccV23::SecurityLevelItem - - Weak - Слабый - - - Medium - Средний - - - Strong - Сильный - - - - dccV23::SecurityQuestionsPage - - Security Questions - Секретные вопросы - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - Контрольный вопрос 1 - - - Security question 2 - Контрольный вопрос 2 - - - Security question 3 - Контрольный вопрос 3 - - - Cancel - Отмена - - - Confirm - Применить - - - Keep the answer under 30 characters - В ответе не более 30 символов - - - Do not choose a duplicate question please - Вопросы должны различаться - - - Please select a question - Выберите вопрос - - - What's the name of the city where you were born? - Как называется город, где вы родились? - - - What's the name of the first school you attended? - Как называется первая школа, в которую вы ходили? - - - Who do you love the most in this world? - Кого ты любишь больше всего в этом мире? - - - What's your favorite animal? - Какое твое любимое животное? - - - What's your favorite song? - Какая твоя любимая песня? - - - What's your nickname? - Какое у тебя прозвище? - - - It cannot be empty - Не может быть пустым - - - - dccV23::SettingsHead - - Edit - Редактировать - - - Done - Готово - - - - dccV23::ShortCutSettingWidget - - System - Система - - - Window - Окно - - - Workspace - Рабочая область - - - Assistive Tools - Вспомогательные инструменты - - - Custom Shortcut - Пользовательское сочетание - - - Restore Defaults - Восстановить значения по умолчанию - - - Shortcut - Сочетание клавиш - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Пожалуйста, сбросьте сочетание - - - Cancel - Отмена - - - Replace - Заменить - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Это сочетание клавиш конфликтует с %1, нажмите на Заменить, чтобы выбрать именно такое сочетание клавиш - - - - dccV23::ShortcutItem - - Enter a new shortcut - Введите новое сочетание клавиш - - - - dccV23::SystemInfoModel - - available - доступно - - - - dccV23::SystemInfoModule - - About This PC - Об этом компьютере - - - Computer Name - Имя компьютера - - - systemInfo - - - - OS Name - Название ОС - - - Version - Версия - - - Edition - - - - Type - Тип - - - Authorization - Авторизация - - - Processor - Процессор - - - Memory - Память - - - Graphics Platform - - - - Kernel - Ядро - - - Agreements and Privacy Policy - - - - Edition License - Лицензия на издание - - - End User License Agreement - Лицензионное соглашение конечного пользователя - - - Privacy Policy - Политика конфиденциальности - - - %1-bit - %1-бит - - - - dccV23::SystemInfoPlugin - - System Info - Системная информация - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Отмена - - - Add - Добавить - - - Add System Language - Добавить язык системы - - - - dccV23::SystemLanguageWidget - - Edit - Редактировать - - - Language List - Список языков - - - Add Language - - - - Done - Готово - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Не беспокоить - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Уведомления от приложений не будут отображаться на рабочем столе, и звуки будут отключены, но вы можете просмотреть все сообщения в центре уведомлений. - - - When the screen is locked - Когда экран заблокирован - - - - dccV23::TimeSlotItem - - From - От - - - To - До - - - - dccV23::TouchScreenModule - - Touch Screen - Сенсорный дисплей - - - Select your touch screen when connected or set it here. - Выберите сенсорный экран при подключении или установите его здесь. - - - Confirm - Применить - - - Cancel - Отмена - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Скорость указателя - - - Slow - Медленно - - - Fast - Быстро - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Присоединиться к Программе взаимодействия с пользователем - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Год - - - Month - Месяц - - - Day - День - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Для смены NTP-сервера требуется аутентификация - - - - DefAppModule - - Default Applications - Приложения по умолчанию - - - - DefAppPlugin - - Webpage - Веб-страница - - - Mail - Почта - - - Text - Текст - - - Music - Музыка - - - Video - Видео - - - Picture - Изображение - - - Terminal - Терминал - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Отмена - - - Next - Далее - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Закрепить - - - Multiple Displays - Несколько Дисплеев - - - Show Dock - Показывать Dock - - - Mode - Режим - - - Position - Положение - - - Status - Состояние - - - Show recent apps in Dock - - - - Size - Размер - - - Plugin Area - Область Плагина - - - Select which icons appear in the Dock - Выбрать какие значки будут отображаться в Dock - - - Fashion mode - Стильный режим - - - Efficient mode - Эффективный режим - - - Top - Сверху - - - Bottom - Снизу - - - Left - Слева - - - Right - Справа - - - Location - Расположение - - - Keep shown - Отображать - - - Keep hidden - Скрывать - - - Smart hide - Умное скрытие - - - Small - Маленький - - - Large - Большой - - - On screen where the cursor is - На экране, где находится курсор - - - Only on main screen - Только на главном экране - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - Расположите Ваше лицо внутри рамки - - - - FaceWidget - - Edit - Редактировать - - - Manage Faces - Управление лицами - - - You can add up to 5 faces - Можно добавить до 5 лиц - - - Done - Готово - - - Add Face - Добавить лицо - - - The name already exists - Имя уже существует. - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - Нет поддерживаемых устройств - - - - FingerDetailWidget - - No supported devices found - Нет поддерживаемых устройств - - - - FingerDisclaimer - - Add Fingerprint - Добавить отпечаток пальца - - - Cancel - Отмена - - - Next - Далее - - - - FingerInfoWidget - - Place your finger - Разместите свой палец - - - Place your finger firmly on the sensor until you're asked to lift it - Плотно прижмите палец к датчику, пока вас не попросят поднять его - - - Scan the edges of your fingerprint - Сканируйте края отпечатка пальца - - - Place the edges of your fingerprint on the sensor - Поместите края вашего пальца на датчик отпечатка пальцев - - - Lift your finger - Поднимите палец - - - Lift your finger and place it on the sensor again - Поднимите палец и снова поместите его на датчик - - - Adjust the position to scan the edges of your fingerprint - Отрегулируйте положение для сканирования краев отпечатка пальца. - - - Lift your finger and do that again - Поднимите палец и сделайте это снова. - - - Fingerprint added - Отпечаток добавлен - - - - FingerWidget - - Edit - Редактировать - - - Fingerprint Password - Пароль по отпечатку пальца - - - You can add up to 10 fingerprints - Вы можете добавить до 10 отпечатков пальцев - - - Done - Готово - - - The name already exists - Имя уже существует. - - - Add Fingerprint - Добавить отпечаток пальца - - - - GeneralModule - - General - Основной - - - Balanced - Сбалансированный - - - Balance Performance - - - - High Performance - Высокая производительность - - - Power Saver - Энергосбережение - - - Power Plans - Планы питания - - - Power Saving Settings - Настройки энергосбережения - - - Auto power saving on low battery - Автоматическое энергосбережение при низком заряде батареи - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Автоматическое энергосбережение от батареи - - - Wakeup Settings - Настройки пробуждения - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Не может начинаться или заканчиваться дефисом - - - 1~63 characters please - Должно быть от 1 до 63 символов - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - Нет поддерживаемых устройств - - - - IrisWidget - - Edit - Редактировать - - - Manage Irises - Управление радужными оболочками - - - You can add up to 5 irises - - - - Done - Готово - - - Add Iris - Добавить радужную оболочку - - - The name already exists - Имя уже существует. - - - Iris - Радужка - - - - KeyLabel - - None - Ничего - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Сообщество Deepin - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Входное устройство - - - Automatic Noise Suppression - Автоматическое шумоподавление - - - Input Volume - Входная громкость - - - Input Level - Входной уровень - - - - PersonalizationDesktopModule - - Desktop - Рабочий стол - - - Window - Окно - - - Window Effect - Эффект окна - - - Window Minimize Effect - Эффект сворачивания окна - - - Transparency - Прозрачность - - - Rounded Corner - Закругленный угол - - - Scale - Масштаб - - - Magic Lamp - Волшебная лампа - - - Small - Маленький - - - Middle - - - - Large - Большой - - - - PersonalizationModule - - Personalization - Персонализация - - - - PersonalizationThemeList - - Cancel - Отмена - - - Save - Сохранить - - - Light - Светлая - - - Dark - Темная - - - Auto - Автоматически - - - Default - По умолчанию - - - - PersonalizationThemeModule - - Theme - Тема - - - Appearance - Внешний вид - - - Accent Color - Акцентный цвет - - - Icon Settings - - - - Icon Theme - Тема значков - - - Cursor Theme - Тема курсора - - - Text Settings - - - - Font Size - Размер шрифта - - - Standard Font - Стандартный шрифт - - - Monospaced Font - Моноширный шрифт - - - Light - Светлая - - - Auto - Автоматически - - - Dark - Темная - - - - PersonalizationThemeWidget - - Light - Светлая - General - /personalization/General - - - Dark - Темная - General - /personalization/General - - - Auto - Автоматически - General - /personalization/General - - - Default - По умолчанию - - - - PersonalizationWorker - - Custom - Пользовательский - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN-код для подключения к устройству Bluetooth: - - - Cancel - Отмена - - - Confirm - Применить - - - - PowerModule - - Power - Питание - - - Battery low, please plug in - Низкий заряд батареи, пожалуйста подключите питание - - - Battery critically low - Критически низкий заряд батареи - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Камера - - - Microphone - Микрофон - - - User Folders - - - - Calendar - Календарь - - - Screen Capture - - - - - QObject - - Control Center - Панель управления - - - , - - - - Error occurred when reading the configuration files of password rules! - При чтении файлов правил паролей произошла ошибка! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Активировано - - - View - Просмотр - - - To be activated - Необходимо активировать - - - Activate - Активировать - - - Expired - Истекло - - - In trial period - В пробном периоде - - - Trial expired - Пробный период закончился - - - Touch Screen Settings - Настройки Сенсорного Экрана - - - The settings of touch screen changed - Настройки сенсорного экрана именины - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Отмена - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Ваша система не авторизована, пожалуйста, сначала активируйте - - - Update successful - Обновление успешно завершено - - - Failed to update - Не удалось обновить - - - - SearchInput - - Search - Поиск - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Звуковые эффекты - - - - SoundModel - - Boot up - Запуск - - - Shut down - Выключить - - - Log out - Выйти из системы - - - Wake up - Пробуждение - - - Volume +/- - Громкость +/- - - - Notification - Уведомление - - - Low battery - Низкий заряд батареи - - - Send icon in Launcher to Desktop - Отправить иконку в панели запуска на рабочий стол - - - Empty Trash - Очистить Корзину - - - Plug in - Подключить - - - Plug out - Отключить - - - Removable device connected - Съемное устройство подключено - - - Removable device removed - Съемное устройство отключено - - - Error - Ошибка - - - - SoundModule - - Sound - Звук - - - - SoundPlugin - - Output - Выход - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Вход - - - Sound Effects - Звуковые эффекты - - - Devices - Устройства - - - Input Devices - Устройства ввода - - - Output Devices - Устройства вывода - - - - SpeakerPage - - Output Device - Выходное устройство - - - Mode - Режим - - - Output Volume - Выходной уровень - - - Volume Boost - Увеличение громкости - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Баланс левый/правый - - - Left - Слева - - - Right - Справа - - - - TimeSettingModule - - Time Settings - Настройки времени - - - Time - Время - - - Auto Sync - Авто-Синхронизация - - - Reset - Сброс - - - Save - Сохранить - - - Server - Сервер - - - Address - Адрес - - - Required - Требуется - - - Customize - Настроить - - - Year - Год - - - Month - Месяц - - - Day - День - - - - TimeZoneChooser - - Cancel - Отмена - - - Confirm - Применить - - - Add Timezone - Добавить часовой пояс - - - Add - Добавить - - - Change Timezone - Изменить часовой пояс - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Вернуться - - - Save - Сохранить - - - - TimezoneItem - - Tomorrow - Завтра - - - Yesterday - Вчера - - - Today - Сегодня - - - %1 hours earlier than local - На 1 час раньше местного - - - %1 hours later than local - На 1 час позже местного - - - - TimezoneModule - - Timezone List - Список часовых поясов - - - System Timezone - Часовой пояс системы - - - Add Timezone - Добавить часовой пояс - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Учетная запись не связана с Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Отмена - - - Go to Link - Перейти по ссылке - - - - UnknownUpdateItem - - Release date: - Дата выхода: - - - - UpdateCtrlWidget - - Check Again - Проверить снова - - - Update failed: insufficient disk space - Ошибка обновления: недостаточно места на диске - - - Dependency error, failed to detect the updates - Ошибка зависимости, не удалось обнаружить обновления - - - Restart the computer to use the system and the applications properly - Перезагрузите компьютер, чтобы правильно использовать систему и приложения - - - Network disconnected, please retry after connected - Сеть отключена, повторите попытку после подключения - - - Your system is not authorized, please activate first - Ваша система не авторизована, пожалуйста, сначала активируйте - - - This update may take a long time, please do not shut down or reboot during the process - Это обновление может занять много времени, пожалуйста, не выключайте и не перезагружайте компьютер во время процесса - - - Updates Available - Доступны обновления - - - Current Edition - Текущая версия - - - Updating... - Обновление... - - - Update All - Обновить все - - - Last checking time: - Время последней проверки: - - - Your system is up to date - Ваша система обновлена - - - Check for Updates - Проверить обновления - - - Checking for updates, please wait... - Проверка на наличие обновлений, пожалуйста ждите... - - - The newest system installed, restart to take effect - Новейшая система установлена, перезагрузите для начала использования - - - %1% downloaded (Click to pause) - %1% загружено (Нажмите для приостановки) - - - %1% downloaded (Click to continue) - %1% загружено (Нажмите для продолжения) - - - Your battery is lower than 50%, please plug in to continue - Ваша батарея заряжена менее чем на 50%, пожалуйста подключите питание для продолжения - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Пожалуйста, не выключайте питание и не отключайте компьютер от сети. - - - Size - Размер - - - - UpdateModule - - Updates - Обновления - - - - UpdatePlugin - - Check for Updates - Проверить обновления - - - - UpdateSettingItem - - Insufficient disk space - Недостаточно места на диске - - - Update failed: insufficient disk space - Ошибка обновления: недостаточно места на диске - - - Update failed - - - - Network error - Ошибка сети - - - Network error, please check and try again - Ошибка сети, проверьте соединение и попробуйте еще раз - - - Packages error - Ошибка пакетов - - - Packages error, please try again - - - - Dependency error - Ошибка зависимостей - - - Unmet dependencies - Отсутствующие зависимости - - - The newest system installed, restart to take effect - Новейшая система установлена, перезагрузите для начала использования - - - Waiting - Ожидание - - - Backing up - - - - System backup failed - Ошибка резервного копирования системы - - - Release date: - Дата выхода: - - - Server - Сервер - - - Desktop - Рабочий стол - - - Version - Версия - - - - UpdateSettingsModule - - Update Settings - Настройки обновления - - - System - Система - - - Security Updates Only - Только обновления безопасности - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - Сторонние репозитории - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - Прочие настройки - - - Auto Check for Updates - Автоматическая проверка обновлений - - - Auto Download Updates - Автоматическая Загрузка Обновлений - - - Switch it on to automatically download the updates in wireless or wired network - Включите это, чтобы автоматически загружать обновления в беспроводной или проводной сети - - - Auto Install Updates - Автоматическая установка обновлений - - - Updates Notification - Уведомления об обновлениях - - - Clear Package Cache - Очистить кеш пакетов - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Обновления системы - - - Security Updates - Обновления безопасности - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - Установить «%1» автоматически после окончания загрузки - - - - UpdateWidget - - Current Edition - Текущая версия - - - - UpdateWorker - - System Updates - Обновления системы - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - Обновления безопасности - - - Third-party Repositories - Сторонние репозитории - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - От Батареи - - - Never - Никогда - - - Shut down - Выключить - - - Suspend - Приостановить - - - Hibernate - Спящий режим - - - Turn off the monitor - Выключить монитор - - - Do nothing - Ничего не делать - - - 1 Minute - 1 минута - - - %1 Minutes - %1 минут - - - 1 Hour - 1 час - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Блокировка экрана через - - - Computer suspends after - - - - Computer will suspend after - Компьютер будет приостановлен через - - - When the lid is closed - Когда крышка закрыта - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Низкий уровень заряда батареи - - - Auto suspend battery level - Уровень заряда батареи для автоматической приостановки - - - Battery Management - - - - Display remaining using and charging time - Отображение оставшегося времени использования и зарядки - - - Maximum capacity - Максимальная емкость - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - От сети - - - 1 Minute - 1 минута - - - %1 Minutes - %1 минут - - - 1 Hour - 1 час - - - Never - Никогда - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Блокировка экрана через - - - Computer suspends after - - - - When the lid is closed - Когда крышка закрыта - - - When the power button is pressed - - - - Shut down - Выключить - - - Suspend - Приостановить - - - Hibernate - Спящий режим - - - Turn off the monitor - Выключить монитор - - - Show the shutdown Interface - - - - Do nothing - Ничего не делать - - - - WacomModule - - Drawing Tablet - Планшет для рисования - - - Mode - Режим - - - Pressure Sensitivity - Чувствительность к давлению - - - Pen - Перо - - - Mouse - Мышь - - - Light - Светлая - - - Heavy - Высокая - - - - main - - Control Center provides the options for system settings. - Центр управления предоставляет параметры для системных настроек. - - - - updateControlPanel - - Downloading - Загрузка - - - Waiting - Ожидание - - - Installing - Установка - - - Backing up - - - - Download and install - Загрузка и установка - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ru_UA.ts b/dcc-old/translations/dde-control-center_ru_UA.ts deleted file mode 100644 index 4f655e21fc..0000000000 --- a/dcc-old/translations/dde-control-center_ru_UA.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_sc.ts b/dcc-old/translations/dde-control-center_sc.ts deleted file mode 100644 index cddf73ca3e..0000000000 --- a/dcc-old/translations/dde-control-center_sc.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_si.ts b/dcc-old/translations/dde-control-center_si.ts deleted file mode 100644 index f5482d0f22..0000000000 --- a/dcc-old/translations/dde-control-center_si.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - ආසන්න උපාංග (ස්පීකර්, යතුරුපුවරුව, මූසිකය) සොයා ගැනීමට බ්ලූටූත් සක්‍රීය කරන්න. - - - My Devices - මගේ උපාංග - - - Other Devices - වෙනත් උපාංග - - - Show Bluetooth devices without names - - - - Connect - සම්බන්ධ කරන්න - - - Disconnect - විසන්ධි කරන්න - - - Rename - - - - Send Files - - - - Ignore this device - මෙම උපාංගය නොසලකා හරින්න - - - Connecting - සම්බන්ධ වෙමින් පවතී - - - Disconnecting - විසන්ධි කරමින් - - - - AddButtonWidget - - Add Application - යෙදවුම එක් කරන්න - - - Open Desktop file - ඩෙස්ක්ටොප් ගොනුව විවෘත කරන්න - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - අවලංගු කරන්න - - - Next - ඊළඟ - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - සම්පූර්ණයි - - - Failed to enroll your face - - - - Try Again - - - - Close - වසා දමන්න - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - අවලංගු කරන්න - - - Next - ඊළඟ - - - Iris enrolled - - - - Done - සම්පූර්ණයි - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - ඇඟිලි සලකුණ - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - සම්බන්ධයි - - - Not connected - සම්බන්ධතා නොමැත - - - - BluetoothModule - - Bluetooth - බ්ලූටූත් - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - පරිලෝකනය අසාර්ථක විය - - - The fingerprint already exists - ඇඟිලි සලකුණ දැනටමත් පවතී - - - Please scan other fingers - කරුණාකර වෙනත් ඇඟිලි පරිලෝකනය කරන්න - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - ඉතා වේගයෙන් චලනය විය - - - Finger moved too fast, please do not lift until prompted - ඇඟිල්ල වේගයෙන් චලනය විය, කරුණාකර විමසන තුරු ඔසවන්න එපා - - - Unclear fingerprint - අපැහැදිලි ඇඟිලි සලකුණකි - - - Clean your finger or adjust the finger position, and try again - ඔබේ ඇඟිල්ල පිරිසිදු කර හෝ ඇඟිල්ලේ පිහිටීම සකසා නැවත උත්සාහ කරන්න - - - Already scanned - දැනටමත් පරිලෝකනය කර ඇත - - - Adjust the finger position to scan your fingerprint fully - ඔබේ ඇඟිලි සලකුණ සම්පූර්ණයෙන් පරිලෝකනය කිරීමට ඇඟිලි ස්ථානය සකසන්න - - - Finger moved too fast. Please do not lift until prompted - ඇඟිල්ල වේගයෙන් චලනය විය, කරුණාකර විමසන තුරු ඔසවන්න එපා - - - Lift your finger and place it on the sensor again - ඔබේ ඇඟිල්ල ඔසවා නැවත සංවේදකය මත තබන්න - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - අවලංගු කරන්න - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - අවලංගු කරන්න - - - Confirm - button - තහවුරු කරන්න - - - - dccV23::AccountSpinBox - - Always - සැමවිටම - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - පරිශීලක නාමය - - - Change Password - මුරපදය වෙනස් කරන්න - - - Delete User - - - - User Type - - - - Auto Login - ස්වයංක්‍රීය පිවිසුම - - - Login Without Password - මුරපදය නොමැතිව පිවිසීම - - - Validity Days - වලංගු දින - - - Group - කණ්ඩායම - - - The full name is too long - සම්පූර්ණ නම දිග වැඩිය - - - Standard User - සම්මත පරිශීලකයා - - - Administrator - පරිපාලක - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - සම්පූර්ණ නම - - - Go to Settings - සැකසීම් වෙත යන්න - - - Cancel - අවලංගු කරන්න - - - OK - හරි - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - ඔබගේ ධාරකය-host වසම් සේවාදායකයෙන් සාර්ථකව ඉවත් කරන ලදි - - - Your host joins the domain server successfully - ඔබගේ ධාරකය වසම් සේවාදායකයට සාර්ථකව සම්බන්ධ වේ - - - Your host failed to leave the domain server - ඔබගේ ධාරකය වසම් සේවාදායකයෙන් ඉවත් වීමට අසමත් විය - - - Your host failed to join the domain server - ඔබගේ ධාරකය වසම් සේවාදායකයට සම්බන්ධ වීමට අසමත් විය - - - AD domain settings - AD වසම් සැකසුම් - - - Password not match - මුරපද නොගැලපේ - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - %1 මගින් කෙරෙන දැනුම්දීම් ඩෙස්ක්ටොප් එකේ සහ දැනුම්දීම් මධ්‍යස්ථානයේ පෙන්වන්න. - - - Play a sound - ශබ්දයක් වාදනය කරන්න - - - Show messages on lockscreen - අගුල් තිරයේ පණිවිඩ පෙන්වන්න - - - Show in notification center - - - - Show message preview - පණිවිඩ පෙරදසුන පෙන්වන්න - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - අවලංගු කරන්න - - - Save - සුරකින්න - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - රූප - - - - dccV23::BootWidget - - Updating... - යාවත්කාලීන වෙමින් ... - - - Startup Delay - ආරම්භක ප්‍රමාදය - - - Theme - තේමාව - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - පළමු ඇරඹුම ලෙස සැකසීමට ඇරඹුම් මෙනුවේ ඇති විකල්පය ක්ලික් කරන්න, පසුබිම වෙනස් කිරීම සඳහා පින්තූරයක් ඇද අතහරින්න - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - ඇරඹුම් මෙනුවේ දිස්වන තේමාව මාරු කරන්න - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - මුරපදය වෙනස් කරන්න - - - Boot Menu - ඇරඹුම් මෙනුව - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - අත්‍යවශ්‍යයි - - - Cancel - button - අවලංගු කරන්න - - - Confirm - button - තහවුරු කරන්න - - - Password cannot be empty - මුරපදය හිස් විය නොහැක - - - Passwords do not match - මුරපද නොගැලපේ - - - - dccV23::BrightnessWidget - - Brightness - දීප්තිය - - - Color Temperature - වර්ණ ස්වභාවය - - - Auto Brightness - ස්වයං දීප්තිය - - - Night Shift - රාත්‍රී වැඩ මුරය - - - The screen hue will be auto adjusted according to your location - ඔබගේ ස්ථානය අනුව තිරයේ පැහැය ස්වයංක්‍රීයව සකසනු ඇත - - - Change Color Temperature - වර්ණ ස්වභාවය වෙනස් කරන්න - - - Cool - සිසිල් - - - Warm - උණුසුම් - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - මගේ උපාංග - - - Other Devices - වෙනත් උපාංග - - - - dccV23::CommonInfoPlugin - - General Settings - සාමාන්‍ය/පොදු සැකසුම් - - - Boot Menu - ඇරඹුම් මෙනුව - - - Developer Mode - සංවර්ධක ප්‍රකාරය - - - User Experience Program - පරිශීලක අත්දැකීම් වැඩසටහන - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - පරිශීලක අත්දැකීම් වැඩසටහනට එකඟ වී සම්බන්ධ වන්න - - - The Disclaimer of Developer Mode - සංවර්ධක ප්‍රකාරයේ වියාචනය - - - Agree and Request Root Access - එකඟ වෙමින් මූල ප්‍රවේශය ඉල්ලා සිටින්න - - - Failed to get root access - මූල ප්‍රවේශය ලබා ගැනීමට අපොහොසත් විය - - - Please sign in to your Union ID first - - - - Cannot read your PC information - ඔබේ පරිගණක තොරතුරු කියවිය නොහැක - - - No network connection - ජාල සම්බන්ධතාවයක් නොමැත - - - Certificate loading failed, unable to get root access - සහතික ලබාගැනීම අසාර්ථක විය, මූල ප්‍රවේශය ලබා ගත නොහැක - - - Signature verification failed, unable to get root access - අත්සන සත්‍යාපනය අසාර්ථක විය, මූල ප්‍රවේශය ලබා ගත නොහැක - - - - dccV23::CreateAccountPage - - Group - කණ්ඩායම - - - Cancel - අවලංගු කරන්න - - - Create - සාදන්න - - - New User - - - - User Type - - - - Username - පරිශීලක නාමය - - - Full Name - සම්පූර්ණ නම - - - Password - මුර පදය - - - Repeat Password - මුරපදය නැවත ඇතුලත් කරන්න - - - Password Hint - - - - The full name is too long - සම්පූර්ණ නම දිග වැඩිය - - - Passwords do not match - මුරපද නොගැලපේ - - - Standard User - සම්මත පරිශීලකයා - - - Administrator - පරිපාලක - - - Customized - කැමති පරිදි සකසන ලද - - - Required - අත්‍යවශ්‍යයි - - - optional - විකල්ප - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - පරිශීලක නාමය අක්ෂර 3 ත් 32 ත් අතර විය යුතුය - - - The first character must be a letter or number - පළමු අක්‍ෂරය අකුරක් හෝ අංකයක් විය යුතුය - - - Your username should not only have numbers - ඔබගේ පරිශීලක නාමයට අංක පමණක් තිබිය යුතු නොවේ - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - රූප - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - අභිරුචි කෙටිමං එක් කරන්න - - - Name - නම - - - Required - අත්‍යවශ්‍යයි - - - Command - විධානය - - - Cancel - අවලංගු කරන්න - - - Add - එක් කරන්න - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - මෙම කෙටිමඟ %1 සමඟ ගැටළු ඇතිකරයි, මෙම කෙටිමඟ වහාම එකතු කිරීමට-එක් කරන්න යන්න මත ක්ලික් කරන්න - - - - dccV23::CustomEdit - - Required - අත්‍යවශ්‍යයි - - - Cancel - අවලංගු කරන්න - - - Save - සුරකින්න - - - Shortcut - කෙටිමඟ - - - Name - නම - - - Command - විධානය - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - මෙම කෙටිමඟ %1 සමඟ ගැටළු ඇතිකරයි, මෙම කෙටිමඟ වහාම එකතු කිරීමට-එක් කරන්න යන්න මත ක්ලික් කරන්න - - - - dccV23::CustomItem - - Shortcut - කෙටිමඟ - - - Please enter a shortcut - කරුණාකර කෙටිමඟක් ඇතුළත් කරන්න - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - මූල ප්‍රවේශය ඉල්ලා සිටින්න - - - Online - මාර්ගගතයි - - - Offline - මාර්ගගතව නැත - - - Please sign in to your Union ID first and continue - - - - Next - ඊළඟ - - - Export PC Info - පරිගණක තොරතුරු නිර්යාත කරන්න - - - Import Certificate - සහතිකය ආයාත කරන්න - - - 1. Export your PC information - 1. ඔබේ පරිගණක තොරතුරු නිර්යාත කරන්න - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. මාර්ගගතවීම අනවශ්‍යය සහතිකයක් බාගත කිරීම සඳහා https://www.chinauos.com/developMode වෙත යන්න - - - 3. Import the certificate - 3. සහතිකය ආයාත කරන්න - - - - dccV23::DeveloperModeWidget - - Request Root Access - මූල ප්‍රවේශය ඉල්ලා සිටින්න - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - සංවර්ධක ප්‍රකාරය මඟින් ඔබට මූල වරප්‍රසාද ලබා ගැනීමට, යෙදුම් වෙළඳසැලේ ලැයිස්තුගත කර නොමැති සහතික නොකළ යෙදුම් ස්ථාපනය කිරීමට සහ ක්‍රියාත්මක කිරීමට හැකියාව ලබා දෙයි, නමුත් මේ නිසා ඔබේ පද්ධතියේ අඛණ්ඩතාවයටද හානි සිදුවිය හැකිය, කරුණාකර එය ප්‍රවේශමෙන් භාවිතා කරන්න. - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - මූල ප්‍රවේශය ලබා ගැනීමට අපොහොසත් විය - - - Please sign in to your Union ID first - - - - Cannot read your PC information - ඔබේ පරිගණක තොරතුරු කියවිය නොහැක - - - No network connection - ජාල සම්බන්ධතාවයක් නොමැත - - - Certificate loading failed, unable to get root access - සහතික ලබාගැනීම අසාර්ථක විය, මූල ප්‍රවේශය ලබා ගත නොහැක - - - Signature verification failed, unable to get root access - අත්සන සත්‍යාපනය අසාර්ථක විය, මූල ප්‍රවේශය ලබා ගත නොහැක - - - To make some features effective, a restart is required. Restart now? - සමහර විශේෂාංග ක්‍රියාත්මක කිරීමට, නැවත ආරම්භ කිරීම අවශ්‍ය වේ. දැන් නැවත ආරම්භ කරන්නද? - - - Cancel - අවලංගු කරන්න - - - Restart Now - දැන්ම නැවත අරඹන්න - - - Root Access Allowed - මූල ප්‍රවේශයට අවසර ඇත - - - - dccV23::DisplayPlugin - - Display - තිරය - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - ද්විත්ව ක්ලික් කිරීම පිරික්සුම - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - පුනරාවර්තන ප්‍රමාදය - - - Short - කෙටි - - - Long - දිග - - - Repeat Rate - පුනරාවර්තන අගය - - - Slow - සෙමින් - - - Fast - වේගයෙන් - - - Test here - මෙහිදී පිරික්සන්න - - - Numeric Keypad - සංඛ්‍යා යතුරුපෑඩය - - - Caps Lock Prompt - කැපිටල් අකුරු විමසුම - - - - dccV23::GeneralSettingWidget - - Left Hand - වම් අත - - - Disable touchpad while typing - ටයිප් කිරීමේදී ටච් පෑඩ් අක්‍රීය කරන්න - - - Scrolling Speed - අනුචලන වේගය - - - Double-click Speed - ද්විත්ව ක්ලික් කිරීමේ වේගය - - - Slow - සෙමින් - - - Fast - වේගයෙන් - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - යතුරුපුවරු පිරිසැලසුම - - - Edit - සංස්කරණය කරන්න - - - Add Keyboard Layout - යතුරුපුවරු පිරිසැලසුම එක් කරන්න - - - Done - සම්පූර්ණයි - - - - dccV23::KeyboardLayoutDialog - - Cancel - අවලංගු කරන්න - - - Add - එක් කරන්න - - - Add Keyboard Layout - යතුරුපුවරු පිරිසැලසුම එක් කරන්න - - - - dccV23::KeyboardPlugin - - Keyboard and Language - යතුරුපුවරුව සහ භාෂාව - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - යතුරුපුවරු පිරිසැලසුම - - - Language - - - - Shortcuts - කෙටිමං - - - - dccV23::MainWindow - - Help - උදව් - - - - dccV23::ModifyPasswdPage - - Change Password - මුරපදය වෙනස් කරන්න - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - වත්මන් මුරපදය - - - Forgot password? - - - - New Password - නව මුරපදය - - - Repeat Password - මුරපදය නැවත ඇතුලත් කරන්න - - - Password Hint - - - - Cancel - අවලංගු කරන්න - - - Save - සුරකින්න - - - Passwords do not match - මුරපද නොගැලපේ - - - Required - අත්‍යවශ්‍යයි - - - Optional - විකල්ප - - - Password cannot be empty - මුරපදය හිස් විය නොහැක - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - වැරදි මුරපදයකි - - - New password should differ from the current one - නව මුරපදය වත්මන් එකට වඩා වෙනස් විය යුතුය - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - මූසිකය - - - General - පොදු - - - Touchpad - ටච් පෑඩ් - - - TrackPoint - ට්‍රැක් පොයින්ට් - - - - dccV23::MouseSettingWidget - - Pointer Speed - දර්ශක වේගය - - - Mouse Acceleration - මූසික ත්වරණය - - - Disable touchpad when a mouse is connected - මූසිකයක් සම්බන්ධ වූ විට ටච් පෑඩ් අක්‍රීය කරන්න - - - Natural Scrolling - ස්වාභාවික අනුචලනය - - - Slow - සෙමින් - - - Fast - වේගයෙන් - - - - dccV23::MultiScreenWidget - - Multiple Displays - බහු තිර - /display/Multiple Displays - - - Mode - ප්‍රකාරය - /display/Mode - - - Main Screen - ප්‍රධාන තිරය - /display/Main Scree - - - Duplicate - අනුපිටපත - - - Extend - දීර්ඝ කරන්න - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - දැනුම්දීම් - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - අත්ල හඳුනාගැනීම - - - Minimum Contact Surface - අවම සම්බන්ධ වන මතුපිට - - - Minimum Pressure Value - අවම පීඩන අගය - - - Disable the option if touchpad doesn't work after enabled - ටච් පෑඩ් සක්‍රිය කිරීමෙන් පසු ක්‍රියා නොකරන්නේ නම් විකල්පය අක්‍රීය කරන්න - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - මුරපදය හිස් විය නොහැක - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - මුරපදය අක්ෂර %1 ට නොඅඩු විය යුතුය - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - නැවුම්කරණ අනුපාතය - - - Hz - Hz - - - Recommended - නිර්දේශිතයි - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - මෙම ගිණුම මකා දැමීමට අවශ්‍ය බව ඔබට විශ්වාසද? - - - Delete account directory - ගිණුම් නාමාවලිය මකන්න - - - Cancel - අවලංගු කරන්න - - - Delete - මකා දමන්න - - - - dccV23::ResolutionWidget - - Resolution - විභේදනය - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - පෙරනිමිය - - - Fit - - - - Stretch - - - - Center - - - - Recommended - නිර්දේශිතයි - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - සම්මත - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - මොනිටරය සහය දක්වන්නේ 100% දර්ශන පරිමාණයට පමණි - - - Display Scaling - දර්ශන පරිමාණය - - - - dccV23::SearchInput - - Search - සොයන්න - - - - dccV23::SecondaryScreenDialog - - Brightness - දීප්තිය - - - - dccV23::SecurityLevelItem - - Weak - දුර්වලයි - - - Medium - මාධ්‍යය - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - අවලංගු කරන්න - - - Confirm - තහවුරු කරන්න - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - සංස්කරණය කරන්න - - - Done - සම්පූර්ණයි - - - - dccV23::ShortCutSettingWidget - - System - පද්ධතිය - - - Window - කවුළුව - - - Workspace - වැඩ අවකාශය - - - Assistive Tools - උපකාරක මෙවලම් - - - Custom Shortcut - අභිරුචි කෙටිමඟ - - - Restore Defaults - පෙරනිමි නැවත පිහිටුවන්න - - - Shortcut - කෙටිමඟ - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - කරුණාකර කෙටිමඟ නැවත සකසන්න - - - Cancel - අවලංගු කරන්න - - - Replace - ප්රතිස්ථාපනය කරන්න - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - මෙම කෙටිමඟ %1 සමඟ ගැටළු ඇතිකරයි, මෙම කෙටිමඟ වහාම ක්‍රියාත්මක කිරීමට- ප්‍රතිස්ථාපනය කරන්න යන්න ක්ලික් කරන්න - - - - dccV23::ShortcutItem - - Enter a new shortcut - නව කෙටිමඟක් ඇතුළත් කරන්න - - - - dccV23::SystemInfoModel - - available - ලබා ගත/භාවිත කළ හැකිය - - - - dccV23::SystemInfoModule - - About This PC - මෙම පරිගණකය ගැන - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - අනුවාදය - - - Edition - - - - Type - වර්ගය - - - Authorization - අවසර ලබාගැනීම් - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - සංස්කරණ බලපත්‍රය - - - End User License Agreement - අවසන් පරිශීලක බලපත්‍ර ගිවිසුම - - - Privacy Policy - - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - පද්ධති තොරතුරු - - - - dccV23::SystemLanguageSettingDialog - - Cancel - අවලංගු කරන්න - - - Add - එක් කරන්න - - - Add System Language - පද්ධති භාෂාවක් එක් කරන්න - - - - dccV23::SystemLanguageWidget - - Edit - සංස්කරණය කරන්න - - - Language List - භාෂා ලැයිස්තුව - - - Add Language - - - - Done - සම්පූර්ණයි - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - බාධා නොකරන්න - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - යෙදුම් දැනුම්දීම් ඩෙස්ක්ටොප් එකේ නොපෙන්වන අතර ශබ්ද නිහඩ කරනු ඇත, නමුත් ඔබට දැනුම්දීම් මධ්‍යස්ථානයේ ඇති සියලුම පණිවිඩ නැරඹිය හැකිය. - - - When the screen is locked - තිරය ​​අගුළු දමා ඇති විට - - - - dccV23::TimeSlotItem - - From - සිට - - - To - දක්වා - - - - dccV23::TouchScreenModule - - Touch Screen - ස්පර්ශ තිරය - - - Select your touch screen when connected or set it here. - සම්බන්ධ වූ විට ඔබගේ ස්පර්ශ තිරය තෝරන්න හෝ එය මෙහි සකසන්න. - - - Confirm - තහවුරු කරන්න - - - Cancel - අවලංගු කරන්න - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - දර්ශක වේගය - - - Slow - සෙමින් - - - Fast - වේගයෙන් - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - පරිශීලක අත්දැකීම් වැඩසටහනට සම්බන්ධ වන්න - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - වර්ෂය - - - Month - මාසය - - - Day - දිනය - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - NTP සේවාදායකය/server වෙනස් කිරීම සඳහා සත්‍යාපනය අවශ්‍ය වේ - - - - DefAppModule - - Default Applications - පෙරනිමි යෙදවුම් - - - - DefAppPlugin - - Webpage - වෙබ් පිටුව - - - Mail - තැපෑල - - - Text - වගන්තිය - - - Music - සංගීතය - - - Video - වීඩියෝ / දෘශ්‍ය - - - Picture - පින්තූරය - - - Terminal - ටර්මිනලය - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - අවලංගු කරන්න - - - Next - ඊළඟ - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - ඩොක් එක - - - Multiple Displays - බහු තිර - - - Show Dock - - - - Mode - ප්‍රකාරය - - - Position - - - - Status - තත්ත්වය - - - Show recent apps in Dock - - - - Size - ප්‍රමාණය - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - ඉහළ - - - Bottom - පහළ - - - Left - වම - - - Right - දකුණ - - - Location - පිහිටුම - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - සංස්කරණය කරන්න - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - සම්පූර්ණයි - - - Add Face - - - - The name already exists - නම දැනටමත් පවතී - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - ඇඟිලි සලකුණ එක් කරන්න - - - Cancel - අවලංගු කරන්න - - - Next - ඊළඟ - - - - FingerInfoWidget - - Place your finger - ඔබේ ඇඟිල්ල තබන්න - - - Place your finger firmly on the sensor until you're asked to lift it - ඔබේ ඇඟිල්ල එසවීමට ඔබෙන් ඉල්ලා සිටින තුරු සංවේදකය මත තදින් තබන්න - - - Scan the edges of your fingerprint - ඔබගේ ඇඟිලි සලකුණු වල කෙළවරවල් පරිලෝකනය කරන්න - - - Place the edges of your fingerprint on the sensor - ඔබගේ ඇඟිලි සලකුණු වල කෙළවරවල් සංවේදකය මත තබන්න - - - Lift your finger - ඔබේ ඇඟිල්ල ඔසවන්න - - - Lift your finger and place it on the sensor again - ඔබේ ඇඟිල්ල ඔසවා නැවත සංවේදකය මත තබන්න - - - Adjust the position to scan the edges of your fingerprint - ඔබගේ ඇඟිලි සලකුණු වල කෙළවරවල් පරිලෝකනය කිරීමට ස්ථානය සකසන්න - - - Lift your finger and do that again - ඔබේ ඇඟිල්ල ඔසවා නැවත එය කරන්න - - - Fingerprint added - ඇඟිලි සලකුණ එක් කරන ලදි - - - - FingerWidget - - Edit - සංස්කරණය කරන්න - - - Fingerprint Password - ඇඟිලි සලකුණු මුරපදය - - - You can add up to 10 fingerprints - ඔබට ඇඟිලි සලකුණු 10 ක් දක්වා එක් කළ හැකිය - - - Done - සම්පූර්ණයි - - - The name already exists - නම දැනටමත් පවතී - - - Add Fingerprint - ඇඟිලි සලකුණ එක් කරන්න - - - - GeneralModule - - General - පොදු - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - බල සුරැකීමේ සැකසුම් - - - Auto power saving on low battery - අඩු බැටරි ධාරිතාවයේදී ස්වයංක්‍රීයව බැටරියේ බලය ඉතිරි කිරීම - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - ස්වයංක්‍රීයව බැටරියේ බලය ඉතිරි කිරීම - - - Wakeup Settings - අවදි සැකසුම් - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - සංස්කරණය කරන්න - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - සම්පූර්ණයි - - - Add Iris - - - - The name already exists - නම දැනටමත් පවතී - - - Iris - - - - - KeyLabel - - None - කිසිවක් නැත - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - ආදාන ශබ්ද පරිමාව - - - Input Level - ආදාන මට්ටම - - - - PersonalizationDesktopModule - - Desktop - - - - Window - කවුළුව - - - Window Effect - කවුළු ආකාරය - - - Window Minimize Effect - කවුළුව කුඩා කිරීමේ පෙනුම - - - Transparency - විනිවිදභාවය - - - Rounded Corner - - - - Scale - පරිමාණය - - - Magic Lamp - මැජික් ලාම්පුව - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - සව්‍යං උචිත සැකසුම් - - - - PersonalizationThemeList - - Cancel - අවලංගු කරන්න - - - Save - සුරකින්න - - - Light - ආලෝකමත් - - - Dark - අඳුරු - - - Auto - ස්වයංක්‍රීය - - - Default - පෙරනිමිය - - - - PersonalizationThemeModule - - Theme - තේමාව - - - Appearance - - - - Accent Color - ප්‍රධාන භාවිත වර්ණය - - - Icon Settings - - - - Icon Theme - අයිකන තේමාව - - - Cursor Theme - කර්සර තේමාව - - - Text Settings - - - - Font Size - - - - Standard Font - සම්මත අකුරු - - - Monospaced Font - ඒක පරතර අකුරු - - - Light - ආලෝකමත් - - - Auto - ස්වයංක්‍රීය - - - Dark - අඳුරු - - - - PersonalizationThemeWidget - - Light - ආලෝකමත් - General - /personalization/General - - - Dark - අඳුරු - General - /personalization/General - - - Auto - ස්වයංක්‍රීය - General - /personalization/General - - - Default - පෙරනිමිය - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - බ්ලූටූත් උපාංගයට සම්බන්ධ වීමේ PIN අංකය: - - - Cancel - අවලංගු කරන්න - - - Confirm - තහවුරු කරන්න - - - - PowerModule - - Power - බලය - - - Battery low, please plug in - අඩු බැටරි ධාරිතාවක් පවතී, කරුණාකර විදුලි සැපයුමක් ලබා දෙන්න - - - Battery critically low - බැටරි ධාරිතාවය ඉතා අඩුය - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - මයික්‍රෝෆෝනය - - - User Folders - - - - Calendar - දින දසුන - - - Screen Capture - - - - - QObject - - Control Center - පාලන මධ්‍යස්ථානය - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - සක්‍රීයයි - - - View - දැක්ම - - - To be activated - සක්‍රීය කළ යුතුව ඇත - - - Activate - සක්‍රිය කරන්න - - - Expired - කල් ඉකුත් වී ඇත - - - In trial period - අත්හදා බැලීමේ කාල පරිච්ඡේදයේ පවතී - - - Trial expired - අත්හදා බැලීමේ කාල පරිච්ඡේදය අවසන් වී ඇත - - - Touch Screen Settings - ස්පර්ශ තිර සැකසුම් - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - අවලංගු කරන්න - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - ඔබේ පද්ධතියට අවසර නැත, කරුණාකර පළමුව සක්‍රිය කරන්න - - - Update successful - යාවත්කාලීන කිරීම සාර්ථකයි - - - Failed to update - යාවත්කාලීන කිරීමට අපොහොසත් විය - - - - SearchInput - - Search - සොයන්න - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - ශබ්ද ප්‍රයෝග - - - - SoundModel - - Boot up - ආරම්භ කරන්න - - - Shut down - වසා දමන්න - - - Log out - ඉවත් වන්න - - - Wake up - අවදි කරන්න - - - Volume +/- - ශබ්ද පරිමාව +/- - - - Notification - දැනුම්දීම් - - - Low battery - අඩු බැටරි ධාරිතාවයකි - - - Send icon in Launcher to Desktop - රඳවනයේ හි ඇති අයිනක ඩෙස්ක්ටොප් එක වෙත යවන්න - - - Empty Trash - අප ද්‍රව්‍ය හිස් කරන්න - - - Plug in - සම්බන්ධ කරන්න - - - Plug out - සම්බන්ධතාව ඉවත් කරන්න - - - Removable device connected - ඉවත් කළ හැකි උපාංගය සම්බන්ධයි - - - Removable device removed - ඉවත් කළ හැකි උපාංගය ඉවත් කරන ලදි - - - Error - දෝෂයකි - - - - SoundModule - - Sound - ශබ්දය - - - - SoundPlugin - - Output - ප්‍රතිදානය - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - ආදානය - - - Sound Effects - ශබ්ද ප්‍රයෝග - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - ප්‍රකාරය - - - Output Volume - ප්‍රතිදාන ශබ්ද පරිමාව - - - Volume Boost - පරිමාව වැඩි කිරීම - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - වම්/දකුණු සමබරතාව - - - Left - වම - - - Right - දකුණ - - - - TimeSettingModule - - Time Settings - වේලා සැකසුම් - - - Time - - - - Auto Sync - ස්වයංක්‍රීය සමමුහුර්තකරණය - - - Reset - - - - Save - සුරකින්න - - - Server - සේවාදායකය - - - Address - ලිපිනය - - - Required - අත්‍යවශ්‍යයි - - - Customize - කැමති පරිදි සකසන්න - - - Year - වර්ෂය - - - Month - මාසය - - - Day - දිනය - - - - TimeZoneChooser - - Cancel - අවලංගු කරන්න - - - Confirm - තහවුරු කරන්න - - - Add Timezone - කාල කලාපය එක් කරන්න - - - Add - එක් කරන්න - - - Change Timezone - කාල කලාපය වෙනස් කරන්න - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - සුරකින්න - - - - TimezoneItem - - Tomorrow - හෙට - - - Yesterday - ඊයේ - - - Today - අද - - - %1 hours earlier than local - ස්ථානික වේලාවට පැය %1 කට පෙර - - - %1 hours later than local - ස්ථානික වේලාවට පැය %1 කට පසු - - - - TimezoneModule - - Timezone List - කාල කලාප ලැයිස්තුව - - - System Timezone - පද්ධති කාල කලාපය - - - Add Timezone - කාල කලාපය එක් කරන්න - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - අවලංගු කරන්න - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - නැවත පරීක්ෂා කරන්න - - - Update failed: insufficient disk space - යාවත්කාලීන කිරීම අසාර්ථකයි: තැටි අවකාශය ප්‍රමාණවත් නොවේ - - - Dependency error, failed to detect the updates - පරායත්ත සාධක දෝෂයකි, යාවත්කාලීන කිරීම් හඳුනා ගැනීමට අසමත් විය - - - Restart the computer to use the system and the applications properly - පද්ධතිය සහ යෙදුම් නිසි ලෙස භාවිතා කිරීමට පරිගණකය නැවත ආරම්භ කරන්න - - - Network disconnected, please retry after connected - ජාලය විසන්ධි කර ඇත, කරුණාකර සම්බන්ධ වූ පසු නැවත උත්සාහ කරන්න - - - Your system is not authorized, please activate first - ඔබේ පද්ධතියට අවසර නැත, කරුණාකර පළමුව සක්‍රිය කරන්න - - - This update may take a long time, please do not shut down or reboot during the process - මෙම යාවත්කාලීන කිරීමට බොහෝ කාලයක් ගතවනු ඇත, කරුණාකර ක්‍රියාවලිය අතරතුර වසා දැමීමෙන් හෝ නැවත ඇරඹීමෙන් වලකින්න - - - Updates Available - - - - Current Edition - වත්මන් සංස්කරණය - - - Updating... - යාවත්කාලීන වෙමින් ... - - - Update All - - - - Last checking time: - අවසන් වරට පරීක්ෂා කල වේලාව: - - - Your system is up to date - ඔබේ පද්ධතිය යාවත්කාලීනයි - - - Check for Updates - යාවත්කාල කිරීම් සඳහා පරීක්ෂා කරන්න - - - Checking for updates, please wait... - යාවත්කාල කිරීම් සඳහා පරීක්ෂා කරමින් පවතී, කරුණාකර රැඳී සිටින්න ... - - - The newest system installed, restart to take effect - නවතම පද්ධතිය ස්ථාපනය කර ඇත, බලාත්මක වීමට නැවත ආරම්භ කරන්න - - - %1% downloaded (Click to pause) - %1% බාගත කර ඇත (විරාම කිරීමට ක්ලික් කරන්න) - - - %1% downloaded (Click to continue) - %1% බාගත කර ඇත (නැවත ඇරඹීමට ක්ලික් කරන්න) - - - Your battery is lower than 50%, please plug in to continue - ඔබගේ බැටරි ධාරිතාවය 50% ට වඩා අඩුය, කරුණාකර ඉදිරියට යාමට විදුලි සැපයුමක් ලබා දෙන්න - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - කරුණාකර නැවත ආරම්භ කිරීමට ප්‍රමාණවත් බලයක් පවතින බව සහතික කරන්න, ඔබේ යන්ත්‍රය ක්‍රියා විරහිත නොකරන්න - - - Size - ප්‍රමාණය - - - - UpdateModule - - Updates - යාවත්කාලීන කිරීම් - - - - UpdatePlugin - - Check for Updates - යාවත්කාල කිරීම් සඳහා පරීක්ෂා කරන්න - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - යාවත්කාලීන කිරීම අසාර්ථකයි: තැටි අවකාශය ප්‍රමාණවත් නොවේ - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - නවතම පද්ධතිය ස්ථාපනය කර ඇත, බලාත්මක වීමට නැවත ආරම්භ කරන්න - - - Waiting - - - - Backing up - - - - System backup failed - පද්ධතිය උපස්ථ කිරීම අසාර්ථක විය - - - Release date: - - - - Server - සේවාදායකය - - - Desktop - - - - Version - අනුවාදය - - - - UpdateSettingsModule - - Update Settings - යාවත්කාලීන කිරීම් සැකසුම් - - - System - පද්ධතිය - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - යාවත්කාලීන කිරීම් ස්වයංක්‍රීයව බාගත කරන්න - - - Switch it on to automatically download the updates in wireless or wired network - රැහැන් රහිත හෝ රැහැන්ගත ජාලයන්හීදී යාවත්කාලීන කිරීම් ස්වයංක්‍රීයව බාගත කිරීම ක්‍රියාත්මක කරන්න - - - Auto Install Updates - - - - Updates Notification - යාවත්කාලීන කිරීමේ දැනුම්දීම් - - - Clear Package Cache - පැකේජ වාරක මතකය පිරිසිදු කරන්න - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - වත්මන් සංස්කරණය - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - බැටරි බලයෙන් ක්‍රියාකරයි - - - Never - කිසිදා නැත - - - Shut down - වසා දමන්න - - - Suspend - තාවකාලිකව වසාදමන්න - - - Hibernate - ශිශිරකරණය කරන්න - - - Turn off the monitor - මොනිටරය ක්‍රියා විරහිත කරන්න - - - Do nothing - කිසිවක් නොකරන්න - - - 1 Minute - මිනිත්තු 1 - - - %1 Minutes - මිනිත්තු %1 ක් - - - 1 Hour - පැය 1 - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - තිරය අගුළුලෑම පසුව - - - Computer suspends after - - - - Computer will suspend after - පරිගණකය අත්හිටුවීම පසුව - - - When the lid is closed - පියන වසා ඇති විට - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - අඩු බැටරි මට්ටම - - - Auto suspend battery level - ස්වයංක්‍රීයව අත්හිටුවීමේ බැටරි මට්ටම - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - උපරිම ධාරිතාව - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - සම්බන්ධ කර ඇත - - - 1 Minute - මිනිත්තු 1 - - - %1 Minutes - මිනිත්තු %1 ක් - - - 1 Hour - පැය 1 - - - Never - කිසිදා නැත - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - තිරය අගුළුලෑම පසුව - - - Computer suspends after - - - - When the lid is closed - පියන වසා ඇති විට - - - When the power button is pressed - - - - Shut down - වසා දමන්න - - - Suspend - තාවකාලිකව වසාදමන්න - - - Hibernate - ශිශිරකරණය කරන්න - - - Turn off the monitor - මොනිටරය ක්‍රියා විරහිත කරන්න - - - Show the shutdown Interface - - - - Do nothing - කිසිවක් නොකරන්න - - - - WacomModule - - Drawing Tablet - අඳින ටැබ්ලටය - - - Mode - ප්‍රකාරය - - - Pressure Sensitivity - පීඩන සංවේදීතාව - - - Pen - පෑන - - - Mouse - මූසිකය - - - Light - ආලෝකමත් - - - Heavy - තද/බර - - - - main - - Control Center provides the options for system settings. - පාලන මධ්‍යස්ථානය පද්ධති සැකසුම් සඳහා පහසුකම් සපයයි. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_sk.ts b/dcc-old/translations/dde-control-center_sk.ts deleted file mode 100644 index 5287142032..0000000000 --- a/dcc-old/translations/dde-control-center_sk.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - Moje zariadenia - - - Other Devices - Iné zariadenia - - - Show Bluetooth devices without names - - - - Connect - Pripojiť - - - Disconnect - Odpojiť - - - Rename - Premenovať - - - Send Files - - - - Ignore this device - - - - Connecting - Pripájanie - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - Otvoriť súbor plochy - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Zrušiť - - - Next - Ďalšie - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Hotovo - - - Failed to enroll your face - - - - Try Again - - - - Close - Zavrieť - - - - AddFingerDialog - - Cancel - Zrušiť - - - Done - Hotovo - - - Scan Again - Znovu skenovať - - - Scan Suspended - Skenovanie pozastavené - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Zrušiť - - - Next - Ďalšie - - - Iris enrolled - - - - Done - Hotovo - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Odtlačok prsta - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Pripojené - - - Not connected - Nepripojené - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Správca zariadení Bluetooth - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - Prst sa hýbal príliš rýchlo, nedvíhajte ho prosím, kým sa zobrazí výzva - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Zrušiť - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Zrušiť - - - Confirm - button - Potvrdiť - - - - dccV23::AccountSpinBox - - Always - Vždy - - - - dccV23::AccountsModule - - Users - Používatelia - - - User management - Správa používateľov - - - Create User - Vytvoriť používateľa - - - Username - Meno používateľa - - - Change Password - Zmeniť heslo - - - Delete User - Vymazať používateľa - - - User Type - Typ používateľa - - - Auto Login - Automatické prihlásenie - - - Login Without Password - Prihlásiť sa bez hesla - - - Validity Days - - - - Group - Skupina - - - The full name is too long - Celé meno je príliš dlhé - - - Standard User - Štandardný používateľ - - - Administrator - Administrátor - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Celé meno - - - Go to Settings - Prejsť na nastavenia - - - Cancel - Zrušiť - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Váš hostiteľ bol úspešne odstránený z doménového servera - - - Your host joins the domain server successfully - Váš hostiteľ úspešne pripojil doménový server - - - Your host failed to leave the domain server - Zlyhalo opustenie doménového servera vášho hostiteľa. - - - Your host failed to join the domain server - Zlyhalo pripojenie doménového servera vášho hostiteľa - - - AD domain settings - Nastavenie AD domény - - - Password not match - Heslo sa nezhoduje - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - Osoba - - - Animal - Zviera - - - Illustration - Ilustrácia - - - Expression - Výraz - - - Custom Picture - Vlastný obrázok - - - Cancel - Zrušiť - - - Save - Uložiť - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - Plochý štýl - - - - dccV23::AvatarListView - - Images - Snímky - - - - dccV23::BootWidget - - Updating... - Obnovuje sa... - - - Startup Delay - Oneskorenie spustenia - - - Theme - Téma - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Zmeniť heslo - - - Boot Menu - Bootovacie menu - - - Change GRUB password - - - - Username: - Užívateľské meno: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Požadované - - - Cancel - button - Zrušiť - - - Confirm - button - Potvrdiť - - - Password cannot be empty - - - - Passwords do not match - Heslá sa nezhodujú - - - - dccV23::BrightnessWidget - - Brightness - Jas - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - Nočné osvetlenie - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - Všeobecné nastavenia - - - Boot Menu - Bootovacie menu - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Skupina - - - Cancel - Zrušiť - - - Create - Vytvoriť - - - New User - Nový používateľ - - - User Type - Typ používateľa - - - Username - Meno používateľa - - - Full Name - Celé meno - - - Password - Heslo - - - Repeat Password - Zopakujte heslo - - - Password Hint - - - - The full name is too long - Celé meno je príliš dlhé - - - Passwords do not match - Heslá sa nezhodujú - - - Standard User - Štandardný používateľ - - - Administrator - Administrátor - - - Customized - - - - Required - Požadované - - - optional - voliteľné - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Používateľské meno musí mať 3 až 32 znakov - - - The first character must be a letter or number - Prvý znak musí byť písmeno alebo číslo - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Obrázok ste ešte nenahrali, môžete ho nahrať kliknutím alebo potiahnutím - - - Uploaded file type is incorrect, please upload again - Nahraný typ súboru je nesprávny, nahrajte ho prosím znova - - - Images - Snímky - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Pridať vlastnú skratku - - - Name - Názov - - - Required - Požadované - - - Command - Príkaz - - - Cancel - Zrušiť - - - Add - Pridať - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Táto skratka je v konflikte s %1, kliknite na tlačidlo Pridať, aby ste ju aktivovali okamžite - - - - dccV23::CustomEdit - - Required - Požadované - - - Cancel - Zrušiť - - - Save - Uložiť - - - Shortcut - Odkaz - - - Name - Názov - - - Command - Príkaz - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Táto skratka je v konflikte s %1, kliknite na tlačidlo Pridať, aby ste ju aktivovali okamžite - - - - dccV23::CustomItem - - Shortcut - Odkaz - - - Please enter a shortcut - Prosím, zadajte skratku - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - Zrušiť - - - Save - Uložiť - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Ďalšie - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Zrušiť - - - Restart Now - Reštartovať teraz - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Zobrazenie - - - Light, resolution, scaling and etc - Jas, rozlíšenie, mierka a pod. - - - - dccV23::DouTestWidget - - Double-click Test - Test dvoj-kliku - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Oneskorenie opakovania - - - Short - Krátke - - - Long - Dlhé - - - Repeat Rate - Rýchlosť opakovania - - - Slow - Pomaly - - - Fast - Rýchlo - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - Režim Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Ľavá ruka - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Rýchlosť dvoj-kliku - - - Slow - Pomaly - - - Fast - Rýchlo - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Rozloženie klávesnice - - - Edit - Upraviť - - - Add Keyboard Layout - Pridať rozloženie klávesnice - - - Done - Hotovo - - - - dccV23::KeyboardLayoutDialog - - Cancel - Zrušiť - - - Add - Pridať - - - Add Keyboard Layout - Pridať rozloženie klávesnice - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Klávesnica a jazyk - - - Keyboard - Klávesnica - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Rozloženie klávesnice - - - Language - Jazyk - - - Shortcuts - Odkazy - - - - dccV23::MainWindow - - Help - Nápoveda - - - - dccV23::ModifyPasswdPage - - Change Password - Zmeniť heslo - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Aktuálne heslo - - - Forgot password? - - - - New Password - Nové heslo - - - Repeat Password - Zopakujte heslo - - - Password Hint - - - - Cancel - Zrušiť - - - Save - Uložiť - - - Passwords do not match - Heslá sa nezhodujú - - - Required - Požadované - - - Optional - Voliteľné - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Chybné heslo - - - New password should differ from the current one - Nové heslo by sa malo líšiť od aktuálneho - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Myš - - - General - Hlavné - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Rýchlosť kurzora - - - Mouse Acceleration - Zrýchlenie myši - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Prirodzené rolovanie - - - Slow - Pomaly - - - Fast - Rýchlo - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Režim - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Duplikovať - - - Extend - Rozšíriť - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Oznámenie - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - zlyhalo načítanie nasledujúcich zásuvných modulov - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - Uložiť - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Odstrániť priečinok účtu - - - Cancel - Zrušiť - - - Delete - Vymazať - - - - dccV23::ResolutionWidget - - Resolution - Rozlíšenie - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Predvolené - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - Otočenie - /display/Rotation - - - Standard - Štandardný - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - Zobrazenie mierky displeja - - - - dccV23::SearchInput - - Search - Hľadať - - - - dccV23::SecondaryScreenDialog - - Brightness - Jas - - - - dccV23::SecurityLevelItem - - Weak - Slabé - - - Medium - Stredne - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Zrušiť - - - Confirm - Potvrdiť - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Upraviť - - - Done - Hotovo - - - - dccV23::ShortCutSettingWidget - - System - Systém - - - Window - Okno - - - Workspace - Pracovné prostredie - - - Assistive Tools - - - - Custom Shortcut - Vlastný odkaz - - - Restore Defaults - Obnoviť predvolené nastavenia - - - Shortcut - Odkaz - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Prosím, obnovte zástupcu - - - Cancel - Zrušiť - - - Replace - Premiestniť - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Táto skratka je v konflikte s %1, kliknite na tlačidlo Nahradiť, aby ste ju aktivovali okamžite - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - dostupné - - - - dccV23::SystemInfoModule - - About This PC - O tomto počítači - - - Computer Name - Názov počítača - - - systemInfo - systemInfo - - - OS Name - - - - Version - Verzia - - - Edition - - - - Type - Typ - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - Grafická platforma - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Licencia vydania - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - Informácie o systéme - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Zrušiť - - - Add - Pridať - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Upraviť - - - Language List - - - - Add Language - - - - Done - Hotovo - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Potvrdiť - - - Cancel - Zrušiť - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Rýchlosť ukazovateľa - - - Enable TouchPad - Povoliť dotykovú plochu TouchPad - - - Tap to Click - - - - Natural Scrolling - Prirodzené posúvanie - - - Slow - Pomaly - - - Fast - Rýchlo - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Rýchlosť kurzora - - - Slow - Pomaly - - - Fast - Rýchlo - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Rok - - - Month - Mesiac - - - Day - Deň - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Na zmenu NTP servera je potrebné overenie - - - - DefAppModule - - Default Applications - Predvolené programy - - - - DefAppPlugin - - Webpage - Webová stránka - - - Mail - Pošta - - - Text - Text - - - Music - Hudba - - - Video - Video - - - Picture - Obrázok - - - Terminal - Terminál - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Zrušiť - - - Next - Ďalšie - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Panel - - - Multiple Displays - - - - Show Dock - - - - Mode - Režim - - - Position - Poloha - - - Status - Stav - - - Show recent apps in Dock - - - - Size - Veľkosť - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Módny režim - - - Efficient mode - Efektívny režim - - - Top - Hore - - - Bottom - Dolu - - - Left - Vľavo - - - Right - Vpravo - - - Location - Umiestnenie - - - Keep shown - - - - Keep hidden - Ponechať skryté - - - Smart hide - Inteligentné skrývanie - - - Small - Malý - - - Large - Veľký - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Upraviť - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Hotovo - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Pridať odtlačok prsta - - - Cancel - Zrušiť - - - Next - Ďalšie - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - Odtlačok prsta pridaný - - - - FingerWidget - - Edit - Upraviť - - - Fingerprint Password - Heslo odtlačku prsta - - - You can add up to 10 fingerprints - - - - Done - Hotovo - - - The name already exists - - - - Add Fingerprint - Pridať odtlačok prsta - - - - GeneralModule - - General - Hlavné - - - Balanced - Vyvážený - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - Interný testovací kanál - - - click here open the link - kliknite sem a otvorte odkaz - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Upraviť - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Hotovo - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Nič - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Vstupná hlasitosť - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Pracovné prostredie - - - Window - Okno - - - Window Effect - Efekt okna - - - Window Minimize Effect - - - - Transparency - Priehľadnosť - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Malý - - - Middle - - - - Large - Veľký - - - - PersonalizationModule - - Personalization - Personalizácia - - - - PersonalizationThemeList - - Cancel - Zrušiť - - - Save - Uložiť - - - Light - Light - - - Dark - - - - Auto - Automatické - - - Default - Predvolené - - - - PersonalizationThemeModule - - Theme - Téma - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Téma ikony - - - Cursor Theme - Téma kurzora - - - Text Settings - - - - Font Size - Veľkosť písma - - - Standard Font - Štandardné písmo - - - Monospaced Font - Neproporcionálne písmo - - - Light - Light - - - Auto - Automatické - - - Dark - - - - - PersonalizationThemeWidget - - Light - Light - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - Automatické - General - /personalization/General - - - Default - Predvolené - - - - PersonalizationWorker - - Custom - Vlastný - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN pre pripojenie k zariadeniu Bluetooth je: - - - Cancel - Zrušiť - - - Confirm - Potvrdiť - - - - PowerModule - - Power - Napájanie - - - Battery low, please plug in - Vybitá batéria, prosím pripojte kábel napájania - - - Battery critically low - Kriticky nízka úroveň batérie - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofón - - - User Folders - - - - Calendar - Kalendár - - - Screen Capture - - - - - QObject - - Control Center - Ovládacie centrum - - - , - , - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Aktivované - - - View - Pohľad - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - Kontrola verzií systému, počkajte prosím... - - - Leave - - - - Cancel - Zrušiť - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - Aktualizácia bola úspešná - - - Failed to update - Nepodarilo sa zaktualizovať - - - - SearchInput - - Search - Hľadať - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Zvukové efekty - - - - SoundModel - - Boot up - Spustiť - - - Shut down - Vypnúť - - - Log out - Odhlásiť - - - Wake up - Prebudiť - - - Volume +/- - Hlasitosť +/- - - - Notification - Oznámenie - - - Low battery - Slabá batéria - - - Send icon in Launcher to Desktop - Odoslať ikonu z Launchra na pracovnú plochu - - - Empty Trash - Vysypať kôš - - - Plug in - Pripojiť - - - Plug out - Odpojiť - - - Removable device connected - Odpojiteľné zariadenie je pripojené - - - Removable device removed - Odpojiteľné zariadenie bolo odstránené - - - Error - Chyba - - - - SoundModule - - Sound - Zvuk - - - - SoundPlugin - - Output - Výstup - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - Či sa zvuk automaticky pozastaví, keď sa aktuálne zvukové zariadenie odpojí - - - Input - Vstup - - - Sound Effects - Zvukové efekty - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Režim - - - Output Volume - Výstupná hlasitosť - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Ľavý/Pravý vyváženie - - - Left - Vľavo - - - Right - Vpravo - - - - TimeSettingModule - - Time Settings - Nastavenia času - - - Time - - - - Auto Sync - - - - Reset - Nastaviť znovu - - - Save - Uložiť - - - Server - Server - - - Address - Adresa - - - Required - Požadované - - - Customize - Prispôsobiť - - - Year - Rok - - - Month - Mesiac - - - Day - Deň - - - - TimeZoneChooser - - Cancel - Zrušiť - - - Confirm - Potvrdiť - - - Add Timezone - Pridať časovú zónu - - - Add - Pridať - - - Change Timezone - Zmeniť časovú zónu - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Vrátiť - - - Save - Uložiť - - - - TimezoneItem - - Tomorrow - Zajtra - - - Yesterday - Včera - - - Today - Dnes - - - %1 hours earlier than local - %1 hodiny skôr ako lokálne - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Zoznam časových zón - - - System Timezone - - - - Add Timezone - Pridať časovú zónu - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Zrušiť - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Chyba závislosti, aktualizácie sa nepodarilo zistiť - - - Restart the computer to use the system and the applications properly - Ak chcete správne používať systém a aplikácie, reštartujte počítač - - - Network disconnected, please retry after connected - Sieť je odpojená, skúste to znova po pripojení - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - Táto aktualizácia môže trvať dlho, prosím, nevypínajte alebo nereštartujte zariadenie počas tohto procesu - - - Updates Available - - - - Current Edition - - - - Updating... - Obnovuje sa... - - - Update All - - - - Last checking time: - - - - Your system is up to date - Váš systém je aktuálny - - - Check for Updates - - - - Checking for updates, please wait... - Kontrola aktualizácií, čakajte prosím... - - - The newest system installed, restart to take effect - Najnovší systém nainštalovaný, zmeny sa prejavia po reštarte - - - %1% downloaded (Click to pause) - %1 stiahnuté (Kliknite pre pozastavenie) - - - %1% downloaded (Click to continue) - %1% stiahnuté (Kliknite pre pokračovanie) - - - Your battery is lower than 50%, please plug in to continue - Vaša batéria klesla pod 50%, prosím, pripojte nabíjačku a pokračujte - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Prosím, zabezpečte napájanie pre reštartovanie a nevypínajte ani neodpájajte zariadenie - - - Size - Veľkosť - - - - UpdateModule - - Updates - Aktualizácie - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Najnovší systém nainštalovaný, zmeny sa prejavia po reštarte - - - Waiting - Čaká sa - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Server - - - Desktop - Pracovné prostredie - - - Version - Verzia - - - - UpdateSettingsModule - - Update Settings - Nastavenia aktualizácie - - - System - Systém - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - Aktualizácia Linglong - - - Linglong Package Update - Aktualizácia balíka Linglong - - - If there is update for linglong package, system will update it for you - Ak bude dostupná aktualizácia pre balík linglong, systém ho aktualizuje za vás - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - Aktualizácie budú automaticky stiahnuté na bezdrôtovej alebo káblovej sieti - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - Aktualizácie z interných testovacích zdrojov - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Môže byť nebezpečné, aby ste teraz opustili interný testovací kanál, chcete ho napriek tomu opustiť? - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - Nie je možné odinštalovať balík - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - Nie je možné nainštalovať balík - - - - UseBatteryModule - - On Battery - - - - Never - Nikdy - - - Shut down - Vypnúť - - - Suspend - Uspať - - - Hibernate - Hibernácia - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 minúta - - - %1 Minutes - %1 minút - - - 1 Hour - 1 hodina - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - Počítač sa vypne po - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - Zobraziť rozhranie vypnutia - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 minúta - - - %1 Minutes - %1 minút - - - 1 Hour - 1 hodina - - - Never - Nikdy - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Vypnúť - - - Suspend - Uspať - - - Hibernate - Hibernácia - - - Turn off the monitor - - - - Show the shutdown Interface - Zobraziť rozhranie vypnutia - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Režim - - - Pressure Sensitivity - Citlivé na tlak - - - Pen - Pero - - - Mouse - Myš - - - Light - Light - - - Heavy - ťažký - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_sl.ts b/dcc-old/translations/dde-control-center_sl.ts deleted file mode 100644 index 760e8e0d2c..0000000000 --- a/dcc-old/translations/dde-control-center_sl.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Dovoli drugim bluetooth napravam, da najdejo to napravo - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Vklopite bluetooth za iskanje naprav v bližini (zvočniki, tipkovnica, miška) - - - My Devices - Moje naprave - - - Other Devices - Druge naprave - - - Show Bluetooth devices without names - Prikaži bluetooth naprave brez imen - - - Connect - Poveži - - - Disconnect - Prekini povezavo - - - Rename - Preimenuj - - - Send Files - Pošlji datoteke - - - Ignore this device - Prezri to napravo - - - Connecting - Povezovanje - - - Disconnecting - Odklpaljanje - - - - AddButtonWidget - - Add Application - Dodaj aplikacijo - - - Open Desktop file - Odpri namizno datoteko - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Prekini - - - Next - Naprej - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Opravljeno - - - Failed to enroll your face - - - - Try Again - - - - Close - Zapri - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Prekini - - - Next - Naprej - - - Iris enrolled - - - - Done - Opravljeno - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - Največ 15 znakov - - - Use letters, numbers and underscores only, and no more than 15 characters - Uporabite zgolj črke, številke in podčrtaje ter največ 15 znakov - - - Use letters, numbers and underscores only - Uporabite zgolj črke, številke in podčrtaje - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - prstni odtis - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Povezava vzpostavljena - - - Not connected - Brez povezave - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Prstni odtis 1 - - - Fingerprint2 - Prstni odtis 2 - - - Fingerprint3 - Prstni odtis 3 - - - Fingerprint4 - Prstni odtis 4 - - - Fingerprint5 - Prstni odtis 5 - - - Fingerprint6 - Prstni odtis 6 - - - Fingerprint7 - Prstni odtis 7 - - - Fingerprint8 - Prstni odtis 8 - - - Fingerprint9 - Prstni odtis 9 - - - Fingerprint10 - Prstni odtis 10 - - - Scan failed - Prepoznavanje ni uspelo - - - The fingerprint already exists - Prstni odtis že obstaja - - - Please scan other fingers - Skenirajte druge prste - - - Unknown error - Neznana napaka - - - Scan suspended - Prepoznavanje opuščeno - - - Cannot recognize - Ne morem prepoznati - - - Moved too fast - Prehitro gibanje - - - Finger moved too fast, please do not lift until prompted - Prst se je prehitro premikal. Ne dvigujte ga pred obvestilom - - - Unclear fingerprint - Nejasen prstni odtis - - - Clean your finger or adjust the finger position, and try again - Očistite prst ali prilagodite položaj prsta in poskusite znova - - - Already scanned - Že skenirano - - - Adjust the finger position to scan your fingerprint fully - Prilagodite položaj prsta, da v celoti prepoznate prstni odtis - - - Finger moved too fast. Please do not lift until prompted - Prst se je prehitro premikal. Ne dvigujte ga pred obvestilom - - - Lift your finger and place it on the sensor again - Dvignite prst in ga ponovno namestite na senzor - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Prekini - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Prekini - - - Confirm - button - Potrdi - - - - dccV23::AccountSpinBox - - Always - Vedno - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Uporabniško ime - - - Change Password - Sprememba gesla - - - Delete User - - - - User Type - - - - Auto Login - Samodejna prijava - - - Login Without Password - Prijava brez gesla - - - Validity Days - Dnevi veljavnosti - - - Group - Skupina - - - The full name is too long - Polno ime je predolgo - - - Standard User - Običajni uporabnik - - - Administrator - Skrbnik - - - Reset Password - Ponastavi geslo - - - The full name has been used by other user accounts - - - - Full Name - Polno ime - - - Go to Settings - Pojdite v nastavitve - - - Cancel - Prekini - - - OK - V redu - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Vaš gostitelj je bil uspešno odstranjen z domenskega strežnika - - - Your host joins the domain server successfully - Vaš gostitelj se je uspešno pridružil domenskemu strežniku - - - Your host failed to leave the domain server - Vaš gostitelj ni mogel zapustiti domenskega steežnika - - - Your host failed to join the domain server - Vaš gostitelj se ni mogel pridružiti domenskemu strežniku - - - AD domain settings - AD nastavitve domene - - - Password not match - Gesli se ne ujemata - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Prikaži obvestila od %1 na namizju in v središču za obveščanje. - - - Play a sound - Predvajaj zvok - - - Show messages on lockscreen - Prikaži obvestila na zaklenjenem zaslonu - - - Show in notification center - Prikaži v središču za obveščanje - - - Show message preview - Prikaži predogledsporočila - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Prekini - - - Save - Shrani - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Slike - - - - dccV23::BootWidget - - Updating... - Posodabljanje... - - - Startup Delay - Zamik ob zagonu - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Kliknite možnost v zagonskem meniju, da jo nastavite kot primarni zagon, in povlecite sliko, da spremenite ozadje - - - Click the option in boot menu to set it as the first boot - Izberite možnost v zagonskem meniju, da jo določite kot prednostni zagon - - - Switch theme on to view it in boot menu - Preklopite temo za ogled v zagonskem meniju - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Sprememba gesla - - - Boot Menu - Meni zagona - - - Change GRUB password - - - - Username: - Uporabniško ime: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Obvezno - - - Cancel - button - Prekini - - - Confirm - button - Potrdi - - - Password cannot be empty - Geslo ne more biti prazno - - - Passwords do not match - Gesli se ne ujemata - - - - dccV23::BrightnessWidget - - Brightness - Svetlost - - - Color Temperature - Barvna temperatura - - - Auto Brightness - Samodejna svetlost - - - Night Shift - Nočna izmena - - - The screen hue will be auto adjusted according to your location - Odtenki zaslona bodo prilagojeni glede na vašo lokacijo - - - Change Color Temperature - Spremeni barvno temperaturo - - - Cool - Hladna - - - Warm - Topla - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Moje naprave - - - Other Devices - Druge naprave - - - - dccV23::CommonInfoPlugin - - General Settings - Splošne nastavitve - - - Boot Menu - Meni zagona - - - Developer Mode - Razvojni način - - - User Experience Program - Program uporabniške izkušnje - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Sprejmem in se pridružujem programu uporabniške izkušnje - - - The Disclaimer of Developer Mode - Izjava o omejitvi odgovornosti za razvojni način - - - Agree and Request Root Access - Se strinjam in zahtevam korenski dostop - - - Failed to get root access - Korenskega dostopa ni bilo mogoče pridobiti - - - Please sign in to your Union ID first - Najprej se vpišite v svoj Union ID - - - Cannot read your PC information - Ne morem pridobiti podatkov o računalniku - - - No network connection - Ni omrežne povezave - - - Certificate loading failed, unable to get root access - Neuspešno nalaganje certifikata, korenskega dostopa ni mogoče pridobiti - - - Signature verification failed, unable to get root access - Neuspešno preverjanje podpisa, korenskega dostopa ni mogoče pridobiti - - - - dccV23::CreateAccountPage - - Group - Skupina - - - Cancel - Prekini - - - Create - Ustvari - - - New User - - - - User Type - - - - Username - Uporabniško ime - - - Full Name - Polno ime - - - Password - Geslo - - - Repeat Password - Ponovite geslo - - - Password Hint - Namig za geslo - - - The full name is too long - Polno ime je predolgo - - - Passwords do not match - Gesli se ne ujemata - - - Standard User - Običajni uporabnik - - - Administrator - Skrbnik - - - Customized - Prilagojeno - - - Required - Obvezno - - - optional - izbirno - - - The hint is visible to all users. Do not include the password here. - Namig je viden vsem uporabnikom. Sem ne zapisujte gesla. - - - Policykit authentication failed - Policykit overitev ni uspela - - - Username must be between 3 and 32 characters - Uporabniško ime mora imeti od 3 do 32 znakov - - - The first character must be a letter or number - Prvi znak mora biti črka ali številka - - - Your username should not only have numbers - Uporabniško ime naj ne bo sestavljeno le iz številk - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Slike - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Dodaj bližnjico po meri - - - Name - Ime - - - Required - Obvezno - - - Command - Ukaz - - - Cancel - Prekini - - - Add - Dodaj - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ta bližnjica se križa z/s %1. Lahko jo takoj omogočite s klikom na Dodaj - - - - dccV23::CustomEdit - - Required - Obvezno - - - Cancel - Prekini - - - Save - Shrani - - - Shortcut - Bližnjica - - - Name - Ime - - - Command - Ukaz - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ta bližnjica se križa z/s %1. Lahko jo takoj omogočite s klikom na Dodaj - - - - dccV23::CustomItem - - Shortcut - Bližnjica - - - Please enter a shortcut - Prosim, vnesite bližnjico - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Zahtevaj korenski dostop - - - Online - Povezan - - - Offline - Odklopljen - - - Please sign in to your Union ID first and continue - Najprej se vpišite v svoj Union ID in nadaljujte - - - Next - Naprej - - - Export PC Info - Izvozi informacije o računalniku - - - Import Certificate - Uvozi certifikat - - - 1. Export your PC information - 1. Izvozite informacije o računalniku - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Pojdite na https://www.chinauos.com/developMode in prenesite certifikat za uporabo brez povezave - - - 3. Import the certificate - 3. Uvozite certifikat - - - - dccV23::DeveloperModeWidget - - Request Root Access - Zahtevaj korenski dostop - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Razvojni način omogoča pridobitev korenskih pravic, nameščanje in zagon nepodpisanih aplikacij, ki niso dosegljive v trgovini z aplikacijami,. Vendar se lahko s tem ogrozi celovitost sistema, zato je priporočena previdnost pri uporabi. - - - The feature is not available at present, please activate your system first - Funkcija trenutno ni na voljo. Najprej aktivirajte svoj sistem - - - Failed to get root access - Korenskega dostopa ni bilo mogoče pridobiti - - - Please sign in to your Union ID first - Najprej se vpišite v svoj Union ID - - - Cannot read your PC information - Ne morem pridobiti podatkov o računalniku - - - No network connection - Ni omrežne povezave - - - Certificate loading failed, unable to get root access - Neuspešno nalaganje certifikata, korenskega dostopa ni mogoče pridobiti - - - Signature verification failed, unable to get root access - Neuspešno preverjanje podpisa, korenskega dostopa ni mogoče pridobiti - - - To make some features effective, a restart is required. Restart now? - Delovanje določenih funkcij zahteva ponovni zagon. Ponovno zaženem sedaj? - - - Cancel - Prekini - - - Restart Now - Ponovni zagon - - - Root Access Allowed - Dovoljen korenski dostop - - - - dccV23::DisplayPlugin - - Display - Prikaži - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Test dvoklika - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Zamuda pred ponovitvijo - - - Short - Kratko - - - Long - Dolgo - - - Repeat Rate - Hitrost ponovitve - - - Slow - Počasi - - - Fast - Hitro - - - Test here - Tukaj preizkusi - - - Numeric Keypad - Številčnica - - - Caps Lock Prompt - Caps Lock poziv - - - - dccV23::GeneralSettingWidget - - Left Hand - Leva roka - - - Disable touchpad while typing - Med tipkanjem izklopi sledilno ploščico - - - Scrolling Speed - Hitrost pomikanja - - - Double-click Speed - Hitrost dvoklika - - - Slow - Počasi - - - Fast - Hitro - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Razpored tipkovnice - - - Edit - Uredi - - - Add Keyboard Layout - Dodaj razpored tipk - - - Done - Opravljeno - - - - dccV23::KeyboardLayoutDialog - - Cancel - Prekini - - - Add - Dodaj - - - Add Keyboard Layout - Dodaj razpored tipk - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tipkovnica in jezik - - - Keyboard - Tipkovnica - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Razpored tipkovnice - - - Language - Jezik - - - Shortcuts - Bližnjice - - - - dccV23::MainWindow - - Help - Pomoč - - - - dccV23::ModifyPasswdPage - - Change Password - Sprememba gesla - - - Reset Password - Ponastavi geslo - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Trenutno geslo - - - Forgot password? - - - - New Password - Novo geslo - - - Repeat Password - Ponovite geslo - - - Password Hint - Namig za geslo - - - Cancel - Prekini - - - Save - Shrani - - - Passwords do not match - Gesli se ne ujemata - - - Required - Obvezno - - - Optional - Izbirno - - - Password cannot be empty - Geslo ne more biti prazno - - - The hint is visible to all users. Do not include the password here. - Namig je viden vsem uporabnikom. Sem ne zapisujte gesla. - - - Wrong password - Napačno geslo - - - New password should differ from the current one - Novo geslo mora biti drugačno od trenutnega - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Zberi okna - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Miška - - - General - Splošno - - - Touchpad - Sledilna ploščica - - - TrackPoint - Gumb drsnik - - - - dccV23::MouseSettingWidget - - Pointer Speed - Hitrost kazalca - - - Mouse Acceleration - Posepešek miške - - - Disable touchpad when a mouse is connected - Izklopi sledilno ploščico, kadar je priključena miška - - - Natural Scrolling - Naravno pomikanje - - - Slow - Počasi - - - Fast - Hitro - - - - dccV23::MultiScreenWidget - - Multiple Displays - Več zaslonov - /display/Multiple Displays - - - Mode - Način - /display/Mode - - - Main Screen - Glavni zaslon - /display/Main Scree - - - Duplicate - Podvoji - - - Extend - Razširi - - - Only on %1 - Zgolj na %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Obvestilo - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Zaznava dlani - - - Minimum Contact Surface - Minimalna površina kontakta - - - Minimum Pressure Value - Minimalna prednost pritiskanja - - - Disable the option if touchpad doesn't work after enabled - Izklopi to možnost, če sledilna ploščica po vklopu ne deluje - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Pravilnik zasebnosti - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Globoko se zavedamo pomena vaših osebnih podatkov, zato imamo pravilnik zasebnosti, ki pokriva način zbiranja, rabe, posredovanja, deljenja, objavljanja in shranjevanja vaših podatkov. </p>Lahko <p>kliknete sem<a href="%1"> za ogled zadnjega pravilnika ali si ga oglejte na spletu na naslovu <a href="%1">%1</a>. Skrbno ga preberite, da boste razumeli naše prakse dela z uporabnikovo zasebnostjo. Če imate vprašanja, nas kontaktirajte na: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Geslo ne more biti prazno - - - Password must have at least %1 characters - Geslo mora imeti vsaj %1 znakov - - - Password must be no more than %1 characters - Geslo ne sme imeti več kot %1 znakov - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Geslo lahko vsebuje le angleške črke (razlikuje velike in male), številke ali posebne simbole (~!@#$%^&*()[]{}\|/?,.<>) - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Geslo mora vsebovati velike črke, ,ajhne črke, številke in simbole (~!@#$%^&*-+=`|\(){}[]:;"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Geslo ne sme vsebovati več kot 4 palindromne znake - - - Do not use common words and combinations as password - Za geslo ne uporabljajte pogostih besed in fraz - - - Create a strong password please - Prosimo, da ustvarite močno geslo - - - It does not meet password rules - Ne ustreza pravilom za geslo - - - - dccV23::RefreshRateWidget - - Refresh Rate - Hitrost osveževanja - - - Hz - Hz - - - Recommended - Priporočeno - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Želite res izbrisati ta račun? - - - Delete account directory - Izbriši imenik računa - - - Cancel - Prekini - - - Delete - Izbriši - - - - dccV23::ResolutionWidget - - Resolution - Ločljivost - /display/Resolution - - - Resize Desktop - Spremeni velikost namizja - /display/Resize Desktop - - - Default - Privzeto - - - Fit - Prilagodi - - - Stretch - Raztegni - - - Center - Na sredino - - - Recommended - Priporočeno - - - - dccV23::RotateWidget - - Rotation - Zasuk - /display/Rotation - - - Standard - Standardno - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Zaslon podpira le 100% merilo zaslona - - - Display Scaling - Velikost prikaza - - - - dccV23::SearchInput - - Search - Iskanje - - - - dccV23::SecondaryScreenDialog - - Brightness - Svetlost - - - - dccV23::SecurityLevelItem - - Weak - Šibko - - - Medium - Srednje - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Prekini - - - Confirm - Potrdi - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Uredi - - - Done - Opravljeno - - - - dccV23::ShortCutSettingWidget - - System - Sistem - - - Window - Okno - - - Workspace - Delovna površina - - - Assistive Tools - Podporna orodja - - - Custom Shortcut - Bližnjica po meri - - - Restore Defaults - Obnovi privzeto - - - Shortcut - Bližnjica - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Ponastavite bližnjico - - - Cancel - Prekini - - - Replace - Zamenjaj - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Ta bližnjica se prekriva z/s %1. Lahko jo takoj omogočite s klikom na Zamenjaj - - - - dccV23::ShortcutItem - - Enter a new shortcut - Vnesite novo bližnjico - - - - dccV23::SystemInfoModel - - available - na voljo - - - - dccV23::SystemInfoModule - - About This PC - O tem PCju - - - Computer Name - Ime računalnika - - - systemInfo - - - - OS Name - - - - Version - Različica - - - Edition - - - - Type - Vrsta - - - Authorization - Overitev - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Licenca izdaje - - - End User License Agreement - Licenca za končnega uporabnika - - - Privacy Policy - Pravilnik zasebnosti - - - %1-bit - %1-bitno - - - - dccV23::SystemInfoPlugin - - System Info - Informacije o sistemu - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Prekini - - - Add - Dodaj - - - Add System Language - Dodaj jezik sistema - - - - dccV23::SystemLanguageWidget - - Edit - Uredi - - - Language List - Seznam jezikov - - - Add Language - - - - Done - Opravljeno - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Ne moti - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Programska obvestila ne bodo prikazana na namizju, zvoki pa bodo utišani. Vsa obvestila si lahko ogledate v središču za obveščanje. - - - When the screen is locked - Kadar je zaslon zaklenjen - - - - dccV23::TimeSlotItem - - From - Od - - - To - Do - - - - dccV23::TouchScreenModule - - Touch Screen - Zaslon na dotik - - - Select your touch screen when connected or set it here. - Izberite zaslon na dotik, ko je priključen ali ga tukaj nastavite - - - Confirm - Potrdi - - - Cancel - Prekini - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Hitrost kazalca - - - Slow - Počasi - - - Fast - Hitro - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Pridružite se programu uporabniške izkušnje - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Pridružitev programu uporabniške izkušnje pomeni, da dovoljujete zbiranje podatkov o napravi, sistemu in programih. Če ne želite, da te podatke zbiramo in obdelujemo, se ne pridružite temu programu. Za več podrobnosti si oglejte politiko zasebnosti Deepin (<a href="%1">%1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Pridružitev programu uporabniške izkušnje pomeni, da dovoljujete zbiranje podatkov o napravi, sistemu in programih. Če ne želite, da te podatke zbiramo in obdelujemo, se ne pridružite temu programu. Za več podrobnosti si oglejte politiko zasebnosti Deepin (<a href="%1">%1</a>).</p> - - - - DateWidget - - Year - Leto - - - Month - Mesec - - - Day - Dan - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Za spreminjanje NTP strežnika je potrebna overitev - - - - DefAppModule - - Default Applications - Privzeti programi - - - - DefAppPlugin - - Webpage - Spletna stran - - - Mail - Pošta - - - Text - Besedilo - - - Music - Glasba - - - Video - Video - - - Picture - Slika - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Prekini - - - Next - Naprej - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Zasidraj - - - Multiple Displays - Več zaslonov - - - Show Dock - - - - Mode - Način - - - Position - Položaj - - - Status - Status - - - Show recent apps in Dock - - - - Size - Velikost - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - Vrh - - - Bottom - Dno - - - Left - Levo - - - Right - Desno - - - Location - Položaj - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - Majhno - - - Large - Veliko - - - On screen where the cursor is - Na zaslonu s kurzorjem - - - Only on main screen - Zgolj na glavnem zaslonu - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Uredi - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Opravljeno - - - Add Face - - - - The name already exists - Ime že obstaja - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - Ne najdem nobene podprte naprave - - - - FingerDetailWidget - - No supported devices found - Ne najdem nobene podprte naprave - - - - FingerDisclaimer - - Add Fingerprint - Dodaj prstni odtis - - - Cancel - Prekini - - - Next - Naprej - - - - FingerInfoWidget - - Place your finger - Namestite prst - - - Place your finger firmly on the sensor until you're asked to lift it - Tesno prislonite prst na senzor, dokler ne boste pozvani, da ga dvignete - - - Scan the edges of your fingerprint - Prepoznavanje robov prstnega odtisa - - - Place the edges of your fingerprint on the sensor - Na senzor prislonite robove prsta - - - Lift your finger - Dvignite prst - - - Lift your finger and place it on the sensor again - Dvignite prst in ga ponovno namestite na senzor - - - Adjust the position to scan the edges of your fingerprint - Prilagodite položaj za prepoznavanje robov prstnega odtisa - - - Lift your finger and do that again - Dvignite prst in to ponovite - - - Fingerprint added - Prstni odtis je dodan - - - - FingerWidget - - Edit - Uredi - - - Fingerprint Password - Geslo s prstnim odtisom - - - You can add up to 10 fingerprints - Dodate lahko do 10 prstnih odtisov - - - Done - Opravljeno - - - The name already exists - Ime že obstaja - - - Add Fingerprint - Dodaj prstni odtis - - - - GeneralModule - - General - Splošno - - - Balanced - Uravnoteženo - - - Balance Performance - - - - High Performance - Visoka zmogljivost - - - Power Saver - Varčevanje - - - Power Plans - Načrti za rabo energije - - - Power Saving Settings - Nastavitve varčevanja - - - Auto power saving on low battery - Samodejno varčevanje energije pri slabem akumulatorju - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Samodejno varčevanje energije pri akumulatorskem napajanju - - - Wakeup Settings - Nastavitve bujenja - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Začetek ali konec ne more biti pomišljaj - - - 1~63 characters please - 1~63 znakov prosim - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - Ne najdem nobene podprte naprave - - - - IrisWidget - - Edit - Uredi - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Opravljeno - - - Add Iris - - - - The name already exists - Ime že obstaja - - - Iris - - - - - KeyLabel - - None - brez - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - Vhodna naprava - - - Automatic Noise Suppression - Samodejno zmanjševanje šuma - - - Input Volume - Vhodna glasnost - - - Input Level - Vhodni nivo - - - - PersonalizationDesktopModule - - Desktop - Namizje - - - Window - Okno - - - Window Effect - Učinki oken - - - Window Minimize Effect - Učinek ob pomanjšanju okna - - - Transparency - Prozornost - - - Rounded Corner - Zaokroženi robovi - - - Scale - Merilo - - - Magic Lamp - Čarobna svetilka - - - Small - Majhno - - - Middle - - - - Large - Veliko - - - - PersonalizationModule - - Personalization - Prilagoditev - - - - PersonalizationThemeList - - Cancel - Prekini - - - Save - Shrani - - - Light - majhna - - - Dark - Temno - - - Auto - Samodejno - - - Default - Privzeto - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - Barva poudarkov - - - Icon Settings - - - - Icon Theme - Tema ikon - - - Cursor Theme - Tema kurzorjev - - - Text Settings - - - - Font Size - Velikost pisave - - - Standard Font - Standardna pisava - - - Monospaced Font - Pisava z enotno širino - - - Light - majhna - - - Auto - Samodejno - - - Dark - Temno - - - - PersonalizationThemeWidget - - Light - majhna - General - /personalization/General - - - Dark - Temno - General - /personalization/General - - - Auto - Samodejno - General - /personalization/General - - - Default - Privzeto - - - - PersonalizationWorker - - Custom - Po meri - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN za povezavo z bluetooth napravo je: - - - Cancel - Prekliči - - - Confirm - Potrdi - - - - PowerModule - - Power - Napajanje - - - Battery low, please plug in - Akumulator je skoraj prazen. Priključite napajalnik - - - Battery critically low - Akumulator je kritično prazen - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Koledar - - - Screen Capture - - - - - QObject - - Control Center - Nadzorno središče - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Aktivirano - - - View - Prikaži - - - To be activated - Bo aktivirano - - - Activate - Aktiviraj - - - Expired - Poteklo - - - In trial period - Preizkusno obdobje - - - Trial expired - Preizkusno obdobje je poteklo - - - Touch Screen Settings - Nastavitve zaslona na dotik - - - The settings of touch screen changed - Nastavitve zaslona na dotik so se spremenile - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Prekliči - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Vaš sistem ni overjen. Aktivirajte ga - - - Update successful - Posodobitev je uspela - - - Failed to update - Posodobitev ni uspela - - - - SearchInput - - Search - Iskanje - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Zvočni učinki - - - - SoundModel - - Boot up - Zagon - - - Shut down - Zaustavitev sistema - - - Log out - Odjava - - - Wake up - Bujenje - - - Volume +/- - Glasnost +/- - - - Notification - Obvestilo - - - Low battery - Malo energije v akumulatorju - - - Send icon in Launcher to Desktop - Pošlji ikono zaganjalnika na namizje - - - Empty Trash - Izprazni smetnjak - - - Plug in - Priklopi - - - Plug out - Odklopi - - - Removable device connected - Odstranljiv nosilec je priklopljen - - - Removable device removed - Odtrsanljiv nosilec je odklopljen - - - Error - Napaka - - - - SoundModule - - Sound - Zvok - - - - SoundPlugin - - Output - Izhod - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Vhod - - - Sound Effects - Zvočni učinki - - - Devices - Naprave - - - Input Devices - Vhodne naprave - - - Output Devices - Izhodne naprave - - - - SpeakerPage - - Output Device - Izhodna naprava - - - Mode - Način - - - Output Volume - Izhodna glasnost - - - Volume Boost - Poudarjanje glasnosti - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Ravnovesje levo/desno - - - Left - Levo - - - Right - Desno - - - - TimeSettingModule - - Time Settings - Nastavitev časa - - - Time - Čas - - - Auto Sync - Samodejna sinhronizacija - - - Reset - Ponastavi - - - Save - Shrani - - - Server - Strežnik - - - Address - Naslov - - - Required - Obvezno - - - Customize - Prilagodi - - - Year - Leto - - - Month - Mesec - - - Day - Dan - - - - TimeZoneChooser - - Cancel - Prekini - - - Confirm - Potrdi - - - Add Timezone - Dodaj časovni pas - - - Add - Dodaj - - - Change Timezone - Spremeni časovni pas - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Povrni - - - Save - Shrani - - - - TimezoneItem - - Tomorrow - Jutri - - - Yesterday - Včeraj - - - Today - Danes - - - %1 hours earlier than local - %1 ur prej kot lokalno - - - %1 hours later than local - %1 ur kasneje kot lokalno - - - - TimezoneModule - - Timezone List - Seznam časovnih pasov - - - System Timezone - Sistemski časovni pas - - - Add Timezone - Dodaj časovni pas - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Prekini - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - Ponovno preverjanje - - - Update failed: insufficient disk space - Posodobitev ni uspela: premalo prostora na disku - - - Dependency error, failed to detect the updates - Napake v odvisnosti. Ni bilo mogoče odkriti posodobitev - - - Restart the computer to use the system and the applications properly - Za pravilno uporabo ponovno zaženite računalnik - - - Network disconnected, please retry after connected - Povezava z omrežjem prekinjena, prosim poskusite ponovno po vzpostavitvi povezave - - - Your system is not authorized, please activate first - Vaš sistem ni overjen. Aktivirajte ga - - - This update may take a long time, please do not shut down or reboot during the process - Ta posodobitev lahko traja dolgo časa. Medtem ne ugašajte ali ponovno zaganjajte računalnika - - - Updates Available - - - - Current Edition - Trenutna izdaja - - - Updating... - Posodabljanje... - - - Update All - - - - Last checking time: - Nazadnje preverjeno: - - - Your system is up to date - Vaš sistem je posodobljen - - - Check for Updates - Preveri posodobitve - - - Checking for updates, please wait... - Preverjam za posodobitvami, prosimo počakajte... - - - The newest system installed, restart to take effect - Najnovejši sistem je nameščen. Ponovno zaženite računalnik - - - %1% downloaded (Click to pause) - Preneseno %1% (kliknite za pavzo) - - - %1% downloaded (Click to continue) - Preneseno %1% (kliknite za nadaljevanje) - - - Your battery is lower than 50%, please plug in to continue - Akumulator ima manj kot 50%, za nadaljevanje priključite napajanje - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Prosim, prepričajte se, da je za ponoven zagon dovolj energije, in ne ugasnite ali odklopite naprave iz napajanja - - - Size - Velikost - - - - UpdateModule - - Updates - Posodobitve - - - - UpdatePlugin - - Check for Updates - Preveri posodobitve - - - - UpdateSettingItem - - Insufficient disk space - Premalo prostora na disku - - - Update failed: insufficient disk space - Posodobitev ni uspela: premalo prostora na disku - - - Update failed - - - - Network error - - - - Network error, please check and try again - Napaka na omrežju. Poskusite znova - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Najnovejši sistem je nameščen. Ponovno zaženite računalnik - - - Waiting - Opozorilo - - - Backing up - - - - System backup failed - Varnostno kopiranje sistema ni uspelo - - - Release date: - - - - Server - Strežnik - - - Desktop - Namizje - - - Version - Različica - - - - UpdateSettingsModule - - Update Settings - Nastavitve posodobitev - - - System - Sistem - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - Vklopite za samodejni prenos posodobitev v žičnem ali brezžičnem omrežju - - - Auto Install Updates - - - - Updates Notification - Obveščanje o posodobitvah - - - Clear Package Cache - Počisti medpomnilnik paketov - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Posodobitev sistema - - - Security Updates - Varnostne posodobitve - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Trenutna izdaja - - - - UpdateWorker - - System Updates - Posodobitev sistema - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - Varnostne posodobitve - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Na akumulatorju - - - Never - Nikoli - - - Shut down - Zaustavitev sistema - - - Suspend - Mirovanje - - - Hibernate - Spanje - - - Turn off the monitor - izklopi zaslon - - - Do nothing - Ničesar ne stori - - - 1 Minute - 1 minuta - - - %1 Minutes - %1 minute - - - 1 Hour - 1 ura - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Zakleni zaslon po - - - Computer suspends after - - - - Computer will suspend after - Računalnik bo obmiroval, ko mine - - - When the lid is closed - ob zaprtju ohišja - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Malo energije v akumulatorju - - - Auto suspend battery level - Samodejno mirovanje zaradi stanja akumulatorja - - - Battery Management - - - - Display remaining using and charging time - Prikaži preostal čas rabe in polnjenja - - - Maximum capacity - Maksimalna kapaciteta - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Priključeno na el.omrežje - - - 1 Minute - 1 minuta - - - %1 Minutes - %1 minute - - - 1 Hour - 1 ura - - - Never - Nikoli - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Zakleni zaslon po - - - Computer suspends after - - - - When the lid is closed - ob zaprtju ohišja - - - When the power button is pressed - - - - Shut down - Zaustavitev sistema - - - Suspend - Mirovanje - - - Hibernate - Spanje - - - Turn off the monitor - izklopi zaslon - - - Show the shutdown Interface - - - - Do nothing - Ničesar ne stori - - - - WacomModule - - Drawing Tablet - Risalna tablica - - - Mode - Način - - - Pressure Sensitivity - Občutljivost na dotik - - - Pen - Pisalo - - - Mouse - Miška - - - Light - majhna - - - Heavy - velika - - - - main - - Control Center provides the options for system settings. - Nadzorno središče omogoča nastavljanje sistema - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_sq.ts b/dcc-old/translations/dde-control-center_sq.ts deleted file mode 100644 index 76624fe5ff..0000000000 --- a/dcc-old/translations/dde-control-center_sq.ts +++ /dev/null @@ -1,3997 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Lejoji pajisjet e tjera Bluetooth të gjejnë këtë pajisje - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Që të gjenden pajisje atypari (altoparlantë, tastierë, mi), aktivizoni Bluetooth-in - - - My Devices - Pajisjet e Mia - - - Other Devices - Pajisje të Tjera - - - Show Bluetooth devices without names - Shfaq pajisje Bluetooth pa emra - - - Connect - Lidhu - - - Disconnect - Shkëputu - - - Rename - Riemërtojeni - - - Send Files - Dërgoni Kartela - - - Ignore this device - Shpërfille këtë pajisje - - - Connecting - Po bëhet lidhja - - - Disconnecting - Po shkëputet - - - - AddButtonWidget - - Add Application - Shtoni Aplikacion - - - Open Desktop file - Hap kartelë Desktopi - - - Apps (*.desktop) - Aplikacione (*.desktop) - - - All files (*) - Krejt kartelat (*) - - - - AddFaceInfoDialog - - Enroll Face - Jepni Fytyrë - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Sigurohuni se krejt pjesët e fytyrës tuaj janë të pambuluara nga objekte dhe të dukshme qartësisht.Fytyra juaj duhet të jetë gjithashtu e ndriçuar mirë. - - - Cancel - Anuloje - - - Next - Pasuesi - - - Face enrolled - Fytyra u dha - - - Use your face to unlock the device and make settings later - Përdorni fytyrën tuaj që të shkyçni pajisjen dhe për të bërë ujdisjen më vonë - - - Done - U bë - - - Failed to enroll your face - S’u arrit të merrej fytyra juaj - - - Try Again - Riprovoni - - - Close - Mbylle - - - - AddFingerDialog - - Cancel - Anuloje - - - Done - U bë - - - Scan Again - Riskanoje - - - Scan Suspended - Skanimi u Pezullua - - - - AddIrisInfoDialog - - Enroll Iris - Jepni Bebe Syri - - - Cancel - Anuloje - - - Next - Pasuesi - - - Iris enrolled - U dha bebe syri - - - Done - U bë - - - Failed to enroll your iris - S’u arrit të merrej bebe syri - - - Try Again - Riprovoni - - - - AdvancedSettingModule - - Advanced Setting - Rregullime të Mëtejshme - - - Audio Framework - Platformë Audio - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - Platforma të ndryshme audio kanë përparësitë dhe mangësitë e tyre, zgjidhni atë që i përputhet më mirë përdorimit tuaj - - - - AuthenticationInfoItem - - No more than 15 characters - Jo më shumë se 15 shenja - - - Use letters, numbers and underscores only, and no more than 15 characters - Përdorni vetëm shkronja, numra dhe nënvija, si dhe jo më shumë se 15 shenja - - - Use letters, numbers and underscores only - Përdorni vetëm shkronja, numra dhe nënvija - - - - AuthenticationModule - - Biometric Authentication - Mirëfilltësim Biometrik - - - - AuthenticationPlugin - - Fingerprint - Shenja gishtash - - - Face - Fytyrë - - - Iris - Bebe Syri - - - - BluetoothDeviceModel - - Connected - I lidhur - - - Not connected - Jo e lidhur - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Përgjegjës pajisjesh Bluetooth - - - - CharaMangerModel - - Fingerprint1 - Shenjëgishti1 - - - Fingerprint2 - Shenjëgishti2 - - - Fingerprint3 - Shenjëgishti3 - - - Fingerprint4 - Shenjëgishti4 - - - Fingerprint5 - Shenjëgishti5 - - - Fingerprint6 - Shenjëgishti6 - - - Fingerprint7 - Shenjëgishti7 - - - Fingerprint8 - Shenjëgishti8 - - - Fingerprint9 - Shenjëgishti9 - - - Fingerprint10 - Shenjëgishti10 - - - Scan failed - Skanimi dështoi - - - The fingerprint already exists - Shenja e gishtit ekziston tashmë - - - Please scan other fingers - Ju lutemi, skanoni gishta të tjerë - - - Unknown error - Gabim i panjohur - - - Scan suspended - Skanimi u pezullua - - - Cannot recognize - S’bëhet dot njohja - - - Moved too fast - U lëviz shumë shpejt - - - Finger moved too fast, please do not lift until prompted - Gishti u lëviz shumë shpejt, ju lutemi, mos e ngrini para se t’ju kërkohet - - - Unclear fingerprint - Shenjë gishti e paqartë - - - Clean your finger or adjust the finger position, and try again - Pastroni gishtin, ose rregulloni pozicion gishti dhe riprovoni - - - Already scanned - Skanuar tashmë - - - Adjust the finger position to scan your fingerprint fully - Rregullojeni pozicionin e gishtit që të skanohet plotësisht shenja e gishtit - - - Finger moved too fast. Please do not lift until prompted - Gishti u lëviz shumë shpejt. Ju lutemi, mos e ngrini, pa jua kërkuar - - - Lift your finger and place it on the sensor again - Ngrijeni gishtin dhe rivendoseni te ndijuesi - - - Position your face inside the frame - Vendoseni fytyrën tuaj brenda kuadrit - - - Face enrolled - Fytyra u dha - - - Position a human face please - Ju lutemi, vendosni një fytyrë njeriu - - - Keep away from the camera - Mbajeni kamerën larg vetes - - - Get closer to the camera - Afrojuni kamerës - - - Do not position multiple faces inside the frame - Mos vendosni brenda kuadrit disa fytyra - - - Make sure the camera lens is clean - Sigurohuni se thjerrat e kamerës janë të pastra - - - Do not enroll in dark, bright or backlit environments - Mos bëni dhënie fytyre në mjedise të errët, të ndritshëm, apo të ndriçuar nga pas - - - Keep your face uncovered - Mbajeni zbuluar fytyrën tuaj - - - Scan timed out - Skanimit i mbaroi koha - - - Device crashed, please scan again! - Pajisja u vithis, ju lutemi, ribëni skanimin! - - - Cancel - Anuloje - - - - CooperationSettingsDialog - - Collaboration Settings - Rregullime Bashkëpunimi - - - Share mouse and keyboard - Nda mi dhe tastierë - - - Share your mouse and keyboard across devices - Përdorni miun dhe tastierën tuaj nëpër pajisje - - - Share clipboard - Nda të papastrën - - - Storage path for shared files - Shteg depozitimi për kartela të ndara - - - Share the copied content across devices - Përdoreni nëpër pajisje lëndën e kopjuar - - - Cancel - button - Anuloje - - - Confirm - button - Ripohojeni - - - - dccV23::AccountSpinBox - - Always - Përherë - - - - dccV23::AccountsModule - - Users - Përdorues - - - User management - Administrim përdoruesish - - - Create User - Krijoni Përdorues - - - Username - Emër përdoruesi - - - Change Password - Ndryshoni Fjalëkalimin - - - Delete User - Fshini Përdorues - - - User Type - Lloj Përdoruesi - - - Auto Login - Vetëhyrje - - - Login Without Password - Hyrje Pa Fjalëkalim - - - Validity Days - Ditë Vlefshmërie - - - Group - Grupe - - - The full name is too long - Emri i plotë është shumë i gjatë - - - Standard User - Përdorues Standard - - - Administrator - Përgjegjës - - - Reset Password - Ricaktoni Fjalëkalimin - - - The full name has been used by other user accounts - Emri i plotë është përdorur nga llogari të tjera përdoruesi - - - Full Name - Emër i Plotë - - - Go to Settings - Kalo te Rregullimet - - - Cancel - Anuloje - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - “Hyrje Vetvetiu” mund të aktivizohet vetëm për një llogari, ju lutemi, së pari, çaktivizojeni për llogarinë “%1” - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Streha juaj u hoq me sukses nga shërbyesi i përkatësive - - - Your host joins the domain server successfully - Streha juaj u bë pjesë me sukses e shërbyesit të përkatësive - - - Your host failed to leave the domain server - Streha juaj s’arriti të braktisë shërbyesin e përkatësive - - - Your host failed to join the domain server - Streha juaj s’arriti të lidhet me shërbyesin e përkatësive - - - AD domain settings - Rregullime përkatësie AD - - - Password not match - Fjalëkalimi s’përputhet - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Shfaq njoftime prej %1 në desktop dhe te qendra e njoftimeve. - - - Play a sound - Luaj një tingull - - - Show messages on lockscreen - Shfaq mesazhe, kur ekrani është i kyçur - - - Show in notification center - Shfaqe në qendër njoftimesh - - - Show message preview - Shfaq paraparje mesazhi - - - - dccV23::AvatarListDialog - - Person - Person - - - Animal - Kafshë - - - Illustration - Ilustrim - - - Expression - Shprehje - - - Custom Picture - Foto Vetjake - - - Cancel - Anuloje - - - Save - Ruaje - - - - dccV23::AvatarListFrame - - Dimensional Style - Stil Përmasor - - - Flat Style - Stil i Sheshtë - - - - dccV23::AvatarListView - - Images - Figura - - - - dccV23::BootWidget - - Updating... - Po përditësohet… - - - Startup Delay - Vonesë Nisjeje - - - Theme - Temë - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Klikoni mbi mundësinë te menuja e nisjeve, për ta caktuar si nisjen e parë dhe për të tërhequr dhe lënë një foto që të ndryshohet sfondi - - - Click the option in boot menu to set it as the first boot - Klikoni mundësinë te menuja e nisjes, për ta caktuar si nisjen e parë - - - Switch theme on to view it in boot menu - Aktivizoni temën që ta shihni te menu nisjesh - - - GRUB Authentication - Mirëfilltësim GRUB - - - GRUB password is required to edit its configuration - Që të përpunohet formësimi i tij, lypset fjalëkalim GRUB-i - - - Change Password - Ndryshoni Fjalëkalimin - - - Boot Menu - Menu Nisjesh - - - Change GRUB password - Ndryshoni fjalëkalim GRUB-i - - - Username: - Emër përdoruesi: - - - root - rrënjë - - - New password: - Fjalëkalimi i ri: - - - Repeat password: - Përsëriteni fjalëkalimin: - - - Required - I domosdoshëm - - - Cancel - button - Anuloje - - - Confirm - button - Ripohojeni - - - Password cannot be empty - Fjalëkalimi s’mund të jetë i zbrazët - - - Passwords do not match - Falëkalimet nuk përputhen - - - - dccV23::BrightnessWidget - - Brightness - Ndriçim - - - Color Temperature - Temperaturë Ngjyre - - - Auto Brightness - Ndriçim i Automatizuar - - - Night Shift - Turn Nate - - - The screen hue will be auto adjusted according to your location - Ngjyrimi i ekranit do të përshtatet sipas vendndodhjes tuaj - - - Change Color Temperature - Ndryshoni Temperaturë Ngjyre - - - Cool - E ftohtë - - - Warm - E ngrohtë - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - Bashkëpunim Me PC - - - Connect to - Lidhu te - - - Select a device for collaboration - Përzgjidhni një pajisje për bashkëpunim - - - Device Orientation - Orientim Pajisjeje - - - On the top - Në krye - - - On the right - Djathtas - - - On the bottom - Në fund - - - On the left - Majtas - - - My Devices - Pajisjet e Mia - - - Other Devices - Pajisje të Tjera - - - - dccV23::CommonInfoPlugin - - General Settings - Rregullime të Përgjithshme - - - Boot Menu - Menu Nisjesh - - - Developer Mode - Mënyra Zhvillues - - - User Experience Program - Program Përshtypjesh Përdoruesi - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Shprehni Pajtimin dhe Merrni Pjesë Te programi “User Experience Program” - - - The Disclaimer of Developer Mode - Klauzola e Mënyrës Zhvillues - - - Agree and Request Root Access - Shprehni Pajtimin dhe Kërkoni Hyrje Si Rrënjë - - - Failed to get root access - S’u arrit të hyhej si rrënjë - - - Please sign in to your Union ID first - Ju lutemi, së pari hyni te ID Union juaj - - - Cannot read your PC information - S’lexohen dot hollësi mbi PC-në tuaj - - - No network connection - S’ka lidhje rrjeti - - - Certificate loading failed, unable to get root access - Ngarkimi i dëshmisë dështoi, s’arrihet të merret hyrje si rrënjë - - - Signature verification failed, unable to get root access - Verifikimi i nënshkrimit dështoi, s’arrihet të merret hyrje si rrënjë - - - - dccV23::CreateAccountPage - - Group - Grup - - - Cancel - Anuloje - - - Create - Krijoje - - - New User - Përdorues i Ri - - - User Type - Lloj Përdoruesi - - - Username - Emër përdoruesi - - - Full Name - Emër i Plotë - - - Password - Fjalëkalim - - - Repeat Password - Rijepeni Fjalëkalimin - - - Password Hint - Ndihmëz Fjalëkalimi - - - The full name is too long - Emri i plotë është shumë i gjatë - - - Passwords do not match - Fjalëkalimet nuk përputhen - - - Standard User - Përdorues Standard - - - Administrator - Përgjegjës - - - Customized - E përshtatur - - - Required - E domosdoshme - - - optional - opsionale - - - The hint is visible to all users. Do not include the password here. - Ndihmëza do të jetë e dukshme për krejt përdoruesit. Mos përfshini fjalëkalimin këtu. - - - Policykit authentication failed - Mirëfilltësimi me Policykit dështoi - - - Username must be between 3 and 32 characters - Emri i përdoruesit duhet të jetë mes 3 dhe 32 shenja i gjatë - - - The first character must be a letter or number - Shenja e parë duhet të jetë shkronjë, ose numër - - - Your username should not only have numbers - Emri juaj i përdoruesit s’duhet të ketë vetëm numra - - - The username has been used by other user accounts - Emri i përdoruesi është përdorur nga llogari të tjera përdoruesish - - - The full name has been used by other user accounts - Emri i plotë është përdorur nga llogari të tjera përdoruesi - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - S’keni ngarkuar foto, mund të klikoni, ose të tërhiqni një figurë, për ta ngarkuar - - - Uploaded file type is incorrect, please upload again - Lloji i kartelës së ngarkuar është i pasaktë, ju lutemi, ringarkojeni - - - Images - Figura - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Shtoni Shkurtore Vetjake - - - Name - Emër - - - Required - E domosdoshme - - - Command - Urdhër - - - Cancel - Anuloje - - - Add - Shtoni - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Kjo shkurtore ka përplasje me %1, klikoni mbi “Shtoje”, për ta bërë këtë shkurtore të hyjë në fuqi menjëherë - - - - dccV23::CustomEdit - - Required - E dmosdoshme - - - Cancel - Anuloje - - - Save - Ruaje - - - Shortcut - Shkurtore - - - Name - Emër - - - Command - Urdhër - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Kjo shkurtore ka përplasje me %1, klikoni mbi “Shtoje”, për ta bërë këtë shkurtore të hyjë në fuqi menjëherë - - - - dccV23::CustomItem - - Shortcut - Shkurtore - - - Please enter a shortcut - Ju lutemi, jepni një shkurtore - - - - dccV23::CustomRegionFormatDialog - - Custom format - Format vetjak - - - First day of week - Dita e parë e javës - - - Short date - Datë e shkurtër - - - Long date - Datë e gjatë - - - Short time - Kohë e shkurtër - - - Long time - Kohë e gjatë - - - Currency symbol - Simbol monedhe - - - Numbers - Numra - - - Paper - Letër - - - Cancel - Anuloje - - - Save - Ruaje - - - - dccV23::DetailInfoItem - - For more details, visit: - Për më tepër hollësi, vizitoni: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Kërko Hyrje Si Rrënjë - - - Online - Në linjë - - - Offline - Jo në linjë - - - Please sign in to your Union ID first and continue - Ju lutemi, së pari hyni te ID Union juaj dhe vazhdoni - - - Next - Pasuesi - - - Export PC Info - Eksporto Hollësi PC-je - - - Import Certificate - Importoni Dëshmi - - - 1. Export your PC information - 1. Eksportoni hollësi të PC-së tuaj - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Shkoni te https://www.chinauos.com/developMode që të shkarkoni një dëshmi <em>offline</em> - - - 3. Import the certificate - 3. Importoni dëshminë - - - - dccV23::DeveloperModeWidget - - Request Root Access - Kërko Hyrje Si Rrënjë - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Mënyra zhvillues ju lejon të merrni privilegje rrënje, të instaloni dhe xhironi aplikacione të panënshkruar që s’gjenden te shitore aplikacionesh, por gjithashtu mund të dëmtohet integriteti i sistemit tuaj, ju lutemi, përdoreni me kujdes. - - - The feature is not available at present, please activate your system first - Veçoria s’është e passhme tani, ju lutemi, së pari aktivizoni sistemin tuaj - - - Failed to get root access - S’u arrit të hyhej si rrënjë - - - Please sign in to your Union ID first - Ju lutemi, së pari hyni te ID Union juaj - - - Cannot read your PC information - S’lexohen dot hollësi mbi PC-në tuaj - - - No network connection - S’ka lidhje rrjeti - - - Certificate loading failed, unable to get root access - Ngarkimi i dëshmisë dështoi, s’arrihet të merret hyrje si rrënjë - - - Signature verification failed, unable to get root access - Verifikimi i nënshkrimit dështoi, s’arrihet të merret hyrje si rrënjë - - - To make some features effective, a restart is required. Restart now? - Për t’i vënë në fuqi disa veçori, lypset rinisje. Të bëhet rinisje tani? - - - Cancel - Anuloje - - - Restart Now - Rinise Tani - - - Root Access Allowed - Hyrje Si Rrënjë e Lejuar - - - - dccV23::DisplayPlugin - - Display - Shfaqe - - - Light, resolution, scaling and etc - Ndriçim, qartësi, ripërmasim, etj - - - - dccV23::DouTestWidget - - Double-click Test - Provoni Dyklikimin - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Rregullime Tastiere - - - Repeat Delay - Vonesë Përsëritjesh - - - Short - E shkurtër - - - Long - E gjatë - - - Repeat Rate - Shpejtësi Përsëritjesh - - - Slow - Ngadalë - - - Fast - Shpejt - - - Test here - Provojeni këtu - - - Numeric Keypad - Pjesa Numerike - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - Mëngjarash - - - Disable touchpad while typing - Çaktivizoje touchpad-in teksa shtypet - - - Scrolling Speed - Shpejtësi Rrëshqitjeje - - - Double-click Speed - Shpejtësi Dyklikimi - - - Slow - Ngadalë - - - Fast - Shpejt - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Skemë Tastiere - - - Edit - Përpunoni - - - Add Keyboard Layout - Shtoni Skemë Tastiere - - - Done - U bë - - - - dccV23::KeyboardLayoutDialog - - Cancel - Anuloje - - - Add - Shtoni - - - Add Keyboard Layout - Shtoni Skemë Tastiere - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tastierë dhe Gjuhë - - - Keyboard - Tastierë - - - Keyboard Settings - Rregullime Tastiere - - - keyboard Layout - Skemë tastiere - - - Keyboard Layout - Skemë Tastiere - - - Language - Gjuhë - - - Shortcuts - Shkurtore - - - - dccV23::MainWindow - - Help - Ndihmë - - - - dccV23::ModifyPasswdPage - - Change Password - Ndryshoni Fjalëkalimin - - - Reset Password - Ricaktoni Fjalëkalimin - - - Resetting the password will clear the data stored in the keyring. - Ricaktimi i fjalëkalimit do të spastrojë të dhënat e depozituara te vargu i kyçeve. - - - Current Password - Fjalëkalimi i Tanishëm - - - Forgot password? - Harruat fjalëkalimin? - - - New Password - Fjalëkalimi i Ri - - - Repeat Password - Rijepeni Fjalëkalimin - - - Password Hint - Ndihmëz Fjalëkalimi - - - Cancel - Anuloje - - - Save - Ruaje - - - Passwords do not match - Fjalëkalimet nuk përputhen - - - Required - E domosdoshme - - - Optional - Opsional - - - Password cannot be empty - Fjalëkalimi s’mund të jetë i zbrazët - - - The hint is visible to all users. Do not include the password here. - Ndihmëza do të jetë e dukshme për krejt përdoruesit. Mos përfshini fjalëkalimin këtu. - - - Wrong password - Fjalëkalim i gabuar - - - New password should differ from the current one - Fjalëkalimi i ri duhet të jetë i ndryshëm nga ai i tanishmi - - - System error - Gabim sistemi - - - Network error - Gabim rrjeti - - - - dccV23::MonitorControlWidget - - Identify - Bashkëpunim Në Shumë Ekranë - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - Risistemimi i ekranit do të hyjë në fuqi pas %1s pas ndryshimeve - - - - dccV23::MousePlugin - - Mouse - Mi - - - General - Të Përgjithshme - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Shpejtësi Kursori - - - Mouse Acceleration - Përshpejtim Miu - - - Disable touchpad when a mouse is connected - Çaktivizoje touchpad-in, kur lidhet një mi - - - Natural Scrolling - Rrëshqitje Natyrale - - - Slow - Ngadalë - - - Fast - Shpejt - - - - dccV23::MultiScreenWidget - - Multiple Displays - Disa Ekrane - /display/Multiple Displays - - - Mode - Mënyrë - /display/Mode - - - Main Screen - Ekrani Kryesor - /display/Main Scree - - - Duplicate - Përsëdyte - - - Extend - Zgjeroje - - - Only on %1 - Vetëm në %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Njoftim - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Pikasje Shpute - - - Minimum Contact Surface - Sipërfaqe Kontakti Minimum - - - Minimum Pressure Value - Vlerë Trysnie Minimum - - - Disable the option if touchpad doesn't work after enabled - Nëse touchpad-i, pas aktivizimit s’funksionon, çaktivizojeni mundësinë - - - - dccV23::PluginManager - - following plugins load failed - dështoi ngarkimi për shtojcat vijuese - - - plugins cannot loaded in time - shtojcat s’mund të ngarkohen brenda kohës - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Rregulla Privatësie - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Jemi thellësisht të ndërgjegjshëm për rëndësinë e të dhënave personale për ju. Ndaj kemi Rregullat e Privatësisë që mbulojnë si i grumbullojmë, përdorim, japim, shpërngulim, i tregojmë publikisht dhe depozitojmë të dhënat tuaja.</p><p>Që të shihni rregullat tona më të reja për privatësinë, mund të <a href="%1">klikoni këtu</a> dhe/ose shihini në internet, duke vizituar <a href="%1"> %1</a>. Ju lutemi, lexojini me kujdes dhe kuptojini plotësisht praktikat tona për privatësinë e klientëve. Nëse keni çfarëdo pyetje, ju lutemi, lidhuni me ne te: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Fjalëkalimi s’mund të jetë i zbrazët - - - Password must have at least %1 characters - Fjalëkalimi duhet të ketë të paktën %1 shenja - - - Password must be no more than %1 characters - Fjalëkalimi s’duhet të jetë më i madh se %1 shenja - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Fjalëkalimi mund të përmbajë vetëm shkronja anglisht (bëhet dallimi mes shkrimit me të mëdha dhe të vogla), numra ose simbole speciale (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Ju lutemi, jo më shumë se %1 shenja palindromike - - - No more than %1 monotonic characters please - Ju lutemi, jo më shumë se %1 shenja monotonike - - - No more than %1 repeating characters please - Ju lutemi, jo më shumë se %1 shenja të përsëritura - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Fjalëkalimi duhet të përmbajë vetëm shkronja të mëdha, shkronja të vogla, numra dhe simbole (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Fjalëkalimi s’duhet të përmbajë më shumë se 4 shenja palindromike - - - Do not use common words and combinations as password - Mos përdorni si fjalëkalim fjalë dhe kombinime të zakonshme - - - Create a strong password please - Ju lutemi, krijoni një fjalëkalim të fortë - - - It does not meet password rules - S’plotëson rregullat për fjalëkalime - - - - dccV23::RefreshRateWidget - - Refresh Rate - Shpejtësi Rifreskimi - - - Hz - Hz - - - Recommended - E rekomanduar - - - - dccV23::RegionFormatDialog - - Region format - Format rajonesh - - - Default format - Format parazgjedhje - - - First of day - Dita e parë - - - Short date - Datë e shkurtër - - - Long date - Datë e gjatë - - - Short time - Kohë e shkurtër - - - Long time - Kohë e gjatë - - - Currency symbol - Simbol monedhe - - - Numbers - Numra - - - Paper - Letër - - - Cancel - Anuloje - - - Save - Ruaje - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Jeni i sigurt se doni të fshihet kjo llogari? - - - Delete account directory - Fshi drejtorinë e llogarisë - - - Cancel - Anuloje - - - Delete - Fshije - - - - dccV23::ResolutionWidget - - Resolution - Qartësi - /display/Resolution - - - Resize Desktop - Ripërmasoni Desktopin - /display/Resize Desktop - - - Default - Parazgjedhje - - - Fit - Sa Ta Nxërë - - - Stretch - Shformoje - - - Center - Në qendër - - - Recommended - Rekomanduar - - - - dccV23::RotateWidget - - Rotation - Rrotullim - /display/Rotation - - - Standard - Standard - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Monitori mbulon vetëm ripërmasim 100% të ekranit - - - Display Scaling - Ripërmasim Ekrani - - - - dccV23::SearchInput - - Search - Kërko - - - - dccV23::SecondaryScreenDialog - - Brightness - Ndriçim - - - - dccV23::SecurityLevelItem - - Weak - I dobët - - - Medium - Mesatar - - - Strong - I fortë - - - - dccV23::SecurityQuestionsPage - - Security Questions - Pyetje Sigurie - - - These questions will be used to help reset your password in case you forget it. - Këto pyetje do të përdoren për t’ju ndihmuar të ricaktoni fjalëkalimin tuaj, në rast se e harroni. - - - Security question 1 - Pyetje sigurie 1 - - - Security question 2 - Pyetje sigurie 2 - - - Security question 3 - Pyetje sigurie 3 - - - Cancel - Anuloje - - - Confirm - Ripohojeni - - - Keep the answer under 30 characters - Përgjigjen mbajeni nën 30 shenja - - - Do not choose a duplicate question please - Ju lutemi, mos zgjidhni një pyetje të përsëdytur - - - Please select a question - Ju lutemi, përzgjidhni një pyetje - - - What's the name of the city where you were born? - Cili është emri i qytetit ku lindët? - - - What's the name of the first school you attended? - Cili është emri i shkollës së parë që ndoqët? - - - Who do you love the most in this world? - Kë doni më shumë në këtë botë? - - - What's your favorite animal? - Cila është kafsha juaj e parapëlqyer? - - - What's your favorite song? - Cila është kënga juaj e parapëlqyer? - - - What's your nickname? - Cila është nofka juaj? - - - It cannot be empty - S’mund të jetë e zbrazët - - - - dccV23::SettingsHead - - Edit - Përpunojeni - - - Done - U bë - - - - dccV23::ShortCutSettingWidget - - System - Sistem - - - Window - Dritare - - - Workspace - Hapësirë pune - - - Assistive Tools - Mjete Ndihmuese - - - Custom Shortcut - Shkurtore Vetjake - - - Restore Defaults - Rikthe Parazgjedhjet - - - Shortcut - Shkurtore - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Ju lutemi, Riujdisni Shkurtore - - - Cancel - Anuloje - - - Replace - Zëvendësoje - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Kjo shkurtore ka përplasje me %1, klikoni mbi “Zëvendësoje” për ta bërë këtë shkurtore të hyjë në fuqi menjëherë - - - - dccV23::ShortcutItem - - Enter a new shortcut - Jepni shkurtore të re - - - - dccV23::SystemInfoModel - - available - i passhëm - - - - dccV23::SystemInfoModule - - About This PC - Mbi Këtë PC - - - Computer Name - Emër Kompjuteri - - - systemInfo - - - - OS Name - Emër OS-i - - - Version - Version - - - Edition - Edicion - - - Type - Lloj - - - Authorization - Autorizim - - - Processor - Procesor - - - Memory - Kujtesë - - - Graphics Platform - Platformë Grafike - - - Kernel - Kernel - - - Agreements and Privacy Policy - Marrëveshje dhe Rregulla Privatësie - - - Edition License - Licencë Edicioni - - - End User License Agreement - Marrëveshje Licence Përdoruesi (EULA) - - - Privacy Policy - Rregulla Privatësie - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Hollësi Sistemi - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Anuloje - - - Add - Shtoni - - - Add System Language - Shtoni Gjuhë Sistemi - - - - dccV23::SystemLanguageWidget - - Edit - Përpunoni - - - Language List - Listë Gjuhësh - - - Add Language - Shtoni Gjuhë - - - Done - U bë - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Mos Më Bezdisni - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Njoftimet e aplikacioneve s’do të shfaqen në desktop dhe tingujt do të heshtohen, por mund të shihni krejt mesazhet te qendra e njoftimeve. - - - When the screen is locked - Kur ekrani është i kyçur - - - - dccV23::TimeSlotItem - - From - Nga - - - To - Për - - - - dccV23::TouchScreenModule - - Touch Screen - Ekran Me Prekje - - - Select your touch screen when connected or set it here. - Përzgjidheni ekranin tuaj me prekje, kur lidhet një i tillë, ose caktojeni këtu. - - - Confirm - Ripohojeni - - - Cancel - Anuloje - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Shpejtësi Kursori - - - Enable TouchPad - Aktivizo Touchpad-in - - - Tap to Click - Për Klikim, prekeni - - - Natural Scrolling - Rrëshqitje e Natyrshme - - - Slow - Ngadalë - - - Fast - Shpejt - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Shpejtësi Kursori - - - Slow - Ngadalë - - - Fast - Shpejt - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Merrni Pjesë Te programi “User Experience Program” - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Pjesëmarrja te programi “User Experience Program” do të thotë se na akordoni leje dhe autorizoni grumbullimin dhe përdorimin e hollësive mbi pajisjen, sistemin dhe aplikacionet tuaja. Nëse refuzoni grumbullimin dhe përdorimin e hollësive të përmendura më sipër, mos merrni pjesë te “User Experience Program”. Për hollësi, ju lutemi, referojuni Rregullave të Privatësisë për Deepin (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Pjesëmarrja te programi “User Experience Program” do të thotë se na akordoni leje dhe autorizoni grumbullimin dhe përdorimin e hollësive mbi pajisjen, sistemin dhe aplikacionet tuaja. Nëse refuzoni grumbullimin dhe përdorimin nga ne të hollësive të përmendura më sipër, mos merrni pjesë te “User Experience Program”. Për të ditur më tepër rreth administrimit të të dhënave tuaja, ju lutemi, referojuni Rregullave të Privatësisë për UnionTech OS (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Vit - - - Month - Muaj - - - Day - Ditë - - - - DatetimeModule - - Time and Format - Kohë dhe Format - - - - DatetimeWorker - - Authentication is required to change NTP server - Që të ndryshoni shërbyes NTP, lypset mirëfilltësim - - - - DefAppModule - - Default Applications - Aplikacione Parazgjedhje - - - - DefAppPlugin - - Webpage - Sajt - - - Mail - Postë - - - Text - Tekst - - - Music - Muzikë - - - Video - Video - - - Picture - Foto - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - Klauzolë - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Para se të përdorni njohje fytyrash, ju lutemi, kini parasysh se: -1. Pajisja juaj mund të shkyçet nga persona ose objekte që duken ose shfaqen të ngjashëm me ju. -2. Njohja e fytyrave është më pak e sigurt se sa fjalëkalimet dixhitale dhe fjalëkalimet e përziera. -3. Shkalla e suksesit në shkyçjen e pajisjes tuaj përmes njohjes së fytyrave do të ulet në rast ndriçimi të ulët, ndriçimi të lartë, ndriçimi nga pas, vendosje nën kënde të mëdhenj dhe raste të tjera. -4. Ju lutemi, mos ua jepni pajisjen tuaj të tjerëve ku të jetë, që të shmangni përdorim dashakeq të njohjes së fytyrave. -5. Përtej rasteve më sipër, duhet të bëni kujdes në situata të tjera që mund të kenë ndikim në përdorimin normak të njohjes së fytyrave. - -Me qëllim përdorimin më të mirë të njohjes së fytyrave, ju lutemi, bëni kujdes të ndiqni sa vijon, kur jepen të dhëna fytyre: -1. Ju lutemi, qëndroni në një mjedis të ndriçuar mirë, shmangni dritën e drejtpërdrejtë të diellit dhe persona të tjerë që shfaqen në ekranin që po regjistrohet. -2. Ju lutemi, bëni kujdes te fytyra, kur jepen të dhëna, dhe mos lini kapele, flokë, syze dielli, maska, grim të rëndë dhe faktorë të tjerë të mbulojnë fytyrën tuaj. -3. Ju lutemi, shmangni animin ose uljen e kokës, mbylljen e syve, ose shfaqjen vetëm të njërës anë të fytyrës tuaj dhe garantoni që pjesa ballore e fytyrës të shfaqet qartë dhe plotësisht te kuadrati i regjistrimit. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - “Mirëfilltësimi biometrik” është një funksion për mirëfilltësim identiteti përdoruesi, i furnizuar nga UnionTech Software Technology Co., Ltd. Përmes “mirëfilltësimit biometrik”, të dhënat biometrike të grumbulluara do të krahasohen me ato të depozituara te pajisja dhe identiteti i përdoruesit do të verifikohet bazuar në përfundimin e dalë nga krahasimi. -Ju lutemi, mbani parasysh se UnionTech Software s’do të grumbullojë ose hyjë në të dhënat tuaja biometrike, të cilat do të depozitohen në pajisjen tuaj vendore. Ju lutemi, mirëfilltësimin biometrik aktivizojeni vetëm te pajisja juaj personale dhe përdorini të dhënat tuaja biometrike për veprime përkatëse dhe çaktivizojeni menjëherë ose fshini të dhëna biometrike personash të tjerë në atë pajisje, përndryshe jeni përgjegjës për rrezikun e lindur prej kësaj. -UnionTech Software është i përkushtuar kërkimeve dhe të përmirësimit të sigurisë, përpikërisë dhe qëndrueshmërisë së mirëfilltësimit biometrik. Sidoqoftë, për shkak faktorësh mjedisorë, pajisjesh, teknikë dhe të tjerë, si dhe kontroll rreziqesh, s’ka garanci se do ta kaloni mirëfilltësimin biometrik me sukses. Ndaj, ju lutemi, mos e mbani mirëfilltësimin biometrik si të vetmen mënyrë për bërjen e hyrjes në UnionTech OS. Nëse keni ndonjë pyetje apo sugjerim lidhur me përdorimin e mirëfilltësimit biometrik, mund të na i jepni përmes “Shërbim dhe Asistencë” te UnionTech OS. - - - Cancel - Anuloje - - - Next - Pasuesi - - - - DisclaimersItem - - I have read and agree to the - E kam lexuar dhe pajtohem me - - - Disclaimer - Klauzolë - - - - DockModuleObject - - Dock - Panel - - - Multiple Displays - Disa Ekrane - - - Show Dock - Shfaq Panel - - - Mode - Mënyrë - - - Position - Vendndodhje - - - Status - Gjendje - - - Show recent apps in Dock - Shfaq në Panel aplikacione të përdorur së fundi - - - Size - Madhësi - - - Plugin Area - Zonë Shtojcash - - - Select which icons appear in the Dock - Përzgjidhni cilat ikona shfaqen te Paneli - - - Fashion mode - Mënyra modë - - - Efficient mode - Mënyra efikase - - - Top - Në Krye - - - Bottom - Në Fund - - - Left - Majtas - - - Right - Djathtas - - - Location - Vendndodhje - - - Keep shown - Mbaje të shfaqur - - - Keep hidden - Mbaje të fshehur - - - Smart hide - Fshehje e Mençur - - - Small - I vogël - - - Large - I madh - - - On screen where the cursor is - Në ekranin ku gjendet kursori - - - Only on main screen - Vetëm te ekrani kryesor - - - - FaceInfoDialog - - Enroll Face - Jepni Fytyrë - - - Position your face inside the frame - Vendoseni fytyrën tuaj brenda kornizës - - - - FaceWidget - - Edit - Përpunoni - - - Manage Faces - Administroni Fytyra - - - You can add up to 5 faces - Mund të shtoni deri në 5 fytyra - - - Done - U bë - - - Add Face - Shtoni Fytyrë - - - The name already exists - Emri ekziston tashmë - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - S’u gjetën pajisje të mbuluara - - - - FingerDetailWidget - - No supported devices found - S’u gjetën pajisje të mbuluara - - - - FingerDisclaimer - - Add Fingerprint - Shtoni Shenja Gishtash - - - Cancel - Anuloje - - - Next - Pasuesi - - - - FingerInfoWidget - - Place your finger - Vendosni gishtin tuaj - - - Place your finger firmly on the sensor until you're asked to lift it - Vendoseni gishtin tuaj te ndijuesi pa e lëvizur, deri sa t’ju kërkohet ta hiqni - - - Scan the edges of your fingerprint - Skanoni skajet e shenjës tuaj të gishtit - - - Place the edges of your fingerprint on the sensor - Vendosni te ndijuesi skajet e mollëzës së gishtit tuaj - - - Lift your finger - Hiqeni gishtin - - - Lift your finger and place it on the sensor again - Ngrijeni gishtin dhe rivendoseni te ndijuesi - - - Adjust the position to scan the edges of your fingerprint - Rregullojeni pozicionin që të skanohen skajet e shenjës së gishtit tuaj - - - Lift your finger and do that again - Ngrijeni gishtin dhe ribëjeni - - - Fingerprint added - U shtuan shenja gishtash - - - - FingerWidget - - Edit - Përpunoni - - - Fingerprint Password - Fjalëkalim Shenjash Gishtash - - - You can add up to 10 fingerprints - Mund të shtoni deri në 10 shenja gishtash - - - Done - U bë - - - The name already exists - Emri ekziston tashmë - - - Add Fingerprint - Shtoni Shenja Gishtash - - - - GeneralModule - - General - Të Përgjithshme - - - Balanced - E drejtpeshuar - - - Balance Performance - Baraspesho Funksionimin - - - High Performance - - - - Power Saver - Kursyes Energjie - - - Power Plans - Plane Energjie - - - Power Saving Settings - Rregullime Kursimi Energjie - - - Auto power saving on low battery - Kursim i automatizuar energjie, kur bateria është e pakët - - - Decrease Brightness - Ule Ndriçimin - - - Low battery threshold - Kufi baterie të pakët - - - Auto power saving on battery - Kursim i automatizuar energjie, kur është nën bateri - - - Wakeup Settings - Rregullime Zgjimi - - - Unlocking is required to wake up the computer - Që të zgjohet kompjuteri, është e domosdoshme shkyçja - - - Unlocking is required to wake up the monitor - Që të zgjohet monitori, është e domosdoshme shkyçja - - - - HostNameItem - - It cannot start or end with dashes - S’mund të fillojë, ose përfundojë me vija ndarëse në mes - - - 1~63 characters please - Ju lutemi, 1~63 shenja - - - - InternalButtonItem - - Internal testing channel - Kanal i brendshëm testimesh - - - click here open the link - që të hapet lidhja, klikoni këtu - - - - IrisDetailWidget - - No supported devices found - S’u gjetën pajisje të mbuluara - - - - IrisWidget - - Edit - Përpunoni - - - Manage Irises - Administroni Bebe Sysh - - - You can add up to 5 irises - Mund të shtoni deri në 5 bebe sysh - - - Done - U bë - - - Add Iris - Shtoni Bebe Sysh - - - The name already exists - Emri ekziston tashmë - - - Iris - Bebe Syri - - - - KeyLabel - - None - Asnjë - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Të drejta kopjimi© 2011-%1 Bashkësia Deepin - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Të drejta kopjimi© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Pajisje Në Hyrje - - - Automatic Noise Suppression - Mbytje e Automatizuar Zhurmash - - - Input Volume - Volum Në Hyrje - - - Input Level - Nivel Në Hyrje - - - - PersonalizationDesktopModule - - Desktop - Desktop - - - Window - Dritare - - - Window Effect - Efekt Dritaresh - - - Window Minimize Effect - Efekt Minimizimi Dritaresh - - - Transparency - Tejdukshmëri - - - Rounded Corner - Cep i Rrumbullakosur - - - Scale - Ripërmasojeni - - - Magic Lamp - Llambë Magjike - - - Small - I vogël - - - Middle - Mesatar - - - Large - I madh - - - - PersonalizationModule - - Personalization - Personalizim - - - - PersonalizationThemeList - - Cancel - Anuloje - - - Save - Ruaje - - - Light - E çelët - - - Dark - E errët - - - Auto - Auto - - - Default - Parazgjedhje - - - - PersonalizationThemeModule - - Theme - Temë - - - Appearance - Dukje - - - Accent Color - Ngjyrë Theksimi - - - Icon Settings - Rregullime Ikonash - - - Icon Theme - Temë Ikonash - - - Cursor Theme - Temë Kursori - - - Text Settings - Rregullime Teksti - - - Font Size - Madhësi Gërmash - - - Standard Font - Shkronja Standarde - - - Monospaced Font - Shkronja Monospace - - - Light - E çelët - - - Auto - Auto - - - Dark - E errët - - - - PersonalizationThemeWidget - - Light - E çelët - General - /personalization/General - - - Dark - E errët - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Parazgjedhje - - - - PersonalizationWorker - - Custom - Vetjake - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN-i për lidhje me pajisjen Bluetooth është: - - - Cancel - Anulojeni - - - Confirm - Ripohojeni - - - - PowerModule - - Power - Energji - - - Battery low, please plug in - Bateri e pakët, ju lutemi, vëreni në prizë - - - Battery critically low - Bateri e pakët në nivel kritik - - - - PrivacyModule - - Privacy and Security - Privatësi dhe Siguri - - - - PrivacySecurityModel - - Camera - Kamerë - - - Microphone - Mikrofon - - - User Folders - Dosje Përdoruesi - - - Calendar - Kalendar - - - Screen Capture - Regjistrim Ekrani - - - - QObject - - Control Center - Qendër Kontrolli - - - , - , - - - Error occurred when reading the configuration files of password rules! - Ndodhi një gabim teksa lexoheshin kartelat e formësimit të rregullave të fjalëkalimit! - - - Auto adjust CPU operating frequency based on CPU load condition - Rregullo automatikisht frekuencën e punës së CPU-së bazuar në kushte ngarkese të CPU-së - - - Aggressively adjust CPU operating frequency based on CPU load condition - Rregullo në mënyrë agresive frekuencën e punës së CPU-së bazuar në kushte ngarkese të CPU-së - - - Be good to imporving performance, but power consumption and heat generation will increase - Sillu mirë me përmirësimin e funksionimit, por do të shtohen harxhimi i energjisë dhe prodhimi i nxehtësisë - - - CPU always works under low frequency, will reduce power consumption - CPU-ja funksionon përherë nën frekuencë të ulët, do të ulet harxhimi i energjisë - - - Activated - E aktivizuar - - - View - Shiheni - - - To be activated - Për t’u aktivizuar - - - Activate - Aktivizoje - - - Expired - Ka skaduar - - - In trial period - Në periudhë prove - - - Trial expired - Prova skadoi - - - Touch Screen Settings - Rregullime Ekrani Me Prekje - - - The settings of touch screen changed - Rregullimet për ekranin me prekje u ndryshuan - - - Checking system versions, please wait... - Po kontrollohen versione sistemi, ju lutemi, pritni… - - - Leave - Braktise - - - Cancel - Anuloje - - - - RegionModule - - Region and format - Rajon dhe format - - - Country or Region - Rajon - - - Format - Format - - - Provide localized services based on your region. - Jepni shërbime të lokalizuara, bazuar në rajonin tuaj. - - - Select matching date and time formats based on language and region - Përzgjidhni formate datash dhe kohe bazuar në gjuhë dhe rajon - - - Region format - Gjuhë dhe rajon - - - First day of week - Dita e parë e javës - - - Short date - Datë e shkurtër - - - Long date - Datë e gjatë - - - Short time - Kohë e shkurtër - - - Long time - Kohë e gjatë - - - Currency symbol - Simbol monedhe - - - Numbers - Numra - - - Paper - Letër - - - Custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Sistemi juaj s’është i autorizuar, ju lutemi, së pari aktivizojeni - - - Update successful - Përditësim i suksesshëm - - - Failed to update - S’u përditësua dot - - - - SearchInput - - Search - Kërkim - - - - ServiceSettingsModule - - Apps can access your camera: - Aplikacionet mund të përdorin kamerën tuaj: - - - Apps can access your microphone: - Aplikacionet mund të përdorin mikrofonin tuaj: - - - Apps can access user folders: - Aplikacionet mund të përdorin dosje përdoruesish: - - - Apps can access Calendar: - Aplikacionet mund të përdorin Kalendarin: - - - Apps can access Screen Capture: - Aplikacionet mund të përdorin Regjistrim Ekrani: - - - No apps requested access to the camera - S’ka aplikacion që ka kërkuar përdorimin e kamerës - - - No apps requested access to the microphone - S’ka aplikacion që ka kërkuar përdorimin e mikrofonit - - - No apps requested access to user folders - S’ka aplikacion që ka kërkuar përdorimin e dosjeve të përdoruesit - - - No apps requested access to Calendar - S’ka aplikacion që ka kërkuar përdorimin e Kalendarit - - - No apps requested access to Screen Capture - S’ka aplikacion që ka kërkuar përdorimin e Regjistrimit të Ekranit - - - - SoundEffectsPage - - Sound Effects - Efekte Zanore - - - - SoundModel - - Boot up - Nisu - - - Shut down - Fike - - - Log out - Dalje - - - Wake up - Zgjohu - - - Volume +/- - Volum +/- - - - Notification - Njoftim - - - Low battery - Bateri e pakët - - - Send icon in Launcher to Desktop - Dërgoje ikonën te Nisës në Desktop - - - Empty Trash - Zbraz Hedhurinat - - - Plug in - Fute - - - Plug out - Nxirre - - - Removable device connected - U lidh pajisje e heqshme - - - Removable device removed - U hoq pajisje e heqshme - - - Error - Gabim - - - - SoundModule - - Sound - Tingull - - - - SoundPlugin - - Output - Në Dalje - - - Auto pause - Pauzë e automatizuar - - - Whether the audio will be automatically paused when the current audio device is unplugged - Nëse do të ndalet apo jo automatikisht audioja, kur hiqet pajisja audio e çastit - - - Input - Në Hyrje - - - Sound Effects - Efekte Zanore - - - Devices - Pajisje - - - Input Devices - Pajisje Në Hyrje - - - Output Devices - Pajisje Në Dalje - - - - SpeakerPage - - Output Device - Pajisje Në Dalje - - - Mode - Mënyrë - - - Output Volume - Volum Në Dalje - - - Volume Boost - Përforcim Volumi - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Nëse volumi është më i fortë se 100%, mund të shformohen tingujt dhe të jetë e dëmshme për altoparlantët tuaj - - - Left/Right Balance - Balancë Majtas/Djathtas - - - Left - Majtas - - - Right - Djathtas - - - - TimeSettingModule - - Time Settings - Rregullime Kohe - - - Time - Kohë - - - Auto Sync - Vetë-njëkohësohu - - - Reset - Riktheje te parazgjedhja - - - Save - Ruaje - - - Server - Shërbyes - - - Address - Adresë - - - Required - E domosdoshme - - - Customize - Përshtateni - - - Year - Vit - - - Month - Muaj - - - Day - Ditë - - - - TimeZoneChooser - - Cancel - Anuloje - - - Confirm - Ripohojeni - - - Add Timezone - Shtoni Zonë Kohore - - - Add - Shtoni - - - Change Timezone - Ndryshoni Zonë Kohore - - - - TimeoutDialog - - Save the display settings? - Të ruhen rregullimet për ekranin? - - - Settings will be reverted in %1s. - Rregullimet do të kthehen te %1s. - - - Revert - Riktheji - - - Save - Ruaje - - - - TimezoneItem - - Tomorrow - Nesër - - - Yesterday - Dje - - - Today - Sot - - - %1 hours earlier than local - %1 orë më herët se sa vendorja - - - %1 hours later than local - %1 orë më vonë se sa vendorja - - - - TimezoneModule - - Timezone List - Listë Zonash Kohore - - - System Timezone - Zonë Kohore Sistemi - - - Add Timezone - Shtoni Zonë Kohore - - - - TreeCombox - - Collaboration Settings - Rregullime Bashkëpunimi - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Llogaria e përdoruesit s’është e lidhur me Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Që të ricaktoni fjalëkalime, duhet së pari të bëni mirëfilltësimin e ID-së tuaj Union. Që të përfundohet ujdisja, klikoni mbi “Kalo te Lidhje”. - - - Cancel - Anuloje - - - Go to Link - Kalo te Lidhja - - - - UnknownUpdateItem - - Release date: - Datë hedhjeje në qarkullim: - - - - UpdateCtrlWidget - - Check Again - Rikontrollo - - - Update failed: insufficient disk space - Përditësimi dështoi: hapësirë disku e pamjaftueshme - - - Dependency error, failed to detect the updates - Gabim varësish, s’u arrit të zbulohen përditësimet - - - Restart the computer to use the system and the applications properly - Që të përdorni sistemin dhe aplikacionet si duhet, rinisni kompjuterin - - - Network disconnected, please retry after connected - Rrjeti u shkëput, ju lutemi, riprovoni pasi të jetë lidhur - - - Your system is not authorized, please activate first - Sistemi juaj s’është i autorizuar, ju lutemi, së pari aktivizojeni - - - This update may take a long time, please do not shut down or reboot during the process - Ky përditësim mund të zgjasë një kohë të gjatë, ju lutemi, mos e fikni apo rinisni gjatë procesit - - - Updates Available - Ka Përditësime - - - Current Edition - Edicioni i Tanishëm - - - Updating... - Po përditësohet - - - Update All - Përditësoji Krejt - - - Last checking time: - Koha e kontrollit të fundit: - - - Your system is up to date - Sistemi juaj është i përditësuar - - - Check for Updates - Kontrollo për Përditësime - - - Checking for updates, please wait... - Po kontrollohet për përditësime, ju lutemi, pritni… - - - The newest system installed, restart to take effect - U instalua sistemi më i ri, riniseni që të hyjë në fuqi - - - %1% downloaded (Click to pause) - %1% të shkarkuara (Klikoni që të ndalet) - - - %1% downloaded (Click to continue) - %1% të shkarkuara (Klikoni që të vazhdohet) - - - Your battery is lower than 50%, please plug in to continue - Bateria juaj është më pak se 50%, ju lutemi, që të vazhdohet, vëreni në prizë - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Ju lutemi, që të riniset, sigurohuni për energji të mjaftueshme dhe mos e fikni apo të hiqni prizën e makinës tuaj - - - Size - Madhësi - - - - UpdateModule - - Updates - Përditësime - - - - UpdatePlugin - - Check for Updates - Kontrollo për Përditësime - - - - UpdateSettingItem - - Insufficient disk space - Hapësirë disku e pamjaftueshme - - - Update failed: insufficient disk space - Përditësimi dështoi: hapësirë disku e pamjaftueshme - - - Update failed - Përditësimi dështoi - - - Network error - Gabim rrjeti - - - Network error, please check and try again - Gabim rrjeti, ju lutemi, riprovoni - - - Packages error - Gabim paketash - - - Packages error, please try again - Gabim paketash, ju lutemi, riprovoni - - - Dependency error - Gabim varësish - - - Unmet dependencies - Varësi të paplotësuara - - - The newest system installed, restart to take effect - U instalua sistemi më i ri, riniseni që të hyjë në fuqi - - - Waiting - Në pritje - - - Backing up - Po kryhet kopjeruajtje - - - System backup failed - Kopjeruajtja e sistemit dështoi - - - Release date: - Datë hedhjeje në qarkullim: - - - Server - Shërbyes - - - Desktop - Desktop - - - Version - Version - - - - UpdateSettingsModule - - Update Settings - Përditësoni Rregullimet - - - System - Sistem - - - Security Updates Only - Vetëm Përditësime Sigurie - - - Switch it on to only update security vulnerabilities and compatibility issues - Aktivizojeni, që të bëhen përditësime vetëm për cenueshmëri sigurie dhe probleme përputhshmërie - - - Third-party Repositories - Depo Palësh të Treta - - - linglong update - përditësim linglong-u - - - Linglong Package Update - Përditësim Pakete Linglong - - - If there is update for linglong package, system will update it for you - Nëse ka përditësim për paketën linglong, sistemi do të bëjë për ju përditësimin - - - Other settings - Rregullime të tjera - - - Auto Check for Updates - Kontrollo Vetvetiu për Përditësime - - - Auto Download Updates - Përidtësimet Vetëshkarkoji - - - Switch it on to automatically download the updates in wireless or wired network - Aktivizojeni që të shkarkohen automatikisht përditësimet në rrjet me ose pa fill - - - Auto Install Updates - Përditësimet Vetëinstaloji - - - Updates Notification - Njoftim Përditësimesh - - - Clear Package Cache - Spastro Fshehtinë Paketash - - - Updates from Internal Testing Sources - Përditësime prej Burimesh të Brendshme Testimesh - - - internal update - përditësim i brendshëm - - - Join the internal testing channel to get deepin latest updates - Bëhuni pjesë e kanalit të brendshëm të testimeve, që të merrni përditësimet më të reja të deepin-it - - - System Updates - Përditësime Sistemi - - - Security Updates - Përditësime Sigurie - - - Install updates automatically when the download is complete - Instaloji përditësimet automatikisht, kur të jetë plotësuar shkarkimi - - - Install "%1" automatically when the download is complete - Instaloje “%1” automatikisht, kur të jetë plotësuar shkarkimi - - - - UpdateWidget - - Current Edition - Edicioni i Tanishëm - - - - UpdateWorker - - System Updates - Përditësime Sistemi - - - Fixed some known bugs and security vulnerabilities - U ndreqën disa të meta të ditura dhe cenueshmëri sigurie - - - Security Updates - Përditësime Sigurie - - - Third-party Repositories - Depo Palësh të Treta - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Braktisja e kanalit të brendshëm të testimeve tani mund të mos jetë pa rrezik për ju, doni ende ta braktisni? - - - Your are safe to leave the internal testing channel - S’ka rrezik për ju, nëse e braktisni kanalin e brendshëm të testimeve - - - Cannot find machineid - S’gjendet dot machineid - - - Cannot Uninstall package - Nuk Çinstalohet dot paketa - - - Error when exit testingChannel - Gabim kur dilej nga testingChannel - - - try to manually uninstall package - provoni ta çinstaloni paketën dorazi - - - Cannot install package - S’instalohet dot paketa - - - - UseBatteryModule - - On Battery - Nën Bateri - - - Never - Kurrë - - - Shut down - Fike - - - Suspend - Pezulloje - - - Hibernate - Plogështoje - - - Turn off the monitor - Fike monitorin - - - Do nothing - Mos bëj gjë - - - 1 Minute - 1 Minute - - - %1 Minutes - %1 Minutash - - - 1 Hour - 1 Orë - - - Screen and Suspend - Ekran dhe Pezullim - - - Turn off the monitor after - Fike monitorin pas - - - Lock screen after - Kyçe ekranin pas - - - Computer suspends after - Kompjuteri pezullohet pas - - - Computer will suspend after - Kompjuteri do të pezullohet pas - - - When the lid is closed - Kur mbyllet kapaku - - - When the power button is pressed - Kur shtypet butoni i energjisë - - - Low Battery - Bateri e Pakët - - - Low battery notification - Njoftim për bateri të pakët - - - Low battery level - Nivel i ulët baterie - - - Auto suspend battery level - Nivel baterie për pezullim të automatizuar - - - Battery Management - Administrim Baterie - - - Display remaining using and charging time - Shfaq kohën e mbetur për përdorimin dhe atë për ngarkimin - - - Maximum capacity - Kapacitet maksimum - - - Show the shutdown Interface - Shfaq Ndërfaqen e fikjes - - - - UseElectricModule - - Plugged In - Në Prizë - - - 1 Minute - 1 Minute - - - %1 Minutes - %1 Minutash - - - 1 Hour - 1 Orë - - - Never - Kurrë - - - Screen and Suspend - Ekran dhe Pezullim - - - Turn off the monitor after - Fike monitorin pas - - - Lock screen after - Kyçe ekranin pas - - - Computer suspends after - Kompjuteri pezullohet pas - - - When the lid is closed - Kur mbyllet kapaku - - - When the power button is pressed - Kur shtypet butoni i energjisë - - - Shut down - Fike - - - Suspend - Pezulloje - - - Hibernate - Plogështoje - - - Turn off the monitor - Fike monitorin - - - Show the shutdown Interface - Shfaq Ndërfaqen e fikjes - - - Do nothing - Mos bëj gjë - - - - WacomModule - - Drawing Tablet - Tablet Vizatimi - - - Mode - Mënyrë - - - Pressure Sensitivity - Ndjeshmëri Trysnie - - - Pen - Penë - - - Mouse - Mi - - - Light - E çelët - - - Heavy - E fortë - - - - main - - Control Center provides the options for system settings. - Qendra e Kontrollit furnizon mundësitë për rregullime sistemi. - - - - updateControlPanel - - Downloading - Po shkarkohet - - - Waiting - Po pritet - - - Installing - Po instalohet - - - Backing up - Po kryhet kopjeruajtje - - - Download and install - Shkarkojeni dhe instalojeni - - - Learn more - Mësoni më tepër - - - diff --git a/dcc-old/translations/dde-control-center_sr.ts b/dcc-old/translations/dde-control-center_sr.ts deleted file mode 100644 index 59c59ac67a..0000000000 --- a/dcc-old/translations/dde-control-center_sr.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Дозволи осталим блутут уређајима да пронађу овај уређај - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Укључите Блутут да пронађете уређаје у околини (звучници, тастатура, миш) - - - My Devices - Моји уређаји - - - Other Devices - Остали уређаји - - - Show Bluetooth devices without names - Прикажи безимене блутут уређаје - - - Connect - Повежи се - - - Disconnect - Прекини везу - - - Rename - Преименуј - - - Send Files - Пошаљи датотеке - - - Ignore this device - Занемари овај уређај - - - Connecting - Повезивање - - - Disconnecting - Прекидање везе - - - - AddButtonWidget - - Add Application - Додај програм - - - Open Desktop file - Отвори датотеку са радне површине - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Откажи - - - Next - Следеће - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Готово - - - Failed to enroll your face - - - - Try Again - - - - Close - Затвори - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Откажи - - - Next - Следеће - - - Iris enrolled - - - - Done - Готово - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - Не дуже од 15 карактера - - - Use letters, numbers and underscores only, and no more than 15 characters - Употребите само слова, бројеве, доње цртице и не више од 15 карактера - - - Use letters, numbers and underscores only - Употребите само слова, бројеве и доње цртице - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Отисак прста - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Повезани сте - - - Not connected - Нисте повезани - - - - BluetoothModule - - Bluetooth - Блутут - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Отисак прста 1 - - - Fingerprint2 - Отисак прста 2 - - - Fingerprint3 - Отисак прста 3 - - - Fingerprint4 - Отисак прста 4 - - - Fingerprint5 - Отисак прста 5 - - - Fingerprint6 - Отисак прста 6 - - - Fingerprint7 - Отисак прста 7 - - - Fingerprint8 - Отисак прста 8 - - - Fingerprint9 - Отисак прста 9 - - - Fingerprint10 - Отисак прста 10 - - - Scan failed - Неуспешно очитавање - - - The fingerprint already exists - Отисак прста већ постоји - - - Please scan other fingers - Молимо очитајте друге прсте - - - Unknown error - Непозната грешка - - - Scan suspended - Очитавање је обустављено - - - Cannot recognize - Непрепознатљиво - - - Moved too fast - Пребрзо склоњен - - - Finger moved too fast, please do not lift until prompted - Прст је пребрзо склоњен, молимо не подижите до обавештења - - - Unclear fingerprint - Нејасан отисак прста - - - Clean your finger or adjust the finger position, and try again - Очистите прст или прилагодите позицију прста и покушајте поново - - - Already scanned - Већ очитано - - - Adjust the finger position to scan your fingerprint fully - Прилагодите положај прста да очитате цео отисак - - - Finger moved too fast. Please do not lift until prompted - Прст је пребрзо склоњен. Молимо не подижите до обавештења - - - Lift your finger and place it on the sensor again - Склоните прст и поново га прислоните на читач - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Откажи - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Откажи - - - Confirm - button - Потврди - - - - dccV23::AccountSpinBox - - Always - Увек - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Корисничко име - - - Change Password - Промени лозинку - - - Delete User - - - - User Type - - - - Auto Login - Аутоматско пријављивање - - - Login Without Password - Пријава без лозинке - - - Validity Days - Дани важења - - - Group - Група - - - The full name is too long - Пуно име је предугачко - - - Standard User - Стандардни Корисник - - - Administrator - Администратор - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Пуно име - - - Go to Settings - Иди у подешавања - - - Cancel - Откажи - - - OK - У реду - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Ваш домаћин је успешно уклоњен са доменског сервера - - - Your host joins the domain server successfully - Ваш домаћин се успешно придружио доменском серверу - - - Your host failed to leave the domain server - Ваш домаћин није успео да напусти доменски сервер - - - Your host failed to join the domain server - Ваш домаћин није успео да се придружи доменском серверу - - - AD domain settings - АД домен подешавања - - - Password not match - Лозинке се не подударају - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Приказивање обавештења од %1 на радној површини и у обавештајном центру. - - - Play a sound - Пусти звук - - - Show messages on lockscreen - Прикажи поруке на закључаном екрану - - - Show in notification center - Прикажи у обавештајном центру - - - Show message preview - Прикажи претпреглед поруке - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Откажи - - - Save - Сачувај - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Слике - - - - dccV23::BootWidget - - Updating... - Ажурирање... - - - Startup Delay - Одлагање покретања - - - Theme - Тема - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Кликните на ставку у изборнику покретача да буде прва која се покреће. Превуците и убаците слику да промените позадину. - - - Click the option in boot menu to set it as the first boot - Кликните на ставку у изборнику покретача да буде прва која се покреће - - - Switch theme on to view it in boot menu - Укључите тему да се приказује при покретању. - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Промени лозинку - - - Boot Menu - Покретач система - - - Change GRUB password - - - - Username: - Корисничко име: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Неопходно - - - Cancel - button - Откажи - - - Confirm - button - Потврди - - - Password cannot be empty - Лозинка не може бити празна - - - Passwords do not match - Лозинке се не подударају - - - - dccV23::BrightnessWidget - - Brightness - Осветљење - - - Color Temperature - Температура боје - - - Auto Brightness - Аутоматско осветљење - - - Night Shift - Ноћно светло - - - The screen hue will be auto adjusted according to your location - На основу ваше локације нијанса екрана ће се самостално прилагођавати - - - Change Color Temperature - Промени температуру боје - - - Cool - Хладно - - - Warm - Топло - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Моји уређаји - - - Other Devices - Остали уређаји - - - - dccV23::CommonInfoPlugin - - General Settings - Општа подешавања - - - Boot Menu - Покретач система - - - Developer Mode - Режим програмера - - - User Experience Program - Програм корисничког искуства - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Пристани и придружи се програму корисничког искуства - - - The Disclaimer of Developer Mode - Ограђивање од одговорности за Режим програмера - - - Agree and Request Root Access - Пристани и захтевај root приступ - - - Failed to get root access - Неуспешно прибављање root приступа - - - Please sign in to your Union ID first - Прво се пријавите на Уједињени ИД - - - Cannot read your PC information - Не могу да прочитам податке о рачунару - - - No network connection - Нисте повезани са мрежом - - - Certificate loading failed, unable to get root access - Неуспешно учитавање сертификата, није добијен root пркступ - - - Signature verification failed, unable to get root access - Неуспешна верификација потписа, није добијен root пркступ - - - - dccV23::CreateAccountPage - - Group - Група - - - Cancel - Откажи - - - Create - Направи - - - New User - - - - User Type - - - - Username - Корисничко име - - - Full Name - Пуно име - - - Password - Лозинка - - - Repeat Password - Поново унеси - - - Password Hint - - - - The full name is too long - Пуно име је предугачко - - - Passwords do not match - Лозинке се не подударају - - - Standard User - Стандардни Корисник - - - Administrator - Администратор - - - Customized - Прилагођен - - - Required - Неопходно - - - optional - опционо - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - Policykit неуспешна идентификација - - - Username must be between 3 and 32 characters - Корисничко име мора садржати између 3-32 карактера - - - The first character must be a letter or number - Први карактер мора бити слово или број - - - Your username should not only have numbers - Корисничко не би требало да садржи само бројеве - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Слике - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Додајте вашу пречицу - - - Name - Име - - - Required - Неопходно - - - Command - Команда - - - Cancel - Откажи - - - Add - Додај - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ова пречица је у сукобу са %1, кликните на Додај да пречица одмах ступи на снагу - - - - dccV23::CustomEdit - - Required - Неопходно - - - Cancel - Откажи - - - Save - Сачувај - - - Shortcut - Пречица - - - Name - Име - - - Command - Команда - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Ова пречица је у сукобу са %1, кликните на Додај да пречица одмах ступи на снагу - - - - dccV23::CustomItem - - Shortcut - Пречица - - - Please enter a shortcut - Молимо унесите пречицу - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Захтевај root приступ - - - Online - На мрежи - - - Offline - Ван мреже - - - Please sign in to your Union ID first and continue - Прво се пријавите на Уједињени ИД за наставак - - - Next - Следеће - - - Export PC Info - Извези податке о рачунару - - - Import Certificate - Увези сертификат - - - 1. Export your PC information - 1. Извези податке о рачунару - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Иди на https://www.chinauos.com/developMode да преузмеш ванмрежни сертификат - - - 3. Import the certificate - 3. Увези сертификат - - - - dccV23::DeveloperModeWidget - - Request Root Access - Захтевај root приступ - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Режим програмера пружа root привилегије, инсталирање и покретање непроверених програма којих нема у продавници, али интегритет система може бити оштећен. Молимо будите опрезни. - - - The feature is not available at present, please activate your system first - Ова могућност није тренутно достуипна. Прво активирајте систем. - - - Failed to get root access - Неуспешно прибављање root приступа - - - Please sign in to your Union ID first - Прво се пријавите на Уједињени ИД - - - Cannot read your PC information - Не могу да прочитам податке о рачунару - - - No network connection - Нисте повезани са мрежом - - - Certificate loading failed, unable to get root access - Неуспешно учитавање сертификата, није добијен root пркступ - - - Signature verification failed, unable to get root access - Неуспешна верификација потписа, није добијен root пркступ - - - To make some features effective, a restart is required. Restart now? - Потребно је поновно покретање да одређене функције ступе на снагу. Поново покрени сад? - - - Cancel - Откажи - - - Restart Now - Поново покрени сад - - - Root Access Allowed - Root приступ дозвољен - - - - dccV23::DisplayPlugin - - Display - Екран - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Тестирање двоклика - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Одлагање понављања - - - Short - Кратко - - - Long - Дуго - - - Repeat Rate - Брзина понављања - - - Slow - Споро - - - Fast - Брзо - - - Test here - Испробај овде - - - Numeric Keypad - Нумеричка тастатура - - - Caps Lock Prompt - Одзив за Велика Слова - - - - dccV23::GeneralSettingWidget - - Left Hand - Лева рука - - - Disable touchpad while typing - Онемогући додирну таблу док куцам - - - Scrolling Speed - Брзина клизања - - - Double-click Speed - Брзина двоклика - - - Slow - Споро - - - Fast - Брзо - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Распоред тастатуре - - - Edit - Уреди - - - Add Keyboard Layout - Додај распоред тастатуре - - - Done - Готово - - - - dccV23::KeyboardLayoutDialog - - Cancel - Откажи - - - Add - Додај - - - Add Keyboard Layout - Додај распоред тастатуре - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Тастатура и језик - - - Keyboard - Тастатура - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Распоред тастатуре - - - Language - Језик - - - Shortcuts - Пречице - - - - dccV23::MainWindow - - Help - Помоћ - - - - dccV23::ModifyPasswdPage - - Change Password - Промени лозинку - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Тренутна лозинка - - - Forgot password? - - - - New Password - Нова лозинка - - - Repeat Password - Поново унеси - - - Password Hint - - - - Cancel - Откажи - - - Save - Сачувај - - - Passwords do not match - Лозинке се не подударају - - - Required - Неопходно - - - Optional - Опционо - - - Password cannot be empty - Лозинка не може бити празна - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Погрешна лозинка - - - New password should differ from the current one - Нова лозинка треба да се разликује од тренутне - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Окупи прозоре - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Миш - - - General - Опште - - - Touchpad - Додирна табла - - - TrackPoint - Управљачки тастер - - - - dccV23::MouseSettingWidget - - Pointer Speed - Брзина показивача - - - Mouse Acceleration - Убрзање миша - - - Disable touchpad when a mouse is connected - Онемогући додирну таблу кад прикључим миш - - - Natural Scrolling - Природно клизање - - - Slow - Споро - - - Fast - Брзо - - - - dccV23::MultiScreenWidget - - Multiple Displays - Вишеструки прикази - /display/Multiple Displays - - - Mode - Режим - /display/Mode - - - Main Screen - Главни екран - /display/Main Scree - - - Duplicate - Умножи - - - Extend - Прошири - - - Only on %1 - Само на %1 - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Обавештења - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Откривање длана - - - Minimum Contact Surface - Минимална контактна површина - - - Minimum Pressure Value - Минимална вредност притиска - - - Disable the option if touchpad doesn't work after enabled - Искључите ову опцију ако додирна табла не ради након што сте је омогућили - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Политика приватности - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Свесни смо колико су Вам важни ваши лични подаци. Наша политика приватности покрива како и под којим условима можемо прикупљати, корисити, делити, преносити, јавно обелоданити и чувати ваше податке.</p><p>Можете <a href="%1">кликнути овде</a> да прочитате нашу најновију политику приватности или је прочитајте на страници <a href="%1"> %1</a>. Пажљиво проучите и уверите се да у потпуности разумете нашу политику приватности. Ако имате питања контактирајте нас путем: support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Лозинка не може бити празна - - - Password must have at least %1 characters - Лозинка мора садржати најмање %1 карактера - - - Password must be no more than %1 characters - Лозинка не може бити дужа од %1 карактера - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Лозинка може садржати само енглеска слова (осетљива на величину), бројеве и специјалне карактере (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Лозинка може садржати само велика и мала слова, бројеве и специјалне карактере (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Лозинка не сме садржати више од 4 палиндромна карактера - - - Do not use common words and combinations as password - Немојте користити уобичајене речи и комбинације као лозинку - - - Create a strong password please - Молимо направите јаку лозинку - - - It does not meet password rules - Не задовољава правила за лозинке - - - - dccV23::RefreshRateWidget - - Refresh Rate - Брзина освежавања - - - Hz - Hz - - - Recommended - Препоручено - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Заиста желите да обришете овај налог? - - - Delete account directory - Обриши директоријум налога - - - Cancel - Откажи - - - Delete - Обриши - - - - dccV23::ResolutionWidget - - Resolution - Резолуција - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Подразумевано - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Препоручено - - - - dccV23::RotateWidget - - Rotation - Окренутост - /display/Rotation - - - Standard - Стандардно - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Екран подржава само 100% скалирање приказа - - - Display Scaling - Скалирање приказа - - - - dccV23::SearchInput - - Search - Претражи - - - - dccV23::SecondaryScreenDialog - - Brightness - Осветљење - - - - dccV23::SecurityLevelItem - - Weak - Слабо - - - Medium - Средња - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Откажи - - - Confirm - Потврди - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Уреди - - - Done - Готово - - - - dccV23::ShortCutSettingWidget - - System - Систем - - - Window - Прозор - - - Workspace - Радни простор - - - Assistive Tools - Помоћни алати - - - Custom Shortcut - Ваше пречице - - - Restore Defaults - Врати Подразумевано - - - Shortcut - Пречица - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Поново поставите пречицу - - - Cancel - Откажи - - - Replace - Замени - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Ова пречица је у сукобу са %1, кликните на Замени да пречица одмах ступи на снагу - - - - dccV23::ShortcutItem - - Enter a new shortcut - Унесите нову пречицу - - - - dccV23::SystemInfoModel - - available - доступно - - - - dccV23::SystemInfoModule - - About This PC - О рачунару - - - Computer Name - Име Рачунара - - - systemInfo - - - - OS Name - - - - Version - Верзија - - - Edition - - - - Type - Врста - - - Authorization - Овлашћење - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Лиценца издања - - - End User License Agreement - Лиценцни уговор са корисником - - - Privacy Policy - Политика приватности - - - %1-bit - %1-битни - - - - dccV23::SystemInfoPlugin - - System Info - Подаци система - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Откажи - - - Add - Додај - - - Add System Language - Додај језик система - - - - dccV23::SystemLanguageWidget - - Edit - Уреди - - - Language List - Списак језика - - - Add Language - - - - Done - Готово - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Не узнемиравај - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Обавештења програма се неће приказивати на радној површини и звук ће бити ућуткан, али можете прегледати све поруке у обавештајном центру. - - - When the screen is locked - Када је екран закључан - - - - dccV23::TimeSlotItem - - From - Од - - - To - До - - - - dccV23::TouchScreenModule - - Touch Screen - Екран на додир - - - Select your touch screen when connected or set it here. - Изаберите Ваш екран на додир када је повезан или га подесите овде. - - - Confirm - Потврди - - - Cancel - Откажи - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Брзина показивача - - - Slow - Споро - - - Fast - Брзо - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Придружи се програму корисничког искуства - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Година - - - Month - Месец - - - Day - Дан - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Идентификација је неопходна за промену НТП сервера - - - - DefAppModule - - Default Applications - Основни програми - - - - DefAppPlugin - - Webpage - Интернет страница - - - Mail - Пошта - - - Text - Текст - - - Music - Музика - - - Video - Видео - - - Picture - Слика - - - Terminal - Терминал - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Откажи - - - Next - Следеће - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Закачи - - - Multiple Displays - Вишеструки прикази - - - Show Dock - - - - Mode - Режим - - - Position - - - - Status - Стање - - - Show recent apps in Dock - - - - Size - Величина - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - Врх - - - Bottom - Дно - - - Left - Лево - - - Right - Десно - - - Location - Позиција - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - Мала - - - Large - Велика - - - On screen where the cursor is - На екрану где је показивач - - - Only on main screen - Само на главном екрану - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Уреди - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Готово - - - Add Face - - - - The name already exists - Име већ постоји - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Додај отисак прста - - - Cancel - Откажи - - - Next - Следеће - - - - FingerInfoWidget - - Place your finger - Прислоните прст - - - Place your finger firmly on the sensor until you're asked to lift it - Прислоните прст чврсто на читач све док се не затражи да га склоните - - - Scan the edges of your fingerprint - Очитајте рубове вашег отиска прста - - - Place the edges of your fingerprint on the sensor - Поставите рубове вашег отиска на читач - - - Lift your finger - Склоните прст - - - Lift your finger and place it on the sensor again - Склоните прст и поново га прислоните на читач - - - Adjust the position to scan the edges of your fingerprint - Прилагодите положај прста да очитате рубове отиска - - - Lift your finger and do that again - Склоните прст и поново очитајте - - - Fingerprint added - Отисак прста додат - - - - FingerWidget - - Edit - Уреди - - - Fingerprint Password - Отисак лозинка - - - You can add up to 10 fingerprints - Можете додати највише 10 отисака - - - Done - Готово - - - The name already exists - Име већ постоји - - - Add Fingerprint - Додај отисак прста - - - - GeneralModule - - General - Опште - - - Balanced - Уравнотежен - - - Balance Performance - - - - High Performance - Високи учинак - - - Power Saver - Уштеда енергије - - - Power Plans - Режими напајања - - - Power Saving Settings - Подешавање уштеде енергије - - - Auto power saving on low battery - Аутоматска уштеда енергије при слабој батерији - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Аутоматска уштеда енергије на батерији - - - Wakeup Settings - Подешавање буђења - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Не може почињати или се завршавати са цртицама - - - 1~63 characters please - 1~63 карактера - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Уреди - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Готово - - - Add Iris - - - - The name already exists - Име већ постоји - - - Iris - - - - - KeyLabel - - None - Ништа - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - Улазни уређај - - - Automatic Noise Suppression - Аутоматско сузбијање буке - - - Input Volume - Улазна јачина - - - Input Level - Улазни ниво - - - - PersonalizationDesktopModule - - Desktop - Радна површ - - - Window - Прозор - - - Window Effect - Ефекти прозора - - - Window Minimize Effect - Ефекат минимализ. прозора - - - Transparency - Прозирност - - - Rounded Corner - Заобљеност углова - - - Scale - Скала - - - Magic Lamp - Чаробна лампа - - - Small - Мала - - - Middle - - - - Large - Велика - - - - PersonalizationModule - - Personalization - Личне промене - - - - PersonalizationThemeList - - Cancel - Откажи - - - Save - Сачувај - - - Light - Светла - - - Dark - Тамна - - - Auto - Аутоматски - - - Default - Подразумевано - - - - PersonalizationThemeModule - - Theme - Тема - - - Appearance - - - - Accent Color - Боја истицања - - - Icon Settings - - - - Icon Theme - Тема иконица - - - Cursor Theme - Тема показивача - - - Text Settings - - - - Font Size - Величина фонта - - - Standard Font - Стандардни фонт - - - Monospaced Font - Фонт истог размака - - - Light - Светла - - - Auto - Аутоматски - - - Dark - Тамна - - - - PersonalizationThemeWidget - - Light - Светла - General - /personalization/General - - - Dark - Тамна - General - /personalization/General - - - Auto - Аутоматски - General - /personalization/General - - - Default - Подразумевано - - - - PersonalizationWorker - - Custom - Прилагођен - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - ПИН код за повезивање са Блутут уређајем је: - - - Cancel - Откажи - - - Confirm - Потврди - - - - PowerModule - - Power - Напајање - - - Battery low, please plug in - Батерија при крају, прикључите пуњач - - - Battery critically low - Батерија критично испражњена - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Камера - - - Microphone - Микрофон - - - User Folders - - - - Calendar - Календар - - - Screen Capture - - - - - QObject - - Control Center - Контролни Центар - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Активиран - - - View - Прегледај - - - To be activated - Потребно активирати - - - Activate - Активирај - - - Expired - Истекло - - - In trial period - Пробни период - - - Trial expired - Пробни период је истекао - - - Touch Screen Settings - Подешавање екрана на додир - - - The settings of touch screen changed - Подешавања екрана на додир су промењена - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Откажи - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Ваш систем није овлашћен, молимо прво га активирајте - - - Update successful - Ажурирање успешно - - - Failed to update - Ажурирање неуспешно - - - - SearchInput - - Search - Претражи - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Звучни ефекти - - - - SoundModel - - Boot up - Покретање - - - Shut down - Искључи - - - Log out - Одјави се - - - Wake up - Буђење - - - Volume +/- - Гласноћа +/- - - - Notification - Обавештења - - - Low battery - Батерија при крају - - - Send icon in Launcher to Desktop - Слање иконице из Покретача Програма на Радну површину - - - Empty Trash - Пражњење смећа - - - Plug in - Прикључење - - - Plug out - Ископчавање - - - Removable device connected - Уклоњиви уређај прикључен - - - Removable device removed - Уклоњиви уређај уклоњен - - - Error - Грешка - - - - SoundModule - - Sound - Звук - - - - SoundPlugin - - Output - Излаз - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Улаз - - - Sound Effects - Звучни ефекти - - - Devices - Уређаји - - - Input Devices - Улазни уређаји - - - Output Devices - Излазни уређаји - - - - SpeakerPage - - Output Device - Излазни уређај - - - Mode - Режим - - - Output Volume - Излазна jачина - - - Volume Boost - Увећање јачине - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Лева/Десна уравнотеженост - - - Left - Лево - - - Right - Десно - - - - TimeSettingModule - - Time Settings - Подешавање времена - - - Time - Време - - - Auto Sync - Аутоматски синхронизуј - - - Reset - Поново покрени - - - Save - Сачувај - - - Server - Сервер - - - Address - Адреса - - - Required - Неопходно - - - Customize - Прилагоди - - - Year - Година - - - Month - Месец - - - Day - Дан - - - - TimeZoneChooser - - Cancel - Откажи - - - Confirm - Потврди - - - Add Timezone - Додај временску зону - - - Add - Додај - - - Change Timezone - Промени временску зону - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Врати Претходно - - - Save - Сачувај - - - - TimezoneItem - - Tomorrow - Сутра - - - Yesterday - Јуче - - - Today - Данас - - - %1 hours earlier than local - %1 сати/а раније од локалног времена - - - %1 hours later than local - %1 сати/а касније од локалног времена - - - - TimezoneModule - - Timezone List - Списак временских зона - - - System Timezone - Временска зона система - - - Add Timezone - Додај временску зону - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Откажи - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - Поново провери - - - Update failed: insufficient disk space - Ажурирање није успело: недовољно простора на диску - - - Dependency error, failed to detect the updates - Грешка зависности, неуспешно проналажење ажурирања - - - Restart the computer to use the system and the applications properly - Поново покрените да правилно користите систем и програме - - - Network disconnected, please retry after connected - Веза је прекинута, покушајте поново након успостављања везе - - - Your system is not authorized, please activate first - Ваш систем није овлашћен, молимо прво га активирајте - - - This update may take a long time, please do not shut down or reboot during the process - Ово ажурирање може потрајати, немојте искључивати или поново покретати током процеса - - - Updates Available - - - - Current Edition - Тренутно издање - - - Updating... - Ажурирање... - - - Update All - - - - Last checking time: - Последња провера: - - - Your system is up to date - Ваш систем је ажуран - - - Check for Updates - Провери ажурирања - - - Checking for updates, please wait... - Провера ажурирања, молимо сачекајте... - - - The newest system installed, restart to take effect - Најновији систем је инсталиран, поново покрените за примену - - - %1% downloaded (Click to pause) - %1% преузето (Клик за паузу) - - - %1% downloaded (Click to continue) - %1% преузето (Клик за наставак) - - - Your battery is lower than 50%, please plug in to continue - Ниво батерије је мањи од 50%, прикључите пуњач да наставите - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Oбезбедите довољно енергије за поновно покретање и не искључујте рачунар и довод струје - - - Size - Величина - - - - UpdateModule - - Updates - Ажурирања - - - - UpdatePlugin - - Check for Updates - Провери ажурирања - - - - UpdateSettingItem - - Insufficient disk space - Недовољно простаора на диску - - - Update failed: insufficient disk space - Ажурирање није успело: недовољно простора на диску - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Најновији систем је инсталиран, поново покрените за примену - - - Waiting - - - - Backing up - - - - System backup failed - Неуспешно прављење резерве система - - - Release date: - - - - Server - Сервер - - - Desktop - Радна површ - - - Version - Верзија - - - - UpdateSettingsModule - - Update Settings - Подешавање ажурирања - - - System - Систем - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - Аутоматски преузми ажурирања - - - Switch it on to automatically download the updates in wireless or wired network - Укључите за аутоматско преузимање ажурирања на бежичној или жичаној мрежи - - - Auto Install Updates - - - - Updates Notification - Обавештења о ажурирањима - - - Clear Package Cache - Чисти кеш пакета - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Ажурирања система - - - Security Updates - Сигурносна ажурирања - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Тренутно издање - - - - UpdateWorker - - System Updates - Ажурирања система - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - Сигурносна ажурирања - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - На батерији - - - Never - Никад - - - Shut down - Искључи - - - Suspend - Обустави - - - Hibernate - Хибернација - - - Turn off the monitor - Угаси екран - - - Do nothing - Не ради ништа - - - 1 Minute - 1 Минут - - - %1 Minutes - %1 Минута - - - 1 Hour - 1 Сат - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Закључај екран након - - - Computer suspends after - - - - Computer will suspend after - Рачунар у обустави након - - - When the lid is closed - Када је поклопац затворен - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Ниво слабе батерије - - - Auto suspend battery level - Ниво батерије за обуставу - - - Battery Management - - - - Display remaining using and charging time - Прикажи преостало време употребе и време пуњења - - - Maximum capacity - Максимални капацитет - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Прикључен - - - 1 Minute - 1 Минут - - - %1 Minutes - %1 Минута - - - 1 Hour - 1 Сат - - - Never - Никад - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Закључај екран након - - - Computer suspends after - - - - When the lid is closed - Када је поклопац затворен - - - When the power button is pressed - - - - Shut down - Искључи - - - Suspend - Обустави - - - Hibernate - Хибернација - - - Turn off the monitor - Угаси екран - - - Show the shutdown Interface - - - - Do nothing - Не ради ништа - - - - WacomModule - - Drawing Tablet - Табла за цртање - - - Mode - Режим - - - Pressure Sensitivity - Осетљивост на притисак - - - Pen - Оловка - - - Mouse - Миш - - - Light - Светла - - - Heavy - Тешко - - - - main - - Control Center provides the options for system settings. - Контролни Центар пружа опције за подешавање система. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_sv.ts b/dcc-old/translations/dde-control-center_sv.ts deleted file mode 100644 index bd94661841..0000000000 --- a/dcc-old/translations/dde-control-center_sv.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Anslut - - - Disconnect - Koppla från - - - Rename - Byt namn - - - Send Files - - - - Ignore this device - - - - Connecting - Ansluter - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - Öppnar skrivbordsfil - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Avbryt - - - Next - Nästa - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Klar - - - Failed to enroll your face - - - - Try Again - - - - Close - Stäng - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Avbryt - - - Next - Nästa - - - Iris enrolled - - - - Done - Klar - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Fingeravtryck - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Ansluten - - - Not connected - Inte ansluten - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Avbryt - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Avbryt - - - Confirm - button - Bekräfta - - - - dccV23::AccountSpinBox - - Always - Alltid - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Användarnamn - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - Automatisk inloggning - - - Login Without Password - Logga in utan lösenord - - - Validity Days - - - - Group - Grupp - - - The full name is too long - - - - Standard User - - - - Administrator - Administratör - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Avbryt - - - OK - Okej - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Din värd togs precis bort från domän servern - - - Your host joins the domain server successfully - Din värd anslöts precis till domän servern - - - Your host failed to leave the domain server - Din värd misslyckades med att lämna domän servern - - - Your host failed to join the domain server - Din värd misslyckades med att ansluta till domän servern - - - AD domain settings - AD domän inställningar - - - Password not match - Lösenorden matchar ej - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Avbryt - - - Save - Spara - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Bilder - - - - dccV23::BootWidget - - Updating... - Uppdaterar... - - - Startup Delay - Uppstartsfördröjning - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Byt tema för att se det i uppstartsmenyn - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - Uppstartsmeny - - - Change GRUB password - - - - Username: - Användarnamn: - - - root - - - - New password: - - - - Repeat password: - - - - Required - Krävs - - - Cancel - button - Avbryt - - - Confirm - button - Bekräfta - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - Ljusstyrka - - - Color Temperature - - - - Auto Brightness - Auto Ljusstyrka - - - Night Shift - Nattläge - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - Uppstartsmeny - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Grupp - - - Cancel - Avbryt - - - Create - Skapa - - - New User - - - - User Type - - - - Username - Användarnamn - - - Full Name - - - - Password - Lösenord - - - Repeat Password - Upprepa lösenord - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - Administratör - - - Customized - - - - Required - Krävs - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Bilder - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Lägg till anpassat kortkommando - - - Name - Namn - - - Required - Krävs - - - Command - Kommando - - - Cancel - Avbryt - - - Add - Lägg till - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Denna genväg krockar med %1, klicka på Lägg till för att skapa denna genväg omedelbums - - - - dccV23::CustomEdit - - Required - Krävs - - - Cancel - Avbryt - - - Save - Spara - - - Shortcut - Kortkommandon - - - Name - Namn - - - Command - Kommando - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Denna genväg krockar med %1, klicka på Lägg till för att skapa denna genväg omedelbums - - - - dccV23::CustomItem - - Shortcut - Kortkommandon - - - Please enter a shortcut - Var god tryck in ett kortkommando - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Nästa - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Avbryt - - - Restart Now - Starta om nu - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - Bildskärm - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Dubbel-klicks Test - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Upprepa fördröjning - - - Short - Kort - - - Long - Lång - - - Repeat Rate - Upprepningshastighet - - - Slow - Långsam - - - Fast - Snabb - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - Caps Lock meddelande - - - - dccV23::GeneralSettingWidget - - Left Hand - Vänsterhänt - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - Dubbelklickshastighet - - - Slow - Långsam - - - Fast - Snabb - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Tangentbordslayout - - - Edit - Ändra - - - Add Keyboard Layout - Lägg till Tangentbordslayout - - - Done - Klar - - - - dccV23::KeyboardLayoutDialog - - Cancel - Avbryt - - - Add - Lägg till - - - Add Keyboard Layout - Lägg till Tangentbordslayout - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Tangentbord och Språk - - - Keyboard - Tangentbord - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Tangentbordslayout - - - Language - Språk - - - Shortcuts - Kortkommandon - - - - dccV23::MainWindow - - Help - Hjälp - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Nuvarande Lösenord - - - Forgot password? - - - - New Password - Nytt lösenord - - - Repeat Password - Upprepa lösenord - - - Password Hint - - - - Cancel - Avbryt - - - Save - Spara - - - Passwords do not match - - - - Required - Krävs - - - Optional - Valfri - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Fel lösenord - - - New password should differ from the current one - Det nya lösenordet bör skilja sig från det nuvarande - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Mus - - - General - Allmänt - - - Touchpad - Touchpad - - - TrackPoint - TrackPoint - - - - dccV23::MouseSettingWidget - - Pointer Speed - Pekarhastighet - - - Mouse Acceleration - Mus acceleration - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - Naturlig rullningsriktning - - - Slow - Långsam - - - Fast - Snabb - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Läge - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Dubblett - - - Extend - Utöka - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Avisering - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - Radera konto mapp - - - Cancel - Avbryt - - - Delete - Radera - - - - dccV23::ResolutionWidget - - Resolution - Upplösning - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Förval - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - Rotering - /display/Rotation - - - Standard - Standard - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - Skärmskalning - - - - dccV23::SearchInput - - Search - Sök - - - - dccV23::SecondaryScreenDialog - - Brightness - Ljusstyrka - - - - dccV23::SecurityLevelItem - - Weak - Svag - - - Medium - Medium - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Avbryt - - - Confirm - Bekräfta - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Ändra - - - Done - Klar - - - - dccV23::ShortCutSettingWidget - - System - System - - - Window - Fönster - - - Workspace - Arbetsyta - - - Assistive Tools - - - - Custom Shortcut - Anpassad genväg - - - Restore Defaults - Återställ Förval - - - Shortcut - Kortkommandon - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Vänligen återställ genväg - - - Cancel - Avbryt - - - Replace - Ersätt - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Denna genväg krockar med %1, klicka på Ersätt för att skapa denna genväg omedelbums - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - Datornamn - - - systemInfo - - - - OS Name - - - - Version - Version - - - Edition - - - - Type - Typ - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Avbryt - - - Add - Lägg till - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Ändra - - - Language List - - - - Add Language - - - - Done - Klar - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Bekräfta - - - Cancel - Avbryt - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Pekarhastighet - - - Slow - Långsam - - - Fast - Snabb - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - År - - - Month - Månad - - - Day - Dag - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - Standardprogram - - - - DefAppPlugin - - Webpage - Webbsida - - - Mail - E-post - - - Text - Text - - - Music - Musik - - - Video - Video - - - Picture - Bilder - - - Terminal - Terminal - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Avbryt - - - Next - Nästa - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Dockan - - - Multiple Displays - - - - Show Dock - - - - Mode - Läge - - - Position - Position - - - Status - Status - - - Show recent apps in Dock - - - - Size - Storlek - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Modeläge - - - Efficient mode - Effektivt läge - - - Top - Toppen - - - Bottom - Botten - - - Left - Vänster - - - Right - Höger - - - Location - Plats - - - Keep shown - - - - Keep hidden - Behåll som dolt - - - Smart hide - Smart dölj - - - Small - Liten - - - Large - Stor - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Ändra - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Klar - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Lägg till fingeravtryck - - - Cancel - Avbryt - - - Next - Nästa - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Ändra - - - Fingerprint Password - Fingeravtryckslösenord - - - You can add up to 10 fingerprints - - - - Done - Klar - - - The name already exists - - - - Add Fingerprint - Lägg till fingeravtryck - - - - GeneralModule - - General - Allmänt - - - Balanced - Balanserad - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Ändra - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Klar - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Ingen - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Ingångsvolym - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - Skrivbord - - - Window - Fönster - - - Window Effect - Fönster Effekt - - - Window Minimize Effect - - - - Transparency - Transparens - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Liten - - - Middle - - - - Large - Stor - - - - PersonalizationModule - - Personalization - Anpassning - - - - PersonalizationThemeList - - Cancel - Avbryt - - - Save - Spara - - - Light - Lätt - - - Dark - - - - Auto - Auto - - - Default - Förval - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - Ikontema - - - Cursor Theme - Tema för Muspekare - - - Text Settings - - - - Font Size - Font storlek - - - Standard Font - Standard typsnitt - - - Monospaced Font - - - - Light - Lätt - - - Auto - Auto - - - Dark - - - - - PersonalizationThemeWidget - - Light - Lätt - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - Auto - General - /personalization/General - - - Default - Förval - - - - PersonalizationWorker - - Custom - Egen - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN-koden för att ansluta till Bluetooth enheten är: - - - Cancel - Avbryt - - - Confirm - Bekräfta - - - - PowerModule - - Power - Stäng av - - - Battery low, please plug in - Lågt batteri, vänligen anslut - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Kalender - - - Screen Capture - - - - - QObject - - Control Center - Kontrollcenter - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - Visa - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Avbryt - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - Uppdateringen misslyckades - - - - SearchInput - - Search - Sök - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Ljudeffekter - - - - SoundModel - - Boot up - Uppstart - - - Shut down - Stäng av - - - Log out - Logga ut - - - Wake up - Väcka - - - Volume +/- - Volym +/- - - - Notification - Avisering - - - Low battery - Låg batterinivå - - - Send icon in Launcher to Desktop - Skicka ikon från Launchern till Skrivbordet - - - Empty Trash - Töm papperskorgen - - - Plug in - Koppla in - - - Plug out - Koppla ur - - - Removable device connected - Flyttbar enhet är ansluten - - - Removable device removed - Flyttbar enhet togs bort - - - Error - Fel - - - - SoundModule - - Sound - Ljud - - - - SoundPlugin - - Output - Utgång - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Ingång - - - Sound Effects - Ljudeffekter - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Läge - - - Output Volume - Utgångsvolym - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Vänster/Höger Balans - - - Left - Vänster - - - Right - Höger - - - - TimeSettingModule - - Time Settings - Tidsinställningar - - - Time - - - - Auto Sync - Auto synk - - - Reset - Återställ - - - Save - Spara - - - Server - Server - - - Address - Adress - - - Required - Krävs - - - Customize - - - - Year - År - - - Month - Månad - - - Day - Dag - - - - TimeZoneChooser - - Cancel - Avbryt - - - Confirm - Bekräfta - - - Add Timezone - Lägg till tidszon - - - Add - Lägg till - - - Change Timezone - Ändra tidszon - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Återställ - - - Save - Spara - - - - TimezoneItem - - Tomorrow - Imorgon - - - Yesterday - Igår - - - Today - Idag - - - %1 hours earlier than local - %1 timmar tidigare än lokal - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - Tidzonslista - - - System Timezone - - - - Add Timezone - Lägg till tidszon - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Avbryt - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Beroende fel, kunde ej hitta uppdateringar - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - Nätverk frånkopplat, försök igen när det är anslutet - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - Denna uppdatering kan ta tid att genomföra, var god och stäng ej av eller starta om datorn under denna process - - - Updates Available - - - - Current Edition - - - - Updating... - Uppdaterar... - - - Update All - - - - Last checking time: - - - - Your system is up to date - Systemet är uppdaterat - - - Check for Updates - - - - Checking for updates, please wait... - Söker efter uppdateringar, vänligen vänta... - - - The newest system installed, restart to take effect - Nyaste systemet är installerat, starta om för att slutföra - - - %1% downloaded (Click to pause) - %1 nedladdad (klicka för att pausa) - - - %1% downloaded (Click to continue) - %1 nedladdad (klicka för att fortsätta) - - - Your battery is lower than 50%, please plug in to continue - Batteriet är under 50%, var god sätt i strömmen för att fortsätta - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Vänligen kontrollera så där är tillräckligt med ström för omstart, och stäng ej av eller dra ut sladden ur datorn - - - Size - Storlek - - - - UpdateModule - - Updates - Uppdateringar - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Nyaste systemet är installerat, starta om för att slutföra - - - Waiting - Väntar - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - Server - - - Desktop - Skrivbord - - - Version - Version - - - - UpdateSettingsModule - - Update Settings - Uppdateringsinställningar - - - System - System - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - Aktivera för att automatiskt ladda ner uppdateringar i trådlöst eller trådat nätverk - - - Auto Install Updates - - - - Updates Notification - Uppdaterings Avisering - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Aldrig - - - Shut down - Stäng av - - - Suspend - Vänteläge - - - Hibernate - Viloläge - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - 1 minut - - - %1 Minutes - %1 minuter - - - 1 Hour - 1 timme - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - Datorn går i viloläge efter - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - 1 minut - - - %1 Minutes - %1 minuter - - - 1 Hour - 1 timme - - - Never - Aldrig - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Stäng av - - - Suspend - Vänteläge - - - Hibernate - Viloläge - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Läge - - - Pressure Sensitivity - Tryckkänslighet - - - Pen - Penna - - - Mouse - Mus - - - Light - Lätt - - - Heavy - Tung - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_sv_SE.ts b/dcc-old/translations/dde-control-center_sv_SE.ts deleted file mode 100644 index f35d508bee..0000000000 --- a/dcc-old/translations/dde-control-center_sv_SE.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_sw.ts b/dcc-old/translations/dde-control-center_sw.ts deleted file mode 100644 index 5251f9417b..0000000000 --- a/dcc-old/translations/dde-control-center_sw.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - Muungana - - - Disconnect - Tenganisha - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - Inamuungana - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Katisha - - - Next - Ingine - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Imefanywa - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Katisha - - - Next - Ingine - - - Iris enrolled - - - - Done - Imefanywa - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Imemuunganwa - - - Not connected - Haimuunganwa - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Katisha - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Katisha - - - Confirm - button - Hakikisha - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Mtumiaji - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - Ingia moja kwa moja - - - Login Without Password - Ingia bila nywila - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Katisha - - - OK - Sawa - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - Nywila hailingana - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Katisha - - - Save - Hifadhi - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Picha - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Inahitaji - - - Cancel - button - Katisha - - - Confirm - button - Hakikisha - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - Katisha - - - Create - Jenga - - - New User - - - - User Type - - - - Username - Mtumiaji - - - Full Name - - - - Password - Nywila - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - Inahitaji - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Picha - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - Inahitaji - - - Command - - - - Cancel - Katisha - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - Inahitaji - - - Cancel - Katisha - - - Save - Hifadhi - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - Ingine - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Katisha - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - Hariri - - - Add Keyboard Layout - - - - Done - Imefanywa - - - - dccV23::KeyboardLayoutDialog - - Cancel - Katisha - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - Usaidizi - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - Katisha - - - Save - Hifadhi - - - Passwords do not match - - - - Required - Inahitaji - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Nywila si sahihi - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - Hali - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - Nakili - - - Extend - Endeleza - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Taarifa - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Katisha - - - Delete - Futa - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - Tafuta - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - Wastani - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Katisha - - - Confirm - Hakikisha - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Hariri - - - Done - Imefanywa - - - - dccV23::ShortCutSettingWidget - - System - Mfumo - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Katisha - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Katisha - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Hariri - - - Language List - - - - Add Language - - - - Done - Imefanywa - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Hakikisha - - - Cancel - Katisha - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - Muziki - - - Video - Video - - - Picture - - - - Terminal - Kiweko - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Katisha - - - Next - Ingine - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - Hali - - - Position - - - - Status - Hadhi - - - Show recent apps in Dock - - - - Size - Ukubwa - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - Juu - - - Bottom - Chini - - - Left - Kushoto - - - Right - Kulia - - - Location - Pahali - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - Ndogo - - - Large - Kubwa - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Hariri - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Imefanywa - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Jumlisha alama cha kidole - - - Cancel - Katisha - - - Next - Ingine - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Hariri - - - Fingerprint Password - Nywila ya alama cha kidole - - - You can add up to 10 fingerprints - - - - Done - Imefanywa - - - The name already exists - - - - Add Fingerprint - Jumlisha alama cha kidole - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Hariri - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Imefanywa - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - Hakuna - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - Ndogo - - - Middle - - - - Large - Kubwa - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - Katisha - - - Save - Hifadhi - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Katisha - - - Confirm - Hakikisha - - - - PowerModule - - Power - Kiwashio - - - Battery low, please plug in - Kiwango cha betri iko ndogo, tafadhali tumia umeme - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - Kalenda - - - Screen Capture - - - - - QObject - - Control Center - Kituo cha ulinzi - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Katisha - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - Tafuta - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - Anza - - - Shut down - Zima - - - Log out - Aga - - - Wake up - Amka - - - Volume +/- - Sauti +/- - - - Notification - Taarifa - - - Low battery - Betri ndogo - - - Send icon in Launcher to Desktop - Tuma ikon kutoka kizinduzi kwa eneo la kazi - - - Empty Trash - Toa taka - - - Plug in - Ziba - - - Plug out - Zibua - - - Removable device connected - Kifaa inaweza kutoa imeunganishwa - - - Removable device removed - Kifaa inaweza kutoa imetenganisha - - - Error - Kosa - - - - SoundModule - - Sound - Sauti - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Hali - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - Kushoto - - - Right - Kulia - - - - TimeSettingModule - - Time Settings - Sifa za saa - - - Time - - - - Auto Sync - - - - Reset - - - - Save - Hifadhi - - - Server - - - - Address - - - - Required - Inahitaji - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Katisha - - - Confirm - Hakikisha - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - Hifadhi - - - - TimezoneItem - - Tomorrow - - - - Yesterday - Jana - - - Today - Leo - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Katisha - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - Makosa ya kitegemezi, masasisha haioneka - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - Ukubwa - - - - UpdateModule - - Updates - Masasisha - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - Mfumo - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - Zima - - - Suspend - Ahirisha - - - Hibernate - Sinzia fofofo - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Zima - - - Suspend - Ahirisha - - - Hibernate - Sinzia fofofo - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - Hali - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ta.ts b/dcc-old/translations/dde-control-center_ta.ts deleted file mode 100644 index 98de926e2c..0000000000 --- a/dcc-old/translations/dde-control-center_ta.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - இணை - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - நிறுத்து - - - Next - அடுத்து - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - முடிந்தது - - - Failed to enroll your face - - - - Try Again - - - - Close - மூடு - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - நிறுத்து - - - Next - அடுத்து - - - Iris enrolled - - - - Done - முடிந்தது - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - இணைக்கப்பட்டுள்ளது - - - Not connected - - - - - BluetoothModule - - Bluetooth - புளூடூத் - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - நிறுத்து - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - நிறுத்து - - - Confirm - button - உறுதிப்படுத்து - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - பயனர் - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - நிர்வாகி - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - நிறுத்து - - - OK - சரி - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - நிறுத்து - - - Save - சேமி - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - தற்காலப்படுத்தல் - - - Startup Delay - - - - Theme - தீம் - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - துவக்க பட்டியல் - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - நிறுத்து - - - Confirm - button - உறுதிப்படுத்து - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - ஒளிர்வு - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - துவக்க பட்டியல் - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - நிறுத்து - - - Create - - - - New User - - - - User Type - - - - Username - பயனர் - - - Full Name - - - - Password - கடவுச்சொல் - - - Repeat Password - மீண்டுமொருமுறை கடவுச்சொல் - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - நிர்வாகி - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - பெயர் - - - Required - - - - Command - கட்டளை - - - Cancel - நிறுத்து - - - Add - சேர் - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - நிறுத்து - - - Save - சேமி - - - Shortcut - - - - Name - பெயர் - - - Command - கட்டளை - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - அடுத்து - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - நிறுத்து - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - திரை - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - மீண்டும் செய் தாமதம் - - - Short - - - - Long - - - - Repeat Rate - மீண்டும் விகிதம் - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - இடது கை - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - இரு கிளிக் வேகம் - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - விசைப்பலகை அமைப்பை - - - Edit - தொகு - - - Add Keyboard Layout - விசைப்பலகை அமைப்பை சேர் - - - Done - முடிந்தது - - - - dccV23::KeyboardLayoutDialog - - Cancel - நிறுத்து - - - Add - சேர் - - - Add Keyboard Layout - விசைப்பலகை அமைப்பை சேர் - - - - dccV23::KeyboardPlugin - - Keyboard and Language - விசைப்பலகையும் மொழியும் - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - விசைப்பலகை அமைப்பை - - - Language - மொழி - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - புதிய கடவுச்சொல் - - - Repeat Password - மீண்டுமொருமுறை கடவுச்சொல் - - - Password Hint - - - - Cancel - நிறுத்து - - - Save - சேமி - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - தவறான கடவுச்சொல் - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - டச்பேட் - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - சுட்டிக்காட்டி வேகம் - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - இயற்கை உருட்டுதல் - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - முறை - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - நகல் - - - Extend - நீட்டிக்க. - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - நிறுத்து - - - Delete - அழி - - - - dccV23::ResolutionWidget - - Resolution - பிரிதிறன் - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - இயல்புநிலை - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - சுழற்சி - /display/Rotation - - - Standard - தரம் - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - ஒளிர்வு - - - - dccV23::SecurityLevelItem - - Weak - பலவீனமான - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - நிறுத்து - - - Confirm - உறுதிப்படுத்து - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - தொகு - - - Done - முடிந்தது - - - - dccV23::ShortCutSettingWidget - - System - கணினி - - - Window - சாரளம் - - - Workspace - பணியிடம் - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - நிறுத்து - - - Replace - மாற்றுக - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - பதிப்பு - - - Edition - - - - Type - வகை - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - நிறுத்து - - - Add - சேர் - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - தொகு - - - Language List - - - - Add Language - - - - Done - முடிந்தது - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - உறுதிப்படுத்து - - - Cancel - நிறுத்து - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - சுட்டிக்காட்டி வேகம் - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - இயல்புநிலை பயன்பாடுகள் - - - - DefAppPlugin - - Webpage - - - - Mail - மின்னஞ்சல் - - - Text - உரை - - - Music - இசை - - - Video - நிகழ்படம் - - - Picture - படம் - - - Terminal - முனையம் - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - நிறுத்து - - - Next - அடுத்து - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - முறை - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - அளவு - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - இடது - - - Right - வலது - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - தொகு - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - முடிந்தது - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - நிறுத்து - - - Next - அடுத்து - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - தொகு - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - முடிந்தது - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - நடுநிலை - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - தொகு - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - முடிந்தது - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - ஏதுமில்லை - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - உள்ளீடு தொகுதி - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - திரைப்பலகம் - - - Window - சாரளம் - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - தனிப்பயனாக்கம் - - - - PersonalizationThemeList - - Cancel - நிறுத்து - - - Save - சேமி - - - Light - - - - Dark - - - - Auto - தானியங்கி - - - Default - இயல்புநிலை - - - - PersonalizationThemeModule - - Theme - தீம் - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - தானியங்கி - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - தானியங்கி - General - /personalization/General - - - Default - இயல்புநிலை - - - - PersonalizationWorker - - Custom - விருப்பம் - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - நிறுத்து - - - Confirm - உறுதிப்படுத்து - - - - PowerModule - - Power - மின்திறன் - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - புகைப்படக்கருவி - - - Microphone - ஒலிவாங்கி - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - கட்டுப்பாட்டு மையம் - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - நிறுத்து - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - நிறுத்து - - - Log out - வெளியேறு - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - ஒலி - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - முறை - - - Output Volume - வெளியீடு ஒலியளவு - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - இடது/வலது சமநிலை - - - Left - இடது - - - Right - வலது - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - மீட்டமை - - - Save - சேமி - - - Server - சர்வர் - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - நிறுத்து - - - Confirm - உறுதிப்படுத்து - - - Add Timezone - - - - Add - சேர் - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - திருப்பு / மாற்றியமை - - - Save - சேமி - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - இன்று - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - நிறுத்து - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - தற்காலப்படுத்தல் - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - அளவு - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - சர்வர் - - - Desktop - திரைப்பலகம் - - - Version - பதிப்பு - - - - UpdateSettingsModule - - Update Settings - - - - System - கணினி - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - ஒருபோதும் தேவைஇல்லை - - - Shut down - நிறுத்து - - - Suspend - தற்காலிகமாக நிறுத்தம் செய்தல் - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - ஒருபோதும் தேவைஇல்லை - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - நிறுத்து - - - Suspend - தற்காலிகமாக நிறுத்தம் செய்தல் - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - முறை - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_te.ts b/dcc-old/translations/dde-control-center_te.ts deleted file mode 100644 index 8349083abd..0000000000 --- a/dcc-old/translations/dde-control-center_te.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - టెర్మినల్ - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_th.ts b/dcc-old/translations/dde-control-center_th.ts deleted file mode 100644 index f487de6405..0000000000 --- a/dcc-old/translations/dde-control-center_th.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - เปิดใช้งานบลูทูธ เพื่อค้นหาอุปกรณ์ใกล้เคียง (ลำโพง, คีย์บอร์ด, เมาส์) - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - เชื่อมต่อ - - - Disconnect - ยกเลิกการเชื่อมต่อ - - - Rename - - - - Send Files - - - - Ignore this device - ละเว้นอุปกรณ์นี้ - - - Connecting - กำลังเชื่อมต่อ - - - Disconnecting - - - - - AddButtonWidget - - Add Application - เพิ่มแอปพลิเคชัน - - - Open Desktop file - เปิดไฟล์ Desktop - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - ยกเลิก - - - Next - ถัดไป - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - เสร็จสิ้น - - - Failed to enroll your face - - - - Try Again - - - - Close - ปิด - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - ยกเลิก - - - Next - ถัดไป - - - Iris enrolled - - - - Done - เสร็จสิ้น - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - ลายนิ้วมือ - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - เชื่อมต่อแล้ว - - - Not connected - ไม่ได้เชื่อมต่อ - - - - BluetoothModule - - Bluetooth - บลูทูธ - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - นิ้วขยับเร็วเกินไป, โปรดอย่ายกจนกว่าจะได้รับข้อความแจ้ง - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - ยกเลิก - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - ยกเลิก - - - Confirm - button - ยืนยัน - - - - dccV23::AccountSpinBox - - Always - เสมอ - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - ชื่อผู้ใช้ - - - Change Password - เปลี่ยนรหัสผ่าน - - - Delete User - - - - User Type - - - - Auto Login - เข้าสู่ระบบอัตโนมัติ - - - Login Without Password - เข้าสู่ระบบโดยไม่มีรหัสผ่าน - - - Validity Days - จํานวนวันที่ถูกต้อง - - - Group - กรุ๊ป - - - The full name is too long - ชื่อเต็มยาวเกินไป - - - Standard User - ผู้ใช้ทัวไป - - - Administrator - ผู้ดูแลระบบ - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - ชื่อเต็ม - - - Go to Settings - ไปที่การตั้งค่า - - - Cancel - ยกเลิก - - - OK - ตกลง - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - ยกเลิก - - - Save - บันทึก - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - ภาพ - - - - dccV23::BootWidget - - Updating... - กำลังอัปเดต... - - - Startup Delay - หน่วงเวลาการเริ่มระบบ - - - Theme - ธีม - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - คลิกตัวเลือกในเมนูการบูตเพื่อตั้งค่าเป็นบูตครั้งแรกและลากและวางภาพเพื่อเปลี่ยนพื้นหลัง - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - เปิดชุดรูปแบบเพื่อดูในเมนูการบูต - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - เปลี่ยนรหัสผ่าน - - - Boot Menu - เมนูการบูต - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - ต้องระบุ - - - Cancel - button - ยกเลิก - - - Confirm - button - ยืนยัน - - - Password cannot be empty - - - - Passwords do not match - รหัสผ่านไม่ตรงกัน - - - - dccV23::BrightnessWidget - - Brightness - ความสว่าง - - - Color Temperature - - - - Auto Brightness - ความสว่างอัตโนมัติ - - - Night Shift - กลางคืน - - - The screen hue will be auto adjusted according to your location - สีหน้าจอจะถูกปรับอัตโนมัติตามตําแหน่งของคุณ - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - การตั้งค่าทั่วไป - - - Boot Menu - เมนูการบูต - - - Developer Mode - โหมดนักพัฒนา - - - User Experience Program - เข้าร่วมโปรแกรมประสบการณ์ผู้ใช้ - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - ยอมรับและเข้าร่วมโปรแกรมประสบการณ์ผู้ใช้ - - - The Disclaimer of Developer Mode - ข้อจำกัดความรับผิดชอบของโหมดผู้พัฒนา - - - Agree and Request Root Access - ยอมรับและร้องขอการเข้าถึงรูท - - - Failed to get root access - ไม่สามารถเข้าถึงรูทได้ - - - Please sign in to your Union ID first - - - - Cannot read your PC information - ไม่สามารถอ่านข้อมูลพีซีของคุณ - - - No network connection - ไม่มีการเชื่อมต่อเครือข่าย - - - Certificate loading failed, unable to get root access - การโหลดใบรับรองล้มเหลวไม่สามารถเข้าถึงรูทได้ - - - Signature verification failed, unable to get root access - การตรวจสอบลายเซ็นล้มเหลวไม่สามารถเข้าถึงรูทได้ - - - - dccV23::CreateAccountPage - - Group - กรุ๊ป - - - Cancel - ยกเลิก - - - Create - สร้าง - - - New User - - - - User Type - - - - Username - ชื่อผู้ใช้ - - - Full Name - ชื่อเต็ม - - - Password - รหัสผ่าน - - - Repeat Password - ใส่รหัสผ่านซ้ำ - - - Password Hint - - - - The full name is too long - ชื่อเต็มยาวเกินไป - - - Passwords do not match - รหัสผ่านไม่ตรงกัน - - - Standard User - ผู้ใช้ทัวไป - - - Administrator - ผู้ดูแลระบบ - - - Customized - - - - Required - ต้องระบุ - - - optional - ทางเลือก - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - ชื่อผู้ใช้จะต้องอยู่ระหว่าง 3 ถึง 32 ตัวอักษร - - - The first character must be a letter or number - อักขระตัวแรกต้องเป็นตัวอักษรหรือตัวเลข - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - ภาพ - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - ชื่อ - - - Required - ต้องระบุ - - - Command - คำสั่ง - - - Cancel - ยกเลิก - - - Add - เพิ่ม - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - ทางลัดนี้ขัดแย้งกับ %1 คลิกเพิ่มเพื่อทําให้ทางลัดนี้มีผลทันที - - - - dccV23::CustomEdit - - Required - ต้องระบุ - - - Cancel - ยกเลิก - - - Save - บันทึก - - - Shortcut - ทางลัด - - - Name - ชื่อ - - - Command - คำสั่ง - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - ทางลัดนี้ขัดแย้งกับ %1 คลิกเพิ่มเพื่อทําให้ทางลัดนี้มีผลทันที - - - - dccV23::CustomItem - - Shortcut - ทางลัด - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - ร้องขอการเข้าถึงรูท - - - Online - ออนไลน์ - - - Offline - ออฟไลน์ - - - Please sign in to your Union ID first and continue - - - - Next - ถัดไป - - - Export PC Info - ส่งออกข้อมูลพีซี - - - Import Certificate - นำเข้า ใบรับรอง - - - 1. Export your PC information - 1. Export your PC information - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. ไปที่ https://www.chinauos.com/developMode เพื่อดาวน์โหลดใบรับรองแบบออฟไลน์ - - - 3. Import the certificate - 3. นำเข้าใบรับรอง - - - - dccV23::DeveloperModeWidget - - Request Root Access - ร้องขอการเข้าถึงรูท - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - โหมดผู้พัฒนาช่วยให้คุณได้รับสิทธิ์รูทติดตั้งและเรียกใช้แอพที่ไม่ได้ลงทะเบียนที่ไม่ได้อยู่ในรายการในแอพสโตร์ แต่ความสมบูรณ์ของระบบของคุณอาจเสียหายได้โปรดใช้งานอย่างระมัดระวัง - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - ไม่สามารถเข้าถึงรูทได้ - - - Please sign in to your Union ID first - - - - Cannot read your PC information - ไม่สามารถอ่านข้อมูลพีซีของคุณ - - - No network connection - ไม่มีการเชื่อมต่อเครือข่าย - - - Certificate loading failed, unable to get root access - การโหลดใบรับรองล้มเหลวไม่สามารถเข้าถึงรูทได้ - - - Signature verification failed, unable to get root access - การตรวจสอบลายเซ็นล้มเหลวไม่สามารถเข้าถึงรูทได้ - - - To make some features effective, a restart is required. Restart now? - เพื่อให้คุณสมบัติบางอย่างมีประสิทธิภาพจึงจำเป็นต้องรีสตาร์ท เริ่มต้นใหม่เดี๋ยวนี้? - - - Cancel - ยกเลิก - - - Restart Now - เริ่มต้นใหม่เดี๋ยวนี้ - - - Root Access Allowed - อนุญาตการเข้าถึงสิทธิ์รูท - - - - dccV23::DisplayPlugin - - Display - จอแสดงผล - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - หน่วงเวลาซ้ํา - - - Short - ย่อ - - - Long - - - - Repeat Rate - - - - Slow - ช้า - - - Fast - รวดเร็ว - - - Test here - ทดสอบที่นี่ - - - Numeric Keypad - Numeric Keypad - - - Caps Lock Prompt - Caps Lock Prompt - - - - dccV23::GeneralSettingWidget - - Left Hand - มือซ้าย - - - Disable touchpad while typing - ปิดการใช้งานทัชแพดขณะพิมพ์ - - - Scrolling Speed - ความเร็วในการเลื่อน - - - Double-click Speed - ความเร็วในการ ดับเบิลคลิก - - - Slow - ช้า - - - Fast - รวดเร็ว - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - รูปแบบแป้นพิมพ์ - - - Edit - แก้ไข - - - Add Keyboard Layout - - - - Done - เสร็จสิ้น - - - - dccV23::KeyboardLayoutDialog - - Cancel - ยกเลิก - - - Add - เพิ่ม - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - แป้นพิมพ์และภาษา - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - รูปแบบแป้นพิมพ์ - - - Language - - - - Shortcuts - ทางลัด - - - - dccV23::MainWindow - - Help - วิธีใช้ - - - - dccV23::ModifyPasswdPage - - Change Password - เปลี่ยนรหัสผ่าน - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - รหัสผ่านปัจจุบัน - - - Forgot password? - - - - New Password - รหัสผ่านใหม่ - - - Repeat Password - ใส่รหัสผ่านซ้ำ - - - Password Hint - - - - Cancel - ยกเลิก - - - Save - บันทึก - - - Passwords do not match - รหัสผ่านไม่ตรงกัน - - - Required - ต้องระบุ - - - Optional - ทางเลือก - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - รหัสผ่านไม่ถูกต้อง - - - New password should differ from the current one - รหัสผ่านใหม่ควรแตกต่างจากปัจจุบัน - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - เม้าส์ - - - General - ทั่วไป - - - Touchpad - ทัชแพด - - - TrackPoint - แทร็กพอยท์ - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - ปิดการใช้งานทัชแพดเมื่อเชื่อมต่อเมาส์ - - - Natural Scrolling - การเลื่อนแบบธรรมชาติ - - - Slow - ช้า - - - Fast - รวดเร็ว - - - - dccV23::MultiScreenWidget - - Multiple Displays - จอแสดงผลหลายหน้าจอ - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - หน้าจอหลัก - /display/Main Scree - - - Duplicate - ทำซ้ำ - - - Extend - ขยาย - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - รหัสผ่านจะต้องไม่เกิน %1 ตัวอักษร - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - อัตราการรีเฟรช - - - Hz - เฮิร์ตซ์ - - - Recommended - แนะนำ - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - ยกเลิก - - - Delete - ลบ - - - - dccV23::ResolutionWidget - - Resolution - ความละเอียด - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - แนะนำ - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - จอภาพสนับสนุนการปรับการแสดงผล 100% เท่านั้น - - - Display Scaling - ขนาดจอแสดงผล - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - ความสว่าง - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - ยกเลิก - - - Confirm - ยืนยัน - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - แก้ไข - - - Done - เสร็จสิ้น - - - - dccV23::ShortCutSettingWidget - - System - ระบบ - - - Window - หน้าต่าง - - - Workspace - - - - Assistive Tools - เครื่องมือช่วยเหลือ - - - Custom Shortcut - ทางลัดแบบกําหนดเอง - - - Restore Defaults - คืนค่าค่าเริ่มต้น - - - Shortcut - ทางลัด - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - ยกเลิก - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - ประเภท - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - ข้อมูลระบบ - - - - dccV23::SystemLanguageSettingDialog - - Cancel - ยกเลิก - - - Add - เพิ่ม - - - Add System Language - เพิ่มภาษาของระบบ - - - - dccV23::SystemLanguageWidget - - Edit - แก้ไข - - - Language List - รายการภาษา - - - Add Language - - - - Done - เสร็จสิ้น - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - ยืนยัน - - - Cancel - ยกเลิก - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - ช้า - - - Fast - รวดเร็ว - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - เข้าร่วมโปรแกรมประสบการณ์ผู้ใช้ - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - ปี - - - Month - เดือน - - - Day - วัน - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - แอปพลิเคชั่นเริ่มต้น - - - - DefAppPlugin - - Webpage - เว็บเพจ - - - Mail - เมล - - - Text - ข้อความ - - - Music - เพลง - - - Video - วีดีโอ - - - Picture - ภาพ - - - Terminal - เทอร์มินัล - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - ยกเลิก - - - Next - ถัดไป - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - จอแสดงผลหลายหน้าจอ - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - แก้ไข - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - เสร็จสิ้น - - - Add Face - - - - The name already exists - ชื่อนี้มีอยู่แล้ว - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - เพิ่มลายนิ้วมือ - - - Cancel - ยกเลิก - - - Next - ถัดไป - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - เพิ่มลายนิ้วมือ - - - - FingerWidget - - Edit - แก้ไข - - - Fingerprint Password - รหัสผ่านลายนิ้วมือ - - - You can add up to 10 fingerprints - - - - Done - เสร็จสิ้น - - - The name already exists - ชื่อนี้มีอยู่แล้ว - - - Add Fingerprint - เพิ่มลายนิ้วมือ - - - - GeneralModule - - General - ทั่วไป - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - แก้ไข - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - เสร็จสิ้น - - - Add Iris - - - - The name already exists - ชื่อนี้มีอยู่แล้ว - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - หน้าต่าง - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - ส่วนบุคคล - - - - PersonalizationThemeList - - Cancel - ยกเลิก - - - Save - บันทึก - - - Light - - - - Dark - - - - Auto - อัตโนมัติ - - - Default - - - - - PersonalizationThemeModule - - Theme - ธีม - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - อัตโนมัติ - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - อัตโนมัติ - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - ยกเลิก - - - Confirm - ยืนยัน - - - - PowerModule - - Power - พลังงาน - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - ปฏิทิน - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - ยกเลิก - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - ปิดเครื่อง - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - เสียง - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - ตั้งค่าเวลา - - - Time - - - - Auto Sync - ซิงค์อัตโนมัติ - - - Reset - - - - Save - บันทึก - - - Server - เซิร์ฟเวอร์ - - - Address - ที่อยู่ - - - Required - ต้องระบุ - - - Customize - ปรับแต่ง - - - Year - ปี - - - Month - เดือน - - - Day - วัน - - - - TimeZoneChooser - - Cancel - ยกเลิก - - - Confirm - ยืนยัน - - - Add Timezone - เพิ่มเขตเวลา - - - Add - เพิ่ม - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - บันทึก - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - วันนี้ - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - รายการเขตเวลา - - - System Timezone - เขตเวลาของระบบ - - - Add Timezone - เพิ่มเขตเวลา - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - ยกเลิก - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - รีสตาร์ทคอมพิวเตอร์เพื่อใช้งานระบบและ แอพพลิเคชั่นอย่างเหมาะสม - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - กำลังอัปเดต... - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - อัพเดท - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - เซิร์ฟเวอร์ - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - ระบบ - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - ไม่เคย - - - Shut down - ปิดเครื่อง - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - ไม่เคย - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - ปิดเครื่อง - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - การวาดแท็บเล็ต - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - เม้าส์ - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_tr.ts b/dcc-old/translations/dde-control-center_tr.ts deleted file mode 100644 index d64202c5db..0000000000 --- a/dcc-old/translations/dde-control-center_tr.ts +++ /dev/null @@ -1,3983 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Diğer Bluetooth cihazlarının bu cihazı bulmasına izin ver - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Yakındaki aygıtları bulmak için bluetooth özelliğini etkinleştir (hoparlör, klavye, fare) - - - My Devices - Aygıtlarım - - - Other Devices - Diğer Aygıtlar - - - Show Bluetooth devices without names - Bluetooth cihazlarını isimsiz göster - - - Connect - Bağlan - - - Disconnect - Bağlantıyı kes - - - Rename - Yeniden adlandır - - - Send Files - Dosyaları Gönder - - - Ignore this device - Bu aygıtı yoksay - - - Connecting - Bağlanıyor - - - Disconnecting - Bağlantı kesiliyor - - - - AddButtonWidget - - Add Application - Uygulama Ekle - - - Open Desktop file - Masaüstü Dosyası Aç - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - Kayıt Yüzü - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Yüzünüzün tüm bölümlerinin nesnelerle kaplanmadığından ve açıkça görülebildiğinden emin olun. Yüzünüz de iyi aydınlatılmış olmalıdır. - - - Cancel - İptal - - - Next - Sonraki - - - Face enrolled - Yüz kayıtlı - - - Use your face to unlock the device and make settings later - Cihazın kilidini açmak ve ayarları daha sonra yapmak için yüzünüzü kullanın - - - Done - Tamamla - - - Failed to enroll your face - Yüzünüz kaydedilemedi - - - Try Again - Tekrar Dene - - - Close - Kapat - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - İris'i kaydet - - - Cancel - İptal - - - Next - Sonraki - - - Iris enrolled - İris kaydoldu - - - Done - Tamamla - - - Failed to enroll your iris - İris'in kaydedilemedi - - - Try Again - Tekrar Dene - - - - AuthenticationInfoItem - - No more than 15 characters - 15 karakterden fazla değil - - - Use letters, numbers and underscores only, and no more than 15 characters - Yalnızca harf, rakam ve alt çizgi kullanın ve en fazla 15 karakter kullanın - - - Use letters, numbers and underscores only - Yalnızca harf, rakam ve alt çizgi kullanın - - - - AuthenticationModule - - Biometric Authentication - Biyometrik Kimlik Doğrulama - - - - AuthenticationPlugin - - Fingerprint - Parmak İzi - - - Face - Yüz - - - Iris - İris - - - - BluetoothDeviceModel - - Connected - Bağlandı - - - Not connected - Bağlı değil - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Parmakizi1 - - - Fingerprint2 - Parmakizi2 - - - Fingerprint3 - Parmakizi3 - - - Fingerprint4 - Parmakizi4 - - - Fingerprint5 - Parmakizi5 - - - Fingerprint6 - Parmakizi6 - - - Fingerprint7 - Parmakizi7 - - - Fingerprint8 - Parmakizi8 - - - Fingerprint9 - Parmakizi9 - - - Fingerprint10 - Parmakizi10 - - - Scan failed - Tarama başarısız - - - The fingerprint already exists - Parmak izi zaten var - - - Please scan other fingers - Lütfen diğer parmaklarınızı tarayın - - - Unknown error - Bilinmeyen hata - - - Scan suspended - Tarama askıya alındı - - - Cannot recognize - Tanınamıyor - - - Moved too fast - Çok hızlı taşındı - - - Finger moved too fast, please do not lift until prompted - Parmak çok hızlı hareket etti, lütfen istenene kadar kaldırmayın - - - Unclear fingerprint - Net olmayan parmak izi - - - Clean your finger or adjust the finger position, and try again - Parmağınızı temizleyin veya parmak konumunu ayarlayın ve tekrar deneyin - - - Already scanned - Zaten tarandı - - - Adjust the finger position to scan your fingerprint fully - Parmak izinizi tamamen taramak için parmak konumunu ayarlayın - - - Finger moved too fast. Please do not lift until prompted - Parmak çok hızlı hareket etti. Lütfen istenene kadar kaldırmayın - - - Lift your finger and place it on the sensor again - Parmağınızı kaldırın ve yeniden algılayıcıya koyun - - - Position your face inside the frame - Yüzünüzü çerçevenin içine yerleştirin - - - Face enrolled - Yüz kayıtlı - - - Position a human face please - Bir insan yüzünü konumlandırın lütfen - - - Keep away from the camera - Kameradan uzak tutun - - - Get closer to the camera - Kameraya daha yakın ol - - - Do not position multiple faces inside the frame - Çerçevenin içine birden fazla yüz yerleştirmeyin - - - Make sure the camera lens is clean - Kamera merceğinin temiz olduğundan emin olun - - - Do not enroll in dark, bright or backlit environments - Karanlık, aydınlık veya arkadan aydınlatmalı ortamlara kaydolmayın - - - Keep your face uncovered - Yüzünü açık tut - - - Scan timed out - Tarama zaman aşımına uğradı - - - Device crashed, please scan again! - Cihaz çöktü, lütfen tekrar tarayın! - - - Cancel - İptal - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - İptal - - - Confirm - button - Onayla - - - - dccV23::AccountSpinBox - - Always - Her zaman - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Kullanıcı adı - - - Change Password - Parolayı Değiştir - - - Delete User - - - - User Type - - - - Auto Login - Otomatik Giriş - - - Login Without Password - Parola Olmadan Giriş - - - Validity Days - Geçerlilik Günü - - - Group - Grup - - - The full name is too long - Tam isim çok uzun - - - Standard User - Standart Kullanıcı - - - Administrator - Yönetici - - - Reset Password - Parolayı Sıfırla - - - The full name has been used by other user accounts - Tam ad diğer kullanıcı hesapları tarafından kullanılmış - - - Full Name - Tam İsim - - - Go to Settings - Ayarlara Git - - - Cancel - İptal - - - OK - Tamam - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - "Otomatik Giriş" yalnızca tek hesap için etkinleştirilebilir, lütfen önce "%1" hesabı için devre dışı bırakın - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Ana makineniz etki alanı sunucusundan başarıyla kaldırıldı - - - Your host joins the domain server successfully - Ana makineniz etki alanı sunucusuna başarıyla katıldı - - - Your host failed to leave the domain server - Ana makineniz etki alanı sunucusundan ayrılamadı - - - Your host failed to join the domain server - Ana makineniz etki alanı sunucusuna katılamadı - - - AD domain settings - Aktif Dizin etki alanı ayarları - - - Password not match - Parola eşleşmiyor - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Masaüstünde ve bildirim merkezinde %1 tarafından gönderilen bildirimleri göster. - - - Play a sound - Bir ses çal - - - Show messages on lockscreen - Kilit ekranında mesajları göster - - - Show in notification center - Bildirim merkezinde göster - - - Show message preview - Mesaj önizlemesini göster - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - İptal - - - Save - Kaydet - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Görseller - - - - dccV23::BootWidget - - Updating... - Güncelleniyor... - - - Startup Delay - Başlangıç ​​Gecikmesi - - - Theme - Tema - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - İlk önyükleme yapmak için önyükleme menüsündeki seçeneği tıklatın ve arka planı değiştirmek için bir resmi sürükleyip bırakın. - - - Click the option in boot menu to set it as the first boot - İlk önyükleme olarak ayarlamak için önyükleme menüsündeki seçeneğe tıklayın - - - Switch theme on to view it in boot menu - Önyükleme menüsünde görüntülemek için temayı etkinleştir - - - GRUB Authentication - GRUB Kimlik Doğrulaması - - - GRUB password is required to edit its configuration - Yapılandırmasını düzenlemek için GRUB parolası gerekiyor - - - Change Password - Parolayı Değiştir - - - Boot Menu - Önyükleme Menüsü - - - Change GRUB password - GRUB parolasını değiştir - - - Username: - Kullanıcı adı: - - - root - root - - - New password: - Yeni parola: - - - Repeat password: - Parolayı tekrarla: - - - Required - Gereklidir - - - Cancel - button - İptal - - - Confirm - button - Onayla - - - Password cannot be empty - Parola boş olamaz - - - Passwords do not match - Parolalar eşleşmiyor - - - - dccV23::BrightnessWidget - - Brightness - Parlaklık - - - Color Temperature - Renk Sıcaklığı - - - Auto Brightness - Otomatik Parlaklık - - - Night Shift - Gece Kipi - - - The screen hue will be auto adjusted according to your location - Ekran tonu bulunduğunuz yere göre otomatik ayarlanacaktır - - - Change Color Temperature - Renk Sıcaklığını Değiştir - - - Cool - Çok iyi - - - Warm - Sıcak - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Aygıtlarım - - - Other Devices - Diğer Aygıtlar - - - - dccV23::CommonInfoPlugin - - General Settings - Genel Ayarlar - - - Boot Menu - Önyükleme Menüsü - - - Developer Mode - Geliştirici Kipi - - - User Experience Program - Kullanıcı Deneyimi Programı - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Kabul Et ve Kullanıcı Deneyimi Programına Katıl - - - The Disclaimer of Developer Mode - Geliştirici Kipi Sorumluluk Reddi - - - Agree and Request Root Access - Kök Erişimi Kabul Et ve İste - - - Failed to get root access - Kök erişimi alınamadı - - - Please sign in to your Union ID first - Lütfen önce Union ID'nizde oturum açın - - - Cannot read your PC information - PC bilgileriniz okunamıyor - - - No network connection - Ağ bağlantısı yok - - - Certificate loading failed, unable to get root access - Sertifika yüklenemedi, kök erişimine erişilemedi - - - Signature verification failed, unable to get root access - İmza doğrulaması başarısız oldu, kök erişimine erişilemedi - - - - dccV23::CreateAccountPage - - Group - Grup - - - Cancel - İptal - - - Create - Oluştur - - - New User - - - - User Type - - - - Username - Kullanıcı adı - - - Full Name - Tam İsim - - - Password - Parola - - - Repeat Password - Parolayı Tekrarla - - - Password Hint - Parola İpucu - - - The full name is too long - Tam isim çok uzun - - - Passwords do not match - Parolalar eşleşmiyor - - - Standard User - Standart Kullanıcı - - - Administrator - Yönetici - - - Customized - Özelleştirilmiş - - - Required - Gereklidir - - - optional - isteğe bağlı - - - The hint is visible to all users. Do not include the password here. - İpucu tüm kullanıcılar tarafından görülebilir. Parolayı buraya dahil etmeyin. - - - Policykit authentication failed - Policykit doğrulanamadı - - - Username must be between 3 and 32 characters - Kullanıcı adı 3 ile 32 karakter arasında olmalıdır - - - The first character must be a letter or number - İlk karakter bir harf veya sayı olmalıdır - - - Your username should not only have numbers - Kullanıcı adınız sadece rakam içermemelidir - - - The username has been used by other user accounts - Kullanıcı adı diğer kullanıcı hesapları tarafından kullanılmış - - - The full name has been used by other user accounts - Tam ad diğer kullanıcı hesapları tarafından kullanılmış - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Görseller - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Özel Kısayol Ekle - - - Name - İsim - - - Required - Gereklidir - - - Command - Komut - - - Cancel - İptal - - - Add - Ekle - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Bu kısayol %1 ile çakışıyor, bu kısayolu hemen etkinleştirmek için Ekle üzerine tıkla - - - - dccV23::CustomEdit - - Required - Gereklidir - - - Cancel - İptal - - - Save - Kaydet - - - Shortcut - Kısayol - - - Name - İsim - - - Command - Komut - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Bu kısayol %1 ile çakışıyor, bu kısayolu hemen etkinleştirmek için Ekle üzerine tıkla - - - - dccV23::CustomItem - - Shortcut - Kısayol - - - Please enter a shortcut - Lütfen bir kısayol gir - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - Daha fazla ayrıntı için şu adresi ziyaret edin: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Kök Erişimi İsteği - - - Online - Çevrimiçi - - - Offline - Çevrimdışı - - - Please sign in to your Union ID first and continue - Lütfen önce Union ID'nizde oturum açın ve devam edin - - - Next - Sonraki - - - Export PC Info - PC Bilgisini Dışa Aktar - - - Import Certificate - Sertifikayı İçe Aktar - - - 1. Export your PC information - 1. PC bilgilerini dışa aktar - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Çevrimdışı sertifika indirmek için https://www.chinauos.com/developMode adresine gidin - - - 3. Import the certificate - 3. Sertifikayı içe aktar - - - - dccV23::DeveloperModeWidget - - Request Root Access - Kök Erişimi İsteği - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Geliştirici kipi, yönetici ayrıcalıklarına sahip olmanızı, uygulama mağazasında listelenmeyen imzasız uygulamaları yüklemenizi ve çalıştırmanızı sağlar, ancak sistem bütünlüğünüz de zarar görebilir, lütfen dikkatli kullanın. - - - The feature is not available at present, please activate your system first - Özellik şu anda kullanılamıyor, lütfen önce sisteminizi etkinleştirin - - - Failed to get root access - Kök erişimi alınamadı - - - Please sign in to your Union ID first - Lütfen önce Union ID'nizde oturum açın - - - Cannot read your PC information - PC bilgileriniz okunamıyor - - - No network connection - Ağ bağlantısı yok - - - Certificate loading failed, unable to get root access - Sertifika yüklenemedi, kök erişimine erişilemedi - - - Signature verification failed, unable to get root access - İmza doğrulaması başarısız oldu, kök erişimine erişilemedi - - - To make some features effective, a restart is required. Restart now? - Bazı özellikleri etkin hale getirmek için yeniden başlatma gerekir. Şimdi yeniden başlat? - - - Cancel - İptal - - - Restart Now - Şimdi Yeniden Başlat - - - Root Access Allowed - Kök Erişime İzin Verildi - - - - dccV23::DisplayPlugin - - Display - Ekran - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Çift Tıklama Sınaması - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Yineleme Gecikmesi - - - Short - Kısa - - - Long - Uzun - - - Repeat Rate - Yineleme Hızı - - - Slow - Yavaş - - - Fast - Hızlı - - - Test here - Burada test et - - - Numeric Keypad - Sayısal Klavye - - - Caps Lock Prompt - Büyük Harf Kilidi Bildirimi - - - - dccV23::GeneralSettingWidget - - Left Hand - Solak Düzeni - - - Disable touchpad while typing - Yazarken dokunmatik yüzeyi devre dışı bırak - - - Scrolling Speed - Kaydırma Hızı - - - Double-click Speed - Çift Tıklama Hızı - - - Slow - Yavaş - - - Fast - Hızlı - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Klavye Düzeni - - - Edit - Düzenle - - - Add Keyboard Layout - Klavye Düzeni Ekle - - - Done - Tamamla - - - - dccV23::KeyboardLayoutDialog - - Cancel - İptal - - - Add - Ekle - - - Add Keyboard Layout - Klavye Düzeni Ekle - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Klavye ve Dil - - - Keyboard - Klavye - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Klavye Düzeni - - - Language - Dil - - - Shortcuts - Kısayollar - - - - dccV23::MainWindow - - Help - Yardım - - - - dccV23::ModifyPasswdPage - - Change Password - Parolayı Değiştir - - - Reset Password - Parolayı Sıfırla - - - Resetting the password will clear the data stored in the keyring. - Parolanın sıfırlanması, anahtarlıkta depolanan verileri siler. - - - Current Password - Mevcut Parola - - - Forgot password? - Parolanızı mı unuttunuz? - - - New Password - Yeni Parola - - - Repeat Password - Parolayı Tekrarla - - - Password Hint - Parola İpucu - - - Cancel - İptal - - - Save - Kaydet - - - Passwords do not match - Parolalar eşleşmiyor - - - Required - Gereklidir - - - Optional - Seçimlik - - - Password cannot be empty - Parola boş olamaz - - - The hint is visible to all users. Do not include the password here. - İpucu tüm kullanıcılar tarafından görülebilir. Parolayı buraya dahil etmeyin. - - - Wrong password - Yanlış parola - - - New password should differ from the current one - Yeni parola mevcut paroladan farklı olmalıdır - - - System error - Sistem hatası - - - Network error - Ağ hatası - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - Pencereleri Topla - - - Screen rearrangement will take effect in %1s after changes - Ekran yeniden düzenlemesi, değişikliklerden sonra %1s içinde geçerli olacak - - - - dccV23::MousePlugin - - Mouse - Fare - - - General - Genel - - - Touchpad - Dokunmatik Yüzey - - - TrackPoint - İmleçDenetim - - - - dccV23::MouseSettingWidget - - Pointer Speed - İşaretçi Hızı - - - Mouse Acceleration - Fare Hızlandırması - - - Disable touchpad when a mouse is connected - Bir fare bağlandığında dokunmatik yüzeyi devre dışı bırak - - - Natural Scrolling - Doğal Kaydırma - - - Slow - Yavaş - - - Fast - Hızlı - - - - dccV23::MultiScreenWidget - - Multiple Displays - Çoklu Ekran - /display/Multiple Displays - - - Mode - Kip - /display/Mode - - - Main Screen - Ana Ekran - /display/Main Scree - - - Duplicate - Çoğalt - - - Extend - Genişlet - - - Only on %1 - Yanlız %1 üzerinde - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Bildirim - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Avuç İçi Algılaması - - - Minimum Contact Surface - Asgari Temas Yüzeyi - - - Minimum Pressure Value - Asgari Basınç Değeri - - - Disable the option if touchpad doesn't work after enabled - Dokunmatik yüzey çalışmazsa bu seçeneği devre dışı bırak - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Gizlilik Politikası - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Kişisel bilgilerinizin sizin için ne kadar önemli olduğunun son derece farkındayız. Dolayısıyla, bilgilerinizi nasıl topladığımızı, kullandığımızı, paylaştığımızı, aktardığımızı, kamuya açıkladığımızı ve sakladığımızı kapsayan Gizlilik Politikasına sahibiz.</p><p>En son gizlilik politikamızı görüntülemek için <a href="%1">buraya tıklayabilirsiniz</a> <a href="%1"> %1</a>. Lütfen müşteri gizliliğiyle ilgili uygulamalarımızı dikkatlice okuyun ve tam olarak anlayın.Herhangi bir sorunuz varsa, bize şu adresten ulaşabilirsiniz: support@uniontech.com</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Parola boş olamaz - - - Password must have at least %1 characters - Parola en az %1 karakter olmalıdır - - - Password must be no more than %1 characters - Parola %1 karakterden fazla olmamalıdır - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Parola yalnızca İngilizce harfler (büyük/küçük harfe duyarlı), sayılar veya özel simgeler içerebilir (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - En fazla %1 palindrom karakter lütfen - - - No more than %1 monotonic characters please - %1'den fazla monoton karakter yok lütfen - - - No more than %1 repeating characters please - Lütfen %1'den fazla yinelenen karakter yok - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Parola büyük harfler, küçük harfler, sayılar ve semboller içermeli (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - Parola 4'ten fazla tersten okunduğunda aynı olan karakter içermemelidir - - - Do not use common words and combinations as password - Parola olarak bilinen kelime ve kombinasyonlarını kullanmayın - - - Create a strong password please - Lütfen güçlü bir parola oluşturun - - - It does not meet password rules - Parola kurallarına uymuyor - - - - dccV23::RefreshRateWidget - - Refresh Rate - Yenileme Hızı - - - Hz - Hz - - - Recommended - Önerilen - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Bu hesabı silmek istediğinize emin misiniz? - - - Delete account directory - Hesap dizinini sil - - - Cancel - İptal - - - Delete - Sil - - - - dccV23::ResolutionWidget - - Resolution - Çözünürlük - /display/Resolution - - - Resize Desktop - Masaüstünü Yeniden Boyutlandır - /display/Resize Desktop - - - Default - Varsayılan - - - Fit - Sığdır - - - Stretch - Uzat - - - Center - Merkez - - - Recommended - Önerilen - - - - dccV23::RotateWidget - - Rotation - Döndür - /display/Rotation - - - Standard - Standart - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Ekran yalnızca %100 ekran ölçeklendirmeyi destekler - - - Display Scaling - Görüntü Ölçeği - - - - dccV23::SearchInput - - Search - Ara - - - - dccV23::SecondaryScreenDialog - - Brightness - Parlaklık - - - - dccV23::SecurityLevelItem - - Weak - Zayıf - - - Medium - Orta - - - Strong - Güçlü - - - - dccV23::SecurityQuestionsPage - - Security Questions - Güvenlik Soruları - - - These questions will be used to help reset your password in case you forget it. - Bu sorular, unutmanız durumunda parolanızı sıfırlamanıza yardımcı olmak için kullanılacaktır. - - - Security question 1 - Güvenlik sorusu 1 - - - Security question 2 - Güvenlik sorusu 2 - - - Security question 3 - Güvenlik sorusu 3 - - - Cancel - İptal - - - Confirm - Onayla - - - Keep the answer under 30 characters - Cevap 30 karakterden az olmalıdır - - - Do not choose a duplicate question please - Yinelenen bir soru seçmeyin - - - Please select a question - Lütfen bir soru seçin - - - What's the name of the city where you were born? - Doğduğun şehrin adı nedir? - - - What's the name of the first school you attended? - İlk okuduğun okulun adı nedir? - - - Who do you love the most in this world? - Dünyada en çok kimi seviyorsun? - - - What's your favorite animal? - Gözde hayvanın nedir? - - - What's your favorite song? - Gözde şarkın nedir? - - - What's your nickname? - Takma adın nedir? - - - It cannot be empty - Boş olamaz - - - - dccV23::SettingsHead - - Edit - Düzenle - - - Done - Tamamla - - - - dccV23::ShortCutSettingWidget - - System - Sistem - - - Window - Pencere - - - Workspace - Çalışma alanı - - - Assistive Tools - Yardımcı Araçlar - - - Custom Shortcut - Özel Kısayol - - - Restore Defaults - Varsayılanları Geri Yükle - - - Shortcut - Kısayol - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Lütfen Kısayolu Sıfırla - - - Cancel - İptal - - - Replace - Değiştir - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Bu kısayol %1 ile çakışıyor, bu kısayolu hemen etkinleştirmek için Değiştir üzerine tıkla - - - - dccV23::ShortcutItem - - Enter a new shortcut - Yeni bir kısayol gir - - - - dccV23::SystemInfoModel - - available - kullanılabilir - - - - dccV23::SystemInfoModule - - About This PC - Bu PC Hakkında - - - Computer Name - Bilgisayar Adı - - - systemInfo - - - - OS Name - OS Adı - - - Version - Sürüm - - - Edition - Sürüm - - - Type - Tür - - - Authorization - İzin - - - Processor - İşlemci - - - Memory - Bellek - - - Graphics Platform - - - - Kernel - Çekirdek - - - Agreements and Privacy Policy - - - - Edition License - Sürüm Lisansı - - - End User License Agreement - Son Kullanıcı Lisans Sözleşmesi - - - Privacy Policy - Gizlilik Politikası - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Sistem Bilgisi - - - - dccV23::SystemLanguageSettingDialog - - Cancel - İptal - - - Add - Ekle - - - Add System Language - Sistem Dili Ekle - - - - dccV23::SystemLanguageWidget - - Edit - Düzenle - - - Language List - Dil Listesi - - - Add Language - - - - Done - Tamamla - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Rahatsız Etme - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Uygulama bildirimleri masaüstünde gösterilmeyecek ve sesler susturulacak, ancak bildirim merkezindeki tüm mesajları görüntüleyebilirsiniz. - - - When the screen is locked - Ekran kilitlendiğinde - - - - dccV23::TimeSlotItem - - From - Buradan - - - To - Buraya - - - - dccV23::TouchScreenModule - - Touch Screen - Dokunmatik Ekran - - - Select your touch screen when connected or set it here. - Bağlandığınızda dokunmatik ekranınızı seçin veya buradan ayarlayın. - - - Confirm - Onayla - - - Cancel - İptal - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - İşaretçi Hızı - - - Slow - Yavaş - - - Fast - Hızlı - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Kullanıcı Deneyimi Programına Katıl - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Kullanıcı Deneyimi Programına katılarak cihazınız, sisteminiz, uygulamalarınız hakkında bilgi toplamamız ve işlemimize izin ve yetki veriyorsunuz. Eğer bilgilerinizin toplanıp, işlenmesini istemiyorsanız Kullanıcı deneyimi Programına katılmayın. Daha fazla bilgi için, lütfen Deepin Gizlilik Sözleşmesine bakın. (<a href="%1"> %1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Kullanıcı Deneyimi Programına katılmak, cihazınızın, sisteminizin ve uygulamalarınızın bilgilerini toplamamız ve kullanmamız için bize yetki verdiğiniz anlamına gelir. Yukarıda belirtilen bilgileri toplamamızı ve kullanmamızı reddederseniz, Kullanıcı Deneyimi Programına katılmayın. Verilerinizin yönetimi hakkında daha fazla bilgi için lütfen UnionTech OS Gizlilik Politikasına bakın. (<a href="%1"> %1</a>).</p> - - - - DateWidget - - Year - Yıl - - - Month - Ay - - - Day - Gün - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - NTP sunucusunu değiştirmek için kimlik doğrulaması gerekli - - - - DefAppModule - - Default Applications - Varsayılan Uygulamalar - - - - DefAppPlugin - - Webpage - Web sayfası - - - Mail - E-posta - - - Text - Metin - - - Music - Müzik - - - Video - Video - - - Picture - Resim - - - Terminal - Uçbirim - - - - DisclaimersDialog - - Disclaimer - Feragat - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Yüz tanımayı kullanmadan önce lütfen şunları unutmayın: -1. Cihazınızın kilidi, size benzeyen veya size benzeyen kişiler veya nesneler tarafından açılabilir. -2. Yüz tanıma, dijital parolalardan ve karma parolalardan daha az güvenlidir. -3. Yüz tanıma ile cihazınızın kilidini açma başarı oranı, düşük ışık, yüksek ışık, arka ışık, geniş açı senaryosu ve diğer senaryolarda azalacaktır. -4. Yüz tanımanın kötü niyetli kullanımından kaçınmak için lütfen cihazınızı rastgele başkalarına vermeyin. -5. Yukarıdaki senaryolara ek olarak, yüz tanımanın normal kullanımını etkileyebilecek diğer durumlara da dikkat etmelisiniz. - -Yüz tanımayı daha iyi kullanmak için yüz verilerini girerken lütfen aşağıdaki hususlara dikkat edin: -1. Lütfen iyi aydınlatılmış bir ortamda kalın, doğrudan güneş ışığından ve kaydedilen ekranda görünen diğer insanlardan kaçının. -2. Veri girerken lütfen yüz durumuna dikkat edin ve şapka, saç, güneş gözlüğü, maske, ağır makyaj ve diğer faktörlerin yüz hatlarınızı kapatmasına izin vermeyin. -3. Lütfen başınızı eğmekten, alçaltmaktan, gözlerinizi kapatmaktan, yüzünüzün yalnızca bir tarafını göstermekten kaçının ve istem kutusunda ön yüzünüzün net ve eksiksiz göründüğünden emin olun. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - "Biyometrik kimlik doğrulama", UnionTech Software Technology Co., Ltd. tarafından sağlanan kullanıcı kimliği kimlik doğrulaması için bir işlevdir. "Biyometrik kimlik doğrulama" yoluyla, toplanan biyometrik veriler cihazda depolanan verilerle karşılaştırılacak ve kullanıcı kimliği, karşılaştırma sonucu. -UnionTech Software'in yerel cihazınızda saklanacak olan biyometrik bilgilerinizi toplamayacağını veya bunlara erişmeyeceğini lütfen unutmayın. Lütfen yalnızca kişisel cihazınızda biyometrik doğrulamayı etkinleştirin ve ilgili işlemler için kendi biyometrik bilgilerinizi kullanın ve diğer kişilerin o cihazdaki biyometrik bilgilerini derhal devre dışı bırakın veya silin, aksi takdirde bundan kaynaklanan risk size aittir. -UnionTech Software, biyometrik kimlik doğrulamanın güvenliğini, doğruluğunu ve kararlılığını araştırmaya ve geliştirmeye kendini adamıştır. Ancak çevresel, ekipman, teknik ve diğer faktörler ve risk kontrolü nedeniyle biyometrik doğrulamayı geçici olarak geçeceğinizin garantisi yoktur. Bu nedenle, lütfen UnionTech OS'de oturum açmanın tek yolu olarak biyometrik doğrulamayı kabul etmeyin. Biyometrik kimlik doğrulamayı kullanırken herhangi bir sorunuz veya öneriniz varsa, UnionTech OS'deki "Servis ve Destek" aracılığıyla geri bildirimde bulunabilirsiniz. - - - - Cancel - İptal - - - Next - Sonraki - - - - DisclaimersItem - - I have read and agree to the - Okudum ve onaylıyorum - - - Disclaimer - Feragat - - - - DockModuleObject - - Dock - Rıhtım - - - Multiple Displays - Çoklu Ekran - - - Show Dock - Rıhtımı Göster - - - Mode - Kip - - - Position - Konum - - - Status - Durum - - - Show recent apps in Dock - - - - Size - Boyut - - - Plugin Area - Eklenti Alanı - - - Select which icons appear in the Dock - Rıhtım'da hangi simgelerin görüneceğini seçin - - - Fashion mode - Moda Kip - - - Efficient mode - Verimli Kip - - - Top - Üst - - - Bottom - Alt - - - Left - Sol - - - Right - Sağ - - - Location - Konum - - - Keep shown - Gösterilmeyi sürdür - - - Keep hidden - Gizli tut - - - Smart hide - Akıll gizle - - - Small - Küçük - - - Large - Büyük - - - On screen where the cursor is - İmlecin bulunduğu ekranda - - - Only on main screen - Sadece ana ekranda - - - - FaceInfoDialog - - Enroll Face - Kayıt Yüzü - - - Position your face inside the frame - Yüzünüzü çerçevenin içine yerleştirin - - - - FaceWidget - - Edit - Düzenle - - - Manage Faces - Yüzleri Yönet - - - You can add up to 5 faces - En fazla 5 yüz ekleyebilirsiniz - - - Done - Tamamla - - - Add Face - Yüz Ekle - - - The name already exists - Bu az zaten var - - - Faceprint - Yüz izi - - - - FaceidDetailWidget - - No supported devices found - Desteklenen cihaz bulunamadı - - - - FingerDetailWidget - - No supported devices found - Desteklenen cihaz bulunamadı - - - - FingerDisclaimer - - Add Fingerprint - Parmak İzi Ekle - - - Cancel - İptal - - - Next - Sonraki - - - - FingerInfoWidget - - Place your finger - Parmağınızı yerleştirin - - - Place your finger firmly on the sensor until you're asked to lift it - Kaldırmanız istenene kadar parmağınızı sensöre sıkıca yerleştirin - - - Scan the edges of your fingerprint - Parmak izinizin kenarlarını tarayın - - - Place the edges of your fingerprint on the sensor - Parmak izinizin kenarlarını sensöre yerleştirin - - - Lift your finger - Parmağınızı kaldırın - - - Lift your finger and place it on the sensor again - Parmağınızı kaldırın ve yeniden algılayıcıya koyun - - - Adjust the position to scan the edges of your fingerprint - Parmak izinizin kenarlarını taramak için konumu ayarlayın - - - Lift your finger and do that again - Parmağınızı kaldırın ve tekrar yapın - - - Fingerprint added - Parmak izi eklendi - - - - FingerWidget - - Edit - Düzenle - - - Fingerprint Password - Parmak İzi Parolası - - - You can add up to 10 fingerprints - En fazla 10 parmak izi ekleyebilirsiniz - - - Done - Tamamla - - - The name already exists - Bu az zaten var - - - Add Fingerprint - Parmak İzi Ekle - - - - GeneralModule - - General - Genel - - - Balanced - Dengeli - - - Balance Performance - - - - High Performance - Yüksek Performans - - - Power Saver - Güç Tasarrufu - - - Power Plans - Güç Planları - - - Power Saving Settings - Güç Tasarrufu Ayarları - - - Auto power saving on low battery - Düşük pilde otomatik güç tasarrufu - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Pilden otomatik güç tasarrufu - - - Wakeup Settings - Uyandırma Ayarları - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - Kısa çizgi ile başlayamaz veya bitemez - - - 1~63 characters please - 1~63 karakterler lütfen - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - Desteklenen cihaz bulunamadı - - - - IrisWidget - - Edit - Düzenle - - - Manage Irises - İrisleri Yönet - - - You can add up to 5 irises - En fazla 5 iris ekleyebilirsiniz - - - Done - Tamamla - - - Add Iris - İris ekle - - - The name already exists - Bu az zaten var - - - Iris - İris - - - - KeyLabel - - None - Yok - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright© 2011-%1 Deepin Topluluğu - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - MicrophonePage - - Input Device - Giriş Cihazı - - - Automatic Noise Suppression - Otomatik Gürültü Bastırma - - - Input Volume - Ses Girişi - - - Input Level - Giriş Seviyesi - - - - PersonalizationDesktopModule - - Desktop - Masaüstü - - - Window - Pencere - - - Window Effect - Pencere Etkisi - - - Window Minimize Effect - Pencere Küçültme Efekti - - - Transparency - Saydamlık - - - Rounded Corner - Yuvarlak Köşe - - - Scale - Ölçek - - - Magic Lamp - Sihirli Işık - - - Small - Küçük - - - Middle - - - - Large - Büyük - - - - PersonalizationModule - - Personalization - Kişiselleştir - - - - PersonalizationThemeList - - Cancel - İptal - - - Save - Kaydet - - - Light - Açık - - - Dark - Koyu - - - Auto - Otomatik - - - Default - Varsayılan - - - - PersonalizationThemeModule - - Theme - Tema - - - Appearance - Görünüm - - - Accent Color - Vurgu Rengi - - - Icon Settings - - - - Icon Theme - Simge Teması - - - Cursor Theme - İmleç Teması - - - Text Settings - - - - Font Size - Yazı boyutu - - - Standard Font - Standart Yazı Tipi - - - Monospaced Font - Sabit Aralıklı Yazı Tipi - - - Light - Açık - - - Auto - Otomatik - - - Dark - Koyu - - - - PersonalizationThemeWidget - - Light - Açık - General - /personalization/General - - - Dark - Koyu - General - /personalization/General - - - Auto - Otomatik - General - /personalization/General - - - Default - Varsayılan - - - - PersonalizationWorker - - Custom - Özel - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Bluetooth aygıtına bağlanmak için PIN kodu: - - - Cancel - İptal - - - Confirm - Onayla - - - - PowerModule - - Power - Güç - - - Battery low, please plug in - Düşük pil düzeyi, lütfen fişe takın - - - Battery critically low - Pil kritik derecede düşük - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Kamera - - - Microphone - Mikrofon - - - User Folders - - - - Calendar - Takvim - - - Screen Capture - - - - - QObject - - Control Center - Kontrol Merkezi - - - , - - - - Error occurred when reading the configuration files of password rules! - Parola kurallarının yapılandırma dosyaları okunduğu zaman hata oluştu! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Etkin - - - View - Görünüm - - - To be activated - Etkinleştirilecek - - - Activate - Etkinleştir - - - Expired - Süresi doldu - - - In trial period - Deneme süresinde - - - Trial expired - Deneme süresi doldu - - - Touch Screen Settings - Dokunmatik Ekran Ayarları - - - The settings of touch screen changed - Dokunmatik ekranın ayarları değişti - - - Checking system versions, please wait... - Sistem sürümleri kontrol ediliyor, lütfen bekleyin... - - - Leave - Ayrıl - - - Cancel - İptal - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Sisteminiz yetkilendirilmedi, lütfen önce etkinleştirin - - - Update successful - Güncelleme başarılı - - - Failed to update - Güncelleme başarısız - - - - SearchInput - - Search - Ara - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Ses Etkileri - - - - SoundModel - - Boot up - Önyükleme - - - Shut down - Kapat - - - Log out - Oturumu kapat - - - Wake up - Uyan - - - Volume +/- - Ses +/- - - - Notification - Bildirim - - - Low battery - Düşük pil - - - Send icon in Launcher to Desktop - Başlatıcı'dan Masaüstüne simge gönder - - - Empty Trash - Çöpü Boşalt - - - Plug in - Fişe tak - - - Plug out - Fişten çıkar - - - Removable device connected - Çıkarılabilir aygıt bağlandı - - - Removable device removed - Çıkarılabilir aygıt kaldırıldı - - - Error - Hata - - - - SoundModule - - Sound - Ses - - - - SoundPlugin - - Output - Çıkış - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Giriş - - - Sound Effects - Ses Etkileri - - - Devices - Aygıtlar - - - Input Devices - Giriş Cihazları - - - Output Devices - Çıkış Cihazları - - - - SpeakerPage - - Output Device - Çıkış Cihazı - - - Mode - Kip - - - Output Volume - Ses Çıkışı - - - Volume Boost - Ses Artışı - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Sol/Sağ Dengesi - - - Left - Sol - - - Right - Sağ - - - - TimeSettingModule - - Time Settings - Zaman Ayarları - - - Time - Zaman - - - Auto Sync - Otomatik Eşitle - - - Reset - Sıfırla - - - Save - Kaydet - - - Server - Sunucu - - - Address - Adres - - - Required - Gereklidir - - - Customize - Özelleştir - - - Year - Yıl - - - Month - Ay - - - Day - Gün - - - - TimeZoneChooser - - Cancel - İptal - - - Confirm - Onayla - - - Add Timezone - Saat Dilimi Ekle - - - Add - Ekle - - - Change Timezone - Saat Dilimini Değiştir - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Eski haline döndür - - - Save - Kaydet - - - - TimezoneItem - - Tomorrow - Yarın - - - Yesterday - Dün - - - Today - Bugün - - - %1 hours earlier than local - Yerelden %1 saat önce - - - %1 hours later than local - Yerelden %1 saat sonra - - - - TimezoneModule - - Timezone List - Saat Dilimi Listesi - - - System Timezone - Sistem Saat Dilimi - - - Add Timezone - Saat Dilimi Ekle - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Kullanıcı hesabı Union ID'ye bağlı değil - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Parolaları sıfırlamak için önce Union ID'nizi doğrulamanız gerekir. Ayarları tamamlamak için "Bağlantıya Git"e tıklayın. - - - Cancel - İptal - - - Go to Link - Bağlantıya Git - - - - UnknownUpdateItem - - Release date: - Yayın tarihi: - - - - UpdateCtrlWidget - - Check Again - Tekrar Kontrol Et - - - Update failed: insufficient disk space - Güncelleme başarısız oldu: yetersiz disk alanı - - - Dependency error, failed to detect the updates - Bağımlılık sorunu, güncellemeler belirlenemedi - - - Restart the computer to use the system and the applications properly - Sistemi ve uygulamaları doğru kullanmak için bilgisayarı yeniden başlat - - - Network disconnected, please retry after connected - Ağ bağlantısı kesildi, lütfen bağlandıktan sonra tekrar dene - - - Your system is not authorized, please activate first - Sisteminiz yetkilendirilmedi, lütfen önce etkinleştirin - - - This update may take a long time, please do not shut down or reboot during the process - Güncelleme uzun sürebilir. Lütfen işlem sürerken bilgisayarı kapatmayın ya da yeniden başlatmayın - - - Updates Available - Güncelleme Kullanılabilir - - - Current Edition - Mevcut Sürüm - - - Updating... - Güncelleniyor... - - - Update All - Tümünü Güncelle - - - Last checking time: - Son kontrol zamanı: - - - Your system is up to date - Sisteminiz güncel - - - Check for Updates - Güncellemeleri kontrol et - - - Checking for updates, please wait... - Güncellemeler denetleniyor, lütfen bekleyin... - - - The newest system installed, restart to take effect - En yeni sistem kuruldu, etkin olması için yeniden başlat - - - %1% downloaded (Click to pause) - %1% indirildi (Duraklatmak için tıkla) - - - %1% downloaded (Click to continue) - %1% indirildi (Sürdürmek için tıkla) - - - Your battery is lower than 50%, please plug in to continue - Pil düzeyiniz %50 değerinin altında, lütfen devam etmek için fişe takın - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Lütfen yeniden başlatmak için yeterli güç sağlayın ve makinenizi kapatmayın veya fişten çekmeyin - - - Size - Boyut - - - - UpdateModule - - Updates - Güncellemeler - - - - UpdatePlugin - - Check for Updates - Güncellemeleri kontrol et - - - - UpdateSettingItem - - Insufficient disk space - Yetersiz disk alanı - - - Update failed: insufficient disk space - Güncelleme başarısız oldu: yetersiz disk alanı - - - Update failed - Güncelleştirme başarısız - - - Network error - Ağ hatası - - - Network error, please check and try again - Ağ hatası, lütfen kontrol edip tekrar deneyin - - - Packages error - Paket hatası - - - Packages error, please try again - Paket hatası, lütfen tekrar deneyin - - - Dependency error - Bağımlılık hatası - - - Unmet dependencies - Karşılanmayan bağımlılıklar - - - The newest system installed, restart to take effect - En yeni sistem kuruldu, etkin olması için yeniden başlat - - - Waiting - Bekliyor - - - Backing up - Yedekleme - - - System backup failed - Sistem yedekleme başarısız - - - Release date: - Yayın tarihi: - - - Server - Sunucu - - - Desktop - Masaüstü - - - Version - Sürüm - - - - UpdateSettingsModule - - Update Settings - Güncelleme Ayarları - - - System - Sistem - - - Security Updates Only - Yalnızca Güvenlik Güncellemeleri - - - Switch it on to only update security vulnerabilities and compatibility issues - Yalnızca güvenlik açıklarını ve uyumluluk sorunlarını güncellemek için açın - - - Third-party Repositories - Üçüncü Taraf Depolar - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - Diğer ayarlar - - - Auto Check for Updates - Güncellemeleri Otomatik Kontrol Et - - - Auto Download Updates - Güncellemeleri Otomatik İndir - - - Switch it on to automatically download the updates in wireless or wired network - Bu seçenek etkinleştirildiğinde, güncellemeler kablosuz ya da kablolu ağdan otomatik olarak indirilir - - - Auto Install Updates - Güncellemeleri Otomatik Yükle - - - Updates Notification - Güncelleme Bildirimi - - - Clear Package Cache - Paket Önbelleğini Temizle - - - Updates from Internal Testing Sources - Dahili test kaynaklarından güncellemeler - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - Sistem Güncellemeleri - - - Security Updates - Güvenlik Güncellemeleri - - - Install updates automatically when the download is complete - İndirme tamamlandığında güncellemeleri otomatik olarak yükleyin - - - Install "%1" automatically when the download is complete - İndirme tamamlandığında "%1"i otomatik olarak yükleyin - - - - UpdateWidget - - Current Edition - Mevcut Sürüm - - - - UpdateWorker - - System Updates - Sistem Güncellemeleri - - - Fixed some known bugs and security vulnerabilities - Bilinen bazı hatalar ve güvenlik açıkları düzeltildi - - - Security Updates - Güvenlik Güncellemeleri - - - Third-party Repositories - Üçüncü Taraf Depolar - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Pilde - - - Never - Asla - - - Shut down - Kapat - - - Suspend - Askıya al - - - Hibernate - Uyut - - - Turn off the monitor - Monitörü kapat - - - Do nothing - Hiçbir şey yapma - - - 1 Minute - 1 Dakika - - - %1 Minutes - %1 Dakika - - - 1 Hour - 1 Saat - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Sonrasında ekranı kilitle - - - Computer suspends after - - - - Computer will suspend after - Bilgisayarın askıya alınma süresi - - - When the lid is closed - Kapak kapatıldığında - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Düşük pil seviyesi - - - Auto suspend battery level - Pil seviyesini otomatik askıya al - - - Battery Management - - - - Display remaining using and charging time - Kalan kullanım ve şarj süresini göster - - - Maximum capacity - Azami kapasite - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Fişe Takılı - - - 1 Minute - 1 Dakika - - - %1 Minutes - %1 Dakika - - - 1 Hour - 1 Saat - - - Never - Asla - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Sonrasında ekranı kilitle - - - Computer suspends after - - - - When the lid is closed - Kapak kapatıldığında - - - When the power button is pressed - - - - Shut down - Kapat - - - Suspend - Askıya al - - - Hibernate - Uyut - - - Turn off the monitor - Monitörü kapat - - - Show the shutdown Interface - - - - Do nothing - Hiçbir şey yapma - - - - WacomModule - - Drawing Tablet - Çizim Tableti - - - Mode - Kip - - - Pressure Sensitivity - Basınç Duyarlığı - - - Pen - Kalem - - - Mouse - Fare - - - Light - Açık - - - Heavy - Ağır - - - - main - - Control Center provides the options for system settings. - Kontrol Merkezi, sistem ayarları için seçenekler sunar. - - - - updateControlPanel - - Downloading - İndiriliyor - - - Waiting - Bekliyor - - - Installing - Yükleniyor - - - Backing up - Yedekleme - - - Download and install - İndir ve yükle - - - Learn more - Daha fazla bilgi edin - - - diff --git a/dcc-old/translations/dde-control-center_tzm.ts b/dcc-old/translations/dde-control-center_tzm.ts deleted file mode 100644 index 5b08b18f24..0000000000 --- a/dcc-old/translations/dde-control-center_tzm.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - Allalen inu - - - Other Devices - Allalen yaḍnin - - - Show Bluetooth devices without names - - - - Connect - Zdy - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - Azday - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Sser - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - Rgel - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Sser - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Izdy - - - Not connected - - - - - BluetoothModule - - Bluetooth - Ablutut - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Sser - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Sser - - - Confirm - button - Ssentem - - - - dccV23::AccountSpinBox - - Always - Abda - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - Ssenfel Taguri n uzray - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - Tarabbut - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - Ddu ɣer tsɣal - - - Cancel - Sser - - - OK - Wax - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Sser - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Tiwlafin - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - Asgum - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Ssenfel Taguri n uzray - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - Sser - - - Confirm - button - Ssentem - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Allalen inu - - - Other Devices - Allalen yaḍnin - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - Tarabbut - - - Cancel - Sser - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - Taguri n uzray - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Tiwlafin - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - Sser - - - Add - Rnu - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - Sser - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Sser - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - Ssenfel - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - Sser - - - Add - Rnu - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - Tiwisi - - - - dccV23::ModifyPasswdPage - - Change Password - Ssenfel Taguri n uzray - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - Taguri n uzray tamaynut - - - Repeat Password - - - - Password Hint - - - - Cancel - Sser - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Taɣerdayt - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Tineɣmisin - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - Hz - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Sser - - - Delete - Kkes - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Sser - - - Confirm - Ssentem - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Ssenfel - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - Anegraw - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Sser - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Sser - - - Add - Rnu - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - Ssenfel - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Ssentem - - - Cancel - Sser - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - Aḍṛiṣ - - - Music - Aẓawan - - - Video - Avidyu - - - Picture - Tawlaft - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Sser - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Ssenfel - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Sser - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - Ssenfel - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Ssenfel - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - Sser - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - Asgum - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Sser - - - Confirm - Ssentem - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Sser - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - Ssexsi - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - Tineɣmisin - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Imesli - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Sser - - - Confirm - Ssentem - - - Add Timezone - - - - Add - Rnu - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - Assennaṭ - - - Today - Ass-a - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Sser - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - Anegraw - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - Usar - - - Shut down - Ssexsi - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - Usar - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - Ssexsi - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - Taɣerdayt - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_ug.ts b/dcc-old/translations/dde-control-center_ug.ts deleted file mode 100644 index 15827fa68b..0000000000 --- a/dcc-old/translations/dde-control-center_ug.ts +++ /dev/null @@ -1,3984 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - كۆكچىش ئۈسكۈنىسىنى بايقىغىلى بولىدىغان قىلىش - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - كۆكچىش ئارقىلىق يېقىن ئەتراپتىكى ئۈسكۈنىلەرنى (ياڭراتقۇ ، كۇنۇپكا تاختىسى ، مائۇس) تېپىڭ. - - - My Devices - ئۈسكۈنەم - - - Other Devices - باشقا ئۈسكۈنە - - - Show Bluetooth devices without names - نامى يوق كۆكچىش ئۈسكۈنىسى كۆرسىتىلدى - - - Connect - ئۇلاش - - - Disconnect - ئۈزۈش - - - Rename - قايتا ئىسىم قويۇش - - - Send Files - ھۆججەت يوللاش - - - Ignore this device - بۇ ئۈسكۈنىگە پەرۋا قىلماڭ - - - Connecting - ئۇلىنىۋاتىدۇ - - - Disconnecting - ئۈزۈلۈۋاتىدۇ - - - - AddButtonWidget - - Add Application - ئىلتىماس قوشۇش - - - Open Desktop file - ئۈستەل يۈزى ھۆججىتىنى ئېچىش - - - Apps (*.desktop) - ئەپلەر (*.desktop) - - - All files (*) - بارلىق ھۆججەتلەر (*) - - - - AddFaceInfoDialog - - Enroll Face - چىراي قۇلۇپى قوشۇش - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - بەش ئەزانىڭ تولۇق چىقىشىغا كاپالەتلىك قىلىڭ،قالپاق،كۆزئەينەك،ماسكا قاتارلىق بۇيۇم بىلەن يۈزنى ئېتىۋالماڭ،نۇر يىتەرلىك بولسۇن ، شۇندىلا تونۇتۇش-كىرگۈزۈش ئاسان بولىدۇ - - - Cancel - بىكار قىلىش - - - Next - كېيىنكى - - - Face enrolled - چىراي تونۇش كىرگۈزۈش مۇۋەپپەقىيەتلىك بولدى - - - Use your face to unlock the device and make settings later - ئۈسكۈنىنى چىراي ئارقىلىق ئېچىڭ، ئاندىن تېخىمۇ كۆپ تەڭشەكلەرنى تەڭشىيەلەيسىز - - - Done - تامام - - - Failed to enroll your face - چىرايىڭىزنى تونۇش مەغلۇپ بولدى - - - Try Again - قايتا كىرگۈزۈش - - - Close - تاقاش - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - كۆز رەڭدار پەردىسى ئۇچۇرى قوشۇش - - - Cancel - بىكار قىلىش - - - Next - كېيىنكى - - - Iris enrolled - كۆز رەڭدار پەردىسى تونۇش مۇۋاپىقىيەتلىك بولدى - - - Done - تامام - - - Failed to enroll your iris - كۆز رەڭدار پەردىسى تونۇش مەغلۇپ بولدى - - - Try Again - قايتا كىرگۈزۈش - - - - AuthenticationInfoItem - - No more than 15 characters - 15 ھەرپ-بەلگىدىن ئېشىپ كەتسە بولمايدۇ - - - Use letters, numbers and underscores only, and no more than 15 characters - پەقەت ھەرپ، رەقەم، خەنزۇچە خەت، ئاستى سىزىقتىن تەركىب تاپىدۇ ، ھەمدە 15 ھەرپ-بەلگىدىن ئېشىپ كەتمەيدۇ - - - Use letters, numbers and underscores only - پەقەت ھەرپ، رەقەم، ئاستى سىزىق ئىشلىتىشكە بولىدۇ - - - - AuthenticationModule - - Biometric Authentication - بىئولوگىيىلىك دەلىللەش - - - - AuthenticationPlugin - - Fingerprint - بارماق ئىزى - - - Face - چىراي - - - Iris - كۆز رەڭدار پەردىسى - - - - BluetoothDeviceModel - - Connected - ئۇلاندى - - - Not connected - ئۇلانمىدى - - - - BluetoothModule - - Bluetooth - كۆكچىش - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - بارماق ئىزى1 - - - Fingerprint2 - بارماق ئىزى2 - - - Fingerprint3 - بارماق ئىزى3 - - - Fingerprint4 - بارماق ئىزى4 - - - Fingerprint5 - بارماق ئىزى5 - - - Fingerprint6 - بارماق ئىزى6 - - - Fingerprint7 - بارماق ئىزى7 - - - Fingerprint8 - بارماق ئىزى8 - - - Fingerprint9 - بارماق ئىزى9 - - - Fingerprint10 - بارماق ئىزى10 - - - Scan failed - بارماق ئىزى تىزىملانمىدى - - - The fingerprint already exists - بۇ بارماق ئىزى تىزىملىنىپ بولغان - - - Please scan other fingers - باشقا بارمىقىڭىزنى سىناپ بېقىڭ - - - Unknown error - نامەلۇم خاتالىق - - - Scan suspended - بارماق ئىزىنى تىزىملىتىش ئۈزۈلۈپ قالدى - - - Cannot recognize - تونىيالمىدى - - - Moved too fast - تېگىشىش ۋاقتى قىسقا - - - Finger moved too fast, please do not lift until prompted - تېگىشىش ۋاقتى قىسقا بولۇپ قالدى، دەلىللىگەندە بارمىقىڭىزنى مىدىرلاتماڭ - - - Unclear fingerprint - سۈرەت سۇس - - - Clean your finger or adjust the finger position, and try again - قولىڭىزنى تازىلاڭ ياكى تېگىشىش ئورنىنى تەڭشەڭ، ئاندىن بارمىقىڭىزنى قايتا قويۇپ سىناپ بېقىڭ - - - Already scanned - سۈرەت قايتىلىنىپ قالغان - - - Adjust the finger position to scan your fingerprint fully - بارمىقىڭىز تەڭگەن رايوننى تەڭشەپ تېخىمۇ كۆپ بارماق ئىزى تىزىملىتىڭ - - - Finger moved too fast. Please do not lift until prompted - بارماق ئىزى ئېلىنىۋاتقاندا بارمىقىڭىزنى ئېلىش ئەسكەرتىشى چىقمىغۇچە بارمىقىڭىزنى مىدىرلاتماڭ - - - Lift your finger and place it on the sensor again - بارمىقىڭىزنى ئېلىپ قايتا بېسىڭ - - - Position your face inside the frame - يۈز قىسمىڭىزنىڭ پەرقلەندۈرۈش دائىرىسى ئىچىدە بولۇشىغا كاپالەتلىك قىلىڭ - - - Face enrolled - چىراي تونۇش كىرگۈزۈش مۇۋەپپەقىيەتلىك بولدى - - - Position a human face please - راست ئادەم چىرايىنى ئىشلىتىڭ - - - Keep away from the camera - كامېرا كۆزىگە توغۇرلىنىڭ،بەك يېقىن ياكى يېراق تۇرۋالماڭ - - - Get closer to the camera - كامېراغا يېقىنلىشىڭ - - - Do not position multiple faces inside the frame - كۆپ ئادەم بولسا بولمايدۇ - - - Make sure the camera lens is clean - كامېرا كۆزىنىڭ پاكىزلىقىغا كاپالەتلىك قىلىڭ - - - Do not enroll in dark, bright or backlit environments - قاراڭغۇ نۇر، كۈچلۈك نۇر، تەتۈر نۇر مۇھىتىدا مەشغۇلات قىلىشتىن ساقلىنىڭ - - - Keep your face uncovered - يۇزىڭىز ئۆلچەملىك چىقىمىدى - - - Scan timed out - كىرگۈزۈش ۋاقتى ئېشىپ كەتتى - - - Device crashed, please scan again! - تونۇش ئۈسكۈنىسى بىنورمال،قايتا تونۇتۇڭ - - - Cancel - بىكار قىلىش - - - - CooperationSettingsDialog - - Collaboration Settings - ھەمكارلىشىش تەڭشىكى - - - Share mouse and keyboard - مائۇس بىلەن كۇنۇپكا تاختىسىنى ھەمبەھىرلەش - - - Share your mouse and keyboard across devices - ئاچقاندىن ھەمكارلىشىدىغان ئۈسكۈنىدە مائۇس بىلەن كۇنۇپكا تاختىسىدىن ھەمبەھىرلەنگىلى بولىدۇ - - - Share clipboard - چاپلاش تاختىسىنى ھەمبەھىرلەش - - - Storage path for shared files - ھەمبەھىرلىنىدىغان ھۆججەت قىسقۇچ - - - Share the copied content across devices - ئاچقاندىن كېيىن ھەمكارلىشىدىغان ئۈسكۈنىلەر ئارا كۆچۈرگەن مەزمۇندىن ھەمبەھىرلەنگىلى بولىدۇ - - - Cancel - button - بىكار قىلىش - - - Confirm - button - جەزملەش - - - - dccV23::AccountSpinBox - - Always - ئۇزاق ئۈنۈملۈك - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - ئىشلەتكۈچى نامى - - - Change Password - پارولنى ئۆزگەرتىش - - - Delete User - - - - User Type - - - - Auto Login - ئاپتوماتىك كىرىش - - - Login Without Password - پارولسىز كىرىش - - - Validity Days - ئىناۋەتلىك كۈنلەر - - - Group - گۇرۇپپا - - - The full name is too long - تولۇق ئىسمى بەك ئۇزۇن - - - Standard User - ئۆلچەملىك ئىشلەتكۈچى - - - Administrator - باشقۇرغۇچى - - - Reset Password - قايتا پارول تەكشەش - - - The full name has been used by other user accounts - تولۇق نامى باشقا ھېسابات نومۇرىنىڭ تولۇق نامى / ئىشلەتكۈچى نامى بىلەن تەكرارلىنىپ قالدى - - - Full Name - تولۇق نامى - - - Go to Settings - تەڭشەكلەرگە بېرىش - - - Cancel - بىكار قىلىش - - - OK - جەزىملەشتۈرۈش - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - پەقەت بىر ھېساباتنىڭ ئاپتوماتىك تىزىملىنىشىنى ئېچىشقا يول قويۇلىدۇ، ئالدى بىلەن %1 نىڭ ئاپتوماتىك تىزىملىنىشىنى تاقاپ ئاندىن مەشغۇلات قىلىڭ - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - باش كومپيۇتېرىڭىز دائىرە مۇلازىمىتېرىدىن چېكىندى - - - Your host joins the domain server successfully - باش كومپيۇتېرىڭىز دائىرە مۇلازىمىتېرىگە كىردى - - - Your host failed to leave the domain server - باش كومپيۇتېرىڭىز دائىرە مۇلازىمىتېرىدىن چېكىنەلمىدى - - - Your host failed to join the domain server - باش كومپيۇتېرىڭىز دائىرە مۇلازىمىتېرىگە كىرەلمىدى - - - AD domain settings - AD دائىرە تەڭشىكى - - - Password not match - پارول بىردەك ئەمەس - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - %1 نىڭ ئۇقتۇرۇش يوللىشىغا رۇخسەت قىلسىڭىز، ئۇچۇرنى ئېكراندا توغرىسىغا كۆرسىتەلەيدۇ، ئۇقتۇرۇش مەركىزىدىن بۇرۇنقى ئوقۇلمىغان ئۇچۇرلارنىمۇ كۆرەلەيسىز. - - - Play a sound - ئۇقتۇرۇش كەلگەندە ئاۋازلىق ئەسكەرتسۇن - - - Show messages on lockscreen - ئېكران تاقاق ھالەتتە ئۇچۇر كۆرۈنسۇن - - - Show in notification center - ئۇقتۇرۇش مەركىزىدە كۆرۈنسۇن - - - Show message preview - ئۇچۇرنىڭ ئاساسىي مەزمۇنى كۆرۈنسۇن - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - بىكار قىلىش - - - Save - ساقلاش - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - رەسىملەر - - - - dccV23::BootWidget - - Updating... - يېڭىلاۋاتىدۇ... - - - Startup Delay - قوزغىلىشنى ساقلاش - - - Theme - ئۇسلۇب - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - قوزغىتىش تىزىملىكىدىكى تاللاشنى چېكىپ ئۇنى تۇنجى قوزغىتىش قىلىپ تەڭشەڭ ، رەسىمنى سۆرەپ تاشلاپ تەگلىكنى ئۆزگەرتىڭ - - - Click the option in boot menu to set it as the first boot - تىزىملىكنى چېكىپ ئۇنىڭ قوزغىلىش تۈرىنى ئۆزگەرتەلەيسىز - - - Switch theme on to view it in boot menu - باشتېمىنى قوزغىتىپ ئۇنى قوزغىتىش تىزىملىكىدە كۆرۈش - - - GRUB Authentication - grubدەلىللەش - - - GRUB password is required to edit its configuration - ئاچقاندىن كېيىن grub غا كىرىپ تەھرىرلەش ئۈچۈن مەخپىي نومۇر كېتىدۇ. - - - Change Password - پارولنى ئۆزگەرتىش - - - Boot Menu - قوزغىلىش تىزىملىكى - - - Change GRUB password - GRUP پارولىنى ئۆزگەرتىش - - - Username: - ئىشلەتكۈچى نامى: - - - root - ROOT - - - New password: - يېڭى پارول: - - - Repeat password: - پارولنى يەنە كىرگۈزۈڭ : - - - Required - چوقۇم تولدۇرۇڭ - - - Cancel - button - بىكار قىلىش - - - Confirm - button - جەزملەشتۈرۈش - - - Password cannot be empty - پارول قۇرۇق قالسا بولمايدۇ - - - Passwords do not match - پارول بىردەك ئەمەس - - - - dccV23::BrightnessWidget - - Brightness - يورۇقلۇقى - - - Color Temperature - رەڭ تېمپېراتۇرىسى - - - Auto Brightness - يورۇقلۇقنى ئاپتوماتىك تەڭشەش - - - Night Shift - رەڭنى ئاپتوماتىك تەڭشەش - - - The screen hue will be auto adjusted according to your location - ئېكران رەڭگى ئورنىڭىزغا ئاساسەن ئاپتوماتىك تەڭشىلىدۇ - - - Change Color Temperature - قولدا تەڭشەش - - - Cool - سوغۇقراق - - - Warm - ئىللىقراق - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - كومپيۇتېرلار ئارا ھەمكارلىشىش - - - PC Collaboration - ھەمكارلىشىدىغان كومپيۇتېر - - - Connect to - ئۈسكۈنە ئۇلاش - - - Select a device for collaboration - ھەمكارلىشىدىغان ئۈسكۈنىنى تاللاڭ - - - Device Orientation - ئۇلاش ئۇسۇلى - - - On the top - ئېكراننىڭ ئۈستىدە - - - On the right - ئېكراننىڭ ئوڭ تەرىپىدە - - - On the bottom - ئېكراننىڭ ئاستىدا - - - On the left - ئېكراننىڭ سول تەرىپىدە - - - My Devices - ئۈسكۈنەم - - - Other Devices - باشقا ئۈسكۈنىلەر - - - - dccV23::CommonInfoPlugin - - General Settings - ئادەتتىكى تەڭشەكلەر - - - Boot Menu - قوزغىلىش تىزىملىكى - - - Developer Mode - ئاچقۇچى ھالىتى - - - User Experience Program - ئىشلەتكۈچى تەسىرات پىلانى - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - ئىشلەتكۈچى تەجرىبە پروگراممىسىغا قوشۇلۇش - - - The Disclaimer of Developer Mode - ئاچقۇچىلار ھالىتىنىڭ ئاگاھلاندۇرۇشى - - - Agree and Request Root Access - يىلتىز زىيارەت قىلىشنى تەلەپ قىلىش ۋە قوشۇلۇش - - - Failed to get root access - باشقۇرغۇچى ھوقۇقىغا ئېرىشەلمىدى - - - Please sign in to your Union ID first - ئاۋۋال Union ID رىڭىزغا كىرىڭ - - - Cannot read your PC information - كومپيۇتېرىڭىزنىڭ ئۇچۇرلىرىنى ئوقۇيالمىدى - - - No network connection - تور ئۇلىنىشى يوق - - - Certificate loading failed, unable to get root access - گۇۋاھنامە قاچىلاش مەغلۇب بولدى ، root ھوقۇقىغا ئېرىشەلمىدى - - - Signature verification failed, unable to get root access - ئىمزا دەلىللەش مەغلۇپ بولدى ، root ھوقۇقىغا ئېرىشەلمىدى - - - - dccV23::CreateAccountPage - - Group - گۇرۇپپا - - - Cancel - بىكار قىلىش - - - Create - يېڭىدىن قۇرۇش - - - New User - - - - User Type - - - - Username - ئىشلەتكۈچى ئىسمى - - - Full Name - تولۇق نامى - - - Password - پارول - - - Repeat Password - پارولنى يەنە كىرگۈزۈڭ - - - Password Hint - پارول ئەسكەرتمىسى - - - The full name is too long - تولۇق ئىسمى بەك ئۇزۇن - - - Passwords do not match - پارول بىردەك ئەمەس - - - Standard User - ئۆلچەملىك ئىشلەتكۈچى - - - Administrator - باشقۇرغۇچى - - - Customized - مۇشتەرى ئىشلەتكۈچى - - - Required - چوقۇم تولدۇرۇڭ - - - optional - ئىختىيارىي - - - The hint is visible to all users. Do not include the password here. - پارول ئەسكەرتمىسى ھەممە ئادەمگە كۆرۈنىدۇ ، مەخپىي نومۇر قاتارلىق مۇھىم ئۇچۇرلار بولمىسۇن - - - Policykit authentication failed - دەلىللەش مەغلۇپ بولدى - - - Username must be between 3 and 32 characters - ئىشلەتكۈچى ئىسمى 3 دىن 32 ھەرپ ئارىلىقىدا بولۇشى كېرەك - - - The first character must be a letter or number - بىرىنچى ھەرپ چوقۇم بىر ھەرپ ياكى سان بولۇشى كېرەك - - - Your username should not only have numbers - ئىشلەتكۈچى نامى سانلا بولسا بولمايدۇ - - - The username has been used by other user accounts - ھېسابات نامى باشقا ھېسابات نومۇرىنىڭ تولۇق نامى / ئىشلەتكۈچى نامى بىلەن تەكرارلىنىپ قالدى - - - The full name has been used by other user accounts - تولۇق نامى باشقا ھېسابات نومۇرىنىڭ تولۇق نامى / ئىشلەتكۈچى نامى بىلەن تەكرارلىنىپ قالدى - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - رەسىملەر - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - سۈكۈتتىكى تىزلەتمە كۇنۇپكا قوشۇش - - - Name - ئىسمى - - - Required - چوقۇم تولدۇرۇڭ - - - Command - بۇيرۇق - - - Cancel - بىكار قىلىش - - - Add - قوشۇش - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - بۇ تىزلەتمە كۇنۇپكا %1 بىلەن توقۇنۇشۇپ قالدى، قوشۇش كۇنۇپكىسىنى بېسىپ باشقا تىزلەتمە كۇنۇپكا بېكىتىڭ - - - - dccV23::CustomEdit - - Required - چوقۇم تولدۇرۇڭ - - - Cancel - بىكار قىلىش - - - Save - ساقلاش - - - Shortcut - تىزلەتمە كۇنۇپكا - - - Name - ئىسمى - - - Command - بۇيرۇق - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - بۇ تىزلەتمە كۇنۇپكا %1 بىلەن توقۇنۇشۇپ قالدى، قوشۇش كۇنۇپكىسىنى بېسىپ باشقا تىزلەتمە كۇنۇپكا بېكىتىڭ - - - - dccV23::CustomItem - - Shortcut - تىزلەتمە كۇنۇپكا - - - Please enter a shortcut - تىزلەتمە كۇنۇپكا بىسىڭ - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - زىيارەت قىلغىلى بولىدىغان بۇ قېتىملىق يېڭىلانمىغا دائىر تەپسىلىي مەزمۇنلار: - - - - dccV23::DeveloperModeDialog - - Request Root Access - يىلتىز زىيارەت قىلىشنى تەلەپ قىلىش - - - Online - توردا - - - Offline - تورسىز - - - Please sign in to your Union ID first and continue - ئاچقۇچى ھالىتىگە كىرىش ئۈچۈن ئاۋۋال Union ID رىڭىزغا كىرىشىڭىز كېرەك - - - Next - كېيىنكى - - - Export PC Info - PC ئۇچۇرلىرىنى چىقىرىش - - - Import Certificate - گۇۋاھنامە ئەكىرىش - - - 1. Export your PC information - 1. كومپيۇتېرىڭىزنىڭ ئۇچۇرلىرىنى چىقىرىڭ - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. تورسىز گۇۋاھنامىنى چۈشۈرۈش ئۈچۈن https://www.chinauos.com/developMode غا كىرىڭ - - - 3. Import the certificate - 3. گۇۋاھنامىنى ئەكىرىڭ - - - - dccV23::DeveloperModeWidget - - Request Root Access - يىلتىز زىيارەت قىلىشنى تەلەپ قىلىش - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - ئاچقۇچىلار ھالىتى سىزنى يىلتىز ئىمتىيازىغا ئېرىشتىرىدۇ ، ئەپ دۇكىنىدا تىزىملىتىلمىغان ئىمزاسىز ئەپلەرنى ئورنىتىدۇ ۋە ئىجرا قىلالايدۇ ، ئەمما سىستېمىڭىزنىڭ پۈتۈنلۈكىمۇ بۇزۇلۇشى مۇمكىن ، ئەستايىدىللىق بىلەن ئىشلىتىڭ. - - - The feature is not available at present, please activate your system first - سىستېما ئاكتىپلانمىغان، بۇ ئىقتىدارنى ئىشلەتكىلى بولمايدۇ - - - Failed to get root access - باشقۇرغۇچى ھوقۇقىغا ئېرىشەلمىدى - - - Please sign in to your Union ID first - ئاۋۋال Union ID رىڭىزغا كىرىڭ - - - Cannot read your PC information - كومپيۇتېرىڭىزنىڭ ئۇچۇرلىرىنى ئوقۇيالمىدى - - - No network connection - تور ئۇلىنىشى يوق - - - Certificate loading failed, unable to get root access - گۇۋاھنامە قاچىلاش مەغلۇب بولدى ، root ھوقۇقىغا ئېرىشەلمىدى - - - Signature verification failed, unable to get root access - ئىمزا دەلىللەش مەغلۇپ بولدى ، root ھوقۇقىغا ئېرىشەلمىدى - - - To make some features effective, a restart is required. Restart now? - بەزى ئىقتىدارلارنى ئۈنۈملۈك قىلىش ئۈچۈن قايتا قوزغىتىش تەلەپ قىلىنىدۇ. ھازىر قايتا قوزغىتامسىز؟ - - - Cancel - بىكار قىلىش - - - Restart Now - ھازىر قايتا قوزغىتىش - - - Root Access Allowed - يىلتىز زىيارەت قىلىشقا رۇخسەت قىلىندى - - - - dccV23::DisplayPlugin - - Display - كۆرسەتكۈچ - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - قوش چېكىش سىنىقى - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - كۇنۇپكا تاختىسى تەڭشىكى - - - Repeat Delay - تەكرار كۈتۈش - - - Short - قىسقا - - - Long - ئۇزۇن - - - Repeat Rate - تەكرار باھالاش - - - Slow - كۆرسىتىش - - - Fast - تېز - - - Test here - بۇ يەردە سىناق قىلىڭ - - - Numeric Keypad - رەقەملىك كۇنۇپكا تاختىسى - - - Caps Lock Prompt - Caps Lock نى ئويغىتىش - - - - dccV23::GeneralSettingWidget - - Left Hand - سول ئىسترېلكا - - - Disable touchpad while typing - كىرگۈزگەندە سىزىمچان تاختا چەكلەنسۇن - - - Scrolling Speed - ئۆرۈش سۈرئىتى - - - Double-click Speed - قوش چېكىش تېزلىكى - - - Slow - كۆرسىتىش - - - Fast - تېز - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - كۇنۇپكا ئورۇنلاشتۇرۇلۇشى - - - Edit - تەھرىرلەش - - - Add Keyboard Layout - كۇنۇپكا ئورۇنلاشتۇرۇلۇشى قوشۇش - - - Done - تامام - - - - dccV23::KeyboardLayoutDialog - - Cancel - بىكار قىلىش - - - Add - قوشۇش - - - Add Keyboard Layout - كۇنۇپكا ئورۇنلاشتۇرۇلۇشى قوشۇش - - - - dccV23::KeyboardPlugin - - Keyboard and Language - كۇنۇپكا تاختىسى ۋە تىل - - - Keyboard - كۇنۇپكا - - - Keyboard Settings - كۇنۇپكا تاختىسى تەڭشىكى - - - keyboard Layout - كۇنۇپكا ئورۇنلاشتۇرۇلۇشى - - - Keyboard Layout - كۇنۇپكا ئورۇنلاشتۇرۇلۇشى - - - Language - تىل - - - Shortcuts - تىزلەتمە كۇنۇپكىلار - - - - dccV23::MainWindow - - Help - ياردەم - - - - dccV23::ModifyPasswdPage - - Change Password - پارولنى ئۆزگەرتىش - - - Reset Password - قايتا پارول تەكشەش - - - Resetting the password will clear the data stored in the keyring. - پارولنى قايتا بېكىتسىڭىز مەخپىي ئاچقۇچ ھالقىسىدا ساقلانغان سانلىق مەلۇماتلار تازىلىنىدۇ - - - Current Password - بۇرۇنقى پارول - - - Forgot password? - پارول قايتۇرۇش - - - New Password - يېڭى پارول - - - Repeat Password - پارولنى يەنە كىرگۈزۈڭ - - - Password Hint - پارول ئەسكەرتمىسى - - - Cancel - بىكار قىلىش - - - Save - ساقلاش - - - Passwords do not match - پارول بىردەك ئەمەس - - - Required - چوقۇم تولدۇرۇڭ - - - Optional - ئىختىيارىي - - - Password cannot be empty - پارول قۇرۇق قالسا بولمايدۇ - - - The hint is visible to all users. Do not include the password here. - پارول ئەسكەرتمىسى ھەممە ئادەمگە كۆرۈنىدۇ ، مەخپىي نومۇر قاتارلىق مۇھىم ئۇچۇرلار بولمىسۇن - - - Wrong password - خاتا پارول - - - New password should differ from the current one - يىڭى پارولىڭىز باشقا پاروللار بىلەن ئوخشاش بولمىسۇن - - - System error - سىستېما خاتالىقى - - - Network error - تور خاتالىقى - - - - dccV23::MonitorControlWidget - - Identify - تونۇش - - - Gather Windows - كۆزنەكلەرنى يىغىش - - - Screen rearrangement will take effect in %1s after changes - ئۆزگەرتىلگەندىن كېيىن ، ئېكران قايتا تىزىلىشى %1 ئىچىدە كۈچكە ئىگە بولىدۇ - - - - dccV23::MousePlugin - - Mouse - مائۇس - - - General - ئورتاق - - - Touchpad - سېزىمچان تاختا - - - TrackPoint - ئىز قوغلىغۇچ تېزلىكى - - - - dccV23::MouseSettingWidget - - Pointer Speed - ئىسترېلكا تېزلىكى - - - Mouse Acceleration - مائۇس تىزلىكى - - - Disable touchpad when a mouse is connected - چاشقىنەك ئۇلانغاندا چەكمە تاختىنى چەكلەڭ - - - Natural Scrolling - مائۇس غالتىكىنى سىيرىلىش - - - Slow - كۆرسىتىش - - - Fast - تېز - - - - dccV23::MultiScreenWidget - - Multiple Displays - كۆپ ئېكرانلىق كۆرسىتىش تەڭشىكى - /display/Multiple Displays - - - Mode - ھالىتى - /display/Mode - - - Main Screen - ئاساسىي ئېكران - /display/Main Scree - - - Duplicate - نۇسخىلاش - - - Extend - كېڭەيتىش - - - Only on %1 - پەقەت %1 ئېكران - - - - dccV23::NotificationModule - - AppNotify - ئەپ ئۇقتۇرۇشى - - - Notification - ئۇقتۇرۇش - - - SystemNotify - سىستېما ئۇقتۇرۇشى - - - - dccV23::PalmDetectSetting - - Palm Detection - ئالقاندا بېسىش سىنىقى - - - Minimum Contact Surface - ئەڭ كىچىك تېگىشىش يۈزى - - - Minimum Pressure Value - ئەڭ كىچىك بېسىلىش قىممىتى - - - Disable the option if touchpad doesn't work after enabled - ئاچقاندىن كېيىن چەكمە ئېكران ئىشلىمەس بولۇپ قالسا، بۇ تۈرنى تاقىۋەتسىڭىز بولىدۇ - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - شەخسىيەت سىياسىتى - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-uy - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>توڭشىن يۇمشاق دېتالى مەخپىيەتلىكىڭىزگە ئىنتايىن ئەستايىدىل مۇئامىلە قىلىدۇ. شۇڭا ئۇچۇرلىرىڭىزنى قانداق يىغىش ، ئىشلىتىش ، ئورتاقلىشىش ، يۆتكەش ، ئاشكارىلاش ۋە ساقلاشنى ئۆز ئىچىگە ئالغان مەخپىيەتلىك تۈزۈمى تۈزدۇق.</p><p>سىز<a href="%1">بۇ يەرنى چېكىپ</a>ئەڭ يېڭى شەخسىيەت سىياسىتىمىزنى كۆرۈڭ ياكى <a href="%1">%1</a>نى زىيارەت قىلىپ كۆرۈڭ. خېرىدارلارنىڭ شەخسىيىتىگە بولغان سىياسىتىمىزنى ئەستايىدىل ئوقۇپ تولۇق چۈشىنىۋېلىڭ ، سوئاللىرىڭىز بولسا بىز بىلەن ئالاقىلىشىڭ: support@uniontech.com</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - پارول قۇرۇق قالسا بولمايدۇ - - - Password must have at least %1 characters - پارول %1 ھەرپتىن كەم بولماسلىقى كېرەك - - - Password must be no more than %1 characters - پارول %1 ھەرپتىن ئېشىپ كەتمەسلىكى كېرەك - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - پارولدا پەقەت ئىنگلىزچە ھەرپلەر (چوڭ-كىچىك) ، سان ياكى ئالاھىدە بەلگىلەر بار (~! @ # $% ^ & * () [] {} \ | /?,. <>) - - - No more than %1 palindrome characters please - جاۋاب خەتنىڭ ئۇزۇنلۇقى %1 ھەرپتىن ئېشىپ كەتمىسۇن - - - No more than %1 monotonic characters please - مونوتونلۇق بەلگە %1 تىن ئېشىپ كەتمىسۇن - - - No more than %1 repeating characters please - قايتىلانغان ھەرپ %1 تىن ئېشىپ كەتمىسۇن - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - پارول چوڭ ھەرپ،كىچىك ھەرپ، سانلار ۋە بەلگىلەردىن ئىبارەت ئۈچ تۈرنى ئۆز ئىچىگە ئېلىشى كېرەك(~!@#$%^&*()[]{}\|/?,.<>) - - - Password must not contain more than 4 palindrome characters - پارولدا ئۇدا 4 تىن ئارتۇق قايتىلانما ھەرپ-بەلگە بولسا بولمايدۇ - - - Do not use common words and combinations as password - پارولدا دائىم ئۇچرايدىغان ئاددىي سۆز ۋە سۆز بىرىكمىلىرى بولسا بولمايدۇ - - - Create a strong password please - پارول بەك ئاددىي، مۇرەككەپرەك بېكىتىڭ - - - It does not meet password rules - پارول بىخەتەرلىك تەلىپىگە ئۇيغۇن كەلمەيدۇ - - - - dccV23::RefreshRateWidget - - Refresh Rate - يىڭىلاش چاستوتىسى - - - Hz - Hz - - - Recommended - تەۋسىيە - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - بۇ ھېساباتنى ئۆچۈرمەكچىمۇ؟ - - - Delete account directory - ھېسابات مۇندەرىجىسىنى ئۆچۈرۈش - - - Cancel - بىكار قىلىش - - - Delete - ئۆچۈرۈش - - - - dccV23::ResolutionWidget - - Resolution - ئېنىقلىق دەرىجىسى - /display/Resolution - - - Resize Desktop - ئۈستەليۈزىدە كۆرسىتىش - /display/Resize Desktop - - - Default - سۈكۈتتىكى - - - Fit - ماسلاشتۇرۇش - - - Stretch - سوزۇش - - - Center - ئوتتۇرىغا - - - Recommended - تەۋسىيە - - - - dccV23::RotateWidget - - Rotation - ئايلاندۇرۇش - /display/Rotation - - - Standard - ئۆلچەملىك - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - ئېكران پەقەت 100% چوڭايتىش-كىچىكلىتىشنى قوللايدۇ - - - Display Scaling - چوڭايتىش نىسبىتى - - - - dccV23::SearchInput - - Search - ئىزدەش - - - - dccV23::SecondaryScreenDialog - - Brightness - يورۇقلۇقى - - - - dccV23::SecurityLevelItem - - Weak - ئاجىز - - - Medium - ئوتتۇراھال كۈچلۈك - - - Strong - كۈچلۈك - - - - dccV23::SecurityQuestionsPage - - Security Questions - بىخەتەرلىك سوئاللىرى - - - These questions will be used to help reset your password in case you forget it. - مەخپىي نومۇرنى ئۇنتۇپ قالغاندا، بىخەتەرلىك سوئاللىرى ئارقىلىق پارولىڭىزنى قايتا ئورنىتالايسىز. - - - Security question 1 - بىخەتەرلىك سوئالى1 - - - Security question 2 - بىخەتەرلىك سوئالى2 - - - Security question 3 - بىخەتەرلىك سوئالى3 - - - Cancel - بىكار قىلىش - - - Confirm - جەزملەشتۈرۈش - - - Keep the answer under 30 characters - جاۋابىڭىز 30 ھەرپتىن ئاز بولسۇن - - - Do not choose a duplicate question please - ئوخشاش سوئالنى تاللىيالمايسىز - - - Please select a question - بىخەتەرلىك سوئالىنى تاللاڭ - - - What's the name of the city where you were born? - سىز تۇغۇلغان شەھەرنىڭ نامى نېمە؟ - - - What's the name of the first school you attended? - مەكتىپىڭىزنىڭ نامى نېمە؟ - - - Who do you love the most in this world? - سىز كىمنى ئەڭ ياخشى كۆرىسىز؟ - - - What's your favorite animal? - سىز ئەڭ ياخشى كۆرىدىغان ھايۋان قايسى؟ - - - What's your favorite song? - سىز ئەڭ ياخشى كۆرىدىغان مۇزىكا قايسى؟ - - - What's your nickname? - تەخەللۇسىڭىز نېمە؟ - - - It cannot be empty - قۇرۇق قويۇشقا بولمايدۇ - - - - dccV23::SettingsHead - - Edit - تەھرىرلەش - - - Done - تامام - - - - dccV23::ShortCutSettingWidget - - System - سېستىما - - - Window - كۆزنەك - - - Workspace - خىزمەت رايونى - - - Assistive Tools - ياردەمچى قوراللار - - - Custom Shortcut - سۈكۈتتىكى تىزلەتمە كۇنۇپكا - - - Restore Defaults - سۈكۈتتىكى ھالىتىگە قايتۇرۇش - - - Shortcut - تىزلەتمە كۇنۇپكا - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - تىزلەتمە كۇنۇپكىنى قايتا تەڭشەڭ - - - Cancel - بىكار قىلىش - - - Replace - ئالماشتۇرۇش - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - بۇ تىزلەتمە كۇنۇپكا %1 بىلەن توقۇنۇشۇپ قالدى، ئالماشتۇرۇش كۇنۇپكىسىنى بېسىپ باشقا تىزلەتمە كۇنۇپكا بېكىتىڭ - - - - dccV23::ShortcutItem - - Enter a new shortcut - يېڭى تېزلەتمە كۇنۇپكىنى كىرگۈزۈڭ - - - - dccV23::SystemInfoModel - - available - ئىشلەتكىلى بولىدۇ - - - - dccV23::SystemInfoModule - - About This PC - ھەققىدە - - - Computer Name - كومپيۇتېر نامى - - - systemInfo - - - - OS Name - مەھسۇلات نامى - - - Version - نەشرى - - - Edition - نەشرى - - - Type - تىپ - - - Authorization - نەشر ھوقۇقى: - - - Processor - بىر تەرەپ قىلغۇچ - - - Memory - ئىچكى ساقلىغۇچ - - - Graphics Platform - - - - Kernel - ئىچكى يادرو نەشىرى - - - Agreements and Privacy Policy - كېلىشىم ۋە شەخسىيەت سىياسىتى - - - Edition License - نەشر كېلىشىمى - - - End User License Agreement - ئاخىرقى ئىشلەتكۈچى ئىجازەت كېلىشىمى - - - Privacy Policy - شەخسىيەت سىياسىتى - - - %1-bit - %1 خانە - - - - dccV23::SystemInfoPlugin - - System Info - سىستېما ئۇچۇرى - - - - dccV23::SystemLanguageSettingDialog - - Cancel - بىكار قىلىش - - - Add - قوشۇش - - - Add System Language - سىستېما تىلى قوشۇڭ - - - - dccV23::SystemLanguageWidget - - Edit - تەھرىرلەش - - - Language List - تىل تىزىملىكى - - - Add Language - تىل قوشۇش - - - Done - تامام - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - ئارام ھالىتى - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - بارلىق ئەپلەرنىڭ توغرىسىغا يوللىغان ئۇچۇرى يوشۇرۇلىدۇ، ئۇقتۇرۇش ئاۋازى چىقمايدۇ، بارلىق ئۇچۇرلارنى ئۇقتۇرۇش مەركىزىدىن كۆرسىڭىز بولىدۇ. - - - When the screen is locked - ئېكران تاقاق ۋاقىتتا - - - - dccV23::TimeSlotItem - - From - دىن - - - To - غىچە - - - - dccV23::TouchScreenModule - - Touch Screen - چەكمە ئېكران - - - Select your touch screen when connected or set it here. - ئۇلانغاندا سېزىمچان ئېكرانىڭىزنى تاللاڭ ياكى بۇ يەردىن تەڭشەڭ. - - - Confirm - جەزملەشتۈرۈش - - - Cancel - بىكار قىلىش - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - ئىسترېلكا تېزلىكى - - - Slow - كۆرسىتىش - - - Fast - تېز - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - ئىشلەتكۈچى تەجرىبە پروگراممىسىغا قوشۇلۇش - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-uy - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>ئىشلەتكۈچى تەسىراتى ئاچسىڭىز سىزنى بىزگە ئۈسكۈنىڭىز ۋە سىستېما ئۇچۇرلىرىڭىز ھەمدە قوللىنىشچان يۇمشاق دېتال ئۇچۇرلىرىڭىزنى توپلاش ۋە ئىشلىتىش ھوقۇقى بەرگەن دەپ قارايمىز،ئىشلەتكۈچى تەسىراتى پىلانىنى ئېتىۋېتىپ، يۇقىرىدا بايان قىلىنغان ئۇچۇرلارنى يىغىشىمىز ۋە ئىشلىتىشىمىزنى رەت قىلسىڭىز بولىدۇ. تەپسىلىي چۈشەندۈرۈشتە Deepin شەخسىيەت سىياسىتىدىن پايدىلىنىڭ (<a href="%1"> %1 </a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>ئىشلەتكۈچى تەسىراتى ئاچسىڭىز سىزنى بىزگە ئۈسكۈنىڭىز ۋە سىستېما ئۇچۇرلىرىڭىز ھەمدە قوللىنىشچان يۇمشاق دېتال ئۇچۇرلىرىڭىزنى توپلاش ۋە ئىشلىتىش ھوقۇقى بەرگەن دەپ قارايمىز،ئىشلەتكۈچى تەسىراتى پىلانىنى ئېتىۋېتىپ، يۇقىرىدا بايان قىلىنغان ئۇچۇرلارنى يىغىشىمىز ۋە ئىشلىتىشىمىزنى رەت قىلسىڭىز بولىدۇ. سانلىق مەلۇماتنى باشقۇرۇش ئۇسۇلىمىزنى چۈشەنمەكچى بولسىڭىز، توڭشىن يۇمشاق دېتال شەخسىيەت سىياسىتىدىن پايدىلىنىڭ (<a href="%1">%1 </a>). </p> - - - - DateWidget - - Year - يىل - - - Month - ئاي - - - Day - كۈن - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - ۋاقىت مۇلازىمېتىرىنى ئۆزگەرتىش دەلىللەشنى تەلەپ قىلىدۇ - - - - DefAppModule - - Default Applications - سۈكۈتتىكى ئەپلەر - - - - DefAppPlugin - - Webpage - تور بەت - - - Mail - ئېلخەت - - - Text - تېكىست - - - Music - مۇزىكا - - - Video - سىن - - - Picture - سۈرەت - - - Terminal - تېرمىنال - - - - DisclaimersDialog - - Disclaimer - 《ئىشلەتكۈچى جاۋابكارلىق باياناتى 》 - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - چىراينى پەرقلەندۈرۈش ئىقتىدارىنى ئىشلىتىشتىن بۇرۇن دىققەت قىلدىغان ئشلارتۆۋەندىكىچە: -1.سىزنىڭ ئۈسكۈنىڭىز چىراي شەكلى، سىرتقى شەكىل ۋە سىزگە يېقىن كېلىدىغان ئادەم ياكى نەرسىلەر تەرىپىدىن قۇلۇپى ئېچىلىشى مۇمكىن. -2.چىراينى پەرقلەندۈرۈش بىخەتەرلىكى رەقەملىك مەخپىي نومۇر، ئارىلاشما مەخپىي نومۇردىن تۆۋەن بولۇش. -3. تۇتۇق نۇر، كۈچلۈك نۇر، تەتۈر نۇر ياكى بۇلۇڭلار زىيادە چوڭ بولغان ئەھۋالدا چىراينى پەرقلەندۈرۈشنىڭ قۇلۇپنى ئېچىش ئۈنۈمى تۆۋەنلەپ كېتىدۇ. -4. ئۈسكۈنىلەرنى خالىغانچە باشقىلارنىڭ ئىشلىتىشىگە تاپشۇرۇپ بېرىش ، باشقىلارنڭ چىراي پەرقلەندۈرۈش ئىقتىدارىنى يامان غەرەزدە ئىشلىتىشتىن ساقلىنىش كېرەك. -5. چىققان كۆرۈنۈشتىن باشقا، چىراي پەرقلەندۈرۈش ئىقتىدارىنىڭ نورمال ئىشلىتىلىشىگە تەسىر يەتكۈزۈش ئېھتىمالى بولغان باشقا ئەھۋاللارغا دىققەت قىلىشىڭىز كېرەك. - -چىراينى پەرقلەندۈرۈشنى تېخىمۇ ياخشى ئىشلىتىش ئۈچۈن سانلىق مەلۇماتىنى كىرگۈزگەندە تۆۋەندىكى ئىشلارغا دىققەت قىلىش كېرەك: -1.كۈن نۇرىنىڭ تولۇق چۈشۈشىگە كاپالەتلىك قىلىپ، كۈن نۇرىنىڭ تىك چۈشۈشىدىن ھەمدە باشقا كىشىلەر كىرگەن كۆرۈنۈش پەيدا بولۇشىدىن ساقلىنىش كېرەك . -2.سانلىق مەلۇماتلارنى كىرگۈزگەندىكى يۈز ھالىتىگە ،دىققەت قىلىش، كىيىم-كېچەك، چاچ، كۆزەينەك، ماسكا، قېنىق گىرىم قاتارلىقلارنڭ يۈز ئۇچۇرىنى توسۇۋېلىشتىن ساقلىنىش كېرەك. -3. باشنى كۆتۈرۈۋېلىش ،باشنى تۆۋەن سېلىش، كۆزنى يۇمۇۋېلىش ياكى پەقەت يان يۈزلا كۆرۈنۈپ قالىدىغان ئەھۋاللاردىن ساقلىنىش. يۈز قىسمىنىڭ ئېنىق، مۇكەممەل ھالەتتە كۆرسەتمە رامكىسىدا بولۇشىغا كاپالەتلىك قىلىش. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - «بىئولوگىيەلىك دەلىللەش » بولسا تۇڭشىن يۇمشاق دېتال تېخنىكا چەكلىك شىركىتى تەمىنلىگەن بىر خىل ئابۇنىتلارنىڭ سالاھىيىتىنى دەلىللەش ئىقتىدارى. » بىئولوگىيەلىك دەلىللەش» ئارقىلىق توپلانغان بىئولوگىيەلىك پەرقلەندۈرۈش سانلىق مەلۇماتلىرى بىلەن ئۈسكۈنىدە ساقلانغان بىئولوگىيەلىك پەرقلەندۈرۈش سانلىق مەلۇماتلىرى سېلىشتۇرۇلىدۇھەمدە سېلىشتۇرۇش نەتىجىسىگە ئاساسەن ئابۇنىچىلارنىڭ سالاھىيىتى دەلىللىنىدۇ. -دىققەت قىلىڭ، تۇڭشىن يۇمشاق دېتالى سىزنىڭ بىئولوگىيەلىك پەرقلەندۈرۈش ئۇچۇرىڭىزنى توپلىمايدۇ ياكى زىيارەت قىلمايدۇ. بۇتۈردىكى ئۇچۇرلار سىزنىڭ ئۈسكۈنىڭىزدە ساقلىنىدۇ. سىز پەقەت ئۆزىڭىزنىڭ شەخسىي ئۈسكۈنىڭىزدە بىئولوگىيەلىك پەرقلەندۈرۈش ئىقتىدارىنى قوزغىتالايسىز ھەمدە ئۆزىڭىزنىڭ بىئولوگىيەلىك پەرقلەندۈرۈش ئۇچۇرىنى ئىشلىتىپ مۇناسىۋەتلىك مەشغۇلاتلارنى قىلالايسىز. يەنە بۇ ئۈسكۈنىڭىزدە باشقىلارنىڭ بىئولوگىيەلىك پەرقلەندۈرۈش ئۇچۇرىنى ۋاقتىدا چەكلىشىڭىز ياكى تازىلىشىڭىز كېرەك بولمىسا بۇنىڭ سىزگە ئېلىپ كېلىدىغان خەۋپ-خەتىرىنى ئۆزىڭىز ئۈستىڭىزگە ئالىسىز. -تۇڭشىن يۇمشاق دېتالى بىئولوگىيەلىك پەرقلەندۈرۈش ئىقتىدارىنىڭ بىخەتەرلىكى، ئېنىقلىقى ۋە مۇقىملىقىنى يۇقىرى كۆتۈرۈش جەھەتتە تەتقىقات ئېلىپ بارىدۇھەمدە سۈپىتىنى يۇقىرى كۆتىرىدۇ، لېكىن مۇھىت، ئۈسكۈنە، تېخنىكا قاتارلىق ئامىللار ۋە خەۋپ-خەتەرنى كونترول قىلىش قاتارلىق سەۋەبلەر بىلەن چەكلىنىپ قالسا، بىز ۋاقتىنچە سىزنىڭ بىئولوگىيەلىك پەرىقلەندۈرىشىڭىزگە كاپالەتلىك قىلالمايمىز، بىئولوگىيەلىك پەرقلەندۈرۈشنى تۇڭشىن مەشغۇلات سىستېمىسىغا كىرىشنىڭ بىردىنبىر يولى قىلىۋالماڭ. ئەگەر سىزبىئولوگىيەلىك پەرقلەندۈرۈشنى ئىشلەتكەندە ھەر قانداق مەسىلە ياكى تەكلىپنى ئوتتۇرىغا قويسىڭىز، سىستېما ئىچىدىكى »مۇلازىمەت ۋە قوللاش «ئارقىلىق ئىنكاس قايتۇرسىڭىز بولىدۇ. - - - - Cancel - بىكار قىلىش - - - Next - كېيىنكى - - - - DisclaimersItem - - I have read and agree to the - ئوقۇدۇم ھەمدە قوشۇلىمەن - - - Disclaimer - 《ئىشلەتكۈچى جاۋابكارلىق باياناتى 》 - - - - DockModuleObject - - Dock - ۋەزىپە ئىستونى - - - Multiple Displays - كۆپ ئېكرانلىق كۆرسىتىش تەڭشىكى - - - Show Dock - ۋەزىپە ئىستونىنىڭ ئورنى - - - Mode - ھالىتى - - - Position - ئورۇن - - - Status - ھالىتى - - - Show recent apps in Dock - يېقىندا ئىشلەتكەن ئەپلەر كۆرۈنسۇن - - - Size - چوڭلۇقى - - - Plugin Area - قىستۇرما رايونى - - - Select which icons appear in the Dock - ۋەزىپە ئىستونى قىستۇرما رايونىدا كۆرسىتىلىدىغان سىنبەلگىنى تاللاڭ - - - Fashion mode - مودا ھالەت - - - Efficient mode - يۇقىرى ئۈنۈملۈك ھالەت - - - Top - ئۈستى - - - Bottom - ئاستى تەرەپ - - - Left - سول تەرەپ - - - Right - ئوڭ تەرەپ - - - Location - ئورنى - - - Keep shown - داۋاملىق كۆرسىتىش - - - Keep hidden - داۋاملىق يوشۇرۇش - - - Smart hide - ئەقلىي يوشۇرۇش - - - Small - كىچىك - - - Large - چوڭ - - - On screen where the cursor is - مائۇسنىڭ ئورنىغا ئەگىشىپ كۆرۈنسۇن - - - Only on main screen - ئاساسىي ئېكراندىلا كۆرۈنسۇن - - - - FaceInfoDialog - - Enroll Face - چىراي قۇلۇپى قوشۇش - - - Position your face inside the frame - يۈز قىسمىڭىزنىڭ پەرقلەندۈرۈش دائىرىسى ئىچىدە بولۇشىغا كاپالەتلىك قىلىڭ - - - - FaceWidget - - Edit - تەھرىرلەش - - - Manage Faces - چىراي قۇلۇپى باشقۇرۇش - - - You can add up to 5 faces - ئەڭ كۆپ بولغاندا بەش چىراي قوشقىلى بولىدۇ - - - Done - تامام - - - Add Face - چىراي قوشۇش - - - The name already exists - بۇ ئىسىم ئاللىبۇرۇن مەۋجۇت - - - Faceprint - چىراي سىزىقچىلىرى - - - - FaceidDetailWidget - - No supported devices found - قوللايدىغان ئۈسكۈنە تېپىلمىدى - - - - FingerDetailWidget - - No supported devices found - قوللايدىغان ئۈسكۈنە تېپىلمىدى - - - - FingerDisclaimer - - Add Fingerprint - بارماق ئىزى قوشۇش - - - Cancel - بىكار قىلىش - - - Next - كېيىنكى - - - - FingerInfoWidget - - Place your finger - بارمىقىڭىزنى بېسىڭ - - - Place your finger firmly on the sensor until you're asked to lift it - بارمىقىڭىزنى بارماق ئىزى يىغقۇچچقا قويۇڭ، ئاندىن ئەسكەرتىش بويىچە ئېلىڭ - - - Scan the edges of your fingerprint - يان تەرەپ بارماق ئىزىنى تىزىملىتىش - - - Place the edges of your fingerprint on the sensor - بارمىقىڭىزنىڭ ياقا تەرەپلىرىنى بارماق ئىزى يىغقۇچچقا قويۇڭ، ئاندىن ئەسكەرتىش بويىچە ئېلىڭ - - - Lift your finger - بارمىقىڭىزنى ئېلىڭ - - - Lift your finger and place it on the sensor again - بارمىقىڭىزنى ئېلىپ قايتا بېسىڭ - - - Adjust the position to scan the edges of your fingerprint - بارمىقىڭىز تەڭگەن رايوننى تەڭشەپ يان تەرەپ بارماق ئىزىنى داۋاملىق تىزىملىتىڭ - - - Lift your finger and do that again - بارمىقىڭىزنى ئېلىپ قايتا قويۇڭ - - - Fingerprint added - بارماق ئىزى قوشۇلدى - - - - FingerWidget - - Edit - تەھرىرلەش - - - Fingerprint Password - بارماق ئىزى پارولى - - - You can add up to 10 fingerprints - ئەڭ كۆپ بولغاندا 10 بارماق ئېزى كىرگۈزەلەيسىز - - - Done - تامام - - - The name already exists - بۇ ئىسىم ئاللىبۇرۇن مەۋجۇت - - - Add Fingerprint - بارماق ئىزى قوشۇش - - - - GeneralModule - - General - ئورتاق - - - Balanced - تەڭپۇڭ ھالىتى - - - Balance Performance - - - - High Performance - يۇقىرى ئۈنۈم ھالىتى - - - Power Saver - سەرپىيات تېجەش ھالىتى - - - Power Plans - ئىقتىدار ھالىتى - - - Power Saving Settings - توك تېجەش تەڭشىكى - - - Auto power saving on low battery - توك ئاز قالغان ئۆزلۈكىدىن قوزغالسۇن - - - Decrease Brightness - يورۇقلۇقنى ئاپتوماتىك تۆۋەنلىتىش - - - Low battery threshold - - - - Auto power saving on battery - باتارېيە ئىشلەتكەندە ئاپتوماتىك قوزغالسۇن - - - Wakeup Settings - ئويغۇتۇش تەڭشىكى - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - كومپيۇتېر نامى - بىلەن ئاياغلاشسا بولمايدۇ - - - 1~63 characters please - كومپيۇتېر نامىنىڭ ئۇزۇنلۇقى چوقۇم 1 دىن 63 ھەرپ ئارىلىقىدا بولۇشى كېرەك - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - قوللايدىغان ئۈسكۈنە تېپىلمىدى - - - - IrisWidget - - Edit - تەھرىرلەش - - - Manage Irises - كۆز رەڭدار پەردىسى باشقۇرۇش - - - You can add up to 5 irises - ئەڭ بولغاندا بەش كۆز رەڭدار پەردىسى قوشقىلى بولىدۇ - - - Done - تامام - - - Add Iris - كۆز رەڭدار پەردىسى تونۇشۇش-قوشۇش - - - The name already exists - بۇ ئىسىم ئاللىبۇرۇن مەۋجۇت - - - Iris - كۆز رەڭدار پەردىسى - - - - KeyLabel - - None - قۇرۇق - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright © 2011-%1 Deepin مەھەللىسى - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright © 2019-%1 توڭشىن يۇمشاق دېتال تېخنىكا چەكلىك شىركىتى - - - - MicrophonePage - - Input Device - كىرگۈزۈش ئۈسكۈنىلىرى - - - Automatic Noise Suppression - شاۋقۇننى ئاپتوماتىك پەسەيتىش - - - Input Volume - مىكروفون ئاۋاز مىقدارى - - - Input Level - قايتما ئاۋاز - - - - PersonalizationDesktopModule - - Desktop - ئۈستەليۈزى نۇسخىسى - - - Window - كۆزنەك - - - Window Effect - كۆزنەك ئۈنۈمى - - - Window Minimize Effect - كىچىكلىتىلگەندىكى ئۈنۈم - - - Transparency - سۈزۈكلۈكىنى تەڭشەش - - - Rounded Corner - كۆزنەكنىڭ يۇمىلاق بۇلۇڭى - - - Scale - كىچىكلىتىش ۋە چوڭايتىش - - - Magic Lamp - سېھرىي لامپا - - - Small - كىچىك - - - Middle - - - - Large - چوڭ - - - - PersonalizationModule - - Personalization - خاسلاشتۇرۇش - - - - PersonalizationThemeList - - Cancel - بىكار قىلىش - - - Save - ساقلاش - - - Light - سۇس رەڭ - - - Dark - قېنىق رەڭ - - - Auto - ئاپتوماتىك - - - Default - سۈكۈتتىكى - - - - PersonalizationThemeModule - - Theme - ئۇسلۇب - - - Appearance - كۆرۈنمە - - - Accent Color - پائالىيەت رەڭگى - - - Icon Settings - سىنبەلگە تەڭشىكى - - - Icon Theme - سىنبەلگە ئۇسلۇبى - - - Cursor Theme - مائۇس ئۇسلۇبى - - - Text Settings - خەت تەڭشىكى - - - Font Size - فونت چوڭلۇقى - - - Standard Font - ئۆلچەملىك خەت نۇسخىسى - - - Monospaced Font - Monospaced خەت نۇسخىسى - - - Light - سۇس رەڭ - - - Auto - ئاپتوماتىك - - - Dark - قېنىق رەڭ - - - - PersonalizationThemeWidget - - Light - سۇس رەڭ - General - /personalization/General - - - Dark - قېنىق رەڭ - General - /personalization/General - - - Auto - ئاپتوماتىك - General - /personalization/General - - - Default - سۈكۈتتىكى - - - - PersonalizationWorker - - Custom - بەلگىلەش - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - ئۇلاش PIN نومۇرى: - - - Cancel - بىكار قىلىش - - - Confirm - جەزملەشتۈرۈش - - - - PowerModule - - Power - قۇۋۋەت - - - Battery low, please plug in - باتارېيەدە توك ئاز قالدى، توكقا چېتىڭ - - - Battery critically low - باتارېيەدە توك تۈگىدى - - - - PrivacyModule - - Privacy and Security - شەخسىيەت ۋە بىخەتەرلىك - - - - PrivacySecurityModel - - Camera - كامېرا - - - Microphone - مىكروفون - - - User Folders - ئىشلەتكۈچى ھۆججەت قىسقۇچى - - - Calendar - كالېندار - - - Screen Capture - ئېكراننى سۈرەت تۇتۇش - - - - QObject - - Control Center - كونترول مەركىزى - - - , - - - - Error occurred when reading the configuration files of password rules! - پارول قائىدىسىنىڭ سەپلىمە ھۆججەتلىرىنى ئوقۇغاندا خاتالىق كۆرۈلدى! - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - ئاكتىپلاندى - - - View - كۆرۈش - - - To be activated - ئاكتىپلانمىغان - - - Activate - ئاكتىپلاش - - - Expired - ۋاقتى ئۆتتى - - - In trial period - سىناق ۋاقتى - - - Trial expired - سىناق ۋاقتى ئۆتتى - - - Touch Screen Settings - چەكمە ئېكران تەڭشىكى - - - The settings of touch screen changed - چەكمە ئېكران تەڭشىكى ئۆزگەردى - - - Checking system versions, please wait... - سىستېما نەشرىنى دەلىللەۋاتىدۇ، سەۋىرچانلىق بىلەن ساقلاڭ... - - - Leave - چېكىنىش - - - Cancel - بىكار قىلىش - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - نۆۋەتتىكى سىستېمىغا ھوقۇق بېرىلمىگەن، ئاكتىپلىغاندىن كېيىن يېڭىلاڭ - - - Update successful - يېڭىلاندى - - - Failed to update - يېڭىلاش مەغلۇپ بولدى - - - - SearchInput - - Search - ئىزدەش - - - - ServiceSettingsModule - - Apps can access your camera: - كامېرانى ئىشلىتىش ھوقۇقى تەلەپ قىلغان ئەپلەر: - - - Apps can access your microphone: - مىكروفوننى ئىشلىتىش ھوقۇقى تەلەپ قىلغان ئەپلەر: - - - Apps can access user folders: - ئىشلەتكۈچى ھۆججەت قىسقۇچىنى ئوقۇش ھوقۇقى تەلەپ قىلغان ئەپلەر: - - - Apps can access Calendar: - كالىندارنى ئوقۇش ھوقۇقى تەلەپ قىلغان ئەپلەر: - - - Apps can access Screen Capture: - ئېكراننى سۈرەت تۇتۇش ھوقۇقى تەلەپ قىلغان ئەپلەر: - - - No apps requested access to the camera - ھازىرچە ھېچقانداق ئەپ كامېرا ئىشلىتىش ھوقۇقى تەلەپ قىلمىدى - - - No apps requested access to the microphone - ھازىرچە ھېچقانداق ئەپ مىكروفون ئىشلىتىش ھوقۇقى تەلەپ قىلمىدى - - - No apps requested access to user folders - ھازىرچە ھېچقانداق ئەپ ئىشلەتكۈچى ھۆججەت قىسقۇچىنى ئوقۇش ھوقۇقى تەلەپ قىلمىدى - - - No apps requested access to Calendar - ھازىرچە ھېچقانداق ئەپ كالېندارنى ئوقۇش ھوقۇقى تەلەپ قىلمىدى - - - No apps requested access to Screen Capture - ھازىرچە ھېچقانداق ئەپ ئېكراننى سۈرەت تۇتۇش ھوقۇقى ئىشلىتىشنى تەلەپ قىلمىدى - - - - SoundEffectsPage - - Sound Effects - سىستېما ئاۋاز ئۈنۈمى - - - - SoundModel - - Boot up - ئېچىش - - - Shut down - تاقاش - - - Log out - چېكىنىش - - - Wake up - ئويغىتىش - - - Volume +/- - ئاۋازنى تەڭشەش - - - Notification - ئۇقتۇرۇش - - - Low battery - توك ئاز قالدى - - - Send icon in Launcher to Desktop - سىنبەلگىنى قوزغاتقۇچتىن ئۈستەليۈزىگە يوللاش - - - Empty Trash - ئەخلەت ساندۇقىنى تازىلاش - - - Plug in - توك ئۇلاندى - - - Plug out - توك ئۈزۈلدى - - - Removable device connected - كۆچمە ئۈسكۈنە ئۇلاندى - - - Removable device removed - كۆچمە ئۈسكۈنە ئۈزۈلدى - - - Error - خاتالىق ئۇچۇرى - - - - SoundModule - - Sound - ئاۋاز - - - - SoundPlugin - - Output - چىقىرىش - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - كىرگۈزۈش - - - Sound Effects - سىستېما ئاۋاز ئۈنۈمى - - - Devices - ئۈسكۈنە باشقۇرۇش - - - Input Devices - كىرگۈزۈش ئۈسكۈنىلىرى - - - Output Devices - چىقىرىش ئۈسكۈنىلىرى - - - - SpeakerPage - - Output Device - چىقىرىش ئۈسكۈنىلىرى - - - Mode - ھالىتى - - - Output Volume - ياڭراتقۇ ئاۋاز مىقدارى - - - Volume Boost - ئاۋازنى كۈچەيتىش - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - ئاۋاز %100 دىن يۇقىرى بولغاندا ئەينەن چىقماسلىقى ھەمدە ياڭراتقۇغا زىيان يەتكۈزۈشى مۇمكىن - - - Left/Right Balance - ئوڭ سول ئاۋاز تەڭپۇڭلۇقى - - - Left - سول تەرەپ - - - Right - ئوڭ تەرەپ - - - - TimeSettingModule - - Time Settings - ۋاقىت تەڭشىكى - - - Time - ۋاقىت - - - Auto Sync - ئاپتوماتىك ماسقەدەملەش - - - Reset - قايتا بېكىتىش - - - Save - ساقلاش - - - Server - مۇلازىمىتېر - - - Address - ئادرېس - - - Required - چوقۇم تولدۇرۇڭ - - - Customize - ئۆزى بەلگىلەش - - - Year - يىل - - - Month - ئاي - - - Day - كۈن - - - - TimeZoneChooser - - Cancel - بىكار قىلىش - - - Confirm - جەزملەشتۈرۈش - - - Add Timezone - ۋاقىت رايونى قوشۇش - - - Add - قوشۇش - - - Change Timezone - ۋاقىت رايونىنى ئۆزگەرتىش - - - - TimeoutDialog - - Save the display settings? - كۆرسىتىش تەڭشىكىنى ساقلامسىز؟ - - - Settings will be reverted in %1s. - ھېچقانداق مەشغۇلات قىلمىسڭىز %1 سىكۇنتتىن كېيىن ئەسلىگە قايتىدۇ. - - - Revert - ئەسلىگە قايتۇرۇش - - - Save - ساقلاش - - - - TimezoneItem - - Tomorrow - ئەتە - - - Yesterday - تۈنۈگۈن - - - Today - بۈگۈن - - - %1 hours earlier than local - %1 سائەت بۇرۇن بولغاندا - - - %1 hours later than local - يەرلىكتىكىدىن %1 سائەت كېچىكتى - - - - TimezoneModule - - Timezone List - ۋاقىت رايونى تىزىملىكى - - - System Timezone - سىستېما ۋاقىت رايونى - - - Add Timezone - ۋاقىت رايونى قوشۇش - - - - TreeCombox - - Collaboration Settings - ھەمكارلىشىش تەڭشىكى - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - ھازىرقى ھېسابات نومۇرى Union IDغا ئۇلانمىغان - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - ئەگەر مەخپىي نومۇرنى قايتا تەڭشىمەكچى بولسىڭىز، ئاۋۋال UNION ID رىڭىزنى دەلىللەڭ . ‹ ‹ ئۇلانمىغا يۆتكەش › › نى چېكىپ قايتا تەڭشىسىڭىز بولىدۇ - - - Cancel - بىكار قىلىش - - - Go to Link - ئۇلانمىغا يۆتكەش - - - - UnknownUpdateItem - - Release date: - تارقىتىلغان ۋاقتى: - - - - UpdateCtrlWidget - - Check Again - يېڭىلانمىنى قايتا تەكشۈرۈش - - - Update failed: insufficient disk space - دىسكا سىغىمى يەتمىگەچكە يېڭىلىنالمىدى - - - Dependency error, failed to detect the updates - بېقىنىش خاتالىقى، يېڭىلانمىنى تەكشۈرۈش مەغلۇپ بولدى - - - Restart the computer to use the system and the applications properly - سىستېما ۋە ئەپلەرنى نورمال ئىشلىتىشىڭىز ئۈچۈن، يېڭىلانغاندىن كېيىن قايتا قوزغىتىڭ - - - Network disconnected, please retry after connected - تور ئۇلىنىشى ئۈزۈلدى، ئۇلىغاندىن كىيىن قايتا سىناپ بېقىڭ - - - Your system is not authorized, please activate first - نۆۋەتتىكى سىستېمىغا ھوقۇق بېرىلمىگەن، ئاكتىپلىغاندىن كېيىن يېڭىلاڭ - - - This update may take a long time, please do not shut down or reboot during the process - بۇ قېتىملىق يېڭىلاشقا ئۇزۇنراق ۋاقىت كېتىشى مۇمكىن، يېڭىلاش تاماملىنىشتىن بۇرۇن كومپيۇتېرنى تاقىماڭ ياكى قايتا قوزغاتماڭ - - - Updates Available - يېڭىلاشقا بولىدىغنى تىپىلدى - - - Current Edition - نۆۋەتتىكى نەشرى - - - Updating... - يېڭىلاۋاتىدۇ... - - - Update All - ھەممىنى يېڭىلاش - - - Last checking time: - ئالدىنقى يېڭىلانغان ۋاقىت: - - - Your system is up to date - ھازىر سىز سىستېمىنىڭ ئەڭ يىڭى نەشىرىنى ئىشلىتىۋىتىپسىز - - - Check for Updates - يېڭىلانمىنى تەكشۈرۈش - - - Checking for updates, please wait... - يېڭىلانما تەكشۈرۈۋاتىدۇ... سەل كۈتۈپ تۇرۇڭ... - - - The newest system installed, restart to take effect - سىستېمىنى يېڭىلاش تامام، قايتا قوزغىتىپ ئۈنۈمىنى كۆرۈڭ - - - %1% downloaded (Click to pause) - %1% چۈشۈرۈلدى(چېكىپ ۋاقىتلىق توختىتالايسىز) - - - %1% downloaded (Click to continue) - %1% چۈشۈرۈلدى (بۇ يەرنى چېكىپ داۋاملاشتۇرۇڭ) - - - Your battery is lower than 50%, please plug in to continue - باتارېيە توك مىقدارىڭىز 50% دىن تۆۋەن، توكقا ئۇلاپ داۋاملاشتۇرۇڭ - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - كومپيۇتېرنىڭ يېتەرلىك توك مىقدارىنى ساقلاڭ، توكتىن ئۈزۋەتمەڭ، ئۆچۈرمەڭ ياكى قايتا قوزغاتماڭ - - - Size - چوڭلۇقى - - - - UpdateModule - - Updates - يېڭىلانمىلار - - - - UpdatePlugin - - Check for Updates - يېڭىلانمىنى تەكشۈرۈش - - - - UpdateSettingItem - - Insufficient disk space - دىسكا سىغىمى يەتمىدى - - - Update failed: insufficient disk space - دىسكا سىغىمى يەتمىگەچكە يېڭىلىنالمىدى - - - Update failed - يېڭىلاش مەغلۇب بولدى - - - Network error - تور خاتالىقى - - - Network error, please check and try again - تور بىنورمال، سەل تۇرۇپ قايتا سىناڭ - - - Packages error - قاچىلاش بولىقىدا خاتالىق كۆرۈلدى - - - Packages error, please try again - قاچىلاش بولىقىدا خاتالىق كۆرۈلدى، قايتا سىناڭ - - - Dependency error - بېقىنىش خاتالىقى - - - Unmet dependencies - بېقىنىش مۇناسىۋىتىنى ھازىرلىمىغان - - - The newest system installed, restart to take effect - سىستېمىنى يېڭىلاش تامام، قايتا قوزغىتىپ ئۈنۈمىنى كۆرۈڭ - - - Waiting - ئۆچرەتتە - - - Backing up - زاپاسلانمىنى ئەسلىگە كەلتۈرۈش - - - System backup failed - سىستېمىنى زاپاسلاش مەغلۇپ بولدى - - - Release date: - تارقىتىلغان ۋاقتى: - - - Server - مۇلازىمىتېر - - - Desktop - ئۈستەليۈزى - - - Version - نەشرى - - - - UpdateSettingsModule - - Update Settings - يېڭىلاش تەڭشىكى - - - System - سېستىما - - - Security Updates Only - پەقەت بىخەتەرلىك يامىقى يېڭىلاش - - - Switch it on to only update security vulnerabilities and compatibility issues - «پەقەت بىخەتەرلىك يامىقى يېڭىلاش» -ئاچقاندا پەقەت بىخەتەرلىك يوچۇقى ۋە ماسلىشىشچانلىققا مۇناسىۋەتلىك يېڭىلانمىلارنىلا يېڭىلايدۇ - - - Third-party Repositories - 3-تەرەپ ئامبىرى - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - باشقا تەڭشەك - - - Auto Check for Updates - ئاپتوماتىك تەكشۈرۈش - - - Auto Download Updates - ئاپتوماتىك چۈشۈرۈش - - - Switch it on to automatically download the updates in wireless or wired network - يېڭىلانمىنى ئاپتوماتىك چۈشۈرۈش» ئاچقاندا، سىمسىز ياكى سىملىق توردا يېڭىلانمىلار« ئاپتوماتىك چۈشىدۇ - - - Auto Install Updates - ئاپتوماتىك قاچىلا - - - Updates Notification - يېڭىلانمىنى ئەسكەرتىش - - - Clear Package Cache - يۇمشاق دېتال ساقلانمىلىرىنى تازىلاش - - - Updates from Internal Testing Sources - ئىچكى سىناق مەنبەسى بويىچە يېڭىلاش - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - سىستېما يېڭىلانمىلىرى - - - Security Updates - بىخەتەرلىك يىڭىلانمىللىرى - - - Install updates automatically when the download is complete - چۈشۈرۈپ بولغاندا ئاپتوماتىك قاچىلىنىدۇ - - - Install "%1" automatically when the download is complete - “%1”چۈشۈرۈپ بولغاندا ئاپتوماتىك قاچىلىنىدۇ - - - - UpdateWidget - - Current Edition - نۆۋەتتىكى نەشرى - - - - UpdateWorker - - System Updates - سىستېما يېڭىلانمىلىرى - - - Fixed some known bugs and security vulnerabilities - بايقالغان بەزى نۇقسان ۋە بىخەتەرلىك يوچۇقلىرى تۈزىتىلدى - - - Security Updates - بىخەتەرلىك يىڭىلانمىللىرى - - - Third-party Repositories - 3-تەرەپ ئامبىرى - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - باتارېيە ئىشلىتىش - - - Never - ھەرگىز - - - Shut down - تاقاش - - - Suspend - ۋاقىتلىق تاقاش - - - Hibernate - ئۇخلاش ھالىتى - - - Turn off the monitor - ئېكران تاقالسۇن - - - Do nothing - مەشغۇلات يوق - - - 1 Minute - 1 مىنۇت - - - %1 Minutes - %1 مىنۇت - - - 1 Hour - 1 سائەت - - - Screen and Suspend - ئېكران ۋە كۈتۈش ھالىتى - - - Turn off the monitor after - ئېكران تاقالسۇن - - - Lock screen after - ئېكران ئاپتوماتىك قۇلۇپلاش - - - Computer suspends after - كۈتۈش ھالىتىگە كىرسۇن - - - Computer will suspend after - كومپيۇتېر ۋاقىتلىق توختىغاندىن كىيىن - - - When the lid is closed - خاتىرە كومپيۇتېرنىڭ ئېكرانى يېپىلغاندا - - - When the power button is pressed - توك مەنبە كۇنۇپكىسىنى باسقاندا - - - Low Battery - توك ئاز ھالەتنى باشقۇرۇش - - - Low battery notification - توك ئاز قالغانلىق ئۇقتۇرۇشى - - - Low battery level - توك ئاز قالدى - - - Auto suspend battery level - باتارېيەنى ئاپتوماتىك توختىتىش - - - Battery Management - باتارېيە باشقۇرۇش - - - Display remaining using and charging time - توك مىقدارى ۋە توك قاچىلىنىپ بولۇش ۋاقتى كۆرۈنسۇن - - - Maximum capacity - ئەڭ چوڭ سىغىمى - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - توك مەنبەسى ئىشلىتىش - - - 1 Minute - 1 مىنۇت - - - %1 Minutes - %1 مىنۇت - - - 1 Hour - 1 سائەت - - - Never - ھەرگىز - - - Screen and Suspend - ئېكران ۋە كۈتۈش ھالىتى - - - Turn off the monitor after - ئېكران تاقالسۇن - - - Lock screen after - ئېكران ئاپتوماتىك قۇلۇپلاش - - - Computer suspends after - كۈتۈش ھالىتىگە كىرسۇن - - - When the lid is closed - خاتىرە كومپيۇتېرنىڭ ئېكرانى يېپىلغاندا - - - When the power button is pressed - توك مەنبە كۇنۇپكىسىنى باسقاندا - - - Shut down - تاقاش - - - Suspend - ۋاقىتلىق تاقاش - - - Hibernate - ئۇخلاش ھالىتى - - - Turn off the monitor - ئېكران تاقالسۇن - - - Show the shutdown Interface - - - - Do nothing - مەشغۇلات يوق - - - - WacomModule - - Drawing Tablet - سېزىمچان تاختا - - - Mode - ھالىتى - - - Pressure Sensitivity - بېسىش سېزىمى - - - Pen - قەلەم - - - Mouse - مائۇس - - - Light - سۇس رەڭ - - - Heavy - ئېغىرلىقى - - - - main - - Control Center provides the options for system settings. - كونترول مەركىزىدە مەشغۇلات سىستېمىسىنىڭ بارلىق تەڭشەك تۈرلىرى تەمىنلىدۇ - - - - updateControlPanel - - Downloading - چۈشۈرۋاتىدۇ - - - Waiting - ئۆچرەتتە - - - Installing - قاچىلاتىدۇ - - - Backing up - زاپاسلاش - - - Download and install - چۈشۈرۈش ۋە قاچىلاش - - - Learn more - يەنىمۇ چۈشىنىش - - - diff --git a/dcc-old/translations/dde-control-center_uk.ts b/dcc-old/translations/dde-control-center_uk.ts deleted file mode 100644 index 58eba16cd3..0000000000 --- a/dcc-old/translations/dde-control-center_uk.ts +++ /dev/null @@ -1,3998 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - Дозволити іншим пристроям Bluetooth знаходити цей пристрій - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Увімкніть bluetooth , щоб знайти пристрої поблизу (гучномовець, клавіатура, мишка) - - - My Devices - Мої пристрої - - - Other Devices - Інші пристрої - - - Show Bluetooth devices without names - Показати пристрої Bluetooth без назв - - - Connect - З'єднатися - - - Disconnect - Відʼєднатися - - - Rename - Перейменувати - - - Send Files - Надіслати файли - - - Ignore this device - Ігнорувати цей пристрій - - - Connecting - З'єднання - - - Disconnecting - Від'єднання - - - - AddButtonWidget - - Add Application - Додати програму - - - Open Desktop file - Відкрити файл робочого столу - - - Apps (*.desktop) - програми (*.desktop) - - - All files (*) - усі файли (*) - - - - AddFaceInfoDialog - - Enroll Face - Реєстрація обличчя - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - Переконайтеся, що усі частини вашого обличчя є чітко видимими і їх не закрито сторонніми об'єктами. Також ваше обличчя має бути добре освітлено. - - - Cancel - Скасувати - - - Next - Далі - - - Face enrolled - Обличчя зареєстровано - - - Use your face to unlock the device and make settings later - Скористайтеся вашим обличчям для розблокування пристрою і змініть параметри пізніше - - - Done - Виконано - - - Failed to enroll your face - Не вдалося зареєструвати ваше обличчя - - - Try Again - Повторити спробу - - - Close - Закрити - - - - AddFingerDialog - - Cancel - Скасувати - - - Done - Виконано - - - Scan Again - Повторити сканування - - - Scan Suspended - Сканування призупинено - - - - AddIrisInfoDialog - - Enroll Iris - Реєстрація райдужки - - - Cancel - Скасувати - - - Next - Далі - - - Iris enrolled - Райдужку зареєстровано - - - Done - Виконано - - - Failed to enroll your iris - Не вдалося зареєструвати вашу райдужку - - - Try Again - Повторити спробу - - - - AdvancedSettingModule - - Advanced Setting - - - - Audio Framework - - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - - - - - AuthenticationInfoItem - - No more than 15 characters - Не більше 15 символів - - - Use letters, numbers and underscores only, and no more than 15 characters - Можна використовувати лише латинські літери, цифри та символи підкреслювання. Довжина назви не повинна перевищувати 15 символів. - - - Use letters, numbers and underscores only - Можна використовувати лише латинські літери, цифри та символи підкреслювання - - - - AuthenticationModule - - Biometric Authentication - Біометричне розпізнавання - - - - AuthenticationPlugin - - Fingerprint - Відбиток пальця - - - Face - Обличчя - - - Iris - Райдужка - - - - BluetoothDeviceModel - - Connected - Підключено - - - Not connected - Не підключено - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - Керування пристроями Bluetooth - - - - CharaMangerModel - - Fingerprint1 - Відбиток1 - - - Fingerprint2 - Відбиток2 - - - Fingerprint3 - Відбиток3 - - - Fingerprint4 - Відбиток4 - - - Fingerprint5 - Відбиток5 - - - Fingerprint6 - Відбиток6 - - - Fingerprint7 - Відбиток7 - - - Fingerprint8 - Відбиток8 - - - Fingerprint9 - Відбиток9 - - - Fingerprint10 - Відбиток10 - - - Scan failed - Помилка сканування - - - The fingerprint already exists - Відбиток вже існує - - - Please scan other fingers - Будь ласка, виконайте сканування інших пальців - - - Unknown error - Невідома помилка - - - Scan suspended - Сканування призупинено - - - Cannot recognize - Не вдалося розпізнати - - - Moved too fast - Надто швидкий рух - - - Finger moved too fast, please do not lift until prompted - Палець прибрано надто швидко. Будь ласка, не знімайте палець, доки програма вас про це не попросить. - - - Unclear fingerprint - Брудний палець - - - Clean your finger or adjust the finger position, and try again - Витріть палець або скоригуйте його позицію. Потім повторіть спробу. - - - Already scanned - Вже скановано - - - Adjust the finger position to scan your fingerprint fully - Скоригуйте позицію пальця, щоб програма могла засканувати відбиток повністю. - - - Finger moved too fast. Please do not lift until prompted - Надто швидкий рух пальцем. Будь ласка, не прибирайте палець, доки вас про це не попросять. - - - Lift your finger and place it on the sensor again - Прийміть ваш палець, а потім знову торкніться ним сенсора - - - Position your face inside the frame - Розташуйте ваше обличчя всередині рамки - - - Face enrolled - Обличчя зареєстровано - - - Position a human face please - Людське обличчя, будь ласка - - - Keep away from the camera - Тримайтеся подалі від камери - - - Get closer to the camera - Тримайтеся ближче до камери - - - Do not position multiple faces inside the frame - Будь ласка, лише одне обличчя у рамці - - - Make sure the camera lens is clean - Переконайтеся, що об'єктив камери не забруднено - - - Do not enroll in dark, bright or backlit environments - Не виконуйте реєстрацію у надто темних або світлих середовищах або із підсвічуванням ззаду - - - Keep your face uncovered - Не прикривайте обличчя - - - Scan timed out - Перевищено граничний час сканування - - - Device crashed, please scan again! - Пристрій не спрацював. Будь ласка, повторіть сканування! - - - Cancel - Скасувати - - - - CooperationSettingsDialog - - Collaboration Settings - Параметри співпраці - - - Share mouse and keyboard - Спільне використання миші і клавіатури - - - Share your mouse and keyboard across devices - Спільне використання миші і клавіатури між пристроями - - - Share clipboard - Спільне використання буфера обміну - - - Storage path for shared files - Шлях зберігання для спільних файлів - - - Share the copied content across devices - Спільне використання скопійованих даних між пристроями - - - Cancel - button - Скасувати - - - Confirm - button - Підтвердити - - - - dccV23::AccountSpinBox - - Always - Завжди - - - - dccV23::AccountsModule - - Users - Користувачі - - - User management - Керування записами користувачів - - - Create User - Створити запис користувача - - - Username - Користувач - - - Change Password - Зміна пароля - - - Delete User - Вилучити запис користувача - - - User Type - Тип користувача - - - Auto Login - Автоматичний вхід - - - Login Without Password - Входити в Систему без введення Паролю - - - Validity Days - Дні чинності - - - Group - Група - - - The full name is too long - Ім'я повністю є надто довгим - - - Standard User - Стандартний користувач - - - Administrator - Адміністратор - - - Reset Password - Скинути пароль - - - The full name has been used by other user accounts - Це ім'я повністю було використано в інших облікових записах користувачів - - - Full Name - Повне ім'я - - - Go to Settings - Перейти до параметрів - - - Cancel - Скасувати - - - OK - Гаразд - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - «Автоматичний вхід» можна увімкнути лише для одного облікового запису. Будь ласка, спочатку вимкніть його для облікового запису «%1» - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Ваш вузол успішно вилучено з сервера домену - - - Your host joins the domain server successfully - Ваш вузол успішно долучено до сервера домену - - - Your host failed to leave the domain server - Не вдалося залишити сервер домену - - - Your host failed to join the domain server - Не вдалося долучитися до сервера домену - - - AD domain settings - Налаштування домену AD - - - Password not match - Пароль є невідповідним - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Показувати сповіщення від %1 на стільницю та у центрі сповіщень. - - - Play a sound - Відтворити звук - - - Show messages on lockscreen - Показувати повідомлення на екрані блокування - - - Show in notification center - Показати у центрі сповіщень - - - Show message preview - Показати попередній перегляд повідомлення - - - - dccV23::AvatarListDialog - - Person - Особа - - - Animal - Тварина - - - Illustration - Ілюстрація - - - Expression - Вираз - - - Custom Picture - Нетипове зображення - - - Cancel - Скасувати - - - Save - Зберегти - - - - dccV23::AvatarListFrame - - Dimensional Style - Стиль розмірностей - - - Flat Style - Простий стиль - - - - dccV23::AvatarListView - - Images - Зображення - - - - dccV23::BootWidget - - Updating... - Оновлення… - - - Startup Delay - Затримка Запуску - - - Theme - Тема - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Ви можете вибрати пункт у меню завантаження, який слід зробити першим, а також перетягнути і скинути зображення, яке слід використати як тло. - - - Click the option in boot menu to set it as the first boot - Клацніть на пункті у меню завантаження, щоб встановити його першим варіантом - - - Switch theme on to view it in boot menu - Увімкніть тему, щоб використати її у меню завантаження - - - GRUB Authentication - Розпізнавання у GRUB - - - GRUB password is required to edit its configuration - Для редагування налаштувань GRUB слід вказати пароль - - - Change Password - Зміна пароля - - - Boot Menu - Меню завантаження - - - Change GRUB password - Змінити пароль до GRUB - - - Username: - Користувач: - - - root - root - - - New password: - Новий пароль: - - - Repeat password: - Повторіть пароль: - - - Required - Обов'язкове - - - Cancel - button - Скасувати - - - Confirm - button - Підтвердити - - - Password cannot be empty - Пароль не може бути порожнім - - - Passwords do not match - Паролі не збігаються - - - - dccV23::BrightnessWidget - - Brightness - Яскравість - - - Color Temperature - Колірна температура - - - Auto Brightness - Автоматична яскравість - - - Night Shift - Нічна зміна - - - The screen hue will be auto adjusted according to your location - Відтінок екрана буде автоматично налаштовано відповідно до вашого розташування - - - Change Color Temperature - Змінити колірну температуру - - - Cool - Холодне - - - Warm - Тепле - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - Сумісне використання декількох екранів - - - PC Collaboration - Взаємодія ПК - - - Connect to - З'єднатися - - - Select a device for collaboration - Виберіть пристрій для сумісного використання - - - Device Orientation - Орієнтація пристрою - - - On the top - Згори - - - On the right - Праворуч - - - On the bottom - Знизу - - - On the left - Ліворуч - - - My Devices - Мої пристрої - - - Other Devices - Інші пристрої - - - - dccV23::CommonInfoPlugin - - General Settings - Загальні параметри - - - Boot Menu - Меню завантаження - - - Developer Mode - Режим розробника - - - User Experience Program - Програма взаємодії з користувачем - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Погодитися та приєднатися до програми досвіду користувачів - - - The Disclaimer of Developer Mode - Попередження щодо режиму розробника - - - Agree and Request Root Access - Погодитися і отримати доступ root - - - Failed to get root access - Не вдалося отримати доступ root - - - Please sign in to your Union ID first - Будь ласка, спершу увійдіть до вашого Union ID - - - Cannot read your PC information - Не вдалося прочитати дані щодо вашого ПК - - - No network connection - Немає з'єднання з мережею - - - Certificate loading failed, unable to get root access - Не вдалося завантажити сертифікат — не вдалося отримати адміністративний доступ (root) - - - Signature verification failed, unable to get root access - Не вдалося перевірити підпис — не вдалося отримати адміністративний доступ (root) - - - - dccV23::CreateAccountPage - - Group - Група - - - Cancel - Скасувати - - - Create - Створити - - - New User - Новий користувач - - - User Type - Тип користувача - - - Username - Ім'я користувача - - - Full Name - Повне ім'я - - - Password - Пароль - - - Repeat Password - Повторіть пароль - - - Password Hint - Підказка щодо пароля - - - The full name is too long - Ім'я повністю є надто довгим - - - Passwords do not match - Паролі не збігаються - - - Standard User - Стандартний користувач - - - Administrator - Адміністратор - - - Customized - Нетиповий - - - Required - Обов'язкове - - - optional - необов'язковий - - - The hint is visible to all users. Do not include the password here. - Підказку буде показано усім користувачам. Не включайте до неї пароля. - - - Policykit authentication failed - Не пройдено розпізнавання до Policykit - - - Username must be between 3 and 32 characters - Ім'я користувача має містити 3-32 символи - - - The first character must be a letter or number - Перший символ має бути літерою або цифрою - - - Your username should not only have numbers - Ім'я користувача не може складатися лише з цифр - - - The username has been used by other user accounts - Це ім'я користувача було використано в інших облікових записах користувачів - - - The full name has been used by other user accounts - Це ім'я повністю було використано в інших облікових записах користувачів - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - Вами не завантажено зображення. Для завантаження зображення можете клацнути кнопкою миші і перетягти зображення - - - Uploaded file type is incorrect, please upload again - Тип вивантаженого файла є некоректним. Будь ласка, повторіть вивантаження - - - Images - Зображення - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Додати спеціальний ярлик - - - Name - Назва - - - Required - Обов'язкове - - - Command - Команда - - - Cancel - Скасувати - - - Add - Додати - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Це скорочення конфліктує з %1, натисніть «Додати», щоб негайно активувати це скорочення - - - - dccV23::CustomEdit - - Required - Обов'язкове - - - Cancel - Скасувати - - - Save - Зберегти - - - Shortcut - Ярлик - - - Name - Назва - - - Command - Команда - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Це скорочення конфліктує з %1, натисніть «Додати», щоб негайно активувати це скорочення - - - - dccV23::CustomItem - - Shortcut - Ярлик - - - Please enter a shortcut - Будь ласка, введіть скорочення - - - - dccV23::CustomRegionFormatDialog - - Custom format - Нетиповий формат - - - First day of week - Перший день тижня - - - Short date - Дата скорочено - - - Long date - Дата повністю - - - Short time - Час скорочено - - - Long time - Час повністю - - - Currency symbol - Символ валюти - - - Numbers - Числа - - - Paper - Папір - - - Cancel - Скасувати - - - Save - Зберегти - - - - dccV23::DetailInfoItem - - For more details, visit: - Щоб дізнатися більше, скористайтеся: - - - - dccV23::DeveloperModeDialog - - Request Root Access - Попросити про доступ до root - - - Online - У мережі - - - Offline - Поза мережею - - - Please sign in to your Union ID first and continue - Будь ласка, спершу увійдіть до вашого Union ID і продовжіть роботу - - - Next - Далі - - - Export PC Info - Експортувати дані ПК - - - Import Certificate - Імпортувати сертифікат - - - 1. Export your PC information - 1. Експортуйте дані вашого ПК - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Перейдіть на https://www.chinauos.com/developMode, щоб отримати автономний сертифікат - - - 3. Import the certificate - 3. Імпортуйте сертифікат - - - - dccV23::DeveloperModeWidget - - Request Root Access - Попросити про доступ до root - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - У режимі розробника ви отримаєте права адміністратора системи, зможете встановлювати і запускати непідписані програми. Втім, у цьому режимі ви можете зашкодити цілісності системи. Будь ласка, будьте обережні із його використанням. - - - The feature is not available at present, please activate your system first - Цю можливість у поточній версії ще не реалізовано. Будь ласка, спочатку активуйте вашу систему. - - - Failed to get root access - Не вдалося отримати доступ root - - - Please sign in to your Union ID first - Будь ласка, спершу увійдіть до вашого Union ID - - - Cannot read your PC information - Не вдалося прочитати дані щодо вашого ПК - - - No network connection - Немає з'єднання з мережею - - - Certificate loading failed, unable to get root access - Не вдалося завантажити сертифікат — не вдалося отримати адміністративний доступ (root) - - - Signature verification failed, unable to get root access - Не вдалося перевірити підпис — не вдалося отримати адміністративний доступ (root) - - - To make some features effective, a restart is required. Restart now? - Для вмикання деяких можливостей потрібне перезавантаження системи. Перезавантажити систему зараз? - - - Cancel - Скасувати - - - Restart Now - Перезавантажити зараз - - - Root Access Allowed - Дозволено доступ до root - - - - dccV23::DisplayPlugin - - Display - Дисплей - - - Light, resolution, scaling and etc - Підсвічування, роздільна здатність, масштабування тощо - - - - dccV23::DouTestWidget - - Double-click Test - Двічі клацніть на кнопці «Тест» - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - Налаштування клавіатури - - - Repeat Delay - Повторити затримку - - - Short - Короткий - - - Long - Довгий - - - Repeat Rate - Повторити оцінювання - - - Slow - Повільно - - - Fast - Швидко - - - Test here - Тест тут - - - Numeric Keypad - Цифрова клавіатура - - - Caps Lock Prompt - Підказка Caps Lock - - - - dccV23::GeneralSettingWidget - - Left Hand - Ліворуч - - - Disable touchpad while typing - Вимикати сенсорну панель при наборі - - - Scrolling Speed - Швидкість прокрутки - - - Double-click Speed - Швидкість подвійного кліку - - - Slow - Повільно - - - Fast - Швидко - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Розкладка клавіатури - - - Edit - Змінити - - - Add Keyboard Layout - Додати розкладку клавіатури - - - Done - Виконано - - - - dccV23::KeyboardLayoutDialog - - Cancel - Скасувати - - - Add - Додати - - - Add Keyboard Layout - Додати розкладку клавіатури - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Клавіатура і мова - - - Keyboard - Клавіатура - - - Keyboard Settings - Налаштування клавіатури - - - keyboard Layout - Розкладка клавіатури - - - Keyboard Layout - Розкладка клавіатури - - - Language - Мова - - - Shortcuts - Поєднання клавіш - - - - dccV23::MainWindow - - Help - Допомога - - - - dccV23::ModifyPasswdPage - - Change Password - Зміна пароля - - - Reset Password - Скинути пароль - - - Resetting the password will clear the data stored in the keyring. - Скидання пароля призведе до вилучення даних, які зберігаються у сховищі ключів. - - - Current Password - Поточний пароль - - - Forgot password? - Забули пароль? - - - New Password - Новий пароль - - - Repeat Password - Повторіть пароль - - - Password Hint - Підказка щодо пароля - - - Cancel - Скасувати - - - Save - Зберегти - - - Passwords do not match - Паролі не збігаються - - - Required - Обов'язкове - - - Optional - Необов'язкове - - - Password cannot be empty - Пароль не може бути порожнім - - - The hint is visible to all users. Do not include the password here. - Підказку буде показано усім користувачам. Не включайте до неї пароля. - - - Wrong password - Помилковий пароль - - - New password should differ from the current one - Новий пароль повинен відрізнятися від попереднього - - - System error - Системна помилка - - - Network error - Помилка мережі - - - - dccV23::MonitorControlWidget - - Identify - Ідентифікувати - - - Gather Windows - Зібрати вікна - - - Screen rearrangement will take effect in %1s after changes - Перевпорядковування екранів буде виконано за %1с після внесення змін - - - - dccV23::MousePlugin - - Mouse - Миша - - - General - Загальне - - - Touchpad - Сенсорна панель - - - TrackPoint - Контрольна точка - - - - dccV23::MouseSettingWidget - - Pointer Speed - Покажчик швидкості - - - Mouse Acceleration - Прискорення миші - - - Disable touchpad when a mouse is connected - Вимкнути тачпад, коли підключена миша - - - Natural Scrolling - Природне прокручування - - - Slow - Повільно - - - Fast - Швидко - - - - dccV23::MultiScreenWidget - - Multiple Displays - Кілька дисплеїв - /display/Multiple Displays - - - Mode - Режим - /display/Mode - - - Main Screen - Головний екран - /display/Main Scree - - - Duplicate - Дублікат - - - Extend - Розширити - - - Only on %1 - Лише на %1 - - - - dccV23::NotificationModule - - AppNotify - AppNotify - - - Notification - Сповіщення - - - SystemNotify - SystemNotify - - - - dccV23::PalmDetectSetting - - Palm Detection - Виявлення рук - - - Minimum Contact Surface - Мінімальна контактна поверхня - - - Minimum Pressure Value - Мінімальне значення тиску - - - Disable the option if touchpad doesn't work after enabled - Вимкніть цю опцію, якщо тачпад не працює після ввімкнення - - - - dccV23::PluginManager - - following plugins load failed - вказані нижче додатки не вдалося завантажити - - - plugins cannot loaded in time - додатки не вдалося завантажити вчасно - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Правила конфіденційності - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>Ми поважаємо ваші права на конфіденційність ваших особистих даних. Тому нами розроблено правила конфіденційності, які обмежують збирання, використання, оприлюднення, передавання, розкриття для громадськості та зберігання нами відомостей щодо вас.</p><p>Можете натиснути <a href="%1">тут</a>, щоб переглянути найсвіжішу версію правил конфіденційності і/або переглянути ці дані у мережі, відвідавши <a href="%1">%1</a>. Будь ласка, уважно прочитайте та переконайтеся, що вам повністю зрозумілий наш підхід до конфіденційності даних користувачів. Якщо у вас виникнуть якісь питання, будь ласка, зв'яжіться із нами за адресою support@uniontech.com.</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - Пароль не може бути порожнім - - - Password must have at least %1 characters - Пароль має складатися із принаймні %1 символів - - - Password must be no more than %1 characters - Пароль має складатися з не більше, ніж %1 символів - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Пароль може складатися лише з літер латиниці (із врахуванням регістру), цифр та спеціальних символів (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - No more than %1 palindrome characters please - Не більше %1 символів у паліндромі, будь ласка - - - No more than %1 monotonic characters please - Не більше %1 послідовних символів, будь ласка - - - No more than %1 repeating characters please - Не більше %1 повторюваних символів, будь ласка - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - Пароль має складатися із великих і малих латинських літер, цифр і символів (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - Password must not contain more than 4 palindrome characters - У паролі не повинно бути паліндромів, що складаються з понад 4 символів - - - Do not use common words and combinations as password - Не використовуйте поширені слова або їхні комбінації як пароль - - - Create a strong password please - Будь ласка, створіть складний пароль - - - It does not meet password rules - Не відповідає правилам створення паролів - - - - dccV23::RefreshRateWidget - - Refresh Rate - Частота оновлення - - - Hz - Гц - - - Recommended - Рекомендовано - - - - dccV23::RegionFormatDialog - - Region format - Формат регіону - - - Default format - Типовий формат - - - First of day - Перший день - - - Short date - Дата скорочено - - - Long date - Дата повністю - - - Short time - Час скорочено - - - Long time - Час повністю - - - Currency symbol - Символ валюти - - - Numbers - Числа - - - Paper - Папір - - - Cancel - Скасувати - - - Save - Зберегти - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Ви справді хочете вилучити цей обліковий запис? - - - Delete account directory - Вилучити каталог облікового запису - - - Cancel - Скасувати - - - Delete - Вилучити - - - - dccV23::ResolutionWidget - - Resolution - Роздільність - /display/Resolution - - - Resize Desktop - Змінити розміри стільниці - /display/Resize Desktop - - - Default - Типово - - - Fit - Підібрати - - - Stretch - Розтягнути - - - Center - Центрувати - - - Recommended - Рекомендовано - - - - dccV23::RotateWidget - - Rotation - Обертання - /display/Rotation - - - Standard - Стандартне - - - 90° - 90° - - - 180° - 180° - - - 270° - 270° - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Параметрами монітора передбачено лише масштабування у 100% - - - Display Scaling - Масштабування дисплея - - - - dccV23::SearchInput - - Search - Пошук - - - - dccV23::SecondaryScreenDialog - - Brightness - Яскравість - - - - dccV23::SecurityLevelItem - - Weak - Простий - - - Medium - Посередній - - - Strong - Складний - - - - dccV23::SecurityQuestionsPage - - Security Questions - Питання захисту - - - These questions will be used to help reset your password in case you forget it. - Ці питання буде використано як допоміжні у процедурі скиданні вашого пароля, якщо ви його забудете. - - - Security question 1 - Питання захисту 1 - - - Security question 2 - Питання захисту 2 - - - Security question 3 - Питання захисту 3 - - - Cancel - Скасувати - - - Confirm - Підтвердити - - - Keep the answer under 30 characters - Довжина питання не повинна перевищувати 30 символів - - - Do not choose a duplicate question please - Будь ласка, не повторюйте ті самі питання - - - Please select a question - Будь ласка, виберіть питання - - - What's the name of the city where you were born? - У якому місті ви народилися? - - - What's the name of the first school you attended? - Як називалася ваша перша школа? - - - Who do you love the most in this world? - Яке місце у світі вам подобається найбільше? - - - What's your favorite animal? - Яка ваша улюблена тварина? - - - What's your favorite song? - Яка ваша улюблена пісня? - - - What's your nickname? - Який у вас псевдонім? - - - It cannot be empty - Не може бути порожнім - - - - dccV23::SettingsHead - - Edit - Змінити - - - Done - Виконано - - - - dccV23::ShortCutSettingWidget - - System - Система - - - Window - Вікно - - - Workspace - Робоча область - - - Assistive Tools - Допоміжні інструменти - - - Custom Shortcut - Користувацькі Ярлики - - - Restore Defaults - Відновити за замовчуванням - - - Shortcut - Ярлик - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Будь ласка, скиньте скорочення - - - Cancel - Скасувати - - - Replace - Замінити - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Це скорочення конфліктує з %1, натисніть «Замінити», щоб негайно активувати це скорочення - - - - dccV23::ShortcutItem - - Enter a new shortcut - Введіть нове скорочення - - - - dccV23::SystemInfoModel - - available - доступно - - - - dccV23::SystemInfoModule - - About This PC - Про цей ПК - - - Computer Name - Назва комп'ютера - - - systemInfo - дані щодо системи - - - OS Name - Назва ОС - - - Version - Версія - - - Edition - Версія - - - Type - Тип - - - Authorization - Уповноваження - - - Processor - Процесор - - - Memory - Пам'ять - - - Graphics Platform - Графічна платформа - - - Kernel - Ядро - - - Agreements and Privacy Policy - Угоди і правила конфіденційності - - - Edition License - Ліцензія на випуск - - - End User License Agreement - Ліцензійна угода із кінцевим користувачем - - - Privacy Policy - Правила конфіденційності - - - %1-bit - %1 біт - - - - dccV23::SystemInfoPlugin - - System Info - Дані щодо системи - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Скасувати - - - Add - Додати - - - Add System Language - Додати мову системи - - - - dccV23::SystemLanguageWidget - - Edit - Змінити - - - Language List - Список мов - - - Add Language - Додати мову - - - Done - Виконано - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Не турбувати - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Сповіщення програм не буде показано на стільниці, а звуковий супровід буде вимкнено, але ви зможете бачити повідомлення у центрі сповіщень. - - - When the screen is locked - Якщо екран заблоковано - - - - dccV23::TimeSlotItem - - From - Від - - - To - До - - - - dccV23::TouchScreenModule - - Touch Screen - Сенсорний екран - - - Select your touch screen when connected or set it here. - Виберіть ваш сенсорний екран при з'єднанні або встановіть його тут. - - - Confirm - Підтвердити - - - Cancel - Скасувати - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - Швидкість вказівника - - - Enable TouchPad - Увімкнути сенсорну панель - - - Tap to Click - Торкання для клацання - - - Natural Scrolling - Природне гортання - - - Slow - Повільно - - - Fast - Швидко - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Покажчик швидкості - - - Slow - Повільно - - - Fast - Швидко - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Долучитися до програми удосконалення взаємодії - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/en/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-en - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Участь у програмі відгуків користувачів означає, що ви надаєте нам доступ до збирання і використання відомостей щодо вашого пристрою, системи та використаних програм. Якщо ви не хочете, щоб ми збирали і використовували ці дані, не беріть участь у програмі відгуків. Щоб дізнатися більше, будь ласка, ознайомтеся із Правилами конфіденційності Deepin (<a href="%1">%1</a>).</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>Участь у програмі відгуків користувачів означає, що ви надаєте нам доступ до збирання і використання відомостей щодо вашого пристрою, системи та використаних програм. Якщо ви не хочете, щоб ми збирали і використовували ці дані, не беріть участь у програмі відгуків. Щоб дізнатися більше про керування вашими даними, будь ласка, ознайомтеся із Правилами конфіденційності операційної системи UnionTech (<a href="%1">%1</a>).</p> - - - - DateWidget - - Year - Рік - - - Month - Місяць - - - Day - День - - - - DatetimeModule - - Time and Format - Час і форматування - - - - DatetimeWorker - - Authentication is required to change NTP server - Для зміни NTP-сервера потрібна автентифікація - - - - DefAppModule - - Default Applications - Типові програми - - - - DefAppPlugin - - Webpage - Вебсторінка - - - Mail - Пошта - - - Text - Текст - - - Music - Музика - - - Video - Відео - - - Picture - Зображення - - - Terminal - Термінал - - - - DisclaimersDialog - - Disclaimer - Відмова від відповідальності - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - Перш ніж користуватися розпізнаванням за обличчям, зауважте таке: -1. Ваш пристрій можна буде розблокувати за допомогою людини із подібним обличчям або об'єктів, які виглядатимуть подібними на обличчя. -2. Розпізнавання за обличчям є менш безпечним за цифрові або цифрово-літерні паролі. -3. Ймовірність розблокування вашого пристрою за допомогою розпізнавання за обличчям буде меншою в умовах слабкого освітлення, надмірного освітлення, перебування обличчя під великим кутом до вісі камери та в умовах інших подібних сценаріїв. -4. Будь ласка, не надавайте ваш пристрій випадковим стороннім особам, щоб уникнути використання розпізнавання за обиччям зловмисниками. -5. Окрім описаних вище ситуацій, вам слід продумати інші сценарії, які можуть завадити звичайному використанню розпізнавання за обличчям. - -Щоб мати кращі результати із розпізнаванням за обличчям, будь ласка, зверніть увагу та такі фактори під час фіксації даних обличчя: -1. Будь ласка, скористайтеся добрим освітленням, уникайте прямого сонячного світла та появи інших людей на записаному зображенні. -2. Зверніть увагу на стан обличчя під час запису — переконайтеся, що головний убір, зачіска, окуляри, маска або макіяж та інші фактори не спотворюють вигляду вашого обличчя. -3. Будь ласка, не нахиляйте голову і не дивіться униз, не закривайте очі і не робіть так, щоб було видно лише якусь частину вашого обличчя. Переконайтеся, що у області попереднього перегляду ясно і повністю показано усе обличчя. - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - «Біометричне розпізнавання» — функціональна можливість розпізнавання користувачів, яка надається UnionTech Software Technology Co., Ltd. Під час «біометричного розпізнавання» зібрані біометричні дані буде порівняно із даними, які зберігаються на пристрої. Ідентичність користувача буде встановлено на основі результатів порівняння. -Будь ласка, зауважте, що UnionTech Software не збиратиме і не оброблятиме ваших біометричних даних, які зберігатимуться лише на вашому локальному пристрої. Будь ласка, вмикайте біометричне розпізнавання лише на вашому особистому пристрої і використовуйте ваші власні біометричні дані лише для відповідних операцій. Негайно вимикайте або вилучайте біометричні дані інших осіб на відповідному пристрої. Відповідальність за наслідки недотримання цих вимог покладається на вас. -UnionTech Software працює над вивченням і удосконаленням можливостей із захисту, точності і стабільності біометричного розпізнавання. Втім, через вплив факторів середовища, обладнання, технічних проблем та засобів керування ризиками немає гарантії безумовного проходження вами біометричного розпізнавання. Через це, не слід покладатися повністю на біометричне розпізнавання при вході до UnionTech OS. Якщо у вас є якісь питання та пропозиції щодо використання біометричного розпізнавання, ви можете надати ваш відгук за допомогою «Обслуговування і підтримки» у UnionTech OS. - - - - Cancel - Скасувати - - - Next - Далі - - - - DisclaimersItem - - I have read and agree to the - Прочитано, погоджуюся з - - - Disclaimer - Відмова від відповідальності - - - - DockModuleObject - - Dock - Док - - - Multiple Displays - Кілька дисплеїв - - - Show Dock - Показувати панель - - - Mode - Режим - - - Position - Розташування - - - Status - Статус - - - Show recent apps in Dock - Показувати нещодавні програми на панелі - - - Size - Розмір - - - Plugin Area - Область додатків - - - Select which icons appear in the Dock - Виберіть, які піктограми буде показано на бічній панелі - - - Fashion mode - Модний режим - - - Efficient mode - Ефективний режим - - - Top - Вгорі - - - Bottom - Внизу - - - Left - Ліворуч - - - Right - Праворуч - - - Location - Розташування - - - Keep shown - Показувати постійно - - - Keep hidden - Залишати прихованим - - - Smart hide - Розумне приховування - - - Small - Малий - - - Large - Великий - - - On screen where the cursor is - На екрані, де перебуває вказівник - - - Only on main screen - Лише на головному екрані - - - - FaceInfoDialog - - Enroll Face - Реєстрація обличчя - - - Position your face inside the frame - Розташуйте ваше обличчя всередині рамки - - - - FaceWidget - - Edit - Змінити - - - Manage Faces - Керування записами обличчя - - - You can add up to 5 faces - Ви можете додавати до 5 записів обличчя - - - Done - Виконано - - - Add Face - Додати обличчя - - - The name already exists - Така назва вже існує - - - Faceprint - Ідентифікатор обличчя - - - - FaceidDetailWidget - - No supported devices found - Підтримуваних пристроїв не виявлено - - - - FingerDetailWidget - - No supported devices found - Підтримуваних пристроїв не виявлено - - - - FingerDisclaimer - - Add Fingerprint - Додати відбиток пальця - - - Cancel - Скасувати - - - Next - Далі - - - - FingerInfoWidget - - Place your finger - Притисніть палець - - - Place your finger firmly on the sensor until you're asked to lift it - Щільно притисніть палець до сканера, доки програма не попросить його прибрати - - - Scan the edges of your fingerprint - Сканування країв вашого відбитка - - - Place the edges of your fingerprint on the sensor - Розташуйте палець у центрі сканера - - - Lift your finger - Прийміть ваш палець - - - Lift your finger and place it on the sensor again - Прийміть ваш палець, а потім знову торкніться ним сенсора - - - Adjust the position to scan the edges of your fingerprint - Скоригуйте позицію для сканування країв вашого відбитка - - - Lift your finger and do that again - Прийміть ваш палець і повторіть спробу - - - Fingerprint added - Відбиток пальця додано - - - - FingerWidget - - Edit - Змінити - - - Fingerprint Password - Пароль відбитку пальців - - - You can add up to 10 fingerprints - Ви можете додати до 10 відбитків - - - Done - Виконано - - - The name already exists - Така назва вже існує - - - Add Fingerprint - Додати відбиток пальця - - - - GeneralModule - - General - Загальне - - - Balanced - Збалансований - - - Balance Performance - Збалансована швидкодія - - - High Performance - Висока продуктивність - - - Power Saver - Заощадження живлення - - - Power Plans - Плани живлення - - - Power Saving Settings - Параметри заощадження енергії - - - Auto power saving on low battery - Автоматичне заощадження енергії при низькому заряді - - - Decrease Brightness - Зменшити яскравість - - - Low battery threshold - Рівень низького заряду - - - Auto power saving on battery - Автоматичне заощадження енергії на акумуляторі - - - Wakeup Settings - Параметри пробудження - - - Unlocking is required to wake up the computer - Для пробудження комп'ютера слід його розблокувати - - - Unlocking is required to wake up the monitor - Для пробудження монітора слід його розблокувати - - - - HostNameItem - - It cannot start or end with dashes - Не може починатися і завершуватися дефісом - - - 1~63 characters please - Будь ласка, від 1 до 63 символів - - - - InternalButtonItem - - Internal testing channel - Канал внутрішнього тестування - - - click here open the link - натисніть тут, щоб відкрити посилання - - - - IrisDetailWidget - - No supported devices found - Підтримуваних пристроїв не виявлено - - - - IrisWidget - - Edit - Змінити - - - Manage Irises - Керування записами райдужки - - - You can add up to 5 irises - Ви можете додавати до 5 записів райдужки - - - Done - Виконано - - - Add Iris - Додати райдужку - - - The name already exists - Така назва вже існує - - - Iris - Райдужка - - - - KeyLabel - - None - Нічого - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - © Спільнота Deepin, 2011-%1 - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - © UnionTech Software Technology Co., LTD, 2019-%1 - - - - MicrophonePage - - Input Device - Пристрій введення - - - Automatic Noise Suppression - Автоматичне придушення шуму - - - Input Volume - Вхідна гучність - - - Input Level - Рівень введення - - - - PersonalizationDesktopModule - - Desktop - Робоча станція - - - Window - Вікно - - - Window Effect - Ефект вікон - - - Window Minimize Effect - Ефект мінімізації вікон - - - Transparency - Прозорість - - - Rounded Corner - Заокруглений кут - - - Scale - Масштабування - - - Magic Lamp - Магічна лампа - - - Small - Малий - - - Middle - Середній - - - Large - Великий - - - - PersonalizationModule - - Personalization - Персоналізація - - - - PersonalizationThemeList - - Cancel - Скасувати - - - Save - Зберегти - - - Light - Світла - - - Dark - Темна - - - Auto - Авто - - - Default - Типово - - - - PersonalizationThemeModule - - Theme - Тема - - - Appearance - Вигляд - - - Accent Color - Колір тексту - - - Icon Settings - Параметри піктограм - - - Icon Theme - Тема піктограм - - - Cursor Theme - Тема вказівника - - - Text Settings - Параметри тексту - - - Font Size - Розмір шрифту - - - Standard Font - Стандартний шрифт - - - Monospaced Font - Моноширинний шрифт - - - Light - Світла - - - Auto - Авто - - - Dark - Темна - - - - PersonalizationThemeWidget - - Light - Світла - General - /personalization/General - - - Dark - Темна - General - /personalization/General - - - Auto - Авто - General - /personalization/General - - - Default - Типово - - - - PersonalizationWorker - - Custom - Користувацький - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - Пін-код для з'єднання із пристроєм Bluetooth: - - - Cancel - Скасувати - - - Confirm - Підтвердити - - - - PowerModule - - Power - Живлення - - - Battery low, please plug in - Низький рівень заряду акумулятора, будь ласка, приєднайте комп'ютер до мережі живлення - - - Battery critically low - Акумулятор критично розряджено - - - - PrivacyModule - - Privacy and Security - Конфіденційність та безпека - - - - PrivacySecurityModel - - Camera - Камера - - - Microphone - Мікрофон - - - User Folders - Теки користувача - - - Calendar - Календар - - - Screen Capture - Захоплення екрана - - - - QObject - - Control Center - Центр керування - - - , - , - - - Error occurred when reading the configuration files of password rules! - Під час спроби прочитати файли налаштувань правил паролів сталася помилка! - - - Auto adjust CPU operating frequency based on CPU load condition - Автоматично коригувати частоту роботи процесора на основі умов навантаження на процесор - - - Aggressively adjust CPU operating frequency based on CPU load condition - Агресивно коригувати частоту роботи процесора на основі умов навантаження на процесор - - - Be good to imporving performance, but power consumption and heat generation will increase - Добре для підвищення швидкодії, але збільшує споживання енергії та розігрів - - - CPU always works under low frequency, will reduce power consumption - Процесор завжди працює на низькій частоті, зменшує споживання енергії - - - Activated - Активовано - - - View - Переглянути - - - To be activated - Ще не активовано - - - Activate - Активувати - - - Expired - Вичерпано строк дії - - - In trial period - Тестовий період - - - Trial expired - Тестовий період завершено - - - Touch Screen Settings - Параметри сенсорного екрана - - - The settings of touch screen changed - Параметри сенсорного екрана змінено - - - Checking system versions, please wait... - Перевіряємо версії системи, будь ласка, зачекайте… - - - Leave - Полишити - - - Cancel - Скасувати - - - - RegionModule - - Region and format - Регіон і формат - - - Country or Region - Область - - - Format - Формат - - - Provide localized services based on your region. - Надавати служби локалізації на основі визначеного вами регіону. - - - Select matching date and time formats based on language and region - Вибирати відповідні формати дати і часу на основі мови і регіону - - - Region format - Мова і регіон - - - First day of week - Перший день тижня - - - Short date - Дата скорочено - - - Long date - Дата повністю - - - Short time - Час скорочено - - - Long time - Час повністю - - - Currency symbol - Символ валюти - - - Numbers - Числа - - - Paper - Папір - - - Custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Вашу систему не уповноважено. Будь ласка, спочатку виконайте активацію. - - - Update successful - Успішно оновлено - - - Failed to update - Не вдалося оновити - - - - SearchInput - - Search - Пошук - - - - ServiceSettingsModule - - Apps can access your camera: - Програми, які матимуть доступ до вашої камери: - - - Apps can access your microphone: - Програми, які матимуть доступ до вашого мікрофона: - - - Apps can access user folders: - Програми, які матимуть доступ до тек користувача: - - - Apps can access Calendar: - Програми, які матимуть доступ до календаря: - - - Apps can access Screen Capture: - Програми, які матимуть доступ до захоплення екрана: - - - No apps requested access to the camera - Жодна з програм не надсилала запит щодо доступу до камери - - - No apps requested access to the microphone - Жодна з програм не надсилала запит щодо доступу до мікрофона - - - No apps requested access to user folders - Жодна з програм не надсилала запит щодо доступу до тек користувача - - - No apps requested access to Calendar - Жодна з програм не надсилала запит щодо доступу до календаря - - - No apps requested access to Screen Capture - Жодна з програм не надсилала запит щодо доступу до захоплення екрана - - - - SoundEffectsPage - - Sound Effects - Звукові ефекти - - - - SoundModel - - Boot up - Завантаження - - - Shut down - Вимкнути - - - Log out - Вийти - - - Wake up - Пробудження - - - Volume +/- - Гучність +/- - - - Notification - Сповіщення - - - Low battery - Низький заряд - - - Send icon in Launcher to Desktop - Надіслати піктограму у засобі запуску на стільницю - - - Empty Trash - Спорожнити смітник - - - Plug in - З'єднання - - - Plug out - Від'єднання - - - Removable device connected - З'єднано портативний пристрій - - - Removable device removed - Вилучено портативний пристрій - - - Error - Помилка - - - - SoundModule - - Sound - Звук - - - - SoundPlugin - - Output - Вихід - - - Auto pause - Автопауза - - - Whether the audio will be automatically paused when the current audio device is unplugged - Визначає, чи буде відтворення звуку автоматично призупинено, якщо поточний звуковий пристрій від'єднано від комп'ютера - - - Input - Вхід - - - Sound Effects - Звукові ефекти - - - Devices - Пристрої - - - Input Devices - Пристрої введення - - - Output Devices - Пристрої виведення - - - - SpeakerPage - - Output Device - Пристрій виведення - - - Mode - Режим - - - Output Volume - Вихідна гучність - - - Volume Boost - Підсилення гучності - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - Значення гучності, які перевищують 100%, можуть призвести до викривлення звуку та пошкодження пристроїв виведення звуку - - - Left/Right Balance - Баланс ліво/право - - - Left - Ліворуч - - - Right - Праворуч - - - - TimeSettingModule - - Time Settings - Налаштування часу - - - Time - Час - - - Auto Sync - Авто-синхронізація - - - Reset - Скинути - - - Save - Зберегти - - - Server - Сервер - - - Address - Адреса - - - Required - Обов'язкове - - - Customize - Налаштувати - - - Year - Рік - - - Month - Місяць - - - Day - День - - - - TimeZoneChooser - - Cancel - Скасувати - - - Confirm - Підтвердити - - - Add Timezone - Додати часовий пояс - - - Add - Додати - - - Change Timezone - Змінити часовий пояс - - - - TimeoutDialog - - Save the display settings? - Зберегти налаштування дисплея? - - - Settings will be reverted in %1s. - Система повернеться до початкових налаштувань за %1 с. - - - Revert - Повернути - - - Save - Зберегти - - - - TimezoneItem - - Tomorrow - Взавтра - - - Yesterday - Вчора - - - Today - Сьогодні - - - %1 hours earlier than local - На %1 годин відстає від місцевого - - - %1 hours later than local - На %1 годин випереджає місцевий - - - - TimezoneModule - - Timezone List - Список часових поясів - - - System Timezone - Часовий пояс системи - - - Add Timezone - Додати часовий пояс - - - - TreeCombox - - Collaboration Settings - Параметри співпраці - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - Обліковий запис користувача не пов'язано із ідентифікатором Union - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - Щоб скинути паролі, вам слід спочатку пройти розпізнавання за ідентифікатором Union. Натисніть «Перейти до прив'язки», щоб завершити налаштовування. - - - Cancel - Скасувати - - - Go to Link - Перейти до прив'язки - - - - UnknownUpdateItem - - Release date: - Дата випуску: - - - - UpdateCtrlWidget - - Check Again - Повторити перевірку - - - Update failed: insufficient disk space - Помилка оновлення: недостатньо місця на диску - - - Dependency error, failed to detect the updates - Помилка у залежностях. Не вдалося виявити оновлення. - - - Restart the computer to use the system and the applications properly - Перезавантажте комп'ютер, щоб правильно використовувати систему та програми - - - Network disconnected, please retry after connected - Мережу від'єднано, повторіть спробу після встановлення з'єднання - - - Your system is not authorized, please activate first - Вашу систему не уповноважено. Будь ласка, спочатку виконайте активацію. - - - This update may take a long time, please do not shut down or reboot during the process - Це оновлення може бути тривалим. Будь ласка, не вимикайте і не перезавантажуйте комп'ютер, доки воно триватиме. - - - Updates Available - Доступні оновлення - - - Current Edition - Поточна версія - - - Updating... - Оновлення… - - - Update All - Оновити усе - - - Last checking time: - Остання перевірка: - - - Your system is up to date - Ваша система оновлена - - - Check for Updates - Перевірити наявність оновлень - - - Checking for updates, please wait... - Перевірка оновлень, будь ласка зачекайте... - - - The newest system installed, restart to take effect - Встановлено найсвіжішу систему. Перезавантажте систему, щоб зміни набули чинності - - - %1% downloaded (Click to pause) - %1% завантажено(Натисність для паузи) - - - %1% downloaded (Click to continue) - %1% завантажено (Натисність щоб продовжити) - - - Your battery is lower than 50%, please plug in to continue - Рівень заряду менше 50%, будь ласка, підключіть зарядний пристрій для продовження - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Переконайтеся, що живлення достатньо для перезавантаження і не вимикайте та не від'єднуйте від живлення комп'ютер - - - Size - Розмір - - - - UpdateModule - - Updates - Оновлення - - - - UpdatePlugin - - Check for Updates - Перевірити наявність оновлень - - - - UpdateSettingItem - - Insufficient disk space - Недостатньо місця на диску - - - Update failed: insufficient disk space - Помилка оновлення: недостатньо місця на диску - - - Update failed - Не вдалося оновити - - - Network error - Помилка мережі - - - Network error, please check and try again - Помилка мережі. Будь ласка, перевірте дані і повторіть спробу - - - Packages error - Помилка із пакунками - - - Packages error, please try again - Помилка із пакунками. Будь ласка, повторіть спробу - - - Dependency error - Помилка у залежностях - - - Unmet dependencies - Не задоволено залежності - - - The newest system installed, restart to take effect - Встановлено найсвіжішу систему. Перезавантажте систему, щоб зміни набули чинності - - - Waiting - Очікування - - - Backing up - Резервне копіювання - - - System backup failed - Не вдалося створити резервну копію системи - - - Release date: - Дата випуску: - - - Server - Сервер - - - Desktop - Робоча станція - - - Version - Версія - - - - UpdateSettingsModule - - Update Settings - Параметри оновлення - - - System - Система - - - Security Updates Only - Лише оновлення безпеки - - - Switch it on to only update security vulnerabilities and compatibility issues - Увімкнути лише оновлення для усування проблем захисту та сумісності - - - Third-party Repositories - Сторонні сховища - - - linglong update - оновлення linglong - - - Linglong Package Update - Оновлення пакунка Linglong - - - If there is update for linglong package, system will update it for you - Якщо буде виявлено оновлення пакунка linglong, система виконає оновлення - - - Other settings - Інші параметри - - - Auto Check for Updates - Шукати оновлення автоматично - - - Auto Download Updates - Авто-завантаження Оновлень - - - Switch it on to automatically download the updates in wireless or wired network - Позначте цей пункт, щоб система автоматично отримувала оновлення у бездротових та дротових мережах - - - Auto Install Updates - Автоматичне встановлення оновлень - - - Updates Notification - Сповіщення щодо оновлень - - - Clear Package Cache - Спорожнити кеш пакунків - - - Updates from Internal Testing Sources - Оновлення з джерел внутрішнього тестування - - - internal update - внутрішнє оновлення - - - Join the internal testing channel to get deepin latest updates - Долучіться до каналу внутрішнього тестування, щоб отримати найсвіжіші оновлення deepin - - - System Updates - Оновлення системи - - - Security Updates - Оновлення безпеки - - - Install updates automatically when the download is complete - Встановити оновлення автоматично після завершення отримання даних - - - Install "%1" automatically when the download is complete - Встановити «%1» автоматично після завершення отримання даних - - - - UpdateWidget - - Current Edition - Поточна версія - - - - UpdateWorker - - System Updates - Оновлення системи - - - Fixed some known bugs and security vulnerabilities - Виправлено деякі відомі вади та недоліки захисту - - - Security Updates - Оновлення безпеки - - - Third-party Repositories - Сторонні сховища - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - Ймовірно, полишення вами каналу тестування не є безпечним. Хочете полишити канал попри це? - - - Your are safe to leave the internal testing channel - Ви можете безпечно полишити внутрішній канал тестування - - - Cannot find machineid - Не вдалося знайти ідентифікатор комп'ютера - - - Cannot Uninstall package - Не вдалося вилучити пакунок - - - Error when exit testingChannel - Помилка при виході з каналу тестування - - - try to manually uninstall package - спробуйте вилучити пакунок вручну - - - Cannot install package - Не вдалося встановити пакунок - - - - UseBatteryModule - - On Battery - Живлення від акумулятора - - - Never - Ніколи - - - Shut down - Вимкнути - - - Suspend - Призупинити - - - Hibernate - Приспати - - - Turn off the monitor - Вимкнути монітор - - - Do nothing - Нічого не робити - - - 1 Minute - 1 Хвилина - - - %1 Minutes - %1 Хвилин - - - 1 Hour - 1 Година - - - Screen and Suspend - Екран та призупинення - - - Turn off the monitor after - Вимкнути монітор після - - - Lock screen after - Блокування екрану після - - - Computer suspends after - Призупинити комп'ютер після - - - Computer will suspend after - Комп'ютер вимкнеться після - - - When the lid is closed - Якщо закрито кришку - - - When the power button is pressed - Якщо натиснуто кнопку живлення - - - Low Battery - Низький заряд - - - Low battery notification - Сповіщення щодо низького заряду - - - Low battery level - Низький рівень заряду - - - Auto suspend battery level - Рівень заряду для автоматичного присипляння - - - Battery Management - Керування акумулятором - - - Display remaining using and charging time - Показувати залишок часу користування і заряджання - - - Maximum capacity - Максимальна місткість - - - Show the shutdown Interface - Показувати інтерфейс завершення роботи - - - - UseElectricModule - - Plugged In - Підключено - - - 1 Minute - 1 Хвилина - - - %1 Minutes - %1 Хвилин - - - 1 Hour - 1 Година - - - Never - Ніколи - - - Screen and Suspend - Екран та призупинення - - - Turn off the monitor after - Вимкнути монітор після - - - Lock screen after - Блокування екрану після - - - Computer suspends after - Призупинити комп'ютер після - - - When the lid is closed - Якщо закрито кришку - - - When the power button is pressed - Якщо натиснуто кнопку живлення - - - Shut down - Вимкнути - - - Suspend - Призупинити - - - Hibernate - Приспати - - - Turn off the monitor - Вимкнути монітор - - - Show the shutdown Interface - Показувати інтерфейс завершення роботи - - - Do nothing - Нічого не робити - - - - WacomModule - - Drawing Tablet - Планшет для малювання - - - Mode - Режим - - - Pressure Sensitivity - Чутливість до натиску - - - Pen - Перо - - - Mouse - Миша - - - Light - Світлий - - - Heavy - Щільний - - - - main - - Control Center provides the options for system settings. - Центр керування надає параметри для системних налаштувань. - - - - updateControlPanel - - Downloading - Отримання - - - Waiting - Очікування - - - Installing - Встановлення - - - Backing up - Резервне копіювання - - - Download and install - Отримати і встановити - - - Learn more - Дізнатися більше - - - diff --git a/dcc-old/translations/dde-control-center_ur.ts b/dcc-old/translations/dde-control-center_ur.ts deleted file mode 100644 index 5d5d9fae4e..0000000000 --- a/dcc-old/translations/dde-control-center_ur.ts +++ /dev/null @@ -1,4004 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - - - - Confirm - button - - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - صارف کا نام - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - - - - Confirm - button - - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - - - - Create - - - - New User - - - - User Type - - - - Username - صارف کا نام - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - - - - Restart Now - ریسٹارٹ کریں - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - - - - Confirm - - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - - - - Cancel - - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Date and Time - - - - - DatetimeWorker - - Authentication is required to set the system timezone - - - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - FormatShowGrid - - Date - - - - Time - - - - Date and Time - - - - Number - - - - Currency - - - - - GeneralModule - - General - - - - Balanced - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Auto power saving on battery - - - - Decrease Brightness - - - - Wakeup Settings - - - - Password is required to wake up the computer - - - - Password is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - - - - Confirm - - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - - - - - RegionAndFormatModule - - Region and Format - - - - Monday - - - - monday - - - - April 5, 2020 - - - - April 5, 2020, Sunday - - - - Sunday, April 5, 2020 - - - - 2020/4/5 - - - - 2020-4-5 - - - - 2020.4.5 - - - - 2020/04/05 - - - - 2020-04-05 - - - - 2020.04.05 - - - - 20/4/5 - - - - 20-4-5 - - - - 20.4.5 - - - - 9:40:07 - - - - 09:40:07 - - - - 9:40 - - - - 09:40 - - - - Tuesday - - - - Wednesday - - - - Thursday - - - - Friday - - - - Saturday - - - - Sunday - - - - Regional Setting - - - - * The setting of region will influence the formats of date, time, number and some other formats, it will be enabled on the next time of login - - - - Locale Show - - - - Time - - - - time - - - - Date - - - - 24-hour Time - - - - Short Time - - - - Long Time - - - - Weeks - - - - First Day of Week - - - - Short Date - - - - Long Date - - - - - RegionDialog - - Cancel - - - - Confirm - - - - Regional Setting - - - - Search - - - - - RegionFormatShowPage - - Default Format - - - - Date - - - - Time - - - - Date And Time - - - - Number - - - - Currency - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - شٹڈاون - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - - - - - SoundPlugin - - Output - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - - - - Confirm - - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - شٹڈاون - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - شٹڈاون - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - \ No newline at end of file diff --git a/dcc-old/translations/dde-control-center_uz.ts b/dcc-old/translations/dde-control-center_uz.ts deleted file mode 100644 index c055cb27df..0000000000 --- a/dcc-old/translations/dde-control-center_uz.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - - - - My Devices - - - - Other Devices - - - - Show Bluetooth devices without names - - - - Connect - - - - Disconnect - - - - Rename - - - - Send Files - - - - Ignore this device - - - - Connecting - - - - Disconnecting - - - - - AddButtonWidget - - Add Application - - - - Open Desktop file - - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Bekor qilish - - - Next - - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - - - - Failed to enroll your face - - - - Try Again - - - - Close - - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Bekor qilish - - - Next - - - - Iris enrolled - - - - Done - - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - - - - Not connected - - - - - BluetoothModule - - Bluetooth - - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - - - - Fingerprint2 - - - - Fingerprint3 - - - - Fingerprint4 - - - - Fingerprint5 - - - - Fingerprint6 - - - - Fingerprint7 - - - - Fingerprint8 - - - - Fingerprint9 - - - - Fingerprint10 - - - - Scan failed - - - - The fingerprint already exists - - - - Please scan other fingers - - - - Unknown error - - - - Scan suspended - - - - Cannot recognize - - - - Moved too fast - - - - Finger moved too fast, please do not lift until prompted - - - - Unclear fingerprint - - - - Clean your finger or adjust the finger position, and try again - - - - Already scanned - - - - Adjust the finger position to scan your fingerprint fully - - - - Finger moved too fast. Please do not lift until prompted - - - - Lift your finger and place it on the sensor again - - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Bekor qilish - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Bekor qilish - - - Confirm - button - Tasdiqlash - - - - dccV23::AccountSpinBox - - Always - - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - - - - Change Password - - - - Delete User - - - - User Type - - - - Auto Login - - - - Login Without Password - - - - Validity Days - - - - Group - - - - The full name is too long - - - - Standard User - - - - Administrator - - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - - - - Go to Settings - - - - Cancel - Bekor qilish - - - OK - - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - - - - Your host joins the domain server successfully - - - - Your host failed to leave the domain server - - - - Your host failed to join the domain server - - - - AD domain settings - - - - Password not match - - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - - - - Play a sound - - - - Show messages on lockscreen - - - - Show in notification center - - - - Show message preview - - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Bekor qilish - - - Save - - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - - - - - dccV23::BootWidget - - Updating... - - - - Startup Delay - - - - Theme - - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - - - - Boot Menu - - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - - - - Cancel - button - Bekor qilish - - - Confirm - button - Tasdiqlash - - - Password cannot be empty - - - - Passwords do not match - - - - - dccV23::BrightnessWidget - - Brightness - - - - Color Temperature - - - - Auto Brightness - - - - Night Shift - - - - The screen hue will be auto adjusted according to your location - - - - Change Color Temperature - - - - Cool - - - - Warm - - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - - - - Other Devices - - - - - dccV23::CommonInfoPlugin - - General Settings - - - - Boot Menu - - - - Developer Mode - - - - User Experience Program - - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - - - - The Disclaimer of Developer Mode - - - - Agree and Request Root Access - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - - dccV23::CreateAccountPage - - Group - - - - Cancel - Bekor qilish - - - Create - - - - New User - - - - User Type - - - - Username - - - - Full Name - - - - Password - - - - Repeat Password - - - - Password Hint - - - - The full name is too long - - - - Passwords do not match - - - - Standard User - - - - Administrator - - - - Customized - - - - Required - - - - optional - - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - - - - The first character must be a letter or number - - - - Your username should not only have numbers - - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - - - - Name - - - - Required - - - - Command - - - - Cancel - Bekor qilish - - - Add - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomEdit - - Required - - - - Cancel - Bekor qilish - - - Save - - - - Shortcut - - - - Name - - - - Command - - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - - - - - dccV23::CustomItem - - Shortcut - - - - Please enter a shortcut - - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - - - - Online - - - - Offline - - - - Please sign in to your Union ID first and continue - - - - Next - - - - Export PC Info - - - - Import Certificate - - - - 1. Export your PC information - - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - - - - 3. Import the certificate - - - - - dccV23::DeveloperModeWidget - - Request Root Access - - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - - - - The feature is not available at present, please activate your system first - - - - Failed to get root access - - - - Please sign in to your Union ID first - - - - Cannot read your PC information - - - - No network connection - - - - Certificate loading failed, unable to get root access - - - - Signature verification failed, unable to get root access - - - - To make some features effective, a restart is required. Restart now? - - - - Cancel - Bekor qilish - - - Restart Now - - - - Root Access Allowed - - - - - dccV23::DisplayPlugin - - Display - - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - - - - Short - - - - Long - - - - Repeat Rate - - - - Slow - - - - Fast - - - - Test here - - - - Numeric Keypad - - - - Caps Lock Prompt - - - - - dccV23::GeneralSettingWidget - - Left Hand - - - - Disable touchpad while typing - - - - Scrolling Speed - - - - Double-click Speed - - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - - - - Edit - - - - Add Keyboard Layout - - - - Done - - - - - dccV23::KeyboardLayoutDialog - - Cancel - Bekor qilish - - - Add - - - - Add Keyboard Layout - - - - - dccV23::KeyboardPlugin - - Keyboard and Language - - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - - - - Language - - - - Shortcuts - - - - - dccV23::MainWindow - - Help - - - - - dccV23::ModifyPasswdPage - - Change Password - - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - - - - Forgot password? - - - - New Password - - - - Repeat Password - - - - Password Hint - - - - Cancel - Bekor qilish - - - Save - - - - Passwords do not match - - - - Required - - - - Optional - - - - Password cannot be empty - - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - - - - New password should differ from the current one - - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Sichqoncha - - - General - - - - Touchpad - - - - TrackPoint - - - - - dccV23::MouseSettingWidget - - Pointer Speed - - - - Mouse Acceleration - - - - Disable touchpad when a mouse is connected - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - - /display/Multiple Displays - - - Mode - - /display/Mode - - - Main Screen - - /display/Main Scree - - - Duplicate - - - - Extend - - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - - - - Minimum Contact Surface - - - - Minimum Pressure Value - - - - Disable the option if touchpad doesn't work after enabled - - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - - - - Hz - - - - Recommended - - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - - - - Delete account directory - - - - Cancel - Bekor qilish - - - Delete - - - - - dccV23::ResolutionWidget - - Resolution - - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - - - - Fit - - - - Stretch - - - - Center - - - - Recommended - - - - - dccV23::RotateWidget - - Rotation - - /display/Rotation - - - Standard - - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - - - - Display Scaling - - - - - dccV23::SearchInput - - Search - - - - - dccV23::SecondaryScreenDialog - - Brightness - - - - - dccV23::SecurityLevelItem - - Weak - - - - Medium - - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Bekor qilish - - - Confirm - Tasdiqlash - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - - - - Done - - - - - dccV23::ShortCutSettingWidget - - System - - - - Window - - - - Workspace - - - - Assistive Tools - - - - Custom Shortcut - - - - Restore Defaults - - - - Shortcut - - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - - - - Cancel - Bekor qilish - - - Replace - - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - - - - - dccV23::ShortcutItem - - Enter a new shortcut - - - - - dccV23::SystemInfoModel - - available - - - - - dccV23::SystemInfoModule - - About This PC - - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - - - - Edition - - - - Type - - - - Authorization - - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - - - - End User License Agreement - - - - Privacy Policy - - - - %1-bit - - - - - dccV23::SystemInfoPlugin - - System Info - - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Bekor qilish - - - Add - - - - Add System Language - - - - - dccV23::SystemLanguageWidget - - Edit - - - - Language List - - - - Add Language - - - - Done - - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - - - - When the screen is locked - - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - - - - Select your touch screen when connected or set it here. - - - - Confirm - Tasdiqlash - - - Cancel - Bekor qilish - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - - - - - DefAppModule - - Default Applications - - - - - DefAppPlugin - - Webpage - - - - Mail - - - - Text - - - - Music - - - - Video - - - - Picture - - - - Terminal - - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Bekor qilish - - - Next - - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - - - - Multiple Displays - - - - Show Dock - - - - Mode - - - - Position - - - - Status - - - - Show recent apps in Dock - - - - Size - - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - - - - Efficient mode - - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - - - - Keep shown - - - - Keep hidden - - - - Smart hide - - - - Small - - - - Large - - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - - - - Add Face - - - - The name already exists - - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - - - - Cancel - Bekor qilish - - - Next - - - - - FingerInfoWidget - - Place your finger - - - - Place your finger firmly on the sensor until you're asked to lift it - - - - Scan the edges of your fingerprint - - - - Place the edges of your fingerprint on the sensor - - - - Lift your finger - - - - Lift your finger and place it on the sensor again - - - - Adjust the position to scan the edges of your fingerprint - - - - Lift your finger and do that again - - - - Fingerprint added - - - - - FingerWidget - - Edit - - - - Fingerprint Password - - - - You can add up to 10 fingerprints - - - - Done - - - - The name already exists - - - - Add Fingerprint - - - - - GeneralModule - - General - - - - Balanced - - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - - - - Auto power saving on low battery - - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - - - - Wakeup Settings - - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - - - - Add Iris - - - - The name already exists - - - - Iris - - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - - - - Input Level - - - - - PersonalizationDesktopModule - - Desktop - - - - Window - - - - Window Effect - - - - Window Minimize Effect - - - - Transparency - - - - Rounded Corner - - - - Scale - - - - Magic Lamp - - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - - - - - PersonalizationThemeList - - Cancel - Bekor qilish - - - Save - - - - Light - - - - Dark - - - - Auto - - - - Default - - - - - PersonalizationThemeModule - - Theme - - - - Appearance - - - - Accent Color - - - - Icon Settings - - - - Icon Theme - - - - Cursor Theme - - - - Text Settings - - - - Font Size - - - - Standard Font - - - - Monospaced Font - - - - Light - - - - Auto - - - - Dark - - - - - PersonalizationThemeWidget - - Light - - General - /personalization/General - - - Dark - - General - /personalization/General - - - Auto - - General - /personalization/General - - - Default - - - - - PersonalizationWorker - - Custom - - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - - - - Cancel - Bekor qilish - - - Confirm - Tasdiqlash - - - - PowerModule - - Power - - - - Battery low, please plug in - - - - Battery critically low - - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - - - - Microphone - - - - User Folders - - - - Calendar - - - - Screen Capture - - - - - QObject - - Control Center - - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - - - - View - - - - To be activated - - - - Activate - - - - Expired - - - - In trial period - - - - Trial expired - - - - Touch Screen Settings - - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Bekor qilish - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - - - - Update successful - - - - Failed to update - - - - - SearchInput - - Search - - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - - - - - SoundModel - - Boot up - - - - Shut down - - - - Log out - - - - Wake up - - - - Volume +/- - - - - Notification - - - - Low battery - - - - Send icon in Launcher to Desktop - - - - Empty Trash - - - - Plug in - - - - Plug out - - - - Removable device connected - - - - Removable device removed - - - - Error - - - - - SoundModule - - Sound - Tovush - - - - SoundPlugin - - Output - - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - - - - Sound Effects - - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - - - - Output Volume - - - - Volume Boost - - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - - - - Time - - - - Auto Sync - - - - Reset - - - - Save - - - - Server - - - - Address - - - - Required - - - - Customize - - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - Bekor qilish - - - Confirm - Tasdiqlash - - - Add Timezone - - - - Add - - - - Change Timezone - - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - - - - Save - - - - - TimezoneItem - - Tomorrow - - - - Yesterday - - - - Today - - - - %1 hours earlier than local - - - - %1 hours later than local - - - - - TimezoneModule - - Timezone List - - - - System Timezone - - - - Add Timezone - - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Bekor qilish - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - - - - Update failed: insufficient disk space - - - - Dependency error, failed to detect the updates - - - - Restart the computer to use the system and the applications properly - - - - Network disconnected, please retry after connected - - - - Your system is not authorized, please activate first - - - - This update may take a long time, please do not shut down or reboot during the process - - - - Updates Available - - - - Current Edition - - - - Updating... - - - - Update All - - - - Last checking time: - - - - Your system is up to date - - - - Check for Updates - - - - Checking for updates, please wait... - - - - The newest system installed, restart to take effect - - - - %1% downloaded (Click to pause) - - - - %1% downloaded (Click to continue) - - - - Your battery is lower than 50%, please plug in to continue - - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - - - - Size - - - - - UpdateModule - - Updates - Yangilanishlar - - - - UpdatePlugin - - Check for Updates - - - - - UpdateSettingItem - - Insufficient disk space - - - - Update failed: insufficient disk space - - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - - - - Waiting - - - - Backing up - - - - System backup failed - - - - Release date: - - - - Server - - - - Desktop - - - - Version - - - - - UpdateSettingsModule - - Update Settings - - - - System - - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - - - - Switch it on to automatically download the updates in wireless or wired network - - - - Auto Install Updates - - - - Updates Notification - - - - Clear Package Cache - - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - - - - Never - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Do nothing - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - Computer will suspend after - - - - When the lid is closed - - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - - - - Auto suspend battery level - - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - - - - 1 Minute - - - - %1 Minutes - - - - 1 Hour - - - - Never - - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - - - - Computer suspends after - - - - When the lid is closed - - - - When the power button is pressed - - - - Shut down - - - - Suspend - - - - Hibernate - - - - Turn off the monitor - - - - Show the shutdown Interface - - - - Do nothing - - - - - WacomModule - - Drawing Tablet - - - - Mode - - - - Pressure Sensitivity - - - - Pen - - - - Mouse - Sichqoncha - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_vi.ts b/dcc-old/translations/dde-control-center_vi.ts deleted file mode 100644 index 886235fd59..0000000000 --- a/dcc-old/translations/dde-control-center_vi.ts +++ /dev/null @@ -1,3969 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - Mở bluetooth để tìm những thiết bị kế cận (loa, bàn phím, chuột) - - - My Devices - Thiết bị của tôi - - - Other Devices - Thiết bị khác - - - Show Bluetooth devices without names - - - - Connect - Kết nối - - - Disconnect - Ngắt kết nối - - - Rename - - - - Send Files - - - - Ignore this device - Thiết bị đầu vào - - - Connecting - Đang kết nối - - - Disconnecting - Đang ngắt kết nối - - - - AddButtonWidget - - Add Application - Thêm ứng dụng - - - Open Desktop file - Mở tập tin Màn hình chính - - - Apps (*.desktop) - - - - All files (*) - - - - - AddFaceInfoDialog - - Enroll Face - - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - - - - Cancel - Hủy - - - Next - Kế tiếp - - - Face enrolled - - - - Use your face to unlock the device and make settings later - - - - Done - Xong - - - Failed to enroll your face - - - - Try Again - - - - Close - Đóng lại - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - - - - Cancel - Hủy - - - Next - Kế tiếp - - - Iris enrolled - - - - Done - Xong - - - Failed to enroll your iris - - - - Try Again - - - - - AuthenticationInfoItem - - No more than 15 characters - - - - Use letters, numbers and underscores only, and no more than 15 characters - - - - Use letters, numbers and underscores only - - - - - AuthenticationModule - - Biometric Authentication - - - - - AuthenticationPlugin - - Fingerprint - Dấu vân tay - - - Face - - - - Iris - - - - - BluetoothDeviceModel - - Connected - Đã kết nối - - - Not connected - Không được kết nối - - - - BluetoothModule - - Bluetooth - Bluetooth - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - Fingerprint1 - - - Fingerprint2 - Fingerprint2 - - - Fingerprint3 - Fingerprint3 - - - Fingerprint4 - Fingerprint4 - - - Fingerprint5 - Fingerprint5 - - - Fingerprint6 - Fingerprint6 - - - Fingerprint7 - Fingerprint7 - - - Fingerprint8 - Fingerprint8 - - - Fingerprint9 - Fingerprint9 - - - Fingerprint10 - Fingerprint10 - - - Scan failed - Quét vân tay lỗi - - - The fingerprint already exists - Vân tay này đã tồn tại - - - Please scan other fingers - Vui lòng quét vân tay khác - - - Unknown error - Không rõ lỗi - - - Scan suspended - Dừng quét - - - Cannot recognize - Không thể nhận biết - - - Moved too fast - Di chuyển quá nhanh - - - Finger moved too fast, please do not lift until prompted - Ngón tay di chuyển quá nhanh. Xin đừng nhấc lên cho đến khi được nhắc nhở - - - Unclear fingerprint - Vân tay không được sạch - - - Clean your finger or adjust the finger position, and try again - Làm sạch ngón tay của bạn hoặc điều chỉnh vị trí ngón tay và thử lại - - - Already scanned - Đã quét xong - - - Adjust the finger position to scan your fingerprint fully - Điều chỉnh vị trí ngón tay để quét dấu vân tay của bạn đầy đủ - - - Finger moved too fast. Please do not lift until prompted - Ngón tay di chuyển quá nhanh. Xin đừng nâng cho đến khi được nhắc - - - Lift your finger and place it on the sensor again - Nhắc ngon tay của bạn lên và đặt lại vào cảm biển - - - Position your face inside the frame - - - - Face enrolled - - - - Position a human face please - - - - Keep away from the camera - - - - Get closer to the camera - - - - Do not position multiple faces inside the frame - - - - Make sure the camera lens is clean - - - - Do not enroll in dark, bright or backlit environments - - - - Keep your face uncovered - - - - Scan timed out - - - - Device crashed, please scan again! - - - - Cancel - Hủy - - - - CooperationSettingsDialog - - Collaboration Settings - - - - Share mouse and keyboard - - - - Share your mouse and keyboard across devices - - - - Share clipboard - - - - Storage path for shared files - - - - Share the copied content across devices - - - - Cancel - button - Hủy - - - Confirm - button - Xác nhận - - - - dccV23::AccountSpinBox - - Always - Luôn luôn - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - Tên người dùng - - - Change Password - Đổi mật khẩu - - - Delete User - - - - User Type - - - - Auto Login - Tự động Đăng nhập - - - Login Without Password - Đăng nhập mà không cần mật khẩu - - - Validity Days - Ngày hiệu lực - - - Group - Nhóm - - - The full name is too long - Tên quá dài - - - Standard User - Người dùng Tiêu chuẩn - - - Administrator - Quản trị viên - - - Reset Password - - - - The full name has been used by other user accounts - - - - Full Name - Tên đầy đủ - - - Go to Settings - Chuyển đến Cài đặt - - - Cancel - Hủy - - - OK - OK - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - Máy chủ của bạn đã được xóa khỏi máy chủ tên miền thành công - - - Your host joins the domain server successfully - Máy chủ của bạn tham gia máy chủ tên miền thành công - - - Your host failed to leave the domain server - Máy chủ của bạn không thể rời khỏi máy chủ tên miền - - - Your host failed to join the domain server - Máy chủ của bạn không thể tham gia máy chủ tên miền - - - AD domain settings - Cài đặt miền AD - - - Password not match - Mậu mã không khớp. - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - Hiện thông báo từ %1 trên màn hình và trong trung tâm thông báo - - - Play a sound - Phát âm thanh - - - Show messages on lockscreen - Hiển thị tin nhắn trên màn hình khóa - - - Show in notification center - - - - Show message preview - Hiển thị tin nhắn mẫu - - - - dccV23::AvatarListDialog - - Person - - - - Animal - - - - Illustration - - - - Expression - - - - Custom Picture - - - - Cancel - Hủy - - - Save - Lưu - - - - dccV23::AvatarListFrame - - Dimensional Style - - - - Flat Style - - - - - dccV23::AvatarListView - - Images - Những hình ảnh - - - - dccV23::BootWidget - - Updating... - Đang cập nhật... - - - Startup Delay - Chậm trễ Khởi động - - - Theme - Chủ đề - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - Nhấp vào tùy chọn trong menu khởi động để đặt nó làm lần khởi động đầu tiên, kéo và thả hình ảnh để thay đổi nền - - - Click the option in boot menu to set it as the first boot - - - - Switch theme on to view it in boot menu - Đổi giao diện boot menu - - - GRUB Authentication - - - - GRUB password is required to edit its configuration - - - - Change Password - Đổi mật khẩu - - - Boot Menu - Danh sách Khởi động - - - Change GRUB password - - - - Username: - - - - root - - - - New password: - - - - Repeat password: - - - - Required - Cần thiết - - - Cancel - button - Hủy - - - Confirm - button - Xác nhận - - - Password cannot be empty - Mật mã không thể trống. - - - Passwords do not match - Mật khẩu không phù hợp - - - - dccV23::BrightnessWidget - - Brightness - Độ sáng - - - Color Temperature - Nhiệt độ màu - - - Auto Brightness - Độ sáng tự động - - - Night Shift - Night Shift - - - The screen hue will be auto adjusted according to your location - Màu sắc màn hình sẽ được điều chỉnh tự động theo vị trí của bạn - - - Change Color Temperature - Đổi nhiệt độ màu - - - Cool - Lạnh - - - Warm - Ấm - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - - - - PC Collaboration - - - - Connect to - - - - Select a device for collaboration - - - - Device Orientation - - - - On the top - - - - On the right - - - - On the bottom - - - - On the left - - - - My Devices - Thiết bị của tôi - - - Other Devices - Thiết bị khác - - - - dccV23::CommonInfoPlugin - - General Settings - Cài đặt chung - - - Boot Menu - Danh sách Khởi động - - - Developer Mode - Chế độ Phát triển - - - User Experience Program - Chương trình trải nghiệm người dùng - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - Đồng ý và gia nhập chương trình trải nghiệm người dùng - - - The Disclaimer of Developer Mode - Tuyên bố miễn trừ trách nhiệm của Chế độ nhà phát triển - - - Agree and Request Root Access - Đồng ý và yêu cầu quyền truy cập root - - - Failed to get root access - Nhận mã truy cập thất bại! - - - Please sign in to your Union ID first - Vui lòng đăng nhập vào Union ID của bạn trước - - - Cannot read your PC information - Không thể đọc thông tin PC của bạn - - - No network connection - Không tìm ra được mạng nào - - - Certificate loading failed, unable to get root access - Tải chứng chỉ không thành công, không thể truy cập root - - - Signature verification failed, unable to get root access - Xác minh chữ ký không thành công, không thể truy cập root - - - - dccV23::CreateAccountPage - - Group - Nhóm - - - Cancel - Hủy - - - Create - Tạo - - - New User - - - - User Type - - - - Username - Tên người dùng - - - Full Name - Tên đầy đủ - - - Password - Mật mã - - - Repeat Password - Lặp lại Mật mã - - - Password Hint - - - - The full name is too long - Tên quá dài - - - Passwords do not match - Mật khẩu không phù hợp - - - Standard User - Người dùng Tiêu chuẩn - - - Administrator - Quản trị viên - - - Customized - Tùy chỉnh - - - Required - Cần thiết - - - optional - không bắt buộc - - - The hint is visible to all users. Do not include the password here. - - - - Policykit authentication failed - - - - Username must be between 3 and 32 characters - Tên người dùng phải từ 3 đến 32 kí tự - - - The first character must be a letter or number - Ký tự đầu tiên phải là một chữ cái hoặc số - - - Your username should not only have numbers - Tên người dùng cần có chữ cái - - - The username has been used by other user accounts - - - - The full name has been used by other user accounts - - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - - - - Uploaded file type is incorrect, please upload again - - - - Images - Những hình ảnh - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - Thêm Phím tắt Tùy chỉnh - - - Name - tên - - - Required - Cần thiết - - - Command - Lệnh - - - Cancel - Hủy - - - Add - Thêm - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Phím tắt này mẫu thuẫn với %1, nhấn vào Thêm để làm phím tắt này có hiệu lực ngay tức thì - - - - dccV23::CustomEdit - - Required - Cần thiết - - - Cancel - Hủy - - - Save - Lưu - - - Shortcut - Đường tắt - - - Name - tên - - - Command - Lệnh - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - Phím tắt này mẫu thuẫn với %1, nhấn vào Thêm để làm phím tắt này có hiệu lực ngay tức thì - - - - dccV23::CustomItem - - Shortcut - Đường tắt - - - Please enter a shortcut - Xin hãy điền vào một phím tắt - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - - - - - dccV23::DeveloperModeDialog - - Request Root Access - Yêu cầu quyền truy cập root - - - Online - Online - - - Offline - Offline - - - Please sign in to your Union ID first and continue - Vui lòng đăng nhập vào Union ID của bạn trước và tiếp tục - - - Next - Kế tiếp - - - Export PC Info - Xuất thông tin PC - - - Import Certificate - Nhập giấy chứng nhận - - - 1. Export your PC information - 1. Xuất thông tin PC của bạn - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. Truy cập https://www.chinauos.com/developMode để tải xuống chứng chỉ ngoại tuyến - - - 3. Import the certificate - 3. Nhập chứng chỉ - - - - dccV23::DeveloperModeWidget - - Request Root Access - Yêu cầu quyền truy cập root - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - Chế độ nhà phát triển cho phép bạn nhận quyền root, cài đặt và chạy các ứng dụng chưa ký không được liệt kê trong cửa hàng ứng dụng, nhưng tính toàn vẹn hệ thống của bạn cũng có thể bị hỏng, vui lòng sử dụng cẩn thận. - - - The feature is not available at present, please activate your system first - Tính năng này hiện không có sẵn, vui lòng kích hoạt hệ thống của bạn trước - - - Failed to get root access - Nhận mã truy cập thất bại! - - - Please sign in to your Union ID first - Vui lòng đăng nhập vào Union ID của bạn trước - - - Cannot read your PC information - Không thể đọc thông tin PC của bạn - - - No network connection - Không tìm ra được mạng nào - - - Certificate loading failed, unable to get root access - Tải chứng chỉ không thành công, không thể truy cập root - - - Signature verification failed, unable to get root access - Xác minh chữ ký không thành công, không thể truy cập root - - - To make some features effective, a restart is required. Restart now? - Để làm cho một số tính năng có hiệu quả, cần phải khởi động lại. Khởi động lại bây giờ? - - - Cancel - Hủy - - - Restart Now - Khởi động lại - - - Root Access Allowed - Quyền truy cập root được phép - - - - dccV23::DisplayPlugin - - Display - Hiển thị - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - Thử nghiệm nhấn đúp - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - - - - Repeat Delay - Chậm trễ Lặp lại - - - Short - Ngắn - - - Long - Dài - - - Repeat Rate - Tốc độ lặp lại - - - Slow - Chậm - - - Fast - Nhanh - - - Test here - Kiểm tra tại đây - - - Numeric Keypad - Bàn phím Số - - - Caps Lock Prompt - Nhắc nhở Khóa Chữ hoa - - - - dccV23::GeneralSettingWidget - - Left Hand - Tay trái - - - Disable touchpad while typing - Vô hiệu hóa bản cảm ứng khi đang đánh máy - - - Scrolling Speed - Tốc độ cuộn - - - Double-click Speed - Tốc độ Nhấn đúp - - - Slow - Chậm - - - Fast - Nhanh - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - Bố trí bàn phím - - - Edit - Chỉnh sửa - - - Add Keyboard Layout - Thêm Bố trí Bàn phím - - - Done - Xong - - - - dccV23::KeyboardLayoutDialog - - Cancel - Hủy - - - Add - Thêm - - - Add Keyboard Layout - Thêm Bố trí Bàn phím - - - - dccV23::KeyboardPlugin - - Keyboard and Language - Bàn phím và Ngôn ngữ - - - Keyboard - - - - Keyboard Settings - - - - keyboard Layout - - - - Keyboard Layout - Bố trí bàn phím - - - Language - Ngôn ngữ - - - Shortcuts - Các Phím tắt - - - - dccV23::MainWindow - - Help - Giúp đỡ - - - - dccV23::ModifyPasswdPage - - Change Password - Đổi mật khẩu - - - Reset Password - - - - Resetting the password will clear the data stored in the keyring. - - - - Current Password - Mật khẩu hiện tại - - - Forgot password? - - - - New Password - Mật mã mới - - - Repeat Password - Lặp lại Mật mã - - - Password Hint - - - - Cancel - Hủy - - - Save - Lưu - - - Passwords do not match - Mật khẩu không phù hợp - - - Required - Cần thiết - - - Optional - Không bắt buộc - - - Password cannot be empty - Mật mã không thể trống. - - - The hint is visible to all users. Do not include the password here. - - - - Wrong password - Sai mật mã - - - New password should differ from the current one - Mật khẩu mới phải khác với mật khẩu hiện tại - - - System error - - - - Network error - - - - - dccV23::MonitorControlWidget - - Identify - - - - Gather Windows - - - - Screen rearrangement will take effect in %1s after changes - - - - - dccV23::MousePlugin - - Mouse - Chuột - - - General - Tổng quát - - - Touchpad - Miếng cảm ứng - - - TrackPoint - Điểm theo dõi - - - - dccV23::MouseSettingWidget - - Pointer Speed - Tốc độ Con trỏ - - - Mouse Acceleration - Gia tốc chuột - - - Disable touchpad when a mouse is connected - Vô hiệu hóa touchpad khi đang kết nối chuột - - - Natural Scrolling - Cuộn tự nhiên - - - Slow - Chậm - - - Fast - Nhanh - - - - dccV23::MultiScreenWidget - - Multiple Displays - Nhiều màn hình - /display/Multiple Displays - - - Mode - Chế độ - /display/Mode - - - Main Screen - Màn hình chính - /display/Main Scree - - - Duplicate - Lặp lại - - - Extend - Mở rộng - - - Only on %1 - - - - - dccV23::NotificationModule - - AppNotify - - - - Notification - Thông báo - - - SystemNotify - - - - - dccV23::PalmDetectSetting - - Palm Detection - Phát hiện lòng bàn tay - - - Minimum Contact Surface - Bề mặt tiếp xúc tối thiểu - - - Minimum Pressure Value - Giá trị áp suất tối thiểu - - - Disable the option if touchpad doesn't work after enabled - Tắt tùy chọn nếu touchpad không hoạt động sau khi bật - - - - dccV23::PluginManager - - following plugins load failed - - - - plugins cannot loaded in time - - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - Chính sách bảo mật - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - - - - - dccV23::PwqualityManager - - Password cannot be empty - Mật mã không thể trống. - - - Password must have at least %1 characters - - - - Password must be no more than %1 characters - Xin hãy nhập mật khẩu nhiều hơn hoặc bằng %1 ký tự - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - No more than %1 palindrome characters please - - - - No more than %1 monotonic characters please - - - - No more than %1 repeating characters please - - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - - - - Password must not contain more than 4 palindrome characters - - - - Do not use common words and combinations as password - - - - Create a strong password please - - - - It does not meet password rules - - - - - dccV23::RefreshRateWidget - - Refresh Rate - Tốc độ lặp lại - - - Hz - Hz - - - Recommended - Đề nghị - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - Bạn có chắc chắn muốn xóa tài khoản này? - - - Delete account directory - Xóa thư mục tài khoản - - - Cancel - Hủy - - - Delete - Xóa - - - - dccV23::ResolutionWidget - - Resolution - Độ phân giải - /display/Resolution - - - Resize Desktop - - /display/Resize Desktop - - - Default - Mặc định - - - Fit - - - - Stretch - - - - Center - - - - Recommended - Đề nghị - - - - dccV23::RotateWidget - - Rotation - Quay - /display/Rotation - - - Standard - Tiêu chuẩn - - - 90° - - - - 180° - - - - 270° - - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - Màn hình chỉ hỗ trợ tỷ lệ hiển thị 100% - - - Display Scaling - Tỉ lệ màn hình - - - - dccV23::SearchInput - - Search - Tìm kiếm - - - - dccV23::SecondaryScreenDialog - - Brightness - Độ sáng - - - - dccV23::SecurityLevelItem - - Weak - Yếu - - - Medium - Trung bình - - - Strong - - - - - dccV23::SecurityQuestionsPage - - Security Questions - - - - These questions will be used to help reset your password in case you forget it. - - - - Security question 1 - - - - Security question 2 - - - - Security question 3 - - - - Cancel - Hủy - - - Confirm - Xác nhận - - - Keep the answer under 30 characters - - - - Do not choose a duplicate question please - - - - Please select a question - - - - What's the name of the city where you were born? - - - - What's the name of the first school you attended? - - - - Who do you love the most in this world? - - - - What's your favorite animal? - - - - What's your favorite song? - - - - What's your nickname? - - - - It cannot be empty - - - - - dccV23::SettingsHead - - Edit - Chỉnh sửa - - - Done - Xong - - - - dccV23::ShortCutSettingWidget - - System - Hệ thống - - - Window - Cửa sổ - - - Workspace - Không gian làm việc - - - Assistive Tools - Công cụ hỗ trợ - - - Custom Shortcut - Phím tắt Tùy chỉnh - - - Restore Defaults - Khôi phục Mặc định - - - Shortcut - Đường tắt - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - Xin hãy Thiết lập lại Phím tắt - - - Cancel - Hủy - - - Replace - Thay thế - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - Phím tắt này mâu thuẫn với %1, nhấn vào Thay thế để làm phím tắt này có hiệu lực tức thì - - - - dccV23::ShortcutItem - - Enter a new shortcut - Xin hãy đưa vào một phím tắt mới - - - - dccV23::SystemInfoModel - - available - có sẵn - - - - dccV23::SystemInfoModule - - About This PC - Giới thiệu về máy tính này - - - Computer Name - - - - systemInfo - - - - OS Name - - - - Version - Phiên bản - - - Edition - - - - Type - Loại - - - Authorization - Xác thực - - - Processor - - - - Memory - - - - Graphics Platform - - - - Kernel - - - - Agreements and Privacy Policy - - - - Edition License - Giấy phép Phiên bản: - - - End User License Agreement - Thỏa thuận cấp phép người dùng cuối - - - Privacy Policy - Chính sách bảo mật - - - %1-bit - %1-bit - - - - dccV23::SystemInfoPlugin - - System Info - Thông tin hệ thống - - - - dccV23::SystemLanguageSettingDialog - - Cancel - Hủy - - - Add - Thêm - - - Add System Language - Thêm Ngôn ngữ Hệ thống - - - - dccV23::SystemLanguageWidget - - Edit - Chỉnh sửa - - - Language List - Danh sách ngôn ngữ - - - Add Language - - - - Done - Xong - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - Chế độ im lặng - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - Thông báo ứng dụng sẽ không được hiển thị trên màn hình và âm thanh sẽ bị tắt, nhưng bạn có thể xem tất cả các tin nhắn trong trung tâm thông báo. - - - When the screen is locked - Khi màn hình đang khóa - - - - dccV23::TimeSlotItem - - From - Từ - - - To - Đến - - - - dccV23::TouchScreenModule - - Touch Screen - Màn hình cảm ứng - - - Select your touch screen when connected or set it here. - Chọn màn hình cảm ứng khi kết nối và cài đặt nó ở đây - - - Confirm - Xác nhận - - - Cancel - Hủy - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - Tốc độ Con trỏ - - - Slow - Chậm - - - Fast - Nhanh - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - Gia nhập chương trình trải nghiệm người dùng - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - - - - https://www.uniontech.com/agreement/privacy-en - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - - - - - DateWidget - - Year - Năm - - - Month - Tháng - - - Day - Ngày - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - Cần phải xác thực để thay đổi máy chủ NTP - - - - DefAppModule - - Default Applications - Những ứng dụng Mặc định - - - - DefAppPlugin - - Webpage - Webpage - - - Mail - Thư - - - Text - Văn bản - - - Music - Âm nhạc - - - Video - Phim ảnh - - - Picture - Hình ảnh - - - Terminal - Đầu cuối - - - - DisclaimersDialog - - Disclaimer - - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - - - - Cancel - Hủy - - - Next - Kế tiếp - - - - DisclaimersItem - - I have read and agree to the - - - - Disclaimer - - - - - DockModuleObject - - Dock - Dock - - - Multiple Displays - Nhiều màn hình - - - Show Dock - - - - Mode - Chế độ - - - Position - - - - Status - Tình trạng - - - Show recent apps in Dock - - - - Size - Kích thước - - - Plugin Area - - - - Select which icons appear in the Dock - - - - Fashion mode - Dạng thời trang - - - Efficient mode - Dạng hiệu quả - - - Top - Trên đỉnh - - - Bottom - Dưới đáy - - - Left - Trái - - - Right - Phải - - - Location - Nơi chốn - - - Keep shown - - - - Keep hidden - Tiếp tục ẩn - - - Smart hide - Ẩn thông minh - - - Small - Nhỏ - - - Large - Lớn - - - On screen where the cursor is - - - - Only on main screen - - - - - FaceInfoDialog - - Enroll Face - - - - Position your face inside the frame - - - - - FaceWidget - - Edit - Chỉnh sửa - - - Manage Faces - - - - You can add up to 5 faces - - - - Done - Xong - - - Add Face - - - - The name already exists - Tên người dùng đã được sử dụng - - - Faceprint - - - - - FaceidDetailWidget - - No supported devices found - - - - - FingerDetailWidget - - No supported devices found - - - - - FingerDisclaimer - - Add Fingerprint - Thêm Dấu vân tay - - - Cancel - Hủy - - - Next - Kế tiếp - - - - FingerInfoWidget - - Place your finger - Đặt ngón tay của bạn - - - Place your finger firmly on the sensor until you're asked to lift it - Đặt ngón tay của bạn chắc chắn vào cảm biến cho đến khi bạn được yêu cầu nâng nó lên - - - Scan the edges of your fingerprint - Quét các góc khác của vân tay - - - Place the edges of your fingerprint on the sensor - Đặt các cạnh của dấu vân tay của bạn trên cảm biến - - - Lift your finger - Nhấc ngón tay lên - - - Lift your finger and place it on the sensor again - Nhắc ngon tay của bạn lên và đặt lại vào cảm biển - - - Adjust the position to scan the edges of your fingerprint - Điều chỉnh vị trí để quét các cạnh của dấu vân tay của bạn - - - Lift your finger and do that again - Nhấc ngón tay của bạn và làm lại một lần nữa - - - Fingerprint added - Đã thêm dấu vân tay - - - - FingerWidget - - Edit - Chỉnh sửa - - - Fingerprint Password - Mật mã Dấu vân tay - - - You can add up to 10 fingerprints - Bạn có thể thêm 10 vân tay - - - Done - Xong - - - The name already exists - Tên người dùng đã được sử dụng - - - Add Fingerprint - Thêm Dấu vân tay - - - - GeneralModule - - General - Tổng quát - - - Balanced - Bình thường - - - Balance Performance - - - - High Performance - - - - Power Saver - - - - Power Plans - - - - Power Saving Settings - Cài đặt nguồn - - - Auto power saving on low battery - Tự động tiết kiệm năng lượng khi pin yếu - - - Decrease Brightness - - - - Low battery threshold - - - - Auto power saving on battery - Tự động tiết kiệm năng lượng khi dùng pin - - - Wakeup Settings - Cài đặt lúc mở máy - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - - - - 1~63 characters please - - - - - InternalButtonItem - - Internal testing channel - - - - click here open the link - - - - - IrisDetailWidget - - No supported devices found - - - - - IrisWidget - - Edit - Chỉnh sửa - - - Manage Irises - - - - You can add up to 5 irises - - - - Done - Xong - - - Add Iris - - - - The name already exists - Tên người dùng đã được sử dụng - - - Iris - - - - - KeyLabel - - None - Không - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - - - - - MicrophonePage - - Input Device - - - - Automatic Noise Suppression - - - - Input Volume - Âm thanh đầu vào - - - Input Level - Input Level - - - - PersonalizationDesktopModule - - Desktop - Desktop - - - Window - Cửa sổ - - - Window Effect - Hiệu ứng của sổ - - - Window Minimize Effect - Hiệu ứng thu nhỏ của sổ - - - Transparency - Trong suốt - - - Rounded Corner - - - - Scale - Tỷ lệ giãn - - - Magic Lamp - Magic Lamp - - - Small - Nhỏ - - - Middle - - - - Large - Lớn - - - - PersonalizationModule - - Personalization - Cá nhân hóa - - - - PersonalizationThemeList - - Cancel - Hủy - - - Save - Lưu - - - Light - Sáng - - - Dark - Tối - - - Auto - Tự động - - - Default - Mặc định - - - - PersonalizationThemeModule - - Theme - Chủ đề - - - Appearance - - - - Accent Color - Màu chính - - - Icon Settings - - - - Icon Theme - Chủ đề Biểu tượng - - - Cursor Theme - Chủ đề Con trỏ - - - Text Settings - - - - Font Size - - - - Standard Font - Font chữ Chuẩn - - - Monospaced Font - Font chữ Đơn cách - - - Light - Sáng - - - Auto - Tự động - - - Dark - Tối - - - - PersonalizationThemeWidget - - Light - Sáng - General - /personalization/General - - - Dark - Tối - General - /personalization/General - - - Auto - Tự động - General - /personalization/General - - - Default - Mặc định - - - - PersonalizationWorker - - Custom - Tùy biến - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - PIN để kết nối với thiết bị Bluetooth là: - - - Cancel - Hủy - - - Confirm - Xác nhận - - - - PowerModule - - Power - Năng lượng - - - Battery low, please plug in - Pin yếu,vui lòng cắm sạc - - - Battery critically low - Pin cực kỳ thấp - - - - PrivacyModule - - Privacy and Security - - - - - PrivacySecurityModel - - Camera - Máy quay - - - Microphone - Micro - - - User Folders - - - - Calendar - Lịch - - - Screen Capture - - - - - QObject - - Control Center - Trung tâm kiểm soát - - - , - - - - Error occurred when reading the configuration files of password rules! - - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - Đã kích hoạt - - - View - Xem - - - To be activated - Để được kích hoạt - - - Activate - Kịch hoạt - - - Expired - Hết hạn - - - In trial period - Trong thời gian dùng thử - - - Trial expired - Bản dùng thử đã hết hạn - - - Touch Screen Settings - Cài đặt màn hình cảm ứng - - - The settings of touch screen changed - - - - Checking system versions, please wait... - - - - Leave - - - - Cancel - Hủy - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - Hệ thống của bạn không được ủy quyền, vui lòng kích hoạt trước - - - Update successful - Cập nhật thành công - - - Failed to update - Cập nhật đã thất bại - - - - SearchInput - - Search - Tìm kiếm - - - - ServiceSettingsModule - - Apps can access your camera: - - - - Apps can access your microphone: - - - - Apps can access user folders: - - - - Apps can access Calendar: - - - - Apps can access Screen Capture: - - - - No apps requested access to the camera - - - - No apps requested access to the microphone - - - - No apps requested access to user folders - - - - No apps requested access to Calendar - - - - No apps requested access to Screen Capture - - - - - SoundEffectsPage - - Sound Effects - Các Hiệu ứng Âm thanh - - - - SoundModel - - Boot up - Boot up - - - Shut down - Tắt máy - - - Log out - Thoát ra - - - Wake up - Wake up - - - Volume +/- - Âm lượng +/- - - - Notification - Thông báo - - - Low battery - Pin yếu - - - Send icon in Launcher to Desktop - Gửi icon trong Launcher đến Desktop - - - Empty Trash - Làm sạch Thùng rác - - - Plug in - Plug in - - - Plug out - Plug out - - - Removable device connected - Thiết bị tháo rời được kết nối - - - Removable device removed - Thiết bị tháo rời đã bị gỡ bỏ - - - Error - Lỗi - - - - SoundModule - - Sound - Âm thanh - - - - SoundPlugin - - Output - Đầu ra - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - Đầu vào - - - Sound Effects - Các Hiệu ứng Âm thanh - - - Devices - - - - Input Devices - - - - Output Devices - - - - - SpeakerPage - - Output Device - - - - Mode - Chế độ - - - Output Volume - Âm thanh đầu ra - - - Volume Boost - Volume Boost - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - - - - Left/Right Balance - Cân bằng Trái/Phải - - - Left - Trái - - - Right - Phải - - - - TimeSettingModule - - Time Settings - Những Thiết lập Thời gian - - - Time - - - - Auto Sync - Tự động đồng bộ - - - Reset - Thiết đặt lại - - - Save - Lưu - - - Server - Máy chủ - - - Address - Địa chỉ - - - Required - Cần thiết - - - Customize - Tùy chỉnh - - - Year - Năm - - - Month - Tháng - - - Day - Ngày - - - - TimeZoneChooser - - Cancel - Hủy - - - Confirm - Xác nhận - - - Add Timezone - Thêm múi giờ - - - Add - Thêm - - - Change Timezone - Thay đổi Múi giờ - - - - TimeoutDialog - - Save the display settings? - - - - Settings will be reverted in %1s. - - - - Revert - Trở lại - - - Save - Lưu - - - - TimezoneItem - - Tomorrow - Ngày mai - - - Yesterday - Hôm qua - - - Today - Hôm nay - - - %1 hours earlier than local - sớm hơn %1 giờ so với địa phương - - - %1 hours later than local - trễ hơn %1 giờ so với địa phương - - - - TimezoneModule - - Timezone List - Danh sách Múi giờ - - - System Timezone - Múi giờ hệ thống - - - Add Timezone - Thêm múi giờ - - - - TreeCombox - - Collaboration Settings - - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - - - - Cancel - Hủy - - - Go to Link - - - - - UnknownUpdateItem - - Release date: - - - - - UpdateCtrlWidget - - Check Again - Kiểm tra lại - - - Update failed: insufficient disk space - Cập nhật thất bại: không đủ dung lượng - - - Dependency error, failed to detect the updates - Lỗi phụ thuộc, không phát hiện các bản cập nhật - - - Restart the computer to use the system and the applications properly - Khởi động lại máy tính để sử dụng hệ thống và các ứng dụng đúng cách - - - Network disconnected, please retry after connected - Không có kết nối mạng, xin hãy thử lại... - - - Your system is not authorized, please activate first - Hệ thống của bạn không được ủy quyền, vui lòng kích hoạt trước - - - This update may take a long time, please do not shut down or reboot during the process - Bản cập nhật này có thể mất nhiều thời gian, vui lòng không tắt hoặc khởi động lại - - - Updates Available - - - - Current Edition - Phiên bản hiện tại: - - - Updating... - Đang cập nhật... - - - Update All - - - - Last checking time: - Lần kiểm tra cuối cùng - - - Your system is up to date - Hệ thống của bạn thì đã cập nhật - - - Check for Updates - Kiểm tra cập nhật - - - Checking for updates, please wait... - Đang kiểm tra cập nhật, xin hãy đợi... - - - The newest system installed, restart to take effect - Hệ thống mới nhất đã được cập nhật, khởi động lại để có hiệu lực - - - %1% downloaded (Click to pause) - %1% đã được tải xuống (Nhấn chuột để tạm dừng) - - - %1% downloaded (Click to continue) - đã tải xuống %1 (Nhấn để tiếp tục) - - - Your battery is lower than 50%, please plug in to continue - Pin của bạn thấp hơn 50%, xin hãy cắm điện vào để tiếp tục - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - Xin hãy bảo đảm đủ năng lượng để khởi động lại, và không tắt điện hay rút dây máy của bạn - - - Size - Kích thước - - - - UpdateModule - - Updates - Cập nhật - - - - UpdatePlugin - - Check for Updates - Kiểm tra cập nhật - - - - UpdateSettingItem - - Insufficient disk space - Dung lượng đĩa không đủ - - - Update failed: insufficient disk space - Cập nhật thất bại: không đủ dung lượng - - - Update failed - - - - Network error - - - - Network error, please check and try again - - - - Packages error - - - - Packages error, please try again - - - - Dependency error - - - - Unmet dependencies - - - - The newest system installed, restart to take effect - Hệ thống mới nhất đã được cập nhật, khởi động lại để có hiệu lực - - - Waiting - Đang đợi - - - Backing up - - - - System backup failed - Khôi phục hệ thống lỗi - - - Release date: - - - - Server - Máy chủ - - - Desktop - Desktop - - - Version - Phiên bản - - - - UpdateSettingsModule - - Update Settings - Những Thiết lập Cập nhật - - - System - Hệ thống - - - Security Updates Only - - - - Switch it on to only update security vulnerabilities and compatibility issues - - - - Third-party Repositories - - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - - - - Auto Check for Updates - - - - Auto Download Updates - Tự động tải xuống những Cập nhật - - - Switch it on to automatically download the updates in wireless or wired network - Bật nó để tự động tải xuống các bản cập nhật trong mạng không dây hoặc có dây - - - Auto Install Updates - - - - Updates Notification - Thông báo cập nhật - - - Clear Package Cache - Xóa bộ nhớ cache - - - Updates from Internal Testing Sources - - - - internal update - - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - - - - Security Updates - - - - Install updates automatically when the download is complete - - - - Install "%1" automatically when the download is complete - - - - - UpdateWidget - - Current Edition - Phiên bản hiện tại: - - - - UpdateWorker - - System Updates - - - - Fixed some known bugs and security vulnerabilities - - - - Security Updates - - - - Third-party Repositories - - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - - - - Your are safe to leave the internal testing channel - - - - Cannot find machineid - - - - Cannot Uninstall package - - - - Error when exit testingChannel - - - - try to manually uninstall package - - - - Cannot install package - - - - - UseBatteryModule - - On Battery - Trên pin - - - Never - Không bao giờ - - - Shut down - Tắt máy - - - Suspend - Dừng - - - Hibernate - Ngủ đông - - - Turn off the monitor - Tắt màn hình - - - Do nothing - Không làm gì cả - - - 1 Minute - 1 Phút - - - %1 Minutes - %1 Phút - - - 1 Hour - 1 Giờ - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Khóa màn hình sau - - - Computer suspends after - - - - Computer will suspend after - Máy tính sẽ dừng sau khi - - - When the lid is closed - Dùng khi dóng nắp - - - When the power button is pressed - - - - Low Battery - - - - Low battery notification - - - - Low battery level - Mức pin thấp - - - Auto suspend battery level - Tự động treo mức pin - - - Battery Management - - - - Display remaining using and charging time - - - - Maximum capacity - Công suất tối đa - - - Show the shutdown Interface - - - - - UseElectricModule - - Plugged In - Plugged In - - - 1 Minute - 1 Phút - - - %1 Minutes - %1 Phút - - - 1 Hour - 1 Giờ - - - Never - Không bao giờ - - - Screen and Suspend - - - - Turn off the monitor after - - - - Lock screen after - Khóa màn hình sau - - - Computer suspends after - - - - When the lid is closed - Dùng khi dóng nắp - - - When the power button is pressed - - - - Shut down - Tắt máy - - - Suspend - Dừng - - - Hibernate - Ngủ đông - - - Turn off the monitor - Tắt màn hình - - - Show the shutdown Interface - - - - Do nothing - Không làm gì cả - - - - WacomModule - - Drawing Tablet - Drawing Tablet - - - Mode - Chế độ - - - Pressure Sensitivity - Cảm biến Áp lực - - - Pen - Pen - - - Mouse - Chuột - - - Light - Sáng - - - Heavy - Heavy - - - - main - - Control Center provides the options for system settings. - Trung tâm điều khiển cung cấp các tùy chọn cho cài đặt hệ thống. - - - - updateControlPanel - - Downloading - - - - Waiting - - - - Installing - - - - Backing up - - - - Download and install - - - - Learn more - - - - diff --git a/dcc-old/translations/dde-control-center_zh_CN.ts b/dcc-old/translations/dde-control-center_zh_CN.ts deleted file mode 100644 index 8ef48b41ce..0000000000 --- a/dcc-old/translations/dde-control-center_zh_CN.ts +++ /dev/null @@ -1,4067 +0,0 @@ - - - - - AdapterModule - - Allow other Bluetooth devices to find this device - 允许蓝牙设备可被发现 - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - 启用蓝牙寻找附近设备(扬声器、键盘、鼠标) - - - My Devices - 我的设备 - - - Other Devices - 其他设备 - - - Show Bluetooth devices without names - 显示没有名称的蓝牙设备 - - - Connect - 连接 - - - Disconnect - 断开连接 - - - Rename - 重命名 - - - Send Files - 发送文件 - - - Ignore this device - 忽略此设备 - - - Connecting - 正在连接 - - - Disconnecting - 正在断开 - - - - AddButtonWidget - - Add Application - 添加默认程序 - - - Open Desktop file - 打开Desktop文件 - - - Apps (*.desktop) - 应用程序(*.desktop) - - - All files (*) - 所有文件(*) - - - - AddFaceInfoDialog - - Enroll Face - 添加人脸数据 - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - 请确保五官清晰可见,避免佩戴帽子、墨镜、口罩等物件,保证光线充足,避免阳光直射,以提高录入成功率 - - - Cancel - 取消 - - - Next - 下一步 - - - Face enrolled - 人脸录入完成 - - - Use your face to unlock the device and make settings later - 使用人脸数据解锁您的设备,之后还可进行更多设置 - - - Done - 完成 - - - Failed to enroll your face - 人脸录入失败 - - - Try Again - 重新录入 - - - Close - 关 闭 - - - - AddFingerDialog - - Cancel - 取消 - - - Done - 完成 - - - Scan Again - 重新录入 - - - Scan Suspended - 录入中断 - - - - AddIrisInfoDialog - - Enroll Iris - 添加虹膜数据 - - - Cancel - 取消 - - - Next - 下一步 - - - Iris enrolled - 虹膜录入已完成 - - - Done - 完成 - - - Failed to enroll your iris - 虹膜录入失败 - - - Try Again - 重新录入 - - - - AdvancedSettingModule - - Advanced Setting - 高级设置 - - - Audio Framework - 音频框架 - - - Different audio frameworks have their own advantages and disadvantages, and you can choose the one that best matches you to use - 不同音频框架各有优劣,可选择与你最匹配的框架使用 - - - - AuthenticationInfoItem - - No more than 15 characters - 不得超过15个字符 - - - Use letters, numbers and underscores only, and no more than 15 characters - 只能由字母、数字、中文、下划线组成,且不超过15个字符 - - - Use letters, numbers and underscores only - 只能由字母、数字、中文、下划线组成 - - - - AuthenticationModule - - Biometric Authentication - 生物认证 - - - - AuthenticationPlugin - - Fingerprint - 指纹 - - - Face - 人脸 - - - Iris - 虹膜 - - - - BluetoothDeviceModel - - Connected - 已连接 - - - Not connected - 未连接 - - - - BluetoothModule - - Bluetooth - 蓝牙 - - - Bluetooth device manager - 蓝牙设备管理 - - - - CharaMangerModel - - Fingerprint1 - 指纹1 - - - Fingerprint2 - 指纹2 - - - Fingerprint3 - 指纹3 - - - Fingerprint4 - 指纹4 - - - Fingerprint5 - 指纹5 - - - Fingerprint6 - 指纹6 - - - Fingerprint7 - 指纹7 - - - Fingerprint8 - 指纹8 - - - Fingerprint9 - 指纹9 - - - Fingerprint10 - 指纹10 - - - Scan failed - 指纹录入失败 - - - The fingerprint already exists - 指纹已存在 - - - Please scan other fingers - 请使用其他手指录入 - - - Unknown error - 未知错误 - - - Scan suspended - 指纹录入被中断 - - - Cannot recognize - 无法识别 - - - Moved too fast - 接触时间短 - - - Finger moved too fast, please do not lift until prompted - 接触时间短,验证时请勿移动手指 - - - Unclear fingerprint - 图像模糊 - - - Clean your finger or adjust the finger position, and try again - 请清洁手指或调整触摸位置,再次按压指纹识别器 - - - Already scanned - 图像重复 - - - Adjust the finger position to scan your fingerprint fully - 请调整手指按压区域以录入更多指纹 - - - Finger moved too fast. Please do not lift until prompted - 指纹采集间隙,请勿移动手指,直到提示您抬起 - - - Lift your finger and place it on the sensor again - 请抬起手指,再次按压 - - - Position your face inside the frame - 请确保您的面部全部显示在识别区域内 - - - Face enrolled - 人脸录入完成 - - - Position a human face please - 请使用人类面容 - - - Keep away from the camera - 请远离镜头 - - - Get closer to the camera - 请靠近镜头 - - - Do not position multiple faces inside the frame - 请不要多人入镜 - - - Make sure the camera lens is clean - 请确保镜头清洁 - - - Do not enroll in dark, bright or backlit environments - 请避免在暗光、强光、逆光环境下操作 - - - Keep your face uncovered - 请保持面部无遮挡 - - - Scan timed out - 录入超时 - - - Device crashed, please scan again! - 录入设备崩溃,请重新录入! - - - Cancel - 取消 - - - - CooperationSettingsDialog - - Collaboration Settings - 协同设置 - - - Share mouse and keyboard - 共享鼠标和键盘 - - - Share your mouse and keyboard across devices - 开启后支持在协同设备间共享鼠标和键盘 - - - Share clipboard - 剪贴板共享 - - - Storage path for shared files - 共享文件夹 - - - Share the copied content across devices - 开启后支持在协同设备间共享复制内容 - - - Cancel - button - 取 消 - - - Confirm - button - 确 定 - - - - dccV23::AccountSpinBox - - Always - 长期有效 - - - - dccV23::AccountsModule - - Users - 用户 - - - User management - 用户管理 - - - Create User - 创建用户 - - - Username - 用户名 - - - Change Password - 修改密码 - - - Delete User - 删除用户 - - - User Type - 用户类型 - - - Auto Login - 自动登录 - - - Login Without Password - 无密码登录 - - - Validity Days - 密码有效天数 - - - Group - 用户组 - - - The full name is too long - 名称过长 - - - Standard User - 标准用户 - - - Administrator - 管理员 - - - Reset Password - 重置密码 - - - The full name has been used by other user accounts - 全名与其他用户的全名/用户名重复 - - - Full Name - 设置全名 - - - Go to Settings - 前往设置 - - - Cancel - 取消 - - - OK - 确定 - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - 只允许一个用户开启自动登录,请先关闭%1用户的自动登录,再进行操作 - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - 您的主机成功退出了域服务器 - - - Your host joins the domain server successfully - 您的主机成功加入了域服务器 - - - Your host failed to leave the domain server - 您的主机退出域服务器失败 - - - Your host failed to join the domain server - 您的主机加入域服务器失败 - - - AD domain settings - AD域设置 - - - Password not match - 密码不一致 - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - 允许来自%1的通知,可在屏幕中显示消息横幅,也可在通知中心查看历史未读消息。 - - - Play a sound - 通知时提示声音 - - - Show messages on lockscreen - 锁屏时显示消息 - - - Show in notification center - 在通知中心显示 - - - Show message preview - 显示消息预览 - - - - dccV23::AvatarListDialog - - Person - 人物 - - - Animal - 动物 - - - Illustration - 创意插图 - - - Expression - 表情符号 - - - Custom Picture - 自定义图片 - - - Cancel - 取消 - - - Save - 保存 - - - - dccV23::AvatarListFrame - - Dimensional Style - 立体风格 - - - Flat Style - 平面风格 - - - - dccV23::AvatarListView - - Images - 图片 - - - - dccV23::BootWidget - - Updating... - 更新中... - - - Startup Delay - 启动延时 - - - Theme - 主题 - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - 您可以点击菜单改变默认启动项,也可以拖拽图片到窗口改变背景图片 - - - Click the option in boot menu to set it as the first boot - 您可以点击菜单改变默认启动项 - - - Switch theme on to view it in boot menu - 开启主题后您可以在开机时看到主题背景 - - - GRUB Authentication - grub验证 - - - GRUB password is required to edit its configuration - 开启后进入grub编辑需要密码 - - - Change Password - 修改密码 - - - Boot Menu - 启动菜单 - - - Change GRUB password - 修改grub验证密码 - - - Username: - 用户名: - - - root - root - - - New password: - 新密码: - - - Repeat password: - 重复密码: - - - Required - 必填 - - - Cancel - button - 取消 - - - Confirm - button - 确定 - - - Password cannot be empty - 密码不能为空 - - - Passwords do not match - 密码不一致 - - - - dccV23::BrightnessWidget - - Brightness - 亮度 - - - Color Temperature - 色温 - - - Auto Brightness - 自动调节亮度 - - - Night Shift - 自动调节色温 - - - The screen hue will be auto adjusted according to your location - 通过获取地理位置来辅助系统实现自动调节屏幕颜色偏色 - - - Change Color Temperature - 手动调节 - - - Cool - 较冷 - - - Warm - 较暖 - - - - dccV23::CommonInfoPlugin - - General Settings - 通用 - - - Boot Menu - 启动菜单 - - - Developer Mode - 开发者模式 - - - User Experience Program - 用户体验计划 - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - 同意并加入用户体验计划 - - - The Disclaimer of Developer Mode - 开发者模式免责声明 - - - Agree and Request Root Access - 同意并进入开发者模式 - - - Failed to get root access - 进入开发者模式失败 - - - Please sign in to your Union ID first - 请先登录Union ID - - - Cannot read your PC information - 无法获取硬件信息 - - - No network connection - 无网络连接 - - - Certificate loading failed, unable to get root access - 证书加载失败,无法进入开发者模式 - - - Signature verification failed, unable to get root access - 签名验证失败,无法进入开发者模式 - - - Start setting the new boot animation, please wait for a minute - 开始设置启动新动画,请稍等一会儿 - - - Setting new boot animation finished - 新的启动动画设置完成 - - - The settings will be applied after rebooting the system - 新的设置会在重启系统后生效 - - - - dccV23::CreateAccountPage - - Group - 用户组 - - - Cancel - 取消 - - - Create - 创建 - - - New User - 新用户 - - - User Type - 用户类型 - - - Username - 用户名 - - - Full Name - 全名 - - - Password - 请输入密码 - - - Repeat Password - 重复密码 - - - Password Hint - 密码提示 - - - The full name is too long - 名称过长 - - - Passwords do not match - 密码不一致 - - - Standard User - 标准用户 - - - Administrator - 管理员 - - - Customized - 自定义用户 - - - Required - 必填 - - - optional - 选填 - - - The hint is visible to all users. Do not include the password here. - 密码提示对所有人可见,切勿包含具体密码信息 - - - Policykit authentication failed - 认证失败 - - - Username must be between 3 and 32 characters - 用户名长度必须介于3到32个字符之间 - - - The first character must be a letter or number - 首字符必须为字母或数字 - - - Your username should not only have numbers - 用户名不能只包含数字 - - - The username has been used by other user accounts - 用户名与其他用户的全名/用户名重复 - - - The full name has been used by other user accounts - 全名与其他用户的全名/用户名重复 - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - 您还没有上传过头像,可点击或拖拽上传图片 - - - Uploaded file type is incorrect, please upload again - 上传的文件类型不正确,请重新上传 - - - Images - 图片 - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - 添加自定义快捷键 - - - Name - 名称 - - - Required - 必填 - - - Command - 命令 - - - Cancel - 取消 - - - Add - 添加 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - 此快捷键与%1冲突,点击添加使这个快捷键立即生效 - - - - dccV23::CustomEdit - - Required - 必填 - - - Cancel - 取消 - - - Save - 保存 - - - Shortcut - 快捷键 - - - Name - 名称 - - - Command - 命令 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - 此快捷键与%1冲突,点击添加使这个快捷键立即生效 - - - - dccV23::CustomItem - - Shortcut - 快捷键 - - - Please enter a shortcut - 请输入快捷键 - - - - dccV23::CustomRegionFormatDialog - - Custom Format - 自定义格式 - - - First day of week - 一周第一天 - - - Short date - 短日期 - - - Long date - 长日期 - - - Short time - 短时间 - - - Long time - 长时间 - - - Currency symbol - 货币符号 - - - Numbers - 数字 - - - Paper - 纸张 - - - Cancel - 取消 - - - Save - 保存 - - - - dccV23::DeveloperModeDialog - - Request Root Access - 进入开发者模式 - - - Online - 在线激活 - - - Offline - 离线激活 - - - Please sign in to your Union ID first and continue - 进入开发者模式需要登录Union ID - - - Next - 下一步 - - - Export PC Info - 导出机器信息 - - - Import Certificate - 导入证书 - - - 1. Export your PC information - 1. 导出机器信息 - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. 前往https://www.chinauos.com/developMode 下载离线证书 - - - 3. Import the certificate - 3. 导入证书 - - - - dccV23::DeveloperModeWidget - - Request Root Access - 进入开发者模式 - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - 进入开发者模式后可以获得root使用权限,安装和运行非商店签名应用,但同时也可能导致系统完整性遭到破坏,请谨慎使用。 - - - The feature is not available at present, please activate your system first - 当前系统未激活,暂无法使用该功能 - - - Failed to get root access - 进入开发者模式失败 - - - Please sign in to your Union ID first - 请先登录Union ID - - - Cannot read your PC information - 无法获取硬件信息 - - - No network connection - 无网络连接 - - - Certificate loading failed, unable to get root access - 证书加载失败,无法进入开发者模式 - - - Signature verification failed, unable to get root access - 签名验证失败,无法进入开发者模式 - - - To make some features effective, a restart is required. Restart now? - 开发者模式部分功能需要重启后生效,是否立即重启? - - - Cancel - 取消 - - - Restart Now - 现在重启 - - - Root Access Allowed - 已进入开发者模式 - - - - dccV23::DisplayPlugin - - Display - 显示 - - - Light, resolution, scaling and etc - 亮度、分辨率、缩放设置等 - - - - dccV23::DouTestWidget - - Double-click Test - 双击测试 - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - 键盘设置 - - - Repeat Delay - 重复延迟 - - - Short - - - - Long - - - - Repeat Rate - 重复速度 - - - Slow - - - - Fast - - - - Test here - 请在此测试 - - - Numeric Keypad - 启用数字键盘 - - - Caps Lock Prompt - 大写锁定提示 - - - - dccV23::GeneralSettingWidget - - Left Hand - 左手模式 - - - Disable touchpad while typing - 输入时禁用触控板 - - - Scrolling Speed - 滚动速度 - - - Double-click Speed - 双击速度 - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - 键盘布局 - - - Edit - 编 辑 - - - Add Keyboard Layout - 添加键盘布局 - - - Done - 完成 - - - - dccV23::KeyboardLayoutDialog - - Cancel - 取消 - - - Add - 添加 - - - Add Keyboard Layout - 添加键盘布局 - - - - dccV23::KeyboardPlugin - - Keyboard and Language - 键盘和语言 - - - Keyboard - 键盘 - - - Keyboard Settings - 键盘设置 - - - keyboard Layout - 键盘布局 - - - Keyboard Layout - 键盘布局 - - - Language - 语言 - - - Shortcuts - 快捷键 - - - - dccV23::MainWindow - - Help - 帮助 - - - - dccV23::ModifyPasswdPage - - Change Password - 修改密码 - - - Reset Password - 重置密码 - - - Resetting the password will clear the data stored in the keyring. - 重设密码将会清除密钥环内已存储的数据 - - - Current Password - 当前密码 - - - Forgot password? - 忘记密码? - - - New Password - 新密码 - - - Repeat Password - 重复密码 - - - Password Hint - 密码提示 - - - Cancel - 取消 - - - Save - 保存 - - - Passwords do not match - 密码不一致 - - - Required - 必填 - - - Optional - 选填 - - - Password cannot be empty - 密码不能为空 - - - The hint is visible to all users. Do not include the password here. - 密码提示对所有人可见,切勿包含具体密码信息 - - - Wrong password - 密码错误 - - - New password should differ from the current one - 新密码和旧密码不能相同 - - - System error - 系统错误 - - - Network error - 网络错误 - - - - dccV23::MonitorControlWidget - - Identify - 识别 - - - Gather Windows - 集合窗口 - - - Screen rearrangement will take effect in %1s after changes - 屏幕拼接将在修改完成%1s后生效 - - - - dccV23::MousePlugin - - Mouse - 鼠标 - - - General - 通用 - - - Touchpad - 触控板 - - - TrackPoint - 指点杆 - - - - dccV23::MouseSettingWidget - - Pointer Speed - 指针速度 - - - Mouse Acceleration - 鼠标加速 - - - Disable touchpad when a mouse is connected - 插入鼠标时禁用触控板 - - - Natural Scrolling - 自然滚动 - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - 多屏显示设置 - /display/Multiple Displays - - - Mode - 模式 - /display/Mode - - - Main Screen - 主屏幕 - /display/Main Scree - - - Duplicate - 复制 - - - Extend - 扩展 - - - Only on %1 - 仅%1屏 - - - - dccV23::NotificationModule - - AppNotify - 应用通知 - - - Notification - 通知 - - - SystemNotify - 系统通知 - - - - dccV23::PalmDetectSetting - - Palm Detection - 掌压检测 - - - Minimum Contact Surface - 最小接触面 - - - Minimum Pressure Value - 最小压力值 - - - Disable the option if touchpad doesn't work after enabled - 开启后若导致触控板不可用,请关闭此选项即可 - - - - dccV23::PlyMouthModule - - Boot Animation - 启动动画 - - - Small Size - 小尺寸 - - - Big Size - 大尺寸 - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - 隐私政策 - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/zh/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-cn - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>统信软件非常重视您的隐私。因此我们制定了涵盖如何收集、使用、共享、转让、公开披露以及存储您的信息的隐私政策。</p><p>您可以<a href="%1">点击此处</a>查看我们最新的隐私政策和/或通过访问 <a href="%1">%1</a>在线查看。请您务必认真阅读、充分理解我们针对客户隐私的做法,如果有任何疑问,请联系我们:support@uniontech.com。</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - 密码不能为空 - - - Password must have at least %1 characters - 密码长度不能少于%1个字符 - - - Password must be no more than %1 characters - 密码长度不能超过%1个字符 - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - 密码只能由英文(区分大小写)、数字或特殊符号(~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/)组成 - - - No more than %1 palindrome characters please - 回文字符长度不超过%1位 - - - No more than %1 monotonic characters please - 单调性字符不超过%1位 - - - No more than %1 repeating characters please - 重复字符不超过%1位 - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - 密码必须由大写字母、小写字母、数字、符号(~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/)三种类型组成 - - - Password must not contain more than 4 palindrome characters - 密码不得含有连续4个以上的回文字符 - - - Do not use common words and combinations as password - 密码不能是常见单词及组合 - - - Create a strong password please - 密码过于简单,请增加密码复杂度 - - - It does not meet password rules - 密码不符合安全要求 - - - - dccV23::RefreshRateWidget - - Refresh Rate - 刷新率 - - - Hz - 赫兹 - - - Recommended - 推荐 - - - - dccV23::RegionFormatDialog - - Region Format - 区域格式 - - - Default format - 默认格式 - - - First of day - 一周第一天 - - - Short date - 短日期 - - - Long date - 长日期 - - - Short time - 短时间 - - - Long time - 长时间 - - - Currency symbol - 货币符号 - - - Numbers - 数字 - - - Paper - 纸张 - - - Cancel - 取消 - - - Save - 保存 - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - 您确定要删除此用户吗? - - - Delete account directory - 删除用户目录 - - - Cancel - 取消 - - - Delete - 删除 - - - - dccV23::ResolutionWidget - - Resolution - 分辨率 - /display/Resolution - - - Resize Desktop - 桌面显示 - /display/Resize Desktop - - - Default - 默认 - - - Fit - 适应 - - - Stretch - 拉伸 - - - Center - 居中 - - - Recommended - 推荐 - - - - dccV23::RotateWidget - - Rotation - 方向 - /display/Rotation - - - Standard - 标准 - - - 90° - 90度 - - - 180° - 180度 - - - 270° - 270度 - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - 当前屏幕仅支持1倍缩放 - - - Display Scaling - 屏幕缩放 - - - - dccV23::SearchInput - - Search - 搜索 - - - - dccV23::SecondaryScreenDialog - - Brightness - 亮度 - - - - dccV23::SecurityLevelItem - - Weak - 强度低 - - - Medium - 强度中 - - - Strong - 强度高 - - - - dccV23::SecurityQuestionsPage - - Security Questions - 安全问题 - - - These questions will be used to help reset your password in case you forget it. - 忘记密码时,可使用安全问题重置密码。 - - - Security question 1 - 安全问题1 - - - Security question 2 - 安全问题2 - - - Security question 3 - 安全问题3 - - - Cancel - 取消 - - - Confirm - 确定 - - - Keep the answer under 30 characters - 答案请保持在30个字符以内 - - - Do not choose a duplicate question please - 不能选择重复的问题 - - - Please select a question - 请选择安全问题 - - - What's the name of the city where you were born? - 您出生城市的名称是什么? - - - What's the name of the first school you attended? - 您的母校名称是什么? - - - Who do you love the most in this world? - 您最爱的人是谁? - - - What's your favorite animal? - 您最喜欢的动物是什么? - - - What's your favorite song? - 您最喜欢的音乐是什么? - - - What's your nickname? - 您的绰号是什么? - - - It cannot be empty - 内容不能为空 - - - - dccV23::ShortCutSettingWidget - - System Management - 系统管理 - - - Window - 窗口 - - - Workspace - 工作区 - - - Assistive Tools - 辅助功能 - - - Custom Shortcut - 自定义快捷键 - - - Restore Defaults - 恢复默认 - - - Shortcut - 快捷键 - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - 请重新设置快捷键 - - - Cancel - 取消 - - - Replace - 替换 - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - 此快捷键与%1冲突,点击替换使这个快捷键立即生效 - - - - dccV23::ShortcutItem - - Enter a new shortcut - 请输入新的快捷键 - - - - dccV23::SystemInfoModel - - available - 可用 - - - - dccV23::SystemInfoModule - - About This PC - 关于本机 - - - Computer Name - 计算机名 - - - systemInfo - 系统信息 - - - OS Name - 产品名称 - - - Version - 版本号 - - - Edition - 版本 - - - Type - 类型 - - - Authorization - 版本授权 - - - Processor - 处理器 - - - Memory - 内存 - - - Graphics Platform - 图形平台 - - - Kernel - 内核版本 - - - Agreements and Privacy Policy - 协议与隐私政策 - - - Edition License - 版本协议 - - - End User License Agreement - 最终用户许可协议 - - - Privacy Policy - 隐私政策 - - - %1-bit - %1位 - - - - dccV23::SystemInfoPlugin - - System Info - 系统信息 - - - - dccV23::SystemLanguageSettingDialog - - Cancel - 取消 - - - Add - 添加 - - - Add System Language - 添加系统语言 - - - - dccV23::SystemLanguageWidget - - Edit - 编 辑 - - - Language List - 语言列表 - - - Add Language - 添加语言 - - - Done - 完成 - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - 勿扰模式 - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - 所有应用消息横幅将会被隐藏,通知声音将会静音,您可在通知中心查看所有消息。 - - - When the screen is locked - 在屏幕锁屏时 - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - 触控屏 - - - Select your touch screen when connected or set it here. - 您可在接入触控屏时设置所在屏幕,或在此进行调整。 - - - Confirm - 确定 - - - Cancel - 取消 - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - 指针速度 - - - Enable TouchPad - 启用触控板 - - - Tap to Click - 轻触以点击 - - - Natural Scrolling - 自然滚动 - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - 指针速度 - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - 加入用户体验计划 - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/zh/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-cn - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>开启用户体验计划视为您授权我们收集和使用您的设备及系统信息,以及应用软件信息,您可以关闭用户体验计划以拒绝我们对前述信息的收集和使用。详细说明请参照Deepin隐私政策 (<a href="%1"> %1</a>)。</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>开启用户体验计划视为您授权我们收集和使用您的设备及系统信息,以及应用软件信息,您可以关闭用户体验计划以拒绝我们对前述信息的收集和使用。了解数据的管理方式,请参照统信软件隐私政策 (<a href="%1"> %1</a>)。</p> - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - 时间与格式 - - - - DatetimeWorker - - Authentication is required to change NTP server - 修改时间服务器需要认证 - - - - DefAppModule - - Default Applications - 默认程序 - - - - DefAppPlugin - - Webpage - 网页 - - - Mail - 邮件 - - - Text - 文本 - - - Music - 音乐 - - - Video - 视频 - - - Picture - 图片 - - - Terminal - 终端 - - - - dccV23::DetailInfoItem - - For more details, visit: - 有关本次更新的详细内容可访问: - - - - DisclaimersDialog - - Disclaimer - 《用户免责声明》 - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - 在使用人脸识别功能前,请注意以下事项: -1.您的设备可能会被容貌、外形与您相近的人或物品解锁。 -2.人脸识别的安全性低于数字密码、混合密码。 -3.在暗光、强光、逆光或角度过大等场景下,人脸识别的解锁成功率会有所降低。 -4.请勿将设备随意交给他人使用,避免人脸识别功能被恶意利用。 -5.除以上场景外,您需注意其他可能影响人脸识别功能正常使用的情况。 - -为更好使用人脸识别,录入面部数据时请注意以下事项: -1.请保证光线充足,避免阳光直射并避免其他人出现在录入的画面中。 -2.请注意录入数据时的面部状态,避免衣帽、头发、墨镜、口罩、浓妆等遮挡面部信息。 -3.请避免仰头、低头、闭眼或仅露出侧脸的情况,确保脸部正面清晰完整的出现在提示框内。 - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - “生物认证”是统信软件技术有限公司提供的一种对用户进行身份认证的功能。通过“生物认证”,将采集的生物识别数据与存储在设备本地的生物识别数据进行比对,并根据比对结果来验证用户身份。 -请您注意,统信软件不会收集或访问您的生物识别信息,此类信息将会存储在您的本地设备中。请您仅在您的个人设备中开启生物认证功能,并使用您本人的生物识别信息进行相关操作,并及时在该设备上禁用或清除他人的生物识别信息,否则由此给您带来的风险将由您承担。 -统信软件致力于研究与提高生物认证功能的安全性、精确性、与稳定性,但是,受限于环境、设备、技术等因素和风险控制等原因,我们暂时无法保证您一定能通过生物认证,请您不要将生物认证作为登录统信操作系统的唯一途径。若您在使用生物认证时有任何问题或建议的,可以通过系统内的“服务与支持”进行反馈。 - - - - Cancel - 取消 - - - Next - 下一步 - - - - DisclaimersItem - - I have read and agree to the - 我已阅读并同意 - - - Disclaimer - 《用户免责声明》 - - - - DockModuleObject - - Dock - 任务栏 - - - Multiple Displays - 多屏显示设置 - - - Show Dock - 任务栏位置 - - - Position - 位置 - - - Status - 状态 - - - Size - 大小 - - - Plugin Area - 插件区域 - - - Select which icons appear in the Dock - 选择显示在任务栏插件区域的图标 - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - 位置 - - - Keep shown - 一直显示 - - - Keep hidden - 一直隐藏 - - - Smart hide - 智能隐藏 - - - Small - - - - Large - - - - On screen where the cursor is - 跟随鼠标位置显示 - - - Only on main screen - 仅主屏显示 - - - Align center - 居中 - - - Align left - 靠左 - - - Alignment - 应用布局 - - - - FaceInfoDialog - - Enroll Face - 添加人脸数据 - - - Position your face inside the frame - 请确保您的面部全部显示在识别区域内 - - - - FaceWidget - - Edit - 编 辑 - - - Manage Faces - 人脸管理 - - - You can add up to 5 faces - 您最多可录入5个人脸数据 - - - Done - 完成 - - - Add Face - 添加人脸 - - - The name already exists - 该名称已存在 - - - Faceprint - 面纹 - - - - FaceidDetailWidget - - No supported devices found - 找不到可支持设备 - - - - FingerDetailWidget - - No supported devices found - 找不到可支持设备 - - - - FingerDisclaimer - - Add Fingerprint - 添加指纹 - - - Cancel - 取消 - - - Next - 下一步 - - - - FingerInfoWidget - - Place your finger - 放置手指 - - - Place your finger firmly on the sensor until you're asked to lift it - 请以手指压指纹收集器,然后根据提示抬起 - - - Scan the edges of your fingerprint - 录入边缘指纹 - - - Place the edges of your fingerprint on the sensor - 请以手指边缘压指纹收集器,然后根据提示抬起 - - - Lift your finger - 抬起手指 - - - Lift your finger and place it on the sensor again - 请抬起手指,再次按压 - - - Adjust the position to scan the edges of your fingerprint - 请调整按压区域,继续录入边缘指纹 - - - Lift your finger and do that again - 请抬起手指,再次按压 - - - Fingerprint added - 成功添加指纹 - - - - FingerWidget - - Edit - 编 辑 - - - Fingerprint Password - 指纹密码 - - - You can add up to 10 fingerprints - 您最多可录入10个指纹 - - - Done - 完成 - - - The name already exists - 该名称已存在 - - - Add Fingerprint - 添加指纹 - - - - GeneralModule - - General - 通用 - - - Balanced - 平衡模式 - - - Balance Performance - 性能模式 - - - High Performance - 高性能模式 - - - Power Saver - 节能模式 - - - Power Plans - 性能模式 - - - Power Saving Settings - 节能设置 - - - Auto power saving on low battery - 低电量时自动开启 - - - Decrease Brightness - 自动降低亮度 - - - Low battery threshold - 低电量阈值 - - - Auto power saving on battery - 使用电池时自动开启 - - - Wakeup Settings - 唤醒设置 - - - Unlocking is required to wake up the computer - 待机恢复时需要解锁 - - - Unlocking is required to wake up the monitor - 唤醒显示器时需要解锁 - - - - HostNameItem - - It cannot start or end with dashes - 计算机名不能以 - 开头结尾 - - - 1~63 characters please - 计算机名长度必须介于1到63个字符之间 - - - - InternalButtonItem - - Internal testing channel - 内测通道 - - - click here open the link - 点击这里打开链接 - - - - IrisDetailWidget - - No supported devices found - 找不到可支持设备 - - - - IrisWidget - - Edit - 编 辑 - - - Manage Irises - 虹膜管理 - - - You can add up to 5 irises - 您最多可录入5个虹膜数据 - - - Done - 完成 - - - Add Iris - 添加虹膜 - - - The name already exists - 该名称已存在 - - - Iris - 虹膜 - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright © 2011-%1 深度社区 - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright © 2019-%1 统信软件技术有限公司 - - - - MicrophonePage - - Input Device - 输入设备 - - - Automatic Noise Suppression - 噪音抑制 - - - Input Volume - 输入音量 - - - Input Level - 反馈音量 - - - - PersonalizationDesktopModule - - Desktop - 桌面 - - - Window - 窗口 - - - Window Effect - 窗口特效 - - - Window Minimize Effect - 最小化时效果 - - - Compact Display - 紧凑模式 - - - If enabled, more content is displayed in the window. - 开启后,窗口将显示更多内容 - - - Opacity - 不透明度调节 - - - Rounded Corner - 窗口圆角 - - - Scale - 缩放 - - - Magic Lamp - 魔灯 - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - 个性化 - - - - PersonalizationThemeList - - Cancel - 取消 - - - Save - 保存 - - - Light - 浅色 - - - Dark - 深色 - - - Auto - 自动 - - - Default - 默认 - - - - PersonalizationThemeModule - - Theme - 主题 - - - Appearance - 外观 - - - Accent Color - 活动用色 - - - Icon Settings - 图标设置 - - - Icon Theme - 图标主题 - - - Cursor Theme - 光标主题 - - - Text Settings - 文字设置 - - - Font Size - 字体大小 - - - Standard Font - 标准字体 - - - Monospaced Font - 等宽字体 - - - Light - 浅色 - - - Auto - 自动 - - - Dark - 深色 - - - - PersonalizationThemeWidget - - Light - 浅色 - General - /personalization/General - - - Dark - 深色 - General - /personalization/General - - - Auto - 自动 - General - /personalization/General - - - Default - 默认 - - - - PersonalizationWorker - - Custom - 自定义 - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - 连接蓝牙设备的PIN码为: - - - Cancel - 取消 - - - Confirm - 确定 - - - - PowerModule - - Power - 电源 - - - Battery low, please plug in - 电池电量低,请连接电源 - - - Battery critically low - 电池电量耗尽 - - - - PrivacyModule - - Privacy and Security - 隐私和安全 - - - - PrivacySecurityModel - - Camera - 图像设备 - - - Microphone - 麦克风 - - - User Folders - 用户文件夹 - - - Calendar - 日历 - - - Screen Capture - 屏幕截图 - - - - QObject - - Control Center - 控制中心 - - - , - - - - Error occurred when reading the configuration files of password rules! - 密码规则配置文件读取错误 - - - Auto adjust CPU operating frequency based on CPU load condition - 根据负载情况自动调整运行频率 - - - Aggressively adjust CPU operating frequency based on CPU load condition - 根据负载情况积极调整运行频率 - - - Be good to imporving performance, but power consumption and heat generation will increase - 有利于增加性能,会显著提升功耗和发热 - - - CPU always works under low frequency, will reduce power consumption - 始终低频率运行,可降低功耗 - - - Activated - 已激活 - - - View - 查看 - - - To be activated - 待激活 - - - Activate - 激活 - - - Expired - 已过期 - - - In trial period - 试用期 - - - Trial expired - 试用期过期 - - - Touch Screen Settings - 触控屏设置 - - - The settings of touch screen changed - 已变更触控屏设置 - - - Checking system versions, please wait... - 正在对系统版本进行ั验证,请耐心等待... - - - Leave - 退 出 - - - Cancel - 取消 - - - dde-control-center - 控制中心 - - - - RegionModule - - Region and Format - 区域与格式 - - - Country or Region - 国家或地区 - - - Area - 地区 - - - Format - 格式 - - - Provide localized services based on your region. - 根据您所在的地区为您提供本土化服务 - - - Select matching date and time formats based on language and region - 根据语言和区域选择匹配日期和时间格式 - - - Region format - 区域格式 - - - First day of week - 一周第一天 - - - Short date - 短日期 - - - Long date - 长日期 - - - Short time - 短时间 - - - Long time - 长时间 - - - Currency symbol - 货币符号 - - - Numbers - 数字 - - - Paper - 纸张 - - - Custom Format - 自定义格式 - - - Operating system and applications may provide you with local content based on your country and region. - 操作系统和应用可能会根据你所在的国家或地区向你提供本地内容 - - - Operating system and applications may set date and time formats based on regional formats. - 操作系统和某些应用会根据区域格式设置日期和时间格式 - - - - ResultItem - - Your system is not authorized, please activate first - 当前系统未授权,请激活后再更新 - - - Update successful - 升级成功 - - - Failed to update - 更新失败 - - - - SearchInput - - Search - 搜索 - - - - ServiceSettingsModule - - Apps can access your camera: - 请求使用相机权限的应用: - - - Apps can access your microphone: - 请求使用麦克风权限的应用: - - - Apps can access user folders: - 请求访问用户文件夹权限的应用: - - - Apps can access Calendar: - 请求访问日历权限的应用: - - - Apps can access Screen Capture: - 请求使用屏幕截图权限的应用: - - - No apps requested access to the camera - 暂无应用请求使用相机权限 - - - No apps requested access to the microphone - 暂无应用请求使用麦克风权限 - - - No apps requested access to user folders - 暂无应用请求访问用户文件夹权限 - - - No apps requested access to Calendar - 暂无应用请求访问日历权限 - - - No apps requested access to Screen Capture - 暂无应用请求使用屏幕截图权限 - - - - dccV23::SettingsHead - - Edit - 编 辑 - - - Done - 完成 - - - - SoundEffectsPage - - Sound Effects - 系统音效 - - - - SoundModel - - Boot up - 开机 - - - Shut down - 关机 - - - Log out - 注销 - - - Wake up - 唤醒 - - - Volume +/- - 音量调节 - - - Notification - 通知 - - - Low battery - 电量不足 - - - Send icon in Launcher to Desktop - 从启动器发送图标到桌面 - - - Empty Trash - 清空回收站 - - - Plug in - 电源接入 - - - Plug out - 电源拔出 - - - Removable device connected - 移动设备接入 - - - Removable device removed - 移动设备拔出 - - - Error - 错误提示 - - - - SoundModule - - Sound - 声音 - - - - SoundPlugin - - Output - 输出 - - - Auto pause - 插拔管理 - - - Whether the audio will be automatically paused when the current audio device is unplugged - 外设插拔时音频输出是否自动暂停 - - - Input - 输入 - - - Sound Effects - 系统音效 - - - Devices - 设备管理 - - - Input Devices - 输入设备 - - - Output Devices - 输出设备 - - - - SpeakerPage - - Output Device - 输出设备 - - - Mode - 模式 - - - Output Volume - 输出音量 - - - Volume Boost - 音量增强 - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - 音量大于100%时可能会导致音效失真,同时损害您的音频输出设备 - - - Left/Right Balance - 左/右平衡 - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - 时间设置 - - - Time - 时间 - - - Auto Sync - 自动同步配置 - - - Reset - 重置 - - - Save - 保存 - - - Server - 服务器 - - - Address - 地址 - - - Required - 必填 - - - Customize - 自定义 - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - 取消 - - - Confirm - 确定 - - - Add Timezone - 添加时区 - - - Add - 添加 - - - Change Timezone - 修改系统时区 - - - - TimeoutDialog - - Save the display settings? - 是否要保存显示设置? - - - Settings will be reverted in %1s. - 如无任何操作将在%1秒后还原。 - - - Revert - 还原 - - - Save - 保存 - - - - TimezoneItem - - Tomorrow - 明天 - - - Yesterday - 昨天 - - - Today - 今天 - - - %1 hours earlier than local - 比本地早了%1个小时 - - - %1 hours later than local - 比本地晚了%1个小时 - - - - TimezoneModule - - Timezone List - 时区列表 - - - System Timezone - 系统时区 - - - Add Timezone - 添加时区 - - - - TreeCombox - - Collaboration Settings - 协同设置 - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - 当前用户未绑定Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - 重置密码功能需对您的Union ID认证后才能进行,请点击“去绑定”完成相关设置后,再重置密码。 - - - Cancel - 取消 - - - Go to Link - 去绑定 - - - - UnknownUpdateItem - - Release date: - 发布时间: - - - - UpdateCtrlWidget - - Check Again - 重新检查更新 - - - Update failed: insufficient disk space - 当前硬盘空间不足,无法进行系统更新 - - - Dependency error, failed to detect the updates - 依赖错误,检测更新失败 - - - Restart the computer to use the system and the applications properly - 为了您能够正常的使用系统和应用,更新后请重新启动 - - - Network disconnected, please retry after connected - 网络断开,请联网后重试 - - - Your system is not authorized, please activate first - 当前系统未授权,请激活后再更新 - - - This update may take a long time, please do not shut down or reboot during the process - 本次更新可能会用时较长,更新完成前请不要关机或重启 - - - Updates Available - 检测到有更新可用 - - - Updating... - 更新中... - - - Download Updates - 下载更新 - - - Last checking time: - 上次检查更新时间: - - - Your system is up to date - 您的系统已经是最新的 - - - Check for Updates - 检查更新 - - - Checking for updates, please wait... - 检查更新中,请稍候... - - - The newest system installed, restart to take effect - 您已安装最新版本,重启生效! - - - %1% downloaded (Click to pause) - 已下载%1%(点击暂停) - - - %1% downloaded (Click to continue) - 已下载%1%(点击继续) - - - Your battery is lower than 50%, please plug in to continue - 您的电池电量少于50%,请插入电源后继续 - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - 请确保重启后有充足的电源,并不要关机或者拔出电源 - - - Current Edition - 当前版本 - - - Size - 下载大小 - - - Cancel - 取消 - - - Update Now - 立即更新 - - - The backup update function is currently disabled. If the upgrade fails, the system cannot be rolled back! - 当前已关闭备份更新功能,升级失败系统则无法回退! - - - - UpdateModule - - Updates - 更新 - - - - UpdatePlugin - - Check for Updates - 检查更新 - - - - UpdateSettingItem - - Insufficient disk space - 磁盘空间不足 - - - Update failed: insufficient disk space - 当前硬盘空间不足,无法进行系统更新 - - - Update failed - 更新失败 - - - Network error - 网络错误 - - - Network error, please check and try again - 网络异常,请检查后重试 - - - Packages error - 安装包错误 - - - Packages error, please try again - 安装包错误,请重试 - - - Dependency error - 依赖错误 - - - Unmet dependencies - 依赖关系不满足 - - - The newest system installed, restart to take effect - 您已安装最新版本,重启生效! - - - Waiting - 等待中 - - - Backing up - 备份中 - - - System backup failed - 系统备份失败 - - - System backup failed, space is full - 系统空间不足,备份失败 - - - Release date: - 发布时间: - - - Server - 服务器 - - - Desktop - 桌面 - - - Version - 版本号 - - - - UpdateSettingsModule - - Update Settings - 更新设置 - - - System - 系统 - - - Security Updates Only - 仅安全性更新 - - - Switch it on to only update security vulnerabilities and compatibility issues - 开启“仅安全性更新”将只会进行安全漏洞和兼容性相关的更新 - - - Third-party Repositories - 第三方仓库 - - - linglong update - 玲珑更新 - - - Linglong Package Update - 玲珑软件更新 - - - If there is update for linglong package, system will update it for you - 当检测到玲珑软件版本更新时系统将自动为你进行软件更新 - - - Other settings - 其他设置 - - - Auto Check for Updates - 自动检查 - - - Auto Download Updates - 自动下载 - - - Switch it on to automatically download the updates in wireless or wired network - 开启“下载更新”,会在有无线网络和有线网络的情况下自动下载 - - - Auto Install Updates - 自动安装 - - - Backup updates - 备份更新 - - - Ensuring normal system rollback in case of upgrade failure - 升级失败可保证系统正常回退 - - - Updates Notification - 更新提醒 - - - Clear Package Cache - 清除软件包缓存 - - - Smart Mirror Switch - 智能镜像源 - - - Switch it on to connect to the quickest mirror site automatically - 开启智能镜像源会自动匹配响应最快的镜像源 - - - Mirror List - 镜像源列表 - - - Updates from Internal Testing Sources - 从内测通道升级 - - - internal update - 内测更新 - - - Join the internal testing channel to get deepin latest updates - 加入deepin内测通道,以获取deepin最新更新内容 - - - System Updates - 检查系统更新 - - - Security Updates - 检查安全更新 - - - Install updates automatically when the download is complete - 下载完成后会自动进行安装 - - - Install "%1" automatically when the download is complete - “%1”下载完成后会自动进行安装 - - - - UpdateWidget - - Current Edition - 当前版本 - - - - dccV23::update::MirrorSourceItem - - Untested - 未检测 - - - Timeout - 超时 - - - Slow - - - - Medium - - - - Fast - - - - - dccV23::update::MirrorsWidget - - Mirror List - 镜像源列表 - - - Test Speed - 测速 - - - Untested - 未检测 - - - Retest - 重新测速 - - - - UpdateWorker - - System Updates - 检查系统更新 - - - Fixed some known bugs and security vulnerabilities - 修复部分已知缺陷和安全漏洞 - - - Security Updates - 检查安全更新 - - - Third-party Repositories - 第三方仓库 - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - 退出内测通道可能是不安全的,您确定退出吗? - - - Your are safe to leave the internal testing channel - 您可以安全退出内测通道 - - - Cannot find machineid - 找不到机器码 - - - Cannot Uninstall package - 不能卸载包 - - - Error when exit testingChannel - 在退出内测通道时候有错误 - - - try to manually uninstall package - 尝试手动卸载包 - - - Cannot install package - 无法安装包 - - - - UseBatteryModule - - On Battery - 使用电池 - - - Never - 从不 - - - Shut down - 关机 - - - Suspend - 待机 - - - Hibernate - 休眠 - - - Turn off the monitor - 关闭显示器 - - - Do nothing - 无任何操作 - - - 1 Minute - 1 分钟 - - - %1 Minutes - %1 分钟 - - - 1 Hour - 1 小时 - - - Screen and Suspend - 屏幕和待机 - - - Turn off the monitor after - 关闭显示器 - - - Lock screen after - 自动锁屏 - - - Computer suspends after - 进入待机 - - - Computer will suspend after - 电脑进入待机模式 - - - When the lid is closed - 笔记本合盖时 - - - When the power button is pressed - 按电源按钮时 - - - Low Battery - 低电量管理 - - - Low battery notification - 低电量通知 - - - Low battery level - 低电量 - - - Auto suspend battery level - 自动待机电量 - - - Battery Management - 电池管理 - - - Display remaining using and charging time - 显示剩余使用时间及剩余充电时间 - - - Maximum capacity - 最大容量 - - - Show the shutdown Interface - 进入关机界面 - - - - UseElectricModule - - Plugged In - 使用电源 - - - 1 Minute - 1 分钟 - - - %1 Minutes - %1 分钟 - - - 1 Hour - 1 小时 - - - Never - 从不 - - - Screen and Suspend - 屏幕和待机 - - - Turn off the monitor after - 关闭显示器 - - - Lock screen after - 自动锁屏 - - - Computer suspends after - 进入待机 - - - When the lid is closed - 笔记本合盖时 - - - When the power button is pressed - 按电源按钮时 - - - Shut down - 关机 - - - Suspend - 待机 - - - Hibernate - 休眠 - - - Turn off the monitor - 关闭显示器 - - - Show the shutdown Interface - 进入关机界面 - - - Do nothing - 无任何操作 - - - - WacomModule - - Drawing Tablet - 数位板 - - - Mode - 模式 - - - Pressure Sensitivity - 压感 - - - Pen - - - - Mouse - 鼠标 - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - 控制中心提供操作系统的所有设置选项。 - - - - updateControlPanel - - Downloading - 下载中 - - - Waiting - 等待中 - - - Installing - 安装中 - - - Backing up - 备份中 - - - Download and install - 下载并安装 - - - Learn more - 了解详情 - - - diff --git a/dcc-old/translations/dde-control-center_zh_HK.ts b/dcc-old/translations/dde-control-center_zh_HK.ts deleted file mode 100644 index 5dbda8d73f..0000000000 --- a/dcc-old/translations/dde-control-center_zh_HK.ts +++ /dev/null @@ -1,3995 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - 允許藍牙設備可被發現 - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - 啟用藍牙尋找附近設備(揚聲器、鍵盤、鼠標) - - - My Devices - 我的設備 - - - Other Devices - 其他設備 - - - Show Bluetooth devices without names - 顯示沒有名稱的藍牙設備 - - - Connect - 連接 - - - Disconnect - 斷開連接 - - - Rename - 重命名 - - - Send Files - 發送文件 - - - Ignore this device - 忽略此設備 - - - Connecting - 正在連接 - - - Disconnecting - 正在斷開 - - - - AddButtonWidget - - Add Application - 添加默認程序 - - - Open Desktop file - 打開Desktop文件 - - - Apps (*.desktop) - 應用程式(*.desktop) - - - All files (*) - 所有文件(*) - - - - AddFaceInfoDialog - - Enroll Face - 添加人臉數據 - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - 請確保五官清晰可見,避免佩戴帽子、墨鏡、口罩等物件,保證光線充足,避免陽光直射,以提高錄入成功率 - - - Cancel - 取消 - - - Next - 下一步 - - - Face enrolled - 人臉錄入完成 - - - Use your face to unlock the device and make settings later - 使用人臉數據解鎖您的設備,之後還可進行更多設定 - - - Done - 完成 - - - Failed to enroll your face - 人臉錄入失敗 - - - Try Again - 重新錄入 - - - Close - 關 閉 - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - 添加虹膜數據 - - - Cancel - 取消 - - - Next - 下一步 - - - Iris enrolled - 虹膜錄入已完成 - - - Done - 完成 - - - Failed to enroll your iris - 虹膜錄入失敗 - - - Try Again - 重新錄入 - - - - AuthenticationInfoItem - - No more than 15 characters - 不得超過15個字符 - - - Use letters, numbers and underscores only, and no more than 15 characters - 只能由字母、數字、中文、下劃線組成,且不超過15個字符 - - - Use letters, numbers and underscores only - 只能由字母、數字、中文、下劃線組成 - - - - AuthenticationModule - - Biometric Authentication - 生物認證 - - - - AuthenticationPlugin - - Fingerprint - 指紋 - - - Face - 人臉 - - - Iris - 虹膜 - - - - BluetoothDeviceModel - - Connected - 已連接 - - - Not connected - 未連接 - - - - BluetoothModule - - Bluetooth - 藍牙 - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - 指紋1 - - - Fingerprint2 - 指紋2 - - - Fingerprint3 - 指紋3 - - - Fingerprint4 - 指紋4 - - - Fingerprint5 - 指紋5 - - - Fingerprint6 - 指紋6 - - - Fingerprint7 - 指紋7 - - - Fingerprint8 - 指紋8 - - - Fingerprint9 - 指紋9 - - - Fingerprint10 - 指紋10 - - - Scan failed - 指紋錄入失敗 - - - The fingerprint already exists - 指紋已存在 - - - Please scan other fingers - 請使用其他手指錄入 - - - Unknown error - 未知錯誤 - - - Scan suspended - 指紋錄入被中斷 - - - Cannot recognize - 無法識別 - - - Moved too fast - 接觸時間短 - - - Finger moved too fast, please do not lift until prompted - 接觸時間短,驗證時請勿移動手指 - - - Unclear fingerprint - 圖像模糊 - - - Clean your finger or adjust the finger position, and try again - 請清潔手指或調整觸摸位置,再次按壓指紋識別器 - - - Already scanned - 圖像重複 - - - Adjust the finger position to scan your fingerprint fully - 請調整手指按壓區域以錄入更多指紋 - - - Finger moved too fast. Please do not lift until prompted - 指紋採集間隙,請勿移動手指,直到提示您抬起 - - - Lift your finger and place it on the sensor again - 請抬起手指,再次按壓 - - - Position your face inside the frame - 請確保您的面部全部顯示在識別區域內 - - - Face enrolled - 人臉錄入完成 - - - Position a human face please - 請使用人類面容 - - - Keep away from the camera - 請遠離鏡頭 - - - Get closer to the camera - 請靠近鏡頭 - - - Do not position multiple faces inside the frame - 請不要多人入鏡 - - - Make sure the camera lens is clean - 請確保鏡頭清潔 - - - Do not enroll in dark, bright or backlit environments - 請避免在暗光、強光、逆光環境下操作 - - - Keep your face uncovered - 請保持面部無遮擋 - - - Scan timed out - 錄入超時 - - - Device crashed, please scan again! - 錄入設備崩潰,請重新錄入! - - - Cancel - 取消 - - - - CooperationSettingsDialog - - Collaboration Settings - 協同設置 - - - Share mouse and keyboard - 共享鼠標和鍵盤 - - - Share your mouse and keyboard across devices - 開啟後支持在協同設備間共享鼠標和鍵盤 - - - Share clipboard - 剪貼板共享 - - - Storage path for shared files - 共享文件夾 - - - Share the copied content across devices - 開啟後支持在協同設備間共享複製內容 - - - Cancel - button - 取 消 - - - Confirm - button - 確 定 - - - - dccV23::AccountSpinBox - - Always - 長期有效 - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - 用戶名 - - - Change Password - 修改密碼 - - - Delete User - - - - User Type - - - - Auto Login - 自動登錄 - - - Login Without Password - 無密碼登錄 - - - Validity Days - 密碼有效天數 - - - Group - 用戶組 - - - The full name is too long - 名稱過長 - - - Standard User - 標準用戶 - - - Administrator - 管理員 - - - Reset Password - 重置密碼 - - - The full name has been used by other user accounts - 全名與其他帳戶的全名/用戶名重複 - - - Full Name - 設置全名 - - - Go to Settings - 前往設置 - - - Cancel - 取消 - - - OK - 確定 - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - 只允許一個帳戶開啟自動登錄,請先關閉%1帳戶的自動登錄,再進行操作 - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - 您的主機成功退出了域伺服器 - - - Your host joins the domain server successfully - 您的主機成功加入了域伺服器 - - - Your host failed to leave the domain server - 您的主機退出域伺服器失敗 - - - Your host failed to join the domain server - 您的主機加入域伺服器失敗 - - - AD domain settings - AD域設置 - - - Password not match - 密碼不一致 - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - 允許來自%1的通知,可在螢幕中顯示消息橫幅,也可在通知中心查看歷史未讀消息。 - - - Play a sound - 通知時提示聲音 - - - Show messages on lockscreen - 鎖定螢幕時顯示消息 - - - Show in notification center - 在通知中心顯示 - - - Show message preview - 顯示消息預覽 - - - - dccV23::AvatarListDialog - - Person - 人物 - - - Animal - 動物 - - - Illustration - 創意插圖 - - - Expression - 表情符號 - - - Custom Picture - 自定義圖片 - - - Cancel - 取消 - - - Save - 保存 - - - - dccV23::AvatarListFrame - - Dimensional Style - 立體風格 - - - Flat Style - 平面風格 - - - - dccV23::AvatarListView - - Images - 圖片 - - - - dccV23::BootWidget - - Updating... - 更新中... - - - Startup Delay - 啟動延時 - - - Theme - 主題 - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - 您可以點擊菜單改變默認啟動項,也可以拖拽圖片到窗口改變背景圖片 - - - Click the option in boot menu to set it as the first boot - 您可以點擊菜單改變默認啟動項 - - - Switch theme on to view it in boot menu - 開啟主題後您可以在開機時看到主題背景 - - - GRUB Authentication - grub驗證 - - - GRUB password is required to edit its configuration - 開啟後進入grub編輯需要密碼 - - - Change Password - 修改密碼 - - - Boot Menu - 啟動菜單 - - - Change GRUB password - 修改grub驗證密碼 - - - Username: - 用戶名: - - - root - root - - - New password: - 新密碼: - - - Repeat password: - 重複密碼: - - - Required - 必填 - - - Cancel - button - 取消 - - - Confirm - button - 確定 - - - Password cannot be empty - 密碼不能為空 - - - Passwords do not match - 密碼不一致 - - - - dccV23::BrightnessWidget - - Brightness - 亮度 - - - Color Temperature - 色溫 - - - Auto Brightness - 自動調節亮度 - - - Night Shift - 自動調節色溫 - - - The screen hue will be auto adjusted according to your location - 通過獲取地理位置來輔助系統實現自動調節螢幕顏色偏色 - - - Change Color Temperature - 手動調節 - - - Cool - 較冷 - - - Warm - 較暖 - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - 電腦協同設置 - - - PC Collaboration - 電腦協同 - - - Connect to - 連接設備 - - - Select a device for collaboration - 請選擇協同設備 - - - Device Orientation - 連接方向 - - - On the top - 螢幕上方 - - - On the right - 螢幕右側 - - - On the bottom - 螢幕下方 - - - On the left - 螢幕左側 - - - My Devices - 我的設備 - - - Other Devices - 其他設備 - - - - dccV23::CommonInfoPlugin - - General Settings - 通用 - - - Boot Menu - 啟動菜單 - - - Developer Mode - 開發者模式 - - - User Experience Program - 用戶體驗計劃 - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - 同意並加入用戶體驗計劃 - - - The Disclaimer of Developer Mode - 開發者模式免責聲明 - - - Agree and Request Root Access - 同意並進入開發者模式 - - - Failed to get root access - 進入開發者模式失敗 - - - Please sign in to your Union ID first - 請先登錄Union ID - - - Cannot read your PC information - 無法獲取硬件訊息 - - - No network connection - 無網絡連接 - - - Certificate loading failed, unable to get root access - 證書加載失敗,無法進入開發者模式 - - - Signature verification failed, unable to get root access - 簽名驗證失敗,無法進入開發者模式 - - - - dccV23::CreateAccountPage - - Group - 用戶組 - - - Cancel - 取消 - - - Create - 創建 - - - New User - - - - User Type - - - - Username - 用戶名 - - - Full Name - 全名 - - - Password - 請輸入密碼 - - - Repeat Password - 重複密碼 - - - Password Hint - 密碼提示 - - - The full name is too long - 名稱過長 - - - Passwords do not match - 密碼不一致 - - - Standard User - 標準用戶 - - - Administrator - 管理員 - - - Customized - 自定義用戶 - - - Required - 必填 - - - optional - 選填 - - - The hint is visible to all users. Do not include the password here. - 密碼提示對所有人可見,切勿包含具體密碼訊息 - - - Policykit authentication failed - 認證失敗 - - - Username must be between 3 and 32 characters - 用戶名長度必須介於3到32個字符之間 - - - The first character must be a letter or number - 首字符必須為字母或數字 - - - Your username should not only have numbers - 用戶名不能只包含數字 - - - The username has been used by other user accounts - 用戶名與其他帳戶的全名/用戶名重複 - - - The full name has been used by other user accounts - 全名與其他帳戶的全名/用戶名重複 - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - 您還沒有上傳過頭像,可點擊或拖搜上傳圖片 - - - Uploaded file type is incorrect, please upload again - 圖片 - - - Images - 圖片 - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - 添加自定義快捷鍵 - - - Name - 名稱 - - - Required - 必填 - - - Command - 命令 - - - Cancel - 取消 - - - Add - 添加 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - 此快捷鍵與%1衝突,點擊添加使這個快捷鍵立即生效 - - - - dccV23::CustomEdit - - Required - 必填 - - - Cancel - 取消 - - - Save - 保存 - - - Shortcut - 快捷鍵 - - - Name - 名稱 - - - Command - 命令 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - 此快捷鍵與%1衝突,點擊添加使這個快捷鍵立即生效 - - - - dccV23::CustomItem - - Shortcut - 快捷鍵 - - - Please enter a shortcut - 請輸入快捷鍵 - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - 有關本次更新的詳細內容可訪問: - - - - dccV23::DeveloperModeDialog - - Request Root Access - 進入開發者模式 - - - Online - 在線啟動 - - - Offline - 離線啟動 - - - Please sign in to your Union ID first and continue - 進入開發者模式需要登錄Union ID - - - Next - 下一步 - - - Export PC Info - 導出機器訊息 - - - Import Certificate - 導入證書 - - - 1. Export your PC information - 1. 導出機器訊息 - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. 前往https://www.chinauos.com/developMode 下載離線證書 - - - 3. Import the certificate - 3. 導入證書 - - - - dccV23::DeveloperModeWidget - - Request Root Access - 進入開發者模式 - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - 進入開發者模式後可以獲得root使用權限,安裝和運行非商店簽名應用,但同時也可能導致系統完整性遭到破壞,請謹慎使用。 - - - The feature is not available at present, please activate your system first - 當前系統未啟用,暫無法使用該功能 - - - Failed to get root access - 進入開發者模式失敗 - - - Please sign in to your Union ID first - 請先登錄Union ID - - - Cannot read your PC information - 無法獲取硬件訊息 - - - No network connection - 無網絡連接 - - - Certificate loading failed, unable to get root access - 證書加載失敗,無法進入開發者模式 - - - Signature verification failed, unable to get root access - 簽名驗證失敗,無法進入開發者模式 - - - To make some features effective, a restart is required. Restart now? - 開發者模式部分功能需要重啟後生效,是否立即重啟? - - - Cancel - 取消 - - - Restart Now - 現在重啟 - - - Root Access Allowed - 已進入開發者模式 - - - - dccV23::DisplayPlugin - - Display - 顯示 - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - 雙擊測試 - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - 鍵盤設置 - - - Repeat Delay - 重複延遲 - - - Short - - - - Long - - - - Repeat Rate - 重複速度 - - - Slow - - - - Fast - - - - Test here - 請在此測試 - - - Numeric Keypad - 啟用數字鍵盤 - - - Caps Lock Prompt - 大寫鎖定提示 - - - - dccV23::GeneralSettingWidget - - Left Hand - 左手模式 - - - Disable touchpad while typing - 輸入時禁用觸控板 - - - Scrolling Speed - 滾動速度 - - - Double-click Speed - 雙擊速度 - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - 鍵盤佈局 - - - Edit - 編 輯 - - - Add Keyboard Layout - 添加鍵盤佈局 - - - Done - 完成 - - - - dccV23::KeyboardLayoutDialog - - Cancel - 取消 - - - Add - 添加 - - - Add Keyboard Layout - 添加鍵盤佈局 - - - - dccV23::KeyboardPlugin - - Keyboard and Language - 鍵盤和語言 - - - Keyboard - 鍵盤 - - - Keyboard Settings - 鍵盤設置 - - - keyboard Layout - 鍵盤佈局 - - - Keyboard Layout - 鍵盤佈局 - - - Language - 語言 - - - Shortcuts - 快捷鍵 - - - - dccV23::MainWindow - - Help - 幫助 - - - - dccV23::ModifyPasswdPage - - Change Password - 修改密碼 - - - Reset Password - 重置密碼 - - - Resetting the password will clear the data stored in the keyring. - 重設密碼將會清除密鑰環內已存儲的數據 - - - Current Password - 當前密碼 - - - Forgot password? - 忘記密碼? - - - New Password - 新密碼 - - - Repeat Password - 重複密碼 - - - Password Hint - 密碼提示 - - - Cancel - 取消 - - - Save - 保存 - - - Passwords do not match - 密碼不一致 - - - Required - 必填 - - - Optional - 選填 - - - Password cannot be empty - 密碼不能為空 - - - The hint is visible to all users. Do not include the password here. - 密碼提示對所有人可見,切勿包含具體密碼訊息 - - - Wrong password - 密碼錯誤 - - - New password should differ from the current one - 新密碼和舊密碼不能相同 - - - System error - 系統錯誤 - - - Network error - 網絡錯誤 - - - - dccV23::MonitorControlWidget - - Identify - 識別 - - - Gather Windows - 集合窗口 - - - Screen rearrangement will take effect in %1s after changes - 螢幕拼接將在修改完成%1s後生效 - - - - dccV23::MousePlugin - - Mouse - 鼠標 - - - General - 通用 - - - Touchpad - 觸控板 - - - TrackPoint - 指點杆 - - - - dccV23::MouseSettingWidget - - Pointer Speed - 指針速度 - - - Mouse Acceleration - 鼠標加速 - - - Disable touchpad when a mouse is connected - 插入鼠標時禁用觸控板 - - - Natural Scrolling - 自然滾動 - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - 多屏顯示設置 - /display/Multiple Displays - - - Mode - 模式 - /display/Mode - - - Main Screen - 主螢幕 - /display/Main Scree - - - Duplicate - 複製 - - - Extend - 擴展 - - - Only on %1 - 僅%1屏 - - - - dccV23::NotificationModule - - AppNotify - 應用通知 - - - Notification - 通知 - - - SystemNotify - 系統通知 - - - - dccV23::PalmDetectSetting - - Palm Detection - 掌壓檢測 - - - Minimum Contact Surface - 最小接觸面 - - - Minimum Pressure Value - 最小壓力值 - - - Disable the option if touchpad doesn't work after enabled - 開啟後若導致觸控板不可用,請關閉此選項即可 - - - - dccV23::PluginManager - - following plugins load failed - 以下插件加載失敗 - - - plugins cannot loaded in time - 插件沒有及時加載 - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - 私隱政策 - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/zh/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-hk - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>統信軟件非常重視您的私隱。因此我們制定了涵蓋如何收集、使用、共享、轉讓、公開披露以及存儲您的訊息的私隱政策。</p><p>您可以<a href="%1">點擊此處</a>查看我們最新的私隱政策和/或通過訪問 <a href="%1">%1</a>在線查看。請您務必認真閱讀、充分理解我們針對客戶私隱的做法,如果有任何疑問,請聯繫我們:support@uniontech.com。</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - 密碼不能為空 - - - Password must have at least %1 characters - 密碼長度不能少於%1個字符 - - - Password must be no more than %1 characters - 密碼長度不能超過%1個字符 - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - 密碼只能由英文(區分大小寫)、數字或特殊符號(~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/)組成 - - - No more than %1 palindrome characters please - 回文字符長度不超過%1位 - - - No more than %1 monotonic characters please - 單調性字符不超過%1位 - - - No more than %1 repeating characters please - 重複字符不超過%1位 - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - 密碼必須由大寫字母、小寫字母、數字、符號(~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/)三種類型組成 - - - Password must not contain more than 4 palindrome characters - 密碼不得含有連續4個以上的回文字符 - - - Do not use common words and combinations as password - 密碼不能是常見單詞及組合 - - - Create a strong password please - 密碼過於簡單,請增加密碼複雜度 - - - It does not meet password rules - 密碼不符合安全要求 - - - - dccV23::RefreshRateWidget - - Refresh Rate - 刷新率 - - - Hz - 赫茲 - - - Recommended - 推薦 - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - 您確定要刪除此帳戶嗎? - - - Delete account directory - 刪除帳戶目錄 - - - Cancel - 取消 - - - Delete - 刪除 - - - - dccV23::ResolutionWidget - - Resolution - 解像度 - /display/Resolution - - - Resize Desktop - 桌面顯示 - /display/Resize Desktop - - - Default - 默認 - - - Fit - 適應 - - - Stretch - 拉伸 - - - Center - 居中 - - - Recommended - 推薦 - - - - dccV23::RotateWidget - - Rotation - 方向 - /display/Rotation - - - Standard - 標準 - - - 90° - 90度 - - - 180° - 180度 - - - 270° - 270度 - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - 當前螢幕僅支持1倍縮放 - - - Display Scaling - 螢幕縮放 - - - - dccV23::SearchInput - - Search - 搜索 - - - - dccV23::SecondaryScreenDialog - - Brightness - 亮度 - - - - dccV23::SecurityLevelItem - - Weak - 強度低 - - - Medium - 強度中 - - - Strong - 強度高 - - - - dccV23::SecurityQuestionsPage - - Security Questions - 安全問題 - - - These questions will be used to help reset your password in case you forget it. - 忘記密碼時,可使用安全問題重置密碼。 - - - Security question 1 - 安全問題1 - - - Security question 2 - 安全問題2 - - - Security question 3 - 安全問題3 - - - Cancel - 取消 - - - Confirm - 確定 - - - Keep the answer under 30 characters - 答案請保持在30個字符以內 - - - Do not choose a duplicate question please - 不能選擇重複的問題 - - - Please select a question - 請選擇安全問題 - - - What's the name of the city where you were born? - 您出生城市的名稱是甚麼? - - - What's the name of the first school you attended? - 您的母校名稱是甚麼? - - - Who do you love the most in this world? - 您最愛的人是誰? - - - What's your favorite animal? - 您最喜歡的動物是甚麼? - - - What's your favorite song? - 您最喜歡的音樂是甚麼? - - - What's your nickname? - 您的綽號是甚麼? - - - It cannot be empty - 內容不能為空 - - - - dccV23::SettingsHead - - Edit - 編 輯 - - - Done - 完成 - - - - dccV23::ShortCutSettingWidget - - System - 系統管理 - - - Window - 窗口 - - - Workspace - 工作區 - - - Assistive Tools - 輔助功能 - - - Custom Shortcut - 自定義快捷鍵 - - - Restore Defaults - 恢復默認 - - - Shortcut - 快捷鍵 - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - 請重新設置快捷鍵 - - - Cancel - 取消 - - - Replace - 替換 - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - 此快捷鍵與%1衝突,點擊替換使這個快捷鍵立即生效 - - - - dccV23::ShortcutItem - - Enter a new shortcut - 請輸入新的快捷鍵 - - - - dccV23::SystemInfoModel - - available - 可用 - - - - dccV23::SystemInfoModule - - About This PC - 關於本機 - - - Computer Name - 計算機名 - - - systemInfo - 系統訊息 - - - OS Name - 產品名稱 - - - Version - 版本號 - - - Edition - 版本 - - - Type - 類型 - - - Authorization - 版本授權 - - - Processor - 處理器 - - - Memory - 內存 - - - Graphics Platform - 圖形平台 - - - Kernel - 內核版本 - - - Agreements and Privacy Policy - 協議與私隱政策 - - - Edition License - 版本協議 - - - End User License Agreement - 最終用戶許可協議 - - - Privacy Policy - 私隱政策 - - - %1-bit - %1位 - - - - dccV23::SystemInfoPlugin - - System Info - 系統訊息 - - - - dccV23::SystemLanguageSettingDialog - - Cancel - 取消 - - - Add - 添加 - - - Add System Language - 添加系統語言 - - - - dccV23::SystemLanguageWidget - - Edit - 編 輯 - - - Language List - 語言列表 - - - Add Language - 添加語言 - - - Done - 完成 - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - 勿擾模式 - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - 所有應用消息橫幅將會被隱藏,通知聲音將會靜音,您可在通知中心查看所有消息。 - - - When the screen is locked - 在屏幕鎖屏時 - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - 觸控屏 - - - Select your touch screen when connected or set it here. - 您可在接入觸控屏時設置所在螢幕,或在此進行調整。 - - - Confirm - 確定 - - - Cancel - 取消 - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - 指針速度 - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - 加入用戶體驗計劃 - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/zh/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-hk - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>開啟用戶體驗計劃視為您授權我們收集和使用您的設備及系統訊息,以及應用軟件訊息,您可以關閉用戶體驗計劃以拒絕我們對前述訊息的收集和使用。詳細說明請參照Deepin私隱政策 (<a href="%1"> %1</a>)。</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>開啟用戶體驗計劃視為您授權我們收集和使用您的設備及系統訊息,以及應用軟件訊息,您可以關閉用戶體驗計劃以拒絕我們對前述訊息的收集和使用。了解數據的管理方式,請參照統信軟件私隱政策 (<a href="%1"> %1</a>)。</p> - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - 修改時間伺服器需要認證 - - - - DefAppModule - - Default Applications - 默認程序 - - - - DefAppPlugin - - Webpage - 網頁 - - - Mail - 郵件 - - - Text - 文本 - - - Music - 音樂 - - - Video - 影片 - - - Picture - 圖片 - - - Terminal - 終端 - - - - DisclaimersDialog - - Disclaimer - 《用戶免責聲明》 - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - 在使用人臉識別功能前,請注意以下事項: -1.您的設備可能會被容貌、外形與您相近的人或物品解鎖。 -2.人臉識別的安全性低於數字密碼、混合密碼。 -3.在暗光、強光、逆光或角度過大等場景下,人臉識別的解鎖成功率會有所降低。 -4.請勿將設備隨意交給他人使用,避免人臉識別功能被惡意利用。 -5.除以上場景外,您需注意其他可能影響人臉識別功能正常使用的情況。 - -為更好使用人臉識別,錄入面部數據時請注意以下事項: -1.請保證光線充足,避免陽光直射並避免其他人出現在錄入的畫面中。 -2.請注意錄入數據時的面部狀態,避免衣帽、頭髮、墨鏡、口罩、濃妝等遮擋面部訊息。 -3.請避免仰頭、低頭、閉眼或僅露出側臉的情況,確保臉部正面清晰完整的出現在提示框內。 - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - “生物認證”是統信軟件技術有限公司提供的一種對用戶進行身份認證的功能。通過“生物認證”,將採集的生物識別數據與存儲在設備本地的生物識別數據進行比對,並根據比對結果來驗證用戶身份。 -請您注意,統信軟件不會收集或訪問您的生物識別訊息,此類訊息將會存儲在您的本地設備中。請您僅在您的個人設備中開啟生物認證功能,並使用您本人的生物識別訊息進行相關操作,並及時在該設備上禁用或清除他人的生物識別訊息,否則由此給您帶來的風險將由您承擔。 -統信軟件致力於研究與提高生物認證功能的安全性、精確性、與穩定性,但是,受限於環境、設備、技術等因素和風險控制等原因,我們暫時無法保證您一定能通過生物認證,請您不要將生物認證作為登錄統信操作系統的唯一途徑。若您在使用生物認證時有任何問題或建議的,可以通過系統內的“服務與支持”進行反饋。 - - - - Cancel - 取消 - - - Next - 下一步 - - - - DisclaimersItem - - I have read and agree to the - 我已閱讀並同意 - - - Disclaimer - 《用戶免責聲明》 - - - - DockModuleObject - - Dock - 任務欄 - - - Multiple Displays - 多屏顯示設置 - - - Show Dock - 任務欄位置 - - - Mode - 模式 - - - Position - 位置 - - - Status - 狀態 - - - Show recent apps in Dock - 顯示最近使用應用 - - - Size - 大小 - - - Plugin Area - 插件區域 - - - Select which icons appear in the Dock - 選擇顯示在任務欄插件區域的圖標 - - - Fashion mode - 時尚模式 - - - Efficient mode - 高效模式 - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - 位置 - - - Keep shown - 一直顯示 - - - Keep hidden - 一直隱藏 - - - Smart hide - 智能隱藏 - - - Small - - - - Large - - - - On screen where the cursor is - 跟隨鼠標位置顯示 - - - Only on main screen - 僅主屏顯示 - - - - FaceInfoDialog - - Enroll Face - 添加人臉數據 - - - Position your face inside the frame - 請確保您的面部全部顯示在識別區域內 - - - - FaceWidget - - Edit - 編 輯 - - - Manage Faces - 人臉管理 - - - You can add up to 5 faces - 您最多可錄入5個人臉數據 - - - Done - 完成 - - - Add Face - 添加人臉 - - - The name already exists - 該名稱已存在 - - - Faceprint - 面紋 - - - - FaceidDetailWidget - - No supported devices found - 找不到可支持設備 - - - - FingerDetailWidget - - No supported devices found - 找不到可支持設備 - - - - FingerDisclaimer - - Add Fingerprint - 添加指紋 - - - Cancel - 取消 - - - Next - 下一步 - - - - FingerInfoWidget - - Place your finger - 放置手指 - - - Place your finger firmly on the sensor until you're asked to lift it - 請以手指壓指紋收集器,然後根據提示抬起 - - - Scan the edges of your fingerprint - 錄入邊緣指紋 - - - Place the edges of your fingerprint on the sensor - 請以手指邊緣壓指紋收集器,然後根據提示抬起 - - - Lift your finger - 抬起手指 - - - Lift your finger and place it on the sensor again - 請抬起手指,再次按壓 - - - Adjust the position to scan the edges of your fingerprint - 請調整按壓區域,繼續錄入邊緣指紋 - - - Lift your finger and do that again - 請抬起手指,再次按壓 - - - Fingerprint added - 成功添加指紋 - - - - FingerWidget - - Edit - 編 輯 - - - Fingerprint Password - 指紋密碼 - - - You can add up to 10 fingerprints - 您最多可錄入10個指紋 - - - Done - 完成 - - - The name already exists - 該名稱已存在 - - - Add Fingerprint - 添加指紋 - - - - GeneralModule - - General - 通用 - - - Balanced - 平衡模式 - - - Balance Performance - - - - High Performance - 高性能模式 - - - Power Saver - 節能模式 - - - Power Plans - 性能模式 - - - Power Saving Settings - 節能設置 - - - Auto power saving on low battery - 低電量時自動開啟 - - - Decrease Brightness - 自動降低亮度 - - - Low battery threshold - - - - Auto power saving on battery - 使用電池時自動開啟 - - - Wakeup Settings - 喚醒設置 - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - 計算機名不能以 - 開頭結尾 - - - 1~63 characters please - 計算機名長度必須介於1到63個字符之間 - - - - InternalButtonItem - - Internal testing channel - 內測通道 - - - click here open the link - 點擊這裏打開鏈接 - - - - IrisDetailWidget - - No supported devices found - 找不到可支持設備 - - - - IrisWidget - - Edit - 編 輯 - - - Manage Irises - 虹膜管理 - - - You can add up to 5 irises - 您最多可錄入5個虹膜數據 - - - Done - 完成 - - - Add Iris - 添加虹膜 - - - The name already exists - 該名稱已存在 - - - Iris - 虹膜 - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright © 2011-%1 深度社區 - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright © 2019-%1 統信軟件技術有限公司 - - - - MicrophonePage - - Input Device - 輸入設備 - - - Automatic Noise Suppression - 噪音抑制 - - - Input Volume - 輸入音量 - - - Input Level - 反饋音量 - - - - PersonalizationDesktopModule - - Desktop - 桌面 - - - Window - 窗口 - - - Window Effect - 窗口特效 - - - Window Minimize Effect - 最小化時效果 - - - Compact Display - 緊湊模式 - - - If enabled, more content is displayed in the window. - 開啟後,視窗將顯示更多內容 - - - Transparency - 透明度調節 - - - Rounded Corner - 窗口圓角 - - - Scale - 縮放 - - - Magic Lamp - 魔燈 - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - 個性化 - - - - PersonalizationThemeList - - Cancel - 取消 - - - Save - 保存 - - - Light - 淺色 - - - Dark - 深色 - - - Auto - 自動 - - - Default - 默認 - - - - PersonalizationThemeModule - - Theme - 主題 - - - Appearance - 外觀 - - - Accent Color - 活動用色 - - - Icon Settings - 圖標設置 - - - Icon Theme - 圖標主題 - - - Cursor Theme - 光標主題 - - - Text Settings - 文字設置 - - - Font Size - 字體大小 - - - Standard Font - 標準字體 - - - Monospaced Font - 等寬字體 - - - Light - 淺色 - - - Auto - 自動 - - - Dark - 深色 - - - - PersonalizationThemeWidget - - Light - 淺色 - General - /personalization/General - - - Dark - 深色 - General - /personalization/General - - - Auto - 自動 - General - /personalization/General - - - Default - 默認 - - - - PersonalizationWorker - - Custom - 自定義 - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - 連接藍牙設備的PIN碼為: - - - Cancel - 取消 - - - Confirm - 確定 - - - - PowerModule - - Power - 電源 - - - Battery low, please plug in - 電池電量低,請連接電源 - - - Battery critically low - 電池電量耗盡 - - - - PrivacyModule - - Privacy and Security - 私隱和安全 - - - - PrivacySecurityModel - - Camera - 鏡頭 - - - Microphone - 麥克風 - - - User Folders - 用戶文件夾 - - - Calendar - 日曆 - - - Screen Capture - 螢幕截圖 - - - - QObject - - Control Center - 控制中心 - - - , - - - - Error occurred when reading the configuration files of password rules! - 密碼規則配置文件讀取錯誤 - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - 已啟用 - - - View - 查看 - - - To be activated - 待啟用 - - - Activate - 啟用 - - - Expired - 已過期 - - - In trial period - 試用期 - - - Trial expired - 試用期過期 - - - Touch Screen Settings - 觸控屏設置 - - - The settings of touch screen changed - 已變更觸控屏設置 - - - Checking system versions, please wait... - 正在對系統版本進行ั驗證,請耐心等待... - - - Leave - 退 出 - - - Cancel - 取消 - - - dde-control-center - 控制中心 - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - 當前系統未授權,請啟用後再更新 - - - Update successful - 升級成功 - - - Failed to update - 更新失敗 - - - - SearchInput - - Search - 搜索 - - - - ServiceSettingsModule - - Apps can access your camera: - 請求使用鏡頭權限的應用: - - - Apps can access your microphone: - 請求使用麥克風權限的應用: - - - Apps can access user folders: - 請求訪問用戶文件夾權限的應用: - - - Apps can access Calendar: - 請求訪問日曆權限的應用: - - - Apps can access Screen Capture: - 請求使用螢幕截圖權限的應用: - - - No apps requested access to the camera - 暫無應用請求使用鏡頭權限 - - - No apps requested access to the microphone - 暫無應用請求使用麥克風權限 - - - No apps requested access to user folders - 暫無應用請求訪問用戶文件夾權限 - - - No apps requested access to Calendar - 暫無應用請求訪問日曆權限 - - - No apps requested access to Screen Capture - 暫無應用請求使用螢幕截圖權限 - - - - SoundEffectsPage - - Sound Effects - 系統音效 - - - - SoundModel - - Boot up - 開機 - - - Shut down - 關機 - - - Log out - 註銷 - - - Wake up - 喚醒 - - - Volume +/- - 音量調節 - - - Notification - 通知 - - - Low battery - 電量不足 - - - Send icon in Launcher to Desktop - 從啟動器發送圖標到桌面 - - - Empty Trash - 清空回收站 - - - Plug in - 電源接入 - - - Plug out - 電源拔出 - - - Removable device connected - 移動設備接入 - - - Removable device removed - 移動設備拔出 - - - Error - 錯誤提示 - - - - SoundModule - - Sound - 聲音 - - - - SoundPlugin - - Output - 輸出 - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - 輸入 - - - Sound Effects - 系統音效 - - - Devices - 設備管理 - - - Input Devices - 輸入設備 - - - Output Devices - 輸出設備 - - - - SpeakerPage - - Output Device - 輸出設備 - - - Mode - 模式 - - - Output Volume - 輸出音量 - - - Volume Boost - 音量增強 - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - 音量大於100%時可能會導致音效失真,同時損害您的音頻輸出設備 - - - Left/Right Balance - 左/右平衡 - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - 時間設定 - - - Time - 時間 - - - Auto Sync - 自動同步配置 - - - Reset - 重置 - - - Save - 保存 - - - Server - 伺服器 - - - Address - 地址 - - - Required - 必填 - - - Customize - 自定義 - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - 取消 - - - Confirm - 確定 - - - Add Timezone - 添加時區 - - - Add - 添加 - - - Change Timezone - 修改系統時區 - - - - TimeoutDialog - - Save the display settings? - 是否要保存顯示設置? - - - Settings will be reverted in %1s. - 如無任何操作將在%1秒後還原。 - - - Revert - 還原 - - - Save - 保存 - - - - TimezoneItem - - Tomorrow - 明天 - - - Yesterday - 昨天 - - - Today - 今天 - - - %1 hours earlier than local - 比本地早了%1個小時 - - - %1 hours later than local - 比本地晚了%1個小時 - - - - TimezoneModule - - Timezone List - 時區列表 - - - System Timezone - 系統時區 - - - Add Timezone - 添加時區 - - - - TreeCombox - - Collaboration Settings - 協同設置 - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - 當前帳戶未綁定Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - 重置密碼功能需對您的Union ID認證後才能進行,請點擊“去綁定”完成相關設置後,再重置密碼。 - - - Cancel - 取消 - - - Go to Link - 去綁定 - - - - UnknownUpdateItem - - Release date: - 發佈時間: - - - - UpdateCtrlWidget - - Check Again - 重新檢查更新 - - - Update failed: insufficient disk space - 當前硬碟空間不足,無法進行系統更新 - - - Dependency error, failed to detect the updates - 依賴錯誤,檢測更新失敗 - - - Restart the computer to use the system and the applications properly - 為了您能夠正常的使用系統和應用,更新後請重新啟動 - - - Network disconnected, please retry after connected - 網絡斷開,請聯網後重試 - - - Your system is not authorized, please activate first - 當前系統未授權,請啟用後再更新 - - - This update may take a long time, please do not shut down or reboot during the process - 本次更新可能會用時較長,更新完成前請不要關機或重啟 - - - Updates Available - 檢測到有更新可用 - - - Current Edition - 當前版本 - - - Updating... - 更新中... - - - Update All - 全部更新 - - - Last checking time: - 上次檢查更新時間: - - - Your system is up to date - 您的系統已經是最新的 - - - Check for Updates - 檢查更新 - - - Checking for updates, please wait... - 檢查更新中,請稍候... - - - The newest system installed, restart to take effect - 您已安裝最新版本,重啟生效! - - - %1% downloaded (Click to pause) - 已下載%1%(點擊暫停) - - - %1% downloaded (Click to continue) - 已下載%1%(點擊繼續) - - - Your battery is lower than 50%, please plug in to continue - 您的電池電量少於50%,請插入電源後繼續 - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - 請確保重啟後有充足的電源,並不要關機或者拔出電源 - - - Size - 下載大小 - - - - UpdateModule - - Updates - 更新 - - - - UpdatePlugin - - Check for Updates - 檢查更新 - - - - UpdateSettingItem - - Insufficient disk space - 磁盤空間不足 - - - Update failed: insufficient disk space - 當前硬碟空間不足,無法進行系統更新 - - - Update failed - 更新失敗 - - - Network error - 網絡錯誤 - - - Network error, please check and try again - 網絡異常,請檢查後重試 - - - Packages error - 安裝包錯誤 - - - Packages error, please try again - 安裝包錯誤,請重試 - - - Dependency error - 依賴錯誤 - - - Unmet dependencies - 依賴關係不滿足 - - - The newest system installed, restart to take effect - 您已安裝最新版本,重啟生效! - - - Waiting - 等待中 - - - Backing up - 備份中 - - - System backup failed - 系統備份失敗 - - - Release date: - 發佈時間: - - - Server - 伺服器 - - - Desktop - 桌面 - - - Version - 版本號 - - - - UpdateSettingsModule - - Update Settings - 更新設置 - - - System - 系統管理 - - - Security Updates Only - 僅安全性更新 - - - Switch it on to only update security vulnerabilities and compatibility issues - 開啟“僅安全性更新”將只會進行安全漏洞和兼容性相關的更新 - - - Third-party Repositories - 第三方倉庫 - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - 其他設置 - - - Auto Check for Updates - 自動檢查 - - - Auto Download Updates - 自動下載 - - - Switch it on to automatically download the updates in wireless or wired network - 開啟“下載更新”,會在有無線網絡和有線網絡的情況下自動下載 - - - Auto Install Updates - 自動安裝 - - - Updates Notification - 更新提醒 - - - Clear Package Cache - 清除軟件包緩存 - - - Updates from Internal Testing Sources - 從內測通道升級 - - - internal update - 內測更新 - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - 檢查系統更新 - - - Security Updates - 檢查安全更新 - - - Install updates automatically when the download is complete - 下載完成後會自動進行安裝 - - - Install "%1" automatically when the download is complete - “%1”下載完成後會自動進行安裝 - - - - UpdateWidget - - Current Edition - 當前版本 - - - - UpdateWorker - - System Updates - 檢查系統更新 - - - Fixed some known bugs and security vulnerabilities - 修復部分已知缺陷和安全漏洞 - - - Security Updates - 檢查安全更新 - - - Third-party Repositories - 第三方倉庫 - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - 退出內測通道可能是不安全的,您確定退出嗎? - - - Your are safe to leave the internal testing channel - 您可以安全退出內測通道 - - - Cannot find machineid - 找不到機器碼 - - - Cannot Uninstall package - 不能卸載包 - - - Error when exit testingChannel - 在退出內測通道時候有錯誤 - - - try to manually uninstall package - 嘗試手動卸載包 - - - Cannot install package - 無法安裝包 - - - - UseBatteryModule - - On Battery - 使用電池 - - - Never - 從不 - - - Shut down - 關機 - - - Suspend - 待機 - - - Hibernate - 休眠 - - - Turn off the monitor - 關閉顯示器 - - - Do nothing - 無任何操作 - - - 1 Minute - 1 分鐘 - - - %1 Minutes - %1 分鐘 - - - 1 Hour - 1 小時 - - - Screen and Suspend - 螢幕和待機 - - - Turn off the monitor after - 關閉顯示器 - - - Lock screen after - 自動鎖定螢幕 - - - Computer suspends after - 進入待機 - - - Computer will suspend after - 電腦進入待機模式 - - - When the lid is closed - 筆記本合蓋時 - - - When the power button is pressed - 按電源按鈕時 - - - Low Battery - 低電量管理 - - - Low battery notification - 低電量通知 - - - Low battery level - 低電量 - - - Auto suspend battery level - 自動待機電量 - - - Battery Management - 電池管理 - - - Display remaining using and charging time - 顯示剩餘使用時間及剩餘充電時間 - - - Maximum capacity - 最大容量 - - - Show the shutdown Interface - 進入關機界面 - - - - UseElectricModule - - Plugged In - 使用電源 - - - 1 Minute - 1 分鐘 - - - %1 Minutes - %1 分鐘 - - - 1 Hour - 1 小時 - - - Never - 從不 - - - Screen and Suspend - 螢幕和待機 - - - Turn off the monitor after - 關閉顯示器 - - - Lock screen after - 自動鎖定螢幕 - - - Computer suspends after - 進入待機 - - - When the lid is closed - 筆記本合蓋時 - - - When the power button is pressed - 按電源按鈕時 - - - Shut down - 關機 - - - Suspend - 待機 - - - Hibernate - 休眠 - - - Turn off the monitor - 關閉顯示器 - - - Show the shutdown Interface - 進入關機界面 - - - Do nothing - 無任何操作 - - - - WacomModule - - Drawing Tablet - 數位板 - - - Mode - 模式 - - - Pressure Sensitivity - 壓感 - - - Pen - - - - Mouse - 鼠標 - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - 控制中心提供操作系統的所有設置選項。 - - - - updateControlPanel - - Downloading - 下載中 - - - Waiting - 等待中 - - - Installing - 安裝中 - - - Backing up - 備份中 - - - Download and install - 下載並安裝 - - - Learn more - 了解詳情 - - - diff --git a/dcc-old/translations/dde-control-center_zh_TW.ts b/dcc-old/translations/dde-control-center_zh_TW.ts deleted file mode 100644 index 130863cd28..0000000000 --- a/dcc-old/translations/dde-control-center_zh_TW.ts +++ /dev/null @@ -1,3995 +0,0 @@ - - - AdapterModule - - Allow other Bluetooth devices to find this device - 允許藍牙裝置可被發現 - - - Enable Bluetooth to find nearby devices (speakers, keyboard, mouse) - 啟用藍牙尋找附近裝置(揚聲器、鍵盤、滑鼠) - - - My Devices - 我的裝置 - - - Other Devices - 其他裝置 - - - Show Bluetooth devices without names - 顯示沒有名稱的藍牙裝置 - - - Connect - 連接 - - - Disconnect - 斷開連接 - - - Rename - 重新命名 - - - Send Files - 發送文件 - - - Ignore this device - 忽略此裝置 - - - Connecting - 正在連線 - - - Disconnecting - 正在斷開 - - - - AddButtonWidget - - Add Application - 添加預設程式 - - - Open Desktop file - 打開Desktop文件 - - - Apps (*.desktop) - 應用程式(*.desktop) - - - All files (*) - 所有文件(*) - - - - AddFaceInfoDialog - - Enroll Face - 添加人臉資料 - - - Make sure all parts of your face are not covered by objects and are clearly visible. Your face should be well-lit as well. - 請確保五官清晰可見,避免佩戴帽子、墨鏡、口罩等物件,保證光線充足,避免陽光直射,以提高輸入成功率 - - - Cancel - 取消 - - - Next - 下一步 - - - Face enrolled - 人臉輸入完成 - - - Use your face to unlock the device and make settings later - 使用人臉資料解鎖您的裝置,之後還可進行更多設定 - - - Done - 完成 - - - Failed to enroll your face - 人臉輸入失敗 - - - Try Again - 重新輸入 - - - Close - 關 閉 - - - - AddFingerDialog - - Cancel - - - - Done - - - - Scan Again - - - - Scan Suspended - - - - - AddIrisInfoDialog - - Enroll Iris - 添加虹膜資料 - - - Cancel - 取消 - - - Next - 下一步 - - - Iris enrolled - 虹膜輸入已完成 - - - Done - 完成 - - - Failed to enroll your iris - 虹膜輸入失敗 - - - Try Again - 重新輸入 - - - - AuthenticationInfoItem - - No more than 15 characters - 不得超過15個字元 - - - Use letters, numbers and underscores only, and no more than 15 characters - 只能由字母、數字、中文、下劃線組成,且不超過15個字元 - - - Use letters, numbers and underscores only - 只能由字母、數字、中文、下劃線組成 - - - - AuthenticationModule - - Biometric Authentication - 生物認證 - - - - AuthenticationPlugin - - Fingerprint - 指紋 - - - Face - 人臉 - - - Iris - 虹膜 - - - - BluetoothDeviceModel - - Connected - 已連接 - - - Not connected - 未連接 - - - - BluetoothModule - - Bluetooth - 藍牙 - - - Bluetooth device manager - - - - - CharaMangerModel - - Fingerprint1 - 指紋1 - - - Fingerprint2 - 指紋2 - - - Fingerprint3 - 指紋3 - - - Fingerprint4 - 指紋4 - - - Fingerprint5 - 指紋5 - - - Fingerprint6 - 指紋6 - - - Fingerprint7 - 指紋7 - - - Fingerprint8 - 指紋8 - - - Fingerprint9 - 指紋9 - - - Fingerprint10 - 指紋10 - - - Scan failed - 指紋輸入失敗 - - - The fingerprint already exists - 指紋已存在 - - - Please scan other fingers - 請使用其他手指輸入 - - - Unknown error - 未知錯誤 - - - Scan suspended - 指紋輸入被中斷 - - - Cannot recognize - 無法識別 - - - Moved too fast - 接觸時間短 - - - Finger moved too fast, please do not lift until prompted - 接觸時間短,驗證時請勿移動手指 - - - Unclear fingerprint - 圖像模糊 - - - Clean your finger or adjust the finger position, and try again - 請清潔手指或調整觸摸位置,再次按壓指紋識別器 - - - Already scanned - 圖像重複 - - - Adjust the finger position to scan your fingerprint fully - 請調整手指按壓區域以輸入更多指紋 - - - Finger moved too fast. Please do not lift until prompted - 指紋採集間隙,請勿移動手指,直到提示您抬起 - - - Lift your finger and place it on the sensor again - 請抬起手指,再次按壓 - - - Position your face inside the frame - 請確保您的臉部全部顯示在識別區域內 - - - Face enrolled - 人臉輸入完成 - - - Position a human face please - 請使用人類面容 - - - Keep away from the camera - 請遠離鏡頭 - - - Get closer to the camera - 請靠近鏡頭 - - - Do not position multiple faces inside the frame - 請不要多人入鏡 - - - Make sure the camera lens is clean - 請確保鏡頭清潔 - - - Do not enroll in dark, bright or backlit environments - 請避免在暗光、強光、逆光環境下操作 - - - Keep your face uncovered - 請保持臉部無遮擋 - - - Scan timed out - 輸入超時 - - - Device crashed, please scan again! - 輸入裝置崩潰,請重新輸入! - - - Cancel - 取消 - - - - CooperationSettingsDialog - - Collaboration Settings - 協同設定 - - - Share mouse and keyboard - 共享滑鼠和鍵盤 - - - Share your mouse and keyboard across devices - 開啟後支援在協同裝置間共享滑鼠和鍵盤 - - - Share clipboard - 剪貼簿共享 - - - Storage path for shared files - 共享資料夾 - - - Share the copied content across devices - 開啟後支援在協同裝置間共享複製內容 - - - Cancel - button - 取 消 - - - Confirm - button - 確 定 - - - - dccV23::AccountSpinBox - - Always - 長期有效 - - - - dccV23::AccountsModule - - Users - - - - User management - - - - Create User - - - - Username - 使用者名稱 - - - Change Password - 修改密碼 - - - Delete User - - - - User Type - - - - Auto Login - 自動登入 - - - Login Without Password - 無密碼登入 - - - Validity Days - 密碼有效天數 - - - Group - 使用者群組 - - - The full name is too long - 名稱過長 - - - Standard User - 標準使用者 - - - Administrator - 管理員 - - - Reset Password - 重設密碼 - - - The full name has been used by other user accounts - 全名與其他帳戶的全名/使用者名稱重複 - - - Full Name - 設定全名 - - - Go to Settings - 前往設定 - - - Cancel - 取消 - - - OK - 確定 - - - "Auto Login" can be enabled for only one account, please disable it for the account "%1" first - 只允許一個帳戶開啟自動登入,請先關閉%1帳戶的自動登入,再進行操作 - - - - dccV23::AccountsWorker - - Your host was removed from the domain server successfully - 您的主機成功退出了域伺服器 - - - Your host joins the domain server successfully - 您的主機成功加入了域伺服器 - - - Your host failed to leave the domain server - 您的主機退出域伺服器失敗 - - - Your host failed to join the domain server - 您的主機加入域伺服器失敗 - - - AD domain settings - AD域設定 - - - Password not match - 密碼不一致 - - - - dccV23::AppNotifyWidget - - Show notifications from %1 on desktop and in the notification center. - 允許來自%1的通知,可在螢幕中顯示消息橫幅,也可在通知中心查看歷史未讀消息。 - - - Play a sound - 通知時提示聲音 - - - Show messages on lockscreen - 鎖定螢幕時顯示消息 - - - Show in notification center - 在通知中心顯示 - - - Show message preview - 顯示消息預覽 - - - - dccV23::AvatarListDialog - - Person - 人物 - - - Animal - 動物 - - - Illustration - 創意插圖 - - - Expression - 表情符號 - - - Custom Picture - 自訂圖片 - - - Cancel - 取消 - - - Save - 儲存 - - - - dccV23::AvatarListFrame - - Dimensional Style - 立體風格 - - - Flat Style - 平面風格 - - - - dccV23::AvatarListView - - Images - 圖片 - - - - dccV23::BootWidget - - Updating... - 更新中... - - - Startup Delay - 啟動延時 - - - Theme - 主題 - - - Click the option in boot menu to set it as the first boot, and drag and drop a picture to change the background - 您可以點擊選單改變預設啟動項,也可以拖曳圖片到視窗改變背景圖片 - - - Click the option in boot menu to set it as the first boot - 您可以點擊選單改變預設啟動項 - - - Switch theme on to view it in boot menu - 開啟主題後您可以在開機時看到主題背景 - - - GRUB Authentication - grub驗證 - - - GRUB password is required to edit its configuration - 開啟後進入grub編輯需要密碼 - - - Change Password - 修改密碼 - - - Boot Menu - 啟動選單 - - - Change GRUB password - 修改grub驗證密碼 - - - Username: - 使用者名稱: - - - root - root - - - New password: - 新密碼: - - - Repeat password: - 重複密碼: - - - Required - 必填 - - - Cancel - button - 取消 - - - Confirm - button - 確定 - - - Password cannot be empty - 密碼不能為空 - - - Passwords do not match - 密碼不一致 - - - - dccV23::BrightnessWidget - - Brightness - 亮度 - - - Color Temperature - 色溫 - - - Auto Brightness - 自動調節亮度 - - - Night Shift - 自動調節色溫 - - - The screen hue will be auto adjusted according to your location - 透過獲取地理位置來輔助系統實現自動調節螢幕顏色偏色 - - - Change Color Temperature - 手動調節 - - - Cool - 較冷 - - - Warm - 較暖 - - - - dccV23::CollaborativeLinkWidget - - Multi-Screen Collaboration - 電腦協同設定 - - - PC Collaboration - 電腦協同 - - - Connect to - 連接設備 - - - Select a device for collaboration - 請選擇協同設備 - - - Device Orientation - 連接方向 - - - On the top - 螢幕上方 - - - On the right - 螢幕右側 - - - On the bottom - 螢幕下方 - - - On the left - 螢幕左側 - - - My Devices - 我的裝置 - - - Other Devices - 其他裝置 - - - - dccV23::CommonInfoPlugin - - General Settings - 通用 - - - Boot Menu - 啟動選單 - - - Developer Mode - 開發者模式 - - - User Experience Program - 使用者體驗計劃 - - - - dccV23::CommonInfoWork - - Agree and Join User Experience Program - 同意並加入使用者體驗計劃 - - - The Disclaimer of Developer Mode - 開發者模式免責聲明 - - - Agree and Request Root Access - 同意並進入開發者模式 - - - Failed to get root access - 進入開發者模式失敗 - - - Please sign in to your Union ID first - 請先登入Union ID - - - Cannot read your PC information - 無法獲取硬體訊息 - - - No network connection - 無網路連接 - - - Certificate loading failed, unable to get root access - 證書載入失敗,無法進入開發者模式 - - - Signature verification failed, unable to get root access - 簽名驗證失敗,無法進入開發者模式 - - - - dccV23::CreateAccountPage - - Group - 使用者群組 - - - Cancel - 取消 - - - Create - 建立 - - - New User - - - - User Type - - - - Username - 使用者名稱 - - - Full Name - 全名 - - - Password - 請輸入密碼 - - - Repeat Password - 重複密碼 - - - Password Hint - 密碼提示 - - - The full name is too long - 名稱過長 - - - Passwords do not match - 密碼不一致 - - - Standard User - 標準使用者 - - - Administrator - 管理員 - - - Customized - 自訂使用者 - - - Required - 必填 - - - optional - 選填 - - - The hint is visible to all users. Do not include the password here. - 密碼提示對所有人可見,切勿包含具體密碼訊息 - - - Policykit authentication failed - 認證失敗 - - - Username must be between 3 and 32 characters - 使用者名稱長度必須介於3到32個字元之間 - - - The first character must be a letter or number - 首字元必須為字母或數字 - - - Your username should not only have numbers - 使用者名稱不能只包含數字 - - - The username has been used by other user accounts - 使用者名稱與其他帳戶的全名/使用者名稱重複 - - - The full name has been used by other user accounts - 全名與其他帳戶的全名/使用者名稱重複 - - - - dccV23::CustomAddAvatarWidget - - You have not uploaded a picture, you can click or drag to upload a picture - 您還沒有上傳過大頭貼,可點擊或拖搜上傳圖片 - - - Uploaded file type is incorrect, please upload again - 上傳的文件類型不正確,請重新上傳 - - - Images - 圖片 - - - - dccV23::CustomContentDialog - - Add Custom Shortcut - 添加自訂快捷鍵 - - - Name - 名稱 - - - Required - 必填 - - - Command - 指令 - - - Cancel - 取消 - - - Add - 添加 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - 此快捷鍵與%1衝突,點擊添加使這個快捷鍵立即生效 - - - - dccV23::CustomEdit - - Required - 必填 - - - Cancel - 取消 - - - Save - 儲存 - - - Shortcut - 快捷鍵 - - - Name - 名稱 - - - Command - 指令 - - - This shortcut conflicts with %1, click on Add to make this shortcut effective immediately - 此快捷鍵與%1衝突,點擊添加使這個快捷鍵立即生效 - - - - dccV23::CustomItem - - Shortcut - 快捷鍵 - - - Please enter a shortcut - 請輸入快捷鍵 - - - - dccV23::CustomRegionFormatDialog - - Custom format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::DetailInfoItem - - For more details, visit: - 有關本次更新的詳細內容可訪問: - - - - dccV23::DeveloperModeDialog - - Request Root Access - 進入開發者模式 - - - Online - 線上啟用 - - - Offline - 離線啟用 - - - Please sign in to your Union ID first and continue - 進入開發者模式需要登入Union ID - - - Next - 下一步 - - - Export PC Info - 匯出機器訊息 - - - Import Certificate - 匯入證書 - - - 1. Export your PC information - 1. 匯出機器訊息 - - - 2. Go to https://www.chinauos.com/developMode to download an offline certificate - 2. 前往https://www.chinauos.com/developMode 下載離線證書 - - - 3. Import the certificate - 3. 匯入證書 - - - - dccV23::DeveloperModeWidget - - Request Root Access - 進入開發者模式 - - - Developer mode enables you to get root privileges, install and run unsigned apps not listed in app store, but your system integrity may also be damaged, please use it carefully. - 進入開發者模式後可以獲得root使用權限,安裝和執行非商店簽名應用,但同時也可能導致系統完整性遭到破壞,請謹慎使用。 - - - The feature is not available at present, please activate your system first - 目前系統未啟用,暫無法使用該功能 - - - Failed to get root access - 進入開發者模式失敗 - - - Please sign in to your Union ID first - 請先登入Union ID - - - Cannot read your PC information - 無法獲取硬體訊息 - - - No network connection - 無網路連接 - - - Certificate loading failed, unable to get root access - 證書載入失敗,無法進入開發者模式 - - - Signature verification failed, unable to get root access - 簽名驗證失敗,無法進入開發者模式 - - - To make some features effective, a restart is required. Restart now? - 開發者模式部分功能需要重啟後生效,是否立即重啟? - - - Cancel - 取消 - - - Restart Now - 現在重啟 - - - Root Access Allowed - 已進入開發者模式 - - - - dccV23::DisplayPlugin - - Display - 顯示 - - - Light, resolution, scaling and etc - - - - - dccV23::DouTestWidget - - Double-click Test - 雙擊測試 - - - - dccV23::GeneralKBSettingWidget - - Keyboard Settings - 鍵盤設定 - - - Repeat Delay - 重複延遲 - - - Short - - - - Long - - - - Repeat Rate - 重複速度 - - - Slow - - - - Fast - - - - Test here - 請在此測試 - - - Numeric Keypad - 啟用數字鍵盤 - - - Caps Lock Prompt - 大寫鎖定提示 - - - - dccV23::GeneralSettingWidget - - Left Hand - 左手模式 - - - Disable touchpad while typing - 輸入時禁用觸控板 - - - Scrolling Speed - 滾動速度 - - - Double-click Speed - 雙擊速度 - - - Slow - - - - Fast - - - - - dccV23::KBLayoutSettingWidget - - Keyboard Layout - 鍵盤布局 - - - Edit - 編 輯 - - - Add Keyboard Layout - 添加鍵盤布局 - - - Done - 完成 - - - - dccV23::KeyboardLayoutDialog - - Cancel - 取消 - - - Add - 添加 - - - Add Keyboard Layout - 添加鍵盤布局 - - - - dccV23::KeyboardPlugin - - Keyboard and Language - 鍵盤和語言 - - - Keyboard - 鍵盤 - - - Keyboard Settings - 鍵盤設定 - - - keyboard Layout - 鍵盤布局 - - - Keyboard Layout - 鍵盤布局 - - - Language - 語言 - - - Shortcuts - 快捷鍵 - - - - dccV23::MainWindow - - Help - 幫助 - - - - dccV23::ModifyPasswdPage - - Change Password - 修改密碼 - - - Reset Password - 重設密碼 - - - Resetting the password will clear the data stored in the keyring. - 重設密碼將會清除金鑰環內已儲存的資料 - - - Current Password - 目前密碼 - - - Forgot password? - 忘記密碼? - - - New Password - 新密碼 - - - Repeat Password - 重複密碼 - - - Password Hint - 密碼提示 - - - Cancel - 取消 - - - Save - 儲存 - - - Passwords do not match - 密碼不一致 - - - Required - 必填 - - - Optional - 選填 - - - Password cannot be empty - 密碼不能為空 - - - The hint is visible to all users. Do not include the password here. - 密碼提示對所有人可見,切勿包含具體密碼訊息 - - - Wrong password - 密碼錯誤 - - - New password should differ from the current one - 新密碼和舊密碼不能相同 - - - System error - 系統錯誤 - - - Network error - 網路錯誤 - - - - dccV23::MonitorControlWidget - - Identify - 識別 - - - Gather Windows - 集合視窗 - - - Screen rearrangement will take effect in %1s after changes - 螢幕拼接將在修改完成%1s後生效 - - - - dccV23::MousePlugin - - Mouse - 滑鼠 - - - General - 通用 - - - Touchpad - 觸控板 - - - TrackPoint - 指點杆 - - - - dccV23::MouseSettingWidget - - Pointer Speed - 指標速度 - - - Mouse Acceleration - 滑鼠加速 - - - Disable touchpad when a mouse is connected - 插入滑鼠時禁用觸控板 - - - Natural Scrolling - 自然滾動 - - - Slow - - - - Fast - - - - - dccV23::MultiScreenWidget - - Multiple Displays - 多屏顯示設定 - /display/Multiple Displays - - - Mode - 模式 - /display/Mode - - - Main Screen - 主螢幕 - /display/Main Scree - - - Duplicate - 複製 - - - Extend - 擴展 - - - Only on %1 - 僅%1屏 - - - - dccV23::NotificationModule - - AppNotify - 應用通知 - - - Notification - 通知 - - - SystemNotify - 系統通知 - - - - dccV23::PalmDetectSetting - - Palm Detection - 掌壓檢測 - - - Minimum Contact Surface - 最小接觸面 - - - Minimum Pressure Value - 最小壓力值 - - - Disable the option if touchpad doesn't work after enabled - 開啟後若導致觸控板不可用,請關閉此選項即可 - - - - dccV23::PluginManager - - following plugins load failed - 以下外掛程式載入失敗 - - - plugins cannot loaded in time - 外掛程式沒有及時載入 - - - - dccV23::PrivacyPolicyWidget - - Privacy Policy - 隱私政策 - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/zh/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-tw - - - <p>We are deeply aware of the importance of your personal information to you. So we have the Privacy Policy that covers how we collect, use, share, transfer, publicly disclose, and store your information.</p><p>You can <a href="%1">click here</a> to view our latest privacy policy and/or view it online by visiting <a href="%1"> %1</a>. Please read carefully and fully understand our practices on customer privacy. If you have any questions, please contact us at: support@uniontech.com.</p> - <p>統信軟體非常重視您的隱私。因此我們制定了涵蓋如何收集、使用、共享、轉讓、公開披露以及儲存您的訊息的隱私政策。</p><p>您可以<a href="%1">點擊此處</a>查看我們最新的隱私政策和/或透過訪問 <a href="%1">%1</a>線上查看。請您務必認真閱讀、充分理解我們針對客戶隱私的做法,如果有任何疑問,請聯絡我們:support@uniontech.com。</p> - - - - dccV23::PwqualityManager - - Password cannot be empty - 密碼不能為空 - - - Password must have at least %1 characters - 密碼長度不能少於%1個字元 - - - Password must be no more than %1 characters - 密碼長度不能超過%1個字元 - - - Password can only contain English letters (case-sensitive), numbers or special symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - 密碼只能由英文(區分大小寫)、數字或特殊符號(~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/)組成 - - - No more than %1 palindrome characters please - 回文字元長度不超過%1位 - - - No more than %1 monotonic characters please - 單調性字元不超過%1位 - - - No more than %1 repeating characters please - 重複字元不超過%1位 - - - Password must contain uppercase letters, lowercase letters, numbers and symbols (~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/) - 密碼必須由大寫字母、小寫字母、數字、符號(~`!@#$%^&*()-_+=|\{}[]:"'<>,.?/)三種類型組成 - - - Password must not contain more than 4 palindrome characters - 密碼不得含有連續4個以上的回文字元 - - - Do not use common words and combinations as password - 密碼不能是常見單字及組合 - - - Create a strong password please - 密碼過於簡單,請增加密碼複雜度 - - - It does not meet password rules - 密碼不符合安全要求 - - - - dccV23::RefreshRateWidget - - Refresh Rate - 重新整理率 - - - Hz - 赫茲 - - - Recommended - 推薦 - - - - dccV23::RegionFormatDialog - - Region format - - - - Default format - - - - First of day - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - Cancel - - - - Save - - - - - dccV23::RemoveUserDialog - - Are you sure you want to delete this account? - 您確定要刪除此帳戶嗎? - - - Delete account directory - 刪除帳戶目錄 - - - Cancel - 取消 - - - Delete - 刪除 - - - - dccV23::ResolutionWidget - - Resolution - 解析度 - /display/Resolution - - - Resize Desktop - 桌面顯示 - /display/Resize Desktop - - - Default - 預設 - - - Fit - 適應 - - - Stretch - 拉伸 - - - Center - 居中 - - - Recommended - 推薦 - - - - dccV23::RotateWidget - - Rotation - 方向 - /display/Rotation - - - Standard - 標準 - - - 90° - 90度 - - - 180° - 180度 - - - 270° - 270度 - - - - dccV23::ScalingWidget - - The monitor only supports 100% display scaling - 目前螢幕僅支援1倍縮放 - - - Display Scaling - 螢幕縮放 - - - - dccV23::SearchInput - - Search - 搜尋 - - - - dccV23::SecondaryScreenDialog - - Brightness - 亮度 - - - - dccV23::SecurityLevelItem - - Weak - 強度低 - - - Medium - 強度中 - - - Strong - 強度高 - - - - dccV23::SecurityQuestionsPage - - Security Questions - 安全問題 - - - These questions will be used to help reset your password in case you forget it. - 忘記密碼時,可使用安全問題重設密碼。 - - - Security question 1 - 安全問題1 - - - Security question 2 - 安全問題2 - - - Security question 3 - 安全問題3 - - - Cancel - 取消 - - - Confirm - 確定 - - - Keep the answer under 30 characters - 答案請保持在30個字元以內 - - - Do not choose a duplicate question please - 不能選擇重複的問題 - - - Please select a question - 請選擇安全問題 - - - What's the name of the city where you were born? - 您出生城市的名稱是什麼? - - - What's the name of the first school you attended? - 您的母校名稱是什麼? - - - Who do you love the most in this world? - 您最愛的人是誰? - - - What's your favorite animal? - 您最喜歡的動物是什麼? - - - What's your favorite song? - 您最喜歡的音樂是什麼? - - - What's your nickname? - 您的綽號是什麼? - - - It cannot be empty - 內容不能為空 - - - - dccV23::SettingsHead - - Edit - 編 輯 - - - Done - 完成 - - - - dccV23::ShortCutSettingWidget - - System - 系統管理 - - - Window - 視窗 - - - Workspace - 工作區 - - - Assistive Tools - 輔助功能 - - - Custom Shortcut - 自訂快捷鍵 - - - Restore Defaults - 復原預設 - - - Shortcut - 快捷鍵 - - - - dccV23::ShortcutContentDialog - - Please Reset Shortcut - 請重新設定快捷鍵 - - - Cancel - 取消 - - - Replace - 取代 - - - This shortcut conflicts with %1, click on Replace to make this shortcut effective immediately - 此快捷鍵與%1衝突,點擊取代使這個快捷鍵立即生效 - - - - dccV23::ShortcutItem - - Enter a new shortcut - 請輸入新的快捷鍵 - - - - dccV23::SystemInfoModel - - available - 可用 - - - - dccV23::SystemInfoModule - - About This PC - 關於本機 - - - Computer Name - 電腦名 - - - systemInfo - 系統訊息 - - - OS Name - 產品名稱 - - - Version - 版本號 - - - Edition - 版本 - - - Type - 類型 - - - Authorization - 版本授權 - - - Processor - 處理器 - - - Memory - 記憶體 - - - Graphics Platform - 圖形平台 - - - Kernel - 核心版本 - - - Agreements and Privacy Policy - 協議與隱私政策 - - - Edition License - 版本協議 - - - End User License Agreement - 最終使用者許可協議 - - - Privacy Policy - 隱私政策 - - - %1-bit - %1位 - - - - dccV23::SystemInfoPlugin - - System Info - 系統訊息 - - - - dccV23::SystemLanguageSettingDialog - - Cancel - 取消 - - - Add - 添加 - - - Add System Language - 添加系統語言 - - - - dccV23::SystemLanguageWidget - - Edit - 編 輯 - - - Language List - 語言列表 - - - Add Language - 添加語言 - - - Done - 完成 - - - - dccV23::SystemNotifyWidget - - Do Not Disturb - 勿擾模式 - System Notifications - /notification/System Notifications - - - App notifications will not be shown on desktop and the sounds will be silenced, but you can view all messages in the notification center. - 所有應用消息橫幅將會被隱藏,通知聲音將會靜音,您可在通知中心查看所有消息。 - - - When the screen is locked - 在螢幕鎖定螢幕時 - - - - dccV23::TimeSlotItem - - From - - - - To - - - - - dccV23::TouchScreenModule - - Touch Screen - 觸控屏 - - - Select your touch screen when connected or set it here. - 您可在接入觸控屏時設定所在螢幕,或在此進行調整。 - - - Confirm - 確定 - - - Cancel - 取消 - - - - dccV23::TouchpadSettingWidget - - Pointer Speed - - - - Enable TouchPad - - - - Tap to Click - - - - Natural Scrolling - - - - Slow - - - - Fast - - - - - dccV23::TrackPointSettingWidget - - Pointer Speed - 指標速度 - - - Slow - - - - Fast - - - - - dccV23::UserExperienceProgramWidget - - Join User Experience Program - 加入使用者體驗計劃 - User Experience Program - /commoninfo/User Experience Program - - - https://www.deepin.org/en/agreement/privacy/ - https://www.deepin.org/zh/agreement/privacy/ - - - https://www.uniontech.com/agreement/privacy-en - https://www.uniontech.com/agreement/privacy-tw - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. For details, please refer to Deepin Privacy Policy (<a href="%1"> %1</a>).</p> - <p>開啟用戶體驗計劃視為您授權我們收集和使用您的裝置及系統訊息,以及應用軟體訊息,您可以關閉使用者體驗計劃以拒絕我們對前述訊息的收集和使用。詳細說明請參照Deepin隱私政策 (<a href="%1"> %1</a>)。</p> - - - <p>Joining User Experience Program means that you grant and authorize us to collect and use the information of your device, system and applications. If you refuse our collection and use of the aforementioned information, do not join User Experience Program. To know more about the management of your data, please refer to UnionTech OS Privacy Policy (<a href="%1"> %1</a>).</p> - <p>開啟用戶體驗計劃視為您授權我們收集和使用您的裝置及系統訊息,以及應用軟體訊息,您可以關閉使用者體驗計劃以拒絕我們對前述訊息的收集和使用。了解資料的管理方式,請參照統信軟體隱私政策 (<a href="%1"> %1</a>)。</p> - - - - DateWidget - - Year - - - - Month - - - - Day - - - - - DatetimeModule - - Time and Format - - - - - DatetimeWorker - - Authentication is required to change NTP server - 修改時間伺服器需要認證 - - - - DefAppModule - - Default Applications - 預設程式 - - - - DefAppPlugin - - Webpage - 網頁 - - - Mail - 郵件 - - - Text - 文字 - - - Music - 音樂 - - - Video - 影片 - - - Picture - 圖片 - - - Terminal - 終端 - - - - DisclaimersDialog - - Disclaimer - 《使用者免責聲明》 - - - Before using face recognition, please note that: -1. Your device may be unlocked by people or objects that look or appear similar to you. -2. Face recognition is less secure than digital passwords and mixed passwords. -3. The success rate of unlocking your device through face recognition will be reduced in a low-light, high-light, back-light, large angle scenario and other scenarios. -4. Please do not give your device to others randomly, so as to avoid malicious use of face recognition. -5. In addition to the above scenarios, you should pay attention to other situations that may affect the normal use of face recognition. - -In order to better use of face recognition, please pay attention to the following matters when inputting the facial data: -1. Please stay in a well-lit setting, avoid direct sunlight and other people appearing in the recorded screen. -2. Please pay attention to the facial state when inputting data, and do not let your hats, hair, sunglasses, masks, heavy makeup and other factors to cover your facial features. -3. Please avoid tilting or lowering your head, closing your eyes or showing only one side of your face, and make sure your front face appears clearly and completely in the prompt box. - - 在使用人臉識別功能前,請注意以下事項: -1.您的裝置可能會被容貌、外形與您相近的人或物品解鎖。 -2.人臉識別的安全性低於數字密碼、混合密碼。 -3.在暗光、強光、逆光或角度過大等場景下,人臉識別的解鎖成功率會有所降低。 -4.請勿將裝置隨意交給他人使用,避免人臉識別功能被惡意利用。 -5.除以上場景外,您需注意其他可能影響人臉識別功能正常使用的情況。 - -為更好使用人臉識別,輸入臉部資料時請注意以下事項: -1.請保證光線充足,避免陽光直射並避免其他人出現在輸入的畫面中。 -2.請注意輸入資料時的臉部狀態,避免衣帽、頭髮、墨鏡、口罩、濃妝等遮擋臉部訊息。 -3.請避免仰頭、低頭、閉眼或僅露出側臉的情況,確保臉部正面清晰完整的出現在提示框內。 - - - - "Biometric authentication" is a function for user identity authentication provided by UnionTech Software Technology Co., Ltd. Through "biometric authentication", the biometric data collected will be compared with that stored in the device, and the user identity will be verified based on the comparison result. -Please be noted that UnionTech Software will not collect or access your biometric information, which will be stored on your local device. Please only enable the biometric authentication in your personal device and use your own biometric information for related operations, and promptly disable or delete other people's biometric information on that device, otherwise you will bear the risk arising therefrom. -UnionTech Software is committed to research and improve the security, accuracy and stability of biometric authentication. However, due to environmental, equipment, technical and other factors and risk control, there is no guarantee that you will pass the biometric authentication temporarily. Therefore, please do not take biometric authentication as the only way to log in to UnionTech OS. If you have any questions or suggestions when using the biometric authentication, you can give feedback through "Service and Support" in the UnionTech OS. - - “生物認證”是統信軟體技術有限公司提供的一種對使用者進行身份認證的功能。通過“生物認證”,將採集的生物識別資料與儲存在裝置本機的生物識別資料進行比對,並根據比對結果來驗證使用者身份。 -請您注意,統信軟體不會收集或訪問您的生物識別訊息,此類訊息將會儲存在您的本機裝置中。請您僅在您的個人裝置中開啟生物認證功能,並使用您本人的生物識別訊息進行相關操作,並及時在該裝置上禁用或清除他人的生物識別訊息,否則由此給您帶來的風險將由您承擔。 -統信軟體致力於研究與提高生物認證功能的安全性、精確性、與穩定性,但是,受限於環境、裝置、技術等因素和風險控制等原因,我們暫時無法保證您一定能透過生物認證,請您不要將生物認證作為登入統信作業系統的唯一途徑。若您在使用生物認證時有任何問題或建議的,可以透過系統內的“服務與支援”進行回饋。 - - - - Cancel - 取消 - - - Next - 下一步 - - - - DisclaimersItem - - I have read and agree to the - 我已閱讀並同意 - - - Disclaimer - 《使用者免責聲明》 - - - - DockModuleObject - - Dock - 任務欄 - - - Multiple Displays - 多屏顯示設定 - - - Show Dock - 任務欄位置 - - - Mode - 模式 - - - Position - 位置 - - - Status - 狀態 - - - Show recent apps in Dock - 顯示最近使用應用 - - - Size - 大小 - - - Plugin Area - 外掛程式區域 - - - Select which icons appear in the Dock - 選擇顯示在任務欄外掛程式區域的圖示 - - - Fashion mode - 時尚模式 - - - Efficient mode - 高效模式 - - - Top - - - - Bottom - - - - Left - - - - Right - - - - Location - 位置 - - - Keep shown - 一直顯示 - - - Keep hidden - 一直隱藏 - - - Smart hide - 智慧隱藏 - - - Small - - - - Large - - - - On screen where the cursor is - 跟隨滑鼠位置顯示 - - - Only on main screen - 僅主屏顯示 - - - - FaceInfoDialog - - Enroll Face - 添加人臉資料 - - - Position your face inside the frame - 請確保您的臉部全部顯示在識別區域內 - - - - FaceWidget - - Edit - 編 輯 - - - Manage Faces - 人臉管理 - - - You can add up to 5 faces - 您最多可輸入5個人臉資料 - - - Done - 完成 - - - Add Face - 添加人臉 - - - The name already exists - 該名稱已存在 - - - Faceprint - 面紋 - - - - FaceidDetailWidget - - No supported devices found - 找不到可支援裝置 - - - - FingerDetailWidget - - No supported devices found - 找不到可支援裝置 - - - - FingerDisclaimer - - Add Fingerprint - 添加指紋 - - - Cancel - 取消 - - - Next - 下一步 - - - - FingerInfoWidget - - Place your finger - 放置手指 - - - Place your finger firmly on the sensor until you're asked to lift it - 請以手指壓指紋收集器,然後根據提示抬起 - - - Scan the edges of your fingerprint - 輸入邊緣指紋 - - - Place the edges of your fingerprint on the sensor - 請以手指邊緣壓指紋收集器,然後根據提示抬起 - - - Lift your finger - 抬起手指 - - - Lift your finger and place it on the sensor again - 請抬起手指,再次按壓 - - - Adjust the position to scan the edges of your fingerprint - 請調整按壓區域,繼續輸入邊緣指紋 - - - Lift your finger and do that again - 請抬起手指,再次按壓 - - - Fingerprint added - 成功添加指紋 - - - - FingerWidget - - Edit - 編 輯 - - - Fingerprint Password - 指紋密碼 - - - You can add up to 10 fingerprints - 您最多可輸入10個指紋 - - - Done - 完成 - - - The name already exists - 該名稱已存在 - - - Add Fingerprint - 添加指紋 - - - - GeneralModule - - General - 通用 - - - Balanced - 平衡模式 - - - Balance Performance - - - - High Performance - 高性能模式 - - - Power Saver - 節能模式 - - - Power Plans - 性能模式 - - - Power Saving Settings - 節能設定 - - - Auto power saving on low battery - 低電量時自動開啟 - - - Decrease Brightness - 自動降低亮度 - - - Low battery threshold - - - - Auto power saving on battery - 使用電池時自動開啟 - - - Wakeup Settings - 喚醒設定 - - - Unlocking is required to wake up the computer - - - - Unlocking is required to wake up the monitor - - - - - HostNameItem - - It cannot start or end with dashes - 電腦名不能以 - 開頭結尾 - - - 1~63 characters please - 電腦名長度必須介於1到63個字元之間 - - - - InternalButtonItem - - Internal testing channel - 內測通道 - - - click here open the link - 點擊這裡打開連結 - - - - IrisDetailWidget - - No supported devices found - 找不到可支援裝置 - - - - IrisWidget - - Edit - 編 輯 - - - Manage Irises - 虹膜管理 - - - You can add up to 5 irises - 您最多可輸入5個虹膜資料 - - - Done - 完成 - - - Add Iris - 添加虹膜 - - - The name already exists - 該名稱已存在 - - - Iris - 虹膜 - - - - KeyLabel - - None - - - - - LogoModule - - Copyright© 2011-%1 Deepin Community - Copyright © 2011-%1 深度社群 - - - Copyright© 2019-%1 UnionTech Software Technology Co., LTD - Copyright © 2019-%1 統信軟體技術有限公司 - - - - MicrophonePage - - Input Device - 輸入裝置 - - - Automatic Noise Suppression - 噪音抑制 - - - Input Volume - 輸入音量 - - - Input Level - 回饋音量 - - - - PersonalizationDesktopModule - - Desktop - 桌面 - - - Window - 視窗 - - - Window Effect - 視窗特效 - - - Window Minimize Effect - 最小化時效果 - - - Compact Display - 緊湊模式 - - - If enabled, more content is displayed in the window. - 開啟後,視窗將顯示更多內容 - - - Transparency - 透明度調節 - - - Rounded Corner - 視窗圓角 - - - Scale - 縮放 - - - Magic Lamp - 魔燈 - - - Small - - - - Middle - - - - Large - - - - - PersonalizationModule - - Personalization - 個性化 - - - - PersonalizationThemeList - - Cancel - 取消 - - - Save - 儲存 - - - Light - 淺色 - - - Dark - 深色 - - - Auto - 自動 - - - Default - 預設 - - - - PersonalizationThemeModule - - Theme - 主題 - - - Appearance - 外觀 - - - Accent Color - 活動用色 - - - Icon Settings - 圖示設定 - - - Icon Theme - 圖示主題 - - - Cursor Theme - 游標主題 - - - Text Settings - 文字設定 - - - Font Size - 字體大小 - - - Standard Font - 標準字體 - - - Monospaced Font - 等寬字體 - - - Light - 淺色 - - - Auto - 自動 - - - Dark - 深色 - - - - PersonalizationThemeWidget - - Light - 淺色 - General - /personalization/General - - - Dark - 深色 - General - /personalization/General - - - Auto - 自動 - General - /personalization/General - - - Default - 預設 - - - - PersonalizationWorker - - Custom - 自訂 - - - - PinCodeDialog - - The PIN for connecting to the Bluetooth device is: - 連接藍牙裝置的PIN碼為: - - - Cancel - 取消 - - - Confirm - 確定 - - - - PowerModule - - Power - 電源 - - - Battery low, please plug in - 電池電量低,請連接電源 - - - Battery critically low - 電池電量耗盡 - - - - PrivacyModule - - Privacy and Security - 隱私和安全 - - - - PrivacySecurityModel - - Camera - 圖像裝置 - - - Microphone - 麥克風 - - - User Folders - 使用者資料夾 - - - Calendar - 日曆 - - - Screen Capture - 螢幕截圖 - - - - QObject - - Control Center - 控制中心 - - - , - - - - Error occurred when reading the configuration files of password rules! - 密碼規則配置檔案讀取錯誤 - - - Auto adjust CPU operating frequency based on CPU load condition - - - - Aggressively adjust CPU operating frequency based on CPU load condition - - - - Be good to imporving performance, but power consumption and heat generation will increase - - - - CPU always works under low frequency, will reduce power consumption - - - - Activated - 已啟用 - - - View - 查看 - - - To be activated - 待啟用 - - - Activate - 啟用 - - - Expired - 已過期 - - - In trial period - 試用期 - - - Trial expired - 試用期過期 - - - Touch Screen Settings - 觸控屏設定 - - - The settings of touch screen changed - 已變更觸控屏設定 - - - Checking system versions, please wait... - 正在對系統版本進行ั驗證,請耐心等待... - - - Leave - 退 出 - - - Cancel - 取消 - - - dde-control-center - 控制中心 - - - - RegionModule - - Region and format - - - - Country or Region - - - - Format - - - - Provide localized services based on your region. - - - - Select matching date and time formats based on language and region - - - - Region format - - - - First day of week - - - - Short date - - - - Long date - - - - Short time - - - - Long time - - - - Currency symbol - - - - Numbers - - - - Paper - - - - custom format - - - - - ResultItem - - Your system is not authorized, please activate first - 目前系統未授權,請啟用後再更新 - - - Update successful - 升級成功 - - - Failed to update - 更新失敗 - - - - SearchInput - - Search - 搜尋 - - - - ServiceSettingsModule - - Apps can access your camera: - 請求使用相機權限的應用: - - - Apps can access your microphone: - 請求使用麥克風權限的應用: - - - Apps can access user folders: - 請求訪問使用者資料夾權限的應用: - - - Apps can access Calendar: - 請求訪問日曆權限的應用: - - - Apps can access Screen Capture: - 請求使用螢幕截圖權限的應用: - - - No apps requested access to the camera - 暫無應用請求使用相機權限 - - - No apps requested access to the microphone - 暫無應用請求使用麥克風權限 - - - No apps requested access to user folders - 暫無應用請求訪問使用者資料夾權限 - - - No apps requested access to Calendar - 暫無應用請求訪問日曆權限 - - - No apps requested access to Screen Capture - 暫無應用請求使用螢幕截圖權限 - - - - SoundEffectsPage - - Sound Effects - 系統音效 - - - - SoundModel - - Boot up - 開機 - - - Shut down - 關機 - - - Log out - 註銷 - - - Wake up - 喚醒 - - - Volume +/- - 音量調節 - - - Notification - 通知 - - - Low battery - 電量不足 - - - Send icon in Launcher to Desktop - 從啟動器發送圖示到桌面 - - - Empty Trash - 清空回收站 - - - Plug in - 電源接入 - - - Plug out - 電源拔出 - - - Removable device connected - 行動裝置接入 - - - Removable device removed - 行動裝置拔出 - - - Error - 錯誤提示 - - - - SoundModule - - Sound - 聲音 - - - - SoundPlugin - - Output - 輸出 - - - Auto pause - - - - Whether the audio will be automatically paused when the current audio device is unplugged - - - - Input - 輸入 - - - Sound Effects - 系統音效 - - - Devices - 裝置管理 - - - Input Devices - 輸入裝置 - - - Output Devices - 輸出裝置 - - - - SpeakerPage - - Output Device - 輸出裝置 - - - Mode - 模式 - - - Output Volume - 輸出音量 - - - Volume Boost - 音量增強 - - - If the volume is louder than 100%, it may distort audio and be harmful to output devices - 音量大於100%時可能會導致音效失真,同時損害您的音訊輸出裝置 - - - Left/Right Balance - 左/右平衡 - - - Left - - - - Right - - - - - TimeSettingModule - - Time Settings - 時間設定 - - - Time - 時間 - - - Auto Sync - 自動同步配置 - - - Reset - 重設 - - - Save - 儲存 - - - Server - 伺服器 - - - Address - 地址 - - - Required - 必填 - - - Customize - 自訂 - - - Year - - - - Month - - - - Day - - - - - TimeZoneChooser - - Cancel - 取消 - - - Confirm - 確定 - - - Add Timezone - 添加時區 - - - Add - 添加 - - - Change Timezone - 修改系統時區 - - - - TimeoutDialog - - Save the display settings? - 是否要儲存顯示設定? - - - Settings will be reverted in %1s. - 如無任何操作將在%1秒後還原。 - - - Revert - 還原 - - - Save - 儲存 - - - - TimezoneItem - - Tomorrow - 明天 - - - Yesterday - 昨天 - - - Today - 今天 - - - %1 hours earlier than local - 比本機早了%1個小時 - - - %1 hours later than local - 比本機晚了%1個小時 - - - - TimezoneModule - - Timezone List - 時區列表 - - - System Timezone - 系統時區 - - - Add Timezone - 添加時區 - - - - TreeCombox - - Collaboration Settings - 協同設定 - - - - UnionIDBindReminderDialog - - The user account is not linked to Union ID - 目前帳戶未綁定Union ID - - - To reset passwords, you should authenticate your Union ID first. Click "Go to Link" to finish the settings. - 重設密碼功能需對您的Union ID認證後才能進行,請點擊“去綁定”完成相關設定後,再重設密碼。 - - - Cancel - 取消 - - - Go to Link - 去綁定 - - - - UnknownUpdateItem - - Release date: - 發布時間: - - - - UpdateCtrlWidget - - Check Again - 重新檢查更新 - - - Update failed: insufficient disk space - 目前硬碟空間不足,無法進行系統更新 - - - Dependency error, failed to detect the updates - 依賴錯誤,檢測更新失敗 - - - Restart the computer to use the system and the applications properly - 為了您能夠正常的使用系統和應用,更新後請重新啟動 - - - Network disconnected, please retry after connected - 網路斷開,請聯網後重試 - - - Your system is not authorized, please activate first - 目前系統未授權,請啟用後再更新 - - - This update may take a long time, please do not shut down or reboot during the process - 本次更新可能會用時較長,更新完成前請不要關機或重啟 - - - Updates Available - 檢測到有更新可用 - - - Current Edition - 目前版本 - - - Updating... - 更新中... - - - Update All - 全部更新 - - - Last checking time: - 上次檢查更新時間: - - - Your system is up to date - 您的系統已經是最新的 - - - Check for Updates - 檢查更新 - - - Checking for updates, please wait... - 檢查更新中,請稍候... - - - The newest system installed, restart to take effect - 您已安裝最新版本,重啟生效! - - - %1% downloaded (Click to pause) - 已下載%1%(點擊暫停) - - - %1% downloaded (Click to continue) - 已下載%1%(點擊繼續) - - - Your battery is lower than 50%, please plug in to continue - 您的電池電量少於50%,請插入電源後繼續 - - - Please ensure sufficient power to restart, and don't power off or unplug your machine - 請確保重啟後有充足的電源,並不要關機或者拔出電源 - - - Size - 下載大小 - - - - UpdateModule - - Updates - 更新 - - - - UpdatePlugin - - Check for Updates - 檢查更新 - - - - UpdateSettingItem - - Insufficient disk space - 磁碟空間不足 - - - Update failed: insufficient disk space - 目前硬碟空間不足,無法進行系統更新 - - - Update failed - 更新失敗 - - - Network error - 網路錯誤 - - - Network error, please check and try again - 網路異常,請檢查後重試 - - - Packages error - 安裝包錯誤 - - - Packages error, please try again - 安裝包錯誤,請重試 - - - Dependency error - 依賴錯誤 - - - Unmet dependencies - 依賴關係不滿足 - - - The newest system installed, restart to take effect - 您已安裝最新版本,重啟生效! - - - Waiting - 等待中 - - - Backing up - 備份中 - - - System backup failed - 系統備份失敗 - - - Release date: - 發布時間: - - - Server - 伺服器 - - - Desktop - 桌面 - - - Version - 版本號 - - - - UpdateSettingsModule - - Update Settings - 更新設定 - - - System - 系統管理 - - - Security Updates Only - 僅安全性更新 - - - Switch it on to only update security vulnerabilities and compatibility issues - 開啟“僅安全性更新”將只會進行安全漏洞和相容性相關的更新 - - - Third-party Repositories - 第三方倉庫 - - - linglong update - - - - Linglong Package Update - - - - If there is update for linglong package, system will update it for you - - - - Other settings - 其他設定 - - - Auto Check for Updates - 自動檢查 - - - Auto Download Updates - 自動下載 - - - Switch it on to automatically download the updates in wireless or wired network - 開啟“下載更新”,會在有無線網路和有線網路的情況下自動下載 - - - Auto Install Updates - 自動安裝 - - - Updates Notification - 更新提醒 - - - Clear Package Cache - 清除套裝軟體快取 - - - Updates from Internal Testing Sources - 從內測通道升級 - - - internal update - 內測更新 - - - Join the internal testing channel to get deepin latest updates - - - - System Updates - 檢查系統更新 - - - Security Updates - 檢查安全更新 - - - Install updates automatically when the download is complete - 下載完成後會自動進行安裝 - - - Install "%1" automatically when the download is complete - “%1”下載完成後會自動進行安裝 - - - - UpdateWidget - - Current Edition - 目前版本 - - - - UpdateWorker - - System Updates - 檢查系統更新 - - - Fixed some known bugs and security vulnerabilities - 修復部分已知缺陷和安全漏洞 - - - Security Updates - 檢查安全更新 - - - Third-party Repositories - 第三方倉庫 - - - It may be unsafe for you to leave the internal testing channel now, do you still want to leave? - 退出內測通道可能是不安全的,您確定退出嗎? - - - Your are safe to leave the internal testing channel - 您可以安全退出內測通道 - - - Cannot find machineid - 找不到機器碼 - - - Cannot Uninstall package - 不能移除包 - - - Error when exit testingChannel - 在退出內測通道時候有錯誤 - - - try to manually uninstall package - 嘗試手動移除包 - - - Cannot install package - 無法安裝包 - - - - UseBatteryModule - - On Battery - 使用電池 - - - Never - 從不 - - - Shut down - 關機 - - - Suspend - 待機 - - - Hibernate - 休眠 - - - Turn off the monitor - 關閉顯示器 - - - Do nothing - 無任何操作 - - - 1 Minute - 1 分鐘 - - - %1 Minutes - %1 分鐘 - - - 1 Hour - 1 小時 - - - Screen and Suspend - 螢幕和待機 - - - Turn off the monitor after - 關閉顯示器 - - - Lock screen after - 自動鎖定螢幕 - - - Computer suspends after - 進入待機 - - - Computer will suspend after - 電腦進入待機模式 - - - When the lid is closed - 筆記本合蓋時 - - - When the power button is pressed - 按電源按鈕時 - - - Low Battery - 低電量管理 - - - Low battery notification - 低電量通知 - - - Low battery level - 低電量 - - - Auto suspend battery level - 自動待機電量 - - - Battery Management - 電池管理 - - - Display remaining using and charging time - 顯示剩餘使用時間及剩餘充電時間 - - - Maximum capacity - 最大容量 - - - Show the shutdown Interface - 進入關機介面 - - - - UseElectricModule - - Plugged In - 使用電源 - - - 1 Minute - 1 分鐘 - - - %1 Minutes - %1 分鐘 - - - 1 Hour - 1 小時 - - - Never - 從不 - - - Screen and Suspend - 螢幕和待機 - - - Turn off the monitor after - 關閉顯示器 - - - Lock screen after - 自動鎖定螢幕 - - - Computer suspends after - 進入待機 - - - When the lid is closed - 筆記本合蓋時 - - - When the power button is pressed - 按電源按鈕時 - - - Shut down - 關機 - - - Suspend - 待機 - - - Hibernate - 休眠 - - - Turn off the monitor - 關閉顯示器 - - - Show the shutdown Interface - 進入關機介面 - - - Do nothing - 無任何操作 - - - - WacomModule - - Drawing Tablet - 數位板 - - - Mode - 模式 - - - Pressure Sensitivity - 壓感 - - - Pen - - - - Mouse - 滑鼠 - - - Light - - - - Heavy - - - - - main - - Control Center provides the options for system settings. - 控制中心提供作業系統的所有設定選項。 - - - - updateControlPanel - - Downloading - 下載中 - - - Waiting - 等待中 - - - Installing - 安裝中 - - - Backing up - 備份中 - - - Download and install - 下載並安裝 - - - Learn more - 了解詳情 - - - diff --git a/dcc-old/translations/desktop/desktop.ts b/dcc-old/translations/desktop/desktop.ts deleted file mode 100644 index edefae97ba..0000000000 --- a/dcc-old/translations/desktop/desktop.ts +++ /dev/null @@ -1,3 +0,0 @@ - - -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center diff --git a/dcc-old/translations/desktop/desktop_ady.ts b/dcc-old/translations/desktop/desktop_ady.ts deleted file mode 100644 index 904c850944..0000000000 --- a/dcc-old/translations/desktop/desktop_ady.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_af.ts b/dcc-old/translations/desktop/desktop_af.ts deleted file mode 100644 index 5441311e21..0000000000 --- a/dcc-old/translations/desktop/desktop_af.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterBeheersentrumDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_af_ZA.ts b/dcc-old/translations/desktop/desktop_af_ZA.ts deleted file mode 100644 index 94f840a0d7..0000000000 --- a/dcc-old/translations/desktop/desktop_af_ZA.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ak.ts b/dcc-old/translations/desktop/desktop_ak.ts deleted file mode 100644 index 5f55fd1378..0000000000 --- a/dcc-old/translations/desktop/desktop_ak.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_am.ts b/dcc-old/translations/desktop/desktop_am.ts deleted file mode 100644 index fc54de7420..0000000000 --- a/dcc-old/translations/desktop/desktop_am.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_am_ET.ts b/dcc-old/translations/desktop/desktop_am_ET.ts deleted file mode 100644 index 3c1f65c2bc..0000000000 --- a/dcc-old/translations/desktop/desktop_am_ET.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerመቆጣጠሪያ ማእከልDeepin Control Centerዲፕኢን መቆጣጠሪያ ማእከልDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ar.ts b/dcc-old/translations/desktop/desktop_ar.ts deleted file mode 100644 index f942845086..0000000000 --- a/dcc-old/translations/desktop/desktop_ar.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerمركز التحكمDeepin Control Centerمركز تحكم ديبينDeepin Desktop Environment Control Centerمركز تحكم بيئة سطح مكتب Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ar_EG.ts b/dcc-old/translations/desktop/desktop_ar_EG.ts deleted file mode 100644 index 8124d7cb65..0000000000 --- a/dcc-old/translations/desktop/desktop_ar_EG.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ast.ts b/dcc-old/translations/desktop/desktop_ast.ts deleted file mode 100644 index 597b61d100..0000000000 --- a/dcc-old/translations/desktop/desktop_ast.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentru de controlDeepin Control CenterCentru de control DeepinDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_az.ts b/dcc-old/translations/desktop/desktop_az.ts deleted file mode 100644 index 5329d3b3b8..0000000000 --- a/dcc-old/translations/desktop/desktop_az.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerİdarə Etmə MərkəziDeepin Control CenterDeepin İdarəetmə MərkəziDeepin Desktop Environment Control CenterDeepin İş Masası Mühiti İdarəetmə Mərkəzi \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_bg.ts b/dcc-old/translations/desktop/desktop_bg.ts deleted file mode 100644 index 33b497f2c5..0000000000 --- a/dcc-old/translations/desktop/desktop_bg.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterКонтролен центърDeepin Control CenterКонтролен център на DeepinDeepin Desktop Environment Control CenterКонтролен център на работната среда Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_bn.ts b/dcc-old/translations/desktop/desktop_bn.ts deleted file mode 100644 index e618f1b303..0000000000 --- a/dcc-old/translations/desktop/desktop_bn.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerনিয়ন্ত্রণ কেন্দ্রDeepin Control CenterDeepin Desktop Environment Control Centerডিপিন ডেস্কটপ এনভাইরনমেন্ট নিয়ন্ত্রণ কেন্দ্র \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_bo.ts b/dcc-old/translations/desktop/desktop_bo.ts deleted file mode 100644 index 57f4a1c4da..0000000000 --- a/dcc-old/translations/desktop/desktop_bo.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerཚོད་འཛིན་ལྟེ་གནས།Deepin Control Centerགཏིང་ཚད་ཚོད་འཛིན་ལྟེ་གནས།Deepin Desktop Environment Control Centerགཏིང་ཚད་ཅོག་ངོས་ཁོར་ཡུག་ཚོད་འཛིན་ལྟེ་གནས། \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_bqi.ts b/dcc-old/translations/desktop/desktop_bqi.ts deleted file mode 100644 index 6d5d263d0c..0000000000 --- a/dcc-old/translations/desktop/desktop_bqi.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_br.ts b/dcc-old/translations/desktop/desktop_br.ts deleted file mode 100644 index 2401004291..0000000000 --- a/dcc-old/translations/desktop/desktop_br.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ca.ts b/dcc-old/translations/desktop/desktop_ca.ts deleted file mode 100644 index 878622acb2..0000000000 --- a/dcc-old/translations/desktop/desktop_ca.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentre de controlDeepin Control CenterCentre de control del DeepinDeepin Desktop Environment Control CenterCentre de control de l'entorn d'escriptori del Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_cgg.ts b/dcc-old/translations/desktop/desktop_cgg.ts deleted file mode 100644 index c77091ac67..0000000000 --- a/dcc-old/translations/desktop/desktop_cgg.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_cs.ts b/dcc-old/translations/desktop/desktop_cs.ts deleted file mode 100644 index 979167fd54..0000000000 --- a/dcc-old/translations/desktop/desktop_cs.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterOvládací panelyDeepin Control CenterOvládací panely pro DeepinDeepin Desktop Environment Control CenterOvládací panely pracovního prostředí Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_da.ts b/dcc-old/translations/desktop/desktop_da.ts deleted file mode 100644 index 7a7ee3f8d8..0000000000 --- a/dcc-old/translations/desktop/desktop_da.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterKontrolcenterDeepin Control CenterDeepin kontrolcenterDeepin Desktop Environment Control CenterKontrolcenter for Deepin-skrivebordsmiljø \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_de.ts b/dcc-old/translations/desktop/desktop_de.ts deleted file mode 100644 index bfba7af41b..0000000000 --- a/dcc-old/translations/desktop/desktop_de.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterKontrollzentrumDeepin Control CenterDeepin KontrollzentrumDeepin Desktop Environment Control CenterDeepin Desktop-Umgebung Kontrollzentrum \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_el.ts b/dcc-old/translations/desktop/desktop_el.ts deleted file mode 100644 index 44efa56a54..0000000000 --- a/dcc-old/translations/desktop/desktop_el.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterΚέντρο ΕλέγχουDeepin Control CenterDeepin Κέντρο ΕλέγχουDeepin Desktop Environment Control CenterΚέντρο Ελέγχου Περιβάλλοντος Εγασίας Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_el_GR.ts b/dcc-old/translations/desktop/desktop_el_GR.ts deleted file mode 100644 index d58a9eb413..0000000000 --- a/dcc-old/translations/desktop/desktop_el_GR.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_en.ts b/dcc-old/translations/desktop/desktop_en.ts deleted file mode 100644 index e88ca32893..0000000000 --- a/dcc-old/translations/desktop/desktop_en.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterControl CenterDeepin Control CenterDeepin Control CenterDeepin Desktop Environment Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_en_AU.ts b/dcc-old/translations/desktop/desktop_en_AU.ts deleted file mode 100644 index 6ba0c442d0..0000000000 --- a/dcc-old/translations/desktop/desktop_en_AU.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterControl CenterDeepin Control CenterDeepin Control CenterDeepin Desktop Environment Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_en_GB.ts b/dcc-old/translations/desktop/desktop_en_GB.ts deleted file mode 100644 index e9c51be552..0000000000 --- a/dcc-old/translations/desktop/desktop_en_GB.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterControl CenterDeepin Control CenterDeepin Control CenterDeepin Desktop Environment Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_en_NO.ts b/dcc-old/translations/desktop/desktop_en_NO.ts deleted file mode 100644 index f151ff4b3c..0000000000 --- a/dcc-old/translations/desktop/desktop_en_NO.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_en_US.ts b/dcc-old/translations/desktop/desktop_en_US.ts deleted file mode 100644 index 32d58b4a9b..0000000000 --- a/dcc-old/translations/desktop/desktop_en_US.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterControl CenterDeepin Control CenterDeepin Control CenterDeepin Desktop Environment Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_eo.ts b/dcc-old/translations/desktop/desktop_eo.ts deleted file mode 100644 index 402e9424a8..0000000000 --- a/dcc-old/translations/desktop/desktop_eo.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerkontroloj centroDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_es.ts b/dcc-old/translations/desktop/desktop_es.ts deleted file mode 100644 index f0aadf6752..0000000000 --- a/dcc-old/translations/desktop/desktop_es.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentro de controlDeepin Control CenterCentro de control de DeepinDeepin Desktop Environment Control CenterCentro de control del entorno de escritorio Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_et.ts b/dcc-old/translations/desktop/desktop_et.ts deleted file mode 100644 index 74e8acb928..0000000000 --- a/dcc-old/translations/desktop/desktop_et.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterJuhtpaneelDeepin Control CenterDeepin juhtpaneelDeepin Desktop Environment Control CenterDeepin töölaua juhtpaneel \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_eu.ts b/dcc-old/translations/desktop/desktop_eu.ts deleted file mode 100644 index 48d1b67e88..0000000000 --- a/dcc-old/translations/desktop/desktop_eu.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_fa.ts b/dcc-old/translations/desktop/desktop_fa.ts deleted file mode 100644 index 493b317f7b..0000000000 --- a/dcc-old/translations/desktop/desktop_fa.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerمرکز کنترلDeepin Control Centerمرکز کنترل دیپینDeepin Desktop Environment Control Centerمرکز کنترل محیط دسکتاپ دیپین \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_fi.ts b/dcc-old/translations/desktop/desktop_fi.ts deleted file mode 100644 index 02d26e4a96..0000000000 --- a/dcc-old/translations/desktop/desktop_fi.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterOhjauspaneliDeepin Control CenterDeepin ohjauspaneeliDeepin Desktop Environment Control CenterDeepin-työpöytäympäristön ohjauspaneeli \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_fil.ts b/dcc-old/translations/desktop/desktop_fil.ts deleted file mode 100644 index 71a9757384..0000000000 --- a/dcc-old/translations/desktop/desktop_fil.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_fr.ts b/dcc-old/translations/desktop/desktop_fr.ts deleted file mode 100644 index 85719dd033..0000000000 --- a/dcc-old/translations/desktop/desktop_fr.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentre de contrôleDeepin Control CenterCentre de contrôle DeepinDeepin Desktop Environment Control CenterCentre de contrôle de l’environnement de bureau Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_gl.ts b/dcc-old/translations/desktop/desktop_gl.ts deleted file mode 100644 index 1b4f37ef91..0000000000 --- a/dcc-old/translations/desktop/desktop_gl.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_gl_ES.ts b/dcc-old/translations/desktop/desktop_gl_ES.ts deleted file mode 100644 index 5fcd66bb8e..0000000000 --- a/dcc-old/translations/desktop/desktop_gl_ES.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentro de ControlDeepin Control CenterCentro de control de DeepinDeepin Desktop Environment Control CenterCentro de control de ambiente de escritorio Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_he.ts b/dcc-old/translations/desktop/desktop_he.ts deleted file mode 100644 index 62ec61c266..0000000000 --- a/dcc-old/translations/desktop/desktop_he.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerמרכז בקרהDeepin Control Centerמרכז הבקרה של DeepinDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_hi_IN.ts b/dcc-old/translations/desktop/desktop_hi_IN.ts deleted file mode 100644 index 351ec5d7d8..0000000000 --- a/dcc-old/translations/desktop/desktop_hi_IN.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerनियंत्रण केंद्रDeepin Control Centerडीपइन नियंत्रण केंद्रDeepin Desktop Environment Control Centerडीपिन डेस्कटॉप वातावरण नियंत्रण केंद्र \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_hr.ts b/dcc-old/translations/desktop/desktop_hr.ts deleted file mode 100644 index 3892bfab0b..0000000000 --- a/dcc-old/translations/desktop/desktop_hr.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterSredište upravljanjaDeepin Control CenterDeepin kontrolni centarDeepin Desktop Environment Control CenterKontrolni centar Deepin radnog okruženja \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_hu.ts b/dcc-old/translations/desktop/desktop_hu.ts deleted file mode 100644 index f875727c18..0000000000 --- a/dcc-old/translations/desktop/desktop_hu.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterVezérlőpultDeepin Control CenterDeepin® VezérlőpultDeepin Desktop Environment Control CenterDeepin® Asztali Környezet Vezérlőpult \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_hy.ts b/dcc-old/translations/desktop/desktop_hy.ts deleted file mode 100644 index d2f1ce4dac..0000000000 --- a/dcc-old/translations/desktop/desktop_hy.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterՂեկավարման ԿենտրոնDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_id.ts b/dcc-old/translations/desktop/desktop_id.ts deleted file mode 100644 index 4ddf4608fd..0000000000 --- a/dcc-old/translations/desktop/desktop_id.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterPusat KontrolDeepin Control CenterPusat Kontrol DeepinDeepin Desktop Environment Control CenterPusat Kontrol Lingkungan Desktop Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_id_ID.ts b/dcc-old/translations/desktop/desktop_id_ID.ts deleted file mode 100644 index 72d3391132..0000000000 --- a/dcc-old/translations/desktop/desktop_id_ID.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_it.ts b/dcc-old/translations/desktop/desktop_it.ts deleted file mode 100644 index 7547f72bc9..0000000000 --- a/dcc-old/translations/desktop/desktop_it.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentro di ControlloDeepin Control CenterCentro di Controllo di DeepinDeepin Desktop Environment Control CenterCentro di Controllo del Deepin Desktop Environment \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ja.ts b/dcc-old/translations/desktop/desktop_ja.ts deleted file mode 100644 index ad715ff8e4..0000000000 --- a/dcc-old/translations/desktop/desktop_ja.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterコントロールセンターDeepin Control CenterDeepin コントロールセンターDeepin Desktop Environment Control CenterDeepin デスクトップ環境のコントロールセンター \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ka.ts b/dcc-old/translations/desktop/desktop_ka.ts deleted file mode 100644 index 517aff2aab..0000000000 --- a/dcc-old/translations/desktop/desktop_ka.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerმართვის ცენტრიDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_kab.ts b/dcc-old/translations/desktop/desktop_kab.ts deleted file mode 100644 index 97a806d9b2..0000000000 --- a/dcc-old/translations/desktop/desktop_kab.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterAmmas n usenqedDeepin Control CenterAmmas n usenqed n DeepinDeepin Desktop Environment Control CenterAmmas n usenqed n twennaḍt n tnarit n Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_kk.ts b/dcc-old/translations/desktop/desktop_kk.ts deleted file mode 100644 index db8f976c8d..0000000000 --- a/dcc-old/translations/desktop/desktop_kk.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_km_KH.ts b/dcc-old/translations/desktop/desktop_km_KH.ts deleted file mode 100644 index 9849292b6c..0000000000 --- a/dcc-old/translations/desktop/desktop_km_KH.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerមជ្ឈមណ្ឌលបញ្ជាDeepin Control Centerមជ្ឈមណ្ឌលបញ្ជា DeepinDeepin Desktop Environment Control Centerមជ្ឈមណ្ឌលបញ្ជាបរិស្ថានផ្ទៃតុ Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_kn_IN.ts b/dcc-old/translations/desktop/desktop_kn_IN.ts deleted file mode 100644 index 877ca3380c..0000000000 --- a/dcc-old/translations/desktop/desktop_kn_IN.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ko.ts b/dcc-old/translations/desktop/desktop_ko.ts deleted file mode 100644 index 7da9841eac..0000000000 --- a/dcc-old/translations/desktop/desktop_ko.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Center제어 센터Deepin Control CenterDeepin 제어 센터Deepin Desktop Environment Control CenterDeepin 바탕화면 환경 제어 센터 \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ku.ts b/dcc-old/translations/desktop/desktop_ku.ts deleted file mode 100644 index 4cd06dc825..0000000000 --- a/dcc-old/translations/desktop/desktop_ku.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ku_IQ.ts b/dcc-old/translations/desktop/desktop_ku_IQ.ts deleted file mode 100644 index 58ea01d125..0000000000 --- a/dcc-old/translations/desktop/desktop_ku_IQ.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ky.ts b/dcc-old/translations/desktop/desktop_ky.ts deleted file mode 100644 index 7564e3187f..0000000000 --- a/dcc-old/translations/desktop/desktop_ky.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ky@Arab.ts b/dcc-old/translations/desktop/desktop_ky@Arab.ts deleted file mode 100644 index ebf5ff775c..0000000000 --- a/dcc-old/translations/desktop/desktop_ky@Arab.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_la.ts b/dcc-old/translations/desktop/desktop_la.ts deleted file mode 100644 index d1f07a8eb4..0000000000 --- a/dcc-old/translations/desktop/desktop_la.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_lo.ts b/dcc-old/translations/desktop/desktop_lo.ts deleted file mode 100644 index a1f1570e0e..0000000000 --- a/dcc-old/translations/desktop/desktop_lo.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_lt.ts b/dcc-old/translations/desktop/desktop_lt.ts deleted file mode 100644 index 3067067249..0000000000 --- a/dcc-old/translations/desktop/desktop_lt.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterValdymo centrasDeepin Control CenterDeepin valdymo centrasDeepin Desktop Environment Control CenterDeepin darbalaukio aplinkos valdymo centras \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_lv.ts b/dcc-old/translations/desktop/desktop_lv.ts deleted file mode 100644 index 68553acacd..0000000000 --- a/dcc-old/translations/desktop/desktop_lv.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ml.ts b/dcc-old/translations/desktop/desktop_ml.ts deleted file mode 100644 index cfb7559bba..0000000000 --- a/dcc-old/translations/desktop/desktop_ml.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_mn.ts b/dcc-old/translations/desktop/desktop_mn.ts deleted file mode 100644 index c045367c6f..0000000000 --- a/dcc-old/translations/desktop/desktop_mn.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterУдирдлагын хэсэгDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_mr.ts b/dcc-old/translations/desktop/desktop_mr.ts deleted file mode 100644 index ff908b464f..0000000000 --- a/dcc-old/translations/desktop/desktop_mr.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ms.ts b/dcc-old/translations/desktop/desktop_ms.ts deleted file mode 100644 index 9d7a58fe5f..0000000000 --- a/dcc-old/translations/desktop/desktop_ms.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterPusat KawalanDeepin Control CenterPusat Kawalan DeepinDeepin Desktop Environment Control CenterPusat Kawalan Persekitaran Atas Meja Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_nb.ts b/dcc-old/translations/desktop/desktop_nb.ts deleted file mode 100644 index 3c6b097376..0000000000 --- a/dcc-old/translations/desktop/desktop_nb.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterKontrollsenterDeepin Control CenterDeepin kontrollsenterDeepin Desktop Environment Control CenterDeepin Desktop Environment Kontrollsenter \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ne.ts b/dcc-old/translations/desktop/desktop_ne.ts deleted file mode 100644 index 817e102f41..0000000000 --- a/dcc-old/translations/desktop/desktop_ne.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerनियन्त्रण केन्द्रDeepin Control CenterDeepin Desktop Environment Control Centerडीपिन डेस्कटप वातावरण नियन्त्रण केन्द्र \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_nl.ts b/dcc-old/translations/desktop/desktop_nl.ts deleted file mode 100644 index 5dce4e30e2..0000000000 --- a/dcc-old/translations/desktop/desktop_nl.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterInstellingencentrumDeepin Control CenterDeepin SysteeminstellingenDeepin Desktop Environment Control CenterDeepin Systeeminstellingen \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_pa.ts b/dcc-old/translations/desktop/desktop_pa.ts deleted file mode 100644 index aa922a017a..0000000000 --- a/dcc-old/translations/desktop/desktop_pa.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerਕੰਟਰੋਲ ਸੈਂਟਰDeepin Control CenterDeepin Desktop Environment Control Centerਡੀਪਿਨ ਡੈਸਕਟਾਪ ਇੰਵਾਇਰਨਮੈਂਟ ਕੰਟਰੋਲ ਸੈਂਟਰ \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_pam.ts b/dcc-old/translations/desktop/desktop_pam.ts deleted file mode 100644 index dfc125df0b..0000000000 --- a/dcc-old/translations/desktop/desktop_pam.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_pl.ts b/dcc-old/translations/desktop/desktop_pl.ts deleted file mode 100644 index 92805b65c2..0000000000 --- a/dcc-old/translations/desktop/desktop_pl.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentrum kontroliDeepin Control CenterCentrum kontroli DeepinDeepin Desktop Environment Control CenterCentrum kontroli środowiska Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ps.ts b/dcc-old/translations/desktop/desktop_ps.ts deleted file mode 100644 index c44f0f04d5..0000000000 --- a/dcc-old/translations/desktop/desktop_ps.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_pt.ts b/dcc-old/translations/desktop/desktop_pt.ts deleted file mode 100644 index 1df3e281cb..0000000000 --- a/dcc-old/translations/desktop/desktop_pt.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentro de ControloDeepin Control CenterCentro de Controlo DeepinDeepin Desktop Environment Control CenterCentro de Controlo do Ambiente de trabalho Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_pt_BR.ts b/dcc-old/translations/desktop/desktop_pt_BR.ts deleted file mode 100644 index 3beb9d1db4..0000000000 --- a/dcc-old/translations/desktop/desktop_pt_BR.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentral de ControleDeepin Control Centerdeepin Central de ControleDeepin Desktop Environment Control CenterCentral de Controle do Deepin Desktop Environment \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ro.ts b/dcc-old/translations/desktop/desktop_ro.ts deleted file mode 100644 index 6619625168..0000000000 --- a/dcc-old/translations/desktop/desktop_ro.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterCentru ControlDeepin Control CenterPanou de Control DeepinDeepin Desktop Environment Control CenterCentru Control Mediu Desktop Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ru.ts b/dcc-old/translations/desktop/desktop_ru.ts deleted file mode 100644 index 1c419742fa..0000000000 --- a/dcc-old/translations/desktop/desktop_ru.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterЦентр УправленияDeepin Control CenterЦентр Управления DeepinDeepin Desktop Environment Control CenterЦентр Управления Окружения Рабочего Стола Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ru_UA.ts b/dcc-old/translations/desktop/desktop_ru_UA.ts deleted file mode 100644 index 946bd69748..0000000000 --- a/dcc-old/translations/desktop/desktop_ru_UA.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_sc.ts b/dcc-old/translations/desktop/desktop_sc.ts deleted file mode 100644 index 1ab55c06be..0000000000 --- a/dcc-old/translations/desktop/desktop_sc.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_si.ts b/dcc-old/translations/desktop/desktop_si.ts deleted file mode 100644 index 9dd6bcc7c2..0000000000 --- a/dcc-old/translations/desktop/desktop_si.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerපාලන මධ්‍යස්ථානයDeepin Control CenterDeepin පාලන මධ්‍යස්ථානයDeepin Desktop Environment Control CenterDeepin ඩෙස්ක්ටොප් පරිසර පාලන මධ්‍යස්ථානය \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_sk.ts b/dcc-old/translations/desktop/desktop_sk.ts deleted file mode 100644 index f0cb78ce1d..0000000000 --- a/dcc-old/translations/desktop/desktop_sk.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterOvládacie centrumDeepin Control CenterDeepin Ovládacie centrumDeepin Desktop Environment Control CenterOvládacie centrum Deepin Desktop Environment \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_sl.ts b/dcc-old/translations/desktop/desktop_sl.ts deleted file mode 100644 index fae9276874..0000000000 --- a/dcc-old/translations/desktop/desktop_sl.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterNadzorni centerDeepin Control CenterNadzorni center DeepinDeepin Desktop Environment Control CenterDeepin Desktop Enviroment nadzorni center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_sq.ts b/dcc-old/translations/desktop/desktop_sq.ts deleted file mode 100644 index 1b80ad43cc..0000000000 --- a/dcc-old/translations/desktop/desktop_sq.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterQendër KontrolliDeepin Control CenterQendër Kontrolli DeepinDeepin Desktop Environment Control CenterQendër Kontrolli e Mjedisit Desktop Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_sr.ts b/dcc-old/translations/desktop/desktop_sr.ts deleted file mode 100644 index b48f3516c2..0000000000 --- a/dcc-old/translations/desktop/desktop_sr.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterКонтролни ЦентарDeepin Control CenterДипин Контролни ЦентарDeepin Desktop Environment Control CenterДипин Радно Окружење Контролни Центар \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_sv.ts b/dcc-old/translations/desktop/desktop_sv.ts deleted file mode 100644 index ccbcb0b8e2..0000000000 --- a/dcc-old/translations/desktop/desktop_sv.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterKontrollcenterDeepin Control CenterDeepin KontrollcenterDeepin Desktop Environment Control CenterDeepin Desktop Environment Kontrollcenter \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_sv_SE.ts b/dcc-old/translations/desktop/desktop_sv_SE.ts deleted file mode 100644 index 45d907bc53..0000000000 --- a/dcc-old/translations/desktop/desktop_sv_SE.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_sw.ts b/dcc-old/translations/desktop/desktop_sw.ts deleted file mode 100644 index fad27b35af..0000000000 --- a/dcc-old/translations/desktop/desktop_sw.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterKituo cha ulinziDeepin Control CenterDeepin Desktop Environment Control CenterKituo cha ulinzi za eneo la kazi ya Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ta.ts b/dcc-old/translations/desktop/desktop_ta.ts deleted file mode 100644 index ab212a92b4..0000000000 --- a/dcc-old/translations/desktop/desktop_ta.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerகட்டுப்பாட்டு மையம்Deepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_te.ts b/dcc-old/translations/desktop/desktop_te.ts deleted file mode 100644 index 89e208080d..0000000000 --- a/dcc-old/translations/desktop/desktop_te.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_th.ts b/dcc-old/translations/desktop/desktop_th.ts deleted file mode 100644 index e44b770b60..0000000000 --- a/dcc-old/translations/desktop/desktop_th.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_tr.ts b/dcc-old/translations/desktop/desktop_tr.ts deleted file mode 100644 index 1809049ff6..0000000000 --- a/dcc-old/translations/desktop/desktop_tr.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterKontrol MerkeziDeepin Control CenterDeepin Kontrol MerkeziDeepin Desktop Environment Control CenterDeepin Masaüstü Ortamı Kontrol Merkezi \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_tzm.ts b/dcc-old/translations/desktop/desktop_tzm.ts deleted file mode 100644 index 998f594ca5..0000000000 --- a/dcc-old/translations/desktop/desktop_tzm.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ug.ts b/dcc-old/translations/desktop/desktop_ug.ts deleted file mode 100644 index 6452ebb85f..0000000000 --- a/dcc-old/translations/desktop/desktop_ug.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Centerكونترول مەركىزى Deepin Control CenterDeepin كونترول مەركىزىDeepin Desktop Environment Control Centerئېكران مۇھىتى كونترول قىلىش مەركىزى \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_uk.ts b/dcc-old/translations/desktop/desktop_uk.ts deleted file mode 100644 index 05293cc17f..0000000000 --- a/dcc-old/translations/desktop/desktop_uk.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterЦентр керуванняDeepin Control CenterЦентр керування DeepinDeepin Desktop Environment Control CenterЦентр керування стільничним середовищем Deepin \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_ur.ts b/dcc-old/translations/desktop/desktop_ur.ts deleted file mode 100644 index 5f0062c791..0000000000 --- a/dcc-old/translations/desktop/desktop_ur.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_uz.ts b/dcc-old/translations/desktop/desktop_uz.ts deleted file mode 100644 index 3d55e648ff..0000000000 --- a/dcc-old/translations/desktop/desktop_uz.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterDeepin Control CenterDeepin Desktop Environment Control Center \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_vi.ts b/dcc-old/translations/desktop/desktop_vi.ts deleted file mode 100644 index 266be1884d..0000000000 --- a/dcc-old/translations/desktop/desktop_vi.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl CenterTrung tâm kiểm soátDeepin Control CenterTrung tâm Điều khiển DeepinDeepin Desktop Environment Control CenterĐiều khiển Deepin Desktop Environment \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_zh_CN.ts b/dcc-old/translations/desktop/desktop_zh_CN.ts deleted file mode 100644 index 69be9f8416..0000000000 --- a/dcc-old/translations/desktop/desktop_zh_CN.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Center控制中心Deepin Control Center深度控制中心 Deepin Desktop Environment Control Center深度桌面环境控制中心 \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_zh_HK.ts b/dcc-old/translations/desktop/desktop_zh_HK.ts deleted file mode 100644 index d98d9761ef..0000000000 --- a/dcc-old/translations/desktop/desktop_zh_HK.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Center控制中心Deepin Control CenterDeepin 控制中心Deepin Desktop Environment Control CenterDeepin 控制中心 \ No newline at end of file diff --git a/dcc-old/translations/desktop/desktop_zh_TW.ts b/dcc-old/translations/desktop/desktop_zh_TW.ts deleted file mode 100644 index 70af29fae3..0000000000 --- a/dcc-old/translations/desktop/desktop_zh_TW.ts +++ /dev/null @@ -1 +0,0 @@ -desktopControl Center控制中心Deepin Control CenterDeepin 控制中心Deepin Desktop Environment Control CenterDeepin 桌面環境的控制中心 \ No newline at end of file diff --git a/src/dde-control-center/CMakeLists.txt b/src/dde-control-center/CMakeLists.txt index 6f80ea88cc..1a7fa7e32a 100644 --- a/src/dde-control-center/CMakeLists.txt +++ b/src/dde-control-center/CMakeLists.txt @@ -55,20 +55,11 @@ file(GLOB Control_Center_SRCS "*.h" "*.cpp" ) -if (BUILD_DCC_OLD) - add_library(${Control_Center_Name} SHARED - ${Control_Center_SRCS} - qrc/dcc.qrc - ) - set_target_properties(${Control_Center_Name} PROPERTIES - OUTPUT_NAME dde-control-center-lib - ) -else() - add_executable(${Control_Center_Name} - ${Control_Center_SRCS} - qrc/dcc.qrc - ) -endif() + +add_executable(${Control_Center_Name} + ${Control_Center_SRCS} + qrc/dcc.qrc +) target_compile_definitions(${Control_Center_Name} PRIVATE CVERSION="${CMAKE_PROJECT_VERSION}") @@ -102,11 +93,7 @@ file(GLOB_RECURSE DCC_Translation_QML_FILES ${DCC_PROJECT_ROOT_DIR}/qml/*.qml ${ file(GLOB_RECURSE DCC_Translation_SOURCE_FILES ${DCC_PROJECT_ROOT_DIR}/src/*.cpp ${DCC_PROJECT_ROOT_DIR}/src/*.h) dcc_handle_plugin_translation(NAME ${Control_Center_Name} SOURCE_DIR ${DCC_PROJECT_ROOT_DIR} QML_FILES ${DCC_Translation_QML_FILES} SOURCE_FILES ${DCC_Translation_SOURCE_FILES}) # bin -if (BUILD_DCC_OLD) - install(TARGETS ${Control_Center_Name} DESTINATION ${DCC_DEBUG_LIBDIR}) -else() - install(TARGETS ${Control_Center_Name} DESTINATION ${CMAKE_INSTALL_BINDIR}) -endif() +install(TARGETS ${Control_Center_Name} DESTINATION ${CMAKE_INSTALL_BINDIR}) install(DIRECTORY "${DCC_PROJECT_ROOT_DIR}/qml/" DESTINATION ${DCC_INSTALL_DIR}) #----------------------------install config------------------------------ #desktop @@ -139,19 +126,11 @@ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/org.deepin.dde.control-center.service file(GLOB HEADERS "${DCC_PROJECT_ROOT_DIR}/include/*") set(INCLUDE_INSTALL_DIR ${CMAKE_INSTALL_INCLUDEDIR}/dde-control-center) install(FILES ${HEADERS} DESTINATION ${INCLUDE_INSTALL_DIR}) -if (BUILD_DCC_OLD) - configure_package_config_file(${DCC_PROJECT_ROOT_DIR}/misc/DdeControlCenterConfigOld.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfig.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter - PATH_VARS INCLUDE_INSTALL_DIR - INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) -else() - configure_package_config_file(${DCC_PROJECT_ROOT_DIR}/misc/DdeControlCenterConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfig.cmake - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter - PATH_VARS INCLUDE_INSTALL_DIR - INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) -endif() +configure_package_config_file(${DCC_PROJECT_ROOT_DIR}/misc/DdeControlCenterConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfig.cmake + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/DdeControlCenter + PATH_VARS INCLUDE_INSTALL_DIR + INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) write_basic_package_version_file( "${CMAKE_CURRENT_BINARY_DIR}/DdeControlCenterConfigVersion.cmake"