├── .git-blame-ignore-revs ├── .gitignore ├── .gitlab-ci.yml ├── .kde-ci.yml ├── CMakeLists.txt ├── KF6JobWidgetsConfig.cmake.in ├── LICENSES ├── CC0-1.0.txt ├── LGPL-2.0-only.txt ├── LGPL-2.0-or-later.txt ├── LGPL-3.0-only.txt └── LicenseRef-KDE-Accepted-LGPL.txt ├── README.md ├── autotests ├── CMakeLists.txt └── kuiserver2jobtrackertest.cpp ├── metainfo.yaml ├── poqm ├── af │ └── kjobwidgets6_qt.po ├── ar │ └── kjobwidgets6_qt.po ├── as │ └── kjobwidgets6_qt.po ├── ast │ └── kjobwidgets6_qt.po ├── az │ └── kjobwidgets6_qt.po ├── be │ └── kjobwidgets6_qt.po ├── be@latin │ └── kjobwidgets6_qt.po ├── bg │ └── kjobwidgets6_qt.po ├── bn │ └── kjobwidgets6_qt.po ├── bn_IN │ └── kjobwidgets6_qt.po ├── br │ └── kjobwidgets6_qt.po ├── bs │ └── kjobwidgets6_qt.po ├── ca │ └── kjobwidgets6_qt.po ├── ca@valencia │ └── kjobwidgets6_qt.po ├── crh │ └── kjobwidgets6_qt.po ├── cs │ └── kjobwidgets6_qt.po ├── csb │ └── kjobwidgets6_qt.po ├── cy │ └── kjobwidgets6_qt.po ├── da │ └── kjobwidgets6_qt.po ├── de │ └── kjobwidgets6_qt.po ├── el │ └── kjobwidgets6_qt.po ├── en │ └── kjobwidgets6_qt.po ├── en_GB │ └── kjobwidgets6_qt.po ├── eo │ └── kjobwidgets6_qt.po ├── es │ └── kjobwidgets6_qt.po ├── et │ └── kjobwidgets6_qt.po ├── eu │ └── kjobwidgets6_qt.po ├── fa │ └── kjobwidgets6_qt.po ├── fi │ └── kjobwidgets6_qt.po ├── fr │ └── kjobwidgets6_qt.po ├── fy │ └── kjobwidgets6_qt.po ├── ga │ └── kjobwidgets6_qt.po ├── gd │ └── kjobwidgets6_qt.po ├── gl │ └── kjobwidgets6_qt.po ├── gu │ └── kjobwidgets6_qt.po ├── ha │ └── kjobwidgets6_qt.po ├── he │ └── kjobwidgets6_qt.po ├── hi │ └── kjobwidgets6_qt.po ├── hne │ └── kjobwidgets6_qt.po ├── hr │ └── kjobwidgets6_qt.po ├── hsb │ └── kjobwidgets6_qt.po ├── hu │ └── kjobwidgets6_qt.po ├── hy │ └── kjobwidgets6_qt.po ├── ia │ └── kjobwidgets6_qt.po ├── id │ └── kjobwidgets6_qt.po ├── is │ └── kjobwidgets6_qt.po ├── it │ └── kjobwidgets6_qt.po ├── ja │ └── kjobwidgets6_qt.po ├── ka │ └── kjobwidgets6_qt.po ├── kk │ └── kjobwidgets6_qt.po ├── km │ └── kjobwidgets6_qt.po ├── kn │ └── kjobwidgets6_qt.po ├── ko │ └── kjobwidgets6_qt.po ├── ku │ └── kjobwidgets6_qt.po ├── lb │ └── kjobwidgets6_qt.po ├── lt │ └── kjobwidgets6_qt.po ├── lv │ └── kjobwidgets6_qt.po ├── mai │ └── kjobwidgets6_qt.po ├── mk │ └── kjobwidgets6_qt.po ├── ml │ └── kjobwidgets6_qt.po ├── mr │ └── kjobwidgets6_qt.po ├── ms │ └── kjobwidgets6_qt.po ├── nb │ └── kjobwidgets6_qt.po ├── nds │ └── kjobwidgets6_qt.po ├── ne │ └── kjobwidgets6_qt.po ├── nl │ └── kjobwidgets6_qt.po ├── nn │ └── kjobwidgets6_qt.po ├── oc │ └── kjobwidgets6_qt.po ├── or │ └── kjobwidgets6_qt.po ├── pa │ └── kjobwidgets6_qt.po ├── pl │ └── kjobwidgets6_qt.po ├── ps │ └── kjobwidgets6_qt.po ├── pt │ └── kjobwidgets6_qt.po ├── pt_BR │ └── kjobwidgets6_qt.po ├── ro │ └── kjobwidgets6_qt.po ├── ru │ └── kjobwidgets6_qt.po ├── sa │ └── kjobwidgets6_qt.po ├── se │ └── kjobwidgets6_qt.po ├── si │ └── kjobwidgets6_qt.po ├── sk │ └── kjobwidgets6_qt.po ├── sl │ └── kjobwidgets6_qt.po ├── sq │ └── kjobwidgets6_qt.po ├── sr │ └── kjobwidgets6_qt.po ├── sr@ijekavian │ └── kjobwidgets6_qt.po ├── sr@ijekavianlatin │ └── kjobwidgets6_qt.po ├── sr@latin │ └── kjobwidgets6_qt.po ├── sv │ └── kjobwidgets6_qt.po ├── ta │ └── kjobwidgets6_qt.po ├── te │ └── kjobwidgets6_qt.po ├── tg │ └── kjobwidgets6_qt.po ├── th │ └── kjobwidgets6_qt.po ├── tr │ └── kjobwidgets6_qt.po ├── tt │ └── kjobwidgets6_qt.po ├── ug │ └── kjobwidgets6_qt.po ├── uk │ └── kjobwidgets6_qt.po ├── uz │ └── kjobwidgets6_qt.po ├── uz@cyrillic │ └── kjobwidgets6_qt.po ├── vi │ └── kjobwidgets6_qt.po ├── wa │ └── kjobwidgets6_qt.po ├── xh │ └── kjobwidgets6_qt.po ├── zh_CN │ └── kjobwidgets6_qt.po ├── zh_HK │ └── kjobwidgets6_qt.po └── zh_TW │ └── kjobwidgets6_qt.po ├── python ├── CMakeLists.txt ├── bindings.h └── typesystem_kjobwidgets.xml ├── src ├── CMakeLists.txt ├── Messages.sh ├── config-kjobwidgets.h.cmake ├── kabstractwidgetjobtracker.cpp ├── kabstractwidgetjobtracker.h ├── kabstractwidgetjobtracker_p.h ├── kdialogjobuidelegate.cpp ├── kdialogjobuidelegate.h ├── kjobtrackerformatters.cpp ├── kjobtrackerformatters_p.h ├── kjobwidgets-index.qdoc ├── kjobwidgets.qdoc ├── kjobwidgets.qdocconf ├── knotificationjobuidelegate.cpp ├── knotificationjobuidelegate.h ├── kstatusbarjobtracker.cpp ├── kstatusbarjobtracker.h ├── kstatusbarjobtracker_p.h ├── kuiserverjobtracker.cpp ├── kuiserverjobtracker.h ├── kuiserverjobtracker_p.h ├── kuiserverv2jobtracker.cpp ├── kuiserverv2jobtracker.h ├── kuiserverv2jobtracker_p.h ├── kwidgetjobtracker.cpp ├── kwidgetjobtracker.h ├── kwidgetjobtracker_p.h ├── org.kde.JobView.xml ├── org.kde.JobViewServer.xml ├── org.kde.JobViewServerV2.xml ├── org.kde.JobViewV2.xml └── org.kde.JobViewV3.xml └── tests ├── CMakeLists.txt ├── kjobcreator.cpp ├── kjobcreator.h ├── kjobcreator.ui ├── kjobtrackerstest.cpp └── kjobtrackerstest.h /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | #clang-format 2 | 9e07f46725a876b46daac2b0fbd06ab205a59a51 3 | 6570fe78531bf3de7a34aae1a1e00515ad06b718 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Ignore the following files 2 | *~ 3 | *.[oa] 4 | *.diff 5 | *.kate-swp 6 | *.kdev4 7 | .kdev_include_paths 8 | *.kdevelop.pcs 9 | *.moc 10 | *.moc.cpp 11 | *.orig 12 | *.user 13 | .*.swp 14 | .swp.* 15 | Doxyfile 16 | Makefile 17 | avail 18 | random_seed 19 | /build*/ 20 | CMakeLists.txt.user* 21 | *.unc-backup* 22 | .cmake/ 23 | /.clang-format 24 | /compile_commands.json 25 | .clangd 26 | .idea 27 | .vscode 28 | /cmake-build* 29 | .cache 30 | -------------------------------------------------------------------------------- /.gitlab-ci.yml: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2020 Volker Krause 2 | # SPDX-License-Identifier: CC0-1.0 3 | 4 | include: 5 | - project: sysadmin/ci-utilities 6 | file: 7 | - /gitlab-templates/linux-qt6.yml 8 | - /gitlab-templates/linux-qt6-next.yml 9 | - /gitlab-templates/android-qt6.yml 10 | - /gitlab-templates/freebsd-qt6.yml 11 | - /gitlab-templates/windows-qt6.yml 12 | - /gitlab-templates/xml-lint.yml 13 | - /gitlab-templates/yaml-lint.yml 14 | -------------------------------------------------------------------------------- /.kde-ci.yml: -------------------------------------------------------------------------------- 1 | Dependencies: 2 | - 'on': ['@all'] 3 | 'require': 4 | 'frameworks/extra-cmake-modules': '@same' 5 | 'frameworks/kcoreaddons': '@same' 6 | 'frameworks/kwidgetsaddons': '@same' 7 | 'frameworks/knotifications': '@same' 8 | 9 | Options: 10 | test-before-installing: True 11 | require-passing-tests-on: ['Linux', 'FreeBSD', 'Windows'] 12 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.16) 2 | 3 | set(KF_VERSION "6.15.0") # handled by release scripts 4 | set(KF_DEP_VERSION "6.14.0") # handled by release scripts 5 | project(KJobWidgets VERSION ${KF_VERSION}) 6 | 7 | include(FeatureSummary) 8 | find_package(ECM 6.14.0 NO_MODULE) 9 | set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake Modules." URL "https://commits.kde.org/extra-cmake-modules") 10 | feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND FATAL_ON_MISSING_REQUIRED_PACKAGES) 11 | 12 | set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH}) 13 | 14 | include(KDEInstallDirs) 15 | include(KDECMakeSettings) 16 | include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE) 17 | 18 | include(KDEGitCommitHooks) 19 | include(ECMQtDeclareLoggingCategory) 20 | include(ECMPoQmTools) 21 | include(ECMGenerateExportHeader) 22 | include(ECMSetupVersion) 23 | include(ECMGenerateHeaders) 24 | include(ECMDeprecationSettings) 25 | include(CMakePackageConfigHelpers) 26 | include(ECMGenerateQDoc) 27 | 28 | set(REQUIRED_QT_VERSION 6.7.0) 29 | find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets) 30 | 31 | if (Qt6Gui_VERSION VERSION_GREATER_EQUAL "6.10.0") 32 | find_package(Qt6GuiPrivate ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE) 33 | endif() 34 | 35 | if(NOT WIN32 AND NOT APPLE AND NOT ANDROID AND NOT HAIKU) 36 | option(WITH_X11 "Build with support for QX11Info::appUserTime()" ON) 37 | endif() 38 | 39 | # shall we use DBus? 40 | # enabled per default on Linux & BSD systems 41 | set(USE_DBUS_DEFAULT OFF) 42 | if(UNIX AND NOT APPLE AND NOT ANDROID AND NOT HAIKU) 43 | set(USE_DBUS_DEFAULT ON) 44 | endif() 45 | option(USE_DBUS "Build components using DBus" ${USE_DBUS_DEFAULT}) 46 | if(USE_DBUS) 47 | find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED DBus) 48 | set(HAVE_QTDBUS ${Qt6DBus_FOUND}) 49 | endif() 50 | 51 | find_package(KF6CoreAddons ${KF_DEP_VERSION} REQUIRED) 52 | find_package(KF6WidgetsAddons ${KF_DEP_VERSION} REQUIRED) 53 | find_package(KF6Notifications ${KF_DEP_VERSION} REQUIRED) 54 | 55 | set(EXCLUDE_DEPRECATED_BEFORE_AND_AT 0 CACHE STRING "Control the range of deprecated API excluded from the build [default=0].") 56 | 57 | set(kjobwidgets_version_header "${CMAKE_CURRENT_BINARY_DIR}/src/kjobwidgets_version.h") 58 | ecm_setup_version(PROJECT VARIABLE_PREFIX KJOBWIDGETS 59 | VERSION_HEADER "${kjobwidgets_version_header}" 60 | PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6JobWidgetsConfigVersion.cmake" 61 | SOVERSION 6) 62 | 63 | ecm_set_disabled_deprecation_versions( 64 | QT 6.9.0 65 | KF 6.13.0 66 | ) 67 | 68 | ecm_install_po_files_as_qm(poqm) 69 | 70 | add_subdirectory(src) 71 | 72 | option(BUILD_PYTHON_BINDINGS "Build Python bindings" ON) 73 | 74 | # Only Linux and FreeBSD CI has the relevant packages 75 | if (ANDROID OR APPLE OR WIN32 OR NOT BUILD_SHARED_LIBS) 76 | set(BUILD_PYTHON_BINDINGS OFF) 77 | endif() 78 | 79 | if (BUILD_PYTHON_BINDINGS) 80 | find_package(Python3 3.9 REQUIRED COMPONENTS Interpreter Development) 81 | find_package(Shiboken6 REQUIRED) 82 | find_package(PySide6 REQUIRED) 83 | endif() 84 | 85 | add_feature_info(PYTHON_BINDINGS ${BUILD_PYTHON_BINDINGS} "Python bindings") 86 | 87 | if (BUILD_PYTHON_BINDINGS) 88 | include(ECMGeneratePythonBindings) 89 | add_subdirectory(python) 90 | endif() 91 | 92 | if (BUILD_TESTING) 93 | add_subdirectory(tests) 94 | add_subdirectory(autotests) 95 | endif() 96 | 97 | # create a Config.cmake and a ConfigVersion.cmake file and install them 98 | set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6JobWidgets") 99 | 100 | configure_package_config_file( 101 | "${CMAKE_CURRENT_SOURCE_DIR}/KF6JobWidgetsConfig.cmake.in" 102 | "${CMAKE_CURRENT_BINARY_DIR}/KF6JobWidgetsConfig.cmake" 103 | PATH_VARS KDE_INSTALL_DBUSINTERFACEDIR 104 | INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR} 105 | ) 106 | 107 | install(FILES 108 | "${CMAKE_CURRENT_BINARY_DIR}/KF6JobWidgetsConfig.cmake" 109 | "${CMAKE_CURRENT_BINARY_DIR}/KF6JobWidgetsConfigVersion.cmake" 110 | DESTINATION "${CMAKECONFIG_INSTALL_DIR}" 111 | COMPONENT Devel 112 | ) 113 | 114 | install(EXPORT KF6JobWidgetsTargets DESTINATION "${CMAKECONFIG_INSTALL_DIR}" FILE KF6JobWidgetsTargets.cmake NAMESPACE KF6:: ) 115 | 116 | install(FILES 117 | ${kjobwidgets_version_header} 118 | DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KJobWidgets COMPONENT Devel 119 | ) 120 | 121 | include(ECMFeatureSummary) 122 | ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES) 123 | 124 | kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT) 125 | -------------------------------------------------------------------------------- /KF6JobWidgetsConfig.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | set(KJOBWIDGETS_DBUS_INTERFACES_DIR "@PACKAGE_KDE_INSTALL_DBUSINTERFACEDIR@") 4 | 5 | include(CMakeFindDependencyMacro) 6 | find_dependency(Qt6Widgets @REQUIRED_QT_VERSION@) 7 | find_dependency(KF6CoreAddons "@KF_DEP_VERSION@") 8 | 9 | include("${CMAKE_CURRENT_LIST_DIR}/KF6JobWidgetsTargets.cmake") 10 | -------------------------------------------------------------------------------- /LICENSES/CC0-1.0.txt: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /LICENSES/LGPL-3.0-only.txt: -------------------------------------------------------------------------------- 1 | GNU LESSER GENERAL PUBLIC LICENSE 2 | 3 | Version 3, 29 June 2007 4 | 5 | Copyright (C) 2007 Free Software Foundation, Inc. 6 | 7 | Everyone is permitted to copy and distribute verbatim copies of this license 8 | document, but changing it is not allowed. 9 | 10 | This version of the GNU Lesser General Public License incorporates the terms 11 | and conditions of version 3 of the GNU General Public License, supplemented 12 | by the additional permissions listed below. 13 | 14 | 0. Additional Definitions. 15 | 16 | 17 | 18 | As used herein, "this License" refers to version 3 of the GNU Lesser General 19 | Public License, and the "GNU GPL" refers to version 3 of the GNU General Public 20 | License. 21 | 22 | 23 | 24 | "The Library" refers to a covered work governed by this License, other than 25 | an Application or a Combined Work as defined below. 26 | 27 | 28 | 29 | An "Application" is any work that makes use of an interface provided by the 30 | Library, but which is not otherwise based on the Library. Defining a subclass 31 | of a class defined by the Library is deemed a mode of using an interface provided 32 | by the Library. 33 | 34 | 35 | 36 | A "Combined Work" is a work produced by combining or linking an Application 37 | with the Library. The particular version of the Library with which the Combined 38 | Work was made is also called the "Linked Version". 39 | 40 | 41 | 42 | The "Minimal Corresponding Source" for a Combined Work means the Corresponding 43 | Source for the Combined Work, excluding any source code for portions of the 44 | Combined Work that, considered in isolation, are based on the Application, 45 | and not on the Linked Version. 46 | 47 | 48 | 49 | The "Corresponding Application Code" for a Combined Work means the object 50 | code and/or source code for the Application, including any data and utility 51 | programs needed for reproducing the Combined Work from the Application, but 52 | excluding the System Libraries of the Combined Work. 53 | 54 | 1. Exception to Section 3 of the GNU GPL. 55 | 56 | You may convey a covered work under sections 3 and 4 of this License without 57 | being bound by section 3 of the GNU GPL. 58 | 59 | 2. Conveying Modified Versions. 60 | 61 | If you modify a copy of the Library, and, in your modifications, a facility 62 | refers to a function or data to be supplied by an Application that uses the 63 | facility (other than as an argument passed when the facility is invoked), 64 | then you may convey a copy of the modified version: 65 | 66 | a) under this License, provided that you make a good faith effort to ensure 67 | that, in the event an Application does not supply the function or data, the 68 | facility still operates, and performs whatever part of its purpose remains 69 | meaningful, or 70 | 71 | b) under the GNU GPL, with none of the additional permissions of this License 72 | applicable to that copy. 73 | 74 | 3. Object Code Incorporating Material from Library Header Files. 75 | 76 | The object code form of an Application may incorporate material from a header 77 | file that is part of the Library. You may convey such object code under terms 78 | of your choice, provided that, if the incorporated material is not limited 79 | to numerical parameters, data structure layouts and accessors, or small macros, 80 | inline functions and templates (ten or fewer lines in length), you do both 81 | of the following: 82 | 83 | a) Give prominent notice with each copy of the object code that the Library 84 | is used in it and that the Library and its use are covered by this License. 85 | 86 | b) Accompany the object code with a copy of the GNU GPL and this license document. 87 | 88 | 4. Combined Works. 89 | 90 | You may convey a Combined Work under terms of your choice that, taken together, 91 | effectively do not restrict modification of the portions of the Library contained 92 | in the Combined Work and reverse engineering for debugging such modifications, 93 | if you also do each of the following: 94 | 95 | a) Give prominent notice with each copy of the Combined Work that the Library 96 | is used in it and that the Library and its use are covered by this License. 97 | 98 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 99 | document. 100 | 101 | c) For a Combined Work that displays copyright notices during execution, include 102 | the copyright notice for the Library among these notices, as well as a reference 103 | directing the user to the copies of the GNU GPL and this license document. 104 | 105 | d) Do one of the following: 106 | 107 | 0) Convey the Minimal Corresponding Source under the terms of this License, 108 | and the Corresponding Application Code in a form suitable for, and under terms 109 | that permit, the user to recombine or relink the Application with a modified 110 | version of the Linked Version to produce a modified Combined Work, in the 111 | manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 112 | 113 | 1) Use a suitable shared library mechanism for linking with the Library. A 114 | suitable mechanism is one that (a) uses at run time a copy of the Library 115 | already present on the user's computer system, and (b) will operate properly 116 | with a modified version of the Library that is interface-compatible with the 117 | Linked Version. 118 | 119 | e) Provide Installation Information, but only if you would otherwise be required 120 | to provide such information under section 6 of the GNU GPL, and only to the 121 | extent that such information is necessary to install and execute a modified 122 | version of the Combined Work produced by recombining or relinking the Application 123 | with a modified version of the Linked Version. (If you use option 4d0, the 124 | Installation Information must accompany the Minimal Corresponding Source and 125 | Corresponding Application Code. If you use option 4d1, you must provide the 126 | Installation Information in the manner specified by section 6 of the GNU GPL 127 | for conveying Corresponding Source.) 128 | 129 | 5. Combined Libraries. 130 | 131 | You may place library facilities that are a work based on the Library side 132 | by side in a single library together with other library facilities that are 133 | not Applications and are not covered by this License, and convey such a combined 134 | library under terms of your choice, if you do both of the following: 135 | 136 | a) Accompany the combined library with a copy of the same work based on the 137 | Library, uncombined with any other library facilities, conveyed under the 138 | terms of this License. 139 | 140 | b) Give prominent notice with the combined library that part of it is a work 141 | based on the Library, and explaining where to find the accompanying uncombined 142 | form of the same work. 143 | 144 | 6. Revised Versions of the GNU Lesser General Public License. 145 | 146 | The Free Software Foundation may publish revised and/or new versions of the 147 | GNU Lesser General Public License from time to time. Such new versions will 148 | be similar in spirit to the present version, but may differ in detail to address 149 | new problems or concerns. 150 | 151 | Each version is given a distinguishing version number. If the Library as you 152 | received it specifies that a certain numbered version of the GNU Lesser General 153 | Public License "or any later version" applies to it, you have the option of 154 | following the terms and conditions either of that published version or of 155 | any later version published by the Free Software Foundation. If the Library 156 | as you received it does not specify a version number of the GNU Lesser General 157 | Public License, you may choose any version of the GNU Lesser General Public 158 | License ever published by the Free Software Foundation. 159 | 160 | If the Library as you received it specifies that a proxy can decide whether 161 | future versions of the GNU Lesser General Public License shall apply, that 162 | proxy's public statement of acceptance of any version is permanent authorization 163 | for you to choose that version for the Library. 164 | -------------------------------------------------------------------------------- /LICENSES/LicenseRef-KDE-Accepted-LGPL.txt: -------------------------------------------------------------------------------- 1 | This library is free software; you can redistribute it and/or 2 | modify it under the terms of the GNU Lesser General Public 3 | License as published by the Free Software Foundation; either 4 | version 3 of the license or (at your option) any later version 5 | that is accepted by the membership of KDE e.V. (or its successor 6 | approved by the membership of KDE e.V.), which shall act as a 7 | proxy as defined in Section 6 of version 3 of the license. 8 | 9 | This program is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # KJobWidgets 2 | 3 | Widgets for showing progress of asynchronous jobs 4 | 5 | ## Introduction 6 | 7 | KJobWIdgets provides widgets for showing progress of asynchronous jobs. 8 | 9 | -------------------------------------------------------------------------------- /autotests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | 2 | find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Test ) 3 | add_definitions(-DQT_FORCE_ASSERTS=1) 4 | 5 | include(ECMAddTests) 6 | 7 | ecm_add_tests( 8 | kuiserver2jobtrackertest.cpp 9 | LINK_LIBRARIES Qt6::Test Qt6::Widgets KF6::JobWidgets 10 | ) 11 | -------------------------------------------------------------------------------- /autotests/kuiserver2jobtrackertest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE libraries 3 | SPDX-FileCopyrightText: 2024 Méven Car 4 | 5 | SPDX-License-Identifier: LGPL-2.0-or-later 6 | */ 7 | 8 | #include "../tests/kjobtrackerstest.h" 9 | #include 10 | #include 11 | #include 12 | 13 | #include 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | class KTestJobTracker : public KJobTrackerInterface 22 | { 23 | Q_OBJECT 24 | 25 | public: 26 | KTestJobTracker(QObject *parent = nullptr) 27 | : KJobTrackerInterface(parent) 28 | { 29 | } 30 | 31 | public Q_SLOTS: 32 | void registerJob(KJob *job) override 33 | { 34 | registeredJobs.append(job); 35 | } 36 | void unregisterJob(KJob *job) override 37 | { 38 | unregisteredJobs.append(job); 39 | } 40 | 41 | protected Q_SLOTS: 42 | void finished(KJob *job) override 43 | { 44 | finishedSpy.append(job); 45 | } 46 | void suspended(KJob *job) override 47 | { 48 | suspendedSpy.append(job); 49 | } 50 | void resumed(KJob *job) override 51 | { 52 | resumedSpy.append(job); 53 | } 54 | void description(KJob * /*job */, const QString &title, const QPair &field1, const QPair &field2) override 55 | { 56 | jobTitle = title; 57 | jobField1 = field1; 58 | jobField2 = field2; 59 | } 60 | void infoMessage(KJob * /* job */, const QString &message) override 61 | { 62 | jobInfoMessage = message; 63 | } 64 | void warning(KJob * /* job */, const QString &message) override 65 | { 66 | jobWarning = message; 67 | } 68 | void totalAmount(KJob * /* job */, KJob::Unit unit, qulonglong amount) override 69 | { 70 | jobTotalUnit = unit; 71 | jobTotalAmount = amount; 72 | } 73 | void processedAmount(KJob * /* job */, KJob::Unit unit, qulonglong amount) override 74 | { 75 | jobUnit = unit; 76 | jobAmount = amount; 77 | } 78 | void percent(KJob * /* job */, unsigned long percent) override 79 | { 80 | jobPercent = percent; 81 | } 82 | void speed(KJob * /* job */, unsigned long value) override 83 | { 84 | jobSpeed = value; 85 | } 86 | 87 | public: 88 | QList registeredJobs; 89 | QList unregisteredJobs; 90 | QList finishedSpy; 91 | QList suspendedSpy; 92 | QList resumedSpy; 93 | QString jobTitle; 94 | QPair jobField1; 95 | QPair jobField2; 96 | QString jobInfoMessage; 97 | QString jobWarning; 98 | KJob::Unit jobTotalUnit; 99 | qulonglong jobTotalAmount; 100 | KJob::Unit jobUnit; 101 | qulonglong jobAmount; 102 | 103 | unsigned long jobPercent; 104 | unsigned long jobSpeed; 105 | }; 106 | 107 | class KUiServerV2JobTrackerTest : public QObject 108 | { 109 | void simpleTest() 110 | { 111 | KTestJob *testJob = new KTestJob(10 /* 100000 bytes to process */, 5); 112 | 113 | KTestJobTracker *tracker = new KTestJobTracker(this); 114 | tracker->registerJob(testJob); 115 | 116 | QCOMPARE(tracker->registeredJobs.at(0), testJob); 117 | QCOMPARE(tracker->finishedSpy.count(), 0); 118 | 119 | testJob->start(); 120 | 121 | QSignalSpy jobFinishedSpy(testJob, &KJob::finished); 122 | 123 | QVERIFY(jobFinishedSpy.wait()); 124 | 125 | QCOMPARE(tracker->finishedSpy.count(), 1); 126 | } 127 | }; 128 | 129 | QTEST_GUILESS_MAIN(KUiServerV2JobTrackerTest) 130 | 131 | #include "kuiserver2jobtrackertest.moc" 132 | -------------------------------------------------------------------------------- /metainfo.yaml: -------------------------------------------------------------------------------- 1 | maintainer: 2 | description: Widgets for tracking KJob instances 3 | tier: 2 4 | type: functional 5 | platforms: 6 | - name: Linux 7 | - name: FreeBSD 8 | - name: Windows 9 | - name: macOS 10 | - name: Android 11 | portingAid: false 12 | deprecated: false 13 | release: true 14 | libraries: 15 | - cmake: "KF6::JobWidgets" 16 | cmakename: KF6JobWidgets 17 | 18 | public_lib: true 19 | group: Frameworks 20 | subgroup: Tier 3 21 | -------------------------------------------------------------------------------- /poqm/ast/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Enol P. , 2023. 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2023-05-03 23:39+0200\n" 6 | "Last-Translator: Enol P. \n" 7 | "Language-Team: \n" 8 | "Language: ast\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Qt-Contexts: true\n" 13 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 14 | "X-Generator: Lokalize 23.04.0\n" 15 | 16 | #: kjobtrackerformatters.cpp:27 17 | #, qt-format 18 | msgctxt "KJobTrackerFormatters|@item:intext" 19 | msgid "%n day(s)" 20 | msgid_plural "%n day(s)" 21 | msgstr[0] "" 22 | msgstr[1] "" 23 | 24 | #: kjobtrackerformatters.cpp:34 25 | #, qt-format 26 | msgctxt "KJobTrackerFormatters|@item:intext" 27 | msgid "%n hour(s)" 28 | msgid_plural "%n hour(s)" 29 | msgstr[0] "" 30 | msgstr[1] "" 31 | 32 | #: kjobtrackerformatters.cpp:41 33 | #, qt-format 34 | msgctxt "KJobTrackerFormatters|@item:intext" 35 | msgid "%n minute(s)" 36 | msgid_plural "%n minute(s)" 37 | msgstr[0] "" 38 | msgstr[1] "" 39 | 40 | #: kjobtrackerformatters.cpp:48 41 | #, qt-format 42 | msgctxt "KJobTrackerFormatters|@item:intext" 43 | msgid "%n second(s)" 44 | msgid_plural "%n second(s)" 45 | msgstr[0] "" 46 | msgstr[1] "" 47 | 48 | #: kjobtrackerformatters.cpp:69 49 | #, qt-format 50 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 51 | msgid "%1 and %2" 52 | msgstr "" 53 | 54 | #: kjobtrackerformatters.cpp:73 55 | #, qt-format 56 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 57 | msgid "%1 and %2" 58 | msgstr "" 59 | 60 | #: kjobtrackerformatters.cpp:78 61 | #, qt-format 62 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 63 | msgid "%1 and %2" 64 | msgstr "" 65 | 66 | #. Job name, e.g. Copying has failed 67 | #: knotificationjobuidelegate.cpp:28 68 | #, qt-format 69 | msgctxt "KNotificationJobUiDelegate|" 70 | msgid "%1 (Failed)" 71 | msgstr "" 72 | 73 | #: kstatusbarjobtracker.cpp:161 74 | msgctxt "KStatusBarJobTracker|" 75 | msgid "Stop" 76 | msgstr "" 77 | 78 | #: kstatusbarjobtracker.cpp:240 79 | msgctxt "KStatusBarJobTracker|" 80 | msgid " Stalled " 81 | msgstr "" 82 | 83 | #: kstatusbarjobtracker.cpp:242 84 | #, qt-format 85 | msgctxt "KStatusBarJobTracker|" 86 | msgid " %1/s " 87 | msgstr "" 88 | 89 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 90 | #, qt-format 91 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 92 | msgid "%1:" 93 | msgstr "%1:" 94 | 95 | #: kwidgetjobtracker.cpp:354 96 | #, qt-format 97 | msgctxt "KWidgetJobTracker|" 98 | msgid "%1 of %2 complete" 99 | msgid_plural "%1 of %2 complete" 100 | msgstr[0] "" 101 | msgstr[1] "" 102 | 103 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 104 | #, qt-format 105 | msgctxt "KWidgetJobTracker|" 106 | msgid "%1 / %n folder(s)" 107 | msgid_plural "%1 / %n folder(s)" 108 | msgstr[0] "" 109 | msgstr[1] "" 110 | 111 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 112 | #, qt-format 113 | msgctxt "KWidgetJobTracker|" 114 | msgid "%1 / %n file(s)" 115 | msgid_plural "%1 / %n file(s)" 116 | msgstr[0] "" 117 | msgstr[1] "" 118 | 119 | #: kwidgetjobtracker.cpp:408 120 | #, qt-format 121 | msgctxt "KWidgetJobTracker|" 122 | msgid "%1 / %n item(s)" 123 | msgid_plural "%1 / %n item(s)" 124 | msgstr[0] "" 125 | msgstr[1] "" 126 | 127 | #: kwidgetjobtracker.cpp:424 128 | #, qt-format 129 | msgctxt "KWidgetJobTracker|" 130 | msgid "%1% of %2" 131 | msgstr "" 132 | 133 | #: kwidgetjobtracker.cpp:428 134 | #, qt-format 135 | msgctxt "KWidgetJobTracker|" 136 | msgid "%1% of %n file(s)" 137 | msgid_plural "%1% of %n file(s)" 138 | msgstr[0] "" 139 | msgstr[1] "" 140 | 141 | #: kwidgetjobtracker.cpp:430 142 | #, qt-format 143 | msgctxt "KWidgetJobTracker|" 144 | msgid "%1%" 145 | msgstr "" 146 | 147 | #: kwidgetjobtracker.cpp:444 148 | msgctxt "KWidgetJobTracker|" 149 | msgid "Stalled" 150 | msgstr "" 151 | 152 | #: kwidgetjobtracker.cpp:451 153 | #, qt-format 154 | msgctxt "KWidgetJobTracker|" 155 | msgid "%1/s (%2 remaining)" 156 | msgid_plural "%1/s (%2 remaining)" 157 | msgstr[0] "" 158 | msgstr[1] "" 159 | 160 | #: kwidgetjobtracker.cpp:454 161 | #, qt-format 162 | msgctxt "KWidgetJobTracker|speed in bytes per second" 163 | msgid "%1/s" 164 | msgstr "" 165 | 166 | #: kwidgetjobtracker.cpp:462 167 | msgctxt "KWidgetJobTracker|" 168 | msgid "&Close" 169 | msgstr "" 170 | 171 | #: kwidgetjobtracker.cpp:464 172 | msgctxt "KWidgetJobTracker|" 173 | msgid "Close the current window or document" 174 | msgstr "" 175 | 176 | #: kwidgetjobtracker.cpp:478 177 | #, qt-format 178 | msgctxt "KWidgetJobTracker|" 179 | msgid "%1/s (done)" 180 | msgstr "" 181 | 182 | #: kwidgetjobtracker.cpp:484 183 | msgctxt "KWidgetJobTracker|" 184 | msgid "&Resume" 185 | msgstr "" 186 | 187 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 188 | msgctxt "KWidgetJobTracker|" 189 | msgid "&Pause" 190 | msgstr "" 191 | 192 | #: kwidgetjobtracker.cpp:514 193 | msgctxt "KWidgetJobTracker|The source url of a job" 194 | msgid "Source:" 195 | msgstr "" 196 | 197 | #: kwidgetjobtracker.cpp:522 198 | msgctxt "KWidgetJobTracker|The destination url of a job" 199 | msgid "Destination:" 200 | msgstr "" 201 | 202 | #: kwidgetjobtracker.cpp:534 203 | msgctxt "" 204 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 205 | "percent sign. Make sure to include %p in your translation." 206 | msgid "%p%" 207 | msgstr "" 208 | 209 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 210 | msgctxt "KWidgetJobTracker|" 211 | msgid "Click this to expand the dialog, to show details" 212 | msgstr "" 213 | 214 | #: kwidgetjobtracker.cpp:583 215 | msgctxt "KWidgetJobTracker|" 216 | msgid "&Keep this window open after transfer is complete" 217 | msgstr "" 218 | 219 | #: kwidgetjobtracker.cpp:591 220 | msgctxt "KWidgetJobTracker|" 221 | msgid "Open &File" 222 | msgstr "" 223 | 224 | #: kwidgetjobtracker.cpp:597 225 | msgctxt "KWidgetJobTracker|" 226 | msgid "Open &Destination" 227 | msgstr "" 228 | 229 | #: kwidgetjobtracker.cpp:605 230 | msgctxt "KWidgetJobTracker|" 231 | msgid "&Cancel" 232 | msgstr "" 233 | 234 | #: kwidgetjobtracker.cpp:613 235 | msgctxt "KWidgetJobTracker|" 236 | msgid "Progress Dialog" 237 | msgstr "" 238 | 239 | #: kwidgetjobtracker.cpp:626 240 | #, qt-format 241 | msgctxt "KWidgetJobTracker|" 242 | msgid "%n item(s)" 243 | msgid_plural "%n item(s)" 244 | msgstr[0] "" 245 | msgstr[1] "" 246 | 247 | #: kwidgetjobtracker.cpp:632 248 | #, qt-format 249 | msgctxt "KWidgetJobTracker|" 250 | msgid "%n folder(s)" 251 | msgid_plural "%n folder(s)" 252 | msgstr[0] "" 253 | msgstr[1] "" 254 | 255 | #: kwidgetjobtracker.cpp:636 256 | #, qt-format 257 | msgctxt "KWidgetJobTracker|" 258 | msgid "%n file(s)" 259 | msgid_plural "%n file(s)" 260 | msgstr[0] "" 261 | msgstr[1] "" 262 | 263 | #: kwidgetjobtracker.cpp:739 264 | msgctxt "KWidgetJobTracker|" 265 | msgid "Click this to collapse the dialog, to hide details" 266 | msgstr "" 267 | -------------------------------------------------------------------------------- /poqm/az/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Xəyyam , 2020, 2021. 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2021-07-21 00:28+0400\n" 6 | "Last-Translator: Kheyyam Gojayev \n" 7 | "Language-Team: Azerbaijani \n" 8 | "Language: az\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Qt-Contexts: true\n" 13 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 14 | "X-Generator: Lokalize 21.04.3\n" 15 | 16 | #: kjobtrackerformatters.cpp:27 17 | #, qt-format 18 | msgctxt "KJobTrackerFormatters|@item:intext" 19 | msgid "%n day(s)" 20 | msgid_plural "%n day(s)" 21 | msgstr[0] "%n gün(lər)" 22 | msgstr[1] "%n gün(lər)" 23 | 24 | #: kjobtrackerformatters.cpp:34 25 | #, qt-format 26 | msgctxt "KJobTrackerFormatters|@item:intext" 27 | msgid "%n hour(s)" 28 | msgid_plural "%n hour(s)" 29 | msgstr[0] "%n saat(lar)" 30 | msgstr[1] "%n saat(lar)" 31 | 32 | #: kjobtrackerformatters.cpp:41 33 | #, qt-format 34 | msgctxt "KJobTrackerFormatters|@item:intext" 35 | msgid "%n minute(s)" 36 | msgid_plural "%n minute(s)" 37 | msgstr[0] "%n dəqiqə(lər)" 38 | msgstr[1] "%n dəqiqə(lər)" 39 | 40 | #: kjobtrackerformatters.cpp:48 41 | #, qt-format 42 | msgctxt "KJobTrackerFormatters|@item:intext" 43 | msgid "%n second(s)" 44 | msgid_plural "%n second(s)" 45 | msgstr[0] "%n saniyə(lər)" 46 | msgstr[1] "%n saniyə(lər)" 47 | 48 | #: kjobtrackerformatters.cpp:69 49 | #, qt-format 50 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 51 | msgid "%1 and %2" 52 | msgstr "%1 və %2" 53 | 54 | #: kjobtrackerformatters.cpp:73 55 | #, qt-format 56 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 57 | msgid "%1 and %2" 58 | msgstr "%1 və %2" 59 | 60 | #: kjobtrackerformatters.cpp:78 61 | #, qt-format 62 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 63 | msgid "%1 and %2" 64 | msgstr "%1 və %2" 65 | 66 | #. Job name, e.g. Copying has failed 67 | #: knotificationjobuidelegate.cpp:28 68 | #, qt-format 69 | msgctxt "KNotificationJobUiDelegate|" 70 | msgid "%1 (Failed)" 71 | msgstr "" 72 | 73 | #: kstatusbarjobtracker.cpp:161 74 | msgctxt "KStatusBarJobTracker|" 75 | msgid "Stop" 76 | msgstr "Dayanmaq" 77 | 78 | #: kstatusbarjobtracker.cpp:240 79 | msgctxt "KStatusBarJobTracker|" 80 | msgid " Stalled " 81 | msgstr " Məlumatlar Göndərilmir " 82 | 83 | #: kstatusbarjobtracker.cpp:242 84 | #, qt-format 85 | msgctxt "KStatusBarJobTracker|" 86 | msgid " %1/s " 87 | msgstr " %1/s " 88 | 89 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 90 | #, qt-format 91 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 92 | msgid "%1:" 93 | msgstr "%1:" 94 | 95 | #: kwidgetjobtracker.cpp:354 96 | #, qt-format 97 | msgctxt "KWidgetJobTracker|" 98 | msgid "%1 of %2 complete" 99 | msgid_plural "%1 of %2 complete" 100 | msgstr[0] "%2 veriləndən %1 tamamlandı" 101 | msgstr[1] "%2 veriləndən %1 tamamlandı" 102 | 103 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 104 | #, qt-format 105 | msgctxt "KWidgetJobTracker|" 106 | msgid "%1 / %n folder(s)" 107 | msgid_plural "%1 / %n folder(s)" 108 | msgstr[0] "%1 / %n qovluq(lar)" 109 | msgstr[1] "%1 / %n qovluq(lar)" 110 | 111 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 112 | #, qt-format 113 | msgctxt "KWidgetJobTracker|" 114 | msgid "%1 / %n file(s)" 115 | msgid_plural "%1 / %n file(s)" 116 | msgstr[0] "%1 / %n fayl(lar)" 117 | msgstr[1] "%1 / %n fayl(lar)" 118 | 119 | #: kwidgetjobtracker.cpp:408 120 | #, qt-format 121 | msgctxt "KWidgetJobTracker|" 122 | msgid "%1 / %n item(s)" 123 | msgid_plural "%1 / %n item(s)" 124 | msgstr[0] "%1 / %n element(lər)" 125 | msgstr[1] "%1 / %n element(lər)" 126 | 127 | #: kwidgetjobtracker.cpp:424 128 | #, qt-format 129 | msgctxt "KWidgetJobTracker|" 130 | msgid "%1% of %2" 131 | msgstr "%2 veriləndən %1%" 132 | 133 | #: kwidgetjobtracker.cpp:428 134 | #, qt-format 135 | msgctxt "KWidgetJobTracker|" 136 | msgid "%1% of %n file(s)" 137 | msgid_plural "%1% of %n file(s)" 138 | msgstr[0] "%n fayldan %1" 139 | msgstr[1] "%n fayldan %1" 140 | 141 | #: kwidgetjobtracker.cpp:430 142 | #, qt-format 143 | msgctxt "KWidgetJobTracker|" 144 | msgid "%1%" 145 | msgstr "%1%" 146 | 147 | #: kwidgetjobtracker.cpp:444 148 | msgctxt "KWidgetJobTracker|" 149 | msgid "Stalled" 150 | msgstr "Məlumatlar Göndərilmir" 151 | 152 | #: kwidgetjobtracker.cpp:451 153 | #, qt-format 154 | msgctxt "KWidgetJobTracker|" 155 | msgid "%1/s (%2 remaining)" 156 | msgid_plural "%1/s (%2 remaining)" 157 | msgstr[0] "%1/s (%2 qalır)" 158 | msgstr[1] "%1/s (%2 qalır)" 159 | 160 | #: kwidgetjobtracker.cpp:454 161 | #, qt-format 162 | msgctxt "KWidgetJobTracker|speed in bytes per second" 163 | msgid "%1/s" 164 | msgstr "%1/s" 165 | 166 | #: kwidgetjobtracker.cpp:462 167 | msgctxt "KWidgetJobTracker|" 168 | msgid "&Close" 169 | msgstr "&Bağla" 170 | 171 | #: kwidgetjobtracker.cpp:464 172 | msgctxt "KWidgetJobTracker|" 173 | msgid "Close the current window or document" 174 | msgstr "Cari pəncərəni və ya sənədi bağla" 175 | 176 | #: kwidgetjobtracker.cpp:478 177 | #, qt-format 178 | msgctxt "KWidgetJobTracker|" 179 | msgid "%1/s (done)" 180 | msgstr "%1/s (başa çatdı)" 181 | 182 | #: kwidgetjobtracker.cpp:484 183 | msgctxt "KWidgetJobTracker|" 184 | msgid "&Resume" 185 | msgstr "&Bərpa etmək" 186 | 187 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 188 | msgctxt "KWidgetJobTracker|" 189 | msgid "&Pause" 190 | msgstr "&Fasilə" 191 | 192 | #: kwidgetjobtracker.cpp:514 193 | msgctxt "KWidgetJobTracker|The source url of a job" 194 | msgid "Source:" 195 | msgstr "Mənbə:" 196 | 197 | #: kwidgetjobtracker.cpp:522 198 | msgctxt "KWidgetJobTracker|The destination url of a job" 199 | msgid "Destination:" 200 | msgstr "Təyinat:" 201 | 202 | #: kwidgetjobtracker.cpp:534 203 | #, fuzzy 204 | #| msgctxt "KWidgetJobTracker|" 205 | #| msgid "%1%" 206 | msgctxt "" 207 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 208 | "percent sign. Make sure to include %p in your translation." 209 | msgid "%p%" 210 | msgstr "%1%" 211 | 212 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 213 | msgctxt "KWidgetJobTracker|" 214 | msgid "Click this to expand the dialog, to show details" 215 | msgstr "Bu düyməyə vuraraq əlavə məlumatları göstərmək üçün dialoqu açın" 216 | 217 | #: kwidgetjobtracker.cpp:583 218 | msgctxt "KWidgetJobTracker|" 219 | msgid "&Keep this window open after transfer is complete" 220 | msgstr "&Məlumat ötürüldükdən sonra pəncərəni bağlayın" 221 | 222 | #: kwidgetjobtracker.cpp:591 223 | msgctxt "KWidgetJobTracker|" 224 | msgid "Open &File" 225 | msgstr "&Faylı Açın" 226 | 227 | #: kwidgetjobtracker.cpp:597 228 | msgctxt "KWidgetJobTracker|" 229 | msgid "Open &Destination" 230 | msgstr "&Təyinat Qovluğunu Açın" 231 | 232 | #: kwidgetjobtracker.cpp:605 233 | msgctxt "KWidgetJobTracker|" 234 | msgid "&Cancel" 235 | msgstr "&Ləğv Et" 236 | 237 | #: kwidgetjobtracker.cpp:613 238 | msgctxt "KWidgetJobTracker|" 239 | msgid "Progress Dialog" 240 | msgstr "İcra prosesi" 241 | 242 | #: kwidgetjobtracker.cpp:626 243 | #, qt-format 244 | msgctxt "KWidgetJobTracker|" 245 | msgid "%n item(s)" 246 | msgid_plural "%n item(s)" 247 | msgstr[0] "%n element(lər)" 248 | msgstr[1] "%n element(lər)" 249 | 250 | #: kwidgetjobtracker.cpp:632 251 | #, qt-format 252 | msgctxt "KWidgetJobTracker|" 253 | msgid "%n folder(s)" 254 | msgid_plural "%n folder(s)" 255 | msgstr[0] "%n qovluq(lar)" 256 | msgstr[1] "%n qovluq(lar)" 257 | 258 | #: kwidgetjobtracker.cpp:636 259 | #, qt-format 260 | msgctxt "KWidgetJobTracker|" 261 | msgid "%n file(s)" 262 | msgid_plural "%n file(s)" 263 | msgstr[0] "%n fayl" 264 | msgstr[1] "%n Fayllar" 265 | 266 | #: kwidgetjobtracker.cpp:739 267 | msgctxt "KWidgetJobTracker|" 268 | msgid "Click this to collapse the dialog, to hide details" 269 | msgstr "Bu düyməyə vuraraq dialoqu və əlavə məlumatları gizlədin" 270 | -------------------------------------------------------------------------------- /poqm/bg/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Copyright (C) YEAR This_file_is_part_of_KDE 2 | # This file is distributed under the same license as the PACKAGE package. 3 | # 4 | # Zlatko Popov , 2006, 2007, 2008, 2009. 5 | # Yasen Pramatarov , 2009, 2010, 2011, 2012, 2013. 6 | # SPDX-FileCopyrightText: 2022, 2023 Mincho Kondarev 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: kdelibs4\n" 10 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 11 | "POT-Creation-Date: 2014-03-23 01:50+0000\n" 12 | "PO-Revision-Date: 2023-10-16 11:46+0200\n" 13 | "Last-Translator: Mincho Kondarev \n" 14 | "Language-Team: \n" 15 | "Language: bg\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | "X-Generator: Lokalize 23.08.2\n" 21 | "X-Qt-Contexts: true\n" 22 | 23 | #: kjobtrackerformatters.cpp:27 24 | #, qt-format 25 | msgctxt "KJobTrackerFormatters|@item:intext" 26 | msgid "%n day(s)" 27 | msgid_plural "%n day(s)" 28 | msgstr[0] "%n ден" 29 | msgstr[1] "%n дни" 30 | 31 | #: kjobtrackerformatters.cpp:34 32 | #, qt-format 33 | msgctxt "KJobTrackerFormatters|@item:intext" 34 | msgid "%n hour(s)" 35 | msgid_plural "%n hour(s)" 36 | msgstr[0] "%n час" 37 | msgstr[1] "%n часа" 38 | 39 | #: kjobtrackerformatters.cpp:41 40 | #, qt-format 41 | msgctxt "KJobTrackerFormatters|@item:intext" 42 | msgid "%n minute(s)" 43 | msgid_plural "%n minute(s)" 44 | msgstr[0] "%n минута" 45 | msgstr[1] "%n минути" 46 | 47 | #: kjobtrackerformatters.cpp:48 48 | #, qt-format 49 | msgctxt "KJobTrackerFormatters|@item:intext" 50 | msgid "%n second(s)" 51 | msgid_plural "%n second(s)" 52 | msgstr[0] "%n секунда" 53 | msgstr[1] "%n секунди" 54 | 55 | #: kjobtrackerformatters.cpp:69 56 | #, qt-format 57 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 58 | msgid "%1 and %2" 59 | msgstr "%1 и %2" 60 | 61 | #: kjobtrackerformatters.cpp:73 62 | #, qt-format 63 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 64 | msgid "%1 and %2" 65 | msgstr "%1 и %2" 66 | 67 | #: kjobtrackerformatters.cpp:78 68 | #, qt-format 69 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 70 | msgid "%1 and %2" 71 | msgstr "%1 и %2" 72 | 73 | #. Job name, e.g. Copying has failed 74 | #: knotificationjobuidelegate.cpp:28 75 | #, qt-format 76 | msgctxt "KNotificationJobUiDelegate|" 77 | msgid "%1 (Failed)" 78 | msgstr "%1 (неуспешно)" 79 | 80 | #: kstatusbarjobtracker.cpp:161 81 | msgctxt "KStatusBarJobTracker|" 82 | msgid "Stop" 83 | msgstr "Стоп" 84 | 85 | #: kstatusbarjobtracker.cpp:240 86 | msgctxt "KStatusBarJobTracker|" 87 | msgid " Stalled " 88 | msgstr " Блокиран " 89 | 90 | #: kstatusbarjobtracker.cpp:242 91 | #, qt-format 92 | msgctxt "KStatusBarJobTracker|" 93 | msgid " %1/s " 94 | msgstr " %1/s " 95 | 96 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 97 | #, qt-format 98 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 99 | msgid "%1:" 100 | msgstr "%1:" 101 | 102 | #: kwidgetjobtracker.cpp:354 103 | #, qt-format 104 | msgctxt "KWidgetJobTracker|" 105 | msgid "%1 of %2 complete" 106 | msgid_plural "%1 of %2 complete" 107 | msgstr[0] "%1 от %2 завършен" 108 | msgstr[1] "%1 от %2 завършени" 109 | 110 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 111 | #, qt-format 112 | msgctxt "KWidgetJobTracker|" 113 | msgid "%1 / %n folder(s)" 114 | msgid_plural "%1 / %n folder(s)" 115 | msgstr[0] "%1 / %n папка" 116 | msgstr[1] "%1 / %n папки" 117 | 118 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 119 | #, qt-format 120 | msgctxt "KWidgetJobTracker|" 121 | msgid "%1 / %n file(s)" 122 | msgid_plural "%1 / %n file(s)" 123 | msgstr[0] "%1 / %n файл" 124 | msgstr[1] "%1 / %n файла" 125 | 126 | #: kwidgetjobtracker.cpp:408 127 | #, qt-format 128 | msgctxt "KWidgetJobTracker|" 129 | msgid "%1 / %n item(s)" 130 | msgid_plural "%1 / %n item(s)" 131 | msgstr[0] "%1 / %n елемент" 132 | msgstr[1] "%1 / %n елемента" 133 | 134 | #: kwidgetjobtracker.cpp:424 135 | #, qt-format 136 | msgctxt "KWidgetJobTracker|" 137 | msgid "%1% of %2" 138 | msgstr "%1 % от %2" 139 | 140 | #: kwidgetjobtracker.cpp:428 141 | #, qt-format 142 | msgctxt "KWidgetJobTracker|" 143 | msgid "%1% of %n file(s)" 144 | msgid_plural "%1% of %n file(s)" 145 | msgstr[0] "%1 % от %n файл" 146 | msgstr[1] "%1 % от %n файла" 147 | 148 | #: kwidgetjobtracker.cpp:430 149 | #, qt-format 150 | msgctxt "KWidgetJobTracker|" 151 | msgid "%1%" 152 | msgstr "%1%" 153 | 154 | #: kwidgetjobtracker.cpp:444 155 | msgctxt "KWidgetJobTracker|" 156 | msgid "Stalled" 157 | msgstr "Застоял" 158 | 159 | #: kwidgetjobtracker.cpp:451 160 | #, qt-format 161 | msgctxt "KWidgetJobTracker|" 162 | msgid "%1/s (%2 remaining)" 163 | msgid_plural "%1/s (%2 remaining)" 164 | msgstr[0] "%1/s (остават %2)" 165 | msgstr[1] "%1/s (остават %2)" 166 | 167 | #: kwidgetjobtracker.cpp:454 168 | #, qt-format 169 | msgctxt "KWidgetJobTracker|speed in bytes per second" 170 | msgid "%1/s" 171 | msgstr "%1/s" 172 | 173 | #: kwidgetjobtracker.cpp:462 174 | msgctxt "KWidgetJobTracker|" 175 | msgid "&Close" 176 | msgstr "&Затваряне" 177 | 178 | #: kwidgetjobtracker.cpp:464 179 | msgctxt "KWidgetJobTracker|" 180 | msgid "Close the current window or document" 181 | msgstr "Затваряне на текущия прозорец или документ" 182 | 183 | #: kwidgetjobtracker.cpp:478 184 | #, qt-format 185 | msgctxt "KWidgetJobTracker|" 186 | msgid "%1/s (done)" 187 | msgstr "%1/s (завършен)" 188 | 189 | #: kwidgetjobtracker.cpp:484 190 | msgctxt "KWidgetJobTracker|" 191 | msgid "&Resume" 192 | msgstr "&Възобновяване" 193 | 194 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 195 | msgctxt "KWidgetJobTracker|" 196 | msgid "&Pause" 197 | msgstr "&Пауза" 198 | 199 | #: kwidgetjobtracker.cpp:514 200 | msgctxt "KWidgetJobTracker|The source url of a job" 201 | msgid "Source:" 202 | msgstr "Източник:" 203 | 204 | #: kwidgetjobtracker.cpp:522 205 | msgctxt "KWidgetJobTracker|The destination url of a job" 206 | msgid "Destination:" 207 | msgstr "Дестинация:" 208 | 209 | #: kwidgetjobtracker.cpp:534 210 | msgctxt "" 211 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 212 | "percent sign. Make sure to include %p in your translation." 213 | msgid "%p%" 214 | msgstr "%p%" 215 | 216 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 217 | msgctxt "KWidgetJobTracker|" 218 | msgid "Click this to expand the dialog, to show details" 219 | msgstr "" 220 | "Щракнете върху това, за да разширите диалоговия прозорец, за да покажете " 221 | "подробности" 222 | 223 | #: kwidgetjobtracker.cpp:583 224 | msgctxt "KWidgetJobTracker|" 225 | msgid "&Keep this window open after transfer is complete" 226 | msgstr "&Оставете този прозорец отворен след приключване на прехвърлянето" 227 | 228 | #: kwidgetjobtracker.cpp:591 229 | msgctxt "KWidgetJobTracker|" 230 | msgid "Open &File" 231 | msgstr "Отваряне на &файл" 232 | 233 | #: kwidgetjobtracker.cpp:597 234 | msgctxt "KWidgetJobTracker|" 235 | msgid "Open &Destination" 236 | msgstr "Отваряне на &дестинация" 237 | 238 | #: kwidgetjobtracker.cpp:605 239 | msgctxt "KWidgetJobTracker|" 240 | msgid "&Cancel" 241 | msgstr "&Отказ" 242 | 243 | #: kwidgetjobtracker.cpp:613 244 | msgctxt "KWidgetJobTracker|" 245 | msgid "Progress Dialog" 246 | msgstr "Диалогов прозорец за напредък" 247 | 248 | #: kwidgetjobtracker.cpp:626 249 | #, qt-format 250 | msgctxt "KWidgetJobTracker|" 251 | msgid "%n item(s)" 252 | msgid_plural "%n item(s)" 253 | msgstr[0] "%n елемент" 254 | msgstr[1] "%n елемента" 255 | 256 | #: kwidgetjobtracker.cpp:632 257 | #, qt-format 258 | msgctxt "KWidgetJobTracker|" 259 | msgid "%n folder(s)" 260 | msgid_plural "%n folder(s)" 261 | msgstr[0] "%n папка" 262 | msgstr[1] "%n папки" 263 | 264 | #: kwidgetjobtracker.cpp:636 265 | #, qt-format 266 | msgctxt "KWidgetJobTracker|" 267 | msgid "%n file(s)" 268 | msgid_plural "%n file(s)" 269 | msgstr[0] "%n файл" 270 | msgstr[1] "%n файла" 271 | 272 | #: kwidgetjobtracker.cpp:739 273 | msgctxt "KWidgetJobTracker|" 274 | msgid "Click this to collapse the dialog, to hide details" 275 | msgstr "" 276 | "Щракнете върху това да свиете диалоговия прозорец, за да скриете подробности" 277 | -------------------------------------------------------------------------------- /poqm/bs/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: kde5\n" 4 | "PO-Revision-Date: 2015-02-19 10:14+0100\n" 5 | "Last-Translator: Samir ribic \n" 6 | "Language-Team: Bosnian\n" 7 | "Language: bs\n" 8 | "MIME-Version: 1.0\n" 9 | "Content-Type: text/plain; charset=UTF-8\n" 10 | "Content-Transfer-Encoding: 8bit\n" 11 | "X-Qt-Contexts: true\n" 12 | "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" 13 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 14 | 15 | #: kjobtrackerformatters.cpp:27 16 | #, qt-format 17 | msgctxt "KJobTrackerFormatters|@item:intext" 18 | msgid "%n day(s)" 19 | msgid_plural "%n day(s)" 20 | msgstr[0] "" 21 | msgstr[1] "" 22 | 23 | #: kjobtrackerformatters.cpp:34 24 | #, qt-format 25 | msgctxt "KJobTrackerFormatters|@item:intext" 26 | msgid "%n hour(s)" 27 | msgid_plural "%n hour(s)" 28 | msgstr[0] "" 29 | msgstr[1] "" 30 | 31 | #: kjobtrackerformatters.cpp:41 32 | #, qt-format 33 | msgctxt "KJobTrackerFormatters|@item:intext" 34 | msgid "%n minute(s)" 35 | msgid_plural "%n minute(s)" 36 | msgstr[0] "" 37 | msgstr[1] "" 38 | 39 | #: kjobtrackerformatters.cpp:48 40 | #, qt-format 41 | msgctxt "KJobTrackerFormatters|@item:intext" 42 | msgid "%n second(s)" 43 | msgid_plural "%n second(s)" 44 | msgstr[0] "" 45 | msgstr[1] "" 46 | 47 | #: kjobtrackerformatters.cpp:69 48 | #, qt-format 49 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 50 | msgid "%1 and %2" 51 | msgstr "" 52 | 53 | #: kjobtrackerformatters.cpp:73 54 | #, qt-format 55 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 56 | msgid "%1 and %2" 57 | msgstr "" 58 | 59 | #: kjobtrackerformatters.cpp:78 60 | #, qt-format 61 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 62 | msgid "%1 and %2" 63 | msgstr "" 64 | 65 | #. Job name, e.g. Copying has failed 66 | #: knotificationjobuidelegate.cpp:28 67 | #, qt-format 68 | msgctxt "KNotificationJobUiDelegate|" 69 | msgid "%1 (Failed)" 70 | msgstr "" 71 | 72 | #: kstatusbarjobtracker.cpp:161 73 | msgctxt "KStatusBarJobTracker|" 74 | msgid "Stop" 75 | msgstr "" 76 | 77 | #: kstatusbarjobtracker.cpp:240 78 | msgctxt "KStatusBarJobTracker|" 79 | msgid " Stalled " 80 | msgstr "" 81 | 82 | #: kstatusbarjobtracker.cpp:242 83 | #, qt-format 84 | msgctxt "KStatusBarJobTracker|" 85 | msgid " %1/s " 86 | msgstr "" 87 | 88 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 89 | #, qt-format 90 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 91 | msgid "%1:" 92 | msgstr "" 93 | 94 | #: kwidgetjobtracker.cpp:354 95 | #, qt-format 96 | msgctxt "KWidgetJobTracker|" 97 | msgid "%1 of %2 complete" 98 | msgid_plural "%1 of %2 complete" 99 | msgstr[0] "" 100 | msgstr[1] "" 101 | 102 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 103 | #, qt-format 104 | msgctxt "KWidgetJobTracker|" 105 | msgid "%1 / %n folder(s)" 106 | msgid_plural "%1 / %n folder(s)" 107 | msgstr[0] "" 108 | msgstr[1] "" 109 | 110 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 111 | #, qt-format 112 | msgctxt "KWidgetJobTracker|" 113 | msgid "%1 / %n file(s)" 114 | msgid_plural "%1 / %n file(s)" 115 | msgstr[0] "" 116 | msgstr[1] "" 117 | 118 | #: kwidgetjobtracker.cpp:408 119 | #, qt-format 120 | msgctxt "KWidgetJobTracker|" 121 | msgid "%1 / %n item(s)" 122 | msgid_plural "%1 / %n item(s)" 123 | msgstr[0] "" 124 | msgstr[1] "" 125 | msgstr[2] "" 126 | 127 | #: kwidgetjobtracker.cpp:424 128 | #, qt-format 129 | msgctxt "KWidgetJobTracker|" 130 | msgid "%1% of %2" 131 | msgstr "" 132 | 133 | #: kwidgetjobtracker.cpp:428 134 | #, qt-format 135 | msgctxt "KWidgetJobTracker|" 136 | msgid "%1% of %n file(s)" 137 | msgid_plural "%1% of %n file(s)" 138 | msgstr[0] "" 139 | msgstr[1] "" 140 | 141 | #: kwidgetjobtracker.cpp:430 142 | #, qt-format 143 | msgctxt "KWidgetJobTracker|" 144 | msgid "%1%" 145 | msgstr "" 146 | 147 | #: kwidgetjobtracker.cpp:444 148 | msgctxt "KWidgetJobTracker|" 149 | msgid "Stalled" 150 | msgstr "" 151 | 152 | #: kwidgetjobtracker.cpp:451 153 | #, qt-format 154 | msgctxt "KWidgetJobTracker|" 155 | msgid "%1/s (%2 remaining)" 156 | msgid_plural "%1/s (%2 remaining)" 157 | msgstr[0] "" 158 | msgstr[1] "" 159 | 160 | #: kwidgetjobtracker.cpp:454 161 | #, qt-format 162 | msgctxt "KWidgetJobTracker|speed in bytes per second" 163 | msgid "%1/s" 164 | msgstr "" 165 | 166 | #: kwidgetjobtracker.cpp:462 167 | msgctxt "KWidgetJobTracker|" 168 | msgid "&Close" 169 | msgstr "" 170 | 171 | #: kwidgetjobtracker.cpp:464 172 | msgctxt "KWidgetJobTracker|" 173 | msgid "Close the current window or document" 174 | msgstr "" 175 | 176 | #: kwidgetjobtracker.cpp:478 177 | #, qt-format 178 | msgctxt "KWidgetJobTracker|" 179 | msgid "%1/s (done)" 180 | msgstr "" 181 | 182 | #: kwidgetjobtracker.cpp:484 183 | msgctxt "KWidgetJobTracker|" 184 | msgid "&Resume" 185 | msgstr "" 186 | 187 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 188 | msgctxt "KWidgetJobTracker|" 189 | msgid "&Pause" 190 | msgstr "" 191 | 192 | #: kwidgetjobtracker.cpp:514 193 | msgctxt "KWidgetJobTracker|The source url of a job" 194 | msgid "Source:" 195 | msgstr "" 196 | 197 | #: kwidgetjobtracker.cpp:522 198 | msgctxt "KWidgetJobTracker|The destination url of a job" 199 | msgid "Destination:" 200 | msgstr "" 201 | 202 | #: kwidgetjobtracker.cpp:534 203 | msgctxt "" 204 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 205 | "percent sign. Make sure to include %p in your translation." 206 | msgid "%p%" 207 | msgstr "" 208 | 209 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 210 | msgctxt "KWidgetJobTracker|" 211 | msgid "Click this to expand the dialog, to show details" 212 | msgstr "" 213 | 214 | #: kwidgetjobtracker.cpp:583 215 | msgctxt "KWidgetJobTracker|" 216 | msgid "&Keep this window open after transfer is complete" 217 | msgstr "" 218 | 219 | #: kwidgetjobtracker.cpp:591 220 | msgctxt "KWidgetJobTracker|" 221 | msgid "Open &File" 222 | msgstr "" 223 | 224 | #: kwidgetjobtracker.cpp:597 225 | msgctxt "KWidgetJobTracker|" 226 | msgid "Open &Destination" 227 | msgstr "" 228 | 229 | #: kwidgetjobtracker.cpp:605 230 | msgctxt "KWidgetJobTracker|" 231 | msgid "&Cancel" 232 | msgstr "" 233 | 234 | #: kwidgetjobtracker.cpp:613 235 | msgctxt "KWidgetJobTracker|" 236 | msgid "Progress Dialog" 237 | msgstr "" 238 | 239 | #: kwidgetjobtracker.cpp:626 240 | #, qt-format 241 | msgctxt "KWidgetJobTracker|" 242 | msgid "%n item(s)" 243 | msgid_plural "%n item(s)" 244 | msgstr[0] "" 245 | msgstr[1] "" 246 | msgstr[2] "" 247 | 248 | #: kwidgetjobtracker.cpp:632 249 | #, qt-format 250 | msgctxt "KWidgetJobTracker|" 251 | msgid "%n folder(s)" 252 | msgid_plural "%n folder(s)" 253 | msgstr[0] "" 254 | msgstr[1] "" 255 | 256 | #: kwidgetjobtracker.cpp:636 257 | #, qt-format 258 | msgctxt "KWidgetJobTracker|" 259 | msgid "%n file(s)" 260 | msgid_plural "%n file(s)" 261 | msgstr[0] "" 262 | msgstr[1] "" 263 | 264 | #: kwidgetjobtracker.cpp:739 265 | msgctxt "KWidgetJobTracker|" 266 | msgid "Click this to collapse the dialog, to hide details" 267 | msgstr "" 268 | -------------------------------------------------------------------------------- /poqm/en/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "MIME-Version: 1.0\n" 4 | "Content-Type: text/plain; charset=UTF-8\n" 5 | "Content-Transfer-Encoding: 8bit\n" 6 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 7 | "X-Language: en\n" 8 | "X-Qt-Contexts: true\n" 9 | 10 | #: ../kjobtrackerformatters.cpp:27 11 | #, qt-format 12 | msgctxt "KJobTrackerFormatters|@item:intext" 13 | msgid "%n day(s)" 14 | msgid_plural "%n day(s)" 15 | msgstr[0] "%n day" 16 | msgstr[1] "%n days" 17 | 18 | #: ../kjobtrackerformatters.cpp:34 19 | #, qt-format 20 | msgctxt "KJobTrackerFormatters|@item:intext" 21 | msgid "%n hour(s)" 22 | msgid_plural "%n hour(s)" 23 | msgstr[0] "%n hour" 24 | msgstr[1] "%n hours" 25 | 26 | #: ../kjobtrackerformatters.cpp:41 27 | #, qt-format 28 | msgctxt "KJobTrackerFormatters|@item:intext" 29 | msgid "%n minute(s)" 30 | msgid_plural "%n minute(s)" 31 | msgstr[0] "%n minute" 32 | msgstr[1] "%n minutes" 33 | 34 | #: ../kjobtrackerformatters.cpp:48 35 | #, qt-format 36 | msgctxt "KJobTrackerFormatters|@item:intext" 37 | msgid "%n second(s)" 38 | msgid_plural "%n second(s)" 39 | msgstr[0] "%n second" 40 | msgstr[1] "%n seconds" 41 | 42 | #: ../kwidgetjobtracker.cpp:354 43 | #, qt-format 44 | msgctxt "KWidgetJobTracker|" 45 | msgid "%1 of %2 complete" 46 | msgid_plural "%1 of %2 complete" 47 | msgstr[0] "%1 of %2 complete" 48 | msgstr[1] "%1 of %2 complete" 49 | 50 | #: ../kwidgetjobtracker.cpp:373 ../kwidgetjobtracker.cpp:391 51 | #, qt-format 52 | msgctxt "KWidgetJobTracker|" 53 | msgid "%1 / %n folder(s)" 54 | msgid_plural "%1 / %n folder(s)" 55 | msgstr[0] "%1 / %n folder" 56 | msgstr[1] "%1 / %n folders" 57 | 58 | #: ../kwidgetjobtracker.cpp:377 ../kwidgetjobtracker.cpp:396 59 | #, qt-format 60 | msgctxt "KWidgetJobTracker|" 61 | msgid "%1 / %n file(s)" 62 | msgid_plural "%1 / %n file(s)" 63 | msgstr[0] "%1 / %n file" 64 | msgstr[1] "%1 / %n files" 65 | 66 | #: ../kwidgetjobtracker.cpp:408 67 | #, qt-format 68 | msgctxt "KWidgetJobTracker|" 69 | msgid "%1 / %n item(s)" 70 | msgid_plural "%1 / %n item(s)" 71 | msgstr[0] "%1 / %n item" 72 | msgstr[1] "%1 / %n items" 73 | 74 | #: ../kwidgetjobtracker.cpp:428 75 | #, qt-format 76 | msgctxt "KWidgetJobTracker|" 77 | msgid "%1% of %n file(s)" 78 | msgid_plural "%1% of %n file(s)" 79 | msgstr[0] "%1% of %n file" 80 | msgstr[1] "%1% of %n files" 81 | 82 | #: ../kwidgetjobtracker.cpp:451 83 | #, qt-format 84 | msgctxt "KWidgetJobTracker|" 85 | msgid "%1/s (%2 remaining)" 86 | msgid_plural "%1/s (%2 remaining)" 87 | msgstr[0] "%1/s (%2 remaining)" 88 | msgstr[1] "%1/s (%2 remaining)" 89 | 90 | #: ../kwidgetjobtracker.cpp:626 91 | #, qt-format 92 | msgctxt "KWidgetJobTracker|" 93 | msgid "%n item(s)" 94 | msgid_plural "%n item(s)" 95 | msgstr[0] "%n item" 96 | msgstr[1] "%n items" 97 | 98 | #: ../kwidgetjobtracker.cpp:632 99 | #, qt-format 100 | msgctxt "KWidgetJobTracker|" 101 | msgid "%n folder(s)" 102 | msgid_plural "%n folder(s)" 103 | msgstr[0] "%n folder" 104 | msgstr[1] "%n folders" 105 | 106 | #: ../kwidgetjobtracker.cpp:636 107 | #, qt-format 108 | msgctxt "KWidgetJobTracker|" 109 | msgid "%n file(s)" 110 | msgid_plural "%n file(s)" 111 | msgstr[0] "%n file" 112 | msgstr[1] "%n files" 113 | -------------------------------------------------------------------------------- /poqm/eo/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # translation of kjobwidgets6_qt.pot to Esperanto 2 | # Copyright (C) 1998,2002, 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc. 3 | # Wolfram Diestel , 1998. 4 | # Heiko Evermann , 2002, 2003. 5 | # Matthias Peick , 2004, 2005. 6 | # Oliver Kellogg ,2007. 7 | # Cindy McKee , 2007, 2008. 8 | # Axel Rousseau , 2009. 9 | # Michael Moroni , 2012. 10 | # 11 | # Minuskloj: ĉ ĝ ĵ ĥ ŝ ŭ Majuskloj: Ĉ Ĝ Ĵ Ĥ Ŝ Ŭ 12 | # 13 | msgid "" 14 | msgstr "" 15 | "Project-Id-Version: kjobwidgets\n" 16 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 17 | "POT-Creation-Date: 2014-03-23 01:50+0000\n" 18 | "PO-Revision-Date: 2024-01-04 19:44+0100\n" 19 | "Last-Translator: Oliver Kellogg \n" 20 | "Language-Team: Esperanto \n" 21 | "Language: eo\n" 22 | "MIME-Version: 1.0\n" 23 | "Content-Type: text/plain; charset=UTF-8\n" 24 | "Content-Transfer-Encoding: 8bit\n" 25 | "X-Generator: Lokalize 1.4\n" 26 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 27 | "X-Qt-Contexts: true\n" 28 | 29 | #: kjobtrackerformatters.cpp:27 30 | #, qt-format 31 | msgctxt "KJobTrackerFormatters|@item:intext" 32 | msgid "%n day(s)" 33 | msgid_plural "%n day(s)" 34 | msgstr[0] "%n tago" 35 | msgstr[1] "%n tagoj" 36 | 37 | #: kjobtrackerformatters.cpp:34 38 | #, qt-format 39 | msgctxt "KJobTrackerFormatters|@item:intext" 40 | msgid "%n hour(s)" 41 | msgid_plural "%n hour(s)" 42 | msgstr[0] "%n horo" 43 | msgstr[1] "%n horoj" 44 | 45 | #: kjobtrackerformatters.cpp:41 46 | #, qt-format 47 | msgctxt "KJobTrackerFormatters|@item:intext" 48 | msgid "%n minute(s)" 49 | msgid_plural "%n minute(s)" 50 | msgstr[0] "%n minuto" 51 | msgstr[1] "%n minutoj" 52 | 53 | #: kjobtrackerformatters.cpp:48 54 | #, qt-format 55 | msgctxt "KJobTrackerFormatters|@item:intext" 56 | msgid "%n second(s)" 57 | msgid_plural "%n second(s)" 58 | msgstr[0] "%n sekundo" 59 | msgstr[1] "%n sekundoj" 60 | 61 | #: kjobtrackerformatters.cpp:69 62 | #, qt-format 63 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 64 | msgid "%1 and %2" 65 | msgstr "%1 kaj %2" 66 | 67 | #: kjobtrackerformatters.cpp:73 68 | #, qt-format 69 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 70 | msgid "%1 and %2" 71 | msgstr "%1 kaj %2" 72 | 73 | #: kjobtrackerformatters.cpp:78 74 | #, qt-format 75 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 76 | msgid "%1 and %2" 77 | msgstr "%1 kaj %2" 78 | 79 | #. Job name, e.g. Copying has failed 80 | #: knotificationjobuidelegate.cpp:28 81 | #, qt-format 82 | msgctxt "KNotificationJobUiDelegate|" 83 | msgid "%1 (Failed)" 84 | msgstr "%1 (Malsukcesa)" 85 | 86 | #: kstatusbarjobtracker.cpp:161 87 | msgctxt "KStatusBarJobTracker|" 88 | msgid "Stop" 89 | msgstr "Haltigi" 90 | 91 | #: kstatusbarjobtracker.cpp:240 92 | msgctxt "KStatusBarJobTracker|" 93 | msgid " Stalled " 94 | msgstr " Paraliziĝita " 95 | 96 | #: kstatusbarjobtracker.cpp:242 97 | #, qt-format 98 | msgctxt "KStatusBarJobTracker|" 99 | msgid " %1/s " 100 | msgstr " %1/s " 101 | 102 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 103 | #, qt-format 104 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 105 | msgid "%1:" 106 | msgstr "%1:" 107 | 108 | #: kwidgetjobtracker.cpp:354 109 | #, qt-format 110 | msgctxt "KWidgetJobTracker|" 111 | msgid "%1 of %2 complete" 112 | msgid_plural "%1 of %2 complete" 113 | msgstr[0] "%1 el %2 estas kompleta" 114 | msgstr[1] "%1 el %2 estas kompletaj" 115 | 116 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 117 | #, qt-format 118 | msgctxt "KWidgetJobTracker|" 119 | msgid "%1 / %n folder(s)" 120 | msgid_plural "%1 / %n folder(s)" 121 | msgstr[0] "%1 / %n dosiero" 122 | msgstr[1] "%1 / %n dosieroj" 123 | 124 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 125 | #, qt-format 126 | msgctxt "KWidgetJobTracker|" 127 | msgid "%1 / %n file(s)" 128 | msgid_plural "%1 / %n file(s)" 129 | msgstr[0] "%1 / %n dosiero" 130 | msgstr[1] "%1 / %n dosieroj" 131 | 132 | #: kwidgetjobtracker.cpp:408 133 | #, qt-format 134 | msgctxt "KWidgetJobTracker|" 135 | msgid "%1 / %n item(s)" 136 | msgid_plural "%1 / %n item(s)" 137 | msgstr[0] "%1 / %n ero(j)" 138 | msgstr[1] "%1 / %n eroj" 139 | 140 | #: kwidgetjobtracker.cpp:424 141 | #, qt-format 142 | msgctxt "KWidgetJobTracker|" 143 | msgid "%1% of %2" 144 | msgstr "%1% de %2" 145 | 146 | #: kwidgetjobtracker.cpp:428 147 | #, qt-format 148 | msgctxt "KWidgetJobTracker|" 149 | msgid "%1% of %n file(s)" 150 | msgid_plural "%1% of %n file(s)" 151 | msgstr[0] "%1% de %n dosiero" 152 | msgstr[1] "%1% de %n dosieroj" 153 | 154 | #: kwidgetjobtracker.cpp:430 155 | #, qt-format 156 | msgctxt "KWidgetJobTracker|" 157 | msgid "%1%" 158 | msgstr "%1%" 159 | 160 | #: kwidgetjobtracker.cpp:444 161 | msgctxt "KWidgetJobTracker|" 162 | msgid "Stalled" 163 | msgstr "Paraliziĝita" 164 | 165 | #: kwidgetjobtracker.cpp:451 166 | #, qt-format 167 | msgctxt "KWidgetJobTracker|" 168 | msgid "%1/s (%2 remaining)" 169 | msgid_plural "%1/s (%2 remaining)" 170 | msgstr[0] "%1/s ( %2 restanta )" 171 | msgstr[1] "%1/s ( %2 restantaj )" 172 | 173 | #: kwidgetjobtracker.cpp:454 174 | #, qt-format 175 | msgctxt "KWidgetJobTracker|speed in bytes per second" 176 | msgid "%1/s" 177 | msgstr "%1/s " 178 | 179 | #: kwidgetjobtracker.cpp:462 180 | msgctxt "KWidgetJobTracker|" 181 | msgid "&Close" 182 | msgstr "F&ermi" 183 | 184 | #: kwidgetjobtracker.cpp:464 185 | msgctxt "KWidgetJobTracker|" 186 | msgid "Close the current window or document" 187 | msgstr "Fermi la nunan fenestron aŭ dokumenton" 188 | 189 | #: kwidgetjobtracker.cpp:478 190 | #, qt-format 191 | msgctxt "KWidgetJobTracker|" 192 | msgid "%1/s (done)" 193 | msgstr "%1/s (preta)" 194 | 195 | #: kwidgetjobtracker.cpp:484 196 | msgctxt "KWidgetJobTracker|" 197 | msgid "&Resume" 198 | msgstr "Daŭ&rigi" 199 | 200 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 201 | msgctxt "KWidgetJobTracker|" 202 | msgid "&Pause" 203 | msgstr "&Paŭzi" 204 | 205 | #: kwidgetjobtracker.cpp:514 206 | msgctxt "KWidgetJobTracker|The source url of a job" 207 | msgid "Source:" 208 | msgstr "Fonto:" 209 | 210 | #: kwidgetjobtracker.cpp:522 211 | msgctxt "KWidgetJobTracker|The destination url of a job" 212 | msgid "Destination:" 213 | msgstr "Celo:" 214 | 215 | #: kwidgetjobtracker.cpp:534 216 | msgctxt "" 217 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 218 | "percent sign. Make sure to include %p in your translation." 219 | msgid "%p%" 220 | msgstr "%p%" 221 | 222 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 223 | msgctxt "KWidgetJobTracker|" 224 | msgid "Click this to expand the dialog, to show details" 225 | msgstr "Alkalku tion por vastigi la dialogon, malkaŝante detalojn" 226 | 227 | #: kwidgetjobtracker.cpp:583 228 | msgctxt "KWidgetJobTracker|" 229 | msgid "&Keep this window open after transfer is complete" 230 | msgstr "Daŭri &preni ĉi tiun fenestron malferman post transmeto" 231 | 232 | #: kwidgetjobtracker.cpp:591 233 | msgctxt "KWidgetJobTracker|" 234 | msgid "Open &File" 235 | msgstr "Malfermi &Dosieron" 236 | 237 | #: kwidgetjobtracker.cpp:597 238 | msgctxt "KWidgetJobTracker|" 239 | msgid "Open &Destination" 240 | msgstr "Malfermi &Celon" 241 | 242 | #: kwidgetjobtracker.cpp:605 243 | msgctxt "KWidgetJobTracker|" 244 | msgid "&Cancel" 245 | msgstr "&Rezigni" 246 | 247 | #: kwidgetjobtracker.cpp:613 248 | msgctxt "KWidgetJobTracker|" 249 | msgid "Progress Dialog" 250 | msgstr "Progresdialogo" 251 | 252 | #: kwidgetjobtracker.cpp:626 253 | #, qt-format 254 | msgctxt "KWidgetJobTracker|" 255 | msgid "%n item(s)" 256 | msgid_plural "%n item(s)" 257 | msgstr[0] "%n ero(j)" 258 | msgstr[1] "%n ero(j)" 259 | 260 | #: kwidgetjobtracker.cpp:632 261 | #, qt-format 262 | msgctxt "KWidgetJobTracker|" 263 | msgid "%n folder(s)" 264 | msgid_plural "%n folder(s)" 265 | msgstr[0] "%n dosierujo(j)" 266 | msgstr[1] "%n dosierujo(j)" 267 | 268 | #: kwidgetjobtracker.cpp:636 269 | #, qt-format 270 | msgctxt "KWidgetJobTracker|" 271 | msgid "%n file(s)" 272 | msgid_plural "%n file(s)" 273 | msgstr[0] "%n dosiero" 274 | msgstr[1] "%n dosieroj" 275 | 276 | #: kwidgetjobtracker.cpp:739 277 | msgctxt "KWidgetJobTracker|" 278 | msgid "Click this to collapse the dialog, to hide details" 279 | msgstr "Alkalku tion por malvastigi la dialogon, kaŝante detalojn" 280 | -------------------------------------------------------------------------------- /poqm/ja/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Translation of kdelibs4 into Japanese. 2 | # This file is distributed under the same license as the kdelibs package. 3 | # Taiki Komoda , 2002, 2004, 2006, 2010. 4 | # Noboru Sinohara , 2004. 5 | # Toyohiro Asukai , 2004. 6 | # Kurose Shushi , 2004. 7 | # AWASHIRO Ikuya , 2004. 8 | # Shinichi Tsunoda , 2005. 9 | # Yukiko Bando , 2006, 2007, 2008, 2009, 2010. 10 | # Fumiaki Okushi , 2006, 2007, 2008, 2010, 2011, 2015. 11 | # 12 | msgid "" 13 | msgstr "" 14 | "Project-Id-Version: kdelibs4\n" 15 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 16 | "POT-Creation-Date: 2014-03-23 01:50+0000\n" 17 | "PO-Revision-Date: 2015-04-19 16:18-0700\n" 18 | "Last-Translator: Fumiaki Okushi \n" 19 | "Language-Team: Japanese \n" 20 | "Language: ja\n" 21 | "MIME-Version: 1.0\n" 22 | "Content-Type: text/plain; charset=UTF-8\n" 23 | "Content-Transfer-Encoding: 8bit\n" 24 | "Plural-Forms: nplurals=1; plural=0;\n" 25 | "X-Accelerator-Marker: &\n" 26 | "X-Text-Markup: qtrich\n" 27 | "X-Generator: Lokalize 1.1\n" 28 | "X-Qt-Contexts: true\n" 29 | 30 | #: kjobtrackerformatters.cpp:27 31 | #, qt-format 32 | msgctxt "KJobTrackerFormatters|@item:intext" 33 | msgid "%n day(s)" 34 | msgid_plural "%n day(s)" 35 | msgstr[0] "%n 日" 36 | 37 | #: kjobtrackerformatters.cpp:34 38 | #, qt-format 39 | msgctxt "KJobTrackerFormatters|@item:intext" 40 | msgid "%n hour(s)" 41 | msgid_plural "%n hour(s)" 42 | msgstr[0] "%n 時間" 43 | 44 | #: kjobtrackerformatters.cpp:41 45 | #, qt-format 46 | msgctxt "KJobTrackerFormatters|@item:intext" 47 | msgid "%n minute(s)" 48 | msgid_plural "%n minute(s)" 49 | msgstr[0] "%n 分" 50 | 51 | #: kjobtrackerformatters.cpp:48 52 | #, qt-format 53 | msgctxt "KJobTrackerFormatters|@item:intext" 54 | msgid "%n second(s)" 55 | msgid_plural "%n second(s)" 56 | msgstr[0] "%n 秒" 57 | 58 | #: kjobtrackerformatters.cpp:69 59 | #, qt-format 60 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 61 | msgid "%1 and %2" 62 | msgstr "%1 %2" 63 | 64 | #: kjobtrackerformatters.cpp:73 65 | #, qt-format 66 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 67 | msgid "%1 and %2" 68 | msgstr "%1 %2" 69 | 70 | #: kjobtrackerformatters.cpp:78 71 | #, qt-format 72 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 73 | msgid "%1 and %2" 74 | msgstr "%1 %2" 75 | 76 | #. Job name, e.g. Copying has failed 77 | #: knotificationjobuidelegate.cpp:28 78 | #, qt-format 79 | msgctxt "KNotificationJobUiDelegate|" 80 | msgid "%1 (Failed)" 81 | msgstr "" 82 | 83 | #: kstatusbarjobtracker.cpp:161 84 | msgctxt "KStatusBarJobTracker|" 85 | msgid "Stop" 86 | msgstr "停止" 87 | 88 | #: kstatusbarjobtracker.cpp:240 89 | msgctxt "KStatusBarJobTracker|" 90 | msgid " Stalled " 91 | msgstr " ストール " 92 | 93 | #: kstatusbarjobtracker.cpp:242 94 | #, qt-format 95 | msgctxt "KStatusBarJobTracker|" 96 | msgid " %1/s " 97 | msgstr " %1/秒 " 98 | 99 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 100 | #, qt-format 101 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 102 | msgid "%1:" 103 | msgstr "%1:" 104 | 105 | #: kwidgetjobtracker.cpp:354 106 | #, qt-format 107 | msgctxt "KWidgetJobTracker|" 108 | msgid "%1 of %2 complete" 109 | msgid_plural "%1 of %2 complete" 110 | msgstr[0] "%1 / %2 完了" 111 | 112 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 113 | #, qt-format 114 | msgctxt "KWidgetJobTracker|" 115 | msgid "%1 / %n folder(s)" 116 | msgid_plural "%1 / %n folder(s)" 117 | msgstr[0] "%1 / %n フォルダ" 118 | 119 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 120 | #, qt-format 121 | msgctxt "KWidgetJobTracker|" 122 | msgid "%1 / %n file(s)" 123 | msgid_plural "%1 / %n file(s)" 124 | msgstr[0] "%1 / %n ファイル" 125 | 126 | #: kwidgetjobtracker.cpp:408 127 | #, fuzzy, qt-format 128 | #| msgctxt "KWidgetJobTracker|" 129 | #| msgid "%1 / %n file(s)" 130 | #| msgid_plural "%1 / %n file(s)" 131 | msgctxt "KWidgetJobTracker|" 132 | msgid "%1 / %n item(s)" 133 | msgid_plural "%1 / %n item(s)" 134 | msgstr[0] "%1 / %n ファイル" 135 | 136 | #: kwidgetjobtracker.cpp:424 137 | #, qt-format 138 | msgctxt "KWidgetJobTracker|" 139 | msgid "%1% of %2" 140 | msgstr "%2 の %1%" 141 | 142 | #: kwidgetjobtracker.cpp:428 143 | #, qt-format 144 | msgctxt "KWidgetJobTracker|" 145 | msgid "%1% of %n file(s)" 146 | msgid_plural "%1% of %n file(s)" 147 | msgstr[0] "%1% (%n ファイル中)" 148 | 149 | #: kwidgetjobtracker.cpp:430 150 | #, qt-format 151 | msgctxt "KWidgetJobTracker|" 152 | msgid "%1%" 153 | msgstr "%1%" 154 | 155 | #: kwidgetjobtracker.cpp:444 156 | msgctxt "KWidgetJobTracker|" 157 | msgid "Stalled" 158 | msgstr "ストールしました" 159 | 160 | #: kwidgetjobtracker.cpp:451 161 | #, qt-format 162 | msgctxt "KWidgetJobTracker|" 163 | msgid "%1/s (%2 remaining)" 164 | msgid_plural "%1/s (%2 remaining)" 165 | msgstr[0] "%1/秒 (残り %2)" 166 | 167 | #: kwidgetjobtracker.cpp:454 168 | #, qt-format 169 | msgctxt "KWidgetJobTracker|speed in bytes per second" 170 | msgid "%1/s" 171 | msgstr "%1/秒" 172 | 173 | #: kwidgetjobtracker.cpp:462 174 | msgctxt "KWidgetJobTracker|" 175 | msgid "&Close" 176 | msgstr "閉じる(&C)" 177 | 178 | #: kwidgetjobtracker.cpp:464 179 | msgctxt "KWidgetJobTracker|" 180 | msgid "Close the current window or document" 181 | msgstr "現在のウィンドウまたは文書を閉じます" 182 | 183 | #: kwidgetjobtracker.cpp:478 184 | #, qt-format 185 | msgctxt "KWidgetJobTracker|" 186 | msgid "%1/s (done)" 187 | msgstr "%1/秒 (完了)" 188 | 189 | #: kwidgetjobtracker.cpp:484 190 | msgctxt "KWidgetJobTracker|" 191 | msgid "&Resume" 192 | msgstr "再開(&R)" 193 | 194 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 195 | msgctxt "KWidgetJobTracker|" 196 | msgid "&Pause" 197 | msgstr "一時停止(&P)" 198 | 199 | #: kwidgetjobtracker.cpp:514 200 | msgctxt "KWidgetJobTracker|The source url of a job" 201 | msgid "Source:" 202 | msgstr "転送元:" 203 | 204 | #: kwidgetjobtracker.cpp:522 205 | msgctxt "KWidgetJobTracker|The destination url of a job" 206 | msgid "Destination:" 207 | msgstr "転送先:" 208 | 209 | #: kwidgetjobtracker.cpp:534 210 | #, fuzzy 211 | #| msgctxt "KWidgetJobTracker|" 212 | #| msgid "%1%" 213 | msgctxt "" 214 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 215 | "percent sign. Make sure to include %p in your translation." 216 | msgid "%p%" 217 | msgstr "%1%" 218 | 219 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 220 | msgctxt "KWidgetJobTracker|" 221 | msgid "Click this to expand the dialog, to show details" 222 | msgstr "ダイアログを展開して詳細を表示するには、ここをクリックします" 223 | 224 | #: kwidgetjobtracker.cpp:583 225 | msgctxt "KWidgetJobTracker|" 226 | msgid "&Keep this window open after transfer is complete" 227 | msgstr "転送完了後もこのウィンドウを開いておく(&K)" 228 | 229 | #: kwidgetjobtracker.cpp:591 230 | msgctxt "KWidgetJobTracker|" 231 | msgid "Open &File" 232 | msgstr "ファイルを開く(&F)" 233 | 234 | #: kwidgetjobtracker.cpp:597 235 | msgctxt "KWidgetJobTracker|" 236 | msgid "Open &Destination" 237 | msgstr "転送先を開く(&D)" 238 | 239 | #: kwidgetjobtracker.cpp:605 240 | msgctxt "KWidgetJobTracker|" 241 | msgid "&Cancel" 242 | msgstr "キャンセル(&C)" 243 | 244 | #: kwidgetjobtracker.cpp:613 245 | msgctxt "KWidgetJobTracker|" 246 | msgid "Progress Dialog" 247 | msgstr "進捗ダイアログ" 248 | 249 | #: kwidgetjobtracker.cpp:626 250 | #, qt-format 251 | msgctxt "KWidgetJobTracker|" 252 | msgid "%n item(s)" 253 | msgid_plural "%n item(s)" 254 | msgstr[0] "" 255 | 256 | #: kwidgetjobtracker.cpp:632 257 | #, qt-format 258 | msgctxt "KWidgetJobTracker|" 259 | msgid "%n folder(s)" 260 | msgid_plural "%n folder(s)" 261 | msgstr[0] "%n フォルダ" 262 | 263 | #: kwidgetjobtracker.cpp:636 264 | #, qt-format 265 | msgctxt "KWidgetJobTracker|" 266 | msgid "%n file(s)" 267 | msgid_plural "%n file(s)" 268 | msgstr[0] "%n ファイル" 269 | 270 | #: kwidgetjobtracker.cpp:739 271 | msgctxt "KWidgetJobTracker|" 272 | msgid "Click this to collapse the dialog, to hide details" 273 | msgstr "ダイアログをたたんで詳細を隠すには、ここをクリックします" 274 | -------------------------------------------------------------------------------- /poqm/ka/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: \n" 4 | "POT-Creation-Date: \n" 5 | "PO-Revision-Date: \n" 6 | "Last-Translator: Temuri Doghonadze \n" 7 | "Language-Team: \n" 8 | "Language: ka\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 13 | "X-Qt-Contexts: true\n" 14 | "X-Generator: Poedit 3.4\n" 15 | 16 | #: kjobtrackerformatters.cpp:27 17 | #, qt-format 18 | msgctxt "KJobTrackerFormatters|@item:intext" 19 | msgid "%n day(s)" 20 | msgid_plural "%n day(s)" 21 | msgstr[0] "%n დღე" 22 | msgstr[1] "%n დღე" 23 | 24 | #: kjobtrackerformatters.cpp:34 25 | #, qt-format 26 | msgctxt "KJobTrackerFormatters|@item:intext" 27 | msgid "%n hour(s)" 28 | msgid_plural "%n hour(s)" 29 | msgstr[0] "%n საათი" 30 | msgstr[1] "%n საათი" 31 | 32 | #: kjobtrackerformatters.cpp:41 33 | #, qt-format 34 | msgctxt "KJobTrackerFormatters|@item:intext" 35 | msgid "%n minute(s)" 36 | msgid_plural "%n minute(s)" 37 | msgstr[0] "%n წუთი" 38 | msgstr[1] "%n წუთი" 39 | 40 | #: kjobtrackerformatters.cpp:48 41 | #, qt-format 42 | msgctxt "KJobTrackerFormatters|@item:intext" 43 | msgid "%n second(s)" 44 | msgid_plural "%n second(s)" 45 | msgstr[0] "%n წამი" 46 | msgstr[1] "%n წამი" 47 | 48 | #: kjobtrackerformatters.cpp:69 49 | #, qt-format 50 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 51 | msgid "%1 and %2" 52 | msgstr "%1 და %2" 53 | 54 | #: kjobtrackerformatters.cpp:73 55 | #, qt-format 56 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 57 | msgid "%1 and %2" 58 | msgstr "%1 და %2" 59 | 60 | #: kjobtrackerformatters.cpp:78 61 | #, qt-format 62 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 63 | msgid "%1 and %2" 64 | msgstr "%1 და %2" 65 | 66 | #. Job name, e.g. Copying has failed 67 | #: knotificationjobuidelegate.cpp:28 68 | #, qt-format 69 | msgctxt "KNotificationJobUiDelegate|" 70 | msgid "%1 (Failed)" 71 | msgstr "%1 (ჩავარდა)" 72 | 73 | #: kstatusbarjobtracker.cpp:161 74 | msgctxt "KStatusBarJobTracker|" 75 | msgid "Stop" 76 | msgstr "შეჩერება" 77 | 78 | #: kstatusbarjobtracker.cpp:240 79 | msgctxt "KStatusBarJobTracker|" 80 | msgid " Stalled " 81 | msgstr " გაჭედილი " 82 | 83 | #: kstatusbarjobtracker.cpp:242 84 | #, qt-format 85 | msgctxt "KStatusBarJobTracker|" 86 | msgid " %1/s " 87 | msgstr " %1/წმ " 88 | 89 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 90 | #, qt-format 91 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 92 | msgid "%1:" 93 | msgstr "%1:" 94 | 95 | #: kwidgetjobtracker.cpp:354 96 | #, qt-format 97 | msgctxt "KWidgetJobTracker|" 98 | msgid "%1 of %2 complete" 99 | msgid_plural "%1 of %2 complete" 100 | msgstr[0] "%1 %2-დან დასრულებულია" 101 | msgstr[1] "%1 %2-დან დასრულებულია" 102 | 103 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 104 | #, qt-format 105 | msgctxt "KWidgetJobTracker|" 106 | msgid "%1 / %n folder(s)" 107 | msgid_plural "%1 / %n folder(s)" 108 | msgstr[0] "%1 / %n საქაღალდე" 109 | msgstr[1] "%1 / %n საქაღალდე" 110 | 111 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 112 | #, qt-format 113 | msgctxt "KWidgetJobTracker|" 114 | msgid "%1 / %n file(s)" 115 | msgid_plural "%1 / %n file(s)" 116 | msgstr[0] "%1 / %n ფაილი" 117 | msgstr[1] "%1 / %n ფაილი" 118 | 119 | #: kwidgetjobtracker.cpp:408 120 | #, qt-format 121 | msgctxt "KWidgetJobTracker|" 122 | msgid "%1 / %n item(s)" 123 | msgid_plural "%1 / %n item(s)" 124 | msgstr[0] "%1 / %n ჩანაწერი" 125 | msgstr[1] "%1 / %n ჩანაწერი" 126 | 127 | #: kwidgetjobtracker.cpp:424 128 | #, qt-format 129 | msgctxt "KWidgetJobTracker|" 130 | msgid "%1% of %2" 131 | msgstr "%1% %2-დან" 132 | 133 | #: kwidgetjobtracker.cpp:428 134 | #, qt-format 135 | msgctxt "KWidgetJobTracker|" 136 | msgid "%1% of %n file(s)" 137 | msgid_plural "%1% of %n file(s)" 138 | msgstr[0] "%1% ფაილი %n -დან" 139 | msgstr[1] "%1% ფაილი %n -დან" 140 | 141 | #: kwidgetjobtracker.cpp:430 142 | #, qt-format 143 | msgctxt "KWidgetJobTracker|" 144 | msgid "%1%" 145 | msgstr "%1%" 146 | 147 | #: kwidgetjobtracker.cpp:444 148 | msgctxt "KWidgetJobTracker|" 149 | msgid "Stalled" 150 | msgstr "გაჭედილი" 151 | 152 | #: kwidgetjobtracker.cpp:451 153 | #, qt-format 154 | msgctxt "KWidgetJobTracker|" 155 | msgid "%1/s (%2 remaining)" 156 | msgid_plural "%1/s (%2 remaining)" 157 | msgstr[0] "%1/წმ (დარჩენილია %2)" 158 | msgstr[1] "%1/წმ (დარჩენილია %2)" 159 | 160 | #: kwidgetjobtracker.cpp:454 161 | #, qt-format 162 | msgctxt "KWidgetJobTracker|speed in bytes per second" 163 | msgid "%1/s" 164 | msgstr "%1/წმ" 165 | 166 | #: kwidgetjobtracker.cpp:462 167 | msgctxt "KWidgetJobTracker|" 168 | msgid "&Close" 169 | msgstr "დაკე&ტვა" 170 | 171 | #: kwidgetjobtracker.cpp:464 172 | msgctxt "KWidgetJobTracker|" 173 | msgid "Close the current window or document" 174 | msgstr "მიმდინარე ფანჯრის ან დოკუმენტის დახურვა" 175 | 176 | #: kwidgetjobtracker.cpp:478 177 | #, qt-format 178 | msgctxt "KWidgetJobTracker|" 179 | msgid "%1/s (done)" 180 | msgstr "%1/წმ (შესრულებულია)" 181 | 182 | #: kwidgetjobtracker.cpp:484 183 | msgctxt "KWidgetJobTracker|" 184 | msgid "&Resume" 185 | msgstr "გაგრძელება" 186 | 187 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 188 | msgctxt "KWidgetJobTracker|" 189 | msgid "&Pause" 190 | msgstr "&შეყოვნება" 191 | 192 | #: kwidgetjobtracker.cpp:514 193 | msgctxt "KWidgetJobTracker|The source url of a job" 194 | msgid "Source:" 195 | msgstr "წყარო:" 196 | 197 | #: kwidgetjobtracker.cpp:522 198 | msgctxt "KWidgetJobTracker|The destination url of a job" 199 | msgid "Destination:" 200 | msgstr "დანიშნულება:" 201 | 202 | #: kwidgetjobtracker.cpp:534 203 | msgctxt "" 204 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 205 | "percent sign. Make sure to include %p in your translation." 206 | msgid "%p%" 207 | msgstr "%p%" 208 | 209 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 210 | msgctxt "KWidgetJobTracker|" 211 | msgid "Click this to expand the dialog, to show details" 212 | msgstr "დააჭირეთ ფანჯრის გასაფართოებლად, დეტალების საჩვენებლად" 213 | 214 | #: kwidgetjobtracker.cpp:583 215 | msgctxt "KWidgetJobTracker|" 216 | msgid "&Keep this window open after transfer is complete" 217 | msgstr "&მიმოცვლის დასრულების შემდეგ ფანჯარა არ დაიხურება" 218 | 219 | #: kwidgetjobtracker.cpp:591 220 | msgctxt "KWidgetJobTracker|" 221 | msgid "Open &File" 222 | msgstr "&ფაილის გახსნა" 223 | 224 | #: kwidgetjobtracker.cpp:597 225 | msgctxt "KWidgetJobTracker|" 226 | msgid "Open &Destination" 227 | msgstr "&სამიზნის გახსნა" 228 | 229 | #: kwidgetjobtracker.cpp:605 230 | msgctxt "KWidgetJobTracker|" 231 | msgid "&Cancel" 232 | msgstr "&გაუქმება" 233 | 234 | #: kwidgetjobtracker.cpp:613 235 | msgctxt "KWidgetJobTracker|" 236 | msgid "Progress Dialog" 237 | msgstr "მიმდინარეობის ფანჯარა" 238 | 239 | #: kwidgetjobtracker.cpp:626 240 | #, qt-format 241 | msgctxt "KWidgetJobTracker|" 242 | msgid "%n item(s)" 243 | msgid_plural "%n item(s)" 244 | msgstr[0] "%n ჩანაწერი" 245 | msgstr[1] "%n ჩანაწერი" 246 | 247 | #: kwidgetjobtracker.cpp:632 248 | #, qt-format 249 | msgctxt "KWidgetJobTracker|" 250 | msgid "%n folder(s)" 251 | msgid_plural "%n folder(s)" 252 | msgstr[0] "%n საქაღალდე" 253 | msgstr[1] "%n საქაღალდე" 254 | 255 | #: kwidgetjobtracker.cpp:636 256 | #, qt-format 257 | msgctxt "KWidgetJobTracker|" 258 | msgid "%n file(s)" 259 | msgid_plural "%n file(s)" 260 | msgstr[0] "%n ფაილი" 261 | msgstr[1] "%n ფაილი" 262 | 263 | #: kwidgetjobtracker.cpp:739 264 | msgctxt "KWidgetJobTracker|" 265 | msgid "Click this to collapse the dialog, to hide details" 266 | msgstr "დააჭირეთ ფანჯრის დასაპატარავებლად, დეტალების დასამალად" 267 | -------------------------------------------------------------------------------- /poqm/ko/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Korean messages for kdelibs. 2 | # Copyright (C) Free Software Foundation, Inc. 3 | # Cho Sung Jae , 2007. 4 | # SPDX-FileCopyrightText: 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2020, 2023, 2024 Shinjo Park 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kdelibs4\n" 9 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 10 | "POT-Creation-Date: 2014-03-23 01:50+0000\n" 11 | "PO-Revision-Date: 2024-02-09 23:45+0100\n" 12 | "Last-Translator: Shinjo Park \n" 13 | "Language-Team: Korean \n" 14 | "Language: ko\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | "X-Generator: Lokalize 23.08.1\n" 20 | "X-Qt-Contexts: true\n" 21 | 22 | #: kjobtrackerformatters.cpp:27 23 | #, qt-format 24 | msgctxt "KJobTrackerFormatters|@item:intext" 25 | msgid "%n day(s)" 26 | msgid_plural "%n day(s)" 27 | msgstr[0] "%n일" 28 | 29 | #: kjobtrackerformatters.cpp:34 30 | #, qt-format 31 | msgctxt "KJobTrackerFormatters|@item:intext" 32 | msgid "%n hour(s)" 33 | msgid_plural "%n hour(s)" 34 | msgstr[0] "%n시간" 35 | 36 | #: kjobtrackerformatters.cpp:41 37 | #, qt-format 38 | msgctxt "KJobTrackerFormatters|@item:intext" 39 | msgid "%n minute(s)" 40 | msgid_plural "%n minute(s)" 41 | msgstr[0] "%n분" 42 | 43 | #: kjobtrackerformatters.cpp:48 44 | #, qt-format 45 | msgctxt "KJobTrackerFormatters|@item:intext" 46 | msgid "%n second(s)" 47 | msgid_plural "%n second(s)" 48 | msgstr[0] "%n초" 49 | 50 | #: kjobtrackerformatters.cpp:69 51 | #, qt-format 52 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 53 | msgid "%1 and %2" 54 | msgstr "%1 %2" 55 | 56 | #: kjobtrackerformatters.cpp:73 57 | #, qt-format 58 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 59 | msgid "%1 and %2" 60 | msgstr "%1 %2" 61 | 62 | #: kjobtrackerformatters.cpp:78 63 | #, qt-format 64 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 65 | msgid "%1 and %2" 66 | msgstr "%1 %2" 67 | 68 | #. Job name, e.g. Copying has failed 69 | #: knotificationjobuidelegate.cpp:28 70 | #, qt-format 71 | msgctxt "KNotificationJobUiDelegate|" 72 | msgid "%1 (Failed)" 73 | msgstr "%1(실패함)" 74 | 75 | #: kstatusbarjobtracker.cpp:161 76 | msgctxt "KStatusBarJobTracker|" 77 | msgid "Stop" 78 | msgstr "정지" 79 | 80 | #: kstatusbarjobtracker.cpp:240 81 | msgctxt "KStatusBarJobTracker|" 82 | msgid " Stalled " 83 | msgstr " 중지됨 " 84 | 85 | #: kstatusbarjobtracker.cpp:242 86 | #, qt-format 87 | msgctxt "KStatusBarJobTracker|" 88 | msgid " %1/s " 89 | msgstr " %1/초 " 90 | 91 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 92 | #, qt-format 93 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 94 | msgid "%1:" 95 | msgstr "%1:" 96 | 97 | #: kwidgetjobtracker.cpp:354 98 | #, qt-format 99 | msgctxt "KWidgetJobTracker|" 100 | msgid "%1 of %2 complete" 101 | msgid_plural "%1 of %2 complete" 102 | msgstr[0] "%2 중 %1 완료" 103 | 104 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 105 | #, qt-format 106 | msgctxt "KWidgetJobTracker|" 107 | msgid "%1 / %n folder(s)" 108 | msgid_plural "%1 / %n folder(s)" 109 | msgstr[0] "폴더 %1 / %n개" 110 | 111 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 112 | #, qt-format 113 | msgctxt "KWidgetJobTracker|" 114 | msgid "%1 / %n file(s)" 115 | msgid_plural "%1 / %n file(s)" 116 | msgstr[0] "파일 %1 / %n개" 117 | 118 | #: kwidgetjobtracker.cpp:408 119 | #, qt-format 120 | msgctxt "KWidgetJobTracker|" 121 | msgid "%1 / %n item(s)" 122 | msgid_plural "%1 / %n item(s)" 123 | msgstr[0] "항목 %1 / %n개" 124 | 125 | #: kwidgetjobtracker.cpp:424 126 | #, qt-format 127 | msgctxt "KWidgetJobTracker|" 128 | msgid "%1% of %2" 129 | msgstr "%2 중 %1%" 130 | 131 | #: kwidgetjobtracker.cpp:428 132 | #, qt-format 133 | msgctxt "KWidgetJobTracker|" 134 | msgid "%1% of %n file(s)" 135 | msgid_plural "%1% of %n file(s)" 136 | msgstr[0] "파일 %n개 중 %1%" 137 | 138 | #: kwidgetjobtracker.cpp:430 139 | #, qt-format 140 | msgctxt "KWidgetJobTracker|" 141 | msgid "%1%" 142 | msgstr "%1%" 143 | 144 | #: kwidgetjobtracker.cpp:444 145 | msgctxt "KWidgetJobTracker|" 146 | msgid "Stalled" 147 | msgstr "지연됨" 148 | 149 | #: kwidgetjobtracker.cpp:451 150 | #, qt-format 151 | msgctxt "KWidgetJobTracker|" 152 | msgid "%1/s (%2 remaining)" 153 | msgid_plural "%1/s (%2 remaining)" 154 | msgstr[0] "%1/초(%2 남음)" 155 | 156 | #: kwidgetjobtracker.cpp:454 157 | #, qt-format 158 | msgctxt "KWidgetJobTracker|speed in bytes per second" 159 | msgid "%1/s" 160 | msgstr "%1/초" 161 | 162 | #: kwidgetjobtracker.cpp:462 163 | msgctxt "KWidgetJobTracker|" 164 | msgid "&Close" 165 | msgstr "닫기(&C)" 166 | 167 | #: kwidgetjobtracker.cpp:464 168 | msgctxt "KWidgetJobTracker|" 169 | msgid "Close the current window or document" 170 | msgstr "현재 창이나 문서를 닫습니다" 171 | 172 | #: kwidgetjobtracker.cpp:478 173 | #, qt-format 174 | msgctxt "KWidgetJobTracker|" 175 | msgid "%1/s (done)" 176 | msgstr "%1/초(완료)" 177 | 178 | #: kwidgetjobtracker.cpp:484 179 | msgctxt "KWidgetJobTracker|" 180 | msgid "&Resume" 181 | msgstr "다시 시작(&R)" 182 | 183 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 184 | msgctxt "KWidgetJobTracker|" 185 | msgid "&Pause" 186 | msgstr "일시 정지(&P)" 187 | 188 | #: kwidgetjobtracker.cpp:514 189 | msgctxt "KWidgetJobTracker|The source url of a job" 190 | msgid "Source:" 191 | msgstr "원본:" 192 | 193 | #: kwidgetjobtracker.cpp:522 194 | msgctxt "KWidgetJobTracker|The destination url of a job" 195 | msgid "Destination:" 196 | msgstr "대상:" 197 | 198 | #: kwidgetjobtracker.cpp:534 199 | msgctxt "" 200 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 201 | "percent sign. Make sure to include %p in your translation." 202 | msgid "%p%" 203 | msgstr "%p%" 204 | 205 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 206 | msgctxt "KWidgetJobTracker|" 207 | msgid "Click this to expand the dialog, to show details" 208 | msgstr "이 대화 상자의 나머지 부분을 보려면 클릭하십시오" 209 | 210 | #: kwidgetjobtracker.cpp:583 211 | msgctxt "KWidgetJobTracker|" 212 | msgid "&Keep this window open after transfer is complete" 213 | msgstr "전송이 완료된 후에도 창 열어 두기(&K)" 214 | 215 | #: kwidgetjobtracker.cpp:591 216 | msgctxt "KWidgetJobTracker|" 217 | msgid "Open &File" 218 | msgstr "파일 열기(&F)" 219 | 220 | #: kwidgetjobtracker.cpp:597 221 | msgctxt "KWidgetJobTracker|" 222 | msgid "Open &Destination" 223 | msgstr "대상 열기(&D)" 224 | 225 | #: kwidgetjobtracker.cpp:605 226 | msgctxt "KWidgetJobTracker|" 227 | msgid "&Cancel" 228 | msgstr "취소(&C)" 229 | 230 | #: kwidgetjobtracker.cpp:613 231 | msgctxt "KWidgetJobTracker|" 232 | msgid "Progress Dialog" 233 | msgstr "진행 대화 상자" 234 | 235 | #: kwidgetjobtracker.cpp:626 236 | #, qt-format 237 | msgctxt "KWidgetJobTracker|" 238 | msgid "%n item(s)" 239 | msgid_plural "%n item(s)" 240 | msgstr[0] "항목 %n개" 241 | 242 | #: kwidgetjobtracker.cpp:632 243 | #, qt-format 244 | msgctxt "KWidgetJobTracker|" 245 | msgid "%n folder(s)" 246 | msgid_plural "%n folder(s)" 247 | msgstr[0] "폴더 %n개" 248 | 249 | #: kwidgetjobtracker.cpp:636 250 | #, qt-format 251 | msgctxt "KWidgetJobTracker|" 252 | msgid "%n file(s)" 253 | msgid_plural "%n file(s)" 254 | msgstr[0] "파일 %n개" 255 | 256 | #: kwidgetjobtracker.cpp:739 257 | msgctxt "KWidgetJobTracker|" 258 | msgid "Click this to collapse the dialog, to hide details" 259 | msgstr "이 대화 상자의 나머지 부분을 숨기려면 클릭하십시오" 260 | 261 | #~ msgctxt "KJobTrackerFormatters|" 262 | #~ msgid "%1 B" 263 | #~ msgstr "%1 B" 264 | 265 | #~ msgctxt "KJobTrackerFormatters|" 266 | #~ msgid "%1 KiB" 267 | #~ msgstr "%1 KiB" 268 | 269 | #~ msgctxt "KJobTrackerFormatters|" 270 | #~ msgid "%1 MiB" 271 | #~ msgstr "%1 MiB" 272 | 273 | #~ msgctxt "KJobTrackerFormatters|" 274 | #~ msgid "%1 GiB" 275 | #~ msgstr "%1 GiB" 276 | 277 | #~ msgctxt "KJobTrackerFormatters|" 278 | #~ msgid "%1 TiB" 279 | #~ msgstr "%1 TiB" 280 | 281 | #~ msgctxt "KJobTrackerFormatters|" 282 | #~ msgid "%1 PiB" 283 | #~ msgstr "%1 PiB" 284 | 285 | #~ msgctxt "KJobTrackerFormatters|" 286 | #~ msgid "%1 EiB" 287 | #~ msgstr "%1 EiB" 288 | 289 | #~ msgctxt "KJobTrackerFormatters|" 290 | #~ msgid "%1 ZiB" 291 | #~ msgstr "%1 ZiB" 292 | 293 | #~ msgctxt "KJobTrackerFormatters|" 294 | #~ msgid "%1 YiB" 295 | #~ msgstr "%1 YiB" 296 | -------------------------------------------------------------------------------- /poqm/nb/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Translation of kjobwidgets6_qt to Norwegian Bokmål 2 | # 3 | # Knut Yrvin , 2002, 2003, 2004, 2005. 4 | # Bjørn Steensrud , 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014. 5 | # Eskild Hustvedt , 2004, 2005. 6 | # Gaute Hvoslef Kvalnes , 2004, 2005. 7 | # Axel Bojer , 2005, 2006. 8 | # Nils Kristian Tomren , 2005, 2007. 9 | # Øyvind A. Holm , 2009. 10 | msgid "" 11 | msgstr "" 12 | "Project-Id-Version: kdelibs4\n" 13 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 14 | "POT-Creation-Date: 2014-02-28 03:44+0000\n" 15 | "PO-Revision-Date: 2014-04-25 15:53+0200\n" 16 | "Last-Translator: Bjørn Steensrud \n" 17 | "Language-Team: Norwegian Bokmål \n" 18 | "Language: nb\n" 19 | "MIME-Version: 1.0\n" 20 | "Content-Type: text/plain; charset=UTF-8\n" 21 | "Content-Transfer-Encoding: 8bit\n" 22 | "X-Generator: Lokalize 1.5\n" 23 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 24 | "X-Environment: kde\n" 25 | "X-Accelerator-Marker: &\n" 26 | "X-Text-Markup: qtrich\n" 27 | "X-Qt-Contexts: true\n" 28 | 29 | #: kjobtrackerformatters.cpp:27 30 | #, qt-format 31 | msgctxt "KJobTrackerFormatters|@item:intext" 32 | msgid "%n day(s)" 33 | msgid_plural "%n day(s)" 34 | msgstr[0] "%n dag(er)" 35 | msgstr[1] "%n dag(er)" 36 | 37 | #: kjobtrackerformatters.cpp:34 38 | #, qt-format 39 | msgctxt "KJobTrackerFormatters|@item:intext" 40 | msgid "%n hour(s)" 41 | msgid_plural "%n hour(s)" 42 | msgstr[0] "%n time(r)" 43 | msgstr[1] "%n time(r)" 44 | 45 | #: kjobtrackerformatters.cpp:41 46 | #, qt-format 47 | msgctxt "KJobTrackerFormatters|@item:intext" 48 | msgid "%n minute(s)" 49 | msgid_plural "%n minute(s)" 50 | msgstr[0] "%n minutt(er)" 51 | msgstr[1] "%n minutt(er)" 52 | 53 | #: kjobtrackerformatters.cpp:48 54 | #, qt-format 55 | msgctxt "KJobTrackerFormatters|@item:intext" 56 | msgid "%n second(s)" 57 | msgid_plural "%n second(s)" 58 | msgstr[0] "%n sekund(er)" 59 | msgstr[1] "%n sekund(er)" 60 | 61 | #: kjobtrackerformatters.cpp:69 62 | #, qt-format 63 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 64 | msgid "%1 and %2" 65 | msgstr "%1 og %2" 66 | 67 | #: kjobtrackerformatters.cpp:73 68 | #, qt-format 69 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 70 | msgid "%1 and %2" 71 | msgstr "%1 og %2" 72 | 73 | #: kjobtrackerformatters.cpp:78 74 | #, qt-format 75 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 76 | msgid "%1 and %2" 77 | msgstr "%1 og %2" 78 | 79 | #. Job name, e.g. Copying has failed 80 | #: knotificationjobuidelegate.cpp:28 81 | #, qt-format 82 | msgctxt "KNotificationJobUiDelegate|" 83 | msgid "%1 (Failed)" 84 | msgstr "" 85 | 86 | #: kstatusbarjobtracker.cpp:161 87 | msgctxt "KStatusBarJobTracker|" 88 | msgid "Stop" 89 | msgstr "Stopp" 90 | 91 | #: kstatusbarjobtracker.cpp:240 92 | msgctxt "KStatusBarJobTracker|" 93 | msgid " Stalled " 94 | msgstr " Stoppet " 95 | 96 | #: kstatusbarjobtracker.cpp:242 97 | #, qt-format 98 | msgctxt "KStatusBarJobTracker|" 99 | msgid " %1/s " 100 | msgstr " %1/s " 101 | 102 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 103 | #, qt-format 104 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 105 | msgid "%1:" 106 | msgstr "%1:" 107 | 108 | #: kwidgetjobtracker.cpp:354 109 | #, qt-format 110 | msgctxt "KWidgetJobTracker|" 111 | msgid "%1 of %2 complete" 112 | msgid_plural "%1 of %2 complete" 113 | msgstr[0] "%1 av %2 ferdig" 114 | msgstr[1] "%1 av %2 ferdige" 115 | 116 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 117 | #, qt-format 118 | msgctxt "KWidgetJobTracker|" 119 | msgid "%1 / %n folder(s)" 120 | msgid_plural "%1 / %n folder(s)" 121 | msgstr[0] "%1 / %n mappe(r)" 122 | msgstr[1] "%1 / %n mappe(r)" 123 | 124 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 125 | #, qt-format 126 | msgctxt "KWidgetJobTracker|" 127 | msgid "%1 / %n file(s)" 128 | msgid_plural "%1 / %n file(s)" 129 | msgstr[0] "%1 / %n fil(er)" 130 | msgstr[1] "%1 / %n fil(er)" 131 | 132 | #: kwidgetjobtracker.cpp:408 133 | #, qt-format 134 | msgctxt "KWidgetJobTracker|" 135 | msgid "%1 / %n item(s)" 136 | msgid_plural "%1 / %n item(s)" 137 | msgstr[0] "" 138 | msgstr[1] "" 139 | 140 | #: kwidgetjobtracker.cpp:424 141 | #, qt-format 142 | msgctxt "KWidgetJobTracker|" 143 | msgid "%1% of %2" 144 | msgstr "%1% av %2" 145 | 146 | #: kwidgetjobtracker.cpp:428 147 | #, qt-format 148 | msgctxt "KWidgetJobTracker|" 149 | msgid "%1% of %n file(s)" 150 | msgid_plural "%1% of %n file(s)" 151 | msgstr[0] "%1% av %n fil(er" 152 | msgstr[1] "%1% av %n fil(er)" 153 | 154 | #: kwidgetjobtracker.cpp:430 155 | #, qt-format 156 | msgctxt "KWidgetJobTracker|" 157 | msgid "%1%" 158 | msgstr "%1%" 159 | 160 | #: kwidgetjobtracker.cpp:444 161 | msgctxt "KWidgetJobTracker|" 162 | msgid "Stalled" 163 | msgstr "Stoppet" 164 | 165 | #: kwidgetjobtracker.cpp:451 166 | #, qt-format 167 | msgctxt "KWidgetJobTracker|" 168 | msgid "%1/s (%2 remaining)" 169 | msgid_plural "%1/s (%2 remaining)" 170 | msgstr[0] "%1/s (%2 igjen)" 171 | msgstr[1] "%1/s (%2 igjen)" 172 | 173 | #: kwidgetjobtracker.cpp:454 174 | #, qt-format 175 | msgctxt "KWidgetJobTracker|speed in bytes per second" 176 | msgid "%1/s" 177 | msgstr "%1/s " 178 | 179 | #: kwidgetjobtracker.cpp:462 180 | msgctxt "KWidgetJobTracker|" 181 | msgid "&Close" 182 | msgstr "&Lukk" 183 | 184 | #: kwidgetjobtracker.cpp:464 185 | msgctxt "KWidgetJobTracker|" 186 | msgid "Close the current window or document" 187 | msgstr "Lukk vinduet eller dokumentet" 188 | 189 | #: kwidgetjobtracker.cpp:478 190 | #, qt-format 191 | msgctxt "KWidgetJobTracker|" 192 | msgid "%1/s (done)" 193 | msgstr "%1/s (fullført)" 194 | 195 | #: kwidgetjobtracker.cpp:484 196 | msgctxt "KWidgetJobTracker|" 197 | msgid "&Resume" 198 | msgstr "Fo&rtsett" 199 | 200 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 201 | msgctxt "KWidgetJobTracker|" 202 | msgid "&Pause" 203 | msgstr "&Pause" 204 | 205 | #: kwidgetjobtracker.cpp:514 206 | msgctxt "KWidgetJobTracker|The source url of a job" 207 | msgid "Source:" 208 | msgstr "Kilde:" 209 | 210 | #: kwidgetjobtracker.cpp:522 211 | msgctxt "KWidgetJobTracker|The destination url of a job" 212 | msgid "Destination:" 213 | msgstr "Mål:" 214 | 215 | #: kwidgetjobtracker.cpp:534 216 | #, fuzzy 217 | msgctxt "" 218 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 219 | "percent sign. Make sure to include %p in your translation." 220 | msgid "%p%" 221 | msgstr "%1%" 222 | 223 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 224 | msgctxt "KWidgetJobTracker|" 225 | msgid "Click this to expand the dialog, to show details" 226 | msgstr "Trykk her for å utvide dialogen slik at detaljer blir vist" 227 | 228 | #: kwidgetjobtracker.cpp:583 229 | msgctxt "KWidgetJobTracker|" 230 | msgid "&Keep this window open after transfer is complete" 231 | msgstr "&Hold dette vinduet åpent etter nedlasting" 232 | 233 | #: kwidgetjobtracker.cpp:591 234 | msgctxt "KWidgetJobTracker|" 235 | msgid "Open &File" 236 | msgstr "Åpne &fil" 237 | 238 | #: kwidgetjobtracker.cpp:597 239 | msgctxt "KWidgetJobTracker|" 240 | msgid "Open &Destination" 241 | msgstr "Åpne &mål" 242 | 243 | #: kwidgetjobtracker.cpp:605 244 | msgctxt "KWidgetJobTracker|" 245 | msgid "&Cancel" 246 | msgstr "&Avbryt" 247 | 248 | #: kwidgetjobtracker.cpp:613 249 | msgctxt "KWidgetJobTracker|" 250 | msgid "Progress Dialog" 251 | msgstr "Framdriftsdialog" 252 | 253 | #: kwidgetjobtracker.cpp:626 254 | #, qt-format 255 | msgctxt "KWidgetJobTracker|" 256 | msgid "%n item(s)" 257 | msgid_plural "%n item(s)" 258 | msgstr[0] "" 259 | msgstr[1] "" 260 | 261 | #: kwidgetjobtracker.cpp:632 262 | #, qt-format 263 | msgctxt "KWidgetJobTracker|" 264 | msgid "%n folder(s)" 265 | msgid_plural "%n folder(s)" 266 | msgstr[0] "%n mappe(r)" 267 | msgstr[1] "%n mappe(r)" 268 | 269 | #: kwidgetjobtracker.cpp:636 270 | #, qt-format 271 | msgctxt "KWidgetJobTracker|" 272 | msgid "%n file(s)" 273 | msgid_plural "%n file(s)" 274 | msgstr[0] "%n fil(er)" 275 | msgstr[1] "%n fil(er)" 276 | 277 | #: kwidgetjobtracker.cpp:739 278 | msgctxt "KWidgetJobTracker|" 279 | msgid "Click this to collapse the dialog, to hide details" 280 | msgstr "Trykk her for å folde sammen dialogen og skjule detaljer" 281 | -------------------------------------------------------------------------------- /poqm/nn/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Translation of kjobwidgets6_qt to Norwegian Nynorsk 2 | # 3 | # Gaute Hvoslef Kvalnes , 2003, 2004, 2005, 2006. 4 | # Håvard Korsvoll , 2003, 2005. 5 | # Eirik U. Birkeland , 2008, 2009, 2010. 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: kdelibs4\n" 9 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 10 | "POT-Creation-Date: 2014-02-28 03:44+0000\n" 11 | "PO-Revision-Date: 2024-04-12 16:48+0200\n" 12 | "Last-Translator: Karl Ove Hufthammer \n" 13 | "Language-Team: Norwegian Nynorsk \n" 14 | "Language: nn\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Generator: Lokalize 24.02.1\n" 19 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 20 | "X-Environment: kde\n" 21 | "X-Accelerator-Marker: &\n" 22 | "X-Text-Markup: qtrich\n" 23 | "X-Qt-Contexts: true\n" 24 | 25 | #: kjobtrackerformatters.cpp:27 26 | #, qt-format 27 | msgctxt "KJobTrackerFormatters|@item:intext" 28 | msgid "%n day(s)" 29 | msgid_plural "%n day(s)" 30 | msgstr[0] "%n dag" 31 | msgstr[1] "%n dagar" 32 | 33 | #: kjobtrackerformatters.cpp:34 34 | #, qt-format 35 | msgctxt "KJobTrackerFormatters|@item:intext" 36 | msgid "%n hour(s)" 37 | msgid_plural "%n hour(s)" 38 | msgstr[0] "%n time" 39 | msgstr[1] "%n timar" 40 | 41 | #: kjobtrackerformatters.cpp:41 42 | #, qt-format 43 | msgctxt "KJobTrackerFormatters|@item:intext" 44 | msgid "%n minute(s)" 45 | msgid_plural "%n minute(s)" 46 | msgstr[0] "%n minutt" 47 | msgstr[1] "%n minutt" 48 | 49 | #: kjobtrackerformatters.cpp:48 50 | #, qt-format 51 | msgctxt "KJobTrackerFormatters|@item:intext" 52 | msgid "%n second(s)" 53 | msgid_plural "%n second(s)" 54 | msgstr[0] "%n sekund" 55 | msgstr[1] "%n sekund" 56 | 57 | #: kjobtrackerformatters.cpp:69 58 | #, qt-format 59 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 60 | msgid "%1 and %2" 61 | msgstr "%1 og %2" 62 | 63 | #: kjobtrackerformatters.cpp:73 64 | #, qt-format 65 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 66 | msgid "%1 and %2" 67 | msgstr "%1 og %2" 68 | 69 | #: kjobtrackerformatters.cpp:78 70 | #, qt-format 71 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 72 | msgid "%1 and %2" 73 | msgstr "%1 og %2" 74 | 75 | #. Job name, e.g. Copying has failed 76 | #: knotificationjobuidelegate.cpp:28 77 | #, qt-format 78 | msgctxt "KNotificationJobUiDelegate|" 79 | msgid "%1 (Failed)" 80 | msgstr "%1 (mislukka)" 81 | 82 | #: kstatusbarjobtracker.cpp:161 83 | msgctxt "KStatusBarJobTracker|" 84 | msgid "Stop" 85 | msgstr "Stopp" 86 | 87 | #: kstatusbarjobtracker.cpp:240 88 | msgctxt "KStatusBarJobTracker|" 89 | msgid " Stalled " 90 | msgstr " Stoppa " 91 | 92 | #: kstatusbarjobtracker.cpp:242 93 | #, qt-format 94 | msgctxt "KStatusBarJobTracker|" 95 | msgid " %1/s " 96 | msgstr " %1/s " 97 | 98 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 99 | #, qt-format 100 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 101 | msgid "%1:" 102 | msgstr "%1:" 103 | 104 | #: kwidgetjobtracker.cpp:354 105 | #, qt-format 106 | msgctxt "KWidgetJobTracker|" 107 | msgid "%1 of %2 complete" 108 | msgid_plural "%1 of %2 complete" 109 | msgstr[0] "%1 av %2 fullført" 110 | msgstr[1] "%1 av %2 fullført" 111 | 112 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 113 | #, qt-format 114 | msgctxt "KWidgetJobTracker|" 115 | msgid "%1 / %n folder(s)" 116 | msgid_plural "%1 / %n folder(s)" 117 | msgstr[0] "%1 / %n mappe" 118 | msgstr[1] "%1 / %n mapper" 119 | 120 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 121 | #, qt-format 122 | msgctxt "KWidgetJobTracker|" 123 | msgid "%1 / %n file(s)" 124 | msgid_plural "%1 / %n file(s)" 125 | msgstr[0] "%1 / %n fil" 126 | msgstr[1] "%1 / %n filer" 127 | 128 | #: kwidgetjobtracker.cpp:408 129 | #, qt-format 130 | msgctxt "KWidgetJobTracker|" 131 | msgid "%1 / %n item(s)" 132 | msgid_plural "%1 / %n item(s)" 133 | msgstr[0] "%1 / %n element" 134 | msgstr[1] "%1 / %n element" 135 | 136 | #: kwidgetjobtracker.cpp:424 137 | #, qt-format 138 | msgctxt "KWidgetJobTracker|" 139 | msgid "%1% of %2" 140 | msgstr "%1 % av %2" 141 | 142 | #: kwidgetjobtracker.cpp:428 143 | #, qt-format 144 | msgctxt "KWidgetJobTracker|" 145 | msgid "%1% of %n file(s)" 146 | msgid_plural "%1% of %n file(s)" 147 | msgstr[0] "%1 % av %n fil" 148 | msgstr[1] "%1 % av %n filer" 149 | 150 | #: kwidgetjobtracker.cpp:430 151 | #, qt-format 152 | msgctxt "KWidgetJobTracker|" 153 | msgid "%1%" 154 | msgstr "%1 %" 155 | 156 | #: kwidgetjobtracker.cpp:444 157 | msgctxt "KWidgetJobTracker|" 158 | msgid "Stalled" 159 | msgstr "Stoppa" 160 | 161 | #: kwidgetjobtracker.cpp:451 162 | #, qt-format 163 | msgctxt "KWidgetJobTracker|" 164 | msgid "%1/s (%2 remaining)" 165 | msgid_plural "%1/s (%2 remaining)" 166 | msgstr[0] "%1/s (%2 att)" 167 | msgstr[1] "%1/s (%2 att)" 168 | 169 | #: kwidgetjobtracker.cpp:454 170 | #, qt-format 171 | msgctxt "KWidgetJobTracker|speed in bytes per second" 172 | msgid "%1/s" 173 | msgstr "%1/s" 174 | 175 | #: kwidgetjobtracker.cpp:462 176 | msgctxt "KWidgetJobTracker|" 177 | msgid "&Close" 178 | msgstr "&Lukk" 179 | 180 | #: kwidgetjobtracker.cpp:464 181 | msgctxt "KWidgetJobTracker|" 182 | msgid "Close the current window or document" 183 | msgstr "Lukk vindauget eller dokumentet" 184 | 185 | #: kwidgetjobtracker.cpp:478 186 | #, qt-format 187 | msgctxt "KWidgetJobTracker|" 188 | msgid "%1/s (done)" 189 | msgstr "%1/s (fullført)" 190 | 191 | #: kwidgetjobtracker.cpp:484 192 | msgctxt "KWidgetJobTracker|" 193 | msgid "&Resume" 194 | msgstr "&Hald fram" 195 | 196 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 197 | msgctxt "KWidgetJobTracker|" 198 | msgid "&Pause" 199 | msgstr "&Pause" 200 | 201 | #: kwidgetjobtracker.cpp:514 202 | msgctxt "KWidgetJobTracker|The source url of a job" 203 | msgid "Source:" 204 | msgstr "Kjelde:" 205 | 206 | #: kwidgetjobtracker.cpp:522 207 | msgctxt "KWidgetJobTracker|The destination url of a job" 208 | msgid "Destination:" 209 | msgstr "Mål:" 210 | 211 | #: kwidgetjobtracker.cpp:534 212 | msgctxt "" 213 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 214 | "percent sign. Make sure to include %p in your translation." 215 | msgid "%p%" 216 | msgstr "%p %" 217 | 218 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 219 | msgctxt "KWidgetJobTracker|" 220 | msgid "Click this to expand the dialog, to show details" 221 | msgstr "Trykk for å utvida dette vindauget til å visa fleire detaljar" 222 | 223 | #: kwidgetjobtracker.cpp:583 224 | msgctxt "KWidgetJobTracker|" 225 | msgid "&Keep this window open after transfer is complete" 226 | msgstr "&Hald dette vindauget ope etter overføringa" 227 | 228 | #: kwidgetjobtracker.cpp:591 229 | msgctxt "KWidgetJobTracker|" 230 | msgid "Open &File" 231 | msgstr "Opna &fil" 232 | 233 | #: kwidgetjobtracker.cpp:597 234 | msgctxt "KWidgetJobTracker|" 235 | msgid "Open &Destination" 236 | msgstr "Opna &mål" 237 | 238 | #: kwidgetjobtracker.cpp:605 239 | msgctxt "KWidgetJobTracker|" 240 | msgid "&Cancel" 241 | msgstr "&Avbryt" 242 | 243 | #: kwidgetjobtracker.cpp:613 244 | msgctxt "KWidgetJobTracker|" 245 | msgid "Progress Dialog" 246 | msgstr "Framgangsvindauge" 247 | 248 | #: kwidgetjobtracker.cpp:626 249 | #, qt-format 250 | msgctxt "KWidgetJobTracker|" 251 | msgid "%n item(s)" 252 | msgid_plural "%n item(s)" 253 | msgstr[0] "%n element" 254 | msgstr[1] "%n element" 255 | 256 | #: kwidgetjobtracker.cpp:632 257 | #, qt-format 258 | msgctxt "KWidgetJobTracker|" 259 | msgid "%n folder(s)" 260 | msgid_plural "%n folder(s)" 261 | msgstr[0] "%n mappe" 262 | msgstr[1] "%n mapper" 263 | 264 | #: kwidgetjobtracker.cpp:636 265 | #, qt-format 266 | msgctxt "KWidgetJobTracker|" 267 | msgid "%n file(s)" 268 | msgid_plural "%n file(s)" 269 | msgstr[0] "%n fil" 270 | msgstr[1] "%n filer" 271 | 272 | #: kwidgetjobtracker.cpp:739 273 | msgctxt "KWidgetJobTracker|" 274 | msgid "Click this to collapse the dialog, to hide details" 275 | msgstr "Trykk for å falda saman vindauget og gøyma detaljane" 276 | -------------------------------------------------------------------------------- /poqm/sa/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 kali 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-12-20 22:10+0530\n" 6 | "Last-Translator: kali \n" 7 | "Language-Team: Sanskrit \n" 8 | "Language: sa\n" 9 | "MIME-Version: 1.0\n" 10 | "Content-Type: text/plain; charset=UTF-8\n" 11 | "Content-Transfer-Encoding: 8bit\n" 12 | "X-Qt-Contexts: true\n" 13 | "Plural-Forms: nplurals=2; plural=(n>1);\n" 14 | "X-Generator: Lokalize 24.08.2\n" 15 | 16 | #: kjobtrackerformatters.cpp:27 17 | #, qt-format 18 | msgctxt "KJobTrackerFormatters|@item:intext" 19 | msgid "%n day(s)" 20 | msgid_plural "%n day(s)" 21 | msgstr[0] "%n दिवस(s) ." 22 | msgstr[1] "%n दिवस(s) ." 23 | 24 | #: kjobtrackerformatters.cpp:34 25 | #, qt-format 26 | msgctxt "KJobTrackerFormatters|@item:intext" 27 | msgid "%n hour(s)" 28 | msgid_plural "%n hour(s)" 29 | msgstr[0] "%n घण्टा(s) ." 30 | msgstr[1] "%n घण्टा(s) ." 31 | 32 | #: kjobtrackerformatters.cpp:41 33 | #, qt-format 34 | msgctxt "KJobTrackerFormatters|@item:intext" 35 | msgid "%n minute(s)" 36 | msgid_plural "%n minute(s)" 37 | msgstr[0] "%n निमेष(s) ." 38 | msgstr[1] "%n निमेष(s) ." 39 | 40 | #: kjobtrackerformatters.cpp:48 41 | #, qt-format 42 | msgctxt "KJobTrackerFormatters|@item:intext" 43 | msgid "%n second(s)" 44 | msgid_plural "%n second(s)" 45 | msgstr[0] "%n द्वितीय(s) ." 46 | msgstr[1] "%n द्वितीय(s) ." 47 | 48 | #: kjobtrackerformatters.cpp:69 49 | #, qt-format 50 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 51 | msgid "%1 and %2" 52 | msgstr "%1 तथा %2" 53 | 54 | #: kjobtrackerformatters.cpp:73 55 | #, qt-format 56 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 57 | msgid "%1 and %2" 58 | msgstr "%1 तथा %2" 59 | 60 | #: kjobtrackerformatters.cpp:78 61 | #, qt-format 62 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 63 | msgid "%1 and %2" 64 | msgstr "%1 तथा %2" 65 | 66 | #. Job name, e.g. Copying has failed 67 | #: knotificationjobuidelegate.cpp:28 68 | #, qt-format 69 | msgctxt "KNotificationJobUiDelegate|" 70 | msgid "%1 (Failed)" 71 | msgstr "%1 (विफलम्)" 72 | 73 | #: kstatusbarjobtracker.cpp:161 74 | msgctxt "KStatusBarJobTracker|" 75 | msgid "Stop" 76 | msgstr "विरमतु" 77 | 78 | #: kstatusbarjobtracker.cpp:240 79 | msgctxt "KStatusBarJobTracker|" 80 | msgid " Stalled " 81 | msgstr " स्थगितम् " 82 | 83 | #: kstatusbarjobtracker.cpp:242 84 | #, qt-format 85 | msgctxt "KStatusBarJobTracker|" 86 | msgid " %1/s " 87 | msgstr " %1/s " 88 | 89 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 90 | #, qt-format 91 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 92 | msgid "%1:" 93 | msgstr "%1:" 94 | 95 | #: kwidgetjobtracker.cpp:354 96 | #, qt-format 97 | msgctxt "KWidgetJobTracker|" 98 | msgid "%1 of %2 complete" 99 | msgid_plural "%1 of %2 complete" 100 | msgstr[0] "%2 इत्यस्य %1 पूर्णम्" 101 | msgstr[1] "%2 इत्यस्य %1 पूर्णम्" 102 | 103 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 104 | #, qt-format 105 | msgctxt "KWidgetJobTracker|" 106 | msgid "%1 / %n folder(s)" 107 | msgid_plural "%1 / %n folder(s)" 108 | msgstr[0] "%1 / %n पुट(s) ." 109 | msgstr[1] "%1 / %n पुट(s) ." 110 | 111 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 112 | #, qt-format 113 | msgctxt "KWidgetJobTracker|" 114 | msgid "%1 / %n file(s)" 115 | msgid_plural "%1 / %n file(s)" 116 | msgstr[0] "%1 / %n सञ्चिका(s) ." 117 | msgstr[1] "%1 / %n सञ्चिका(s) ." 118 | 119 | #: kwidgetjobtracker.cpp:408 120 | #, qt-format 121 | msgctxt "KWidgetJobTracker|" 122 | msgid "%1 / %n item(s)" 123 | msgid_plural "%1 / %n item(s)" 124 | msgstr[0] "%1 / %n मद(s) ." 125 | msgstr[1] "%1 / %n मद(s) ." 126 | 127 | #: kwidgetjobtracker.cpp:424 128 | #, qt-format 129 | msgctxt "KWidgetJobTracker|" 130 | msgid "%1% of %2" 131 | msgstr "%2 इत्यस्य %1%" 132 | 133 | #: kwidgetjobtracker.cpp:428 134 | #, qt-format 135 | msgctxt "KWidgetJobTracker|" 136 | msgid "%1% of %n file(s)" 137 | msgid_plural "%1% of %n file(s)" 138 | msgstr[0] "%n सञ्चिका(s) इत्यस्य %1%" 139 | msgstr[1] "%n सञ्चिका(s) इत्यस्य %1%" 140 | 141 | #: kwidgetjobtracker.cpp:430 142 | #, qt-format 143 | msgctxt "KWidgetJobTracker|" 144 | msgid "%1%" 145 | msgstr "%1%" 146 | 147 | #: kwidgetjobtracker.cpp:444 148 | msgctxt "KWidgetJobTracker|" 149 | msgid "Stalled" 150 | msgstr "स्थगितम्" 151 | 152 | #: kwidgetjobtracker.cpp:451 153 | #, qt-format 154 | msgctxt "KWidgetJobTracker|" 155 | msgid "%1/s (%2 remaining)" 156 | msgid_plural "%1/s (%2 remaining)" 157 | msgstr[0] "%1/s (%2 अवशिष्टम्)" 158 | msgstr[1] "%1/s (%2 अवशिष्टम्)" 159 | 160 | #: kwidgetjobtracker.cpp:454 161 | #, qt-format 162 | msgctxt "KWidgetJobTracker|speed in bytes per second" 163 | msgid "%1/s" 164 | msgstr "%1/s" 165 | 166 | #: kwidgetjobtracker.cpp:462 167 | msgctxt "KWidgetJobTracker|" 168 | msgid "&Close" 169 | msgstr "&पिधानं करोतु" 170 | 171 | #: kwidgetjobtracker.cpp:464 172 | msgctxt "KWidgetJobTracker|" 173 | msgid "Close the current window or document" 174 | msgstr "वर्तमानविण्डो अथवा दस्तावेजं पिधायताम्" 175 | 176 | #: kwidgetjobtracker.cpp:478 177 | #, qt-format 178 | msgctxt "KWidgetJobTracker|" 179 | msgid "%1/s (done)" 180 | msgstr "%1/s (कृतम्)" 181 | 182 | #: kwidgetjobtracker.cpp:484 183 | msgctxt "KWidgetJobTracker|" 184 | msgid "&Resume" 185 | msgstr "&पुनर्प्रारम्भय" 186 | 187 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 188 | msgctxt "KWidgetJobTracker|" 189 | msgid "&Pause" 190 | msgstr "&विराम" 191 | 192 | #: kwidgetjobtracker.cpp:514 193 | msgctxt "KWidgetJobTracker|The source url of a job" 194 | msgid "Source:" 195 | msgstr "स्रोतः:" 196 | 197 | #: kwidgetjobtracker.cpp:522 198 | msgctxt "KWidgetJobTracker|The destination url of a job" 199 | msgid "Destination:" 200 | msgstr "गन्तव्य:" 201 | 202 | #: kwidgetjobtracker.cpp:534 203 | msgctxt "" 204 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 205 | "percent sign. Make sure to include %p in your translation." 206 | msgid "%p%" 207 | msgstr "%p%" 208 | 209 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 210 | msgctxt "KWidgetJobTracker|" 211 | msgid "Click this to expand the dialog, to show details" 212 | msgstr "संवादं विस्तारयितुं, विवरणं दर्शयितुं, एतत् नुदन्तु" 213 | 214 | #: kwidgetjobtracker.cpp:583 215 | msgctxt "KWidgetJobTracker|" 216 | msgid "&Keep this window open after transfer is complete" 217 | msgstr "&स्थानांतरणं सम्पन्नं जातं ततः परं एतत् विण्डो उद्घाटितं स्थापयन्तु" 218 | 219 | #: kwidgetjobtracker.cpp:591 220 | msgctxt "KWidgetJobTracker|" 221 | msgid "Open &File" 222 | msgstr "&File उद्घाटयन्तु" 223 | 224 | #: kwidgetjobtracker.cpp:597 225 | msgctxt "KWidgetJobTracker|" 226 | msgid "Open &Destination" 227 | msgstr "Open &Destination इति" 228 | 229 | #: kwidgetjobtracker.cpp:605 230 | msgctxt "KWidgetJobTracker|" 231 | msgid "&Cancel" 232 | msgstr "&निरसयतु" 233 | 234 | #: kwidgetjobtracker.cpp:613 235 | msgctxt "KWidgetJobTracker|" 236 | msgid "Progress Dialog" 237 | msgstr "प्रगति संवाद" 238 | 239 | #: kwidgetjobtracker.cpp:626 240 | #, qt-format 241 | msgctxt "KWidgetJobTracker|" 242 | msgid "%n item(s)" 243 | msgid_plural "%n item(s)" 244 | msgstr[0] "%n मद(s) ." 245 | msgstr[1] "%n मद(s) ." 246 | 247 | #: kwidgetjobtracker.cpp:632 248 | #, qt-format 249 | msgctxt "KWidgetJobTracker|" 250 | msgid "%n folder(s)" 251 | msgid_plural "%n folder(s)" 252 | msgstr[0] "%n पुट(s) ." 253 | msgstr[1] "%n पुट(s) ." 254 | 255 | #: kwidgetjobtracker.cpp:636 256 | #, qt-format 257 | msgctxt "KWidgetJobTracker|" 258 | msgid "%n file(s)" 259 | msgid_plural "%n file(s)" 260 | msgstr[0] "%n सञ्चिका(s) ." 261 | msgstr[1] "%n सञ्चिका(s) ." 262 | 263 | #: kwidgetjobtracker.cpp:739 264 | msgctxt "KWidgetJobTracker|" 265 | msgid "Click this to collapse the dialog, to hide details" 266 | msgstr "संवादं संकुचितं कर्तुं, विवरणं गोपयितुं एतत् नुदन्तु" 267 | -------------------------------------------------------------------------------- /poqm/se/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Translation of kjobwidgets6_qt to Northern Sami 2 | # 3 | # Børre Gaup , 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012. 4 | msgid "" 5 | msgstr "" 6 | "Project-Id-Version: kdelibs4\n" 7 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 8 | "POT-Creation-Date: 2014-02-28 03:44+0000\n" 9 | "PO-Revision-Date: 2012-05-30 23:19+0200\n" 10 | "Last-Translator: Børre Gaup \n" 11 | "Language-Team: Northern Sami \n" 12 | "Language: se\n" 13 | "MIME-Version: 1.0\n" 14 | "Content-Type: text/plain; charset=UTF-8\n" 15 | "Content-Transfer-Encoding: 8bit\n" 16 | "X-Generator: Lokalize 1.4\n" 17 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 18 | "X-Environment: kde\n" 19 | "X-Accelerator-Marker: &\n" 20 | "X-Text-Markup: qtrich\n" 21 | "X-Qt-Contexts: true\n" 22 | 23 | #: kjobtrackerformatters.cpp:27 24 | #, fuzzy, qt-format 25 | msgctxt "KJobTrackerFormatters|@item:intext" 26 | msgid "%n day(s)" 27 | msgid_plural "%n day(s)" 28 | msgstr[0] "%1 beaivvi" 29 | msgstr[1] "%1 beaivvi" 30 | 31 | #: kjobtrackerformatters.cpp:34 32 | #, fuzzy, qt-format 33 | msgctxt "KJobTrackerFormatters|@item:intext" 34 | msgid "%n hour(s)" 35 | msgid_plural "%n hour(s)" 36 | msgstr[0] "%1 diimmu" 37 | msgstr[1] "%1 diimmu" 38 | 39 | #: kjobtrackerformatters.cpp:41 40 | #, fuzzy, qt-format 41 | msgctxt "KJobTrackerFormatters|@item:intext" 42 | msgid "%n minute(s)" 43 | msgid_plural "%n minute(s)" 44 | msgstr[0] "%1 minuhta" 45 | msgstr[1] "%1 minuhta" 46 | 47 | #: kjobtrackerformatters.cpp:48 48 | #, fuzzy, qt-format 49 | msgctxt "KJobTrackerFormatters|@item:intext" 50 | msgid "%n second(s)" 51 | msgid_plural "%n second(s)" 52 | msgstr[0] "%1 sekundda" 53 | msgstr[1] "%1 sekundda" 54 | 55 | #: kjobtrackerformatters.cpp:69 56 | #, fuzzy, qt-format 57 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 58 | msgid "%1 and %2" 59 | msgstr "%1 ja %2" 60 | 61 | #: kjobtrackerformatters.cpp:73 62 | #, fuzzy, qt-format 63 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 64 | msgid "%1 and %2" 65 | msgstr "%1 ja %2" 66 | 67 | #: kjobtrackerformatters.cpp:78 68 | #, fuzzy, qt-format 69 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 70 | msgid "%1 and %2" 71 | msgstr "%1 ja %2" 72 | 73 | #. Job name, e.g. Copying has failed 74 | #: knotificationjobuidelegate.cpp:28 75 | #, qt-format 76 | msgctxt "KNotificationJobUiDelegate|" 77 | msgid "%1 (Failed)" 78 | msgstr "" 79 | 80 | #: kstatusbarjobtracker.cpp:161 81 | #, fuzzy 82 | msgctxt "KStatusBarJobTracker|" 83 | msgid "Stop" 84 | msgstr "Bisset" 85 | 86 | #: kstatusbarjobtracker.cpp:240 87 | #, fuzzy 88 | msgctxt "KStatusBarJobTracker|" 89 | msgid " Stalled " 90 | msgstr " Bisánan" 91 | 92 | #: kstatusbarjobtracker.cpp:242 93 | #, fuzzy, qt-format 94 | msgctxt "KStatusBarJobTracker|" 95 | msgid " %1/s " 96 | msgstr " %1/s " 97 | 98 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 99 | #, fuzzy, qt-format 100 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 101 | msgid "%1:" 102 | msgstr "%1:" 103 | 104 | #: kwidgetjobtracker.cpp:354 105 | #, fuzzy, qt-format 106 | msgctxt "KWidgetJobTracker|" 107 | msgid "%1 of %2 complete" 108 | msgid_plural "%1 of %2 complete" 109 | msgstr[0] "%2 %3:s geargan" 110 | msgstr[1] "%2 %3:s geargan" 111 | 112 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 113 | #, fuzzy, qt-format 114 | msgctxt "KWidgetJobTracker|" 115 | msgid "%1 / %n folder(s)" 116 | msgid_plural "%1 / %n folder(s)" 117 | msgstr[0] "%2 / %1 máhppa" 118 | msgstr[1] "%2 / %1 máhpa" 119 | 120 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 121 | #, fuzzy, qt-format 122 | msgctxt "KWidgetJobTracker|" 123 | msgid "%1 / %n file(s)" 124 | msgid_plural "%1 / %n file(s)" 125 | msgstr[0] "%2 / %1 fiila" 126 | msgstr[1] "%2 / %1 fiilla" 127 | 128 | #: kwidgetjobtracker.cpp:408 129 | #, qt-format 130 | msgctxt "KWidgetJobTracker|" 131 | msgid "%1 / %n item(s)" 132 | msgid_plural "%1 / %n item(s)" 133 | msgstr[0] "" 134 | msgstr[1] "" 135 | 136 | #: kwidgetjobtracker.cpp:424 137 | #, fuzzy, qt-format 138 | msgctxt "KWidgetJobTracker|" 139 | msgid "%1% of %2" 140 | msgstr "%1 % %2:s " 141 | 142 | #: kwidgetjobtracker.cpp:428 143 | #, fuzzy, qt-format 144 | msgctxt "KWidgetJobTracker|" 145 | msgid "%1% of %n file(s)" 146 | msgid_plural "%1% of %n file(s)" 147 | msgstr[0] "%2% 1 fiillas" 148 | msgstr[1] "%2% %1 fiillas" 149 | 150 | #: kwidgetjobtracker.cpp:430 151 | #, fuzzy, qt-format 152 | msgctxt "KWidgetJobTracker|" 153 | msgid "%1%" 154 | msgstr "%1" 155 | 156 | #: kwidgetjobtracker.cpp:444 157 | #, fuzzy 158 | msgctxt "KWidgetJobTracker|" 159 | msgid "Stalled" 160 | msgstr "Bisánan" 161 | 162 | #: kwidgetjobtracker.cpp:451 163 | #, fuzzy, qt-format 164 | msgctxt "KWidgetJobTracker|" 165 | msgid "%1/s (%2 remaining)" 166 | msgid_plural "%1/s (%2 remaining)" 167 | msgstr[0] "%2/s ( %3 ovdalgo geargá)" 168 | msgstr[1] "%2/s ( %3 ovdalgo geargá)" 169 | 170 | #: kwidgetjobtracker.cpp:454 171 | #, fuzzy, qt-format 172 | msgctxt "KWidgetJobTracker|speed in bytes per second" 173 | msgid "%1/s" 174 | msgstr "%1/s" 175 | 176 | #: kwidgetjobtracker.cpp:462 177 | #, fuzzy 178 | msgctxt "KWidgetJobTracker|" 179 | msgid "&Close" 180 | msgstr "&Gidde" 181 | 182 | #: kwidgetjobtracker.cpp:464 183 | #, fuzzy 184 | msgctxt "KWidgetJobTracker|" 185 | msgid "Close the current window or document" 186 | msgstr "Gidde dálá láse dahje dokumeantta" 187 | 188 | #: kwidgetjobtracker.cpp:478 189 | #, fuzzy, qt-format 190 | msgctxt "KWidgetJobTracker|" 191 | msgid "%1/s (done)" 192 | msgstr "%1/s (geargan)" 193 | 194 | #: kwidgetjobtracker.cpp:484 195 | #, fuzzy 196 | msgctxt "KWidgetJobTracker|" 197 | msgid "&Resume" 198 | msgstr "&Joatkke" 199 | 200 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 201 | #, fuzzy 202 | msgctxt "KWidgetJobTracker|" 203 | msgid "&Pause" 204 | msgstr "&Botke" 205 | 206 | # unreviewed-context 207 | #: kwidgetjobtracker.cpp:514 208 | #, fuzzy 209 | msgctxt "KWidgetJobTracker|The source url of a job" 210 | msgid "Source:" 211 | msgstr "Gáldu:" 212 | 213 | # unreviewed-context 214 | #: kwidgetjobtracker.cpp:522 215 | #, fuzzy 216 | msgctxt "KWidgetJobTracker|The destination url of a job" 217 | msgid "Destination:" 218 | msgstr "Ulbmil:" 219 | 220 | #: kwidgetjobtracker.cpp:534 221 | #, fuzzy 222 | msgctxt "" 223 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 224 | "percent sign. Make sure to include %p in your translation." 225 | msgid "%p%" 226 | msgstr "%1" 227 | 228 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 229 | #, fuzzy 230 | msgctxt "KWidgetJobTracker|" 231 | msgid "Click this to expand the dialog, to show details" 232 | msgstr "Coahkkal dán vai oaidnit eanet bienaid" 233 | 234 | #: kwidgetjobtracker.cpp:583 235 | #, fuzzy 236 | msgctxt "KWidgetJobTracker|" 237 | msgid "&Keep this window open after transfer is complete" 238 | msgstr "&Doalat dán láse rabas maŋŋá viežžama" 239 | 240 | #: kwidgetjobtracker.cpp:591 241 | #, fuzzy 242 | msgctxt "KWidgetJobTracker|" 243 | msgid "Open &File" 244 | msgstr "Raba &fiilla" 245 | 246 | #: kwidgetjobtracker.cpp:597 247 | #, fuzzy 248 | msgctxt "KWidgetJobTracker|" 249 | msgid "Open &Destination" 250 | msgstr "Raba &ulbmila" 251 | 252 | #: kwidgetjobtracker.cpp:605 253 | #, fuzzy 254 | msgctxt "KWidgetJobTracker|" 255 | msgid "&Cancel" 256 | msgstr "G&askkalduhtte" 257 | 258 | #: kwidgetjobtracker.cpp:613 259 | #, fuzzy 260 | msgctxt "KWidgetJobTracker|" 261 | msgid "Progress Dialog" 262 | msgstr "Ovdánanláseš" 263 | 264 | #: kwidgetjobtracker.cpp:626 265 | #, qt-format 266 | msgctxt "KWidgetJobTracker|" 267 | msgid "%n item(s)" 268 | msgid_plural "%n item(s)" 269 | msgstr[0] "" 270 | msgstr[1] "" 271 | 272 | #: kwidgetjobtracker.cpp:632 273 | #, fuzzy, qt-format 274 | msgctxt "KWidgetJobTracker|" 275 | msgid "%n folder(s)" 276 | msgid_plural "%n folder(s)" 277 | msgstr[0] "%1 máhppa" 278 | msgstr[1] "%1 máhpa" 279 | 280 | #: kwidgetjobtracker.cpp:636 281 | #, fuzzy, qt-format 282 | msgctxt "KWidgetJobTracker|" 283 | msgid "%n file(s)" 284 | msgid_plural "%n file(s)" 285 | msgstr[0] "%1 fiila" 286 | msgstr[1] "%1 fiilla" 287 | 288 | #: kwidgetjobtracker.cpp:739 289 | #, fuzzy 290 | msgctxt "KWidgetJobTracker|" 291 | msgid "Click this to collapse the dialog, to hide details" 292 | msgstr "Coahkkal dán vai ciehkkádit bienaid" 293 | -------------------------------------------------------------------------------- /poqm/vi/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # Vietnamese translation for kdelibs. 2 | # Copyright © 2007 KDE i18n Project for Vietnamese. 3 | # 4 | # Clytie Siddall , 2006-2007. 5 | # Hoàng Đức Hiếu , 2008, 2011. 6 | # Lê Hoàng Phương , 2011, 2012. 7 | # Phu Hung Nguyen , 2022. 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: kdelibs4\n" 11 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 12 | "POT-Creation-Date: 2014-03-23 01:50+0000\n" 13 | "PO-Revision-Date: 2022-05-16 08:36+0200\n" 14 | "Last-Translator: Phu Hung Nguyen \n" 15 | "Language-Team: Vietnamese \n" 16 | "Language: vi\n" 17 | "MIME-Version: 1.0\n" 18 | "Content-Type: text/plain; charset=UTF-8\n" 19 | "Content-Transfer-Encoding: 8bit\n" 20 | "Plural-Forms: nplurals=1; plural=0;\n" 21 | "X-Generator: Lokalize 21.12.2\n" 22 | "X-Qt-Contexts: true\n" 23 | 24 | #: kjobtrackerformatters.cpp:27 25 | #, qt-format 26 | msgctxt "KJobTrackerFormatters|@item:intext" 27 | msgid "%n day(s)" 28 | msgid_plural "%n day(s)" 29 | msgstr[0] "%n ngày" 30 | 31 | #: kjobtrackerformatters.cpp:34 32 | #, qt-format 33 | msgctxt "KJobTrackerFormatters|@item:intext" 34 | msgid "%n hour(s)" 35 | msgid_plural "%n hour(s)" 36 | msgstr[0] "%n tiếng" 37 | 38 | #: kjobtrackerformatters.cpp:41 39 | #, qt-format 40 | msgctxt "KJobTrackerFormatters|@item:intext" 41 | msgid "%n minute(s)" 42 | msgid_plural "%n minute(s)" 43 | msgstr[0] "%n phút" 44 | 45 | #: kjobtrackerformatters.cpp:48 46 | #, qt-format 47 | msgctxt "KJobTrackerFormatters|@item:intext" 48 | msgid "%n second(s)" 49 | msgid_plural "%n second(s)" 50 | msgstr[0] "%n giây" 51 | 52 | #: kjobtrackerformatters.cpp:69 53 | #, qt-format 54 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 55 | msgid "%1 and %2" 56 | msgstr "%1 %2" 57 | 58 | #: kjobtrackerformatters.cpp:73 59 | #, qt-format 60 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 61 | msgid "%1 and %2" 62 | msgstr "%1 %2" 63 | 64 | #: kjobtrackerformatters.cpp:78 65 | #, qt-format 66 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 67 | msgid "%1 and %2" 68 | msgstr "%1 %2" 69 | 70 | #. Job name, e.g. Copying has failed 71 | #: knotificationjobuidelegate.cpp:28 72 | #, qt-format 73 | msgctxt "KNotificationJobUiDelegate|" 74 | msgid "%1 (Failed)" 75 | msgstr "" 76 | 77 | #: kstatusbarjobtracker.cpp:161 78 | msgctxt "KStatusBarJobTracker|" 79 | msgid "Stop" 80 | msgstr "Dừng" 81 | 82 | #: kstatusbarjobtracker.cpp:240 83 | msgctxt "KStatusBarJobTracker|" 84 | msgid " Stalled " 85 | msgstr " Ngừng " 86 | 87 | #: kstatusbarjobtracker.cpp:242 88 | #, qt-format 89 | msgctxt "KStatusBarJobTracker|" 90 | msgid " %1/s " 91 | msgstr " %1/gy " 92 | 93 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 94 | #, qt-format 95 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 96 | msgid "%1:" 97 | msgstr "%1:" 98 | 99 | #: kwidgetjobtracker.cpp:354 100 | #, qt-format 101 | msgctxt "KWidgetJobTracker|" 102 | msgid "%1 of %2 complete" 103 | msgid_plural "%1 of %2 complete" 104 | msgstr[0] "hoàn thành %1 trong %2" 105 | 106 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 107 | #, qt-format 108 | msgctxt "KWidgetJobTracker|" 109 | msgid "%1 / %n folder(s)" 110 | msgid_plural "%1 / %n folder(s)" 111 | msgstr[0] "%1 / %n thư mục" 112 | 113 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 114 | #, qt-format 115 | msgctxt "KWidgetJobTracker|" 116 | msgid "%1 / %n file(s)" 117 | msgid_plural "%1 / %n file(s)" 118 | msgstr[0] "%1 / %n tệp" 119 | 120 | #: kwidgetjobtracker.cpp:408 121 | #, qt-format 122 | msgctxt "KWidgetJobTracker|" 123 | msgid "%1 / %n item(s)" 124 | msgid_plural "%1 / %n item(s)" 125 | msgstr[0] "%1 / %n mục" 126 | 127 | #: kwidgetjobtracker.cpp:424 128 | #, qt-format 129 | msgctxt "KWidgetJobTracker|" 130 | msgid "%1% of %2" 131 | msgstr "%1% của %2" 132 | 133 | #: kwidgetjobtracker.cpp:428 134 | #, qt-format 135 | msgctxt "KWidgetJobTracker|" 136 | msgid "%1% of %n file(s)" 137 | msgid_plural "%1% of %n file(s)" 138 | msgstr[0] "%1% của %n tệp" 139 | 140 | #: kwidgetjobtracker.cpp:430 141 | #, qt-format 142 | msgctxt "KWidgetJobTracker|" 143 | msgid "%1%" 144 | msgstr "%1%" 145 | 146 | #: kwidgetjobtracker.cpp:444 147 | msgctxt "KWidgetJobTracker|" 148 | msgid "Stalled" 149 | msgstr "Ngừng" 150 | 151 | #: kwidgetjobtracker.cpp:451 152 | #, qt-format 153 | msgctxt "KWidgetJobTracker|" 154 | msgid "%1/s (%2 remaining)" 155 | msgid_plural "%1/s (%2 remaining)" 156 | msgstr[0] "%1/gy (còn %2)" 157 | 158 | #: kwidgetjobtracker.cpp:454 159 | #, qt-format 160 | msgctxt "KWidgetJobTracker|speed in bytes per second" 161 | msgid "%1/s" 162 | msgstr "%1/gy" 163 | 164 | #: kwidgetjobtracker.cpp:462 165 | msgctxt "KWidgetJobTracker|" 166 | msgid "&Close" 167 | msgstr "Đón&g" 168 | 169 | #: kwidgetjobtracker.cpp:464 170 | msgctxt "KWidgetJobTracker|" 171 | msgid "Close the current window or document" 172 | msgstr "Đóng cửa sổ hay tài liệu hiện tại" 173 | 174 | #: kwidgetjobtracker.cpp:478 175 | #, qt-format 176 | msgctxt "KWidgetJobTracker|" 177 | msgid "%1/s (done)" 178 | msgstr "%1/gy (xong)" 179 | 180 | #: kwidgetjobtracker.cpp:484 181 | msgctxt "KWidgetJobTracker|" 182 | msgid "&Resume" 183 | msgstr "&Tiếp tục" 184 | 185 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 186 | msgctxt "KWidgetJobTracker|" 187 | msgid "&Pause" 188 | msgstr "Tạm &dừng" 189 | 190 | #: kwidgetjobtracker.cpp:514 191 | msgctxt "KWidgetJobTracker|The source url of a job" 192 | msgid "Source:" 193 | msgstr "Nguồn:" 194 | 195 | #: kwidgetjobtracker.cpp:522 196 | msgctxt "KWidgetJobTracker|The destination url of a job" 197 | msgid "Destination:" 198 | msgstr "Đích:" 199 | 200 | #: kwidgetjobtracker.cpp:534 201 | #, fuzzy 202 | #| msgctxt "KWidgetJobTracker|" 203 | #| msgid "%1%" 204 | msgctxt "" 205 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 206 | "percent sign. Make sure to include %p in your translation." 207 | msgid "%p%" 208 | msgstr "%1%" 209 | 210 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 211 | msgctxt "KWidgetJobTracker|" 212 | msgid "Click this to expand the dialog, to show details" 213 | msgstr "Bấm vào đây để mở rộng hộp thoại, hiện chi tiết" 214 | 215 | #: kwidgetjobtracker.cpp:583 216 | msgctxt "KWidgetJobTracker|" 217 | msgid "&Keep this window open after transfer is complete" 218 | msgstr "&Giữ cửa sổ này mở sau khi truyền xong" 219 | 220 | #: kwidgetjobtracker.cpp:591 221 | msgctxt "KWidgetJobTracker|" 222 | msgid "Open &File" 223 | msgstr "Mở &tệp" 224 | 225 | #: kwidgetjobtracker.cpp:597 226 | msgctxt "KWidgetJobTracker|" 227 | msgid "Open &Destination" 228 | msgstr "Mở đíc&h" 229 | 230 | #: kwidgetjobtracker.cpp:605 231 | msgctxt "KWidgetJobTracker|" 232 | msgid "&Cancel" 233 | msgstr "H&uỷ" 234 | 235 | #: kwidgetjobtracker.cpp:613 236 | msgctxt "KWidgetJobTracker|" 237 | msgid "Progress Dialog" 238 | msgstr "Hộp thoại tiến độ" 239 | 240 | #: kwidgetjobtracker.cpp:626 241 | #, qt-format 242 | msgctxt "KWidgetJobTracker|" 243 | msgid "%n item(s)" 244 | msgid_plural "%n item(s)" 245 | msgstr[0] "%n mục" 246 | 247 | #: kwidgetjobtracker.cpp:632 248 | #, qt-format 249 | msgctxt "KWidgetJobTracker|" 250 | msgid "%n folder(s)" 251 | msgid_plural "%n folder(s)" 252 | msgstr[0] "%n thư mục" 253 | 254 | #: kwidgetjobtracker.cpp:636 255 | #, qt-format 256 | msgctxt "KWidgetJobTracker|" 257 | msgid "%n file(s)" 258 | msgid_plural "%n file(s)" 259 | msgstr[0] "%n tệp" 260 | 261 | #: kwidgetjobtracker.cpp:739 262 | msgctxt "KWidgetJobTracker|" 263 | msgid "Click this to collapse the dialog, to hide details" 264 | msgstr "Bấm vào đây để thu gọn hộp thoại, ẩn chi tiết" 265 | -------------------------------------------------------------------------------- /poqm/zh_CN/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: kdeorg\n" 4 | "PO-Revision-Date: 2024-04-22 15:58\n" 5 | "Language-Team: Chinese Simplified\n" 6 | "Language: zh_CN\n" 7 | "MIME-Version: 1.0\n" 8 | "Content-Type: text/plain; charset=UTF-8\n" 9 | "Content-Transfer-Encoding: 8bit\n" 10 | "X-Qt-Contexts: true\n" 11 | "Plural-Forms: nplurals=1; plural=0;\n" 12 | "X-Crowdin-Project: kdeorg\n" 13 | "X-Crowdin-Project-ID: 269464\n" 14 | "X-Crowdin-Language: zh-CN\n" 15 | "X-Crowdin-File: /kf6-trunk/messages/kjobwidgets/kjobwidgets6_qt.pot\n" 16 | "X-Crowdin-File-ID: 43405\n" 17 | 18 | #: kjobtrackerformatters.cpp:27 19 | #, qt-format 20 | msgctxt "KJobTrackerFormatters|@item:intext" 21 | msgid "%n day(s)" 22 | msgid_plural "%n day(s)" 23 | msgstr[0] "%n 天" 24 | 25 | #: kjobtrackerformatters.cpp:34 26 | #, qt-format 27 | msgctxt "KJobTrackerFormatters|@item:intext" 28 | msgid "%n hour(s)" 29 | msgid_plural "%n hour(s)" 30 | msgstr[0] "%n 小时" 31 | 32 | #: kjobtrackerformatters.cpp:41 33 | #, qt-format 34 | msgctxt "KJobTrackerFormatters|@item:intext" 35 | msgid "%n minute(s)" 36 | msgid_plural "%n minute(s)" 37 | msgstr[0] "%n 分" 38 | 39 | #: kjobtrackerformatters.cpp:48 40 | #, qt-format 41 | msgctxt "KJobTrackerFormatters|@item:intext" 42 | msgid "%n second(s)" 43 | msgid_plural "%n second(s)" 44 | msgstr[0] "%n 秒" 45 | 46 | #: kjobtrackerformatters.cpp:69 47 | #, qt-format 48 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 49 | msgid "%1 and %2" 50 | msgstr "%1 %2" 51 | 52 | #: kjobtrackerformatters.cpp:73 53 | #, qt-format 54 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 55 | msgid "%1 and %2" 56 | msgstr "%1 %2" 57 | 58 | #: kjobtrackerformatters.cpp:78 59 | #, qt-format 60 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 61 | msgid "%1 and %2" 62 | msgstr "%1 %2" 63 | 64 | #. Job name, e.g. Copying has failed 65 | #: knotificationjobuidelegate.cpp:28 66 | #, qt-format 67 | msgctxt "KNotificationJobUiDelegate|" 68 | msgid "%1 (Failed)" 69 | msgstr "%1 (已失败)" 70 | 71 | #: kstatusbarjobtracker.cpp:161 72 | msgctxt "KStatusBarJobTracker|" 73 | msgid "Stop" 74 | msgstr "停止" 75 | 76 | #: kstatusbarjobtracker.cpp:240 77 | msgctxt "KStatusBarJobTracker|" 78 | msgid " Stalled " 79 | msgstr " 已停滞 " 80 | 81 | #: kstatusbarjobtracker.cpp:242 82 | #, qt-format 83 | msgctxt "KStatusBarJobTracker|" 84 | msgid " %1/s " 85 | msgstr " %1/s " 86 | 87 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 88 | #, qt-format 89 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 90 | msgid "%1:" 91 | msgstr "%1:" 92 | 93 | #: kwidgetjobtracker.cpp:354 94 | #, qt-format 95 | msgctxt "KWidgetJobTracker|" 96 | msgid "%1 of %2 complete" 97 | msgid_plural "%1 of %2 complete" 98 | msgstr[0] "完成了 %2 项中的 %1 项" 99 | 100 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 101 | #, qt-format 102 | msgctxt "KWidgetJobTracker|" 103 | msgid "%1 / %n folder(s)" 104 | msgid_plural "%1 / %n folder(s)" 105 | msgstr[0] "%1 / %n 个文件夹" 106 | 107 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 108 | #, qt-format 109 | msgctxt "KWidgetJobTracker|" 110 | msgid "%1 / %n file(s)" 111 | msgid_plural "%1 / %n file(s)" 112 | msgstr[0] "%1 / %n 个文件" 113 | 114 | #: kwidgetjobtracker.cpp:408 115 | #, qt-format 116 | msgctxt "KWidgetJobTracker|" 117 | msgid "%1 / %n item(s)" 118 | msgid_plural "%1 / %n item(s)" 119 | msgstr[0] "%1 / %n 项" 120 | 121 | #: kwidgetjobtracker.cpp:424 122 | #, qt-format 123 | msgctxt "KWidgetJobTracker|" 124 | msgid "%1% of %2" 125 | msgstr "%1, 共有 %2" 126 | 127 | #: kwidgetjobtracker.cpp:428 128 | #, qt-format 129 | msgctxt "KWidgetJobTracker|" 130 | msgid "%1% of %n file(s)" 131 | msgid_plural "%1% of %n file(s)" 132 | msgstr[0] "%1% 个文件,共 %n 个文件" 133 | 134 | #: kwidgetjobtracker.cpp:430 135 | #, qt-format 136 | msgctxt "KWidgetJobTracker|" 137 | msgid "%1%" 138 | msgstr "%1%" 139 | 140 | #: kwidgetjobtracker.cpp:444 141 | msgctxt "KWidgetJobTracker|" 142 | msgid "Stalled" 143 | msgstr "已停滞" 144 | 145 | #: kwidgetjobtracker.cpp:451 146 | #, qt-format 147 | msgctxt "KWidgetJobTracker|" 148 | msgid "%1/s (%2 remaining)" 149 | msgid_plural "%1/s (%2 remaining)" 150 | msgstr[0] "%1/s (剩余 %2)" 151 | 152 | #: kwidgetjobtracker.cpp:454 153 | #, qt-format 154 | msgctxt "KWidgetJobTracker|speed in bytes per second" 155 | msgid "%1/s" 156 | msgstr "%1/s" 157 | 158 | #: kwidgetjobtracker.cpp:462 159 | msgctxt "KWidgetJobTracker|" 160 | msgid "&Close" 161 | msgstr "关闭(&C)" 162 | 163 | #: kwidgetjobtracker.cpp:464 164 | msgctxt "KWidgetJobTracker|" 165 | msgid "Close the current window or document" 166 | msgstr "关闭当前窗口或文档" 167 | 168 | #: kwidgetjobtracker.cpp:478 169 | #, qt-format 170 | msgctxt "KWidgetJobTracker|" 171 | msgid "%1/s (done)" 172 | msgstr "%1/s (已完成)" 173 | 174 | #: kwidgetjobtracker.cpp:484 175 | msgctxt "KWidgetJobTracker|" 176 | msgid "&Resume" 177 | msgstr "继续(&R)" 178 | 179 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 180 | msgctxt "KWidgetJobTracker|" 181 | msgid "&Pause" 182 | msgstr "暂停(&P)" 183 | 184 | #: kwidgetjobtracker.cpp:514 185 | msgctxt "KWidgetJobTracker|The source url of a job" 186 | msgid "Source:" 187 | msgstr "来源:" 188 | 189 | #: kwidgetjobtracker.cpp:522 190 | msgctxt "KWidgetJobTracker|The destination url of a job" 191 | msgid "Destination:" 192 | msgstr "目标:" 193 | 194 | #: kwidgetjobtracker.cpp:534 195 | msgctxt "" 196 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 197 | "percent sign. Make sure to include %p in your translation." 198 | msgid "%p%" 199 | msgstr "%p%" 200 | 201 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 202 | msgctxt "KWidgetJobTracker|" 203 | msgid "Click this to expand the dialog, to show details" 204 | msgstr "单击此处展开对话框并显示详情" 205 | 206 | #: kwidgetjobtracker.cpp:583 207 | msgctxt "KWidgetJobTracker|" 208 | msgid "&Keep this window open after transfer is complete" 209 | msgstr "保持此窗口打开,直至传送完成(&K)" 210 | 211 | #: kwidgetjobtracker.cpp:591 212 | msgctxt "KWidgetJobTracker|" 213 | msgid "Open &File" 214 | msgstr "打开文件(&O)" 215 | 216 | #: kwidgetjobtracker.cpp:597 217 | msgctxt "KWidgetJobTracker|" 218 | msgid "Open &Destination" 219 | msgstr "打开目标(&D)" 220 | 221 | #: kwidgetjobtracker.cpp:605 222 | msgctxt "KWidgetJobTracker|" 223 | msgid "&Cancel" 224 | msgstr "取消(&C)" 225 | 226 | #: kwidgetjobtracker.cpp:613 227 | msgctxt "KWidgetJobTracker|" 228 | msgid "Progress Dialog" 229 | msgstr "进度框" 230 | 231 | #: kwidgetjobtracker.cpp:626 232 | #, qt-format 233 | msgctxt "KWidgetJobTracker|" 234 | msgid "%n item(s)" 235 | msgid_plural "%n item(s)" 236 | msgstr[0] "%n 项" 237 | 238 | #: kwidgetjobtracker.cpp:632 239 | #, qt-format 240 | msgctxt "KWidgetJobTracker|" 241 | msgid "%n folder(s)" 242 | msgid_plural "%n folder(s)" 243 | msgstr[0] "%n 个文件夹" 244 | 245 | #: kwidgetjobtracker.cpp:636 246 | #, qt-format 247 | msgctxt "KWidgetJobTracker|" 248 | msgid "%n file(s)" 249 | msgid_plural "%n file(s)" 250 | msgstr[0] "%n 个文件" 251 | 252 | #: kwidgetjobtracker.cpp:739 253 | msgctxt "KWidgetJobTracker|" 254 | msgid "Click this to collapse the dialog, to hide details" 255 | msgstr "单击此处折叠对话框并隐藏详情" 256 | -------------------------------------------------------------------------------- /poqm/zh_TW/kjobwidgets6_qt.po: -------------------------------------------------------------------------------- 1 | # translation of kdelibs4.po to Chinese Traditional 2 | # Copyright (C) 2001, 2002, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. 3 | # Eric Cheng , unknown. 4 | # This file referenced zh_CN translations at 2002. 5 | # Chih-Wei Huang , 2001. 6 | # Kenduest Lee , 2001, 2002. 7 | # Jouston Huang (Huang, Jiun-Jeng) , 2002. 8 | # Chia-Lin, Kao , 2004. 9 | # Yuan-Chen Cheng , 2002. 10 | # Goodhorse , 2008. 11 | # Frank Weng (a.k.a. Franklin) , 2006-2009, 2010. 12 | # Franklin Weng , 2010, 2011, 2012. 13 | # Franklin Weng , 2010, 2011, 2012, 2013, 2014. 14 | # Kisaragi Hiu , 2023. 15 | msgid "" 16 | msgstr "" 17 | "Project-Id-Version: kdelibs4\n" 18 | "Report-Msgid-Bugs-To: http://bugs.kde.org\n" 19 | "POT-Creation-Date: 2014-03-23 01:50+0000\n" 20 | "PO-Revision-Date: 2023-12-09 18:53+0900\n" 21 | "Last-Translator: Kisaragi Hiu \n" 22 | "Language-Team: Traditional Chinese \n" 23 | "Language: zh_TW\n" 24 | "MIME-Version: 1.0\n" 25 | "Content-Type: text/plain; charset=UTF-8\n" 26 | "Content-Transfer-Encoding: 8bit\n" 27 | "X-Generator: Lokalize 24.01.80\n" 28 | "Plural-Forms: nplurals=1; plural=0;\n" 29 | "X-Qt-Contexts: true\n" 30 | 31 | #: kjobtrackerformatters.cpp:27 32 | #, qt-format 33 | msgctxt "KJobTrackerFormatters|@item:intext" 34 | msgid "%n day(s)" 35 | msgid_plural "%n day(s)" 36 | msgstr[0] "%n 天" 37 | 38 | #: kjobtrackerformatters.cpp:34 39 | #, qt-format 40 | msgctxt "KJobTrackerFormatters|@item:intext" 41 | msgid "%n hour(s)" 42 | msgid_plural "%n hour(s)" 43 | msgstr[0] "%n 小時" 44 | 45 | #: kjobtrackerformatters.cpp:41 46 | #, qt-format 47 | msgctxt "KJobTrackerFormatters|@item:intext" 48 | msgid "%n minute(s)" 49 | msgid_plural "%n minute(s)" 50 | msgstr[0] "%n 分鐘" 51 | 52 | #: kjobtrackerformatters.cpp:48 53 | #, qt-format 54 | msgctxt "KJobTrackerFormatters|@item:intext" 55 | msgid "%n second(s)" 56 | msgid_plural "%n second(s)" 57 | msgstr[0] "%n 秒" 58 | 59 | #: kjobtrackerformatters.cpp:69 60 | #, qt-format 61 | msgctxt "KJobTrackerFormatters|@item:intext days and hours." 62 | msgid "%1 and %2" 63 | msgstr "%1 又 %2" 64 | 65 | #: kjobtrackerformatters.cpp:73 66 | #, qt-format 67 | msgctxt "KJobTrackerFormatters|@item:intext hours and minutes." 68 | msgid "%1 and %2" 69 | msgstr "%1 又 %2" 70 | 71 | #: kjobtrackerformatters.cpp:78 72 | #, qt-format 73 | msgctxt "KJobTrackerFormatters|@item:intext minutes and seconds." 74 | msgid "%1 and %2" 75 | msgstr "%1 又 %2" 76 | 77 | #. Job name, e.g. Copying has failed 78 | #: knotificationjobuidelegate.cpp:28 79 | #, qt-format 80 | msgctxt "KNotificationJobUiDelegate|" 81 | msgid "%1 (Failed)" 82 | msgstr "%1 (失敗)" 83 | 84 | #: kstatusbarjobtracker.cpp:161 85 | msgctxt "KStatusBarJobTracker|" 86 | msgid "Stop" 87 | msgstr "停止" 88 | 89 | #: kstatusbarjobtracker.cpp:240 90 | msgctxt "KStatusBarJobTracker|" 91 | msgid " Stalled " 92 | msgstr " 已停滯 " 93 | 94 | #: kstatusbarjobtracker.cpp:242 95 | #, qt-format 96 | msgctxt "KStatusBarJobTracker|" 97 | msgid " %1/s " 98 | msgstr " %1/秒 " 99 | 100 | #: kwidgetjobtracker.cpp:282 kwidgetjobtracker.cpp:290 101 | #, qt-format 102 | msgctxt "KWidgetJobTracker|%1 is the label, we add a ':' to it" 103 | msgid "%1:" 104 | msgstr "%1:" 105 | 106 | #: kwidgetjobtracker.cpp:354 107 | #, qt-format 108 | msgctxt "KWidgetJobTracker|" 109 | msgid "%1 of %2 complete" 110 | msgid_plural "%1 of %2 complete" 111 | msgstr[0] "總共 %2 個中的 %1 個完成" 112 | 113 | #: kwidgetjobtracker.cpp:373 kwidgetjobtracker.cpp:391 114 | #, qt-format 115 | msgctxt "KWidgetJobTracker|" 116 | msgid "%1 / %n folder(s)" 117 | msgid_plural "%1 / %n folder(s)" 118 | msgstr[0] "總共 %n 個中的 %1 個資料夾" 119 | 120 | #: kwidgetjobtracker.cpp:377 kwidgetjobtracker.cpp:396 121 | #, qt-format 122 | msgctxt "KWidgetJobTracker|" 123 | msgid "%1 / %n file(s)" 124 | msgid_plural "%1 / %n file(s)" 125 | msgstr[0] "總共 %n 個中的 %1 個檔案" 126 | 127 | #: kwidgetjobtracker.cpp:408 128 | #, qt-format 129 | msgctxt "KWidgetJobTracker|" 130 | msgid "%1 / %n item(s)" 131 | msgid_plural "%1 / %n item(s)" 132 | msgstr[0] "第 %1 個項目,共 %n 個" 133 | 134 | #: kwidgetjobtracker.cpp:424 135 | #, qt-format 136 | msgctxt "KWidgetJobTracker|" 137 | msgid "%1% of %2" 138 | msgstr "%2 的 %1%" 139 | 140 | #: kwidgetjobtracker.cpp:428 141 | #, qt-format 142 | msgctxt "KWidgetJobTracker|" 143 | msgid "%1% of %n file(s)" 144 | msgid_plural "%1% of %n file(s)" 145 | msgstr[0] "%n 個檔案中的 %1%" 146 | 147 | #: kwidgetjobtracker.cpp:430 148 | #, qt-format 149 | msgctxt "KWidgetJobTracker|" 150 | msgid "%1%" 151 | msgstr "%1%" 152 | 153 | #: kwidgetjobtracker.cpp:444 154 | msgctxt "KWidgetJobTracker|" 155 | msgid "Stalled" 156 | msgstr "已停滯" 157 | 158 | #: kwidgetjobtracker.cpp:451 159 | #, qt-format 160 | msgctxt "KWidgetJobTracker|" 161 | msgid "%1/s (%2 remaining)" 162 | msgid_plural "%1/s (%2 remaining)" 163 | msgstr[0] "%1/秒(剩下 %2)" 164 | 165 | #: kwidgetjobtracker.cpp:454 166 | #, qt-format 167 | msgctxt "KWidgetJobTracker|speed in bytes per second" 168 | msgid "%1/s" 169 | msgstr "%1/秒" 170 | 171 | #: kwidgetjobtracker.cpp:462 172 | msgctxt "KWidgetJobTracker|" 173 | msgid "&Close" 174 | msgstr "關閉(&C)" 175 | 176 | #: kwidgetjobtracker.cpp:464 177 | msgctxt "KWidgetJobTracker|" 178 | msgid "Close the current window or document" 179 | msgstr "關閉目前的視窗或文件" 180 | 181 | #: kwidgetjobtracker.cpp:478 182 | #, qt-format 183 | msgctxt "KWidgetJobTracker|" 184 | msgid "%1/s (done)" 185 | msgstr "%1/秒(完成)" 186 | 187 | #: kwidgetjobtracker.cpp:484 188 | msgctxt "KWidgetJobTracker|" 189 | msgid "&Resume" 190 | msgstr "恢復(&R)" 191 | 192 | #: kwidgetjobtracker.cpp:490 kwidgetjobtracker.cpp:563 193 | msgctxt "KWidgetJobTracker|" 194 | msgid "&Pause" 195 | msgstr "暫停(&P)" 196 | 197 | #: kwidgetjobtracker.cpp:514 198 | msgctxt "KWidgetJobTracker|The source url of a job" 199 | msgid "Source:" 200 | msgstr "來源:" 201 | 202 | #: kwidgetjobtracker.cpp:522 203 | msgctxt "KWidgetJobTracker|The destination url of a job" 204 | msgid "Destination:" 205 | msgstr "目的地:" 206 | 207 | #: kwidgetjobtracker.cpp:534 208 | msgctxt "" 209 | "KWidgetJobTracker|Progress bar percent value, %p is the value, % is the " 210 | "percent sign. Make sure to include %p in your translation." 211 | msgid "%p%" 212 | msgstr "%p%" 213 | 214 | #: kwidgetjobtracker.cpp:547 kwidgetjobtracker.cpp:746 215 | msgctxt "KWidgetJobTracker|" 216 | msgid "Click this to expand the dialog, to show details" 217 | msgstr "點擊以展開對話框顯示詳情" 218 | 219 | #: kwidgetjobtracker.cpp:583 220 | msgctxt "KWidgetJobTracker|" 221 | msgid "&Keep this window open after transfer is complete" 222 | msgstr "下載完畢後保持開啟這個視窗(&K)" 223 | 224 | #: kwidgetjobtracker.cpp:591 225 | msgctxt "KWidgetJobTracker|" 226 | msgid "Open &File" 227 | msgstr "開啟檔案(&F)" 228 | 229 | #: kwidgetjobtracker.cpp:597 230 | msgctxt "KWidgetJobTracker|" 231 | msgid "Open &Destination" 232 | msgstr "開啟目的地(&D):" 233 | 234 | #: kwidgetjobtracker.cpp:605 235 | msgctxt "KWidgetJobTracker|" 236 | msgid "&Cancel" 237 | msgstr "取消(&C)" 238 | 239 | #: kwidgetjobtracker.cpp:613 240 | msgctxt "KWidgetJobTracker|" 241 | msgid "Progress Dialog" 242 | msgstr "進度對話方塊" 243 | 244 | #: kwidgetjobtracker.cpp:626 245 | #, qt-format 246 | msgctxt "KWidgetJobTracker|" 247 | msgid "%n item(s)" 248 | msgid_plural "%n item(s)" 249 | msgstr[0] "%n 個項目" 250 | 251 | #: kwidgetjobtracker.cpp:632 252 | #, qt-format 253 | msgctxt "KWidgetJobTracker|" 254 | msgid "%n folder(s)" 255 | msgid_plural "%n folder(s)" 256 | msgstr[0] "%n 個資料夾" 257 | 258 | #: kwidgetjobtracker.cpp:636 259 | #, qt-format 260 | msgctxt "KWidgetJobTracker|" 261 | msgid "%n file(s)" 262 | msgid_plural "%n file(s)" 263 | msgstr[0] "%n 個檔案" 264 | 265 | #: kwidgetjobtracker.cpp:739 266 | msgctxt "KWidgetJobTracker|" 267 | msgid "Click this to collapse the dialog, to hide details" 268 | msgstr "點擊以收回對話框隱藏詳情" 269 | -------------------------------------------------------------------------------- /python/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2025 Fushan Wen 2 | # SPDX-License-Identifier: BSD-2-Clause 3 | 4 | set(bindings_library "KJobWidgets") 5 | 6 | set(wrapped_header ${CMAKE_CURRENT_SOURCE_DIR}/bindings.h) 7 | set(typesystem_file ${CMAKE_CURRENT_SOURCE_DIR}/typesystem_kjobwidgets.xml) 8 | 9 | set(generated_sources 10 | ${CMAKE_CURRENT_BINARY_DIR}/KJobWidgets/kjobwidgets_module_wrapper.cpp 11 | ${CMAKE_CURRENT_BINARY_DIR}/KJobWidgets/kabstractwidgetjobtracker_wrapper.cpp 12 | ${CMAKE_CURRENT_BINARY_DIR}/KJobWidgets/kdialogjobuidelegate_wrapper.cpp 13 | ${CMAKE_CURRENT_BINARY_DIR}/KJobWidgets/knotificationjobuidelegate_wrapper.cpp 14 | ${CMAKE_CURRENT_BINARY_DIR}/KJobWidgets/kstatusbarjobtracker_wrapper.cpp 15 | ${CMAKE_CURRENT_BINARY_DIR}/KJobWidgets/kuiserverjobtracker_wrapper.cpp 16 | ${CMAKE_CURRENT_BINARY_DIR}/KJobWidgets/kuiserverv2jobtracker_wrapper.cpp 17 | ${CMAKE_CURRENT_BINARY_DIR}/KJobWidgets/kwidgetjobtracker_wrapper.cpp 18 | ) 19 | 20 | ecm_generate_python_bindings( 21 | PACKAGE_NAME ${bindings_library} 22 | VERSION ${KF_VERSION} 23 | WRAPPED_HEADER ${wrapped_header} 24 | TYPESYSTEM ${typesystem_file} 25 | GENERATED_SOURCES ${generated_sources} 26 | DEPENDENCIES KF6::JobWidgets 27 | QT_VERSION ${REQUIRED_QT_VERSION} 28 | HOMEPAGE_URL "https://invent.kde.org/frameworks/kjobwidgets" 29 | ISSUES_URL "https://bugs.kde.org/describecomponents.cgi?product=frameworks-kjobwidgets" 30 | AUTHOR "The KDE Community" 31 | README ${CMAKE_SOURCE_DIR}/README.md 32 | ) 33 | 34 | target_link_libraries(${bindings_library} PRIVATE KF6::JobWidgets) 35 | 36 | execute_process(COMMAND ${Python_EXECUTABLE} -Esc "import sysconfig; print(sysconfig.get_path('platlib', vars={'platbase': '${CMAKE_INSTALL_PREFIX}', 'base': '${CMAKE_INSTALL_PREFIX}'}))" OUTPUT_VARIABLE sysconfig_output) 37 | string(STRIP ${sysconfig_output} PYTHON_INSTALL_DIR) 38 | 39 | install(TARGETS ${bindings_library} LIBRARY DESTINATION "${PYTHON_INSTALL_DIR}") 40 | -------------------------------------------------------------------------------- /python/bindings.h: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2025 Fushan Wen 2 | // SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 3 | 4 | #pragma once 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | -------------------------------------------------------------------------------- /python/typesystem_kjobwidgets.xml: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | configure_file(config-kjobwidgets.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kjobwidgets.h ) 2 | 3 | add_library(KF6JobWidgets) 4 | add_library(KF6::JobWidgets ALIAS KF6JobWidgets) 5 | 6 | set_target_properties(KF6JobWidgets PROPERTIES 7 | VERSION ${KJOBWIDGETS_VERSION} 8 | SOVERSION ${KJOBWIDGETS_SOVERSION} 9 | EXPORT_NAME JobWidgets 10 | ) 11 | 12 | ecm_create_qm_loader(KF6JobWidgets kjobwidgets6_qt) 13 | 14 | set(kjobwidgets_dbus_SRCS) 15 | if (HAVE_QTDBUS) 16 | qt_add_dbus_interfaces(kjobwidgets_dbus_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.JobViewServer.xml ) 17 | qt_add_dbus_interface(kjobwidgets_dbus_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.JobView.xml jobviewiface ) 18 | 19 | qt_add_dbus_interfaces(kjobwidgets_dbus_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.JobViewServerV2.xml ) 20 | qt_add_dbus_interface(kjobwidgets_dbus_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/org.kde.JobViewV3.xml jobviewv3iface ) 21 | endif() 22 | 23 | target_sources(KF6JobWidgets PRIVATE 24 | kabstractwidgetjobtracker.cpp 25 | kabstractwidgetjobtracker.h 26 | kabstractwidgetjobtracker_p.h 27 | kdialogjobuidelegate.cpp 28 | kdialogjobuidelegate.h 29 | kjobtrackerformatters.cpp 30 | kjobtrackerformatters_p.h 31 | kstatusbarjobtracker.cpp 32 | kstatusbarjobtracker.h 33 | kstatusbarjobtracker_p.h 34 | kwidgetjobtracker.cpp 35 | kwidgetjobtracker.h 36 | kwidgetjobtracker_p.h 37 | knotificationjobuidelegate.cpp 38 | knotificationjobuidelegate.h 39 | 40 | ${kjobwidgets_dbus_SRCS} 41 | ) 42 | if (HAVE_QTDBUS) 43 | target_sources(KF6JobWidgets PRIVATE 44 | kuiserverjobtracker.cpp 45 | kuiserverjobtracker.h 46 | kuiserverjobtracker_p.h 47 | kuiserverv2jobtracker.cpp 48 | kuiserverv2jobtracker.h 49 | kuiserverv2jobtracker_p.h 50 | ) 51 | endif() 52 | 53 | ecm_qt_declare_logging_category(KF6JobWidgets 54 | HEADER debug.h 55 | IDENTIFIER KJOBWIDGETS 56 | CATEGORY_NAME kf.jobwidgets 57 | OLD_CATEGORY_NAMES kf5.kjobwidgets 58 | DESCRIPTION "KJobWidgets" 59 | EXPORT KJOBWIDGETS 60 | ) 61 | 62 | ecm_generate_export_header(KF6JobWidgets 63 | BASE_NAME KJobWidgets 64 | GROUP_BASE_NAME KF 65 | VERSION ${KF_VERSION} 66 | USE_VERSION_HEADER 67 | DEPRECATED_BASE_VERSION 0 68 | DEPRECATION_VERSIONS 69 | EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT} 70 | ) 71 | 72 | target_include_directories(KF6JobWidgets INTERFACE "$") 73 | 74 | target_link_libraries(KF6JobWidgets 75 | PUBLIC 76 | Qt6::Widgets 77 | KF6::CoreAddons # KJob 78 | PRIVATE 79 | KF6::WidgetsAddons # KSqueezedTextLabel 80 | KF6::Notifications 81 | ) 82 | if (HAVE_QTDBUS) 83 | target_link_libraries(KF6JobWidgets PRIVATE Qt6::DBus) 84 | endif() 85 | 86 | if (WITH_X11) 87 | target_link_libraries(KF6JobWidgets PRIVATE Qt6::GuiPrivate) # qtx11extras_p.h 88 | endif () 89 | 90 | ecm_generate_headers(KJobWidgets_HEADERS 91 | HEADER_NAMES 92 | KAbstractWidgetJobTracker 93 | KDialogJobUiDelegate 94 | KUiServerJobTracker 95 | KUiServerV2JobTracker 96 | KStatusBarJobTracker 97 | KWidgetJobTracker 98 | KNotificationJobUiDelegate 99 | 100 | REQUIRED_HEADERS KJobWidgets_HEADERS 101 | ) 102 | 103 | install(TARGETS KF6JobWidgets EXPORT KF6JobWidgetsTargets ${KF_INSTALL_TARGETS_DEFAULT_ARGS}) 104 | 105 | if (HAVE_QTDBUS) 106 | install(FILES 107 | org.kde.JobViewServer.xml 108 | DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} 109 | RENAME kf6_org.kde.JobViewServer.xml) 110 | 111 | install(FILES 112 | org.kde.JobView.xml 113 | DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} 114 | RENAME kf6_org.kde.JobView.xml) 115 | 116 | install(FILES 117 | org.kde.JobViewV2.xml 118 | DESTINATION ${KDE_INSTALL_DBUSINTERFACEDIR} 119 | RENAME kf6_org.kde.JobViewV2.xml) 120 | endif() 121 | 122 | install(FILES 123 | ${CMAKE_CURRENT_BINARY_DIR}/kjobwidgets_export.h 124 | ${KJobWidgets_HEADERS} 125 | DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KJobWidgets COMPONENT Devel 126 | ) 127 | 128 | ecm_qt_install_logging_categories( 129 | EXPORT KJOBWIDGETS 130 | FILE kjobwidgets.categories 131 | DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR} 132 | ) 133 | 134 | ecm_generate_qdoc(KF6JobWidgets kjobwidgets.qdocconf) 135 | -------------------------------------------------------------------------------- /src/Messages.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # Extract strings from all source files. 4 | # EXTRACT_TR_STRINGS extracts strings with lupdate and convert them to .pot with 5 | # lconvert. 6 | $EXTRACT_TR_STRINGS `find . -name \*.cpp -o -name \*.h -o -name \*.ui -o -name \*.qml` -o $podir/kjobwidgets6_qt.pot 7 | -------------------------------------------------------------------------------- /src/config-kjobwidgets.h.cmake: -------------------------------------------------------------------------------- 1 | #cmakedefine01 WITH_X11 2 | -------------------------------------------------------------------------------- /src/kabstractwidgetjobtracker.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2000 Matej Koss 4 | SPDX-FileCopyrightText: 2007 Kevin Ottens 5 | SPDX-FileCopyrightText: 2007 Rafael Fernández López 6 | 7 | SPDX-License-Identifier: LGPL-2.0-only 8 | */ 9 | 10 | #include "kabstractwidgetjobtracker.h" 11 | #include "kabstractwidgetjobtracker_p.h" 12 | 13 | #include 14 | 15 | KAbstractWidgetJobTracker::KAbstractWidgetJobTracker(QWidget *parent) 16 | : KAbstractWidgetJobTracker(*new KAbstractWidgetJobTrackerPrivate(this), parent) 17 | { 18 | } 19 | 20 | KAbstractWidgetJobTracker::KAbstractWidgetJobTracker(KAbstractWidgetJobTrackerPrivate &dd, QWidget *parent) 21 | : KJobTrackerInterface(parent) 22 | , d_ptr(&dd) 23 | { 24 | } 25 | 26 | KAbstractWidgetJobTracker::~KAbstractWidgetJobTracker() = default; 27 | 28 | void KAbstractWidgetJobTracker::registerJob(KJob *job) 29 | { 30 | KJobTrackerInterface::registerJob(job); 31 | } 32 | 33 | void KAbstractWidgetJobTracker::unregisterJob(KJob *job) 34 | { 35 | KJobTrackerInterface::unregisterJob(job); 36 | } 37 | 38 | void KAbstractWidgetJobTracker::setStopOnClose(KJob *job, bool stopOnClose) 39 | { 40 | Q_D(KAbstractWidgetJobTracker); 41 | 42 | d->setStopOnClose(job, stopOnClose); 43 | } 44 | 45 | bool KAbstractWidgetJobTracker::stopOnClose(KJob *job) const 46 | { 47 | Q_D(const KAbstractWidgetJobTracker); 48 | 49 | return d->stopOnClose(job); 50 | } 51 | 52 | void KAbstractWidgetJobTracker::setAutoDelete(KJob *job, bool autoDelete) 53 | { 54 | Q_D(KAbstractWidgetJobTracker); 55 | 56 | d->setAutoDelete(job, autoDelete); 57 | } 58 | 59 | bool KAbstractWidgetJobTracker::autoDelete(KJob *job) const 60 | { 61 | Q_D(const KAbstractWidgetJobTracker); 62 | 63 | return d->autoDelete(job); 64 | } 65 | 66 | void KAbstractWidgetJobTracker::finished(KJob *job) 67 | { 68 | Q_UNUSED(job); 69 | } 70 | 71 | void KAbstractWidgetJobTracker::slotStop(KJob *job) 72 | { 73 | if (job) { 74 | job->kill(KJob::EmitResult); // notify that the job has been killed 75 | Q_EMIT stopped(job); 76 | } 77 | } 78 | 79 | void KAbstractWidgetJobTracker::slotSuspend(KJob *job) 80 | { 81 | if (job) { 82 | job->suspend(); 83 | Q_EMIT suspend(job); 84 | } 85 | } 86 | 87 | void KAbstractWidgetJobTracker::slotResume(KJob *job) 88 | { 89 | if (job) { 90 | job->resume(); 91 | Q_EMIT resume(job); 92 | } 93 | } 94 | 95 | void KAbstractWidgetJobTracker::slotClean(KJob *job) 96 | { 97 | Q_UNUSED(job); 98 | } 99 | 100 | #include "moc_kabstractwidgetjobtracker.cpp" 101 | -------------------------------------------------------------------------------- /src/kabstractwidgetjobtracker.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2000 Matej Koss 4 | SPDX-FileCopyrightText: 2007 Kevin Ottens 5 | SPDX-FileCopyrightText: 2008 Rafael Fernández López 6 | 7 | SPDX-License-Identifier: LGPL-2.0-only 8 | */ 9 | 10 | #ifndef KABSTRACTWIDGETJOBTRACKER_H 11 | #define KABSTRACTWIDGETJOBTRACKER_H 12 | 13 | #include 14 | #include 15 | 16 | #include 17 | 18 | class KJob; 19 | class QWidget; 20 | class KAbstractWidgetJobTrackerPrivate; 21 | 22 | /*! 23 | * \class KAbstractWidgetJobTracker 24 | * \inmodule KJobWidgets 25 | * 26 | * \brief The base class for widget based job trackers. 27 | */ 28 | class KJOBWIDGETS_EXPORT KAbstractWidgetJobTracker : public KJobTrackerInterface 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | /*! 34 | * Creates a new KAbstractWidgetJobTracker 35 | * 36 | * \a parent the parent of this object and of the widget displaying the job progresses 37 | */ 38 | explicit KAbstractWidgetJobTracker(QWidget *parent = nullptr); 39 | 40 | ~KAbstractWidgetJobTracker() override; 41 | 42 | // KDE5: move this two virtual methods to be placed correctly (ereslibre) 43 | public Q_SLOTS: 44 | /*! 45 | * Register a new job in this tracker. 46 | * Note that job trackers inheriting from this class can have only one job 47 | * registered at a time. 48 | * 49 | * \a job the job to register 50 | */ 51 | void registerJob(KJob *job) override; 52 | 53 | /*! 54 | * Unregister a job from this tracker. 55 | * 56 | * \a job the job to unregister 57 | */ 58 | void unregisterJob(KJob *job) override; 59 | 60 | public: 61 | /*! 62 | * The widget associated to this tracker. 63 | * 64 | * \a job the job that is assigned the widget we want to return 65 | * Returns the widget displaying the job progresses 66 | */ 67 | virtual QWidget *widget(KJob *job) = 0; 68 | 69 | /*! 70 | * This controls whether the job should be canceled if the dialog is closed. 71 | * 72 | * \a job the job's widget that will be stopped when closing 73 | * 74 | * \a stopOnClose If true the job will be stopped if the dialog is closed, 75 | * otherwise the job will continue even on close. 76 | * 77 | * \sa stopOnClose() 78 | */ 79 | void setStopOnClose(KJob *job, bool stopOnClose); 80 | 81 | /*! 82 | * Checks whether the job will be killed when the dialog is closed. 83 | * 84 | * \a job the job's widget that will be stopped when closing 85 | * 86 | * Returns \c true if the job is killed on close event, false otherwise. 87 | * 88 | * \sa setStopOnClose() 89 | */ 90 | bool stopOnClose(KJob *job) const; 91 | 92 | /*! 93 | * This controls whether the dialog should be deleted or only cleaned when 94 | * the KJob is finished (or canceled). 95 | * 96 | * If your dialog is an embedded widget and not a separate window, you should 97 | * setAutoDelete(false) in the constructor of your custom dialog. 98 | * 99 | * \a job the job's widget that is going to be auto-deleted 100 | * 101 | * \a autoDelete If false the dialog will only call method slotClean. 102 | * 103 | * If true the dialog will be deleted. 104 | * 105 | * \sa autoDelete() 106 | */ 107 | void setAutoDelete(KJob *job, bool autoDelete); 108 | 109 | /*! 110 | * Checks whether the dialog should be deleted or cleaned. 111 | * 112 | * \a job the job's widget that will be auto-deleted 113 | * 114 | * Returns \c false if the dialog only calls slotClean, true if it will be deleted 115 | * \sa setAutoDelete() 116 | */ 117 | bool autoDelete(KJob *job) const; 118 | 119 | protected Q_SLOTS: 120 | void finished(KJob *job) override; 121 | 122 | /*! 123 | * This method should be called for correct cancellation of IO operation 124 | * Connect this to the progress widgets buttons etc. 125 | * 126 | * \a job The job that is being stopped 127 | */ 128 | virtual void slotStop(KJob *job); 129 | 130 | /*! 131 | * This method should be called for pause/resume 132 | * Connect this to the progress widgets buttons etc. 133 | * 134 | * \a job The job that is being suspended 135 | */ 136 | virtual void slotSuspend(KJob *job); 137 | 138 | /*! 139 | * This method should be called for pause/resume 140 | * Connect this to the progress widgets buttons etc. 141 | * 142 | * \a job The job that is being resumed 143 | */ 144 | virtual void slotResume(KJob *job); 145 | 146 | /*! 147 | * This method is called when the widget should be cleaned (after job is finished). 148 | * redefine this for custom behavior. 149 | * 150 | * \a job The job that is being cleaned 151 | */ 152 | virtual void slotClean(KJob *job); 153 | 154 | Q_SIGNALS: 155 | /*! 156 | * Emitted when the user aborted the operation 157 | * 158 | * \a job The job that has been stopped 159 | */ 160 | void stopped(KJob *job); 161 | 162 | /*! 163 | * Emitted when the user suspended the operation 164 | * 165 | * \a job The job that has been suspended 166 | */ 167 | void suspend(KJob *job); 168 | 169 | /*! 170 | * Emitted when the user resumed the operation 171 | * 172 | * \a job The job that has been resumed 173 | */ 174 | void resume(KJob *job); 175 | 176 | protected: 177 | KJOBWIDGETS_NO_EXPORT explicit KAbstractWidgetJobTracker(KAbstractWidgetJobTrackerPrivate &dd, QWidget *parent = nullptr); 178 | 179 | protected: 180 | std::unique_ptr const d_ptr; 181 | 182 | private: 183 | Q_DECLARE_PRIVATE(KAbstractWidgetJobTracker) 184 | }; 185 | 186 | #endif 187 | -------------------------------------------------------------------------------- /src/kabstractwidgetjobtracker_p.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2000 Matej Koss 4 | SPDX-FileCopyrightText: 2007 Kevin Ottens 5 | SPDX-FileCopyrightText: 2007 Rafael Fernández López 6 | 7 | SPDX-License-Identifier: LGPL-2.0-only 8 | */ 9 | 10 | #ifndef KABSTRACTWIDGETJOBTRACKER_P 11 | #define KABSTRACTWIDGETJOBTRACKER_P 12 | 13 | #include "kabstractwidgetjobtracker.h" 14 | 15 | class KAbstractWidgetJobTrackerPrivate 16 | { 17 | Q_DECLARE_PUBLIC(KAbstractWidgetJobTracker) 18 | public: 19 | KAbstractWidgetJobTrackerPrivate(KAbstractWidgetJobTracker *qq) 20 | : q_ptr(qq) 21 | { 22 | } 23 | 24 | virtual ~KAbstractWidgetJobTrackerPrivate() 25 | { 26 | } 27 | 28 | KAbstractWidgetJobTracker *const q_ptr; 29 | 30 | // ### KDE 5: make this methods virtual on KAbstractWidgetJobTracker and get rid out of this 31 | // workaround. (ereslibre) 32 | virtual void setStopOnClose(KJob *job, bool stopOnClose) 33 | { 34 | Q_UNUSED(job); 35 | Q_UNUSED(stopOnClose); 36 | } 37 | 38 | virtual bool stopOnClose(KJob *job) const 39 | { 40 | Q_UNUSED(job); 41 | return true; 42 | } 43 | 44 | virtual void setAutoDelete(KJob *job, bool autoDelete) 45 | { 46 | Q_UNUSED(job); 47 | Q_UNUSED(autoDelete); 48 | } 49 | 50 | virtual bool autoDelete(KJob *job) const 51 | { 52 | Q_UNUSED(job); 53 | return true; 54 | } 55 | }; 56 | 57 | #endif // KABSTRACTWIDGETJOBTRACKER_P 58 | -------------------------------------------------------------------------------- /src/kdialogjobuidelegate.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE libraries 3 | SPDX-FileCopyrightText: 2000 Stephan Kulow 4 | SPDX-FileCopyrightText: 2000 David Faure 5 | SPDX-FileCopyrightText: 2006, 2007 Kevin Ottens 6 | 7 | SPDX-License-Identifier: LGPL-2.0-or-later 8 | */ 9 | 10 | #include "kdialogjobuidelegate.h" 11 | 12 | #include 13 | #include 14 | #include 15 | 16 | #include 17 | #include 18 | #include 19 | 20 | #include 21 | #if WITH_X11 22 | #include 23 | #endif 24 | 25 | enum DialogType { ErrorDialog, WarningDialog }; 26 | 27 | struct MessageBoxData { 28 | QWidget *widget; 29 | DialogType type = ErrorDialog; 30 | QString msg; 31 | }; 32 | 33 | class KDialogJobUiDelegatePrivate : public QObject 34 | { 35 | Q_OBJECT 36 | public: 37 | explicit KDialogJobUiDelegatePrivate(QObject *parent = nullptr); 38 | ~KDialogJobUiDelegatePrivate() override; 39 | void queuedMessageBox(QWidget *widget, DialogType type, const QString &msg); 40 | 41 | QWidget *window; 42 | 43 | public Q_SLOTS: 44 | void next(); 45 | 46 | private: 47 | bool running; 48 | QQueue> queue; 49 | }; 50 | 51 | KDialogJobUiDelegatePrivate::KDialogJobUiDelegatePrivate(QObject *parent) 52 | : QObject(parent) 53 | , window(nullptr) 54 | , running(false) 55 | { 56 | } 57 | 58 | KDialogJobUiDelegatePrivate::~KDialogJobUiDelegatePrivate() 59 | { 60 | queue.clear(); 61 | } 62 | 63 | void KDialogJobUiDelegatePrivate::next() 64 | { 65 | if (queue.isEmpty()) { 66 | running = false; 67 | return; 68 | } 69 | 70 | QSharedPointer data = queue.dequeue(); 71 | 72 | // kmessagebox starts a new event loop which can cause this to get deleted 73 | // https://bugs.kde.org/show_bug.cgi?id=356321#c16 74 | QPointer thisGuard(this); 75 | 76 | switch (data->type) { 77 | case ErrorDialog: 78 | KMessageBox::error(data->widget, data->msg); 79 | break; 80 | case WarningDialog: 81 | KMessageBox::information(data->widget, data->msg); 82 | break; 83 | }; 84 | 85 | if (!thisGuard) { 86 | return; 87 | } 88 | 89 | QMetaObject::invokeMethod(this, &KDialogJobUiDelegatePrivate::next, Qt::QueuedConnection); 90 | } 91 | 92 | void KDialogJobUiDelegatePrivate::queuedMessageBox(QWidget *widget, DialogType type, const QString &msg) 93 | { 94 | QSharedPointer data(new MessageBoxData{widget, type, msg}); 95 | 96 | queue.enqueue(data); 97 | 98 | if (!running) { 99 | running = true; 100 | QMetaObject::invokeMethod(this, &KDialogJobUiDelegatePrivate::next, Qt::QueuedConnection); 101 | } 102 | } 103 | 104 | KDialogJobUiDelegate::KDialogJobUiDelegate() 105 | : KJobUiDelegate() 106 | , d(new KDialogJobUiDelegatePrivate) 107 | { 108 | } 109 | 110 | KDialogJobUiDelegate::KDialogJobUiDelegate(KJobUiDelegate::Flags flags, QWidget *window) 111 | : KJobUiDelegate(flags) 112 | , d(new KDialogJobUiDelegatePrivate) 113 | { 114 | d->window = window; 115 | } 116 | 117 | KDialogJobUiDelegate::~KDialogJobUiDelegate() = default; 118 | 119 | bool KDialogJobUiDelegate::setJob(KJob *job) 120 | { 121 | bool ret = KJobUiDelegate::setJob(job); 122 | #if WITH_X11 123 | if (ret) { 124 | unsigned long time = QX11Info::appUserTime(); 125 | KJobWidgets::updateUserTimestamp(job, time); 126 | } 127 | #endif 128 | return ret; 129 | } 130 | 131 | void KDialogJobUiDelegate::setWindow(QWidget *window) 132 | { 133 | if (job()) { 134 | KJobWidgets::setWindow(job(), window); 135 | } 136 | d->window = window; 137 | } 138 | 139 | QWidget *KDialogJobUiDelegate::window() const 140 | { 141 | if (d->window) { 142 | return d->window; 143 | } else if (job()) { 144 | return KJobWidgets::window(job()); 145 | } 146 | return nullptr; 147 | } 148 | 149 | void KDialogJobUiDelegate::updateUserTimestamp(unsigned long time) 150 | { 151 | KJobWidgets::updateUserTimestamp(job(), time); 152 | } 153 | 154 | unsigned long KDialogJobUiDelegate::userTimestamp() const 155 | { 156 | return KJobWidgets::userTimestamp(job()); 157 | } 158 | 159 | void KDialogJobUiDelegate::showErrorMessage() 160 | { 161 | if (job()->error() != KJob::KilledJobError) { 162 | d->queuedMessageBox(window(), ErrorDialog, job()->errorString()); 163 | } 164 | } 165 | 166 | void KDialogJobUiDelegate::slotWarning(KJob * /*job*/, const QString &message) 167 | { 168 | if (isAutoWarningHandlingEnabled()) { 169 | d->queuedMessageBox(window(), WarningDialog, message); 170 | } 171 | } 172 | 173 | #include "kdialogjobuidelegate.moc" 174 | #include "moc_kdialogjobuidelegate.cpp" 175 | -------------------------------------------------------------------------------- /src/kdialogjobuidelegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE libraries 3 | SPDX-FileCopyrightText: 2000 Stephan Kulow 4 | SPDX-FileCopyrightText: 2000 David Faure 5 | SPDX-FileCopyrightText: 2006, 2007 Kevin Ottens 6 | 7 | SPDX-License-Identifier: LGPL-2.0-or-later 8 | */ 9 | 10 | #ifndef KDIALOGJOBUIDELEGATE_H 11 | #define KDIALOGJOBUIDELEGATE_H 12 | 13 | #include 14 | #include 15 | 16 | #include 17 | 18 | /*! 19 | * \class KDialogJobUiDelegate 20 | * 21 | * \inmodule KJobWidgets 22 | * 23 | * \brief A UI delegate using KMessageBox for interaction (showing errors and warnings). 24 | * 25 | * The KMessageBox will use window as a parent in an application-modal. 26 | */ 27 | class KJOBWIDGETS_EXPORT KDialogJobUiDelegate : public KJobUiDelegate 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | /*! 33 | * Constructs a new KDialogJobUiDelegate. 34 | */ 35 | KDialogJobUiDelegate(); 36 | 37 | /*! 38 | * Constructs a new KDialogJobUiDelegate. 39 | * 40 | * \a flags allows to enable automatic error/warning handling 41 | * 42 | * \a window the window associated with this delegate, see setWindow. 43 | * 44 | * \since 5.70 45 | */ 46 | explicit KDialogJobUiDelegate(KJobUiDelegate::Flags flags, QWidget *window); 47 | 48 | ~KDialogJobUiDelegate() override; 49 | 50 | public: 51 | bool setJob(KJob *job) override; 52 | 53 | /*! 54 | * Associate this delegate with a window given by \a window. 55 | * 56 | * Needed for dialog boxes to respect stacking order, centering to parent, focus going back to parent after closing... 57 | * 58 | * \a window the window to associate to 59 | * 60 | * \sa window() 61 | */ 62 | virtual void setWindow(QWidget *window); 63 | 64 | /*! 65 | * Returns the window this delegate is associated with. 66 | * 67 | * \sa setWindow() 68 | */ 69 | QWidget *window() const; 70 | 71 | /*! 72 | * Updates the last user action timestamp to the given time. 73 | */ 74 | void updateUserTimestamp(unsigned long time); 75 | 76 | /*! 77 | * \internal 78 | */ 79 | unsigned long userTimestamp() const; 80 | 81 | void showErrorMessage() override; 82 | 83 | protected Q_SLOTS: 84 | void slotWarning(KJob *job, const QString &message) override; 85 | 86 | private: 87 | std::unique_ptr const d; 88 | }; 89 | 90 | #endif 91 | -------------------------------------------------------------------------------- /src/kjobtrackerformatters.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 1997, 2001 Stephan Kulow 4 | SPDX-FileCopyrightText: 1999 Preston Brown 5 | SPDX-FileCopyrightText: 1999-2002 Hans Petter Bieker 6 | SPDX-FileCopyrightText: 2002 Lukas Tinkl 7 | SPDX-FileCopyrightText: 2007 Bernhard Loos 8 | SPDX-FileCopyrightText: 2009, 2010 John Layt 9 | 10 | SPDX-License-Identifier: LGPL-2.0-only 11 | */ 12 | 13 | #include "kjobtrackerformatters_p.h" 14 | #include 15 | 16 | #include 17 | 18 | QString KJobTrackerFormatters::byteSize(double size) 19 | { 20 | return KFormat().formatByteSize(size); 21 | } 22 | 23 | QString KJobTrackerFormatters::daysDuration(int n) 24 | { 25 | //~ singular %n day 26 | //~ plural %n days 27 | return QCoreApplication::translate("KJobTrackerFormatters", "%n day(s)", "@item:intext", n); 28 | } 29 | 30 | QString KJobTrackerFormatters::hoursDuration(int n) 31 | { 32 | //~ singular %n hour 33 | //~ plural %n hours 34 | return QCoreApplication::translate("KJobTrackerFormatters", "%n hour(s)", "@item:intext", n); 35 | } 36 | 37 | QString KJobTrackerFormatters::minutesDuration(int n) 38 | { 39 | //~ singular %n minute 40 | //~ plural %n minutes 41 | return QCoreApplication::translate("KJobTrackerFormatters", "%n minute(s)", "@item:intext", n); 42 | } 43 | 44 | QString KJobTrackerFormatters::secondsDuration(int n) 45 | { 46 | //~ singular %n second 47 | //~ plural %n seconds 48 | return QCoreApplication::translate("KJobTrackerFormatters", "%n second(s)", "@item:intext", n); 49 | } 50 | 51 | QString KJobTrackerFormatters::duration(unsigned long mSec) 52 | { 53 | unsigned long ms = mSec; 54 | int days = ms / (24 * 3600000); 55 | ms = ms % (24 * 3600000); 56 | int hours = ms / 3600000; 57 | ms = ms % 3600000; 58 | int minutes = ms / 60000; 59 | ms = ms % 60000; 60 | int seconds = qRound(ms / 1000.0); 61 | 62 | // Handle correctly problematic case #1 (look at KLocaleTest::prettyFormatDuration() 63 | // at klocaletest.cpp) 64 | if (seconds == 60) { 65 | return duration(mSec - ms + 60000); 66 | } 67 | 68 | if (days && hours) { 69 | return QCoreApplication::translate("KJobTrackerFormatters", "%1 and %2", "@item:intext days and hours.").arg(daysDuration(days), hoursDuration(hours)); 70 | } else if (days) { 71 | return daysDuration(days); 72 | } else if (hours && minutes) { 73 | return QCoreApplication::translate("KJobTrackerFormatters", "%1 and %2", "@item:intext hours and minutes.") 74 | .arg(hoursDuration(hours), minutesDuration(minutes)); 75 | } else if (hours) { 76 | return hoursDuration(hours); 77 | } else if (minutes && seconds) { 78 | return QCoreApplication::translate("KJobTrackerFormatters", "%1 and %2", "@item:intext minutes and seconds.") 79 | .arg(minutesDuration(minutes), secondsDuration(seconds)); 80 | } else if (minutes) { 81 | return minutesDuration(minutes); 82 | } else { 83 | return secondsDuration(seconds); 84 | } 85 | } 86 | -------------------------------------------------------------------------------- /src/kjobtrackerformatters_p.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 1997, 2001 Stephan Kulow 4 | SPDX-FileCopyrightText: 1999 Preston Brown 5 | SPDX-FileCopyrightText: 1999-2002 Hans Petter Bieker 6 | SPDX-FileCopyrightText: 2002 Lukas Tinkl 7 | SPDX-FileCopyrightText: 2007 Bernhard Loos 8 | SPDX-FileCopyrightText: 2009, 2010 John Layt 9 | 10 | SPDX-License-Identifier: LGPL-2.0-only 11 | */ 12 | 13 | #ifndef KJOBTRACKERFORMATTERS_P_H 14 | #define KJOBTRACKERFORMATTERS_P_H 15 | 16 | #include 17 | 18 | namespace KJobTrackerFormatters 19 | { 20 | QString byteSize(double size); 21 | 22 | QString daysDuration(int n); 23 | QString hoursDuration(int n); 24 | QString minutesDuration(int n); 25 | QString secondsDuration(int n); 26 | QString duration(unsigned long mSec); 27 | } 28 | 29 | #endif 30 | -------------------------------------------------------------------------------- /src/kjobwidgets-index.qdoc: -------------------------------------------------------------------------------- 1 | /*! 2 | \page kjobwidgets-index.html 3 | \title KJobWidgets 4 | 5 | Widgets for showing progress of asynchronous jobs. 6 | 7 | \section1 Using the Module 8 | 9 | \include {module-use.qdocinc} {using the c++ api} 10 | 11 | \section2 Building with CMake 12 | 13 | \include {module-use.qdocinc} {building with cmake} {KF6} {KJobWidgets} {KF6::JobWidgets} 14 | 15 | \section1 API Reference 16 | 17 | \list 18 | \li \l{KJobWidgets C++ Classes} 19 | \endlist 20 | */ 21 | -------------------------------------------------------------------------------- /src/kjobwidgets.qdoc: -------------------------------------------------------------------------------- 1 | /*! 2 | \module KJobWidgets 3 | \title KJobWidgets C++ Classes 4 | \ingroup modules 5 | \cmakepackage KF6 6 | \cmakecomponent JobWidgets 7 | \brief Widgets for showing progress of asynchronous jobs. 8 | */ 9 | -------------------------------------------------------------------------------- /src/kjobwidgets.qdocconf: -------------------------------------------------------------------------------- 1 | include($KDE_DOCS/global/qt-module-defaults.qdocconf) 2 | 3 | project = KJobWidgets 4 | description = Widgets for showing progress of asynchronous jobs. 5 | 6 | documentationinheaders = true 7 | 8 | headerdirs += . 9 | sourcedirs += . 10 | 11 | imagedirs = ../docs/pics 12 | 13 | outputformats = HTML 14 | 15 | navigation.landingpage = "KJobWidgets" 16 | 17 | depends += kde qtwidgets kcoreaddons 18 | 19 | qhp.projects = KJobWidgets 20 | 21 | qhp.KJobWidgets.file = kjobwidgets.qhp 22 | qhp.KJobWidgets.namespace = org.kde.kjobwidgets.$QT_VERSION_TAG 23 | qhp.KJobWidgets.virtualFolder = kjobwidgets 24 | qhp.KJobWidgets.indexTitle = KJobWidgets 25 | qhp.KJobWidgets.indexRoot = 26 | 27 | qhp.KJobWidgets.subprojects = classes 28 | qhp.KJobWidgets.subprojects.classes.title = C++ Classes 29 | qhp.KJobWidgets.subprojects.classes.indexTitle = KJobWidgets C++ Classes 30 | qhp.KJobWidgets.subprojects.classes.selectors = class fake:headerfile 31 | qhp.KJobWidgets.subprojects.classes.sortPages = true 32 | 33 | tagfile = kjobwidgets.tags 34 | -------------------------------------------------------------------------------- /src/knotificationjobuidelegate.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE Frameworks 3 | SPDX-FileCopyrightText: 2020 Kai Uwe Broulik 4 | 5 | SPDX-License-Identifier: LGPL-2.0-or-later 6 | */ 7 | 8 | #include "knotificationjobuidelegate.h" 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | class KNotificationJobUiDelegatePrivate 16 | { 17 | public: 18 | void showNotification(KNotification::StandardEvent standardEvent, const QString &text); 19 | 20 | QString description; 21 | }; 22 | 23 | void KNotificationJobUiDelegatePrivate::showNotification(KNotification::StandardEvent standardEvent, const QString &text) 24 | { 25 | QString title = description; 26 | if (standardEvent == KNotification::Error && !title.isEmpty()) { 27 | //: Job name, e.g. Copying has failed 28 | title = KNotificationJobUiDelegate::tr("%1 (Failed)").arg(title); 29 | } 30 | KNotification::event(standardEvent, title, text); 31 | } 32 | 33 | KNotificationJobUiDelegate::KNotificationJobUiDelegate(KJobUiDelegate::Flags flags) 34 | : KJobUiDelegate(flags) 35 | , d(new KNotificationJobUiDelegatePrivate) 36 | { 37 | } 38 | 39 | KNotificationJobUiDelegate::~KNotificationJobUiDelegate() = default; 40 | 41 | bool KNotificationJobUiDelegate::setJob(KJob *job) 42 | { 43 | const bool ok = KJobUiDelegate::setJob(job); 44 | 45 | if (ok) { 46 | connect(job, &KJob::description, this, [this](KJob *, const QString &title, const QPair &, const QPair &) { 47 | d->description = title; 48 | }); 49 | } 50 | 51 | return ok; 52 | } 53 | 54 | void KNotificationJobUiDelegate::showErrorMessage() 55 | { 56 | if (job()->error() == KJob::KilledJobError) { 57 | return; 58 | } 59 | 60 | d->showNotification(KNotification::Error, job()->errorString()); 61 | } 62 | 63 | void KNotificationJobUiDelegate::slotWarning(KJob *job, const QString &message) 64 | { 65 | Q_UNUSED(job); 66 | 67 | if (isAutoErrorHandlingEnabled()) { 68 | d->showNotification(KNotification::Notification, message); 69 | } 70 | } 71 | 72 | #include "moc_knotificationjobuidelegate.cpp" 73 | -------------------------------------------------------------------------------- /src/knotificationjobuidelegate.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE Frameworks 3 | SPDX-FileCopyrightText: 2020 Kai Uwe Broulik 4 | 5 | SPDX-License-Identifier: LGPL-2.0-or-later 6 | */ 7 | 8 | #ifndef KNOTIFICATIONJOBUIDELEGATE_H 9 | #define KNOTIFICATIONJOBUIDELEGATE_H 10 | 11 | #include 12 | 13 | #include 14 | 15 | #include 16 | 17 | class KNotificationJobUiDelegatePrivate; 18 | 19 | /*! 20 | * \class KNotificationJobUiDelegate 21 | * \inmodule KJobWidgets 22 | * 23 | * \brief A UI delegate using KNotification for interaction (showing errors and warnings). 24 | * 25 | * \since 6.0 26 | */ 27 | class KJOBWIDGETS_EXPORT KNotificationJobUiDelegate : public KJobUiDelegate 28 | { 29 | Q_OBJECT 30 | 31 | public: 32 | /*! 33 | * Constructs a new KNotificationJobUiDelegate. 34 | * 35 | * \a flags allows to enable automatic error/warning handling 36 | * 37 | * \since 6.0 38 | */ 39 | explicit KNotificationJobUiDelegate(KJobUiDelegate::Flags flags = {KJobUiDelegate::AutoHandlingDisabled}); 40 | 41 | ~KNotificationJobUiDelegate() override; 42 | 43 | public: 44 | /*! 45 | * Display a notification to inform the user of the error given by 46 | * this job. 47 | */ 48 | void showErrorMessage() override; 49 | 50 | protected Q_SLOTS: 51 | bool setJob(KJob *job) override; 52 | void slotWarning(KJob *job, const QString &message) override; 53 | 54 | private: 55 | QScopedPointer d; 56 | }; 57 | 58 | #endif // KNOTIFICATIONJOBUIDELEGATE_H 59 | -------------------------------------------------------------------------------- /src/kstatusbarjobtracker.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2000 Matej Koss 4 | SPDX-FileCopyrightText: 2007 Kevin Ottens 5 | 6 | SPDX-License-Identifier: LGPL-2.0-only 7 | */ 8 | 9 | #ifndef KSTATUSBARJOBTRACKER_H 10 | #define KSTATUSBARJOBTRACKER_H 11 | 12 | #include 13 | 14 | class KStatusBarJobTrackerPrivate; 15 | 16 | /*! 17 | * \class KStatusBarJobTracker 18 | * 19 | * \inmodule KJobWidgets 20 | * 21 | * \brief This class implements a job tracker with a widget suited for embedding in a 22 | * status bar. 23 | */ 24 | class KJOBWIDGETS_EXPORT KStatusBarJobTracker : public KAbstractWidgetJobTracker 25 | { 26 | Q_OBJECT 27 | 28 | public: 29 | /*! 30 | * \value NoInformation Does not show any information 31 | * \value LabelOnly Shows an informative label for job progress 32 | * \value ProgressOnly Shows a progress bar with the job completion 33 | */ 34 | enum StatusBarMode { 35 | NoInformation = 0x0000, 36 | LabelOnly = 0x0001, 37 | ProgressOnly = 0x0002, 38 | }; 39 | Q_DECLARE_FLAGS(StatusBarModes, StatusBarMode) 40 | 41 | /*! 42 | * Creates a new KStatusBarJobTracker 43 | * 44 | * \a parent the parent of this object and of the widget displaying the job progresses 45 | * 46 | * \a button true to display a stop button allowing to kill the job, false otherwise 47 | */ 48 | explicit KStatusBarJobTracker(QWidget *parent = nullptr, bool button = true); 49 | 50 | ~KStatusBarJobTracker() override; 51 | 52 | void registerJob(KJob *job) override; 53 | 54 | void unregisterJob(KJob *job) override; 55 | 56 | QWidget *widget(KJob *job) override; 57 | 58 | /*! 59 | * Sets the mode of the status bar. 60 | * 61 | * \a statusBarMode what information the status bar will show (see StatusBarMode). 62 | * LabelOnly by default 63 | */ 64 | void setStatusBarMode(StatusBarModes statusBarMode); 65 | 66 | public Q_SLOTS: 67 | void description(KJob *job, const QString &title, const QPair &field1, const QPair &field2) override; 68 | void totalAmount(KJob *job, KJob::Unit unit, qulonglong amount) override; 69 | void percent(KJob *job, unsigned long percent) override; 70 | void speed(KJob *job, unsigned long value) override; 71 | void slotClean(KJob *job) override; 72 | 73 | private: 74 | Q_DECLARE_PRIVATE(KStatusBarJobTracker) 75 | }; 76 | 77 | Q_DECLARE_OPERATORS_FOR_FLAGS(KStatusBarJobTracker::StatusBarModes) 78 | 79 | #endif 80 | -------------------------------------------------------------------------------- /src/kstatusbarjobtracker_p.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2007 Rafael Fernández López 4 | SPDX-FileCopyrightText: 2007 Kevin Ottens 5 | 6 | SPDX-License-Identifier: LGPL-2.0-only 7 | */ 8 | 9 | #ifndef KSTATUSBARJOBTRACKER_P_H 10 | #define KSTATUSBARJOBTRACKER_P_H 11 | 12 | #include "kabstractwidgetjobtracker_p.h" 13 | #include "kstatusbarjobtracker.h" 14 | 15 | #include 16 | #include 17 | #include 18 | #include 19 | 20 | class QPushButton; 21 | class QCheckBox; 22 | class QLabel; 23 | class QProgressBar; 24 | 25 | class KStatusBarJobTrackerPrivate : public KAbstractWidgetJobTrackerPrivate 26 | { 27 | Q_DECLARE_PUBLIC(KStatusBarJobTracker) 28 | 29 | public: 30 | KStatusBarJobTrackerPrivate(KStatusBarJobTracker *q, QWidget *parent, bool withStopButton) 31 | : KAbstractWidgetJobTrackerPrivate(q) 32 | , parent(parent) 33 | , currentProgressWidget(nullptr) 34 | , showStopButton(withStopButton) 35 | { 36 | } 37 | 38 | class ProgressWidget; 39 | 40 | QWidget *parent; 41 | QMap progressWidget; 42 | ProgressWidget *currentProgressWidget; 43 | bool showStopButton; 44 | }; 45 | 46 | class KStatusBarJobTrackerPrivate::ProgressWidget : public QWidget 47 | { 48 | Q_OBJECT 49 | 50 | public: 51 | ProgressWidget(KJob *job, KStatusBarJobTracker *object, QWidget *parent) 52 | : q(object) 53 | , job(job) 54 | { 55 | init(job, parent); 56 | } 57 | 58 | ~ProgressWidget() override 59 | { 60 | beingDeleted = true; 61 | delete widget; 62 | 63 | q->unregisterJob(job); 64 | } 65 | 66 | KStatusBarJobTracker *const q; 67 | KJob *const job; 68 | 69 | QWidget *widget = nullptr; 70 | QProgressBar *progressBar = nullptr; 71 | QLabel *label = nullptr; 72 | QPushButton *button = nullptr; 73 | QBoxLayout *box = nullptr; 74 | QStackedWidget *stack = nullptr; 75 | 76 | // qlonglong totalSize = -1; 77 | 78 | KStatusBarJobTracker::StatusBarModes mode = KStatusBarJobTracker::NoInformation; 79 | bool beingDeleted = false; 80 | 81 | void init(KJob *job, QWidget *parent); 82 | 83 | void setMode(KStatusBarJobTracker::StatusBarModes newMode); 84 | 85 | public Q_SLOTS: 86 | virtual void description(const QString &title, const QPair &field1, const QPair &field2); 87 | virtual void totalAmount(KJob::Unit unit, qulonglong amount); 88 | virtual void percent(unsigned long percent); 89 | virtual void speed(unsigned long value); 90 | virtual void slotClean(); 91 | 92 | private Q_SLOTS: 93 | void killJob(); 94 | 95 | protected: 96 | bool eventFilter(QObject *obj, QEvent *event) override; 97 | }; 98 | 99 | #endif // KSTATUSBARJOBTRACKER_P_H 100 | -------------------------------------------------------------------------------- /src/kuiserverjobtracker.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2007 Kevin Ottens 4 | 5 | SPDX-License-Identifier: LGPL-2.0-only 6 | */ 7 | 8 | #ifndef KUISERVERJOBTRACKER_H 9 | #define KUISERVERJOBTRACKER_H 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | class KJob; 17 | 18 | /*! 19 | * \class KUiServerJobTracker 20 | * 21 | * \inmodule KJobWidgets 22 | * 23 | * \brief The interface to implement to track the progresses of a job. 24 | */ 25 | class KJOBWIDGETS_EXPORT KUiServerJobTracker : public KJobTrackerInterface 26 | { 27 | Q_OBJECT 28 | 29 | public: 30 | /*! 31 | * Creates a new KJobTrackerInterface 32 | * 33 | * \a parent the parent object 34 | */ 35 | explicit KUiServerJobTracker(QObject *parent = nullptr); 36 | 37 | ~KUiServerJobTracker() override; 38 | 39 | /*! 40 | * Register a new job in this tracker. 41 | * 42 | * \a job the job to register 43 | */ 44 | void registerJob(KJob *job) override; 45 | 46 | /*! 47 | * Unregister a job from this tracker. 48 | * 49 | * \a job the job to unregister 50 | */ 51 | void unregisterJob(KJob *job) override; 52 | 53 | protected Q_SLOTS: 54 | void finished(KJob *job) override; 55 | void suspended(KJob *job) override; 56 | void resumed(KJob *job) override; 57 | void description(KJob *job, const QString &title, const QPair &field1, const QPair &field2) override; 58 | void infoMessage(KJob *job, const QString &message) override; 59 | void totalAmount(KJob *job, KJob::Unit unit, qulonglong amount) override; 60 | void processedAmount(KJob *job, KJob::Unit unit, qulonglong amount) override; 61 | void percent(KJob *job, unsigned long percent) override; 62 | void speed(KJob *job, unsigned long value) override; 63 | 64 | private: 65 | class Private; 66 | std::unique_ptr const d; 67 | 68 | Q_PRIVATE_SLOT(d, void _k_killJob()) 69 | }; 70 | 71 | #endif 72 | -------------------------------------------------------------------------------- /src/kuiserverjobtracker_p.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE libraries 3 | SPDX-FileCopyrightText: 2006-2008 Rafael Fernández López 4 | SPDX-FileCopyrightText: 2006-2008 Kevin Ottens 5 | SPDX-FileCopyrightText: 2000 Matej Koss 6 | SPDX-FileCopyrightText: 2000 David Faure 7 | SPDX-FileCopyrightText: 2000 Stephan Kulow 8 | 9 | SPDX-License-Identifier: LGPL-2.0-or-later 10 | */ 11 | 12 | #ifndef KUISERVERJOBTRACKER_P_H 13 | #define KUISERVERJOBTRACKER_P_H 14 | 15 | #include 16 | 17 | #include 18 | 19 | #include "jobviewserverinterface.h" 20 | 21 | class Q_DECL_HIDDEN KSharedUiServerProxy : public QObject 22 | { 23 | Q_OBJECT 24 | 25 | public: 26 | KSharedUiServerProxy(); 27 | ~KSharedUiServerProxy() override; 28 | 29 | org::kde::JobViewServer *uiserver(); 30 | 31 | Q_SIGNALS: 32 | void serverRegistered(); 33 | void serverUnregistered(); 34 | 35 | private: 36 | void uiserverOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner); 37 | 38 | std::unique_ptr m_uiserver; 39 | std::unique_ptr m_watcher; 40 | }; 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /src/kuiserverv2jobtracker.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2021 Kai Uwe Broulik 4 | 5 | SPDX-License-Identifier: LGPL-2.0-or-later 6 | */ 7 | 8 | #ifndef KUISERVERV2JOBTRACKER_H 9 | #define KUISERVERV2JOBTRACKER_H 10 | 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | class KJob; 17 | class KUiServerV2JobTrackerPrivate; 18 | 19 | /*! 20 | * \class KUiServerV2JobTracker 21 | * 22 | * \inmodule KJobWidgets 23 | * 24 | * \brief The interface to implement to track the progresses of a job. 25 | * 26 | * \since 5.81 27 | */ 28 | class KJOBWIDGETS_EXPORT KUiServerV2JobTracker : public KJobTrackerInterface 29 | { 30 | Q_OBJECT 31 | 32 | public: 33 | /*! 34 | * Creates a new KJobTrackerInterface 35 | * 36 | * \a parent the parent object 37 | */ 38 | explicit KUiServerV2JobTracker(QObject *parent = nullptr); 39 | 40 | ~KUiServerV2JobTracker() override; 41 | 42 | /*! 43 | * Register a new job in this tracker. 44 | * 45 | * \a job the job to register 46 | */ 47 | void registerJob(KJob *job) override; 48 | 49 | /*! 50 | * Unregister a job from this tracker. 51 | * 52 | * \a job the job to unregister 53 | */ 54 | void unregisterJob(KJob *job) override; 55 | 56 | protected Q_SLOTS: 57 | void finished(KJob *job) override; 58 | void suspended(KJob *job) override; 59 | void resumed(KJob *job) override; 60 | virtual void description(KJob *job, const QString &title, 61 | const QPair &field1, 62 | const QPair &field2) override; 63 | void infoMessage(KJob *job, const QString &message) override; 64 | void totalAmount(KJob *job, KJob::Unit unit, qulonglong amount) override; 65 | void processedAmount(KJob *job, KJob::Unit unit, qulonglong amount) override; 66 | void percent(KJob *job, unsigned long percent) override; 67 | void speed(KJob *job, unsigned long value) override; 68 | 69 | private: 70 | std::unique_ptr const d; 71 | }; 72 | 73 | #endif 74 | -------------------------------------------------------------------------------- /src/kuiserverv2jobtracker_p.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2021 Kai Uwe Broulik 4 | 5 | SPDX-License-Identifier: LGPL-2.0-or-later 6 | */ 7 | 8 | #ifndef KUISERVERV2JOBTRACKER_P_H 9 | #define KUISERVERV2JOBTRACKER_P_H 10 | 11 | #include 12 | 13 | #include 14 | 15 | #include "jobviewserverv2interface.h" 16 | 17 | class Q_DECL_HIDDEN KSharedUiServerV2Proxy : public QObject 18 | { 19 | Q_OBJECT 20 | 21 | public: 22 | KSharedUiServerV2Proxy(); 23 | ~KSharedUiServerV2Proxy() override; 24 | 25 | org::kde::JobViewServerV2 *uiserver(); 26 | 27 | Q_SIGNALS: 28 | void serverRegistered(); 29 | void serverUnregistered(); 30 | 31 | private: 32 | void uiserverOwnerChanged(const QString &serviceName, const QString &oldOwner, const QString &newOwner); 33 | 34 | std::unique_ptr m_uiserver; 35 | std::unique_ptr m_watcher; 36 | }; 37 | 38 | #endif 39 | -------------------------------------------------------------------------------- /src/kwidgetjobtracker.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2000 Matej Koss 4 | SPDX-FileCopyrightText: 2007 Kevin Ottens 5 | SPDX-FileCopyrightText: 2009 Shaun Reich 6 | 7 | SPDX-License-Identifier: LGPL-2.0-only 8 | */ 9 | 10 | #ifndef KWIDGETJOBTRACKER_H 11 | #define KWIDGETJOBTRACKER_H 12 | 13 | #include 14 | #include 15 | 16 | class KWidgetJobTrackerPrivate; 17 | 18 | /*! 19 | * \class KWidgetJobTracker 20 | * 21 | * \inmodule KJobWidgets 22 | * 23 | * \brief This class implements a job tracker with a widget suited for use as a 24 | * progress dialog. 25 | */ 26 | class KJOBWIDGETS_EXPORT KWidgetJobTracker : public KAbstractWidgetJobTracker 27 | { 28 | Q_OBJECT 29 | 30 | public: 31 | /*! 32 | * Creates a new KWidgetJobTracker 33 | * 34 | * \a parent the parent of this object and of the widget displaying the job progresses 35 | */ 36 | explicit KWidgetJobTracker(QWidget *parent = nullptr); 37 | 38 | ~KWidgetJobTracker() override; 39 | 40 | QWidget *widget(KJob *job) override; 41 | 42 | // KDE5: move this two virtual methods to be placed correctly (ereslibre) 43 | public Q_SLOTS: 44 | void registerJob(KJob *job) override; 45 | 46 | void unregisterJob(KJob *job) override; 47 | 48 | public: 49 | /*! 50 | */ 51 | bool keepOpen(KJob *job) const; 52 | 53 | protected Q_SLOTS: 54 | void infoMessage(KJob *job, const QString &message) override; 55 | void description(KJob *job, const QString &title, const QPair &field1, const QPair &field2) override; 56 | void totalAmount(KJob *job, KJob::Unit unit, qulonglong amount) override; 57 | void processedAmount(KJob *job, KJob::Unit unit, qulonglong amount) override; 58 | void percent(KJob *job, unsigned long percent) override; 59 | void speed(KJob *job, unsigned long value) override; 60 | void slotClean(KJob *job) override; 61 | void suspended(KJob *job) override; 62 | void resumed(KJob *job) override; 63 | 64 | // TODO: Misses canResume() 65 | 66 | private: 67 | Q_DECLARE_PRIVATE(KWidgetJobTracker) 68 | 69 | Q_PRIVATE_SLOT(d_func(), void _k_showProgressWidget()) 70 | }; 71 | 72 | #endif 73 | -------------------------------------------------------------------------------- /src/kwidgetjobtracker_p.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE project 3 | SPDX-FileCopyrightText: 2007 Rafael Fernández López 4 | SPDX-FileCopyrightText: 2007 Kevin Ottens 5 | SPDX-FileCopyrightText: 2009 Shaun Reich 6 | 7 | SPDX-License-Identifier: LGPL-2.0-only 8 | */ 9 | 10 | #ifndef KWIDGETJOBTRACKER_P_H 11 | #define KWIDGETJOBTRACKER_P_H 12 | 13 | #include "kabstractwidgetjobtracker_p.h" 14 | #include "kwidgetjobtracker.h" 15 | 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | 25 | class QPushButton; 26 | class KSqueezedTextLabel; 27 | class QLabel; 28 | class QProgressBar; 29 | 30 | class KWidgetJobTrackerPrivate : public KAbstractWidgetJobTrackerPrivate 31 | { 32 | Q_DECLARE_PUBLIC(KWidgetJobTracker) 33 | 34 | public: 35 | KWidgetJobTrackerPrivate(QWidget *parent, KWidgetJobTracker *qq) 36 | : KAbstractWidgetJobTrackerPrivate(qq) 37 | , parent(parent) 38 | , eventLoopLocker(nullptr) 39 | { 40 | } 41 | 42 | ~KWidgetJobTrackerPrivate() override 43 | { 44 | delete eventLoopLocker; 45 | } 46 | 47 | void setStopOnClose(KJob *job, bool stopOnClose) override; 48 | bool stopOnClose(KJob *job) const override; 49 | void setAutoDelete(KJob *job, bool autoDelete) override; 50 | bool autoDelete(KJob *job) const override; 51 | 52 | void _k_showProgressWidget(); 53 | 54 | class ProgressWidget; 55 | 56 | QWidget *parent; 57 | QEventLoopLocker *eventLoopLocker; 58 | QMap progressWidget; 59 | QQueue progressWidgetsToBeShown; 60 | }; 61 | 62 | class KWidgetJobTrackerPrivate::ProgressWidget : public QWidget 63 | { 64 | Q_OBJECT 65 | 66 | public: 67 | ProgressWidget(KJob *job, KWidgetJobTracker *object, QWidget *parent) 68 | : QWidget(parent) 69 | , tracker(object) 70 | , job(job) 71 | , totalSize(0) 72 | , totalFiles(0) 73 | , totalDirs(0) 74 | , totalItems(0) 75 | , processedSize(0) 76 | , processedDirs(0) 77 | , processedFiles(0) 78 | , processedItems(0) 79 | , totalSizeKnown(false) 80 | , stopOnClose(true) 81 | , jobRegistered(false) 82 | , cancelClose(nullptr) 83 | , openFile(nullptr) 84 | , openLocation(nullptr) 85 | , keepOpenCheck(nullptr) 86 | , pauseButton(nullptr) 87 | , sourceEdit(nullptr) 88 | , destEdit(nullptr) 89 | , progressLabel(nullptr) 90 | , destInvite(nullptr) 91 | , speedLabel(nullptr) 92 | , sizeLabel(nullptr) 93 | , resumeLabel(nullptr) 94 | , progressBar(nullptr) 95 | , suspendedProperty(false) 96 | , refCount(1) 97 | { 98 | if (!parent) { 99 | setWindowFlags(windowFlags() | Qt::Dialog); 100 | } 101 | 102 | init(); 103 | } 104 | 105 | ~ProgressWidget() override 106 | { 107 | delete tracker->d_func()->eventLoopLocker; 108 | tracker->d_func()->eventLoopLocker = nullptr; 109 | } 110 | 111 | KWidgetJobTracker *const tracker; 112 | KJob *const job; 113 | 114 | qulonglong totalSize; 115 | qulonglong totalFiles; 116 | qulonglong totalDirs; 117 | qulonglong totalItems; 118 | qulonglong processedSize; 119 | qulonglong processedDirs; 120 | qulonglong processedFiles; 121 | qulonglong processedItems; 122 | 123 | bool totalSizeKnown; 124 | bool stopOnClose; 125 | bool jobRegistered; 126 | QString caption; 127 | 128 | QPushButton *cancelClose; 129 | QPushButton *openFile; 130 | QPushButton *openLocation; 131 | QCheckBox *keepOpenCheck; 132 | QUrl location; 133 | QElapsedTimer startTime; 134 | QPushButton *pauseButton; 135 | KSqueezedTextLabel *sourceEdit; 136 | KSqueezedTextLabel *destEdit; 137 | QLabel *progressLabel; 138 | QLabel *sourceInvite; 139 | QLabel *destInvite; 140 | QLabel *speedLabel; 141 | QLabel *sizeLabel; 142 | QLabel *resumeLabel; 143 | QProgressBar *progressBar; 144 | QPushButton *arrowButton; 145 | Qt::ArrowType arrowState; 146 | 147 | bool suspendedProperty; 148 | 149 | int refCount; // will not close the dialog if a modal menu is shown 150 | 151 | void init(); 152 | void showTotals(); 153 | void setDestVisible(bool visible); 154 | void checkDestination(const QUrl &dest); 155 | void ref(); 156 | void deref(); 157 | void closeNow(); 158 | 159 | bool eventFilter(QObject *watched, QEvent *event) override; 160 | 161 | public Q_SLOTS: 162 | virtual void infoMessage(const QString &plain); 163 | virtual void description(const QString &title, const QPair &field1, const QPair &field2); 164 | virtual void totalAmount(KJob::Unit unit, qulonglong amount); 165 | virtual void processedAmount(KJob::Unit unit, qulonglong amount); 166 | virtual void percent(unsigned long percent); 167 | virtual void speed(unsigned long value); 168 | virtual void slotClean(); 169 | virtual void suspended(); 170 | virtual void resumed(); 171 | 172 | // TODO: Misses canResume() 173 | 174 | protected: 175 | void closeEvent(QCloseEvent *event) override; 176 | 177 | private Q_SLOTS: 178 | void keepOpenToggled(bool); 179 | void openFileClicked(); 180 | void openLocationClicked(); 181 | void pauseResumeClicked(); 182 | void cancelClicked(); 183 | void arrowClicked(); 184 | }; 185 | 186 | void KWidgetJobTrackerPrivate::setStopOnClose(KJob *job, bool stopOnClose) 187 | { 188 | if (!progressWidget.contains(job)) { 189 | return; 190 | } 191 | progressWidget[job]->stopOnClose = stopOnClose; 192 | } 193 | 194 | bool KWidgetJobTrackerPrivate::stopOnClose(KJob *job) const 195 | { 196 | if (!progressWidget.contains(job)) { 197 | qWarning() << "no widget found for job" << job; 198 | return true; 199 | } 200 | return progressWidget[job]->stopOnClose; 201 | } 202 | 203 | void KWidgetJobTrackerPrivate::setAutoDelete(KJob *job, bool autoDelete) 204 | { 205 | if (!progressWidget.contains(job)) { 206 | return; 207 | } 208 | progressWidget[job]->setAttribute(Qt::WA_DeleteOnClose, autoDelete); 209 | } 210 | 211 | bool KWidgetJobTrackerPrivate::autoDelete(KJob *job) const 212 | { 213 | if (!progressWidget.contains(job)) { 214 | qWarning() << "no widget found for job" << job; 215 | return true; 216 | } 217 | return progressWidget[job]->testAttribute(Qt::WA_DeleteOnClose); 218 | } 219 | 220 | #endif // KWIDGETJOBTRACKER_P_H 221 | -------------------------------------------------------------------------------- /src/org.kde.JobView.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /src/org.kde.JobViewServer.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /src/org.kde.JobViewServerV2.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /src/org.kde.JobViewV2.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | -------------------------------------------------------------------------------- /src/org.kde.JobViewV3.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 5 | 6 | 7 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # tests need dbus due to KUiServerJobTracker 2 | if (HAVE_QTDBUS) 3 | include(ECMMarkAsTest) 4 | 5 | find_package(Qt6 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Test) 6 | 7 | macro(kjobwidgets_executable_tests) 8 | foreach(_testname ${ARGN}) 9 | add_executable(${_testname} ${_testname}.cpp) 10 | target_link_libraries(${_testname} Qt6::Test KF6::JobWidgets KF6::WidgetsAddons) 11 | ecm_mark_as_test(${_testname}) 12 | endforeach(_testname) 13 | endmacro() 14 | 15 | kjobwidgets_executable_tests(kjobtrackerstest) 16 | 17 | set(kjobcreator_SRCS kjobcreator.cpp) 18 | qt_wrap_ui(kjobcreator_SRCS kjobcreator.ui) 19 | add_executable(kjobcreator ${kjobcreator_SRCS}) 20 | target_link_libraries(kjobcreator Qt6::Widgets KF6::JobWidgets) 21 | ecm_mark_as_test(kjobcreator) 22 | endif() 23 | -------------------------------------------------------------------------------- /tests/kjobcreator.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2021 Kai Uwe Broulik 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | #ifndef KJOBCREATOR_H 8 | #define KJOBCREATOR_H 9 | 10 | #include 11 | #include 12 | #include 13 | 14 | #include 15 | 16 | #include "ui_kjobcreator.h" 17 | 18 | class KWidgetJobTracker; 19 | class KUiServerJobTracker; 20 | class KUiServerV2JobTracker; 21 | 22 | class TestJob : public KJob 23 | { 24 | Q_OBJECT 25 | 26 | public: 27 | TestJob(QObject *parent = nullptr); 28 | 29 | void start() override; 30 | bool started() const; 31 | 32 | void finish(); 33 | 34 | void setPercentage(int percent); 35 | 36 | void setProcessedMiB(double bytes); 37 | void setTotalMiB(double bytes); 38 | void setProcessedFiles(int files); 39 | void setTotalFiles(int files); 40 | void setProcessedDirectories(int directories); 41 | void setTotalDirectories(int directories); 42 | void setProcessedItems(int items); 43 | void setTotalItems(int items); 44 | 45 | void setSpeedMiB(double speed); 46 | 47 | void setErrorState(int errorCode, const QString &errorText); 48 | 49 | void setKillable(bool killable); 50 | void setSuspendable(bool suspendable); 51 | 52 | protected: 53 | bool doKill() override; 54 | bool doSuspend() override; 55 | bool doResume() override; 56 | 57 | private: 58 | bool m_started = false; 59 | }; 60 | 61 | class TestDialog : public QDialog 62 | { 63 | Q_OBJECT 64 | 65 | public: 66 | TestDialog(QWidget *parent = nullptr); 67 | ~TestDialog() override; 68 | 69 | protected: 70 | void closeEvent(QCloseEvent *event) override; 71 | 72 | private: 73 | void updateUiState(); 74 | void updateJob(); 75 | 76 | Ui_KJobCreator m_ui; 77 | 78 | QPointer m_job; 79 | 80 | QScopedPointer m_widgetTracker; 81 | bool m_registeredWithWidgetTracker = false; 82 | QScopedPointer m_uiServerTracker; 83 | bool m_registeredWithUiServerTracker = false; 84 | QScopedPointer m_uiServerV2Tracker; 85 | bool m_registeredWithUiServerV2Tracker = false; 86 | }; 87 | 88 | #endif // KJOBCREATOR_H 89 | -------------------------------------------------------------------------------- /tests/kjobtrackerstest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE libraries 3 | SPDX-FileCopyrightText: 2007 Kevin Ottens 4 | 5 | SPDX-License-Identifier: LGPL-2.0-only 6 | */ 7 | 8 | #include "kjobtrackerstest.h" 9 | #include "kdialogjobuidelegate.h" 10 | 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | #include 17 | #include 18 | #include 19 | #include 20 | 21 | KTestJob::KTestJob(int numberOfDirs, uint durationMs) 22 | : KJob() 23 | , m_numberOfDirs(numberOfDirs) 24 | , m_currentSpeed(1000) 25 | , m_state(Stopped) 26 | , m_durationMs(durationMs) 27 | { 28 | setCapabilities(KJob::Killable | KJob::Suspendable); 29 | } 30 | 31 | KTestJob::~KTestJob() 32 | { 33 | } 34 | 35 | void KTestJob::start() 36 | { 37 | connect(&m_timer, &QTimer::timeout, this, &KTestJob::nextStep); 38 | m_state = StatingDirs; 39 | m_timer.start(m_durationMs); 40 | Q_EMIT description(this, 41 | QStringLiteral("Copying"), 42 | qMakePair(QStringLiteral("Source"), QStringLiteral("file:/src")), 43 | qMakePair(QStringLiteral("Destination"), QStringLiteral("file:/dest"))); 44 | } 45 | 46 | void KTestJob::nextStep() 47 | { 48 | switch (m_state) { 49 | case StatingDirs: 50 | Q_EMIT infoMessage(this, QStringLiteral("Initial listing")); 51 | stateNextDir(); 52 | break; 53 | case CreatingDirs: 54 | Q_EMIT infoMessage(this, QStringLiteral("Folder creation")); 55 | createNextDir(); 56 | break; 57 | case CopyingFiles: 58 | Q_EMIT infoMessage(this, QStringLiteral("Actual file copying")); 59 | copyNextFile(); 60 | break; 61 | case Stopped: 62 | qDebug() << "Do nothing, we stopped"; 63 | } 64 | } 65 | 66 | void KTestJob::stateNextDir() 67 | { 68 | if (totalAmount(KJob::Directories) == m_numberOfDirs) { 69 | m_state = CreatingDirs; 70 | return; 71 | } 72 | 73 | QString directory_name = QStringLiteral("dir") + QString::number(totalAmount(KJob::Directories)); 74 | 75 | qDebug() << "Stating " << directory_name; 76 | setTotalAmount(KJob::Directories, totalAmount(KJob::Directories) + 1); 77 | setTotalAmount(KJob::Files, totalAmount(KJob::Directories) * 10); 78 | setTotalAmount(KJob::Bytes, totalAmount(KJob::Files) * 1000); 79 | 80 | Q_EMIT warning(this, directory_name); 81 | Q_EMIT description(this, QStringLiteral("Stating"), qMakePair(QStringLiteral("Stating"), QString(QStringLiteral("file:/src/") + directory_name))); 82 | } 83 | 84 | void KTestJob::createNextDir() 85 | { 86 | if (processedAmount(KJob::Directories) == totalAmount(KJob::Directories)) { 87 | m_state = CopyingFiles; 88 | return; 89 | } 90 | 91 | QString directory_name = QStringLiteral("dir") + QString::number(processedAmount(KJob::Directories)); 92 | 93 | qDebug() << "Creating " << directory_name; 94 | setProcessedAmount(KJob::Directories, processedAmount(KJob::Directories) + 1); 95 | 96 | Q_EMIT description(this, QStringLiteral("Creating Dir"), qMakePair(QStringLiteral("Creating"), QString(QStringLiteral("file:/dest/") + directory_name))); 97 | } 98 | 99 | void KTestJob::copyNextFile() 100 | { 101 | if (processedAmount(KJob::Files) == totalAmount(KJob::Files)) { 102 | m_state = Stopped; 103 | m_timer.stop(); 104 | emitResult(); 105 | return; 106 | } 107 | 108 | QString file_name = 109 | QLatin1String("dir%1/file%2").arg(QString::number(processedAmount(KJob::Files) / 10), QString::number(processedAmount(KJob::Files) % 10)); 110 | 111 | qDebug() << "Copying " << file_name; 112 | setProcessedAmount(KJob::Files, processedAmount(KJob::Files) + 1); 113 | setProcessedAmount(KJob::Bytes, processedAmount(KJob::Bytes) + 1000); 114 | 115 | Q_EMIT description(this, 116 | QStringLiteral("Copying"), 117 | qMakePair(QStringLiteral("Source"), QString(QStringLiteral("file:/src/") + file_name)), 118 | qMakePair(QStringLiteral("Destination"), QString(QStringLiteral("file:/dest/") + file_name))); 119 | 120 | emitSpeed(m_currentSpeed); 121 | } 122 | 123 | bool KTestJob::doSuspend() 124 | { 125 | m_timer.stop(); 126 | return true; 127 | } 128 | 129 | bool KTestJob::doResume() 130 | { 131 | m_timer.start(50); 132 | return true; 133 | } 134 | 135 | bool KTestJob::doKill() 136 | { 137 | m_timer.stop(); 138 | m_state = Stopped; 139 | return true; 140 | } 141 | 142 | int main(int argc, char **argv) 143 | { 144 | QApplication::setApplicationName(QStringLiteral("kjobtrackerstest")); 145 | 146 | QApplication app(argc, argv); 147 | 148 | KTestJob *testJob = new KTestJob(10 /* 100000 bytes to process */); 149 | 150 | KWidgetJobTracker *tracker1 = new KWidgetJobTracker(); 151 | tracker1->registerJob(testJob); 152 | 153 | QMainWindow *main = new QMainWindow; 154 | main->setWindowTitle(QStringLiteral("Mainwindow with statusbar-job-tracker")); 155 | main->show(); 156 | 157 | QStatusBar *statusBar = new QStatusBar(main); 158 | KStatusBarJobTracker *tracker2 = new KStatusBarJobTracker(main, true); 159 | tracker2->registerJob(testJob); 160 | tracker2->setStatusBarMode(KStatusBarJobTracker::ProgressOnly); 161 | statusBar->addWidget(tracker2->widget(testJob)); 162 | 163 | main->setStatusBar(statusBar); 164 | 165 | KUiServerJobTracker *tracker3 = new KUiServerJobTracker(main); 166 | tracker3->registerJob(testJob); 167 | 168 | KJobWidgets::setWindow(testJob, main); 169 | testJob->setUiDelegate(new KDialogJobUiDelegate()); 170 | 171 | testJob->start(); 172 | 173 | tracker1->widget(testJob)->show(); 174 | tracker2->widget(testJob)->show(); 175 | 176 | return app.exec(); 177 | } 178 | 179 | #include "moc_kjobtrackerstest.cpp" 180 | -------------------------------------------------------------------------------- /tests/kjobtrackerstest.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of the KDE libraries 3 | SPDX-FileCopyrightText: 2007 Kevin Ottens 4 | 5 | SPDX-License-Identifier: LGPL-2.0-only 6 | */ 7 | 8 | #ifndef KJOBTRACKERSTEST_H 9 | #define KJOBTRACKERSTEST_H 10 | 11 | #include 12 | 13 | #include 14 | 15 | class KTestJob : public KJob 16 | { 17 | Q_OBJECT 18 | 19 | public: 20 | enum State { 21 | StatingDirs, 22 | CreatingDirs, 23 | CopyingFiles, 24 | Stopped, 25 | }; 26 | 27 | // 10 files per directory 28 | // 1000 bytes per files 29 | KTestJob(int numberOfDirs = 5, uint durationMs = 50); 30 | ~KTestJob() override; 31 | 32 | void start() override; 33 | 34 | private Q_SLOTS: 35 | void nextStep(); 36 | 37 | protected: 38 | void stateNextDir(); 39 | void createNextDir(); 40 | void copyNextFile(); 41 | 42 | bool doSuspend() override; 43 | bool doResume() override; 44 | bool doKill() override; 45 | 46 | private: 47 | qulonglong m_numberOfDirs; 48 | qulonglong m_currentSpeed; 49 | State m_state; 50 | uint m_durationMs; 51 | QTimer m_timer; 52 | }; 53 | 54 | #endif 55 | --------------------------------------------------------------------------------