This commit is contained in:
Valeria Fadeeva 2025-07-13 20:35:57 +05:00
parent 21a9e576af
commit 8965ccefe9
23 changed files with 666 additions and 459 deletions

View File

@ -42,7 +42,7 @@
</entry>
<entry name="numberColumns" type="Int">
<default>6</default>
<default>7</default>
</entry>
<entry name="numberRows" type="Int">
@ -91,6 +91,5 @@
<entry name="viewUser" type="Bool">
<default>true</default>
</entry>
</group>
</kcfg>

View File

@ -1,21 +1,23 @@
import QtQuick 2.4
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts 1.1
import org.kde.plasma.core 2.0 as PlasmaCore
import QtQuick.Layouts
import org.kde.plasma.core as PlasmaCore
import org.kde.kirigami as Kirigami
Rectangle{
id:item
implicitHeight: Math.floor( Kirigami.Units.gridUnit * 1.8)
width: Math.floor(lb.implicitWidth + Kirigami.Units.smallSpacing * 5 + icon.width)
property int buttonHeight: Math.floor(Kirigami.Units.gridUnit * 2)
implicitHeight: buttonHeight
implicitWidth: row.implicitWidth + (Kirigami.Units.mediumSpacing * 2)
border.width: mouseItem.containsMouse || focus || activeFocus ? 2 : 1
border.color: mouseItem.containsMouse || focus || activeFocus ? Kirigami.Theme.highlightColor : colorWithAlpha(Kirigami.Theme.textColor,0.2)
radius: 3
color: Kirigami.Theme.backgroundColor
border.color: Qt.rgba(0.5, 0.5, 0.5, 0.6) // Gray border always
radius: 5
color: mouseItem.containsMouse ? Qt.rgba(0.7, 0.7, 0.7, 0.3) : Kirigami.Theme.backgroundColor
smooth: true // Plasmoid.configuration.iconSmooth
focus: true
@ -29,23 +31,26 @@ Rectangle{
//Keys.onEnterPressed: item.clicked()
Keys.onSpacePressed: item.clicked()
RowLayout{
RowLayout {
id: row
anchors.fill: parent
anchors.leftMargin: Kirigami.Units.smallSpacing * 2
anchors.rightMargin: Kirigami.Units.smallSpacing * 2
anchors.margins: Kirigami.Units.smallSpacing
anchors.topMargin: Kirigami.Units.smallSpacing / 2
anchors.bottomMargin: Kirigami.Units.smallSpacing / 2
spacing: Kirigami.Units.smallSpacing
LayoutMirroring.enabled: mirror
Label{
Label {
id: lb
color: Kirigami.Theme.textColor
Layout.leftMargin: Kirigami.Units.smallSpacing
}
Kirigami.Icon {
id: icon
implicitHeight: Kirigami.Units.gridUnit
implicitWidth: implicitHeight
smooth: true // Plasmoid.configuration.iconSmooth
smooth: true
}
}

View File

@ -5,9 +5,9 @@
SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick 2.15
import QtQuick
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.plasma.extras as PlasmaExtras
Item {
id: root

View File

@ -17,11 +17,11 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
import QtQuick 2.0
import QtQuick.Layouts 1.1
import QtQuick
import QtQuick.Layouts
import org.kde.plasma.plasmoid
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.core as PlasmaCore
import org.kde.kirigami as Kirigami
Item {

View File

@ -17,26 +17,26 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
//import QtQuick 2.15
//import QtQuick.Controls 2.15
//import QtQuick.Dialogs 1.2
//import QtQuick.Layouts 1.0
//import org.kde.plasma.core 2.0 as PlasmaCore
//import org.kde.plasma.components 2.0 as PlasmaComponents
//import org.kde.kquickcontrolsaddons 2.0 as KQuickAddons
//import org.kde.draganddrop 2.0 as DragDrop
//import org.kde.kirigami 2.4 as Kirigami
//import QtQuick
//import QtQuick.Controls
//import QtQuick.Dialogs
//import QtQuick.Layouts
//import org.kde.plasma.core as PlasmaCore
//import org.kde.plasma.components as PlasmaComponents
//import org.kde.kquickcontrolsaddons as KQuickAddons
//import org.kde.draganddrop as DragDrop
//import org.kde.kirigami as Kirigami
import QtQuick 2.15
import QtQuick.Layouts 1.0
import QtQuick.Controls 2.15
import org.kde.draganddrop 2.0 as DragDrop
import org.kde.kirigami 2.5 as Kirigami
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import org.kde.draganddrop as DragDrop
import org.kde.kirigami as Kirigami
import org.kde.iconthemes as KIconThemes
import org.kde.plasma.core as PlasmaCore
import org.kde.kirigami 2.20 as Kirigami
import org.kde.ksvg 1.0 as KSvg
import org.kde.plasma.plasmoid 2.0
import org.kde.kirigami as Kirigami
import org.kde.ksvg as KSvg
import org.kde.plasma.plasmoid
import org.kde.kcmutils as KCM

View File

@ -1,32 +1,31 @@
import QtQuick 2.4
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.12
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.plasmoid
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.plasma.extras as PlasmaExtras
import org.kde.plasma.private.kicker 0.1 as Kicker
import org.kde.coreaddons 1.0 as KCoreAddons // kuser
import org.kde.plasma.private.shell 2.0
import org.kde.kwindowsystem 1.0
import org.kde.kwindowsystem
import Qt5Compat.GraphicalEffects
import org.kde.kquickcontrolsaddons 2.0
import org.kde.kquickcontrolsaddons
import org.kde.plasma.components 3.0 as PlasmaComponents3
import org.kde.plasma.private.quicklaunch 1.0
import org.kde.plasma.components as PlasmaComponents3
import org.kde.plasma.private.quicklaunch
import org.kde.kirigami as Kirigami
import org.kde.plasma.plasma5support 2.0 as P5Support
import org.kde.plasma.plasma5support as P5Support
import org.kde.plasma.private.sessions as Sessions
import org.kde.ksvg 1.0 as KSvg
import org.kde.ksvg as KSvg
import org.kde.kcmutils as KCM
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.plasmoid
RowLayout{
@ -35,6 +34,14 @@ RowLayout{
KCoreAddons.KUser { id: kuser }
Logic { id: logic }
Sessions.SessionManagement {
id: sessionManager
}
Sessions.SessionsModel {
id: sessionsModel
}
P5Support.DataSource {
id: pmEngine
engine: "powermanagement"
@ -103,63 +110,91 @@ RowLayout{
text: qsTr(kuser.fullName)
}
PlasmaComponents3.ToolButton {
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: logic.openUrl("file:///usr/share/applications/org.kde.dolphin.desktop")
}
icon.width: 24
icon.height: 24
icon.name: "user-home"
Layout.leftMargin: 10
PlasmaComponents3.ToolTip.delay: 1000
PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("User Home")
}
PlasmaComponents3.ToolButton {
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: logic.openUrl("file:///usr/share/applications/systemsettings.desktop")
}
icon.width: 24
icon.height: 24
icon.name: "configure"
Layout.leftMargin: 10
PlasmaComponents3.ToolTip.delay: 1000
PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("System Preferences")
}
Item{
Layout.fillWidth: true
}
Sessions.SessionManagement {
id: sm
}
Sessions.SessionsModel {
id: sessionsModel
}
PlasmaComponents3.ToolButton {
icon.name: "user-home"
onClicked: logic.openUrl("file:///usr/share/applications/org.kde.dolphin.desktop")
ToolTip.delay: 200
ToolTip.timeout: 1000
ToolTip.visible: hovered
ToolTip.text: i18n("User Home")
}
PlasmaComponents3.ToolButton {
icon.name: "configure"
onClicked: logic.openUrl("file:///usr/share/applications/systemsettings.desktop")
ToolTip.delay: 1000
ToolTip.timeout: 1000
ToolTip.visible: hovered
ToolTip.text: i18n("System Preferences")
}
PlasmaComponents3.ToolButton {
icon.name: "system-lock-screen"
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
//onClicked: pmEngine.performOperation("lockScreen")
//enabled: pmEngine.data["Sleep States"]["LockScreen"]
onClicked: sm.lock()
ToolTip.delay: 200
ToolTip.timeout: 1000
ToolTip.visible: hovered
ToolTip.text: i18n("Lock Screen")
onClicked: sessionManager.lock()
}
icon.width: 24
icon.height: 24
icon.name: "system-lock-screen"
Layout.rightMargin: 10
PlasmaComponents3.ToolTip.delay: 1000
PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("Lock Screen")
}
PlasmaComponents3.ToolButton {
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
onClicked: sessionManager.switchUser()
}
icon.width: 24
icon.height: 24
icon.name: "system-switch-user"
onClicked: sm.switchUser()
ToolTip.delay: 200
ToolTip.timeout: 1000
ToolTip.visible: hovered
ToolTip.text: i18n("Switch User")
Layout.rightMargin: 10
PlasmaComponents3.ToolTip.delay: 1000
PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("Switch User")
}
PlasmaComponents3.ToolButton {
MouseArea {
cursorShape: Qt.PointingHandCursor
anchors.fill: parent
// onClicked: sessionManager.requestShutdown()
onClicked: sessionManager.requestLogoutPrompt()
}
icon.width: 24
icon.height: 24
icon.name: "system-shutdown"
// onClicked: sm.requestShutdown()
onClicked: sm.requestLogoutPrompt()
ToolTip.delay: 200
ToolTip.timeout: 1000
ToolTip.visible: hovered
ToolTip.text: i18n("Shutdown")
Layout.rightMargin: 10
PlasmaComponents3.ToolTip.delay: 1000
PlasmaComponents3.ToolTip.timeout: 1000
PlasmaComponents3.ToolTip.visible: hovered
PlasmaComponents3.ToolTip.text: i18n("Shutdown")
}
}

View File

@ -6,10 +6,10 @@
import QtQuick
import org.kde.plasma.components 3.0 as PlasmaComponents3
import org.kde.plasma.components as PlasmaComponents3
import org.kde.plasma.core as PlasmaCore
import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Layouts 1.1
import org.kde.kirigami as Kirigami
import QtQuick.Layouts
import "code/tools.js" as Tools
Item {
@ -50,6 +50,14 @@ Item {
}
}
WheelHandler {
acceptedDevices: PointerDevice.Mouse
onWheel: {
if (typeof scrollFlickable !== "undefined" && scrollFlickable) {
scrollFlickable.contentY -= wheel.angleDelta.y
}
}
}
Kirigami.Icon {
id: icon

View File

@ -6,10 +6,10 @@
import QtQuick
import org.kde.plasma.components 3.0 as PlasmaComponents3
import org.kde.plasma.components as PlasmaComponents3
import org.kde.plasma.core as PlasmaCore
import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Layouts 1.1
import org.kde.kirigami as Kirigami
import QtQuick.Layouts
import "code/tools.js" as Tools
Item {

View File

@ -6,10 +6,10 @@
import QtQuick
import org.kde.plasma.components 3.0 as PlasmaComponents3
import org.kde.plasma.components as PlasmaComponents3
import org.kde.plasma.core as PlasmaCore
import org.kde.kirigami 2.20 as Kirigami
import QtQuick.Layouts 1.1
import org.kde.kirigami as Kirigami
import QtQuick.Layouts
import "code/tools.js" as Tools
Item {

View File

@ -4,13 +4,13 @@
SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick 2.15
import QtQuick
import org.kde.kquickcontrolsaddons 2.0
import org.kde.ksvg 1.0 as KSvg
import org.kde.kquickcontrolsaddons
import org.kde.ksvg as KSvg
import org.kde.plasma.components as PlasmaComponents
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.kirigami 2.20 as Kirigami
import org.kde.plasma.extras as PlasmaExtras
import org.kde.kirigami as Kirigami
FocusScope {
id: itemGrid
@ -38,8 +38,8 @@ FocusScope {
property int iconSize
property var horizontalScrollBarPolicy: PlasmaComponents.ScrollBar.AlwaysOff
property var verticalScrollBarPolicy: PlasmaComponents.ScrollBar.AlwaysOn
property var verticalScrollBarPolicy: PlasmaComponents.ScrollBar.AlwaysOff
property bool bypassArrowNav: false
onDropEnabledChanged: {
if (!dropEnabled && "dropPlaceHolderIndex" in model) {
model.dropPlaceHolderIndex = -1;
@ -255,7 +255,7 @@ FocusScope {
boundsBehavior: Flickable.StopAtBounds
delegate: itemColumns == 1 ? aItemGridDelegate : aItemGridDelegate2
highlight: Rectangle { color: colorWithAlpha(Kirigami.Theme.highlightColor,0.5); radius: 6 }
highlight: Rectangle { color: Qt.rgba(0.9, 0.9, 0.9, 0.1); radius: 6 }
highlightFollowsCurrentItem: true
highlightMoveDuration: 0
@ -277,6 +277,7 @@ FocusScope {
}
Keys.onLeftPressed: event => {
console.log("ItemGridView navLeft")
if (itemGrid.currentCol() !== 0) {
event.accepted = true;
moveCurrentIndexLeft();
@ -287,7 +288,7 @@ FocusScope {
Keys.onRightPressed: event => {
var columns = Math.floor(width / cellWidth);
console.log("ItemGridView navRight")
if (itemGrid.currentCol() !== columns - 1 && currentIndex !== count -1) {
event.accepted = true;
moveCurrentIndexRight();
@ -297,26 +298,36 @@ FocusScope {
}
Keys.onUpPressed: event => {
if (itemGrid.currentRow() !== 0) {
event.accepted = true;
moveCurrentIndexUp();
positionViewAtIndex(currentIndex, GridView.Contain);
if (bypassArrowNav) {
console.log("Bypass navup")
keyNavUp()
event.accepted = true
} else if (currentRow() !== 0) {
console.log("navup")
moveCurrentIndexUp()
event.accepted = true
} else {
itemGrid.keyNavUp();
keyNavUp()
}
}
Keys.onDownPressed: event => {
if (itemGrid.currentRow() < itemGrid.lastRow()) {
// Fix moveCurrentIndexDown()'s lack of proper spatial nav down
// into partial columns.
event.accepted = true;
var columns = Math.floor(width / cellWidth);
var newIndex = currentIndex + columns;
currentIndex = Math.min(newIndex, count - 1);
positionViewAtIndex(currentIndex, GridView.Contain);
if (bypassArrowNav) {
console.log("Bypass navdown")
keyNavDown()
event.accepted = true
} else if (currentRow() < lastRow()) {
console.log("navdown")
var columns = Math.floor(width / cellWidth)
var newIndex = currentIndex + columns
currentIndex = Math.min(newIndex, count - 1)
positionViewAtIndex(currentIndex, GridView.Contain)
event.accepted = true
} else {
itemGrid.keyNavDown();
keyNavDown()
}
}
@ -339,6 +350,7 @@ FocusScope {
MouseArea {
id: hoverArea
cursorShape: gridView.currentIndex !== -1 ? Qt.PointingHandCursor : Qt.ArrowCursor
//anchors.fill: parent
width: itemGrid.width - Kirigami.Units.gridUnit

View File

@ -1,16 +1,16 @@
/*
SPDX-FileCopyrightText: 2015 Eike Hein <hein@kde.org>
SPDX-FileCopyrightText: 2015 Eike Hein <hein@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick
import org.kde.ksvg 1.0 as KSvg
import org.kde.ksvg as KSvg
import org.kde.plasma.components as PlasmaComponents
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.kirigami 2.20 as Kirigami
import org.kde.plasma.private.kicker 0.1 as Kicker
import org.kde.plasma.extras as PlasmaExtras
import org.kde.kirigami as Kirigami
import org.kde.plasma.private.kicker as Kicker
import org.kde.plasma.plasmoid
PlasmaComponents.ScrollView {
@ -24,10 +24,10 @@ PlasmaComponents.ScrollView {
implicitHeight: itemColumn.implicitHeight
signal keyNavLeft(int subGridIndex)
signal keyNavRight(int subGridIndex)
signal keyNavUp()
signal keyNavDown()
//signal keyNavLeft(int subGridIndex)
//signal keyNavRight(int subGridIndex)
signal keyNavUp
signal keyNavDown
property bool grabFocus: false
@ -53,7 +53,7 @@ PlasmaComponents.ScrollView {
for (var i = 0; i < repeater.count; i++) {
var grid = subGridAt(i);
if(grid.count > 0 ){
if (grid.count > 0) {
if (rows <= row) {
target = grid;
rows += grid.lastRow() + 2; // Header counts as one.
@ -118,7 +118,7 @@ PlasmaComponents.ScrollView {
textFormat: Text.PlainText
}
Rectangle{
Rectangle {
anchors.right: parent.right
anchors.left: gridViewLabel.right
anchors.leftMargin: Kirigami.Units.largeSpacing
@ -138,6 +138,56 @@ PlasmaComponents.ScrollView {
ItemGridView {
id: gridView
Connections {
target: gridView
onKeyNavDown: {
console.log("ItemMultiGridView.qml: ↓")
if (gridView.currentIndex < gridView.count - 1) {
gridView.currentIndex += 1
return
}
// At end of grid jump to next grid
var i = index
for (var j = i + 1; j < repeater.count; j++) {
var next = subGridAt(j)
if (next.count > 0) {
next.currentIndex = 0
next.focus = true
return
}
}
}
onKeyNavUp: {
console.log("ItemMultiGridView.qml: ↑")
if (gridView.currentIndex > 0) {
gridView.currentIndex -= 1
return
}
// At start of grid jump to previous grid
var i = index
for (var j = i - 1; j >= 0; j--) {
var prev = subGridAt(j)
if (prev.count > 0) {
prev.currentIndex = prev.count - 1
prev.focus = true
return
}
}
// If first grid and first item focus search bar
if (i === 0 && gridView.currentIndex === 0) {
searchField.forceActiveFocus()
}
}
}
anchors {
top: gridViewLabel.bottom
topMargin: Kirigami.Units.largeSpacing
@ -145,13 +195,14 @@ PlasmaComponents.ScrollView {
width: parent.width
height: count * itemMultiGrid.cellHeight
itemColumns: 3//itemMultiGrid.itemColumns
itemColumns: 3 //itemMultiGrid.itemColumns
cellWidth: itemMultiGrid.cellWidth
cellHeight: itemMultiGrid.cellHeight
iconSize: root.iconSize
verticalScrollBarPolicy: PlasmaComponents.ScrollBar.AlwaysOff
bypassArrowNav: true
model: repeater.model.modelForRow(index)
onFocusChanged: {
@ -192,51 +243,6 @@ PlasmaComponents.ScrollView {
}
}
}
onKeyNavLeft: {
itemMultiGrid.keyNavLeft(index);
}
onKeyNavRight: {
itemMultiGrid.keyNavRight(index);
}
onKeyNavUp: {
if (index > 0) {
var i;
for (i = index; i > 0 ; i--) {
var prevGrid = subGridAt(i-1);
if(prevGrid.count > 0 ){
prevGrid.tryActivate(prevGrid.lastRow(), currentCol());
break;
}
}
if(i === 0){
itemMultiGrid.keyNavUp();
}
// var prevGrid = subGridAt(index - 1);
// prevGrid.tryActivate(prevGrid.lastRow(), currentCol());
} else {
itemMultiGrid.keyNavUp();
}
}
onKeyNavDown: {
if (index < repeater.count - 1) {
var i;
for (i = index; i < repeater.count - 1 ; i++) {
var grid = subGridAt(i+1);
if(grid.count > 0 ){
grid.tryActivate(0, currentCol());
break;
}
}
if(i === repeater.count){
itemMultiGrid.keyNavDown();
}
// subGridAt(index + 1).tryActivate(0, currentCol());
} else {
itemMultiGrid.keyNavDown();
}
}
}
@ -250,6 +256,4 @@ PlasmaComponents.ScrollView {
}
}
}
}
}
}

View File

@ -18,51 +18,67 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
import QtQuick 2.4
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.12
import org.kde.plasma.plasmoid 2.0
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 3.0 as PC3
import org.kde.plasma.extras 2.0 as PlasmaExtras
import org.kde.plasma.private.kicker 0.1 as Kicker
import org.kde.kquickcontrolsaddons 2.0
import org.kde.plasma.private.quicklaunch 1.0
import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import org.kde.plasma.plasmoid
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.components as PC3
import org.kde.plasma.extras as PlasmaExtras
import org.kde.plasma.private.kicker as Kicker
import org.kde.kquickcontrolsaddons
import org.kde.plasma.private.quicklaunch
import org.kde.kirigami as Kirigami
import org.kde.plasma.plasma5support as Plasma5Support
PlasmaCore.Dialog {
id: root
objectName: "popupWindow"
//flags: Qt.Dialog | Qt.FramelessWindowHint
flags: Qt.WindowStaysOnTopHint
location:{
location: {
if (Plasmoid.configuration.displayPosition === 1)
return PlasmaCore.Types.Floating
return PlasmaCore.Types.Floating;
else if (Plasmoid.configuration.displayPosition === 2)
return PlasmaCore.Types.BottomEdge
return PlasmaCore.Types.BottomEdge;
else
return Plasmoid.location
return Plasmoid.location;
}
hideOnWindowDeactivate: true
property int iconSize:{ switch(Plasmoid.configuration.appsIconSize){
case 0: return Kirigami.Units.iconSizes.smallMedium;
case 1: return Kirigami.Units.iconSizes.medium;
case 2: return Kirigami.Units.iconSizes.large;
case 3: return Kirigami.Units.iconSizes.huge;
default: return 64
// Ensure minimum dimensions to prevent empty dialog error
width: Math.max(rootItem.width, 300)
height: Math.max(rootItem.height, 200)
property int iconSize: {
switch (Plasmoid.configuration.appsIconSize) {
case 0:
return Kirigami.Units.iconSizes.smallMedium;
case 1:
return Kirigami.Units.iconSizes.medium;
case 2:
return Kirigami.Units.iconSizes.large;
case 3:
return Kirigami.Units.iconSizes.huge;
default:
return 64;
}
}
property int docsIconSize:{ switch(Plasmoid.configuration.docsIconSize){
case 0: return Kirigami.Units.iconSizes.smallMedium;
case 1: return Kirigami.Units.iconSizes.medium;
case 2: return Kirigami.Units.iconSizes.large;
case 3: return Kirigami.Units.iconSizes.huge;
default: return Kirigami.Units.iconSizes.medium;
property int docsIconSize: {
switch (Plasmoid.configuration.docsIconSize) {
case 0:
return Kirigami.Units.iconSizes.smallMedium;
case 1:
return Kirigami.Units.iconSizes.medium;
case 2:
return Kirigami.Units.iconSizes.large;
case 3:
return Kirigami.Units.iconSizes.huge;
default:
return Kirigami.Units.iconSizes.medium;
}
}
@ -75,10 +91,11 @@ PlasmaCore.Dialog {
property bool searching: (searchField.text != "")
onSearchingChanged: {
if(searching)
view.currentIndex = 2
else
view.currentIndex = 0
if (searching) {
view.currentIndex = 2;
} else {
view.currentIndex = 0;
}
}
onVisibleChanged: {
@ -87,34 +104,38 @@ PlasmaCore.Dialog {
x = pos.x;
y = pos.y;
reset();
}else{
view.currentIndex = 0
} else {
view.currentIndex = 0;
}
}
onHeightChanged: {
if (visible) {
var pos = popupPosition(width, height);
x = pos.x;
y = pos.y;
}
}
onWidthChanged: {
if (visible) {
var pos = popupPosition(width, height);
x = pos.x;
y = pos.y;
}
}
function toggle(){
root.visible = !root.visible
function toggle() {
root.visible = !root.visible;
}
function reset() {
searchField.text = "";
searchField.focus = true
view.currentIndex = 0
globalFavoritesGrid.currentIndex = -1
documentsGrid.currentIndex = -1
allAppsGrid.currentIndex = -1
searchField.focus = true;
view.currentIndex = 0;
globalFavoritesGrid.currentIndex = -1;
documentsGrid.currentIndex = -1;
allAppsGrid.currentIndex = -1;
}
function popupPosition(width, height) {
@ -175,24 +196,48 @@ PlasmaCore.Dialog {
}
function colorWithAlpha(color: color, alpha: real): color {
return Qt.rgba(color.r, color.g, color.b, alpha)
return Qt.rgba(color.r, color.g, color.b, alpha);
}
mainItem: FocusScope {
id: rootItem
property int widthComputed: root.cellSizeWidth * Plasmoid.configuration.numberColumns + Kirigami.Units.gridUnit*2
property int widthComputed: root.cellSizeWidth * Plasmoid.configuration.numberColumns + Kirigami.Units.gridUnit * 2
width: Math.max(widthComputed + Kirigami.Units.gridUnit * 2, 300)
height: view.height + searchField.height + footer.height + Kirigami.Units.gridUnit * 3
width: rootItem.widthComputed+ Kirigami.Units.gridUnit*2
Layout.minimumWidth: width
Layout.maximumWidth: width
Layout.minimumHeight: view.height + searchField.height + footer.height + Kirigami.Units.gridUnit * 3
Layout.maximumHeight: view.height + searchField.height + footer.height + Kirigami.Units.gridUnit * 3
Layout.minimumHeight: height
Layout.maximumHeight: height
focus: true
onFocusChanged: searchField.focus = true
Plasma5Support.DataSource {
id: executable
engine: "executable"
connectedSources: []
property bool dolphinRunning: false
onNewData: function (source, data) {
if (source.includes("pgrep")) {
dolphinRunning = data["exit code"] === 0;
}
disconnectSource(source);
}
function exec(cmd) {
connectSource(cmd);
}
function checkDolphin() {
connectSource("pgrep dolphin");
}
}
Kirigami.Heading {
id: dummyHeading
visible: false
@ -207,7 +252,7 @@ PlasmaCore.Dialog {
PC3.TextField {
id: searchField
anchors{
anchors {
top: parent.top
topMargin: Kirigami.Units.gridUnit
left: parent.left
@ -225,29 +270,107 @@ PlasmaCore.Dialog {
background: Rectangle {
color: Kirigami.Theme.backgroundColor
radius: 3
radius: 20
border.width: 1
border.color: colorWithAlpha(Kirigami.Theme.textColor,0.05)
border.color: colorWithAlpha(Kirigami.Theme.textColor, 0.05)
}
onTextChanged: runnerModel.query = text;
Keys.onPressed: (event)=> {
Keys.onPressed: (event) => {
if (event.key === Qt.Key_Escape) {
event.accepted = true;
if(root.searching){
searchField.clear()
if (root.searching) {
searchField.clear();
} else {
root.toggle()
root.toggle();
}
}
// Forward Up/Down keys directly to runnerGrid when on search page
if (view.currentIndex === 2 && (event.key === Qt.Key_Up || event.key === Qt.Key_Down)) {
event.accepted = true;
// Make sure runnerGrid can receive the key event
runnerGrid.focus = true;
// Forward the key event to runnerGrid
if (event.key === Qt.Key_Down) {
console.log("Down key pressed");
// Simulate a down key press on the first item if nothing is selected
if (!runnerGrid.focus || runnerGrid.currentIndex === -1) {
runnerGrid.tryActivate(0, 0);
} else {
// Forward the down key to the currently focused grid
var currentGrid = runnerGrid.subGridAt(0); // or find the currently active grid
if (currentGrid) {
currentGrid.forceActiveFocus();
// Trigger the key navigation
currentGrid.keyNavDown();
}
}
} else if (event.key === Qt.Key_Up) {
// For up key, go to the last item or handle appropriately
console.log("Up key pressed");
var lastGridIndex = runnerGrid.count - 1;
if (lastGridIndex >= 0) {
var lastGrid = runnerGrid.subGridAt(lastGridIndex);
if (lastGrid && lastGrid.count > 0) {
lastGrid.tryActivate(lastGrid.lastRow(), 0);
lastGrid.focus = true;
}
}
}
return;
}
if (event.key === Qt.Key_Down || event.key === Qt.Key_Tab || event.key === Qt.Key_Backtab) {
event.accepted = true;
view.currentItem.forceActiveFocus()
view.currentItem.tryActivate(0,0)
if (view.currentIndex === 2) {
// For search results page
runnerGrid.focus = true;
runnerGrid.tryActivate(0, 0);
} else {
// For other pages
view.currentItem.forceActiveFocus();
view.currentItem.tryActivate(0, 0);
}
}
}
Keys.onReturnPressed: {
if (view.currentIndex === 2) {
// On search results page, activate the first available item
runnerGrid.focus = true;
// Find the first grid with items and activate its first item
for (var i = 0; i < runnerGrid.count; i++) {
var grid = runnerGrid.subGridAt(i);
if (grid && grid.count > 0) {
grid.currentIndex = 0;
grid.focus = true;
grid.itemActivated(0, "", null);
if ("trigger" in grid.model) {
//console.log("Calling grid.model.trigger(0)");
grid.model.trigger(0, "", null);
root.toggle();
}
return;
}
}
} else {
// Original logic for other pages
for (var i = 0; i < runnerGrid.count; i++) {
var grid = runnerGrid.subGridAt(i)
if (grid && grid.count > 0) {
grid.currentIndex = 0
grid.focus = true
grid.itemActivated(0, "", null)
return
}
}
}
}
function backspace() {
if (!root.visible) {
return;
@ -270,64 +393,51 @@ PlasmaCore.Dialog {
left: searchField.left
verticalCenter: searchField.verticalCenter
leftMargin: Kirigami.Units.smallSpacing * 2
}
height: Kirigami.Units.iconSizes.small
width: height
}
}
Rectangle{
height: 2
width: searchField.width - 2
anchors.bottom: searchField.bottom
anchors.horizontalCenter: parent.horizontalCenter
color: Kirigami.Theme.highlightColor
}
//
//
//
//
//
SwipeView {
id: view
interactive: false
currentIndex: 0
clip: true
anchors.top: searchField.bottom
anchors.topMargin: Kirigami.Units.gridUnit
anchors.left: parent.left
anchors.leftMargin: Kirigami.Units.gridUnit
onCurrentIndexChanged: {
globalFavoritesGrid.currentIndex = -1
documentsGrid.currentIndex = -1
anchors {
top: searchField.bottom
topMargin: Kirigami.Units.gridUnit
left: parent.left
leftMargin: Kirigami.Units.gridUnit
right: parent.right
rightMargin: Kirigami.Units.gridUnit
}
width: rootItem.widthComputed
height: (root.cellSizeHeight * Plasmoid.configuration.numberRows) + (topRow.height*2) + ((docsIconSize + Kirigami.Units.largeSpacing)*3) + (3*Kirigami.Units.largeSpacing)
onCurrentIndexChanged: {
globalFavoritesGrid.currentIndex = -1;
documentsGrid.currentIndex = -1;
}
width: rootItem.widthComputed / 0.1
height: (root.cellSizeHeight * Plasmoid.configuration.numberRows) + (topRow.height * 2) + ((docsIconSize + Kirigami.Units.largeSpacing) * 5) + (3 * Kirigami.Units.largeSpacing)
//
// PAGE 1
//
Column{
Column {
width: rootItem.widthComputed
height: view.height
spacing: Kirigami.Units.largeSpacing
spacing: Kirigami.Units.largeSpacing * 2
function tryActivate(row, col) {
globalFavoritesGrid.tryActivate(row, col);
}
RowLayout{
RowLayout {
id: topRow
width: rootItem.widthComputed
width: parent.width
height: butttonActionAllApps.implicitHeight
Kirigami.Icon {
@ -344,48 +454,51 @@ PlasmaCore.Dialog {
font.weight: Font.Bold
}
Item{ Layout.fillWidth: true }
Item {
Layout.fillWidth: true
}
AToolButton {
id: butttonActionAllApps
flat: false
iconName: "go-next"
text: i18n("All apps")
buttonHeight: 25
onClicked: {
view.currentIndex = 1
view.currentIndex = 1;
}
}
}
ItemGridView {
id: globalFavoritesGrid
width: rootItem.widthComputed
width: parent.width
height: root.cellSizeHeight * Plasmoid.configuration.numberRows
itemColumns: 1
dragEnabled: true
dropEnabled: true
cellWidth: root.cellSizeWidth
cellWidth: parent.width / Plasmoid.configuration.numberColumns
cellHeight: root.cellSizeHeight
iconSize: root.iconSize
onKeyNavUp: {
globalFavoritesGrid.focus = false
globalFavoritesGrid.focus = false;
searchField.focus = true;
}
onKeyNavDown: {
globalFavoritesGrid.focus = false
documentsGrid.tryActivate(0,0)
globalFavoritesGrid.focus = false;
documentsGrid.tryActivate(0, 0);
}
Keys.onPressed:(event)=> {
Keys.onPressed: event => {
if (event.key === Qt.Key_Tab) {
event.accepted = true;
searchField.focus = true
globalFavoritesGrid.focus = false
searchField.focus = true;
globalFavoritesGrid.focus = false;
}
}
}
RowLayout{
width: rootItem.widthComputed
RowLayout {
width: parent.width
height: butttonActionAllApps.implicitHeight
Kirigami.Icon {
@ -402,17 +515,28 @@ PlasmaCore.Dialog {
font.weight: Font.Bold
}
Item{ Layout.fillWidth: true }
Item {
Layout.fillWidth: true
}
//AToolButton {
// flat: false
// iconName: "list-add"
// text: i18n("More")
// onClicked: {
// //view.currentIndex = 1
//
// }
//}
AToolButton {
id: butttonActionRecentMore
flat: false
iconName: "go-next"
text: i18n("Show more")
buttonHeight: 25
onClicked: {
executable.checkDolphin();
if (executable.dolphinRunning) {
console.log("dolphin is running");
executable.exec("dolphin 'recentlyused:/files/'");
} else {
console.log("dolphin is not running");
executable.exec("dolphin --new-window 'recentlyused:/files/'");
}
root.toggle();
}
}
}
ItemGridView {
@ -423,17 +547,18 @@ PlasmaCore.Dialog {
dragEnabled: true
dropEnabled: true
cellWidth: rootItem.widthComputed * 0.48
cellHeight: docsIconSize + Kirigami.Units.largeSpacing
cellHeight: docsIconSize + Kirigami.Units.largeSpacing * 2
iconSize: docsIconSize
clip: true
onKeyNavUp: {globalFavoritesGrid.tryActivate(0,0);
documentsGrid.focus = false
onKeyNavUp: {
globalFavoritesGrid.tryActivate(0, 0);
documentsGrid.focus = false;
}
Keys.onPressed:(event)=> {
Keys.onPressed: (event) => {
if (event.key === Qt.Key_Tab) {
event.accepted = true;
searchField.focus = true
documentsGrid.focus = false
searchField.focus = true;
documentsGrid.focus = false;
}
}
}
@ -442,17 +567,16 @@ PlasmaCore.Dialog {
//
// PAGE 2
//
Column{
Column {
width: rootItem.widthComputed
height: view.height
spacing: Kirigami.Units.largeSpacing
spacing: Kirigami.Units.largeSpacing * 2
function tryActivate(row, col) {
allAppsGrid.tryActivate(row, col);
}
RowLayout{
width: rootItem.widthComputed
RowLayout {
width: parent.width
height: butttonActionAllApps.implicitHeight
Kirigami.Icon {
@ -469,15 +593,18 @@ PlasmaCore.Dialog {
font.weight: Font.Bold
}
Item{ Layout.fillWidth: true }
Item {
Layout.fillWidth: true
}
AToolButton {
flat: false
iconName: 'go-previous'
text: i18n("Pinned")
buttonHeight: 25
mirror: true
onClicked: {
view.currentIndex = 0
view.currentIndex = 0;
}
}
}
@ -485,8 +612,8 @@ PlasmaCore.Dialog {
ItemGridView {
id: allAppsGrid
width: rootItem.widthComputed
height: Math.floor((view.height-topRow.height-Kirigami.Units.largeSpacing)/cellHeight)* cellHeight
itemColumns: 3
height: Math.floor((view.height - topRow.height - Kirigami.Units.largeSpacing) / cellHeight) * cellHeight
itemColumns: 2
dragEnabled: false
dropEnabled: false
cellWidth: rootItem.widthComputed - Kirigami.Units.gridUnit * 2
@ -494,36 +621,35 @@ PlasmaCore.Dialog {
iconSize: root.iconSize
clip: true
onKeyNavUp: {
searchField.focus = true
allAppsGrid.focus = false
searchField.focus = true;
allAppsGrid.focus = false;
}
Keys.onPressed:(event)=> {
Keys.onPressed: (event) => {
if (event.key === Qt.Key_Tab) {
event.accepted = true;
searchField.focus = true
allAppsGrid.focus = false
searchField.focus = true;
allAppsGrid.focus = false;
}
}
}
}
//
// PAGE 3
//
ItemMultiGridView {
id: runnerGrid
width: rootItem.widthComputed
height: view.height
itemColumns: 3
cellWidth: rootItem.widthComputed - Kirigami.Units.gridUnit * 2
cellHeight: root.iconSize + Kirigami.Units.smallSpacing
cellHeight: root.iconSize + Kirigami.Units.smallSpacing * 4
model: runnerModel
grabFocus: false
grabFocus: true // Change this to true
focus: view.currentIndex === 2 // Add this line
onKeyNavUp: {
runnerGrid.focus = false
searchField.focus = true
runnerGrid.focus = false;
searchField.focus = true;
}
}
}
@ -535,17 +661,17 @@ PlasmaCore.Dialog {
anchors.bottom: parent.bottom
position: PC3.ToolBar.Footer
Footer{
Footer {
anchors.fill: parent
anchors.leftMargin: Kirigami.Units.gridUnit
anchors.rightMargin: Kirigami.Units.gridUnit
}
}
Keys.onPressed: (event)=> {
if(event.modifiers & Qt.ControlModifier ||event.modifiers & Qt.ShiftModifier){
Keys.onPressed: (event) => {
if (event.modifiers & Qt.ControlModifier || event.modifiers & Qt.ShiftModifier) {
searchField.focus = true;
return
return;
}
if (event.key === Qt.Key_Escape) {
event.accepted = true;
@ -568,23 +694,18 @@ PlasmaCore.Dialog {
event.accepted = true;
searchField.appendText(event.text);
}
searchField.focus = true
}
}
}
function setModels(){
globalFavoritesGrid.model = globalFavorites
function setModels() {
globalFavoritesGrid.model = globalFavorites;
allAppsGrid.model = rootModel.modelForRow(2);
documentsGrid.model = rootModel.modelForRow(1)
documentsGrid.model = rootModel.modelForRow(1);
}
Component.onCompleted: {
rootModel.refreshed.connect(setModels)
rootModel.refreshed.connect(setModels);
reset();
rootModel.refresh();
}
}

View File

@ -17,18 +17,17 @@
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
import QtQuick 2.0
import QtQuick.Layouts 1.1
import QtQuick
import QtQuick.Layouts
import org.kde.plasma.plasmoid
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 3.0 as PC3
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.components as PC3
import org.kde.plasma.private.kicker 0.1 as Kicker
import org.kde.plasma.plasma5support 2.0 as P5Support
import org.kde.plasma.private.kicker as Kicker
import org.kde.kirigami as Kirigami
import org.kde.ksvg 1.0 as KSvg
import org.kde.ksvg as KSvg
PlasmoidItem {
@ -59,8 +58,10 @@ PlasmoidItem {
Plasmoid.icon: Plasmoid.configuration.useCustomButtonImage ? Plasmoid.configuration.customButtonImage : Plasmoid.configuration.icon
onSystemFavoritesChanged: {
if (systemFavorites) {
systemFavorites.favorites = Plasmoid.configuration.favoriteSystemActions;
}
}
Kicker.RootModel {
id: rootModel
@ -102,7 +103,6 @@ PlasmoidItem {
}
}
Connections {
target: globalFavorites
@ -115,6 +115,7 @@ PlasmoidItem {
target: systemFavorites
function onFavoritesChanged() {
if (Plasmoid.configuration && target)
Plasmoid.configuration.favoriteSystemActions = target.favorites;
}
}
@ -158,7 +159,6 @@ PlasmoidItem {
}
}
Kicker.DragHelper {
id: dragHelper
}
@ -204,7 +204,6 @@ PlasmoidItem {
imagePath: "dialogs/background"
}
PC3.Label {
id: toolTipDelegate
@ -235,10 +234,6 @@ PlasmoidItem {
]
Component.onCompleted: {
// plasmoid.setAction("menuedit", i18n("Edit Applications..."));
// //rootModel.refreshed.connect(reset);
// //dragHelper.dropped.connect(resetDragSource);
if (Plasmoid.hasOwnProperty("activationTogglesExpanded")) {
Plasmoid.activationTogglesExpanded = !kicker.isDash
}
@ -246,10 +241,6 @@ PlasmoidItem {
windowSystem.focusIn.connect(enableHideOnWindowDeactivate);
kicker.hideOnWindowDeactivate = true;
//updateSvgMetrics();
//PlasmaCore.Theme.themeChanged.connect(updateSvgMetrics);
//rootModel.refreshed.connect(reset);
dragHelper.dropped.connect(resetDragSource);
}
}

View File

@ -35,11 +35,11 @@ Or if you know how to make a pull request
## Status
| Locale | Lines | % Done|
|----------|---------|-------|
| Template | 34 | |
| fr | 20/34 | 58% |
| ko | 17/34 | 50% |
| nl | 13/34 | 38% |
| pl | 15/34 | 44% |
| pt_BR | 20/34 | 58% |
| ru | 34/34 | 100% |
| tr | 15/34 | 44% |
| Template | 35 | |
| fr | 20/35 | 57% |
| ko | 17/35 | 48% |
| nl | 13/35 | 37% |
| pl | 15/35 | 42% |
| pt_BR | 20/35 | 57% |
| ru | 34/35 | 97% |
| tr | 15/35 | 42% |

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n"
"POT-Creation-Date: 2024-09-24 13:00+0500\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: omano\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -155,6 +155,10 @@ msgstr "Toutes les applications"
msgid "Recent documents"
msgstr ""
#: ../contents/ui/MenuRepresentation.qml
msgid "Show more"
msgstr ""
#~ msgid "Ditto Menu"
#~ msgstr "Ditto Menu"

View File

@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n"
"POT-Creation-Date: 2024-09-24 13:00+0500\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n"
"PO-Revision-Date: 2021-09-29 09:43+0900\n"
"Last-Translator: \n"
"Language-Team: \n"
@ -152,6 +152,10 @@ msgstr "모든 프로그램"
msgid "Recent documents"
msgstr ""
#: ../contents/ui/MenuRepresentation.qml
msgid "Show more"
msgstr ""
#~ msgid "Ditto Menu"
#~ msgstr "Ditto 메뉴"

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n"
"POT-Creation-Date: 2024-09-24 13:00+0500\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n"
"PO-Revision-Date: 2022-01-01 20:09+0100\n"
"Last-Translator: Heimen Stoffels <vistausss@fastmail.com>\n"
"Language-Team: \n"
@ -156,6 +156,10 @@ msgstr ""
msgid "Recent documents"
msgstr ""
#: ../contents/ui/MenuRepresentation.qml
msgid "Show more"
msgstr ""
#~ msgid "Ditto Menu"
#~ msgstr "Ditto-menu"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n"
"POT-Creation-Date: 2024-09-24 13:00+0500\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n"
"PO-Revision-Date: 2022-04-05 10:40+0100\n"
"Last-Translator: Krzysztof Korab <korapps@outlook.com>\n"
"Language-Team: \n"
@ -155,6 +155,10 @@ msgstr ""
msgid "Recent documents"
msgstr ""
#: ../contents/ui/MenuRepresentation.qml
msgid "Show more"
msgstr ""
#~ msgid "A configurable launcher menu"
#~ msgstr "Konfigurowalne menu uruchamiania programów"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n"
"POT-Creation-Date: 2024-09-24 13:00+0500\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -155,6 +155,10 @@ msgstr "Todos os programas"
msgid "Recent documents"
msgstr ""
#: ../contents/ui/MenuRepresentation.qml
msgid "Show more"
msgstr ""
#~ msgid "Ditto Menu"
#~ msgstr "Ditto Menu"

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n"
"POT-Creation-Date: 2024-09-24 13:00+0500\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: Edward Karate <edward.karate@ya.ru>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -155,6 +155,10 @@ msgstr "Все приложения"
msgid "Recent documents"
msgstr "Последние документы"
#: ../contents/ui/MenuRepresentation.qml
msgid "Show more"
msgstr "Показать больше"
#~ msgid "Ditto Menu"
#~ msgstr "Ditto Menu"

View File

@ -1,5 +1,5 @@
# Translation of Menu11 in LANGUAGE
# Copyright (C) 2024
# Copyright (C) 2025
# This file is distributed under the same license as the Menu11 package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Menu11\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n"
"POT-Creation-Date: 2024-09-24 13:00+0500\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -154,3 +154,7 @@ msgstr ""
#: ../contents/ui/MenuRepresentation.qml
msgid "Recent documents"
msgstr ""
#: ../contents/ui/MenuRepresentation.qml
msgid "Show more"
msgstr ""

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dittomenu\n"
"Report-Msgid-Bugs-To: https://github.com/prateekmedia/Menu11\n"
"POT-Creation-Date: 2024-09-24 13:00+0500\n"
"POT-Creation-Date: 2025-07-13 14:15+0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -158,6 +158,10 @@ msgstr ""
msgid "Recent documents"
msgstr ""
#: ../contents/ui/MenuRepresentation.qml
msgid "Show more"
msgstr ""
#~ msgid "Ditto Menu"
#~ msgstr "Ditto Menu"