├── kirigami-plasmadesktop-integration ├── kirigamiplasmaintegration.json ├── autotests │ ├── TextFieldContextMenuTest.qml │ ├── animationspeedmodifiertest.qml │ ├── CMakeLists.txt │ ├── common.h │ ├── TextFieldContextMenuTest.cpp │ └── animationspeedmodifiertest.cpp ├── plasmadesktopunits.h ├── kirigamiplasmafactory.cpp ├── kirigamiplasmafactory.h ├── CMakeLists.txt ├── plasmadesktoptheme.h ├── animationspeedprovider.h ├── plasmadesktopunits.cpp └── animationspeedprovider.cpp ├── Messages.sh ├── .git-blame-ignore-revs ├── KF6QQC2DesktopStyleConfig.cmake.in ├── org.kde.desktop ├── private │ ├── FocusRect.qml │ ├── GlobalSonnetSettings.qml │ ├── MobileTextActionsToolBar.qml │ ├── DefaultToolBarBackground.qml │ ├── DefaultSliderHandle.qml │ ├── CheckIndicator.qml │ ├── MobileCursor.qml │ ├── DefaultListItemBackground.qml │ ├── MobileTextActionsToolBarImpl.qml │ └── SwitchIndicator.qml ├── Container.qml ├── Pane.qml ├── Label.qml ├── Dial.qml ├── Frame.qml ├── ToolSeparator.qml ├── MenuBar.qml ├── Control.qml ├── ToolBar.qml ├── MenuSeparator.qml ├── Page.qml ├── GroupBox.qml ├── ProgressBar.qml ├── Drawer.qml ├── SplitView.qml ├── Popup.qml ├── PageIndicator.qml ├── MenuBarItem.qml ├── VerticalHeaderView.qml ├── TabBar.qml ├── Button.qml ├── HorizontalHeaderView.qml ├── Slider.qml ├── Switch.qml └── StackView.qml ├── tests ├── scrollView.qml ├── LineEditWithClearButton.qml ├── SpinBox.qml ├── testComboBox.qml ├── tabbar.qml ├── CheckBox.qml ├── HeaderViews.qml ├── ToolButton.qml └── baselineOffset.qml ├── .kde-ci.yml ├── metainfo.yaml ├── .gitlab-ci.yml ├── .gitignore ├── LICENSES ├── LicenseRef-Qt-Commercial.txt ├── LicenseRef-KFQF-Accepted-GPL.txt └── LicenseRef-KDE-Accepted-LGPL.txt ├── plugin ├── CMakeLists.txt ├── itembranchindicators.h └── kquickpadding_p.h ├── Mainpage.dox └── poqm ├── lt └── qqc2desktopstyle_qt.po ├── ast └── qqc2desktopstyle_qt.po ├── sa └── qqc2desktopstyle_qt.po ├── ko └── qqc2desktopstyle_qt.po ├── hi └── qqc2desktopstyle_qt.po ├── zh_TW └── qqc2desktopstyle_qt.po ├── ka └── qqc2desktopstyle_qt.po ├── zh_CN └── qqc2desktopstyle_qt.po ├── ia └── qqc2desktopstyle_qt.po ├── tr └── qqc2desktopstyle_qt.po ├── en_GB └── qqc2desktopstyle_qt.po ├── is └── qqc2desktopstyle_qt.po ├── it └── qqc2desktopstyle_qt.po ├── nl └── qqc2desktopstyle_qt.po ├── cs └── qqc2desktopstyle_qt.po ├── fi └── qqc2desktopstyle_qt.po ├── gl └── qqc2desktopstyle_qt.po ├── ro └── qqc2desktopstyle_qt.po ├── ar └── qqc2desktopstyle_qt.po ├── hu └── qqc2desktopstyle_qt.po ├── he └── qqc2desktopstyle_qt.po ├── sv └── qqc2desktopstyle_qt.po ├── ta └── qqc2desktopstyle_qt.po ├── pt_BR └── qqc2desktopstyle_qt.po ├── pl └── qqc2desktopstyle_qt.po ├── fr └── qqc2desktopstyle_qt.po ├── lv └── qqc2desktopstyle_qt.po ├── de └── qqc2desktopstyle_qt.po ├── uk └── qqc2desktopstyle_qt.po ├── sl └── qqc2desktopstyle_qt.po ├── nb └── qqc2desktopstyle_qt.po ├── sk └── qqc2desktopstyle_qt.po ├── nn └── qqc2desktopstyle_qt.po ├── ru └── qqc2desktopstyle_qt.po ├── ca └── qqc2desktopstyle_qt.po ├── es └── qqc2desktopstyle_qt.po ├── ca@valencia └── qqc2desktopstyle_qt.po ├── eu └── qqc2desktopstyle_qt.po └── eo └── qqc2desktopstyle_qt.po /kirigami-plasmadesktop-integration/kirigamiplasmaintegration.json: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /Messages.sh: -------------------------------------------------------------------------------- 1 | #! /usr/bin/env bash 2 | $EXTRACT_TR_STRINGS `find . -name \*.qml -o -name \*.cpp` -o $podir/qqc2desktopstyle_qt.pot 3 | -------------------------------------------------------------------------------- /.git-blame-ignore-revs: -------------------------------------------------------------------------------- 1 | #clang-format 2 | ab87ec5bc9be0aa5ff7e0e502be8ab8cca501c33 3 | a9f1f13758e0b6bdec07cf33e55989a996c8c73b 4 | #clang-tidy 5 | 2db0ba3c5e236bc68cadba96306787db6bf0eadb 6 | -------------------------------------------------------------------------------- /KF6QQC2DesktopStyleConfig.cmake.in: -------------------------------------------------------------------------------- 1 | @PACKAGE_INIT@ 2 | 3 | # Any changes in this ".cmake" file will be overwritten by CMake, the source is the ".cmake.in" file. 4 | 5 | #include("${CMAKE_CURRENT_LIST_DIR}/KF6QQC2DesktopStyleTargets.cmake") 6 | 7 | set(QQC2DesktopStyle_INSTALL_PREFIX "@PACKAGE_CMAKE_INSTALL_PREFIX@") 8 | 9 | 10 | -------------------------------------------------------------------------------- /org.kde.desktop/private/FocusRect.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2018 Kai Uwe Broulik 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import org.kde.qqc2desktopstyle.private as StylePrivate 11 | 12 | StylePrivate.StyleItem { 13 | elementType: "focusrect" 14 | } 15 | -------------------------------------------------------------------------------- /tests/scrollView.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2018 Marco Martin 3 | 4 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 5 | */ 6 | 7 | import QtQuick 8 | import QtQuick.Controls 9 | 10 | ScrollView { 11 | height: 100 12 | width: 300 13 | 14 | ListView { 15 | model: 100 16 | delegate: Text { 17 | text: modelData 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /.kde-ci.yml: -------------------------------------------------------------------------------- 1 | Dependencies: 2 | - 'on': ['Linux', 'FreeBSD', 'Windows', 'macOS'] 3 | 'require': 4 | 'frameworks/extra-cmake-modules': '@same' 5 | 'frameworks/kirigami': '@same' 6 | 'frameworks/kiconthemes': '@same' 7 | 'frameworks/sonnet': '@same' 8 | 'frameworks/kcolorscheme': '@same' 9 | 10 | Options: 11 | test-before-installing: True 12 | require-passing-tests-on: ['Linux', 'FreeBSD', 'Windows'] 13 | run-qmllint: true 14 | -------------------------------------------------------------------------------- /metainfo.yaml: -------------------------------------------------------------------------------- 1 | fancyname: QQC2-Desktop-Style 2 | description: QtQuickControls 2 style that integrates with the desktop 3 | tier: 3 4 | type: functional 5 | platforms: 6 | - name: Linux 7 | - name: FreeBSD 8 | - name: Windows 9 | - name: macOS 10 | public_lib: true 11 | deprecated: false 12 | release: true 13 | cmakename: KF6QQC2DesktopStyle 14 | irc: plasma 15 | mailinglist: plasma-devel 16 | group: Frameworks 17 | subgroup: Tier 3 18 | -------------------------------------------------------------------------------- /.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/freebsd-qt6.yml 10 | - /gitlab-templates/windows-qt6.yml 11 | - /gitlab-templates/xml-lint.yml 12 | - /gitlab-templates/yaml-lint.yml 13 | -------------------------------------------------------------------------------- /.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 | /.vscode/ 21 | CMakeLists.txt.user* 22 | *.unc-backup* 23 | .cmake/ 24 | /.clang-format 25 | /compile_commands.json 26 | .clangd 27 | .idea 28 | /cmake-build* 29 | .cache 30 | .qmlls.ini 31 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/autotests/TextFieldContextMenuTest.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2024 Fushan Wen 3 | 4 | SPDX-License-Identifier: MIT 5 | */ 6 | 7 | import QtQuick 8 | import org.kde.kirigami as Kirigami 9 | 10 | Window { 11 | id: root 12 | width: 500 13 | height: 300 14 | visible: true 15 | Kirigami.SelectableLabel { 16 | anchors.fill: parent 17 | text: "Hello World" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /LICENSES/LicenseRef-Qt-Commercial.txt: -------------------------------------------------------------------------------- 1 | Commercial License Usage 2 | Licensees holding valid commercial Qt licenses may use this file in 3 | accordance with the commercial license agreement provided with the 4 | Software or, alternatively, in accordance with the terms contained in 5 | a written agreement between you and The Qt Company. For licensing terms 6 | and conditions see https://www.qt.io/terms-conditions. For further 7 | information use the contact form at https://www.qt.io/contact-us. 8 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/autotests/animationspeedmodifiertest.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Fushan Wen 3 | 4 | SPDX-License-Identifier: LGPL-2.1-or-later 5 | */ 6 | 7 | import QtQuick 8 | import org.kde.kirigami 2 as Kirigami 9 | 10 | // WINERROR 1459: This Operation Requires Interactive Window Station 11 | Window { 12 | width: 100 13 | height: 100 14 | visible: true 15 | readonly property real longDuration: Kirigami.Units.longDuration 16 | } 17 | -------------------------------------------------------------------------------- /tests/LineEditWithClearButton.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2019 Montel Laurent 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | import org.kde.kirigami as Kirigami 8 | 9 | Kirigami.ActionTextField { 10 | id: root 11 | 12 | focus: true 13 | rightActions: Kirigami.Action { 14 | iconName: "edit-clear" 15 | visible: root.text !== "" 16 | onTriggered: { 17 | root.text = "" 18 | root.accepted() 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /plugin/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | ecm_add_qml_module(qqc2desktopstyleplugin URI org.kde.qqc2desktopstyle.private GENERATE_PLUGIN_SOURCE DEPENDENCIES QtQuick) 2 | 3 | target_sources(qqc2desktopstyleplugin PRIVATE 4 | kquickstyleitem.cpp 5 | itembranchindicators.cpp 6 | ) 7 | 8 | target_link_libraries(qqc2desktopstyleplugin PRIVATE 9 | Qt6::Core 10 | Qt6::Qml 11 | Qt6::Quick 12 | Qt6::Gui 13 | Qt6::Widgets 14 | KF6::ConfigCore 15 | KF6::KirigamiPlatform 16 | ) 17 | 18 | ecm_finalize_qml_module(qqc2desktopstyleplugin) 19 | -------------------------------------------------------------------------------- /LICENSES/LicenseRef-KFQF-Accepted-GPL.txt: -------------------------------------------------------------------------------- 1 | Alternatively, this file may be used under the terms of the GNU 2 | General Public License version 2.0 or (at your option) the GNU General 3 | Public license version 3 or any later version approved by the KDE Free 4 | Qt Foundation. The licenses are as published by the Free Software 5 | Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 6 | included in the packaging of this file. Please review the following 7 | information to ensure the GNU General Public License requirements will 8 | be met: https://www.gnu.org/licenses/gpl-2.0.html and 9 | https://www.gnu.org/licenses/gpl-3.0.html. 10 | -------------------------------------------------------------------------------- /org.kde.desktop/Container.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | 12 | T.Container { 13 | id: control 14 | 15 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 16 | contentWidth + leftPadding + rightPadding) 17 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 18 | contentHeight + topPadding + bottomPadding) 19 | } 20 | -------------------------------------------------------------------------------- /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 | -------------------------------------------------------------------------------- /tests/SpinBox.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2021 Méven Car 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | import QtQuick 8 | import QtQuick.Layouts 9 | import QtQuick.Controls 10 | 11 | ApplicationWindow { 12 | visible: true 13 | width: 800 14 | height: 600 15 | 16 | GridLayout { 17 | anchors.fill: parent 18 | anchors.margins: 10 19 | flow: GridLayout.TopToBottom 20 | 21 | SpinBox { 22 | id: spinbox 23 | 24 | width: 100 25 | from: 1 26 | to: 100 27 | value: 50 28 | onValueModified: { 29 | console.log(value) 30 | } 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /org.kde.desktop/Pane.qml: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: 2021 Carl Schwan 2 | // SPDX-License-Identifier: LGPL-2.0-or-later 3 | 4 | import QtQuick 5 | import QtQuick.Templates as T 6 | import org.kde.kirigami as Kirigami 7 | 8 | T.Pane { 9 | id: control 10 | 11 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 12 | contentWidth + leftPadding + rightPadding) 13 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 14 | contentHeight + topPadding + bottomPadding) 15 | 16 | padding: Kirigami.Units.largeSpacing 17 | 18 | background: Rectangle { 19 | color: Kirigami.Theme.backgroundColor 20 | } 21 | } 22 | 23 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/plasmadesktopunits.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2021 Jonah Brüchert 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | #ifndef KIRIGAMIPLASMADESKTOPUNITS_H 8 | #define KIRIGAMIPLASMADESKTOPUNITS_H 9 | 10 | #include 11 | #include 12 | 13 | #include 14 | 15 | class AnimationSpeedProvider; 16 | 17 | class PlasmaDesktopUnits : public Kirigami::Platform::Units 18 | { 19 | Q_OBJECT 20 | 21 | public: 22 | explicit PlasmaDesktopUnits(QObject *parent = nullptr); 23 | 24 | void updateAnimationSpeed(); 25 | 26 | private: 27 | std::unique_ptr m_animationSpeedProvider; 28 | QPropertyNotifier m_notifier; 29 | }; 30 | 31 | #endif 32 | -------------------------------------------------------------------------------- /org.kde.desktop/private/GlobalSonnetSettings.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 ivan tkachenko 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | pragma Singleton 8 | 9 | import QtQml.Models 10 | import org.kde.sonnet as Sonnet 11 | 12 | /* 13 | * Global singleton of Sonnet Settings. It is loaded asynchronously when a first 14 | * non-readonly TextField or TextArea is instantiated. 15 | */ 16 | Instantiator { 17 | // type-safe nullable reference 18 | readonly property Sonnet.Settings instance: object as Sonnet.Settings 19 | 20 | // This property can be used as a default binding for Kirigami.SpellCheck.enabled flag. 21 | readonly property bool checkerEnabledByDefault: instance?.checkerEnabledByDefault ?? false 22 | 23 | active: true 24 | asynchronous: true 25 | 26 | Sonnet.Settings {} 27 | } 28 | -------------------------------------------------------------------------------- /org.kde.desktop/Label.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Window 11 | import QtQuick.Templates as T 12 | import org.kde.kirigami as Kirigami 13 | 14 | T.Label { 15 | id: control 16 | 17 | // Work around Qt bug where left aligned text is not right aligned 18 | // in RTL mode unless horizontalAlignment is explicitly set. 19 | // https://bugreports.qt.io/browse/QTBUG-95873 20 | horizontalAlignment: Text.AlignLeft 21 | 22 | HoverHandler { 23 | cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : undefined 24 | } 25 | 26 | color: Kirigami.Theme.textColor 27 | linkColor: Kirigami.Theme.linkColor 28 | font: Kirigami.Theme.defaultFont 29 | } 30 | -------------------------------------------------------------------------------- /org.kde.desktop/private/MobileTextActionsToolBar.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Fushan Wen 3 | 4 | SPDX-License-Identifier: LGPL-2.1-or-later 5 | */ 6 | 7 | pragma Singleton 8 | pragma ComponentBehavior: Bound 9 | 10 | import QtQuick 11 | import org.kde.kirigami as Kirigami 12 | 13 | Loader { 14 | property /*TextInput | TextEdit*/ Item controlRoot 15 | property bool shouldBeVisible: false 16 | 17 | active: controlRoot !== null 18 | && shouldBeVisible 19 | && Kirigami.Settings.tabletMode 20 | && (controlRoot.selectedText.length > 0 || controlRoot.canPaste) 21 | 22 | Component.onCompleted: { 23 | // See https://bugreports.qt.io/browse/QTBUG-125071 24 | setSource(Qt.resolvedUrl("MobileTextActionsToolBarImpl.qml"), { 25 | controlRoot: Qt.binding(() => controlRoot), 26 | }); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /org.kde.desktop/Dial.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.qqc2desktopstyle.private as StylePrivate 12 | 13 | T.Dial { 14 | id: controlRoot 15 | 16 | implicitWidth: 128 17 | implicitHeight: 128 18 | 19 | background: StylePrivate.StyleItem { 20 | control: controlRoot 21 | visible: true 22 | elementType: "dial" 23 | horizontal: false 24 | 25 | maximum: controlRoot.to * 100 26 | minimum: controlRoot.from * 100 27 | step: controlRoot.stepSize * 100 28 | value: controlRoot.value * 100 29 | 30 | hasFocus: controlRoot.activeFocus 31 | hover: controlRoot.hovered 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/kirigamiplasmafactory.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | #include "kirigamiplasmafactory.h" 8 | 9 | #include "plasmadesktoptheme.h" 10 | #include "plasmadesktopunits.h" 11 | 12 | KirigamiPlasmaFactory::KirigamiPlasmaFactory(QObject *parent) 13 | : Kirigami::Platform::PlatformPluginFactory(parent) 14 | { 15 | } 16 | 17 | KirigamiPlasmaFactory::~KirigamiPlasmaFactory() = default; 18 | 19 | Kirigami::Platform::PlatformTheme *KirigamiPlasmaFactory::createPlatformTheme(QObject *parent) 20 | { 21 | Q_ASSERT(parent); 22 | return new PlasmaDesktopTheme(parent); 23 | } 24 | 25 | Kirigami::Platform::Units *KirigamiPlasmaFactory::createUnits(QObject *parent) 26 | { 27 | Q_ASSERT(parent); 28 | return new PlasmaDesktopUnits(parent); 29 | } 30 | 31 | #include "moc_kirigamiplasmafactory.cpp" 32 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/kirigamiplasmafactory.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | #ifndef KIRIGAMIPLASMAFACTORY_H 8 | #define KIRIGAMIPLASMAFACTORY_H 9 | 10 | #include 11 | 12 | #include 13 | 14 | class KirigamiPlasmaFactory : public Kirigami::Platform::PlatformPluginFactory 15 | { 16 | Q_OBJECT 17 | 18 | Q_PLUGIN_METADATA(IID PlatformPluginFactory_iid FILE "kirigamiplasmaintegration.json") 19 | 20 | Q_INTERFACES(Kirigami::Platform::PlatformPluginFactory) 21 | 22 | public: 23 | explicit KirigamiPlasmaFactory(QObject *parent = nullptr); 24 | ~KirigamiPlasmaFactory() override; 25 | 26 | Kirigami::Platform::PlatformTheme *createPlatformTheme(QObject *parent) override; 27 | Kirigami::Platform::Units *createUnits(QObject *parent) override; 28 | }; 29 | 30 | #endif // KIRIGAMIPLASMAFACTORY_H 31 | -------------------------------------------------------------------------------- /org.kde.desktop/Frame.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | 13 | T.Frame { 14 | id: control 15 | 16 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 17 | contentWidth + leftPadding + rightPadding) 18 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 19 | contentHeight + topPadding + bottomPadding) 20 | 21 | padding: 6 22 | 23 | background: Rectangle { 24 | color: "transparent" 25 | border.color: Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.backgroundColor, Kirigami.Theme.textColor, Kirigami.Theme.frameContrast) 26 | radius: Kirigami.Units.cornerRadius 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /org.kde.desktop/ToolSeparator.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 Noah Davis 3 | 4 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 5 | */ 6 | 7 | 8 | import QtQuick 9 | import QtQuick.Templates as T 10 | import org.kde.kirigami as Kirigami 11 | 12 | T.ToolSeparator { 13 | id: controlRoot 14 | 15 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 16 | implicitContentWidth + leftPadding + rightPadding) 17 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 18 | implicitContentHeight + topPadding + bottomPadding) 19 | 20 | contentItem: Kirigami.Separator { 21 | // implicitHeight is the same as ToolBar implicitHeight minus ToolBar padding if not horizontal 22 | implicitWidth: !controlRoot.horizontal ? 1 : 40 - (Kirigami.Units.smallSpacing * 2) 23 | implicitHeight: controlRoot.horizontal ? 1 : 40 - (Kirigami.Units.smallSpacing * 2) 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /org.kde.desktop/MenuBar.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2021 Carson Black 3 | 4 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 5 | */ 6 | 7 | 8 | import QtQuick 9 | import QtQuick.Templates as T 10 | import org.kde.kirigami as Kirigami 11 | 12 | T.MenuBar { 13 | id: controlRoot 14 | 15 | Kirigami.Theme.colorSet: Kirigami.Theme.Header 16 | Kirigami.Theme.inherit: false 17 | 18 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 19 | contentWidth + leftPadding + rightPadding) 20 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 21 | contentHeight + topPadding + bottomPadding) 22 | 23 | delegate: MenuBarItem {} 24 | 25 | contentItem: Row { 26 | spacing: controlRoot.spacing 27 | Repeater { 28 | model: controlRoot.contentModel 29 | } 30 | } 31 | 32 | background: Rectangle { 33 | color: Kirigami.Theme.backgroundColor 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/autotests/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2023 Fushan Wen 2 | # SPDX-License-Identifier: BSD-3-Clause 3 | 4 | if (NOT BUILD_TESTING) 5 | return() 6 | endif() 7 | 8 | ecm_add_test( 9 | animationspeedmodifiertest.cpp 10 | LINK_LIBRARIES Qt::Test Qt::Qml Qt::QuickControls2 11 | ) 12 | set_tests_properties(animationspeedmodifiertest PROPERTIES ENVIRONMENT "CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR};CMAKE_SHARED_LIBRARY_SUFFIX=${CMAKE_SHARED_LIBRARY_SUFFIX}") 13 | 14 | if (WIN32) 15 | target_link_libraries(animationspeedmodifiertest user32) 16 | else() 17 | target_link_libraries(animationspeedmodifiertest KF6::ConfigCore) 18 | endif() 19 | 20 | if (WIN32) 21 | return() # Doesn't work in the Windows CI 22 | endif() 23 | 24 | ecm_add_test( 25 | TextFieldContextMenuTest.cpp 26 | LINK_LIBRARIES Qt::Test Qt::Qml Qt::QuickControls2 27 | ) 28 | set_tests_properties(TextFieldContextMenuTest PROPERTIES ENVIRONMENT "CMAKE_BINARY_DIR=${CMAKE_BINARY_DIR};CMAKE_SHARED_LIBRARY_SUFFIX=${CMAKE_SHARED_LIBRARY_SUFFIX}") 29 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | set(org.kde.desktop_SRCS 2 | animationspeedprovider.cpp 3 | plasmadesktoptheme.cpp 4 | kirigamiplasmafactory.cpp 5 | plasmadesktopunits.cpp 6 | ) 7 | 8 | add_library(org.kde.desktop MODULE ${org.kde.desktop_SRCS}) 9 | 10 | target_link_libraries(org.kde.desktop 11 | PUBLIC 12 | Qt6::Core 13 | KF6::KirigamiPlatform 14 | PRIVATE 15 | Qt6::Qml 16 | Qt6::Quick 17 | KF6::ConfigCore 18 | KF6::ColorScheme 19 | KF6::IconThemes 20 | ) 21 | 22 | if (HAVE_DBUS) 23 | target_link_libraries(org.kde.desktop 24 | PRIVATE 25 | Qt6::DBus 26 | ) 27 | target_compile_definitions(org.kde.desktop PRIVATE -DHAVE_QTDBUS=1) 28 | else() 29 | target_compile_definitions(org.kde.desktop PRIVATE -DHAVE_QTDBUS=0) 30 | endif() 31 | 32 | if(WIN32) 33 | target_link_libraries(org.kde.desktop PRIVATE user32) 34 | endif() 35 | 36 | install(TARGETS org.kde.desktop DESTINATION ${KDE_INSTALL_PLUGINDIR}/kf6/kirigami/platform) 37 | 38 | add_subdirectory(autotests) 39 | -------------------------------------------------------------------------------- /org.kde.desktop/Control.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.qqc2desktopstyle.private as StylePrivate 12 | 13 | T.Control { 14 | id: control 15 | 16 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 17 | implicitContentWidth + leftPadding + rightPadding) 18 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 19 | implicitContentHeight + topPadding + bottomPadding) 20 | 21 | topPadding: styleItem.pixelMetric("layouttopmargin") 22 | leftPadding: styleItem.pixelMetric("layoutleftmargin") 23 | rightPadding: styleItem.pixelMetric("layoutrightmargin") 24 | bottomPadding: styleItem.pixelMetric("layoutbottommargin") 25 | 26 | property Item __style: StylePrivate.StyleItem { 27 | id: styleItem 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/plasmadesktoptheme.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | #ifndef KIRIGAMIPLASMATHEME_H 8 | #define KIRIGAMIPLASMATHEME_H 9 | 10 | #include 11 | 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include 17 | 18 | class StyleSingleton; 19 | 20 | class PlasmaDesktopTheme : public Kirigami::Platform::PlatformTheme 21 | { 22 | Q_OBJECT 23 | 24 | public: 25 | explicit PlasmaDesktopTheme(QObject *parent = nullptr); 26 | ~PlasmaDesktopTheme() override; 27 | 28 | Q_INVOKABLE QIcon iconFromTheme(const QString &name, const QColor &customColor = Qt::transparent) override; 29 | 30 | void syncWindow(); 31 | void syncColors(); 32 | void syncFrameContrast(); 33 | 34 | protected: 35 | bool event(QEvent *event) override; 36 | 37 | private: 38 | friend class StyleSingleton; 39 | QPointer m_window; 40 | QMetaObject::Connection m_sgConnection; 41 | }; 42 | 43 | #endif // KIRIGAMIPLASMATHEME_H 44 | -------------------------------------------------------------------------------- /org.kde.desktop/ToolBar.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | import org.kde.desktop.private as Private 13 | 14 | T.ToolBar { 15 | id: controlRoot 16 | 17 | implicitWidth: Math.max(implicitBackgroundWidth, 18 | contentWidth) + leftPadding + rightPadding 19 | implicitHeight: Math.max(implicitBackgroundHeight, 20 | contentHeight) + topPadding + bottomPadding 21 | 22 | padding: Kirigami.Units.smallSpacing 23 | 24 | // Note: relying on this heuristic might break your apps if used with other QQC2 styles. 25 | position: parent?.footer === controlRoot ? T.ToolBar.Footer : T.ToolBar.Header 26 | 27 | Kirigami.Theme.colorSet: position === T.ToolBar.Footer ? Kirigami.Theme.Window : Kirigami.Theme.Header 28 | Kirigami.Theme.inherit: false 29 | 30 | background: Private.DefaultToolBarBackground { 31 | control: controlRoot 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /tests/testComboBox.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2019 Aleix Pol 3 | SPDX-FileCopyrightText: 2020 Chris Holland 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | import QtQuick 9 | import QtQuick.Layouts 10 | import QtQuick.Controls 11 | 12 | ApplicationWindow 13 | { 14 | visible: true 15 | 16 | ColumnLayout { 17 | anchors.fill: parent 18 | ComboBox { 19 | Layout.fillWidth: true 20 | textRole: "key" 21 | model: ListModel { 22 | id: comboModel 23 | ListElement { key: "First"; value: 123 } 24 | ListElement { key: "Second"; value: 456 } 25 | ListElement { key: "Third"; value: 789 } 26 | } 27 | } 28 | 29 | ComboBox { 30 | Layout.fillWidth: true 31 | textRole: "key" 32 | model: comboModel 33 | editable: true 34 | } 35 | 36 | ListView { 37 | Layout.fillWidth: true 38 | Layout.fillHeight: true 39 | model: comboModel 40 | delegate: Label { text: key } 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /org.kde.desktop/MenuSeparator.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 3 | SPDX-FileCopyrightText: 2019 Alexander Stippich 4 | SPDX-FileCopyrightText: 2021 Noah Davis 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | 10 | import QtQuick 11 | import QtQuick.Templates as T 12 | import org.kde.kirigami as Kirigami 13 | 14 | T.MenuSeparator { 15 | id: controlRoot 16 | 17 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 18 | implicitContentWidth + leftPadding + rightPadding) 19 | implicitHeight: visible ? Math.max(implicitBackgroundHeight + topInset + bottomInset, 20 | implicitContentHeight + topPadding + bottomPadding) : 0 21 | 22 | // Let optional chaining operator fallback to undefined which would call a 23 | // RESET method so that width would follow implicit width automatically. 24 | width: parent?.width 25 | 26 | verticalPadding: Math.round(Kirigami.Units.smallSpacing / 2) 27 | hoverEnabled: false 28 | focusPolicy: Qt.NoFocus 29 | 30 | contentItem: Kirigami.Separator { 31 | // same as MenuItem background 32 | implicitWidth: Kirigami.Units.gridUnit * 8 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /org.kde.desktop/Page.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | import QtQuick 9 | import QtQuick.Templates as T 10 | import org.kde.kirigami as Kirigami 11 | import org.kde.qqc2desktopstyle.private as StylePrivate 12 | 13 | T.Page { 14 | id: controlRoot 15 | 16 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 17 | contentWidth + leftPadding + rightPadding, 18 | implicitHeaderWidth, 19 | implicitFooterWidth) 20 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 21 | contentHeight + topPadding + bottomPadding 22 | + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) 23 | + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) 24 | 25 | background: Rectangle { 26 | color: Kirigami.Theme.backgroundColor 27 | } 28 | readonly property Item __internal: StylePrivate.StyleItem { 29 | parent: controlRoot 30 | visible: false 31 | control: controlRoot 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /org.kde.desktop/GroupBox.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | 13 | T.GroupBox { 14 | id: control 15 | 16 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 17 | contentWidth + leftPadding + rightPadding, 18 | implicitLabelWidth + leftPadding + rightPadding) 19 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 20 | contentHeight + topPadding + bottomPadding) 21 | 22 | padding: 6 23 | topPadding: padding + (label && label.implicitWidth > 0 ? label.implicitHeight + spacing : 0) 24 | 25 | label: Label { 26 | x: control.leftPadding 27 | width: control.availableWidth 28 | 29 | text: control.title 30 | font: control.font 31 | color: Kirigami.Theme.textColor 32 | elide: Text.ElideRight 33 | horizontalAlignment: Text.AlignLeft 34 | verticalAlignment: Text.AlignVCenter 35 | } 36 | 37 | background: Rectangle { 38 | color: "transparent" 39 | border.color: Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.backgroundColor, Kirigami.Theme.textColor, Kirigami.Theme.frameContrast) 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /org.kde.desktop/ProgressBar.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | SPDX-FileCopyrightText: 2023 ivan tkachenko 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | import QtQuick 10 | import org.kde.qqc2desktopstyle.private as StylePrivate 11 | import QtQuick.Templates as T 12 | import org.kde.kirigami as Kirigami 13 | 14 | T.ProgressBar { 15 | id: controlRoot 16 | 17 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 18 | implicitContentWidth + leftPadding + rightPadding, 19 | 250) 20 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 21 | implicitContentHeight + topPadding + bottomPadding) 22 | 23 | baselineOffset: background ? background.y + background.baselineOffset : 0 24 | 25 | topInset: Kirigami.Units.largeSpacing 26 | bottomInset: Kirigami.Units.largeSpacing 27 | 28 | hoverEnabled: false 29 | 30 | contentItem: null 31 | 32 | background: StylePrivate.StyleItem { 33 | elementType: "progressbar" 34 | control: controlRoot 35 | minimum: 0 36 | maximum: controlRoot.indeterminate ? 0 : 100000 37 | value: controlRoot.indeterminate ? 0 : 100000 * controlRoot.position 38 | horizontal: true 39 | enabled: controlRoot.enabled 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /plugin/itembranchindicators.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 3 | SPDX-FileCopyrightText: 2023 David Redondo 4 | */ 5 | 6 | #ifndef ITEMBRANCHINDICATORS_H 7 | #define ITEMBRANCHINDICATORS_H 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | struct PaintData { 14 | bool hasSibling : 1 = false; 15 | bool isItem : 1 = false; 16 | }; 17 | 18 | class ItemBranchIndicators : public QQuickPaintedItem 19 | { 20 | Q_OBJECT 21 | QML_ELEMENT 22 | Q_PROPERTY(QModelIndex modelIndex MEMBER m_index WRITE setModelIndex NOTIFY modelIndexChanged) 23 | Q_PROPERTY(QModelIndex rootIndex MEMBER m_rootIndex WRITE setRootIndex NOTIFY rootIndexChanged) 24 | Q_PROPERTY(bool selected MEMBER m_selected WRITE setSelected NOTIFY selectedChanged) 25 | public: 26 | explicit ItemBranchIndicators(QQuickItem *parent = nullptr); 27 | void setModelIndex(const QModelIndex &index); 28 | void setRootIndex(const QModelIndex &index); 29 | void setSelected(bool selected); 30 | void paint(QPainter *painter) override; 31 | 32 | Q_SIGNALS: 33 | void modelIndexChanged(); 34 | void rootIndexChanged(); 35 | void selectedChanged(); 36 | 37 | private: 38 | void updateParentChain(); 39 | 40 | std::vector m_parentChain; 41 | 42 | QPersistentModelIndex m_index; 43 | QPersistentModelIndex m_rootIndex; 44 | bool m_selected; 45 | QPalette m_palette; 46 | }; 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/autotests/common.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Fushan Wen 3 | 4 | SPDX-License-Identifier: LGPL-2.1-or-later 5 | */ 6 | 7 | #pragma once 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | using namespace Qt::StringLiterals; 14 | 15 | namespace Common 16 | { 17 | void initTestCase() 18 | { 19 | QStandardPaths::setTestModeEnabled(true); 20 | 21 | if (qEnvironmentVariableIsSet("KDECI_BUILD")) { 22 | const QString libraryPath = QLatin1String(qgetenv("CMAKE_BINARY_DIR")) + QDir::separator() + "bin"_L1 + QDir::separator() + "org.kde.desktop"_L1 23 | + QLatin1String(qgetenv("CMAKE_SHARED_LIBRARY_SUFFIX")); 24 | QVERIFY2(QFileInfo::exists(libraryPath), qUtf8Printable(libraryPath)); 25 | QDir libraryDir = QFileInfo(libraryPath).dir(); 26 | const QString kirigamiFolder(libraryDir.absolutePath() + QDir::separator() + u"kf6"_s + QDir::separator() + u"kirigami" + QDir::separator() 27 | + u"platform"_s); 28 | QVERIFY2(libraryDir.mkpath(kirigamiFolder), qUtf8Printable(kirigamiFolder)); 29 | const QString targetFilePath = kirigamiFolder + QDir::separator() + QFileInfo(libraryPath).fileName(); 30 | QFile(targetFilePath).remove(); 31 | QVERIFY(QFile(libraryPath).copy(targetFilePath)); 32 | QCoreApplication::addLibraryPath(QString::fromLatin1(qgetenv("CMAKE_BINARY_DIR"))); 33 | } 34 | 35 | QQuickStyle::setStyle(u"org.kde.desktop"_s); 36 | } 37 | } -------------------------------------------------------------------------------- /org.kde.desktop/private/DefaultToolBarBackground.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | SPDX-FileCopyrightText: 2023 ivan tkachenko 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | 13 | Rectangle { 14 | id: root 15 | 16 | required property T.ToolBar control 17 | 18 | implicitHeight: 40 19 | color: Kirigami.Theme.backgroundColor 20 | 21 | Kirigami.Separator { 22 | id: separator 23 | anchors { 24 | left: parent.left 25 | right: parent.right 26 | } 27 | } 28 | 29 | // Conditional anchors are not reliable, and state machine are chunky in 30 | // terms of number of objects. 31 | function __fixup() { 32 | // Make sure to unset an old anchor before assigning a new one, 33 | // or else the separator will stuck being stretched vertically. 34 | if (control?.position === T.ToolBar.Header) { 35 | separator.anchors.top = undefined; 36 | separator.anchors.bottom = root.bottom; 37 | } else { 38 | separator.anchors.bottom = undefined; 39 | separator.anchors.top = root.top; 40 | } 41 | } 42 | 43 | Component.onCompleted: __fixup() 44 | 45 | Connections { 46 | target: root.control 47 | 48 | function onPositionChanged() { 49 | root.__fixup(); 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /Mainpage.dox: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of QQC2-Desktop-Style 3 | SPDX-FileCopyrightText: 2017 Marco Martin 4 | 5 | SPDX-License-Identifier: LGPL-2.0-or-later 6 | */ 7 | 8 | 9 | /** \mainpage QQC2-Desktop-Style 10 | 11 | 12 | \section overview Introduction 13 | 14 | QQC2-Desktop-Style is a style for Qt Quick Controls 2 (QQC2) which uses [`QStyle`](https://doc.qt.io/qt-5/qstyle.html) to paint the controls in order to give them native look and feel. 15 | 16 | This framework has no public API, applications should not (and can not) use it directly. Instead, developers should add this framework as a dependency of their desktop apps. 17 | 18 | Style name is `"org.kde.desktop"`. It can be enabled like [any other QQC2 style](https://doc.qt.io/qt-5/qtquickcontrols2-styles.html#using-styles-in-qt-quick-controls), e.g.: 19 | - via environment variable `QT_QUICK_CONTROLS_STYLE=org.kde.desktop` 20 | - from the C++ code: 21 | 22 | @code{cpp} 23 | #include 24 | 25 | int main(int argc, char *argv[]) 26 | { 27 | QGuiApplication app(argc, argv); 28 | 29 | QQuickStyle::setStyle("org.kde.desktop"); 30 | 31 | QQmlApplicationEngine engine; 32 | // ... 33 | } 34 | @endcode 35 | 36 | @authors 37 | Marco Martin \
38 | 39 | @maintainers 40 | Marco Martin \ 41 | 42 | @licenses 43 | @lgpl 44 | 45 | */ 46 | 47 | 48 | // DOXYGEN_SET_RECURSIVE = YES 49 | // DOXYGEN_SET_EXCLUDE_PATTERNS += *_p.h */private/* */examples/* 50 | // DOXYGEN_SET_PROJECT_NAME = Kirigami 51 | // vim:ts=4:sw=4:expandtab:filetype=doxygen 52 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/animationspeedprovider.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Fushan Wen 3 | 4 | SPDX-License-Identifier: LGPL-2.1-or-later 5 | */ 6 | 7 | #pragma once 8 | 9 | #include 10 | 11 | #ifdef Q_OS_UNIX 12 | #include 13 | 14 | #include 15 | #endif 16 | 17 | #ifdef Q_OS_WIN 18 | #include 19 | #endif 20 | 21 | class AnimationSpeedProvider 22 | { 23 | public: 24 | explicit AnimationSpeedProvider(); 25 | virtual ~AnimationSpeedProvider(); 26 | Q_DISABLE_COPY_MOVE(AnimationSpeedProvider) 27 | 28 | QBindable animationSpeedModifier() const; 29 | 30 | protected: 31 | QProperty m_animationSpeedModifier{1.0}; 32 | }; 33 | 34 | #ifdef Q_OS_UNIX 35 | class KConfigAnimationSpeedProvider : public QObject, public AnimationSpeedProvider 36 | { 37 | Q_OBJECT 38 | 39 | public: 40 | explicit KConfigAnimationSpeedProvider(QObject *parent = nullptr); 41 | ~KConfigAnimationSpeedProvider() override; 42 | Q_DISABLE_COPY_MOVE(KConfigAnimationSpeedProvider) 43 | 44 | private: 45 | KConfigWatcher::Ptr m_animationSpeedWatcher; 46 | }; 47 | #endif 48 | 49 | #ifdef Q_OS_WIN 50 | class WindowsAnimationSpeedProvider : public QAbstractNativeEventFilter, public AnimationSpeedProvider 51 | { 52 | public: 53 | explicit WindowsAnimationSpeedProvider(); 54 | ~WindowsAnimationSpeedProvider() override; 55 | Q_DISABLE_COPY_MOVE(WindowsAnimationSpeedProvider) 56 | 57 | private: 58 | void update(); 59 | bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; 60 | }; 61 | #endif 62 | -------------------------------------------------------------------------------- /org.kde.desktop/private/DefaultSliderHandle.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 ivan tkachenko 3 | 4 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 5 | */ 6 | 7 | import QtQuick 8 | import QtQuick.Templates as T 9 | import org.kde.qqc2desktopstyle.private as StylePrivate 10 | 11 | Item { 12 | id: handle 13 | 14 | required property T.Slider control 15 | 16 | readonly property StylePrivate.StyleItem styleItem: { 17 | const item = control.background; 18 | return (item instanceof StylePrivate.StyleItem) ? item : null; 19 | } 20 | 21 | // It won't keep track of an actual position, but QtQuick.Templates code 22 | // only accounts for handle size and does not care for x/y anyway. 23 | property size size 24 | 25 | function updateHandleSize() { 26 | if (styleItem) { 27 | const rect = styleItem.subControlRect("handle"); 28 | size = Qt.size(rect.width, rect.height); 29 | } 30 | } 31 | 32 | x: control.leftPadding + Math.round(control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) 33 | y: control.topPadding + Math.round(control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) 34 | 35 | implicitWidth: size.width 36 | implicitHeight: size.height 37 | 38 | Connections { 39 | target: handle.styleItem 40 | 41 | function onStyleNameChanged() { 42 | handle.updateHandleSize(); 43 | } 44 | } 45 | 46 | Component.onCompleted: { 47 | updateHandleSize(); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /org.kde.desktop/Drawer.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | 13 | T.Drawer { 14 | id: control 15 | 16 | z: Kirigami.OverlayZStacking.z 17 | 18 | parent: T.ApplicationWindow.overlay 19 | 20 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 21 | contentWidth + leftPadding + rightPadding) 22 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 23 | contentHeight + topPadding + bottomPadding) 24 | 25 | topPadding: edge === Qt.BottomEdge ? 1 : 0 26 | leftPadding: edge === Qt.RightEdge ? 1 : 0 27 | rightPadding: edge === Qt.LeftEdge ? 1 : 0 28 | bottomPadding: edge === Qt.TopEdge ? 1 : 0 29 | 30 | background: Rectangle { 31 | color: Kirigami.Theme.backgroundColor 32 | Kirigami.Separator { 33 | readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge 34 | 35 | width: horizontal ? 1 : parent.width 36 | height: horizontal ? parent.height : 1 37 | x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 38 | y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 39 | 40 | Kirigami.Theme.inherit: false 41 | Kirigami.Theme.colorSet: Kirigami.Theme.Header 42 | } 43 | } 44 | 45 | enter: Transition { 46 | SmoothedAnimation { 47 | velocity: 5 48 | } 49 | } 50 | exit: Transition { 51 | SmoothedAnimation { 52 | velocity: 5 53 | } 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /org.kde.desktop/SplitView.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2018 The Qt Company Ltd. 3 | SPDX-FileCopyrightText: 2024 ivan tkachenko 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | pragma ComponentBehavior: Bound 9 | 10 | import QtQuick 11 | import QtQuick.Templates as T 12 | import org.kde.kirigami.platform as Platform 13 | import org.kde.qqc2desktopstyle.private as StylePrivate 14 | 15 | T.SplitView { 16 | id: control 17 | 18 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 19 | implicitContentWidth + leftPadding + rightPadding) 20 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 21 | implicitContentHeight + topPadding + bottomPadding) 22 | 23 | handle: StylePrivate.StyleItem { 24 | id: handle 25 | 26 | elementType: "splitter" 27 | horizontal: control.orientation === Qt.Horizontal 28 | 29 | // Increase the hit area 30 | // 31 | // It could be adapted from QSplitterHandle::resizeEvent, but its 32 | // extra margins are kinda too small. Or it could be hardcoded to 33 | // Breeze -> SplitterProxyWidth config which is 12, that is, assuming 34 | // the feature is enabled at all. 35 | 36 | // Increase the hit area 37 | containmentMask: Item { 38 | // Dynamic margins like in Breeze/SplitterProxy 39 | readonly property int handleMargin: handle.T.SplitHandle.hovered ? 12 : 6 40 | 41 | x: handle.horizontal ? -handleMargin : 0 42 | y: handle.horizontal ? 0 : -handleMargin 43 | 44 | width: handle.width + (!handle.horizontal ? 0 : handleMargin * 2) 45 | height: handle.height + (handle.horizontal ? 0 : handleMargin * 2) 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /org.kde.desktop/private/CheckIndicator.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | SPDX-FileCopyrightText: 2023 ivan tkachenko 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | 10 | import QtQuick 11 | import QtQuick.Templates as T 12 | import org.kde.kirigami as Kirigami 13 | import org.kde.qqc2desktopstyle.private as StylePrivate 14 | 15 | StylePrivate.StyleItem { 16 | id: styleitem 17 | 18 | property bool drawIcon: true 19 | Kirigami.Theme.inherit: false 20 | Kirigami.Theme.colorSet: Kirigami.Theme.Button 21 | 22 | readonly property T.AbstractButton buttonControl : control as T.AbstractButton 23 | 24 | // Fallback heuristic for MenuItem which can mimic either of those. 25 | elementType: (buttonControl.autoExclusive 26 | || (buttonControl.action !== null && buttonControl.action.T.ActionGroup.group !== null && buttonControl.action.T.ActionGroup.group.exclusive) 27 | || (buttonControl.T.ButtonGroup.group !== null && buttonControl.T.ButtonGroup.group.exclusive)) 28 | ? "radiobutton" : "checkbox" 29 | 30 | sunken: buttonControl.pressed 31 | on: buttonControl.checked 32 | hover: buttonControl.hovered 33 | enabled: buttonControl.enabled 34 | properties: { 35 | "icon": drawIcon && buttonControl.display !== T.AbstractButton.TextOnly 36 | ? (buttonControl.icon.name !== "" ? buttonControl.icon.name : buttonControl.icon.source) : null, 37 | "iconColor": Qt.colorEqual(buttonControl.icon.color, "transparent") ? Kirigami.Theme.textColor : buttonControl.icon.color, 38 | "iconWidth": buttonControl.icon.width, 39 | "iconHeight": buttonControl.icon.height, 40 | 41 | "partiallyChecked": buttonControl.checkState === Qt.PartiallyChecked 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /org.kde.desktop/Popup.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | 13 | T.Popup { 14 | id: control 15 | 16 | Kirigami.OverlayZStacking.layer: Kirigami.OverlayZStacking.DefaultLowest 17 | z: Kirigami.OverlayZStacking.z 18 | 19 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 20 | contentWidth + leftPadding + rightPadding) 21 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 22 | contentHeight + topPadding + bottomPadding) 23 | 24 | padding: 12 25 | clip: true 26 | 27 | enter: Transition { 28 | NumberAnimation { 29 | property: "opacity" 30 | from: 0 31 | to: 1 32 | easing.type: Easing.InOutQuad 33 | duration: Kirigami.Units.longDuration 34 | } 35 | } 36 | 37 | exit: Transition { 38 | NumberAnimation { 39 | property: "opacity" 40 | from: 1 41 | to: 0 42 | easing.type: Easing.InOutQuad 43 | duration: Kirigami.Units.longDuration 44 | } 45 | } 46 | 47 | contentItem: Item {} 48 | 49 | background: Kirigami.ShadowedRectangle { 50 | radius: Kirigami.Units.cornerRadius 51 | color: Kirigami.Theme.backgroundColor 52 | 53 | border.color: Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.backgroundColor, Kirigami.Theme.textColor, Kirigami.Theme.frameContrast) 54 | border.width: 1 55 | 56 | shadow.xOffset: 0 57 | shadow.yOffset: 4 58 | shadow.color: Qt.rgba(0, 0, 0, 0.3) 59 | shadow.size: 8 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /tests/tabbar.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2019 David Edmundson 3 | SPDX-FileCopyrightText: 2021 Nate Graham 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | import QtQuick 9 | import QtQuick.Controls 10 | import QtQuick.Layouts 11 | 12 | import org.kde.kirigami as Kirigami 13 | 14 | Item { 15 | width: 400 16 | height: 300 17 | 18 | ColumnLayout { 19 | anchors.fill: parent 20 | anchors.margins: 20 21 | 22 | spacing: 0 23 | 24 | TabBar { 25 | id: tabView 26 | 27 | TabButton { 28 | text: "White" 29 | } 30 | TabButton { 31 | text: "Green" 32 | } 33 | TabButton { 34 | text: "Red" 35 | enabled: false 36 | } 37 | TabButton { 38 | text: "Blue" 39 | } 40 | } 41 | 42 | Frame { 43 | Layout.fillWidth: true 44 | Layout.fillHeight: true 45 | 46 | background: Rectangle { 47 | color: "transparent" 48 | border.color: Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.backgroundColor, Kirigami.Theme.textColor, Kirigami.Theme.frameContrast) 49 | topLeftRadius: 0 50 | radius: Kirigami.Units.cornerRadius 51 | } 52 | 53 | StackLayout { //or SwipeView + clip for animated? 54 | anchors.fill: parent 55 | 56 | currentIndex: tabView.currentIndex 57 | 58 | Rectangle { 59 | color: "white" 60 | } 61 | Rectangle { 62 | color: "Green" 63 | } 64 | Rectangle { 65 | color: "Red" 66 | } 67 | Rectangle { 68 | color: "Blue" 69 | } 70 | } 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /tests/CheckBox.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 David Redondo 3 | SPDX-FileCopyrightText: 2021 Nate Graham 4 | SPDX-FileCopyrightText: 2021 Aleix Pol 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | import QtQuick 10 | import QtQuick.Layouts 11 | import QtQuick.Controls 12 | 13 | ApplicationWindow { 14 | width: 300 15 | height: layout.implicitHeight 16 | 17 | ColumnLayout { 18 | id: layout 19 | 20 | width: parent.width 21 | 22 | CheckBox { 23 | } 24 | 25 | CheckBox { 26 | checked: true 27 | enabled: false 28 | } 29 | 30 | CheckBox { 31 | text: "text" 32 | } 33 | 34 | CheckBox { 35 | icon.name: "checkmark" 36 | } 37 | 38 | CheckBox { 39 | text: "text plus icon" 40 | icon.name: "checkmark" 41 | } 42 | 43 | CheckBox { 44 | text: "focused" 45 | focus: true 46 | } 47 | 48 | CheckBox { 49 | text: "checked" 50 | checkState: Qt.Checked 51 | } 52 | 53 | CheckBox { 54 | text: "partially checked" 55 | checkState: Qt.PartiallyChecked 56 | tristate: true 57 | } 58 | 59 | CheckBox { 60 | text: "disabled" 61 | enabled: false 62 | } 63 | 64 | CheckBox { 65 | text: "disabled and checked" 66 | enabled: false 67 | checkState: Qt.Checked 68 | } 69 | 70 | CheckBox { 71 | text: "disabled and icon" 72 | enabled: false 73 | icon.name: "checkmark" 74 | } 75 | 76 | CheckBox { 77 | Layout.fillWidth: true 78 | text: "This is a very long piece of text that really should be rewritten to be shorter, but sometimes life just isn't that simple." 79 | } 80 | } 81 | } 82 | 83 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/plasmadesktopunits.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2013 Marco Martin 3 | SPDX-FileCopyrightText: 2014 Sebastian Kügler 4 | SPDX-FileCopyrightText: 2014 David Edmundson 5 | SPDX-FileCopyrightText: 2021 Jonah Brüchert 6 | 7 | SPDX-License-Identifier: LGPL-2.0-or-later 8 | 9 | */ 10 | 11 | #include "plasmadesktopunits.h" 12 | 13 | #include 14 | #include 15 | 16 | #include "animationspeedprovider.h" 17 | 18 | namespace 19 | { 20 | constexpr int defaultLongDuration = 200; 21 | } 22 | 23 | PlasmaDesktopUnits::PlasmaDesktopUnits(QObject *parent) 24 | : Kirigami::Platform::Units(parent) 25 | #if defined(Q_OS_WIN) 26 | , m_animationSpeedProvider(new WindowsAnimationSpeedProvider) 27 | #elif defined(Q_OS_UNIX) 28 | , m_animationSpeedProvider(new KConfigAnimationSpeedProvider) 29 | #endif 30 | { 31 | m_notifier = m_animationSpeedProvider->animationSpeedModifier().addNotifier([this] { 32 | updateAnimationSpeed(); 33 | }); 34 | updateAnimationSpeed(); 35 | } 36 | 37 | // Copy from plasma-framework/src/declarativeimports/core/units.cpp, since we don't want to depend on plasma-framework here 38 | void PlasmaDesktopUnits::updateAnimationSpeed() 39 | { 40 | // Read the old longDuration value for compatibility 41 | KConfigGroup cfg = KConfigGroup(KSharedConfig::openConfig(QStringLiteral("plasmarc")), QStringLiteral("Units")); 42 | int longDuration = cfg.readEntry("longDuration", defaultLongDuration); 43 | 44 | const qreal animationSpeedModifier = m_animationSpeedProvider->animationSpeedModifier().value(); 45 | longDuration = qRound(longDuration * animationSpeedModifier); 46 | 47 | // Animators with a duration of 0 do not fire reliably 48 | // see Bug 357532 and QTBUG-39766 49 | longDuration = qMax(1, longDuration); 50 | 51 | setVeryShortDuration(longDuration / 4); 52 | setShortDuration(longDuration / 2); 53 | setLongDuration(longDuration); 54 | setVeryLongDuration(longDuration * 2); 55 | } 56 | 57 | #include "moc_plasmadesktopunits.cpp" 58 | -------------------------------------------------------------------------------- /tests/HeaderViews.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Marco Martin 3 | 4 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 5 | */ 6 | 7 | import QtQuick 8 | import QtQuick.Layouts 1.4 9 | import QtQuick.Controls 2.15 as QQC2 10 | import org.kde.kirigami as Kirigami 11 | import org.kde.plasma.components 3 as PC3 12 | import Qt.labs.qmlmodels 1.0 13 | 14 | GridLayout { 15 | id: root 16 | width: 500 17 | height: 300 18 | rows: 2 19 | columns: 2 20 | rowSpacing: 0 21 | columnSpacing: 0 22 | 23 | Item {} 24 | QQC2.HorizontalHeaderView { 25 | syncView: table 26 | Layout.fillWidth: true 27 | } 28 | QQC2.VerticalHeaderView { 29 | syncView: table 30 | Layout.fillWidth: true 31 | } 32 | TableView { 33 | id: table 34 | Layout.fillWidth: true 35 | Layout.fillHeight: true 36 | alternatingRows: true 37 | 38 | selectionModel: ItemSelectionModel {} 39 | 40 | model: TableModel { 41 | TableModelColumn { display: "A" } 42 | TableModelColumn { display: "B" } 43 | TableModelColumn { display: "C" } 44 | TableModelColumn { display: "D" } 45 | 46 | rows: [ 47 | { 48 | A: "A1", 49 | B: "B1", 50 | C: "C1", 51 | D: "D1" 52 | }, 53 | { 54 | A: "A2", 55 | B: "B2", 56 | C: "C2", 57 | D: "D2" 58 | }, 59 | { 60 | A: "A3", 61 | B: "B3", 62 | C: "C3", 63 | D: "D3" 64 | } 65 | ] 66 | } 67 | delegate: QQC2.ItemDelegate { 68 | required property var model 69 | required property bool selected 70 | text: model.display 71 | checkable: true 72 | checked: selected 73 | highlighted: checked 74 | onClicked: { 75 | table.selectionModel.select(table.model.index(model.row, model.column), checked ? ItemSelectionModel.Select : ItemSelectionModel.Deselect) 76 | } 77 | } 78 | } 79 | 80 | } 81 | 82 | -------------------------------------------------------------------------------- /org.kde.desktop/PageIndicator.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 3 | SPDX-FileCopyrightText: 2020 Noah Davis 4 | SPDX-FileCopyrightText: 2023 ivan tkachenko 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | 13 | T.PageIndicator { 14 | id: control 15 | 16 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 17 | implicitContentWidth + leftPadding + rightPadding) 18 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 19 | implicitContentHeight + topPadding + bottomPadding) 20 | 21 | padding: Kirigami.Units.largeSpacing 22 | spacing: Kirigami.Units.largeSpacing 23 | 24 | // QTBUG-115133: Kirigami/ShadowedRectangle renders smoother circles at HiDPI than plain QtQuick/Rectangle. 25 | delegate: Kirigami.ShadowedRectangle { 26 | required property int index 27 | // `pressed` is a context property, it can't be required in delegate. 28 | 29 | implicitWidth: Kirigami.Units.largeSpacing 30 | implicitHeight: Kirigami.Units.largeSpacing 31 | 32 | radius: width / 2 33 | color: Kirigami.Theme.textColor 34 | 35 | opacity: index === currentIndex ? 1 : pressed ? 0.67 : 0.33 36 | 37 | Behavior on opacity { 38 | OpacityAnimator { 39 | duration: Kirigami.Units.shortDuration 40 | } 41 | } 42 | } 43 | 44 | // Can't be center-aligned, because (1) an approach of setting x/width 45 | // manually gets overridden by automatic sizing of Control; and 46 | // (2) wrapping in an Item breaks delegates for which T.PageIndicator 47 | // injects `pressed` context property; (3) RowLayout with center 48 | // alignment tends to distribute its items across width, which looks odd, 49 | // and again due to custom C++ magic relying on children index of 50 | // contentItem, we can't insert fillers on the left and right. 51 | contentItem: Row { 52 | LayoutMirroring.enabled: control.mirrored 53 | spacing: control.spacing 54 | 55 | Repeater { 56 | model: control.count 57 | delegate: control.delegate 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /org.kde.desktop/MenuBarItem.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | 13 | T.MenuBarItem { 14 | id: controlRoot 15 | 16 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 17 | implicitContentWidth + leftPadding + rightPadding) 18 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 19 | implicitContentHeight + topPadding + bottomPadding, 20 | implicitIndicatorHeight + topPadding + bottomPadding) 21 | 22 | topPadding: Kirigami.Units.smallSpacing 23 | leftPadding: Kirigami.Units.largeSpacing 24 | rightPadding: Kirigami.Units.largeSpacing 25 | bottomPadding: Kirigami.Units.smallSpacing 26 | hoverEnabled: true 27 | 28 | Kirigami.MnemonicData.enabled: enabled && visible 29 | Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.MenuItem 30 | Kirigami.MnemonicData.label: text 31 | 32 | Shortcut { 33 | //in case of explicit & the button manages it by itself 34 | enabled: !(RegExp(/\&[^\&]/).test(controlRoot.text)) 35 | sequence: controlRoot.Kirigami.MnemonicData.sequence 36 | onActivated: controlRoot.clicked(); 37 | } 38 | 39 | contentItem: Label { 40 | text: controlRoot.Kirigami.MnemonicData.richTextLabel 41 | font: controlRoot.font 42 | color: controlRoot.hovered && !controlRoot.pressed ? Kirigami.Theme.highlightedTextColor : Kirigami.Theme.textColor 43 | elide: Text.ElideRight 44 | visible: controlRoot.text 45 | horizontalAlignment: Text.AlignHCenter 46 | verticalAlignment: Text.AlignVCenter 47 | } 48 | 49 | background: Rectangle { 50 | implicitWidth: 40 51 | implicitHeight: Kirigami.Units.gridUnit + 2 * Kirigami.Units.smallSpacing 52 | color: Kirigami.Theme.highlightColor 53 | opacity: controlRoot.down || controlRoot.highlighted ? 0.7 : 0 54 | 55 | Behavior on opacity { 56 | enabled: Kirigami.Units.shortDuration > 0 57 | NumberAnimation { 58 | duration: Kirigami.Units.shortDuration 59 | } 60 | } 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /org.kde.desktop/private/MobileCursor.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2018 Marco Martin 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | pragma ComponentBehavior: Bound 8 | 9 | import QtQuick 10 | import org.kde.kirigami as Kirigami 11 | import org.kde.desktop.private as Private 12 | 13 | Item { 14 | id: root 15 | 16 | width: 1 //<-important that this is actually a single device pixel 17 | height: Kirigami.Units.gridUnit 18 | 19 | property /*TextInput | TextEdit*/ Item target 20 | 21 | property bool selectionStartHandle: false 22 | 23 | visible: Kirigami.Settings.tabletMode && ((target.activeFocus && !selectionStartHandle) || target.selectedText.length > 0) 24 | 25 | Rectangle { 26 | width: 3 27 | anchors { 28 | horizontalCenter: parent.horizontalCenter 29 | top: parent.top 30 | bottom: parent.bottom 31 | } 32 | color: Qt.tint(Kirigami.Theme.highlightColor, Qt.rgba(1,1,1,0.4)) 33 | radius: width 34 | Rectangle { 35 | width: Math.round(Kirigami.Units.gridUnit/1.5) 36 | height: width 37 | visible: Private.MobileTextActionsToolBar.shouldBeVisible 38 | anchors { 39 | horizontalCenter: parent.horizontalCenter 40 | verticalCenter: parent.bottom 41 | } 42 | radius: width 43 | color: Qt.tint(Kirigami.Theme.highlightColor, Qt.rgba(1,1,1,0.4)) 44 | } 45 | MouseArea { 46 | anchors { 47 | fill: parent 48 | margins: -Kirigami.Units.gridUnit 49 | } 50 | preventStealing: true 51 | onPositionChanged: mouse => { 52 | const target = root.target; 53 | var pos = mapToItem(target, mouse.x, mouse.y); 54 | pos = target.positionAt(pos.x, pos.y); 55 | 56 | if (target.selectedText.length > 0) { 57 | if (root.selectionStartHandle) { 58 | target.select(Math.min(pos, target.selectionEnd - 1), target.selectionEnd); 59 | } else { 60 | target.select(target.selectionStart, Math.max(pos, target.selectionStart + 1)); 61 | } 62 | } else { 63 | target.cursorPosition = pos; 64 | } 65 | } 66 | } 67 | } 68 | } 69 | 70 | -------------------------------------------------------------------------------- /poqm/lt/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: qqc 2-desktop-style\n" 4 | "Last-Translator: Automatically generated\n" 5 | "Language-Team: none\n" 6 | "Language: lt\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=4; plural=(n==1 ? 0 : n%10>=2 && (n%100<10 || n" 12 | "%100>=20) ? 1 : n%10==0 || (n%100>10 && n%100<20) ? 2 : 3);\n" 13 | 14 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 15 | msgctxt "MobileTextActionsToolBarImpl|" 16 | msgid "Cut" 17 | msgstr "" 18 | 19 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 20 | msgctxt "MobileTextActionsToolBarImpl|" 21 | msgid "Copy" 22 | msgstr "" 23 | 24 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 25 | msgctxt "MobileTextActionsToolBarImpl|" 26 | msgid "Paste" 27 | msgstr "" 28 | 29 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 30 | #, qt-format 31 | msgctxt "TextFieldContextMenu|" 32 | msgid "No Suggestions for \"%1\"" 33 | msgstr "" 34 | 35 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 36 | #, qt-format 37 | msgctxt "TextFieldContextMenu|" 38 | msgid "Add \"%1\" to Dictionary" 39 | msgstr "" 40 | 41 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 42 | msgctxt "TextFieldContextMenu|" 43 | msgid "Ignore" 44 | msgstr "" 45 | 46 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 47 | msgctxt "TextFieldContextMenu|" 48 | msgid "Spell Check" 49 | msgstr "" 50 | 51 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 52 | msgctxt "TextFieldContextMenu|" 53 | msgid "Undo" 54 | msgstr "" 55 | 56 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 57 | msgctxt "TextFieldContextMenu|" 58 | msgid "Redo" 59 | msgstr "" 60 | 61 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 62 | msgctxt "TextFieldContextMenu|" 63 | msgid "Cut" 64 | msgstr "" 65 | 66 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 67 | msgctxt "TextFieldContextMenu|" 68 | msgid "Copy" 69 | msgstr "" 70 | 71 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 72 | msgctxt "TextFieldContextMenu|" 73 | msgid "Paste" 74 | msgstr "" 75 | 76 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 77 | msgctxt "TextFieldContextMenu|" 78 | msgid "Delete" 79 | msgstr "" 80 | 81 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 82 | msgctxt "TextFieldContextMenu|" 83 | msgid "Select All" 84 | msgstr "" 85 | -------------------------------------------------------------------------------- /plugin/kquickpadding_p.h: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 David Edmundson 4 | SPDX-FileCopyrightText: 2016 The Qt Company Ltd. 5 | 6 | This file is part of the Qt Quick Controls module of the Qt Toolkit. 7 | 8 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KFQF-Accepted-GPL OR LicenseRef-Qt-Commercial 9 | */ 10 | 11 | #ifndef KQUICKPADDING_H 12 | #define KQUICKPADDING_H 13 | 14 | #include 15 | 16 | #include 17 | 18 | class KQuickPadding : public QObject 19 | { 20 | Q_OBJECT 21 | QML_ANONYMOUS 22 | 23 | Q_PROPERTY(int left READ left WRITE setLeft NOTIFY leftChanged) 24 | Q_PROPERTY(int top READ top WRITE setTop NOTIFY topChanged) 25 | Q_PROPERTY(int right READ right WRITE setRight NOTIFY rightChanged) 26 | Q_PROPERTY(int bottom READ bottom WRITE setBottom NOTIFY bottomChanged) 27 | 28 | int m_left; 29 | int m_top; 30 | int m_right; 31 | int m_bottom; 32 | 33 | public: 34 | KQuickPadding(QObject *parent = nullptr) 35 | : QObject(parent) 36 | , m_left(0) 37 | , m_top(0) 38 | , m_right(0) 39 | , m_bottom(0) 40 | { 41 | } 42 | 43 | int left() const 44 | { 45 | return m_left; 46 | } 47 | int top() const 48 | { 49 | return m_top; 50 | } 51 | int right() const 52 | { 53 | return m_right; 54 | } 55 | int bottom() const 56 | { 57 | return m_bottom; 58 | } 59 | 60 | public Q_SLOTS: 61 | void setLeft(int arg) 62 | { 63 | if (m_left != arg) { 64 | m_left = arg; 65 | Q_EMIT leftChanged(); 66 | } 67 | } 68 | void setTop(int arg) 69 | { 70 | if (m_top != arg) { 71 | m_top = arg; 72 | Q_EMIT topChanged(); 73 | } 74 | } 75 | void setRight(int arg) 76 | { 77 | if (m_right != arg) { 78 | m_right = arg; 79 | Q_EMIT rightChanged(); 80 | } 81 | } 82 | void setBottom(int arg) 83 | { 84 | if (m_bottom != arg) { 85 | m_bottom = arg; 86 | Q_EMIT bottomChanged(); 87 | } 88 | } 89 | 90 | Q_SIGNALS: 91 | void leftChanged(); 92 | void topChanged(); 93 | void rightChanged(); 94 | void bottomChanged(); 95 | }; 96 | 97 | #endif // QQUICKPADDING_H 98 | -------------------------------------------------------------------------------- /poqm/ast/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Enol P. 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-03-27 22:41+0100\n" 6 | "Last-Translator: Enol P. \n" 7 | "Language-Team: Asturian \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 24.02.1\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "" 87 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/autotests/TextFieldContextMenuTest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Fushan Wen 3 | 4 | SPDX-License-Identifier: LGPL-2.1-or-later 5 | */ 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | #include 13 | 14 | #include "common.h" 15 | 16 | using namespace Qt::StringLiterals; 17 | 18 | class TextFieldContextMenuTest : public QObject 19 | { 20 | Q_OBJECT 21 | 22 | private Q_SLOTS: 23 | void initTestCase(); 24 | void cleanupTestCase(); 25 | 26 | void testBug481293(); 27 | 28 | private: 29 | QImage screenshot(); 30 | QQmlApplicationEngine engine; 31 | QQuickWindow *m_rootWindow = nullptr; 32 | }; 33 | 34 | QImage TextFieldContextMenuTest::screenshot() 35 | { 36 | const auto result = m_rootWindow->contentItem()->grabToImage(); 37 | QSignalSpy resultSpy(result.get(), &QQuickItemGrabResult::ready); 38 | if (result->image().isNull()) { 39 | Q_ASSERT(resultSpy.wait()); 40 | } 41 | const QImage img = result->image(); 42 | Q_ASSERT(!img.isNull()); 43 | return img; 44 | } 45 | 46 | void TextFieldContextMenuTest::initTestCase() 47 | { 48 | Common::initTestCase(); 49 | 50 | QSignalSpy objectCreatedSpy(&engine, &QQmlApplicationEngine::objectCreated); 51 | engine.load(QFINDTESTDATA(u"TextFieldContextMenuTest.qml"_s)); 52 | if (objectCreatedSpy.empty()) { 53 | QVERIFY(objectCreatedSpy.wait()); 54 | } 55 | QCOMPARE(engine.rootObjects().size(), 1); 56 | m_rootWindow = static_cast(engine.rootObjects()[0]->children()[1])->window(); 57 | QSignalSpy readySpy(m_rootWindow->contentItem(), &QQuickItem::heightChanged); 58 | readySpy.wait(); 59 | } 60 | 61 | void TextFieldContextMenuTest::cleanupTestCase() 62 | { 63 | } 64 | 65 | void TextFieldContextMenuTest::testBug481293() 66 | { 67 | // Take the first screenshot without the menu 68 | const QImage img1 = screenshot(); 69 | // Start right click 70 | QTest::mousePress(m_rootWindow, Qt::RightButton); 71 | QTest::qWait(3000); 72 | // Take the second screenshot with the menu 73 | const QImage img2 = screenshot(); 74 | QTest::mouseRelease(m_rootWindow, Qt::RightButton); 75 | // Make sure the menu is visible by comparing the two images 76 | QCOMPARE(img1.size(), img2.size()); 77 | QCOMPARE_NE(img1, img2); 78 | } 79 | 80 | QTEST_MAIN(TextFieldContextMenuTest) 81 | 82 | #include "TextFieldContextMenuTest.moc" 83 | -------------------------------------------------------------------------------- /poqm/sa/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: qqc2desktopstyle_qt\n" 4 | "PO-Revision-Date: 2024-12-13 19:09+0530\n" 5 | "Last-Translator: Kali \n" 6 | "Language-Team: Sanskrit \n" 7 | "Language: sa\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=2; plural=(n>1);\n" 13 | 14 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 15 | msgctxt "MobileTextActionsToolBarImpl|" 16 | msgid "Cut" 17 | msgstr "छिन्न" 18 | 19 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 20 | msgctxt "MobileTextActionsToolBarImpl|" 21 | msgid "Copy" 22 | msgstr "प्रतिलिपि" 23 | 24 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 25 | msgctxt "MobileTextActionsToolBarImpl|" 26 | msgid "Paste" 27 | msgstr "चिनोतु" 28 | 29 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 30 | #, qt-format 31 | msgctxt "TextFieldContextMenu|" 32 | msgid "No Suggestions for \"%1\"" 33 | msgstr "\"%1\" कृते कोऽपि सुझावः नास्ति।" 34 | 35 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 36 | #, qt-format 37 | msgctxt "TextFieldContextMenu|" 38 | msgid "Add \"%1\" to Dictionary" 39 | msgstr "शब्दकोशे \"%1\" योजयन्तु" 40 | 41 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 42 | msgctxt "TextFieldContextMenu|" 43 | msgid "Ignore" 44 | msgstr "उपेक्षा" 45 | 46 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 47 | msgctxt "TextFieldContextMenu|" 48 | msgid "Spell Check" 49 | msgstr "वर्तनीपरीक्षा" 50 | 51 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 52 | msgctxt "TextFieldContextMenu|" 53 | msgid "Undo" 54 | msgstr "पूर्ववत" 55 | 56 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 57 | msgctxt "TextFieldContextMenu|" 58 | msgid "Redo" 59 | msgstr "पुनः करो" 60 | 61 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 62 | msgctxt "TextFieldContextMenu|" 63 | msgid "Cut" 64 | msgstr "छिन्न" 65 | 66 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 67 | msgctxt "TextFieldContextMenu|" 68 | msgid "Copy" 69 | msgstr "प्रतिलिपि" 70 | 71 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 72 | msgctxt "TextFieldContextMenu|" 73 | msgid "Paste" 74 | msgstr "चिनोतु" 75 | 76 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 77 | msgctxt "TextFieldContextMenu|" 78 | msgid "Delete" 79 | msgstr "लुप्" 80 | 81 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 82 | msgctxt "TextFieldContextMenu|" 83 | msgid "Select All" 84 | msgstr "All इति चिनोतु" 85 | -------------------------------------------------------------------------------- /poqm/ko/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Shinjo Park 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-08-21 00:17+0200\n" 6 | "Last-Translator: Shinjo Park \n" 7 | "Language-Team: Korean \n" 8 | "Language: ko\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=1; plural=0;\n" 13 | "X-Generator: Lokalize 23.08.5\n" 14 | "X-Qt-Contexts: true\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "잘라내기" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "복사" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "붙여넣기" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "\"%1\"의 추천 목록 없음" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "사전에 \"%1\" 추가" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "무시" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "맞춤법 검사" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "실행 취소" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "다시 실행" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "잘라내기" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "복사" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "붙여넣기" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "삭제" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "모두 선택" 87 | -------------------------------------------------------------------------------- /poqm/hi/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: qqc2desktopstyle_qt\n" 4 | "PO-Revision-Date: 2024-12-15 17:35+0530\n" 5 | "Last-Translator: Kali \n" 6 | "Language-Team: Hindi \n" 7 | "Language: hi\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=2; plural=(n!=1);\n" 13 | 14 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 15 | msgctxt "MobileTextActionsToolBarImpl|" 16 | msgid "Cut" 17 | msgstr "काटना" 18 | 19 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 20 | msgctxt "MobileTextActionsToolBarImpl|" 21 | msgid "Copy" 22 | msgstr "प्रतिलिपि" 23 | 24 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 25 | msgctxt "MobileTextActionsToolBarImpl|" 26 | msgid "Paste" 27 | msgstr "पेस्ट करें" 28 | 29 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 30 | #, qt-format 31 | msgctxt "TextFieldContextMenu|" 32 | msgid "No Suggestions for \"%1\"" 33 | msgstr "\"%1\" के लिए कोई सुझाव नहीं" 34 | 35 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 36 | #, qt-format 37 | msgctxt "TextFieldContextMenu|" 38 | msgid "Add \"%1\" to Dictionary" 39 | msgstr "\"%1\" को शब्दकोश में जोड़ें" 40 | 41 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 42 | msgctxt "TextFieldContextMenu|" 43 | msgid "Ignore" 44 | msgstr "अनदेखा करना" 45 | 46 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 47 | msgctxt "TextFieldContextMenu|" 48 | msgid "Spell Check" 49 | msgstr "वर्तनी की जाँच" 50 | 51 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 52 | msgctxt "TextFieldContextMenu|" 53 | msgid "Undo" 54 | msgstr "पूर्ववत" 55 | 56 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 57 | msgctxt "TextFieldContextMenu|" 58 | msgid "Redo" 59 | msgstr "फिर से करना" 60 | 61 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 62 | msgctxt "TextFieldContextMenu|" 63 | msgid "Cut" 64 | msgstr "काटना" 65 | 66 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 67 | msgctxt "TextFieldContextMenu|" 68 | msgid "Copy" 69 | msgstr "प्रतिलिपि" 70 | 71 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 72 | msgctxt "TextFieldContextMenu|" 73 | msgid "Paste" 74 | msgstr "पेस्ट करें" 75 | 76 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 77 | msgctxt "TextFieldContextMenu|" 78 | msgid "Delete" 79 | msgstr "मिटाना" 80 | 81 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 82 | msgctxt "TextFieldContextMenu|" 83 | msgid "Select All" 84 | msgstr "सबका चयन करें" 85 | -------------------------------------------------------------------------------- /poqm/zh_TW/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Kisaragi Hiu 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-10 16:05+0900\n" 6 | "Last-Translator: Kisaragi Hiu \n" 7 | "Language-Team: Traditional Chinese \n" 8 | "Language: zh_TW\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=1; plural=0;\n" 14 | "X-Generator: Lokalize 24.04.70\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "剪下" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "複製" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "貼上" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "沒有 \"%1\" 的建議" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "將 \"%1\" 加到字典中" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "忽略" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "拼字檢查" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "復原" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "重做" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "剪下" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "複製" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "貼上" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "刪除" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "全部選取" 87 | -------------------------------------------------------------------------------- /poqm/ka/qqc2desktopstyle_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.3.2\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "ამოჭრა" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "კოპირება" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "ჩასმა" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "\"%1\"-ისთვის მინიშნება არ არსებობს" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "\"%1-ის ჩამატება ლექსიკონში" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "გამოტოვება" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "მართლწერის შემოწმება" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "დაბრუნება" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "გამეორება" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "ამოჭრა" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "კოპირება" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "ჩასმა" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "წაშლა" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "ყველას მონიშვნა" 87 | -------------------------------------------------------------------------------- /poqm/zh_CN/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: kdeorg\n" 4 | "PO-Revision-Date: 2024-04-22 15:59\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/qqc2-desktop-style/qqc2desktopstyle_qt." 16 | "pot\n" 17 | "X-Crowdin-File-ID: 49498\n" 18 | 19 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 20 | msgctxt "MobileTextActionsToolBarImpl|" 21 | msgid "Cut" 22 | msgstr "剪切" 23 | 24 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 25 | msgctxt "MobileTextActionsToolBarImpl|" 26 | msgid "Copy" 27 | msgstr "复制" 28 | 29 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 30 | msgctxt "MobileTextActionsToolBarImpl|" 31 | msgid "Paste" 32 | msgstr "粘贴" 33 | 34 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 35 | #, qt-format 36 | msgctxt "TextFieldContextMenu|" 37 | msgid "No Suggestions for \"%1\"" 38 | msgstr "没有关于“%1”的建议" 39 | 40 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 41 | #, qt-format 42 | msgctxt "TextFieldContextMenu|" 43 | msgid "Add \"%1\" to Dictionary" 44 | msgstr "添加“%1”到词典" 45 | 46 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 47 | msgctxt "TextFieldContextMenu|" 48 | msgid "Ignore" 49 | msgstr "忽略" 50 | 51 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 52 | msgctxt "TextFieldContextMenu|" 53 | msgid "Spell Check" 54 | msgstr "拼写检查" 55 | 56 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 57 | msgctxt "TextFieldContextMenu|" 58 | msgid "Undo" 59 | msgstr "撤销" 60 | 61 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 62 | msgctxt "TextFieldContextMenu|" 63 | msgid "Redo" 64 | msgstr "重做" 65 | 66 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 67 | msgctxt "TextFieldContextMenu|" 68 | msgid "Cut" 69 | msgstr "剪切" 70 | 71 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 72 | msgctxt "TextFieldContextMenu|" 73 | msgid "Copy" 74 | msgstr "复制" 75 | 76 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 77 | msgctxt "TextFieldContextMenu|" 78 | msgid "Paste" 79 | msgstr "粘贴" 80 | 81 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 82 | msgctxt "TextFieldContextMenu|" 83 | msgid "Delete" 84 | msgstr "删除" 85 | 86 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 87 | msgctxt "TextFieldContextMenu|" 88 | msgid "Select All" 89 | msgstr "全选" 90 | -------------------------------------------------------------------------------- /poqm/ia/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # giovanni , 2024. 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-10 12:51+0200\n" 6 | "Last-Translator: giovanni \n" 7 | "Language-Team: Interlingua \n" 8 | "Language: ia\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 22.12.3\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Talia" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Copia" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Colla" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Necun suggestion per \"%1\"" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Adde \"%1\" al Dictionario" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignora" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Controlo Orthographic" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Annulla" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Reface" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Talia" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Copia" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Colla" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Dele" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Selige toto" 87 | -------------------------------------------------------------------------------- /poqm/tr/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Emir SARI 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-10 13:51+0300\n" 6 | "Last-Translator: Emir SARI \n" 7 | "Language-Team: Turkish \n" 8 | "Language: tr\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.07.70\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Kes" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Kopyala" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Yapıştır" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "“%1” için Öneri Yok" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Sözlüğe Ekle: “%1”" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Yok Say" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Yazım Denetimi" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Geri Al" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Yinele" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Kes" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Kopyala" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Yapıştır" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Sil" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Tümünü Seç" 87 | -------------------------------------------------------------------------------- /poqm/en_GB/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Steve Allewell 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-21 19:31+0100\n" 6 | "Last-Translator: Steve Allewell \n" 7 | "Language-Team: British English\n" 8 | "Language: en_GB\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.02.2\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Cut" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Copy" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Paste" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "No Suggestions for \"%1\"" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Add \"%1\" to Dictionary" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignore" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Spell Check" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Undo" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Redo" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Cut" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Copy" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Paste" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Delete" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Select All" 87 | -------------------------------------------------------------------------------- /poqm/is/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2025 Sveinn í Felli 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2025-12-02 08:35+0000\n" 6 | "Last-Translator: Sveinn í Felli \n" 7 | "Language-Team: Icelandic\n" 8 | "Language: is\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: Plural-Forms: nplurals=2; plural=n != 1;\n" 14 | "X-Generator: Lokalize 23.08.5\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Klippa" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Afrita" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Líma" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Engar tillögur fyrir \"%1\"" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Bæta \"%1\" í orðasafn" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Hunsa" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Stafsetningaryfirferð" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Afturkalla" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Endurtaka" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Klippa" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Afrita" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Líma" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Eyða" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Velja allt" 87 | -------------------------------------------------------------------------------- /org.kde.desktop/VerticalHeaderView.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Marco Martin 3 | SPDX-FileCopyrightText: 2020 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | pragma ComponentBehavior: Bound 9 | 10 | import QtQuick 11 | import QtQuick.Templates as T 12 | import org.kde.qqc2desktopstyle.private as StylePrivate 13 | 14 | T.VerticalHeaderView { 15 | id: controlRoot 16 | 17 | // The contentWidth of TableView will be zero at start-up, until the delegate 18 | // items have been loaded. This means that even if the implicit width of 19 | // VerticalHeaderView should be the same as the content width in the end, we 20 | // need to ensure that it has at least a width of 1 at start-up, otherwise 21 | // TableView won't bother loading any delegates at all. 22 | implicitWidth: Math.max(1, contentWidth) 23 | implicitHeight: syncView ? syncView.height : 0 24 | 25 | delegate: StylePrivate.StyleItem { 26 | required property var model 27 | required property int row 28 | readonly property string headerPosition: { 29 | if (controlRoot.rows === 1) { 30 | return "only"; 31 | } else if (model.row == 0) { 32 | return "beginning"; 33 | } else { 34 | return "middle"; 35 | } 36 | } 37 | 38 | text: model[controlRoot.textRole] 39 | elementType: "header" 40 | on: { 41 | let selectionModel = controlRoot.selectionModel 42 | if (!selectionModel && controlRoot.syncView) { 43 | if (controlRoot.syncView.selectionModel && controlRoot.syncView.model == controlRoot.model) { 44 | selectionModel = controlRoot.syncView.selectionModel 45 | } 46 | } 47 | if (!selectionModel) { 48 | return false 49 | } 50 | 51 | // This line is for property bindings 52 | void(selectionModel.selectedIndexes); 53 | return selectionModel.rowIntersectsSelection(model.row) 54 | } 55 | properties: { 56 | "headerpos": headerPosition, 57 | "textalignment": Text.AlignVCenter | Text.AlignHCenter, 58 | "orientation": Qt.Vertical 59 | } 60 | } 61 | 62 | StylePrivate.StyleItem { 63 | parent: controlRoot 64 | anchors.fill: parent 65 | anchors.topMargin: controlRoot.contentHeight 66 | z: -1 67 | elementType: "header" 68 | properties: { 69 | "headerpos": "end", 70 | "orientation": Qt.Vertical 71 | } 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /poqm/it/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Paolo Zamponi 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-14 15:46+0200\n" 6 | "Last-Translator: Paolo Zamponi \n" 7 | "Language-Team: Italian \n" 8 | "Language: it\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-Generator: Lokalize 24.02.2\n" 14 | "X-Qt-Contexts: true\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Taglia" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Copia" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Incolla" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Nessun suggerimento per «%1»" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Aggiungi «%1» al dizionario" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignora" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Controllo ortografico" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Annulla" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Rifai" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Taglia" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Copia" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Incolla" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Elimina" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Seleziona tutto" 87 | -------------------------------------------------------------------------------- /poqm/nl/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Freek de Kruijf 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-10 11:24+0200\n" 6 | "Last-Translator: Freek de Kruijf \n" 7 | "Language-Team: \n" 8 | "Language: nl\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.02.2\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Knippen" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Kopiëren" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Plakken" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Geen suggesties voor \"%1\"" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "\"%1\" aan woordenboek toevoegen" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Negeren" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Spellingcontrole" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Ongedaan maken" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Opnieuw" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Knippen" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Kopiëren" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Plakken" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Verwijderen" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Alles selecteren" 87 | -------------------------------------------------------------------------------- /poqm/cs/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Vit Pelcak 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-17 14:03+0200\n" 6 | "Last-Translator: Vit Pelcak \n" 7 | "Language-Team: Czech \n" 8 | "Language: cs\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=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 13 | "X-Generator: Lokalize 24.02.2\n" 14 | "X-Qt-Contexts: true\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Vyjmout" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Kopírovat" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Vložit" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Žádné návrhy pro \"%1\"" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Přidat \"%1\" do slovníku" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignorovat" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Kontrola pravopisu" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Zpět" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Znovu" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Vyjmout" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Kopírovat" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Vložit" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Smazat" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Vybrat vše" 87 | -------------------------------------------------------------------------------- /poqm/fi/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Tommi Nieminen 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-10-16 17:28+0300\n" 6 | "Last-Translator: Tommi Nieminen \n" 7 | "Language-Team: Finnish \n" 8 | "Language: fi\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-Generator: Lokalize 24.08.2\n" 14 | "X-Qt-Contexts: true\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Leikkaa" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Kopioi" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Liitä" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Ei ehdotuksia: ”%1”" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Lisää ”%1” sanastoon" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Sivuuta" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Oikeinkirjoituksen tarkistus" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Kumoa" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Tee uudelleen" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Leikkaa" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Kopioi" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Liitä" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Poista" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Valitse kaikki" 87 | -------------------------------------------------------------------------------- /poqm/gl/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Adrián Chaves (Gallaecio) 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-12 14:24+0200\n" 6 | "Last-Translator: Adrián Chaves (Gallaecio) \n" 7 | "Language-Team: Proxecto Trasno (proxecto@trasno.gal)\n" 8 | "Language: gl\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-Generator: Lokalize 24.02.2\n" 14 | "X-Qt-Contexts: true\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Cortar" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Copiar" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Pegar" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Non hai suxestións para «%1»" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Engadir «%1» ao dicionario" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignorar" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Corrección ortográfica" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Desfacer" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Refacer" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Cortar" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Copiar" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Pegar" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Eliminar" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Seleccionalo todo" 87 | -------------------------------------------------------------------------------- /poqm/ro/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # Sergiu Bivol , 2024. 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-06-09 15:17+0100\n" 6 | "Last-Translator: Sergiu Bivol \n" 7 | "Language-Team: Romanian \n" 8 | "Language: ro\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=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " 13 | "20)) ? 1 : 2;\n" 14 | "X-Generator: Lokalize 21.12.3\n" 15 | "X-Qt-Contexts: true\n" 16 | 17 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 18 | msgctxt "MobileTextActionsToolBarImpl|" 19 | msgid "Cut" 20 | msgstr "Taie" 21 | 22 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 23 | msgctxt "MobileTextActionsToolBarImpl|" 24 | msgid "Copy" 25 | msgstr "Copiază" 26 | 27 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 28 | msgctxt "MobileTextActionsToolBarImpl|" 29 | msgid "Paste" 30 | msgstr "Lipește" 31 | 32 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 33 | #, qt-format 34 | msgctxt "TextFieldContextMenu|" 35 | msgid "No Suggestions for \"%1\"" 36 | msgstr "Nicio sugestie pentru „%1”" 37 | 38 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 39 | #, qt-format 40 | msgctxt "TextFieldContextMenu|" 41 | msgid "Add \"%1\" to Dictionary" 42 | msgstr "Adaugă „%1” la dicționar" 43 | 44 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 45 | msgctxt "TextFieldContextMenu|" 46 | msgid "Ignore" 47 | msgstr "Ignoră" 48 | 49 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 50 | msgctxt "TextFieldContextMenu|" 51 | msgid "Spell Check" 52 | msgstr "Verificare ortografică" 53 | 54 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 55 | msgctxt "TextFieldContextMenu|" 56 | msgid "Undo" 57 | msgstr "Desfă" 58 | 59 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 60 | msgctxt "TextFieldContextMenu|" 61 | msgid "Redo" 62 | msgstr "Refă" 63 | 64 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 65 | msgctxt "TextFieldContextMenu|" 66 | msgid "Cut" 67 | msgstr "Taie" 68 | 69 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 70 | msgctxt "TextFieldContextMenu|" 71 | msgid "Copy" 72 | msgstr "Copiază" 73 | 74 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 75 | msgctxt "TextFieldContextMenu|" 76 | msgid "Paste" 77 | msgstr "Lipește" 78 | 79 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 80 | msgctxt "TextFieldContextMenu|" 81 | msgid "Delete" 82 | msgstr "Șterge" 83 | 84 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 85 | msgctxt "TextFieldContextMenu|" 86 | msgid "Select All" 87 | msgstr "Selectează tot" 88 | -------------------------------------------------------------------------------- /poqm/ar/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Zayed Al-Saidi 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-16 13:45+0400\n" 6 | "Last-Translator: Zayed Al-Saidi \n" 7 | "Language-Team: ar\n" 8 | "Language: ar\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=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " 13 | "&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" 14 | "X-Generator: Lokalize 23.08.5\n" 15 | "X-Qt-Contexts: true\n" 16 | 17 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 18 | msgctxt "MobileTextActionsToolBarImpl|" 19 | msgid "Cut" 20 | msgstr "قصّ" 21 | 22 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 23 | msgctxt "MobileTextActionsToolBarImpl|" 24 | msgid "Copy" 25 | msgstr "انسخ" 26 | 27 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 28 | msgctxt "MobileTextActionsToolBarImpl|" 29 | msgid "Paste" 30 | msgstr "ألصق" 31 | 32 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 33 | #, qt-format 34 | msgctxt "TextFieldContextMenu|" 35 | msgid "No Suggestions for \"%1\"" 36 | msgstr "لا اقتراحات لِـ\"%1\"" 37 | 38 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 39 | #, qt-format 40 | msgctxt "TextFieldContextMenu|" 41 | msgid "Add \"%1\" to Dictionary" 42 | msgstr "أضف \"%1\" إلى القاموس" 43 | 44 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 45 | msgctxt "TextFieldContextMenu|" 46 | msgid "Ignore" 47 | msgstr "تجاهل" 48 | 49 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 50 | msgctxt "TextFieldContextMenu|" 51 | msgid "Spell Check" 52 | msgstr "تدقيق الإملاء" 53 | 54 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 55 | msgctxt "TextFieldContextMenu|" 56 | msgid "Undo" 57 | msgstr "تراجع" 58 | 59 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 60 | msgctxt "TextFieldContextMenu|" 61 | msgid "Redo" 62 | msgstr "كرّر" 63 | 64 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 65 | msgctxt "TextFieldContextMenu|" 66 | msgid "Cut" 67 | msgstr "قصّ" 68 | 69 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 70 | msgctxt "TextFieldContextMenu|" 71 | msgid "Copy" 72 | msgstr "انسخ" 73 | 74 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 75 | msgctxt "TextFieldContextMenu|" 76 | msgid "Paste" 77 | msgstr "ألصق" 78 | 79 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 80 | msgctxt "TextFieldContextMenu|" 81 | msgid "Delete" 82 | msgstr "احذف" 83 | 84 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 85 | msgctxt "TextFieldContextMenu|" 86 | msgid "Select All" 87 | msgstr "حدّد الكلّ" 88 | -------------------------------------------------------------------------------- /poqm/hu/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Kristof Kiszel 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-11 22:22+0200\n" 6 | "Last-Translator: Kristof Kiszel \n" 7 | "Language-Team: Hungarian \n" 8 | "Language: hu\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.02.2\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Kivágás" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Másolás" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Beillesztés" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Nincsenek javaslatok ehhez: „%1”" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "„%1” hozzáadása a szótárhoz" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Mellőzés" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Helyesírás-ellenőrzés" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Visszavonás" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Újra" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Kivágás" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Másolás" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Beillesztés" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Törlés" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Összes kijelölése" 87 | -------------------------------------------------------------------------------- /poqm/he/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Yaron Shahrabani 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-10 20:15+0300\n" 6 | "Last-Translator: Yaron Shahrabani \n" 7 | "Language-Team: צוות התרגום של KDE ישראל\n" 8 | "Language: he\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=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " 14 | "n % 10 == 0) ? 2 : 3));\n" 15 | "X-Generator: Lokalize 23.08.5\n" 16 | 17 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 18 | msgctxt "MobileTextActionsToolBarImpl|" 19 | msgid "Cut" 20 | msgstr "גזירה" 21 | 22 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 23 | msgctxt "MobileTextActionsToolBarImpl|" 24 | msgid "Copy" 25 | msgstr "העתקה" 26 | 27 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 28 | msgctxt "MobileTextActionsToolBarImpl|" 29 | msgid "Paste" 30 | msgstr "הדבקה" 31 | 32 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 33 | #, qt-format 34 | msgctxt "TextFieldContextMenu|" 35 | msgid "No Suggestions for \"%1\"" 36 | msgstr "אין הצעות עבור „%1”" 37 | 38 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 39 | #, qt-format 40 | msgctxt "TextFieldContextMenu|" 41 | msgid "Add \"%1\" to Dictionary" 42 | msgstr "הוספת „%1” למילון" 43 | 44 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 45 | msgctxt "TextFieldContextMenu|" 46 | msgid "Ignore" 47 | msgstr "התעלמות" 48 | 49 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 50 | msgctxt "TextFieldContextMenu|" 51 | msgid "Spell Check" 52 | msgstr "בדיקת איות" 53 | 54 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 55 | msgctxt "TextFieldContextMenu|" 56 | msgid "Undo" 57 | msgstr "הסגה" 58 | 59 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 60 | msgctxt "TextFieldContextMenu|" 61 | msgid "Redo" 62 | msgstr "החזרה" 63 | 64 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 65 | msgctxt "TextFieldContextMenu|" 66 | msgid "Cut" 67 | msgstr "גזירה" 68 | 69 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 70 | msgctxt "TextFieldContextMenu|" 71 | msgid "Copy" 72 | msgstr "העתקה" 73 | 74 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 75 | msgctxt "TextFieldContextMenu|" 76 | msgid "Paste" 77 | msgstr "הדבקה" 78 | 79 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 80 | msgctxt "TextFieldContextMenu|" 81 | msgid "Delete" 82 | msgstr "מחיקה" 83 | 84 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 85 | msgctxt "TextFieldContextMenu|" 86 | msgid "Select All" 87 | msgstr "בחירה בהכול" 88 | -------------------------------------------------------------------------------- /poqm/sv/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Stefan Asserhäll 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-06-21 14:42+0200\n" 6 | "Last-Translator: Stefan Asserhäll \n" 7 | "Language-Team: Swedish \n" 8 | "Language: sv\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.08.5\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Klipp ut" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Kopiera" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Klistra in" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Inga förslag för \"%1\"" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Lägg till \"%1\" i ordlista" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignorera" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Stavningskontroll" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Ångra" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Gör om" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Klipp ut" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Kopiera" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Klistra in" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Ta bort" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Markera alla" 87 | -------------------------------------------------------------------------------- /poqm/ta/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Kishore G 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-12 11:23+0530\n" 6 | "Last-Translator: Kishore G \n" 7 | "Language-Team: Tamil \n" 8 | "Language: ta\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.02.2\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "வெட்டு" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "நகலெடு" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "ஒட்டு" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "\"%1 என்பதற்கு எதுவும் பரிந்துரைக்கப்படவில்லை" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "\"%1\" தனை அகரமுதலியில் சேர்" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "பொருட்படுத்தாதே" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "சொல் திருத்தி" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "செயல்நீக்கு" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "மீளச்செய்" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "வெட்டு" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "நகலெடு" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "ஒட்டு" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "நீக்கு" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "அனைத்தையும் தேர்ந்தெடு" 87 | -------------------------------------------------------------------------------- /poqm/pt_BR/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2025 Marcus Gama 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2025-08-27 10:08-0300\n" 6 | "Last-Translator: Marcus Gama \n" 7 | "Language-Team: Brazilian Portuguese \n" 8 | "Language: pt_BR\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 25.08.0\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Recortar" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Copiar" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Colar" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Sem sugestões para \"%1\"" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Adicionar \"%1\" ao dicionário" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignorar" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Verificação ortográfica" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Desfazer" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Refazer" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Recortar" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Copiar" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Colar" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Excluir" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Selecionar tudo" 87 | -------------------------------------------------------------------------------- /org.kde.desktop/TabBar.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | SPDX-FileCopyrightText: 2023 ivan tkachenko 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | 10 | import QtQuick 11 | import org.kde.kirigami as Kirigami 12 | import QtQuick.Templates as T 13 | import org.kde.qqc2desktopstyle.private as StylePrivate 14 | 15 | T.TabBar { 16 | id: controlRoot 17 | 18 | Kirigami.Theme.colorSet: Kirigami.Theme.Window 19 | Kirigami.Theme.inherit: false 20 | 21 | //Some QStyles seem to not return sensible pixelmetrics here 22 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 23 | contentWidth + leftPadding + rightPadding, 24 | Kirigami.Units.gridUnit * 6) 25 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 26 | contentHeight + topPadding + bottomPadding) 27 | 28 | spacing: 0 29 | 30 | contentItem: ListView { 31 | implicitWidth: contentWidth 32 | // The binding to contentModel.count is such that it updates when the TabBar is populated on demand 33 | implicitHeight: controlRoot.contentModel.get(controlRoot.contentModel.count * 0).height 34 | 35 | model: controlRoot.contentModel 36 | currentIndex: controlRoot.currentIndex 37 | 38 | spacing: -styleItem.pixelMetric("tabOverlap") 39 | orientation: ListView.Horizontal 40 | boundsBehavior: Flickable.StopAtBounds 41 | flickableDirection: Flickable.AutoFlickIfNeeded 42 | snapMode: ListView.SnapToItem 43 | 44 | highlightMoveDuration: 0 45 | highlightRangeMode: ListView.ApplyRange 46 | preferredHighlightBegin: 40 47 | preferredHighlightEnd: width - 40 48 | } 49 | 50 | StylePrivate.StyleItem { 51 | id: styleItem 52 | control: controlRoot 53 | visible: false 54 | elementType: "tabframe" 55 | properties: { 56 | "orientation": controlRoot.position === T.TabBar.Header ? "Top" : "Bottom" 57 | } 58 | } 59 | 60 | background: MouseArea { 61 | acceptedButtons: Qt.NoButton 62 | onWheel: (wheel) => { 63 | let delta = wheel.pixelDelta.y < 0 || wheel.angleDelta.y < 0 ? 1 : -1; 64 | for (let i = controlRoot.currentIndex + delta; i >= 0 && i < controlRoot.contentModel.count; i += delta) { 65 | if (controlRoot.contentModel.get(i).enabled) { 66 | controlRoot.currentIndex = i; 67 | break; 68 | } 69 | } 70 | } 71 | } 72 | } 73 | -------------------------------------------------------------------------------- /poqm/pl/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Łukasz Wojniłowicz 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-12 08:38+0200\n" 6 | "Last-Translator: Łukasz Wojniłowicz \n" 7 | "Language-Team: Polish \n" 8 | "Language: pl\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=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " 13 | "|| n%100>=20) ? 1 : 2);\n" 14 | "X-Qt-Contexts: true\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Wytnij" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Skopiuj" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Wklej" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Brak podpowiedzi dla \"%1\"" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Dodaj \"%1\" do słownika" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Pomiń" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Sprawdzanie pisowni" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Cofnij" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Przywróć" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Wytnij" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Skopiuj" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Wklej" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Usuń" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Zaznacz wszystko" 87 | -------------------------------------------------------------------------------- /poqm/fr/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Xavier Besnard 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: qqc2desktopstyle_qt\n" 5 | "PO-Revision-Date: 2024-05-13 08:58+0200\n" 6 | "Last-Translator: Xavier Besnard \n" 7 | "Language-Team: French >\n" 8 | "Language: fr\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-Generator: Lokalize 23.08.5\n" 14 | "X-Qt-Contexts: true\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Couper" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Copier" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Coller" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Aucune suggestion pour « %1 »" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "Ajouter « %1 » au dictionnaire" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignorer" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Vérifier l'orthographe" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Annuler" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Refaire" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Couper" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Copier" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Coller" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Supprimer" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Tout sélectionner" 87 | -------------------------------------------------------------------------------- /poqm/lv/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Toms Trasuns 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-26 21:02+0300\n" 6 | "Last-Translator: Toms Trasuns \n" 7 | "Language-Team: Latvian \n" 8 | "Language: lv\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : " 14 | "2);\n" 15 | "X-Generator: Lokalize 24.02.2\n" 16 | 17 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 18 | msgctxt "MobileTextActionsToolBarImpl|" 19 | msgid "Cut" 20 | msgstr "Izgriezt" 21 | 22 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 23 | msgctxt "MobileTextActionsToolBarImpl|" 24 | msgid "Copy" 25 | msgstr "Kopēt" 26 | 27 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 28 | msgctxt "MobileTextActionsToolBarImpl|" 29 | msgid "Paste" 30 | msgstr "Ielīmēt" 31 | 32 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 33 | #, qt-format 34 | msgctxt "TextFieldContextMenu|" 35 | msgid "No Suggestions for \"%1\"" 36 | msgstr "Nav ieteikumu vārdam „%1“" 37 | 38 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 39 | #, qt-format 40 | msgctxt "TextFieldContextMenu|" 41 | msgid "Add \"%1\" to Dictionary" 42 | msgstr "Pievienot „%1“ vārdnīcai" 43 | 44 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 45 | msgctxt "TextFieldContextMenu|" 46 | msgid "Ignore" 47 | msgstr "Ignorēt" 48 | 49 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 50 | msgctxt "TextFieldContextMenu|" 51 | msgid "Spell Check" 52 | msgstr "Pareizrakstības pārbaude" 53 | 54 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 55 | msgctxt "TextFieldContextMenu|" 56 | msgid "Undo" 57 | msgstr "Atsaukt" 58 | 59 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 60 | msgctxt "TextFieldContextMenu|" 61 | msgid "Redo" 62 | msgstr "Atatsaukt" 63 | 64 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 65 | msgctxt "TextFieldContextMenu|" 66 | msgid "Cut" 67 | msgstr "Izgriezt" 68 | 69 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 70 | msgctxt "TextFieldContextMenu|" 71 | msgid "Copy" 72 | msgstr "Kopēt" 73 | 74 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 75 | msgctxt "TextFieldContextMenu|" 76 | msgid "Paste" 77 | msgstr "Ielīmēt" 78 | 79 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 80 | msgctxt "TextFieldContextMenu|" 81 | msgid "Delete" 82 | msgstr "Dzēst" 83 | 84 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 85 | msgctxt "TextFieldContextMenu|" 86 | msgid "Select All" 87 | msgstr "Atlasīt visu" 88 | -------------------------------------------------------------------------------- /poqm/de/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2025 Alois Spitzbart 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: qqc2desktopstyle_qt\n" 5 | "PO-Revision-Date: 2025-05-18 11:29+0200\n" 6 | "Last-Translator: Alois Spitzbart \n" 7 | "Language-Team: German \n" 8 | "Language: de\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-Generator: Lokalize 25.07.70\n" 14 | "X-Qt-Contexts: true\n" 15 | 16 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 17 | msgctxt "MobileTextActionsToolBarImpl|" 18 | msgid "Cut" 19 | msgstr "Ausschneiden" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Copy" 24 | msgstr "Kopieren" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Paste" 29 | msgstr "Einfügen" 30 | 31 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 32 | #, qt-format 33 | msgctxt "TextFieldContextMenu|" 34 | msgid "No Suggestions for \"%1\"" 35 | msgstr "Keine Vorschläge für „%1“" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "Add \"%1\" to Dictionary" 41 | msgstr "„%1“ zum Wörterbuch hinzufügen" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Ignore" 46 | msgstr "Ignorieren" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Spell Check" 51 | msgstr "Rechtschreibprüfung" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Undo" 56 | msgstr "Rückgängig" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Redo" 61 | msgstr "Wiederherstellen" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Cut" 66 | msgstr "Ausschneiden" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Copy" 71 | msgstr "Kopieren" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Paste" 76 | msgstr "Einfügen" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Delete" 81 | msgstr "Löschen" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Select All" 86 | msgstr "Alles auswählen" 87 | -------------------------------------------------------------------------------- /poqm/uk/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # Yuri Chornoivan , 2024. 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-05-10 14:33+0300\n" 6 | "Last-Translator: Yuri Chornoivan \n" 7 | "Language-Team: Ukrainian\n" 8 | "Language: uk\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=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n" 14 | "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 15 | "X-Generator: Lokalize 23.04.3\n" 16 | 17 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 18 | msgctxt "MobileTextActionsToolBarImpl|" 19 | msgid "Cut" 20 | msgstr "Вирізати" 21 | 22 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 23 | msgctxt "MobileTextActionsToolBarImpl|" 24 | msgid "Copy" 25 | msgstr "Копіювати" 26 | 27 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 28 | msgctxt "MobileTextActionsToolBarImpl|" 29 | msgid "Paste" 30 | msgstr "Вставити" 31 | 32 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 33 | #, qt-format 34 | msgctxt "TextFieldContextMenu|" 35 | msgid "No Suggestions for \"%1\"" 36 | msgstr "Немає пропозицій щодо «%1»" 37 | 38 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 39 | #, qt-format 40 | msgctxt "TextFieldContextMenu|" 41 | msgid "Add \"%1\" to Dictionary" 42 | msgstr "Додати «%1» до словника" 43 | 44 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 45 | msgctxt "TextFieldContextMenu|" 46 | msgid "Ignore" 47 | msgstr "Ігнорувати" 48 | 49 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 50 | msgctxt "TextFieldContextMenu|" 51 | msgid "Spell Check" 52 | msgstr "Перевірка правопису" 53 | 54 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 55 | msgctxt "TextFieldContextMenu|" 56 | msgid "Undo" 57 | msgstr "Скасувати" 58 | 59 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 60 | msgctxt "TextFieldContextMenu|" 61 | msgid "Redo" 62 | msgstr "Повторити" 63 | 64 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 65 | msgctxt "TextFieldContextMenu|" 66 | msgid "Cut" 67 | msgstr "Вирізати" 68 | 69 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 70 | msgctxt "TextFieldContextMenu|" 71 | msgid "Copy" 72 | msgstr "Копіювати" 73 | 74 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 75 | msgctxt "TextFieldContextMenu|" 76 | msgid "Paste" 77 | msgstr "Вставити" 78 | 79 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 80 | msgctxt "TextFieldContextMenu|" 81 | msgid "Delete" 82 | msgstr "Вилучити" 83 | 84 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 85 | msgctxt "TextFieldContextMenu|" 86 | msgid "Select All" 87 | msgstr "Позначити все" 88 | -------------------------------------------------------------------------------- /poqm/sl/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Matjaž Jeran 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "POT-Creation-Date: \n" 6 | "PO-Revision-Date: 2024-05-10 06:18+0200\n" 7 | "Last-Translator: Matjaž Jeran \n" 8 | "Language-Team: Slovenian \n" 9 | "Language: sl\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100>=3 && n" 14 | "%100<=4 ? 2 : 3);\n" 15 | "X-Qt-Contexts: true\n" 16 | "X-Generator: Poedit 3.4.2\n" 17 | 18 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 19 | msgctxt "MobileTextActionsToolBarImpl|" 20 | msgid "Cut" 21 | msgstr "Izreži" 22 | 23 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 24 | msgctxt "MobileTextActionsToolBarImpl|" 25 | msgid "Copy" 26 | msgstr "Kopiraj" 27 | 28 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 29 | msgctxt "MobileTextActionsToolBarImpl|" 30 | msgid "Paste" 31 | msgstr "Prilepi" 32 | 33 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 34 | #, qt-format 35 | msgctxt "TextFieldContextMenu|" 36 | msgid "No Suggestions for \"%1\"" 37 | msgstr "Ni predlogov za \"%1\"" 38 | 39 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 40 | #, qt-format 41 | msgctxt "TextFieldContextMenu|" 42 | msgid "Add \"%1\" to Dictionary" 43 | msgstr "Dodaj \"%1\" v slovar" 44 | 45 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 46 | msgctxt "TextFieldContextMenu|" 47 | msgid "Ignore" 48 | msgstr "Prezri" 49 | 50 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 51 | msgctxt "TextFieldContextMenu|" 52 | msgid "Spell Check" 53 | msgstr "Črkovalnik" 54 | 55 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 56 | msgctxt "TextFieldContextMenu|" 57 | msgid "Undo" 58 | msgstr "Razveljavi" 59 | 60 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 61 | msgctxt "TextFieldContextMenu|" 62 | msgid "Redo" 63 | msgstr "Uveljavi" 64 | 65 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 66 | msgctxt "TextFieldContextMenu|" 67 | msgid "Cut" 68 | msgstr "Izreži" 69 | 70 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 71 | msgctxt "TextFieldContextMenu|" 72 | msgid "Copy" 73 | msgstr "Kopiraj" 74 | 75 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 76 | msgctxt "TextFieldContextMenu|" 77 | msgid "Paste" 78 | msgstr "Prilepi" 79 | 80 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 81 | msgctxt "TextFieldContextMenu|" 82 | msgid "Delete" 83 | msgstr "Izbriši" 84 | 85 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 86 | msgctxt "TextFieldContextMenu|" 87 | msgid "Select All" 88 | msgstr "Izberi vse" 89 | -------------------------------------------------------------------------------- /poqm/nb/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # Translation of qqc2desktopstyle_qt to Norwegian Bokmål 2 | # 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: \n" 6 | "PO-Revision-Date: 2025-03-24 07:45+0100\n" 7 | "Last-Translator: Martin Hansen \n" 8 | "Language-Team: Norwegian Bokmål \n" 9 | "Language: nb\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 14 | "X-Generator: Lokalize 24.12.3\n" 15 | "X-Environment: kde\n" 16 | "X-Accelerator-Marker: &\n" 17 | "X-Text-Markup: qtrich\n" 18 | "X-Qt-Contexts: true\n" 19 | 20 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 21 | msgctxt "MobileTextActionsToolBarImpl|" 22 | msgid "Cut" 23 | msgstr "Klipp ut" 24 | 25 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 26 | msgctxt "MobileTextActionsToolBarImpl|" 27 | msgid "Copy" 28 | msgstr "Kopier" 29 | 30 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 31 | msgctxt "MobileTextActionsToolBarImpl|" 32 | msgid "Paste" 33 | msgstr "Lim inn" 34 | 35 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 36 | #, qt-format 37 | msgctxt "TextFieldContextMenu|" 38 | msgid "No Suggestions for \"%1\"" 39 | msgstr "Ingen forslag for «%1»" 40 | 41 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 42 | #, qt-format 43 | msgctxt "TextFieldContextMenu|" 44 | msgid "Add \"%1\" to Dictionary" 45 | msgstr "Legg til «%1» i ordlista" 46 | 47 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 48 | msgctxt "TextFieldContextMenu|" 49 | msgid "Ignore" 50 | msgstr "Ignorer" 51 | 52 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 53 | msgctxt "TextFieldContextMenu|" 54 | msgid "Spell Check" 55 | msgstr "Stavekontroll" 56 | 57 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 58 | msgctxt "TextFieldContextMenu|" 59 | msgid "Undo" 60 | msgstr "Angre" 61 | 62 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 63 | msgctxt "TextFieldContextMenu|" 64 | msgid "Redo" 65 | msgstr "Gjør om" 66 | 67 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 68 | msgctxt "TextFieldContextMenu|" 69 | msgid "Cut" 70 | msgstr "Klipp ut" 71 | 72 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 73 | msgctxt "TextFieldContextMenu|" 74 | msgid "Copy" 75 | msgstr "Kopier" 76 | 77 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 78 | msgctxt "TextFieldContextMenu|" 79 | msgid "Paste" 80 | msgstr "Lim inn" 81 | 82 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 83 | msgctxt "TextFieldContextMenu|" 84 | msgid "Delete" 85 | msgstr "Slett" 86 | 87 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 88 | msgctxt "TextFieldContextMenu|" 89 | msgid "Select All" 90 | msgstr "Merk alt" 91 | -------------------------------------------------------------------------------- /poqm/sk/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # translation of qqc2desktopstyle_qt.po to Slovak 2 | # SPDX-FileCopyrightText: 2024 Roman Paholik 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: qqc2desktopstyle_qt\n" 6 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 7 | "POT-Creation-Date: 2024-11-07 22:21+0100\n" 8 | "PO-Revision-Date: 2024-11-11 18:03+0100\n" 9 | "Last-Translator: Roman Paholík \n" 10 | "Language-Team: Slovak \n" 11 | "Language: sk\n" 12 | "MIME-Version: 1.0\n" 13 | "Content-Type: text/plain; charset=UTF-8\n" 14 | "Content-Transfer-Encoding: 8bit\n" 15 | "X-Generator: Lokalize 24.08.3\n" 16 | "Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" 17 | "X-Qt-Contexts: true\n" 18 | 19 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 20 | msgctxt "MobileTextActionsToolBarImpl|" 21 | msgid "Cut" 22 | msgstr "Vystrihnúť" 23 | 24 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 25 | msgctxt "MobileTextActionsToolBarImpl|" 26 | msgid "Copy" 27 | msgstr "Kopírovať" 28 | 29 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 30 | msgctxt "MobileTextActionsToolBarImpl|" 31 | msgid "Paste" 32 | msgstr "Vložiť" 33 | 34 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 35 | #, qt-format 36 | msgctxt "TextFieldContextMenu|" 37 | msgid "No Suggestions for \"%1\"" 38 | msgstr "" 39 | 40 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 41 | #, qt-format 42 | msgctxt "TextFieldContextMenu|" 43 | msgid "Add \"%1\" to Dictionary" 44 | msgstr "" 45 | 46 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 47 | msgctxt "TextFieldContextMenu|" 48 | msgid "Ignore" 49 | msgstr "Ignorovať" 50 | 51 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 52 | msgctxt "TextFieldContextMenu|" 53 | msgid "Spell Check" 54 | msgstr "" 55 | 56 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 57 | msgctxt "TextFieldContextMenu|" 58 | msgid "Undo" 59 | msgstr "" 60 | 61 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 62 | msgctxt "TextFieldContextMenu|" 63 | msgid "Redo" 64 | msgstr "" 65 | 66 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 67 | msgctxt "TextFieldContextMenu|" 68 | msgid "Cut" 69 | msgstr "" 70 | 71 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 72 | msgctxt "TextFieldContextMenu|" 73 | msgid "Copy" 74 | msgstr "" 75 | 76 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 77 | msgctxt "TextFieldContextMenu|" 78 | msgid "Paste" 79 | msgstr "" 80 | 81 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 82 | msgctxt "TextFieldContextMenu|" 83 | msgid "Delete" 84 | msgstr "Vymazať" 85 | 86 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 87 | msgctxt "TextFieldContextMenu|" 88 | msgid "Select All" 89 | msgstr "" 90 | -------------------------------------------------------------------------------- /poqm/nn/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # Translation of qqc2desktopstyle_qt to Norwegian Nynorsk 2 | # 3 | msgid "" 4 | msgstr "" 5 | "Project-Id-Version: \n" 6 | "PO-Revision-Date: 2024-09-27 20:44+0200\n" 7 | "Last-Translator: Karl Ove Hufthammer \n" 8 | "Language-Team: Norwegian Nynorsk \n" 9 | "Language: nn\n" 10 | "MIME-Version: 1.0\n" 11 | "Content-Type: text/plain; charset=UTF-8\n" 12 | "Content-Transfer-Encoding: 8bit\n" 13 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 14 | "X-Generator: Lokalize 24.08.1\n" 15 | "X-Environment: kde\n" 16 | "X-Accelerator-Marker: &\n" 17 | "X-Text-Markup: qtrich\n" 18 | "X-Qt-Contexts: true\n" 19 | 20 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 21 | msgctxt "MobileTextActionsToolBarImpl|" 22 | msgid "Cut" 23 | msgstr "Klipp ut" 24 | 25 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 26 | msgctxt "MobileTextActionsToolBarImpl|" 27 | msgid "Copy" 28 | msgstr "Kopier" 29 | 30 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 31 | msgctxt "MobileTextActionsToolBarImpl|" 32 | msgid "Paste" 33 | msgstr "Lim inn" 34 | 35 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 36 | #, qt-format 37 | msgctxt "TextFieldContextMenu|" 38 | msgid "No Suggestions for \"%1\"" 39 | msgstr "Ingen forslag for «%1»" 40 | 41 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 42 | #, qt-format 43 | msgctxt "TextFieldContextMenu|" 44 | msgid "Add \"%1\" to Dictionary" 45 | msgstr "Legg til «%1» i ordlista" 46 | 47 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 48 | msgctxt "TextFieldContextMenu|" 49 | msgid "Ignore" 50 | msgstr "Hopp over" 51 | 52 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 53 | msgctxt "TextFieldContextMenu|" 54 | msgid "Spell Check" 55 | msgstr "Stavekontroll" 56 | 57 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 58 | msgctxt "TextFieldContextMenu|" 59 | msgid "Undo" 60 | msgstr "Angra" 61 | 62 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 63 | msgctxt "TextFieldContextMenu|" 64 | msgid "Redo" 65 | msgstr "Gjer om" 66 | 67 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 68 | msgctxt "TextFieldContextMenu|" 69 | msgid "Cut" 70 | msgstr "Klipp ut" 71 | 72 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 73 | msgctxt "TextFieldContextMenu|" 74 | msgid "Copy" 75 | msgstr "Kopier" 76 | 77 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 78 | msgctxt "TextFieldContextMenu|" 79 | msgid "Paste" 80 | msgstr "Lim inn" 81 | 82 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 83 | msgctxt "TextFieldContextMenu|" 84 | msgid "Delete" 85 | msgstr "Slett" 86 | 87 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 88 | msgctxt "TextFieldContextMenu|" 89 | msgid "Select All" 90 | msgstr "Merk alt" 91 | -------------------------------------------------------------------------------- /poqm/ru/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # SPDX-FileCopyrightText: 2024 Olesya Gerasimenko 2 | msgid "" 3 | msgstr "" 4 | "Project-Id-Version: \n" 5 | "PO-Revision-Date: 2024-07-17 11:34+0300\n" 6 | "Last-Translator: Olesya Gerasimenko \n" 7 | "Language-Team: Basealt Translation Team\n" 8 | "Language: ru\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=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" 14 | "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 15 | "X-Generator: Lokalize 23.08.5\n" 16 | 17 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 18 | msgctxt "MobileTextActionsToolBarImpl|" 19 | msgid "Cut" 20 | msgstr "Вырезать" 21 | 22 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 23 | msgctxt "MobileTextActionsToolBarImpl|" 24 | msgid "Copy" 25 | msgstr "Копировать" 26 | 27 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 28 | msgctxt "MobileTextActionsToolBarImpl|" 29 | msgid "Paste" 30 | msgstr "Вставить" 31 | 32 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 33 | #, qt-format 34 | msgctxt "TextFieldContextMenu|" 35 | msgid "No Suggestions for \"%1\"" 36 | msgstr "Нет предложений для «%1»" 37 | 38 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 39 | #, qt-format 40 | msgctxt "TextFieldContextMenu|" 41 | msgid "Add \"%1\" to Dictionary" 42 | msgstr "Добавить «%1» в словарь" 43 | 44 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 45 | msgctxt "TextFieldContextMenu|" 46 | msgid "Ignore" 47 | msgstr "Игнорировать" 48 | 49 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 50 | msgctxt "TextFieldContextMenu|" 51 | msgid "Spell Check" 52 | msgstr "Проверка орфографии" 53 | 54 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 55 | msgctxt "TextFieldContextMenu|" 56 | msgid "Undo" 57 | msgstr "Отменить" 58 | 59 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 60 | msgctxt "TextFieldContextMenu|" 61 | msgid "Redo" 62 | msgstr "Повторить" 63 | 64 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 65 | msgctxt "TextFieldContextMenu|" 66 | msgid "Cut" 67 | msgstr "Вырезать" 68 | 69 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 70 | msgctxt "TextFieldContextMenu|" 71 | msgid "Copy" 72 | msgstr "Копировать" 73 | 74 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 75 | msgctxt "TextFieldContextMenu|" 76 | msgid "Paste" 77 | msgstr "Вставить" 78 | 79 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 80 | msgctxt "TextFieldContextMenu|" 81 | msgid "Delete" 82 | msgstr "Удалить" 83 | 84 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 85 | msgctxt "TextFieldContextMenu|" 86 | msgid "Select All" 87 | msgstr "Выбрать все" 88 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/animationspeedprovider.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Fushan Wen 3 | 4 | SPDX-License-Identifier: LGPL-2.1-or-later 5 | */ 6 | 7 | #include "animationspeedprovider.h" 8 | 9 | #ifdef Q_OS_UNIX 10 | #include 11 | #include 12 | #endif 13 | 14 | #ifdef Q_OS_WIN 15 | #include 16 | #include 17 | #endif 18 | 19 | using namespace Qt::StringLiterals; 20 | 21 | AnimationSpeedProvider::AnimationSpeedProvider() 22 | { 23 | } 24 | 25 | AnimationSpeedProvider::~AnimationSpeedProvider() 26 | { 27 | } 28 | 29 | QBindable AnimationSpeedProvider::animationSpeedModifier() const 30 | { 31 | return &m_animationSpeedModifier; 32 | } 33 | 34 | #ifdef Q_OS_UNIX 35 | KConfigAnimationSpeedProvider::KConfigAnimationSpeedProvider(QObject *parent) 36 | : QObject(parent) 37 | , AnimationSpeedProvider() 38 | , m_animationSpeedWatcher(KConfigWatcher::create(KSharedConfig::openConfig())) 39 | { 40 | connect(m_animationSpeedWatcher.data(), &KConfigWatcher::configChanged, this, [this](const KConfigGroup &group, const QByteArrayList &names) { 41 | if (group.name() == "KDE"_L1 && names.contains(QByteArrayLiteral("AnimationDurationFactor"))) { 42 | m_animationSpeedModifier = std::max(0.0, group.readEntry(u"AnimationDurationFactor"_s, 1.0)); 43 | } 44 | }); 45 | 46 | KConfigGroup generalCfg = KConfigGroup(KSharedConfig::openConfig(), u"KDE"_s); 47 | m_animationSpeedModifier = std::max(0.0, generalCfg.readEntry(u"AnimationDurationFactor"_s, 1.0)); 48 | } 49 | 50 | KConfigAnimationSpeedProvider::~KConfigAnimationSpeedProvider() 51 | { 52 | } 53 | #endif 54 | 55 | #ifdef Q_OS_WIN 56 | WindowsAnimationSpeedProvider::WindowsAnimationSpeedProvider() 57 | : QAbstractNativeEventFilter() 58 | , AnimationSpeedProvider() 59 | { 60 | update(); 61 | QCoreApplication::instance()->installNativeEventFilter(this); 62 | } 63 | 64 | WindowsAnimationSpeedProvider::~WindowsAnimationSpeedProvider() 65 | { 66 | } 67 | 68 | void WindowsAnimationSpeedProvider::update() 69 | { 70 | bool isAnimated = true; 71 | if (SystemParametersInfoW(SPI_GETCLIENTAREAANIMATION, 0, &isAnimated, 0)) { 72 | m_animationSpeedModifier = isAnimated ? 1.0 : 0.0; 73 | } 74 | } 75 | 76 | bool WindowsAnimationSpeedProvider::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *) 77 | { 78 | if (eventType != "windows_generic_MSG") { 79 | return false; 80 | } 81 | 82 | MSG *msg = static_cast(message); 83 | if (msg->message != WM_SETTINGCHANGE || msg->wParam != SPI_SETCLIENTAREAANIMATION) { 84 | return false; 85 | } 86 | 87 | update(); 88 | return false; 89 | } 90 | #endif 91 | 92 | #include "moc_animationspeedprovider.cpp" 93 | -------------------------------------------------------------------------------- /poqm/ca/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # Translation of qqc2desktopstyle_qt.po to Catalan 2 | # Copyright (C) 2024 This_file_is_part_of_KDE 3 | # This file is distributed under the license LGPL version 2.1 or 4 | # version 3 or later versions approved by the membership of KDE e.V. 5 | # 6 | # SPDX-FileCopyrightText: 2024 Josep M. Ferrer 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: qqc2-desktop-style\n" 10 | "PO-Revision-Date: 2024-05-10 12:01+0200\n" 11 | "Last-Translator: Josep M. Ferrer \n" 12 | "Language-Team: Catalan \n" 13 | "Language: ca\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "X-Qt-Contexts: true\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Lokalize 22.12.3\n" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Cut" 24 | msgstr "Retalla" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Copy" 29 | msgstr "Copia" 30 | 31 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 32 | msgctxt "MobileTextActionsToolBarImpl|" 33 | msgid "Paste" 34 | msgstr "Enganxa" 35 | 36 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 37 | #, qt-format 38 | msgctxt "TextFieldContextMenu|" 39 | msgid "No Suggestions for \"%1\"" 40 | msgstr "Sense suggeriments per a «%1»" 41 | 42 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 43 | #, qt-format 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Add \"%1\" to Dictionary" 46 | msgstr "Afegeix «%1» al diccionari" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Ignore" 51 | msgstr "Ignora" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Spell Check" 56 | msgstr "Verificació de l'ortografia" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Undo" 61 | msgstr "Desfés" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Redo" 66 | msgstr "Refés" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Cut" 71 | msgstr "Retalla" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Copy" 76 | msgstr "Copia" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Paste" 81 | msgstr "Enganxa" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Delete" 86 | msgstr "Suprimeix" 87 | 88 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 89 | msgctxt "TextFieldContextMenu|" 90 | msgid "Select All" 91 | msgstr "Selecciona-ho tot" 92 | -------------------------------------------------------------------------------- /org.kde.desktop/private/DefaultListItemBackground.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | SPDX-FileCopyrightText: 2023 ivan tkachenko 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | 10 | import QtQuick 11 | import QtQuick.Templates as T 12 | import org.kde.kirigami as Kirigami 13 | 14 | Item { 15 | id: background 16 | 17 | property T.ItemDelegate control 18 | 19 | readonly property bool highlight: control.highlighted || control.down 20 | readonly property bool useAlternatingColors: { 21 | if (control.TableView.view?.alternatingRows && row % 2) { 22 | return true 23 | } else if (control.Kirigami.Theme.useAlternateBackgroundColor && index % 2) { 24 | return true 25 | } 26 | return false 27 | } 28 | 29 | readonly property color hoverColor: Qt.alpha(Kirigami.Theme.hoverColor, 0.3) 30 | readonly property color highlightColor: Kirigami.Theme.highlightColor 31 | readonly property color normalColor: useAlternatingColors ? Kirigami.Theme.alternateBackgroundColor : "transparent" 32 | // Workaround for QTBUG-113304 33 | readonly property bool reallyFocus: control.visualFocus || (control.activeFocus && control.focusReason === Qt.OtherFocusReason) 34 | 35 | readonly property bool hasInset: control.leftInset > 0 || control.rightInset > 0 || control.topInset > 0 || control.bottomInset > 0 36 | 37 | property alias color: alternatingBackgroundRect.color 38 | property alias radius: alternatingBackgroundRect.radius 39 | 40 | Rectangle { 41 | id: alternatingBackgroundRect 42 | anchors { 43 | fill: parent 44 | leftMargin: Math.min(0, -background.control.leftInset) 45 | // Omit topMargin, due to the extra top padding we always need in delegates 46 | rightMargin: -background.control.rightInset 47 | bottomMargin: -background.control.bottomInset 48 | } 49 | color: background.normalColor 50 | } 51 | Rectangle { 52 | anchors.fill: parent 53 | 54 | visible: background.control.enabled 55 | 56 | radius: background.hasInset ? Kirigami.Units.cornerRadius : 0 57 | 58 | color: { 59 | if (background.highlight) { 60 | return background.highlightColor 61 | } else { 62 | return (background.control.hovered || background.reallyFocus) ? background.hoverColor : background.normalColor 63 | } 64 | } 65 | 66 | border.width: background.hasInset ? 1 : 0 67 | border.color: { 68 | if (background.highlight) { 69 | return background.highlightColor 70 | } else { 71 | return (background.control.hovered || background.reallyFocus) ? Kirigami.Theme.hoverColor : "transparent" 72 | } 73 | } 74 | } 75 | } 76 | -------------------------------------------------------------------------------- /poqm/es/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # Spanish translations for qqc2desktopstyle_qt.po package. 2 | # Copyright (C) 2024-2025 This file is copyright: 3 | # This file is distributed under the same license as the qqc2-desktop-style package. 4 | # 5 | # SPDX-FileCopyrightText: 2024, 2025 Eloy Cuadra 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: qqc2desktopstyle_qt\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "PO-Revision-Date: 2025-12-08 12:04+0100\n" 11 | "Last-Translator: Eloy Cuadra \n" 12 | "Language-Team: Spanish \n" 13 | "Language: es\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "X-Qt-Contexts: true\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Lokalize 24.02.2\n" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Cut" 24 | msgstr "Cortar" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Copy" 29 | msgstr "Copiar" 30 | 31 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 32 | msgctxt "MobileTextActionsToolBarImpl|" 33 | msgid "Paste" 34 | msgstr "Pegar" 35 | 36 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 37 | #, qt-format 38 | msgctxt "TextFieldContextMenu|" 39 | msgid "No Suggestions for \"%1\"" 40 | msgstr "No hay sugerencias para «%1»" 41 | 42 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 43 | #, qt-format 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Add \"%1\" to Dictionary" 46 | msgstr "Añadir «%1» al diccionario" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Ignore" 51 | msgstr "Ignorar" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Spell Check" 56 | msgstr "Comprobación ortográfica" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Undo" 61 | msgstr "Deshacer" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Redo" 66 | msgstr "Rehacer" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Cut" 71 | msgstr "Cortar" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Copy" 76 | msgstr "Copiar" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Paste" 81 | msgstr "Pegar" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Delete" 86 | msgstr "Borrar" 87 | 88 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 89 | msgctxt "TextFieldContextMenu|" 90 | msgid "Select All" 91 | msgstr "Seleccionar todo" 92 | -------------------------------------------------------------------------------- /poqm/ca@valencia/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # Translation of qqc2desktopstyle_qt.po to Catalan (Valencian) 2 | # Copyright (C) 2024 This_file_is_part_of_KDE 3 | # This file is distributed under the license LGPL version 2.1 or 4 | # version 3 or later versions approved by the membership of KDE e.V. 5 | # 6 | # SPDX-FileCopyrightText: 2024 Josep M. Ferrer 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: qqc2-desktop-style\n" 10 | "PO-Revision-Date: 2024-05-10 12:01+0200\n" 11 | "Last-Translator: Josep M. Ferrer \n" 12 | "Language-Team: Catalan \n" 13 | "Language: ca@valencia\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "X-Qt-Contexts: true\n" 18 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 19 | "X-Generator: Lokalize 22.12.3\n" 20 | 21 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 22 | msgctxt "MobileTextActionsToolBarImpl|" 23 | msgid "Cut" 24 | msgstr "Retalla" 25 | 26 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 27 | msgctxt "MobileTextActionsToolBarImpl|" 28 | msgid "Copy" 29 | msgstr "Copia" 30 | 31 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 32 | msgctxt "MobileTextActionsToolBarImpl|" 33 | msgid "Paste" 34 | msgstr "Apega" 35 | 36 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 37 | #, qt-format 38 | msgctxt "TextFieldContextMenu|" 39 | msgid "No Suggestions for \"%1\"" 40 | msgstr "Sense suggeriments per a «%1»" 41 | 42 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 43 | #, qt-format 44 | msgctxt "TextFieldContextMenu|" 45 | msgid "Add \"%1\" to Dictionary" 46 | msgstr "Afig «%1» al diccionari" 47 | 48 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 49 | msgctxt "TextFieldContextMenu|" 50 | msgid "Ignore" 51 | msgstr "Ignora" 52 | 53 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 54 | msgctxt "TextFieldContextMenu|" 55 | msgid "Spell Check" 56 | msgstr "Verificació de l'ortografia" 57 | 58 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 59 | msgctxt "TextFieldContextMenu|" 60 | msgid "Undo" 61 | msgstr "Desfés" 62 | 63 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 64 | msgctxt "TextFieldContextMenu|" 65 | msgid "Redo" 66 | msgstr "Refés" 67 | 68 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 69 | msgctxt "TextFieldContextMenu|" 70 | msgid "Cut" 71 | msgstr "Retalla" 72 | 73 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 74 | msgctxt "TextFieldContextMenu|" 75 | msgid "Copy" 76 | msgstr "Copia" 77 | 78 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 79 | msgctxt "TextFieldContextMenu|" 80 | msgid "Paste" 81 | msgstr "Apega" 82 | 83 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 84 | msgctxt "TextFieldContextMenu|" 85 | msgid "Delete" 86 | msgstr "Suprimix" 87 | 88 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 89 | msgctxt "TextFieldContextMenu|" 90 | msgid "Select All" 91 | msgstr "Selecciona-ho tot" 92 | -------------------------------------------------------------------------------- /org.kde.desktop/Button.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | SPDX-FileCopyrightText: 2023 ivan tkachenko 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | import org.kde.qqc2desktopstyle.private as StylePrivate 13 | 14 | T.Button { 15 | id: controlRoot 16 | 17 | Kirigami.Theme.colorSet: Kirigami.Theme.Button 18 | Kirigami.Theme.inherit: false 19 | 20 | implicitWidth: Math.max((text && display !== T.AbstractButton.IconOnly ? 21 | implicitBackgroundWidth : implicitHeight) + leftInset + rightInset, 22 | implicitContentWidth + leftPadding + rightPadding) 23 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 24 | implicitContentHeight + topPadding + bottomPadding) 25 | 26 | baselineOffset: background ? background.y + background.baselineOffset : 0 27 | 28 | hoverEnabled: Qt.styleHints.useHoverEffects 29 | 30 | Kirigami.MnemonicData.enabled: enabled && visible 31 | Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.ActionElement 32 | Kirigami.MnemonicData.label: display !== T.AbstractButton.IconOnly ? text : "" 33 | Kirigami.MnemonicData.onActiveChanged: background?.updateItem() 34 | Shortcut { 35 | //in case of explicit & the button manages it by itself 36 | enabled: !(RegExp(/\&[^\&]/).test(controlRoot.text)) 37 | sequence: controlRoot.Kirigami.MnemonicData.sequence 38 | onActivated: { 39 | // TODO Remove check once we depend on Qt 6.8. 40 | if (typeof controlRoot.animateClick === "function") { 41 | controlRoot.animateClick(); 42 | } else { 43 | controlRoot.clicked(); 44 | } 45 | } 46 | } 47 | background: StylePrivate.StyleItem { 48 | control: controlRoot 49 | elementType: "button" 50 | sunken: controlRoot.down 51 | on: controlRoot.checkable && controlRoot.checked 52 | flat: controlRoot.flat 53 | hover: controlRoot.hovered 54 | text: controlRoot.Kirigami.MnemonicData.mnemonicLabel 55 | hasFocus: controlRoot.activeFocus || controlRoot.highlighted 56 | activeControl: controlRoot.Accessible.defaultButton ? "default" : "" 57 | properties: { 58 | "icon": controlRoot.display !== T.AbstractButton.TextOnly 59 | ? (controlRoot.icon.name !== "" ? controlRoot.icon.name : controlRoot.icon.source) : null, 60 | "iconColor": Qt.colorEqual(controlRoot.icon.color, "transparent") ? Kirigami.Theme.textColor : controlRoot.icon.color, 61 | "iconWidth": controlRoot.icon.width, 62 | "iconHeight": controlRoot.icon.height, 63 | 64 | "menu": controlRoot.Accessible.role === Accessible.ButtonMenu 65 | } 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /poqm/eu/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # Translation for qqc2desktopstyle_qt.po to Euskara/Basque (eu). 2 | # Copyright (C) 2024 This file is copyright: 3 | # This file is distributed under the same license as the original file. 4 | # SPDX-FileCopyrightText: 2024 KDE euskaratzeko proiektuko arduraduna 5 | # 6 | # Translators: 7 | # SPDX-FileCopyrightText: 2024 Iñigo Salvador Azurmendi 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: \n" 11 | "PO-Revision-Date: 2024-07-07 11:21+0200\n" 12 | "Last-Translator: Iñigo Salvador Azurmendi \n" 13 | "Language-Team: Basque \n" 14 | "Language: eu\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Qt-Contexts: true\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | "X-Generator: Lokalize 24.05.2\n" 21 | 22 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 23 | msgctxt "MobileTextActionsToolBarImpl|" 24 | msgid "Cut" 25 | msgstr "Ebaki" 26 | 27 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 28 | msgctxt "MobileTextActionsToolBarImpl|" 29 | msgid "Copy" 30 | msgstr "Kopiatu" 31 | 32 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 33 | msgctxt "MobileTextActionsToolBarImpl|" 34 | msgid "Paste" 35 | msgstr "Itsatsi" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "No Suggestions for \"%1\"" 41 | msgstr "\"%1\"(e)ri buruzko iradokizunik ez" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 44 | #, qt-format 45 | msgctxt "TextFieldContextMenu|" 46 | msgid "Add \"%1\" to Dictionary" 47 | msgstr "Gehitu \"%1\" hiztegira" 48 | 49 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 50 | msgctxt "TextFieldContextMenu|" 51 | msgid "Ignore" 52 | msgstr "Ezikusi" 53 | 54 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 55 | msgctxt "TextFieldContextMenu|" 56 | msgid "Spell Check" 57 | msgstr "Ortografia-egiaztatzea" 58 | 59 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 60 | msgctxt "TextFieldContextMenu|" 61 | msgid "Undo" 62 | msgstr "Desegin" 63 | 64 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 65 | msgctxt "TextFieldContextMenu|" 66 | msgid "Redo" 67 | msgstr "Berregin" 68 | 69 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 70 | msgctxt "TextFieldContextMenu|" 71 | msgid "Cut" 72 | msgstr "Ebaki" 73 | 74 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 75 | msgctxt "TextFieldContextMenu|" 76 | msgid "Copy" 77 | msgstr "Kopiatu" 78 | 79 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 80 | msgctxt "TextFieldContextMenu|" 81 | msgid "Paste" 82 | msgstr "Itsatsi" 83 | 84 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 85 | msgctxt "TextFieldContextMenu|" 86 | msgid "Delete" 87 | msgstr "Ezabatu" 88 | 89 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 90 | msgctxt "TextFieldContextMenu|" 91 | msgid "Select All" 92 | msgstr "Hautatu guztia" 93 | -------------------------------------------------------------------------------- /poqm/eo/qqc2desktopstyle_qt.po: -------------------------------------------------------------------------------- 1 | # translation of qqc2desktopstyle_qt.pot to Esperanto 2 | # Copyright (C) 2024 Free Software Foundation, Inc. 3 | # This file is distributed under the same license as the qqc2-desktop-style package. 4 | # Oliver Kellogg , 2024. 5 | # 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: qqc2-desktop-style\n" 9 | "Report-Msgid-Bugs-To: https://bugs.kde.org\n" 10 | "POT-Creation-Date: 2024-03-08 01:40+0100\n" 11 | "PO-Revision-Date: 2024-05-10 09:14+0100\n" 12 | "Last-Translator: Oliver Kellogg \n" 13 | "Language-Team: Esperanto \n" 14 | "Language: eo\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "X-Qt-Contexts: true\n" 19 | "X-Generator: translate-po (https://github.com/zcribe/translate-po)\n" 20 | "Plural-Forms: nplurals=2; plural=n != 1;\n" 21 | 22 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:59 23 | msgctxt "MobileTextActionsToolBarImpl|" 24 | msgid "Cut" 25 | msgstr "Tondi" 26 | 27 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:69 28 | msgctxt "MobileTextActionsToolBarImpl|" 29 | msgid "Copy" 30 | msgstr "Kopii" 31 | 32 | #: org.kde.desktop/private/MobileTextActionsToolBarImpl.qml:79 33 | msgctxt "MobileTextActionsToolBarImpl|" 34 | msgid "Paste" 35 | msgstr "Alglui" 36 | 37 | #: org.kde.desktop/private/TextFieldContextMenu.qml:197 38 | #, qt-format 39 | msgctxt "TextFieldContextMenu|" 40 | msgid "No Suggestions for \"%1\"" 41 | msgstr "Neniuj Sugestoj por \"%1\"" 42 | 43 | #: org.kde.desktop/private/TextFieldContextMenu.qml:211 44 | #, qt-format 45 | msgctxt "TextFieldContextMenu|" 46 | msgid "Add \"%1\" to Dictionary" 47 | msgstr "Aldoni \"%1\" an Vortaro" 48 | 49 | #: org.kde.desktop/private/TextFieldContextMenu.qml:227 50 | msgctxt "TextFieldContextMenu|" 51 | msgid "Ignore" 52 | msgstr "Ignori" 53 | 54 | #: org.kde.desktop/private/TextFieldContextMenu.qml:242 55 | msgctxt "TextFieldContextMenu|" 56 | msgid "Spell Check" 57 | msgstr "Literumkontrolo" 58 | 59 | #: org.kde.desktop/private/TextFieldContextMenu.qml:259 60 | msgctxt "TextFieldContextMenu|" 61 | msgid "Undo" 62 | msgstr "Malfari" 63 | 64 | #: org.kde.desktop/private/TextFieldContextMenu.qml:274 65 | msgctxt "TextFieldContextMenu|" 66 | msgid "Redo" 67 | msgstr "Refari" 68 | 69 | #: org.kde.desktop/private/TextFieldContextMenu.qml:292 70 | msgctxt "TextFieldContextMenu|" 71 | msgid "Cut" 72 | msgstr "Tondi" 73 | 74 | #: org.kde.desktop/private/TextFieldContextMenu.qml:307 75 | msgctxt "TextFieldContextMenu|" 76 | msgid "Copy" 77 | msgstr "Kopii" 78 | 79 | #: org.kde.desktop/private/TextFieldContextMenu.qml:322 80 | msgctxt "TextFieldContextMenu|" 81 | msgid "Paste" 82 | msgstr "Alglui" 83 | 84 | #: org.kde.desktop/private/TextFieldContextMenu.qml:337 85 | msgctxt "TextFieldContextMenu|" 86 | msgid "Delete" 87 | msgstr "Forigi" 88 | 89 | #: org.kde.desktop/private/TextFieldContextMenu.qml:356 90 | msgctxt "TextFieldContextMenu|" 91 | msgid "Select All" 92 | msgstr "Elekti Ĉion" 93 | -------------------------------------------------------------------------------- /org.kde.desktop/private/MobileTextActionsToolBarImpl.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2018 Marco Martin 3 | 4 | SPDX-License-Identifier: LGPL-2.0-or-later 5 | */ 6 | 7 | pragma ComponentBehavior: Bound 8 | 9 | import QtQuick 10 | import QtQuick.Layouts 11 | import QtQuick.Templates as T 12 | import org.kde.desktop as QQC2 13 | import org.kde.kirigami as Kirigami 14 | 15 | QQC2.Popup { 16 | id: root 17 | 18 | required property /*TextInput | TextEdit*/ Item controlRoot 19 | 20 | Kirigami.OverlayZStacking.layer: Kirigami.OverlayZStacking.Menu 21 | z: Kirigami.OverlayZStacking.z 22 | 23 | parent: controlRoot?.Window.window?.contentItem ?? null 24 | modal: false 25 | focus: false 26 | closePolicy: T.Popup.NoAutoClose 27 | 28 | x: { 29 | if (!parent || !controlRoot) { 30 | return 0; 31 | } 32 | const desiredX = controlRoot.mapToItem(parent, controlRoot.positionToRectangle(controlRoot.selectionStart).x, 0).x - width / 2; 33 | const maxX = parent.width - width; 34 | 35 | return Math.min(Math.max(0, desiredX), maxX); 36 | } 37 | 38 | y: { 39 | if (!parent || !controlRoot) { 40 | return 0; 41 | } 42 | const desiredY = controlRoot.mapToItem(parent, 0, controlRoot.positionToRectangle(controlRoot.selectionStart).y).y - height; 43 | const maxY = parent.height - height; 44 | 45 | if (desiredY >= 0) { 46 | return Math.min(maxY, desiredY); 47 | } else { 48 | const desiredY = controlRoot.mapToItem(parent, 0, controlRoot.positionToRectangle(controlRoot.selectionEnd).y + Math.round(Kirigami.Units.gridUnit * 1.5)).y; 49 | return Math.min(maxY, Math.max(0, desiredY)); 50 | } 51 | } 52 | 53 | width: contentItem.implicitWidth + leftPadding + rightPadding 54 | visible: true 55 | 56 | contentItem: RowLayout { 57 | QQC2.ToolButton { 58 | focusPolicy: Qt.NoFocus 59 | text: qsTr("Cut") 60 | display: T.AbstractButton.IconOnly 61 | icon.name: "edit-cut-symbolic" 62 | visible: controlRoot.selectedText.length > 0 && (!(controlRoot instanceof TextInput) || controlRoot.echoMode === TextInput.Normal) 63 | onClicked: { 64 | controlRoot.cut(); 65 | } 66 | } 67 | QQC2.ToolButton { 68 | focusPolicy: Qt.NoFocus 69 | text: qsTr("Copy") 70 | display: T.AbstractButton.IconOnly 71 | icon.name: "edit-copy-symbolic" 72 | visible: controlRoot.selectedText.length > 0 && (!(controlRoot instanceof TextInput) || controlRoot.echoMode === TextInput.Normal) 73 | onClicked: { 74 | controlRoot.copy(); 75 | } 76 | } 77 | QQC2.ToolButton { 78 | focusPolicy: Qt.NoFocus 79 | text: qsTr("Paste") 80 | display: T.AbstractButton.IconOnly 81 | icon.name: "edit-paste-symbolic" 82 | visible: controlRoot.canPaste 83 | onClicked: { 84 | controlRoot.paste(); 85 | } 86 | } 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /org.kde.desktop/HorizontalHeaderView.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Marco Martin 3 | SPDX-FileCopyrightText: 2020 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | pragma ComponentBehavior: Bound 9 | 10 | import QtQuick 11 | import QtQuick.Templates as T 12 | import org.kde.qqc2desktopstyle.private as StylePrivate 13 | 14 | T.HorizontalHeaderView { 15 | id: controlRoot 16 | 17 | implicitWidth: syncView ? syncView.width : 0 18 | // The contentHeight of TableView will be zero at start-up, until the delegate 19 | // items have been loaded. This means that even if the implicit height of 20 | // HorizontalHeaderView should be the same as the content height in the end, we 21 | // need to ensure that it has at least a height of 1 at start-up, otherwise 22 | // TableView won't bother loading any delegates at all. 23 | implicitHeight: Math.max(1, contentHeight) 24 | 25 | delegate: StylePrivate.StyleItem { 26 | required property var model 27 | required property int column 28 | readonly property string headerPosition: { 29 | if (controlRoot.columns === 1) { 30 | return "only"; 31 | } else if (model.column === 0) { 32 | return LayoutMirroring.enabled ? "end" : "beginning"; 33 | } else { 34 | return "middle"; 35 | } 36 | } 37 | 38 | text: model[controlRoot.textRole] 39 | elementType: "header" 40 | on: { 41 | let selectionModel = controlRoot.selectionModel 42 | if (!selectionModel && controlRoot.syncView) { 43 | if (controlRoot.syncView.selectionModel && controlRoot.syncView.model == controlRoot.model) { 44 | selectionModel = controlRoot.syncView.selectionModel 45 | } 46 | } 47 | if (!selectionModel) { 48 | return false 49 | } 50 | 51 | // This line is for property bindings 52 | void(selectionModel.selectedIndexes); 53 | return selectionModel.columnIntersectsSelection(model.column) 54 | } 55 | //FIXME: this is not usable as we don't have ways to query the sort column 56 | //activeControl: orderQuery ? (filteredMimeTypesModel.sortOrder == Qt.AscendingOrder ? "down" : "up") : "" 57 | activeControl: { 58 | if (model.sort !== undefined) { 59 | return model.sort == Qt.AscendingOrder ? "down" : "up" 60 | } 61 | return "" 62 | } 63 | properties: { 64 | "headerpos": headerPosition, 65 | "textalignment": Text.AlignVCenter | Text.AlignHCenter, 66 | "orientation": Qt.Horizontal 67 | } 68 | } 69 | 70 | StylePrivate.StyleItem { 71 | parent: controlRoot 72 | anchors.fill: parent 73 | anchors.leftMargin: controlRoot.contentWidth 74 | z: -1 75 | elementType: "header" 76 | properties: { 77 | "headerpos": LayoutMirroring.enabled ? "beginning" : "end", 78 | "orientation": Qt.Horizontal 79 | } 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /tests/ToolButton.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2020 Arjen Hiemstra 3 | SPDX-FileCopyrightText: 2021 Nate Graham 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | import QtQuick 9 | import QtQuick.Layouts 10 | import QtQuick.Controls 11 | 12 | ApplicationWindow { 13 | visible: true 14 | width: 800 15 | height: 600 16 | 17 | GridLayout { 18 | anchors.fill: parent 19 | anchors.margins: 10 20 | rows: 7 21 | flow: GridLayout.TopToBottom 22 | 23 | Label { 24 | text: "Flat" 25 | } 26 | 27 | ToolButton { 28 | icon.name: "documentinfo" 29 | text: "Tool Button Default" 30 | flat: true 31 | } 32 | 33 | ToolButton { 34 | icon.name: "documentinfo" 35 | text: "Tool Button Icon Only" 36 | display: ToolButton.IconOnly 37 | flat: true 38 | } 39 | 40 | ToolButton { 41 | icon.name: "documentinfo" 42 | text: "Tool Button Text Only" 43 | display: ToolButton.TextOnly 44 | flat: true 45 | } 46 | 47 | ToolButton { 48 | icon.name: "documentinfo" 49 | text: "Tool Button Text Beside Icon" 50 | display: ToolButton.TextBesideIcon 51 | flat: true 52 | } 53 | 54 | ToolButton { 55 | icon.name: "documentinfo" 56 | text: "Tool Button Text Below Icon" 57 | display: ToolButton.TextUnderIcon 58 | flat: true 59 | } 60 | 61 | ToolButton { 62 | icon.name: "documentinfo" 63 | text: "Tool Button highlighted" 64 | flat: true 65 | highlighted: true 66 | } 67 | 68 | Label { 69 | text: "Non-Flat" 70 | } 71 | 72 | ToolButton { 73 | icon.name: "documentinfo" 74 | text: "Tool Button Default" 75 | flat: false 76 | } 77 | 78 | ToolButton { 79 | icon.name: "documentinfo" 80 | text: "Tool Button Icon Only" 81 | display: ToolButton.IconOnly 82 | flat: false 83 | } 84 | 85 | ToolButton { 86 | icon.name: "documentinfo" 87 | text: "Tool Button Text Only" 88 | display: ToolButton.TextOnly 89 | flat: false 90 | } 91 | 92 | ToolButton { 93 | icon.name: "documentinfo" 94 | text: "Tool Button Text Beside Icon" 95 | display: ToolButton.TextBesideIcon 96 | flat: false 97 | } 98 | 99 | ToolButton { 100 | icon.name: "documentinfo" 101 | text: "Tool Button Text Below Icon" 102 | display: ToolButton.TextUnderIcon 103 | flat: false 104 | } 105 | ToolButton { 106 | icon.name: "documentinfo" 107 | text: "Tool Button highlighted" 108 | flat: false 109 | highlighted: true 110 | } 111 | 112 | ToolButton { 113 | text: "Without setting display" 114 | } 115 | 116 | ToolButton { 117 | text: "With Menu decoration" 118 | 119 | Accessible.role: Accessible.ButtonMenu 120 | } 121 | } 122 | } 123 | -------------------------------------------------------------------------------- /kirigami-plasmadesktop-integration/autotests/animationspeedmodifiertest.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2023 Fushan Wen 3 | 4 | SPDX-License-Identifier: LGPL-2.1-or-later 5 | */ 6 | 7 | #include 8 | #include 9 | #include 10 | 11 | #ifdef Q_OS_UNIX 12 | #include 13 | #include 14 | #endif 15 | 16 | #ifdef Q_OS_WIN 17 | #include 18 | #endif 19 | 20 | #include "common.h" 21 | 22 | using namespace Qt::StringLiterals; 23 | 24 | class IntegrationTest : public QObject 25 | { 26 | Q_OBJECT 27 | 28 | private Q_SLOTS: 29 | void initTestCase(); 30 | void cleanupTestCase(); 31 | 32 | #ifdef Q_OS_UNIX 33 | void testAnimationSpeedModifier_kconfig(); 34 | #endif 35 | #ifdef Q_OS_WIN 36 | void testAnimationSpeedModifier_windows(); 37 | #endif 38 | 39 | private: 40 | QQmlApplicationEngine engine; 41 | }; 42 | 43 | void IntegrationTest::initTestCase() 44 | { 45 | Common::initTestCase(); 46 | 47 | QSignalSpy objectCreatedSpy(&engine, &QQmlApplicationEngine::objectCreated); 48 | engine.load(QFINDTESTDATA(u"animationspeedmodifiertest.qml"_s)); 49 | if (objectCreatedSpy.empty()) { 50 | QVERIFY(objectCreatedSpy.wait()); 51 | } 52 | QCOMPARE(engine.rootObjects().size(), 1); 53 | } 54 | 55 | void IntegrationTest::cleanupTestCase() 56 | { 57 | } 58 | 59 | #ifdef Q_OS_UNIX 60 | void IntegrationTest::testAnimationSpeedModifier_kconfig() 61 | { 62 | QObject *rootObject = engine.rootObjects().constFirst(); 63 | const double defaultLongDuration = rootObject->property("longDuration").toDouble(); 64 | QSignalSpy longDurationSpy(rootObject, SIGNAL(longDurationChanged())); 65 | 66 | KConfigGroup kdeGroup(KSharedConfig::openConfig(u"kdeglobals"_s, KConfig::SimpleConfig), u"KDE"_s); 67 | QVERIFY(kdeGroup.isValid()); 68 | kdeGroup.writeEntry("AnimationDurationFactor", 0.5, KConfig::Notify); 69 | QVERIFY(kdeGroup.sync()); 70 | 71 | if (longDurationSpy.empty()) { 72 | QVERIFY(longDurationSpy.wait()); 73 | } 74 | QCOMPARE(rootObject->property("longDuration").toDouble(), defaultLongDuration * 0.5); 75 | 76 | kdeGroup.writeEntry("AnimationDurationFactor", 1); 77 | } 78 | #endif 79 | 80 | #ifdef Q_OS_WIN 81 | void IntegrationTest::testAnimationSpeedModifier_windows() 82 | { 83 | bool isAnimated = true; 84 | QVERIFY(SystemParametersInfoW(SPI_GETCLIENTAREAANIMATION, 0, &isAnimated, 0)); 85 | 86 | QObject *rootObject = engine.rootObjects().constFirst(); 87 | const double defaultLongDuration = rootObject->property("longDuration").toDouble(); 88 | QSignalSpy longDurationSpy(rootObject, SIGNAL(longDurationChanged())); 89 | 90 | if (isAnimated) { 91 | QVERIFY(defaultLongDuration > 0); 92 | } else { 93 | QCOMPARE(defaultLongDuration, 0); 94 | } 95 | isAnimated = !isAnimated; 96 | SystemParametersInfoW(SPI_SETCLIENTAREAANIMATION, 0, &isAnimated, SPIF_SENDCHANGE); 97 | if (GetLastError() == 1459) { 98 | return; 99 | } 100 | 101 | if (longDurationSpy.empty()) { 102 | QVERIFY(longDurationSpy.wait()); 103 | } 104 | 105 | if (isAnimated) { 106 | QVERIFY(defaultLongDuration > 0); 107 | } else { 108 | QCOMPARE(defaultLongDuration, 0); 109 | } 110 | } 111 | #endif 112 | 113 | QTEST_MAIN(IntegrationTest) 114 | 115 | #include "animationspeedmodifiertest.moc" 116 | -------------------------------------------------------------------------------- /org.kde.desktop/Slider.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | SPDX-FileCopyrightText: 2023 ivan tkachenko 5 | 6 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 7 | */ 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | import org.kde.desktop.private as Private 13 | import org.kde.qqc2desktopstyle.private as StylePrivate 14 | 15 | T.Slider { 16 | id: controlRoot 17 | 18 | Kirigami.Theme.colorSet: Kirigami.Theme.Button 19 | 20 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 21 | implicitContentWidth + leftPadding + rightPadding) 22 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 23 | implicitContentHeight + topPadding + bottomPadding) 24 | 25 | baselineOffset: background ? background.y + background.baselineOffset : 0 26 | 27 | hoverEnabled: true 28 | 29 | handle: Private.DefaultSliderHandle { 30 | control: controlRoot 31 | } 32 | 33 | snapMode: T.Slider.SnapOnRelease 34 | 35 | background: StylePrivate.StyleItem { 36 | control: controlRoot 37 | elementType: "slider" 38 | sunken: controlRoot.pressed 39 | 40 | minimum: 0 41 | maximum: 100000 42 | step: 100000 * (controlRoot.stepSize / (controlRoot.to - controlRoot.from)) 43 | value: 100000 * controlRoot.position 44 | 45 | horizontal: controlRoot.orientation === Qt.Horizontal 46 | enabled: controlRoot.enabled 47 | hasFocus: controlRoot.activeFocus 48 | hover: controlRoot.hovered 49 | activeControl: controlRoot.stepSize > 0 ? "ticks" : "" 50 | 51 | // `wheelEnabled: true` doesn't work since it doesn't snap to tickmarks, 52 | // so we have to implement the scroll handling ourselves. See 53 | // https://bugreports.qt.io/browse/QTBUG-93081 54 | MouseArea { 55 | property int wheelDelta: 0 56 | 57 | anchors { 58 | fill: parent 59 | leftMargin: controlRoot.leftPadding 60 | rightMargin: controlRoot.rightPadding 61 | } 62 | LayoutMirroring.enabled: false 63 | 64 | acceptedButtons: Qt.NoButton 65 | 66 | onWheel: wheel => { 67 | const lastValue = controlRoot.value 68 | // We want a positive delta to increase the slider for up/right scrolling, 69 | // independently of the scrolling inversion setting 70 | // The x-axis is also inverted (scrolling right produce negative values) 71 | const delta = (wheel.angleDelta.y || -wheel.angleDelta.x) * (wheel.inverted ? -1 : 1) 72 | wheelDelta += delta; 73 | // magic number 120 for common "one click" 74 | // See: https://doc.qt.io/qt-5/qml-qtquick-wheelevent.html#angleDelta-prop 75 | while (wheelDelta >= 120) { 76 | wheelDelta -= 120; 77 | controlRoot.increase(); 78 | } 79 | while (wheelDelta <= -120) { 80 | wheelDelta += 120; 81 | controlRoot.decrease(); 82 | } 83 | if (lastValue !== controlRoot.value) { 84 | controlRoot.moved(); 85 | } 86 | } 87 | } 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /org.kde.desktop/private/SwitchIndicator.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2022 Tanbir Jishan 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | import QtQuick 9 | import QtQuick.Templates as T 10 | import org.kde.kirigami as Kirigami 11 | 12 | Item { 13 | id: indicator 14 | implicitWidth: implicitHeight * 2 15 | implicitHeight: Kirigami.Units.gridUnit 16 | layer.enabled: control.opacity < 1.0 17 | 18 | property T.AbstractButton control 19 | property alias handle: handle 20 | 21 | Kirigami.Theme.colorSet: Kirigami.Theme.Button 22 | Kirigami.Theme.inherit: false 23 | 24 | QtObject { // colors collected in one place so that main code remains clean and these properties are not exposed 25 | id: colorFactory 26 | 27 | readonly property color switchBorderColor: indicator.control.checked ? Kirigami.Theme.highlightColor : handleBorderColor 28 | 29 | readonly property color handleColor: Kirigami.Theme.backgroundColor 30 | readonly property color handleBorderColor: (indicator.control.hovered || indicator.control.visualFocus) ? Kirigami.Theme.hoverColor : Kirigami.ColorUtils.linearInterpolation(Kirigami.Theme.backgroundColor, Kirigami.Theme.textColor, Kirigami.Theme.frameContrast) 31 | 32 | function blendBackgroundWithTextColorWithRatio(factor: double): color { 33 | // blending of background color with text color for producing a border color. The usual ratios are 70:30, 80:20 and 75:25. The more the background color, the more the contrast. 34 | return Qt.tint(Kirigami.Theme.textColor, Qt.alpha(Kirigami.Theme.backgroundColor, factor)) 35 | } 36 | } 37 | 38 | Rectangle { 39 | id: inactive 40 | 41 | anchors { 42 | fill: parent 43 | // margins so that the background is a bit shorter than the handle 44 | topMargin: Math.floor(parent.height / 6) 45 | bottomMargin: Math.floor(parent.height / 6) 46 | } 47 | 48 | radius: Math.round(height / 2) 49 | color: colorFactory.blendBackgroundWithTextColorWithRatio(0.9) 50 | border.color: colorFactory.switchBorderColor 51 | } 52 | 53 | Rectangle { 54 | anchors { 55 | left: inactive.left 56 | top: inactive.top 57 | bottom: inactive.bottom 58 | right: handle.right 59 | } 60 | 61 | radius: inactive.radius 62 | color: Qt.alpha(Kirigami.Theme.highlightColor, 0.5) 63 | } 64 | 65 | Rectangle { 66 | id: handle 67 | 68 | x: Math.max(0, Math.min(parent.width - width, indicator.control.visualPosition * parent.width - (width / 2))) 69 | 70 | anchors { 71 | top: parent.top 72 | bottom: parent.bottom 73 | } 74 | 75 | width: height 76 | radius: Math.floor(width / 2) 77 | color: colorFactory.handleColor 78 | border.color: colorFactory.handleBorderColor 79 | 80 | Behavior on x { 81 | enabled: !indicator.control.pressed && Kirigami.Units.shortDuration > 0 82 | SmoothedAnimation { 83 | duration: Kirigami.Units.shortDuration 84 | } 85 | } 86 | 87 | Behavior on color { 88 | enabled: Kirigami.Units.shortDuration > 0 89 | ColorAnimation { 90 | easing.type: Easing.InCubic 91 | duration: Kirigami.Units.shortDuration 92 | } 93 | } 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /tests/baselineOffset.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2024 ivan tkachenko 3 | 4 | SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 5 | */ 6 | 7 | import QtQuick 8 | import QtQuick.Layouts 9 | import QtQuick.Controls as QQC2 10 | import org.kde.kirigami as Kirigami 11 | 12 | QQC2.Pane { 13 | id: root 14 | 15 | width: 800 16 | height: 100 17 | padding: 0 18 | 19 | component Guide : Kirigami.Separator { 20 | anchors.left: parent.left 21 | anchors.right: parent.right 22 | opacity: 0.7 23 | z: 1 24 | } 25 | 26 | QQC2.ScrollView { 27 | anchors.fill: parent 28 | 29 | Kirigami.Padding { 30 | padding: Kirigami.Units.largeSpacing 31 | 32 | Guide { 33 | anchors.top: layout.top 34 | } 35 | 36 | Guide { 37 | anchors.bottom: layout.bottom 38 | } 39 | 40 | Guide { 41 | anchors.verticalCenter: parent.verticalCenter 42 | } 43 | 44 | Guide { 45 | anchors.top: layout.top 46 | anchors.topMargin: checkBox.y + checkBox.baselineOffset 47 | } 48 | 49 | contentItem: RowLayout { 50 | id: layout 51 | 52 | spacing: Kirigami.Units.smallSpacing 53 | 54 | QQC2.CheckBox { 55 | id: checkBox 56 | Layout.alignment: Qt.AlignBaseline 57 | text: "Hello" 58 | } 59 | QQC2.Button { 60 | Layout.alignment: Qt.AlignBaseline 61 | text: "Hello" 62 | } 63 | QQC2.ToolButton { 64 | Layout.alignment: Qt.AlignBaseline 65 | text: "Hello" 66 | } 67 | QQC2.DelayButton { 68 | Layout.alignment: Qt.AlignBaseline 69 | text: "Hello" 70 | } 71 | QQC2.RadioButton { 72 | Layout.alignment: Qt.AlignBaseline 73 | text: "Hello" 74 | } 75 | QQC2.Slider { 76 | Layout.alignment: Qt.AlignBaseline 77 | Layout.preferredWidth: 50 78 | value: 0.7 79 | } 80 | QQC2.SpinBox { 81 | Layout.alignment: Qt.AlignBaseline 82 | } 83 | QQC2.ComboBox { 84 | Layout.alignment: Qt.AlignBaseline 85 | model: ["Hello"] 86 | } 87 | QQC2.TextField { 88 | Layout.alignment: Qt.AlignBaseline 89 | Layout.preferredWidth: 50 90 | text: "Hello" 91 | } 92 | QQC2.TextArea { 93 | Layout.alignment: Qt.AlignBaseline 94 | Layout.preferredWidth: 50 95 | text: "Hello" 96 | } 97 | QQC2.Switch { 98 | Layout.alignment: Qt.AlignBaseline 99 | text: "Hello" 100 | } 101 | QQC2.ProgressBar { 102 | Layout.alignment: Qt.AlignBaseline 103 | Layout.preferredWidth: 50 104 | value: 0.7 105 | } 106 | } 107 | } 108 | } 109 | } 110 | -------------------------------------------------------------------------------- /org.kde.desktop/Switch.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 Marco Martin 3 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | 9 | import QtQuick 10 | import QtQuick.Templates as T 11 | import org.kde.kirigami as Kirigami 12 | import org.kde.desktop.private as Private 13 | 14 | T.Switch { 15 | id: control 16 | 17 | implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 18 | implicitContentWidth + leftPadding + rightPadding, 19 | implicitIndicatorWidth + leftPadding + rightPadding) 20 | implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 21 | implicitContentHeight + topPadding + bottomPadding, 22 | implicitIndicatorHeight + topPadding + bottomPadding) 23 | baselineOffset: contentItem ? contentItem.y + contentItem.baselineOffset : 0 24 | 25 | padding: 1 26 | spacing: Kirigami.Units.smallSpacing 27 | 28 | hoverEnabled: true 29 | 30 | indicator: Private.SwitchIndicator { 31 | x: if (control.contentItem !== null && control.contentItem.width > 0) { 32 | return control.mirrored ? 33 | control.width - width - control.rightPadding : control.leftPadding 34 | } else { 35 | return control.leftPadding + (control.availableWidth - width) / 2 36 | } 37 | y: if (control.contentItem !== null 38 | && (control.contentItem instanceof Text || control.contentItem instanceof TextEdit) 39 | && control.contentItem.lineCount > 1) { 40 | return control.topPadding 41 | } else { 42 | return control.topPadding + Math.round((control.availableHeight - height) / 2) 43 | } 44 | control: control 45 | } 46 | 47 | Kirigami.MnemonicData.enabled: enabled && visible 48 | Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.ActionElement 49 | Kirigami.MnemonicData.label: text 50 | Shortcut { 51 | //in case of explicit & the button manages it by itself 52 | enabled: !(RegExp(/\&[^\&]/).test(control.text)) 53 | sequence: control.Kirigami.MnemonicData.sequence 54 | onActivated: { 55 | // TODO Remove check once we depend on Qt 6.8. 56 | if (typeof control.animateClick === "function") { 57 | control.animateClick(); 58 | } else { 59 | control.toggle(); 60 | } 61 | } 62 | } 63 | 64 | contentItem: Label { 65 | property FontMetrics fontMetrics: FontMetrics {} 66 | // Ensure consistent vertical position relative to indicator with multiple lines. 67 | // No need to round because .5 from the top will add with .5 from the bottom becoming 1. 68 | topPadding: Math.max(0, (control.implicitIndicatorHeight - fontMetrics.height) / 2) 69 | bottomPadding: topPadding 70 | leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 71 | rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 72 | opacity: control.enabled ? 1 : 0.6 73 | text: control.Kirigami.MnemonicData.richTextLabel 74 | font: control.font 75 | color: Kirigami.Theme.textColor 76 | elide: Text.ElideRight 77 | wrapMode: Text.Wrap 78 | visible: control.text 79 | horizontalAlignment: Text.AlignLeft 80 | verticalAlignment: Text.AlignVCenter 81 | } 82 | } 83 | -------------------------------------------------------------------------------- /org.kde.desktop/StackView.qml: -------------------------------------------------------------------------------- 1 | /* 2 | SPDX-FileCopyrightText: 2017 The Qt Company Ltd. 3 | SPDX-FileCopyrightText: 2022 Fushan Wen 4 | 5 | SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later 6 | */ 7 | 8 | import QtQuick 9 | import QtQuick.Templates as T 10 | import org.kde.kirigami as Kirigami 11 | 12 | T.StackView { 13 | id: control 14 | 15 | // Using NumberAnimation instead of XAnimator because the latter wasn't always smooth enough. 16 | pushEnter: Transition { 17 | NumberAnimation { 18 | property: "x" 19 | from: (control.mirrored ? -0.5 : 0.5) * control.width 20 | to: 0 21 | duration: Kirigami.Units.longDuration 22 | easing.type: Easing.OutCubic 23 | } 24 | NumberAnimation { 25 | property: "opacity" 26 | from: 0.0; to: 1.0 27 | duration: Kirigami.Units.longDuration 28 | easing.type: Easing.OutCubic 29 | } 30 | } 31 | pushExit: Transition { 32 | NumberAnimation { 33 | property: "x" 34 | from: 0 35 | to: (control.mirrored ? -0.5 : 0.5) * -control.width 36 | duration: Kirigami.Units.longDuration 37 | easing.type: Easing.OutCubic 38 | } 39 | NumberAnimation { 40 | property: "opacity" 41 | from: 1.0; to: 0.0 42 | duration: Kirigami.Units.longDuration 43 | easing.type: Easing.OutCubic 44 | } 45 | } 46 | popEnter: Transition { 47 | NumberAnimation { 48 | property: "x" 49 | from: (control.mirrored ? -0.5 : 0.5) * -control.width 50 | to: 0 51 | duration: Kirigami.Units.longDuration 52 | easing.type: Easing.OutCubic 53 | } 54 | NumberAnimation { 55 | property: "opacity" 56 | from: 0.0; to: 1.0 57 | duration: Kirigami.Units.longDuration 58 | easing.type: Easing.OutCubic 59 | } 60 | } 61 | popExit: Transition { 62 | NumberAnimation { 63 | property: "x" 64 | from: 0 65 | to: (control.mirrored ? -0.5 : 0.5) * control.width 66 | duration: Kirigami.Units.longDuration 67 | easing.type: Easing.OutCubic 68 | } 69 | NumberAnimation { 70 | property: "opacity" 71 | from: 1.0; to: 0.0 72 | duration: Kirigami.Units.longDuration 73 | easing.type: Easing.OutCubic 74 | } 75 | } 76 | replaceEnter: Transition { 77 | NumberAnimation { 78 | property: "x" 79 | from: (control.mirrored ? -0.5 : 0.5) * control.width 80 | to: 0 81 | duration: Kirigami.Units.longDuration 82 | easing.type: Easing.OutCubic 83 | } 84 | NumberAnimation { 85 | property: "opacity" 86 | from: 0.0; to: 1.0 87 | duration: Kirigami.Units.longDuration 88 | easing.type: Easing.OutCubic 89 | } 90 | } 91 | replaceExit: Transition { 92 | NumberAnimation { 93 | property: "x" 94 | from: 0 95 | to: (control.mirrored ? -0.5 : 0.5) * -control.width 96 | duration: Kirigami.Units.longDuration 97 | easing.type: Easing.OutCubic 98 | } 99 | NumberAnimation { 100 | property: "opacity" 101 | from: 1.0; to: 0.0 102 | duration: Kirigami.Units.longDuration 103 | easing.type: Easing.OutCubic 104 | } 105 | } 106 | } 107 | --------------------------------------------------------------------------------