From e1cbc09a4125cea1f62df48a933289ed35c2e858 Mon Sep 17 00:00:00 2001 From: Alf Gaida Date: Sat, 26 Sep 2015 03:36:45 +0200 Subject: [PATCH] Cherry-picking upstream version 0.9.0+20150925. Cleaned up debian/.gitignore Switched to experimental because of LXQt namespace change Added minimum version for liblxqt0-dev (>= 0.9.0+20150911) Merged changelog, removed outdated entries --- debian/.gitignore | 2 - debian/changelog | 14 +- debian/control | 2 +- panel/translations/lxqt-panel_it.ts | 4 +- panel/translations/lxqt-panel_it_IT.ts | 359 ------------------ plugin-clock/translations/clock_it.desktop | 3 + .../{clock_it_IT.ts => clock_it.ts} | 10 +- plugin-clock/translations/clock_it_IT.desktop | 12 - plugin-colorpicker/colorpicker.cpp | 3 +- .../translations/colorpicker_el.desktop | 2 +- .../translations/colorpicker_it.desktop | 3 + .../translations/colorpicker_it_IT.desktop | 10 - .../translations/cpuload_it.desktop | 3 + .../{cpuload_it_IT.ts => cpuload_it.ts} | 8 +- .../translations/cpuload_it_IT.desktop | 13 - .../translations/desktopswitch_it.desktop | 2 + ...topswitch_it_IT.ts => desktopswitch_it.ts} | 14 +- .../translations/desktopswitch_it_IT.desktop | 12 - .../translations/directorymenu_it.desktop | 2 + .../translations/directorymenu_it.ts | 65 ++++ .../translations/kbindicator_it.desktop | 2 + .../translations/kbindicator_it.ts | 27 ++ .../translations/mainmenu_it.desktop | 2 + .../{mainmenu_it_IT.ts => mainmenu_it.ts} | 14 +- .../translations/mainmenu_it_IT.desktop | 12 - plugin-mount/translations/mount_it.desktop | 2 + .../{mount_it_IT.ts => mount_it.ts} | 18 +- plugin-mount/translations/mount_it_IT.desktop | 12 - .../translations/networkmonitor_it.ts | 2 +- .../translations/quicklaunch_it.desktop | 3 + ...quicklaunch_it_IT.ts => quicklaunch_it.ts} | 7 +- .../translations/quicklaunch_it_IT.desktop | 12 - .../translations/screensaver_it.desktop | 3 + ...screensaver_it_IT.ts => screensaver_it.ts} | 6 +- .../translations/screensaver_it_IT.desktop | 12 - .../translations/sensors_it.desktop | 3 + .../{sensors_it_IT.ts => sensors_it.ts} | 4 +- .../translations/sensors_it_IT.desktop | 10 - .../translations/showdesktop_it.desktop | 2 + ...showdesktop_it_IT.ts => showdesktop_it.ts} | 8 +- .../translations/showdesktop_it_IT.desktop | 12 - plugin-spacer/translations/spacer_it.desktop | 2 + plugin-spacer/translations/spacer_it.ts | 22 ++ plugin-statusnotifier/CMakeLists.txt | 2 + plugin-statusnotifier/sniasync.cpp | 48 +++ plugin-statusnotifier/sniasync.h | 116 ++++++ .../statusnotifierbutton.cpp | 233 +++++++----- plugin-statusnotifier/statusnotifierbutton.h | 9 +- .../statusnotifierwidget.cpp | 18 +- plugin-statusnotifier/statusnotifierwidget.h | 1 + .../translations/statusnotifier_it.desktop | 2 + plugin-sysstat/translations/sysstat_el.ts | 4 +- .../translations/sysstat_it.desktop | 2 + plugin-sysstat/translations/sysstat_it.ts | 237 ++++++++++++ .../translations/taskbar_it.desktop | 2 + .../{taskbar_it_IT.ts => taskbar_it.ts} | 24 +- .../translations/taskbar_it_IT.desktop | 12 - plugin-tray/translations/tray_it.desktop | 2 + plugin-tray/translations/tray_it_IT.desktop | 12 - plugin-tray/trayicon.cpp | 5 +- plugin-volume/translations/volume_it.desktop | 3 + .../{volume_it_IT.ts => volume_it.ts} | 24 +- .../translations/volume_it_IT.desktop | 12 - .../translations/worldclock_el.ts | 8 +- .../translations/worldclock_it.desktop | 3 + .../translations/worldclock_it.ts | 328 ++++++++++++++++ 66 files changed, 1128 insertions(+), 719 deletions(-) delete mode 100644 panel/translations/lxqt-panel_it_IT.ts create mode 100644 plugin-clock/translations/clock_it.desktop rename plugin-clock/translations/{clock_it_IT.ts => clock_it.ts} (95%) delete mode 100644 plugin-clock/translations/clock_it_IT.desktop create mode 100644 plugin-colorpicker/translations/colorpicker_it.desktop delete mode 100644 plugin-colorpicker/translations/colorpicker_it_IT.desktop create mode 100644 plugin-cpuload/translations/cpuload_it.desktop rename plugin-cpuload/translations/{cpuload_it_IT.ts => cpuload_it.ts} (91%) delete mode 100644 plugin-cpuload/translations/cpuload_it_IT.desktop create mode 100644 plugin-desktopswitch/translations/desktopswitch_it.desktop rename plugin-desktopswitch/translations/{desktopswitch_it_IT.ts => desktopswitch_it.ts} (77%) delete mode 100644 plugin-desktopswitch/translations/desktopswitch_it_IT.desktop create mode 100644 plugin-directorymenu/translations/directorymenu_it.desktop create mode 100644 plugin-directorymenu/translations/directorymenu_it.ts create mode 100644 plugin-kbindicator/translations/kbindicator_it.desktop create mode 100644 plugin-kbindicator/translations/kbindicator_it.ts create mode 100644 plugin-mainmenu/translations/mainmenu_it.desktop rename plugin-mainmenu/translations/{mainmenu_it_IT.ts => mainmenu_it.ts} (88%) delete mode 100644 plugin-mainmenu/translations/mainmenu_it_IT.desktop create mode 100644 plugin-mount/translations/mount_it.desktop rename plugin-mount/translations/{mount_it_IT.ts => mount_it.ts} (83%) delete mode 100644 plugin-mount/translations/mount_it_IT.desktop create mode 100644 plugin-quicklaunch/translations/quicklaunch_it.desktop rename plugin-quicklaunch/translations/{quicklaunch_it_IT.ts => quicklaunch_it.ts} (89%) delete mode 100644 plugin-quicklaunch/translations/quicklaunch_it_IT.desktop create mode 100644 plugin-screensaver/translations/screensaver_it.desktop rename plugin-screensaver/translations/{screensaver_it_IT.ts => screensaver_it.ts} (77%) delete mode 100644 plugin-screensaver/translations/screensaver_it_IT.desktop create mode 100644 plugin-sensors/translations/sensors_it.desktop rename plugin-sensors/translations/{sensors_it_IT.ts => sensors_it.ts} (97%) delete mode 100644 plugin-sensors/translations/sensors_it_IT.desktop create mode 100644 plugin-showdesktop/translations/showdesktop_it.desktop rename plugin-showdesktop/translations/{showdesktop_it_IT.ts => showdesktop_it.ts} (67%) delete mode 100644 plugin-showdesktop/translations/showdesktop_it_IT.desktop create mode 100644 plugin-spacer/translations/spacer_it.desktop create mode 100644 plugin-spacer/translations/spacer_it.ts create mode 100644 plugin-statusnotifier/sniasync.cpp create mode 100644 plugin-statusnotifier/sniasync.h create mode 100644 plugin-statusnotifier/translations/statusnotifier_it.desktop create mode 100644 plugin-sysstat/translations/sysstat_it.desktop create mode 100644 plugin-sysstat/translations/sysstat_it.ts create mode 100644 plugin-taskbar/translations/taskbar_it.desktop rename plugin-taskbar/translations/{taskbar_it_IT.ts => taskbar_it.ts} (91%) delete mode 100644 plugin-taskbar/translations/taskbar_it_IT.desktop create mode 100644 plugin-tray/translations/tray_it.desktop delete mode 100644 plugin-tray/translations/tray_it_IT.desktop create mode 100644 plugin-volume/translations/volume_it.desktop rename plugin-volume/translations/{volume_it_IT.ts => volume_it.ts} (84%) delete mode 100644 plugin-volume/translations/volume_it_IT.desktop create mode 100644 plugin-worldclock/translations/worldclock_it.desktop create mode 100644 plugin-worldclock/translations/worldclock_it.ts diff --git a/debian/.gitignore b/debian/.gitignore index 12e9087..ccb09bc 100644 --- a/debian/.gitignore +++ b/debian/.gitignore @@ -5,5 +5,3 @@ /lxqt-panel/ /lxqt-panel-dbg/ -/lxqt-panel-qt5/ -/lxqt-panel-qt5-dbg/ diff --git a/debian/changelog b/debian/changelog index c1512e4..b45c826 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,13 +1,13 @@ -lxqt-panel (0.9.0+20150830-1) unstable; urgency=medium +lxqt-panel (0.9.0+20150925-1) experimental; urgency=medium [ Alf Gaida ] - * Cherry-picked upstream version 0.9.0+20150830. + * Cherry-picked upstream version 0.9.0+20150925. + * Cleaned up debian/.gitignore + * Switched to experimental because of LXQt namespace change + * Added minimum version for liblxqt0-dev (>= 0.9.0+20150911) * Added upstream signing key and use it in watch file - * Some cleanup in debian $foo - * some changes in debian $foo * drop transitional packages - * some minimum versions added - * drop breaks/replaces + * drop breaks/replaces * append -Wl,--as-needed to linker flags * copyright fixed, the panel uses only LGPL2.1+, file headers fixed upstream @@ -21,4 +21,4 @@ lxqt-panel (0.9.0+20150830-1) unstable; urgency=medium * Sorting build-depends. * Removing whitespaces at EOL and EOF. - -- Alf Gaida Sun, 15 Feb 2015 16:08:24 +0100 + -- Alf Gaida Sat, 26 Sep 2015 03:39:36 +0200 diff --git a/debian/control b/debian/control index 61a213e..3cd7f2e 100644 --- a/debian/control +++ b/debian/control @@ -11,7 +11,7 @@ Build-Depends: cmake (>= 3.0.2), libdbusmenu-qt5-dev, libglib2.0-dev, libicu-dev, - liblxqt0-dev, + liblxqt0-dev (>= 0.9.0-20150911), liblxqt-globalkeys0-dev, liblxqt-globalkeys-ui0-dev, libkf5windowsystem-dev, diff --git a/panel/translations/lxqt-panel_it.ts b/panel/translations/lxqt-panel_it.ts index 433cedb..775d2bb 100644 --- a/panel/translations/lxqt-panel_it.ts +++ b/panel/translations/lxqt-panel_it.ts @@ -184,7 +184,7 @@ Auto-hide - + Nascondi automaticamente @@ -289,7 +289,7 @@ Configure Panel... - Configura pannello... + Configura panello... diff --git a/panel/translations/lxqt-panel_it_IT.ts b/panel/translations/lxqt-panel_it_IT.ts deleted file mode 100644 index 0a0789f..0000000 --- a/panel/translations/lxqt-panel_it_IT.ts +++ /dev/null @@ -1,359 +0,0 @@ - - - - - ConfigPanelDialog - - Configure panel - Configura il pannello - - - Panel size - Dimensione pannello - - - Size: - Dimensione: - - - px - px - - - Use automatic sizing - Usa dimensionamento automatico - - - Panel length && position - Lunghezza e posizione del pannello - - - Left - Sinistra - - - Center - Centro - - - Right - Destra - - - % - % - - - Alignment: - Allineamento: - - - Length: - Lunghezza: - - - Position: - Posizione: - - - Top of desktop - Alto del desktop - - - Left of desktop - Sinistra del desktop - - - Right of desktop - Destra del desktop - - - Bottom of desktop - Basso del desktop - - - Top of desktop %1 - Alto del desktop %1 - - - Left of desktop %1 - Sinistra del desktop %1 - - - Right of desktop %1 - Destra del desktop %1 - - - Bottom of desktop %1 - Basso del desktop %1 - - - - - Configure Panel - Configura panello - - - - ConfigPanelWidget - - - Configure panel - Configura panello - - - - Size - Dimensione - - - - Size: - Dimensione: - - - - - px - - - - - Icon size: - Dimensione icone: - - - - Length: - Lunghezza: - - - - <p>Negative pixel value sets the panel length to that many pixels less than available screen space.</p><p/><p><i>E.g. "Length" set to -100px, screen size is 1000px, then real panel length will be 900 px.</i></p> - <p>Valori negativi impongano una lunghezza del panello di quel numero di pixel meno dello spazio disponibile. </p><p/><p><i>Esempio: -100px e schermo di 1280px = 1180px</i></p> - - - - % - % - - - - px - px - - - - Rows count: - Numero righe: - - - - Alignment && position - Allineamento e posizione - - - - - Left - Sinistra - - - - - - Center - Centro - - - - - Right - Destra - - - - Alignment: - Allineamento: - - - - Position: - Posizione: - - - - Auto-hide - - - - - Styling - Aspetto - - - - Custom font color: - Colore carattere personalizzato: - - - - Custom background image: - Immagine sfondo: - - - - Custom background color: - Colore sfondo personalizzato: - - - - Opacity - Trasparenza - - - - Top of desktop - Alto del desktop - - - - Left of desktop - Sinistra del desktop - - - - Right of desktop - Destra del desktop - - - - Bottom of desktop - Basso del desktop - - - - Top of desktop %1 - Alto del desktop %1 - - - - Left of desktop %1 - Sinistra del desktop %1 - - - - Right of desktop %1 - Destra del desktop %1 - - - - Bottom of desktop %1 - Basso del desktop %1 - - - - Top - In cima - - - - Bottom - In fondo - - - - - Pick color - Scegli colore - - - - Images (*.png *.gif *.jpg) - Immagini (*.png *.gif *.jpg) - - - - LXQtPanel - - - Add Panel Widgets - Aggiungi elementi - - - - - Panel - Panello - - - - Configure Panel... - Configura pannello... - - - - Add Panel Widgets... - Call them "plugins" better? - Aggiungi elementi... - - - - Add Panel - Aggiungi panello - - - - Remove Panel - Rimuovi panello - - - Configure panel... - Configura pannello... - - - Add plugins ... - Aggiungi plugin... - - - - LXQtPanelPlugin - - Configure - Configura - - - Move - Sposta - - - Remove - Rimuovi - - - - LXQtPanelPrivate - - Configure panel - Configura pannello - - - - Plugin - - - Configure "%1" - Configura "%1" - - - - Move "%1" - Sposta "%1" - - - - Remove "%1" - Rimuovi "%1" - - - diff --git a/plugin-clock/translations/clock_it.desktop b/plugin-clock/translations/clock_it.desktop new file mode 100644 index 0000000..bd40ee3 --- /dev/null +++ b/plugin-clock/translations/clock_it.desktop @@ -0,0 +1,3 @@ +Comment[it]=Orologio e calendario +Name[it]=Orologio + diff --git a/plugin-clock/translations/clock_it_IT.ts b/plugin-clock/translations/clock_it.ts similarity index 95% rename from plugin-clock/translations/clock_it_IT.ts rename to plugin-clock/translations/clock_it.ts index d815250..a1cdceb 100644 --- a/plugin-clock/translations/clock_it_IT.ts +++ b/plugin-clock/translations/clock_it.ts @@ -1,12 +1,12 @@ - + FirstDayCombo <locale based> - + <basato su locale> @@ -63,12 +63,12 @@ Show date below time on new &line - Mostra la data su una seconda riga + Mostra la data su una &seconda riga First day of week in calendar - + Primo giorno della settimana @@ -78,7 +78,7 @@ Auto&rotate when the panel is vertical - Ruota automaticamente se il panello è verticale + &Ruota automaticamente se il panello è verticale &Font diff --git a/plugin-clock/translations/clock_it_IT.desktop b/plugin-clock/translations/clock_it_IT.desktop deleted file mode 100644 index 43e26e2..0000000 --- a/plugin-clock/translations/clock_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Date & time -Comment=Displays the current time. Comes with a calendar. - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Orologio e calendario -Name[it_IT]=Orologio diff --git a/plugin-colorpicker/colorpicker.cpp b/plugin-colorpicker/colorpicker.cpp index 0654ae1..5124394 100644 --- a/plugin-colorpicker/colorpicker.cpp +++ b/plugin-colorpicker/colorpicker.cpp @@ -28,6 +28,7 @@ #include "colorpicker.h" #include #include +#include ColorPicker::ColorPicker(const ILXQtPanelPluginStartupInfo &startupInfo) : @@ -82,7 +83,7 @@ void ColorPickerWidget::mouseReleaseEvent(QMouseEvent *event) return; WId id = QApplication::desktop()->winId(); - QPixmap pixmap = QPixmap::grabWindow(id, event->globalX(), event->globalY(), 1, 1); + QPixmap pixmap = qApp->primaryScreen()->grabWindow(id, event->globalX(), event->globalY(), 1, 1); QImage img = pixmap.toImage(); QColor col = QColor(img.pixel(0,0)); diff --git a/plugin-colorpicker/translations/colorpicker_el.desktop b/plugin-colorpicker/translations/colorpicker_el.desktop index abaa4a5..be33cc5 100644 --- a/plugin-colorpicker/translations/colorpicker_el.desktop +++ b/plugin-colorpicker/translations/colorpicker_el.desktop @@ -1,6 +1,6 @@ [Desktop Entry] Type=Service -ServiceTypes=LxQtPanel/Plugin +ServiceTypes=LXQtPanel/Plugin Name=Color picker Comment=Get the color under the cursor. For web developers. diff --git a/plugin-colorpicker/translations/colorpicker_it.desktop b/plugin-colorpicker/translations/colorpicker_it.desktop new file mode 100644 index 0000000..d4defbc --- /dev/null +++ b/plugin-colorpicker/translations/colorpicker_it.desktop @@ -0,0 +1,3 @@ +Comment[it]=Rileva il colore sotto il cursore. Per sviluppatori web. +Name[it]=Selettore del colore + diff --git a/plugin-colorpicker/translations/colorpicker_it_IT.desktop b/plugin-colorpicker/translations/colorpicker_it_IT.desktop deleted file mode 100644 index 9b8c8e7..0000000 --- a/plugin-colorpicker/translations/colorpicker_it_IT.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Color picker -Comment=Get the color under the cursor. For web developers. - - -# Translations -Comment[it_IT]=Rileva il colore sotto il cursore. Per sviluppatori web. -Name[it_IT]=Selettore del colore diff --git a/plugin-cpuload/translations/cpuload_it.desktop b/plugin-cpuload/translations/cpuload_it.desktop new file mode 100644 index 0000000..49724a6 --- /dev/null +++ b/plugin-cpuload/translations/cpuload_it.desktop @@ -0,0 +1,3 @@ +Comment[it]=Monitor del carico del processore +Name[it]=Carico del processore + diff --git a/plugin-cpuload/translations/cpuload_it_IT.ts b/plugin-cpuload/translations/cpuload_it.ts similarity index 91% rename from plugin-cpuload/translations/cpuload_it_IT.ts rename to plugin-cpuload/translations/cpuload_it.ts index 9dd3b75..ababad9 100644 --- a/plugin-cpuload/translations/cpuload_it_IT.ts +++ b/plugin-cpuload/translations/cpuload_it.ts @@ -1,6 +1,6 @@ - + LXQtCpuLoad @@ -10,7 +10,7 @@ CPU load %1% - + Carico del processore %1% @@ -22,7 +22,7 @@ CPU Load Settings - + Impostazioni di carica del processore @@ -52,7 +52,7 @@ Bar width: - + Larghezza barra: diff --git a/plugin-cpuload/translations/cpuload_it_IT.desktop b/plugin-cpuload/translations/cpuload_it_IT.desktop deleted file mode 100644 index 66790b3..0000000 --- a/plugin-cpuload/translations/cpuload_it_IT.desktop +++ /dev/null @@ -1,13 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin - -Name=Cpu monitor -Comment=Displays the current CPU load. - - - - -# Translations -Comment[it_IT]=Monitor del carico del processore -Name[it_IT]=Carico del processore diff --git a/plugin-desktopswitch/translations/desktopswitch_it.desktop b/plugin-desktopswitch/translations/desktopswitch_it.desktop new file mode 100644 index 0000000..1e252b4 --- /dev/null +++ b/plugin-desktopswitch/translations/desktopswitch_it.desktop @@ -0,0 +1,2 @@ +Comment[it]=Permette di passare ad altri desktop virtuali +Name[it]=Cambia desktop diff --git a/plugin-desktopswitch/translations/desktopswitch_it_IT.ts b/plugin-desktopswitch/translations/desktopswitch_it.ts similarity index 77% rename from plugin-desktopswitch/translations/desktopswitch_it_IT.ts rename to plugin-desktopswitch/translations/desktopswitch_it.ts index 6d599e2..27ded67 100644 --- a/plugin-desktopswitch/translations/desktopswitch_it_IT.ts +++ b/plugin-desktopswitch/translations/desktopswitch_it.ts @@ -1,12 +1,12 @@ - + DesktopSwitch Switch to desktop %1 - + Cambia al desktop %1 @@ -20,27 +20,27 @@ DesktopSwitch settings - + Preferenze cambia desktop Number of rows: - + Numero righe: Desktop labels: - + Etichette desktop: Numbers - + Numeri Names - + Nomi diff --git a/plugin-desktopswitch/translations/desktopswitch_it_IT.desktop b/plugin-desktopswitch/translations/desktopswitch_it_IT.desktop deleted file mode 100644 index 157858f..0000000 --- a/plugin-desktopswitch/translations/desktopswitch_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Desktop switcher -Comment=Allows easy switching between virtual desktops. - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Permette di passare ad altri desktop virtuali -Name[it_IT]=Cambia desktop diff --git a/plugin-directorymenu/translations/directorymenu_it.desktop b/plugin-directorymenu/translations/directorymenu_it.desktop new file mode 100644 index 0000000..9766bce --- /dev/null +++ b/plugin-directorymenu/translations/directorymenu_it.desktop @@ -0,0 +1,2 @@ +Name[it]=Menù cartella +Comment[it]=Mostra il contenuto di una cartella diff --git a/plugin-directorymenu/translations/directorymenu_it.ts b/plugin-directorymenu/translations/directorymenu_it.ts new file mode 100644 index 0000000..9bfa337 --- /dev/null +++ b/plugin-directorymenu/translations/directorymenu_it.ts @@ -0,0 +1,65 @@ + + + + + DirectoryMenu + + + Open + Apri + + + + DirectoryMenuConfiguration + + + Directory Menu Settings + Impostazioni del menu + + + + Appearance + Aspetto + + + + Base directory: + Cartella mostrata: + + + + BaseDirectoryName + Nome della cartella + + + + Icon: + Icona: + + + + Choose Base Directory + Seleziona cartella mostrata + + + + Choose Icon + Seleziona icona + + + + Icons (*.png *.xpm *.jpg) + Icone (*.png .xpm *.jpg) + + + + Directory Menu + Menu cartella + + + + An error occurred while loading the icon. + Errore caricando l'icona. + + + diff --git a/plugin-kbindicator/translations/kbindicator_it.desktop b/plugin-kbindicator/translations/kbindicator_it.desktop new file mode 100644 index 0000000..577adc6 --- /dev/null +++ b/plugin-kbindicator/translations/kbindicator_it.desktop @@ -0,0 +1,2 @@ +Name[it]=Disposizione della tastiera +Comment[it]=Mostra lo stato e la mappatura della tastiera diff --git a/plugin-kbindicator/translations/kbindicator_it.ts b/plugin-kbindicator/translations/kbindicator_it.ts new file mode 100644 index 0000000..1769838 --- /dev/null +++ b/plugin-kbindicator/translations/kbindicator_it.ts @@ -0,0 +1,27 @@ + + + + + LXQtKbIndicatorConfiguration + + + Keyboard Indicator Settings + Indicatori + + + + Caps Lock + Blocco maiuscolo + + + + Num Lock + Blocco numeri + + + + Scroll Lock + Blocco scorrimento + + + diff --git a/plugin-mainmenu/translations/mainmenu_it.desktop b/plugin-mainmenu/translations/mainmenu_it.desktop new file mode 100644 index 0000000..988b388 --- /dev/null +++ b/plugin-mainmenu/translations/mainmenu_it.desktop @@ -0,0 +1,2 @@ +Comment[it]=Avviatore delle applicazioni basato su menù +Name[it]=Menù delle applicazioni diff --git a/plugin-mainmenu/translations/mainmenu_it_IT.ts b/plugin-mainmenu/translations/mainmenu_it.ts similarity index 88% rename from plugin-mainmenu/translations/mainmenu_it_IT.ts rename to plugin-mainmenu/translations/mainmenu_it.ts index f2aad93..891eb34 100644 --- a/plugin-mainmenu/translations/mainmenu_it_IT.ts +++ b/plugin-mainmenu/translations/mainmenu_it.ts @@ -1,12 +1,12 @@ - + LXQtMainMenu Show/hide main menu - Mostra/nascondi menu principale + Mostra/nascondi menù principale Leave @@ -35,7 +35,7 @@ Main Menu settings - Impostazioni del menu principale di LXQt + Impostazioni del menù principale di LXQt @@ -55,12 +55,12 @@ Menu file - File del menu + File del menù Menu file: - File del menu: + File del menù: @@ -85,12 +85,12 @@ Choose menu file - Scegli il file del menu + Scegli il file del menù Menu files (*.menu) - File del menu (*.menu) + File del menù (*.menu) diff --git a/plugin-mainmenu/translations/mainmenu_it_IT.desktop b/plugin-mainmenu/translations/mainmenu_it_IT.desktop deleted file mode 100644 index 3a38f5a..0000000 --- a/plugin-mainmenu/translations/mainmenu_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Application menu -Comment=A menu of all your applications. - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Avviatore delle applicazioni basato su menu -Name[it_IT]=Menu delle applicazioni diff --git a/plugin-mount/translations/mount_it.desktop b/plugin-mount/translations/mount_it.desktop new file mode 100644 index 0000000..eb4e9d8 --- /dev/null +++ b/plugin-mount/translations/mount_it.desktop @@ -0,0 +1,2 @@ +Name[it]=Dispositivi rimovibili +Comment[it]=Gestore dei dispositivi rimovibili (USB, CD, DVD, ...) diff --git a/plugin-mount/translations/mount_it_IT.ts b/plugin-mount/translations/mount_it.ts similarity index 83% rename from plugin-mount/translations/mount_it_IT.ts rename to plugin-mount/translations/mount_it.ts index 8a74e6f..f889b13 100644 --- a/plugin-mount/translations/mount_it_IT.ts +++ b/plugin-mount/translations/mount_it.ts @@ -1,22 +1,22 @@ - + DeviceActionInfo The device <b><nobr>"%1"</nobr></b> is connected. - Il dispositivo <b><nobr>"%1"</nobr></b> è connesso. + Il dispositivo <b><nobr>"%1"</nobr></b> è connesso. The device <b><nobr>"%1"</nobr></b> is removed. - Il dispositivo <b><nobr>"%1"</nobr></b> è stato rimosso. + Il dispositivo <b><nobr>"%1"</nobr></b> è stato rimosso. Removable media/devices manager - Gestore dei dispositivi rimovibili + Gestore dei dispositivi rimovibili @@ -28,7 +28,7 @@ Removable Media Settings - + Impostazioni dispositivi rimovibili @@ -70,17 +70,17 @@ Removable media/devices manager - Gestore dei dispositivi rimovibili + Gestore dei dispositivi rimovibili Mounting of <strong><nobr>"%1"</nobr></strong> failed: %2 - + Montaggio di <strong><nobr>"%1"</nobr></strong> non riuscito: %2 Unmounting of <strong><nobr>"%1"</nobr></strong> failed: %2 - + Smontaggio di <strong><nobr>"%1"</nobr></strong> non riuscito: %2 @@ -108,7 +108,7 @@ No devices are available - + Nessun dispositivo presente diff --git a/plugin-mount/translations/mount_it_IT.desktop b/plugin-mount/translations/mount_it_IT.desktop deleted file mode 100644 index c70c902..0000000 --- a/plugin-mount/translations/mount_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Removable media -Comment=Easy mounting and unmounting of USB and optical drives. - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Gestore dei dispositivi rimovibili (USB, CD, DVD, ...) -Name[it_IT]=Dispositivi rimovibili diff --git a/plugin-networkmonitor/translations/networkmonitor_it.ts b/plugin-networkmonitor/translations/networkmonitor_it.ts index c4788ab..b874ac4 100644 --- a/plugin-networkmonitor/translations/networkmonitor_it.ts +++ b/plugin-networkmonitor/translations/networkmonitor_it.ts @@ -1,6 +1,6 @@ - + LXQtNetworkMonitor diff --git a/plugin-quicklaunch/translations/quicklaunch_it.desktop b/plugin-quicklaunch/translations/quicklaunch_it.desktop new file mode 100644 index 0000000..466988d --- /dev/null +++ b/plugin-quicklaunch/translations/quicklaunch_it.desktop @@ -0,0 +1,3 @@ +Comment[it]=Avvia le applicazioni preferite +Name[it]=Avvio rapido + diff --git a/plugin-quicklaunch/translations/quicklaunch_it_IT.ts b/plugin-quicklaunch/translations/quicklaunch_it.ts similarity index 89% rename from plugin-quicklaunch/translations/quicklaunch_it_IT.ts rename to plugin-quicklaunch/translations/quicklaunch_it.ts index 08ff828..d404054 100644 --- a/plugin-quicklaunch/translations/quicklaunch_it_IT.ts +++ b/plugin-quicklaunch/translations/quicklaunch_it.ts @@ -1,12 +1,12 @@ - + LXQtQuickLaunch Drop Error - Errore di spostamento + Errore di trascinamento @@ -17,7 +17,8 @@ Drop application icons here - + Trascina applicazioni +dal menù qui diff --git a/plugin-quicklaunch/translations/quicklaunch_it_IT.desktop b/plugin-quicklaunch/translations/quicklaunch_it_IT.desktop deleted file mode 100644 index c44779f..0000000 --- a/plugin-quicklaunch/translations/quicklaunch_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Quick launch -Comment=Easy access to your favourite applications. - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Avvia le tue applicazioni preferite -Name[it_IT]=Avvio rapido diff --git a/plugin-screensaver/translations/screensaver_it.desktop b/plugin-screensaver/translations/screensaver_it.desktop new file mode 100644 index 0000000..fe0cdfc --- /dev/null +++ b/plugin-screensaver/translations/screensaver_it.desktop @@ -0,0 +1,3 @@ +Comment[it]=Attiva un salvaschermo e/o blocca lo schermo +Name[it]=Salvaschermo + diff --git a/plugin-screensaver/translations/screensaver_it_IT.ts b/plugin-screensaver/translations/screensaver_it.ts similarity index 77% rename from plugin-screensaver/translations/screensaver_it_IT.ts rename to plugin-screensaver/translations/screensaver_it.ts index fe44c3d..0b47e62 100644 --- a/plugin-screensaver/translations/screensaver_it_IT.ts +++ b/plugin-screensaver/translations/screensaver_it.ts @@ -1,6 +1,6 @@ - + PanelScreenSaver @@ -10,12 +10,12 @@ Lock Screen - + Blocca schermo Panel Screensaver: Global shortcut '%1' cannot be registered - + La scorciatoia globale per lo screensaver: '%1' non può essere registrata diff --git a/plugin-screensaver/translations/screensaver_it_IT.desktop b/plugin-screensaver/translations/screensaver_it_IT.desktop deleted file mode 100644 index bae95fa..0000000 --- a/plugin-screensaver/translations/screensaver_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Launch screensaver -Comment=Activate a screensaver and/or lock the screen - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Attiva un salvaschermo e/o blocca lo schermo -Name[it_IT]=Salvaschermo diff --git a/plugin-sensors/translations/sensors_it.desktop b/plugin-sensors/translations/sensors_it.desktop new file mode 100644 index 0000000..f7f2e8d --- /dev/null +++ b/plugin-sensors/translations/sensors_it.desktop @@ -0,0 +1,3 @@ +Name[it]=Sensori +Comment[it]=Visualizza i valori rilevati dai sensori hardware (attualmente lm_sensors) + diff --git a/plugin-sensors/translations/sensors_it_IT.ts b/plugin-sensors/translations/sensors_it.ts similarity index 97% rename from plugin-sensors/translations/sensors_it_IT.ts rename to plugin-sensors/translations/sensors_it.ts index 0edc8dd..7825fd4 100644 --- a/plugin-sensors/translations/sensors_it_IT.ts +++ b/plugin-sensors/translations/sensors_it.ts @@ -1,6 +1,6 @@ - + LXQtSensorsConfiguration @@ -10,7 +10,7 @@ Sensors Settings - + Impostazioni sensori diff --git a/plugin-sensors/translations/sensors_it_IT.desktop b/plugin-sensors/translations/sensors_it_IT.desktop deleted file mode 100644 index a54e68d..0000000 --- a/plugin-sensors/translations/sensors_it_IT.desktop +++ /dev/null @@ -1,10 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Sensors -Comment=View readings from hardware sensors. - - -# Translations -Name[it_IT]=Sensori -Comment[it_IT]=Visualizza i valori rilevati dai sensori hardware (attualmente lm_sensors) diff --git a/plugin-showdesktop/translations/showdesktop_it.desktop b/plugin-showdesktop/translations/showdesktop_it.desktop new file mode 100644 index 0000000..976fdb9 --- /dev/null +++ b/plugin-showdesktop/translations/showdesktop_it.desktop @@ -0,0 +1,2 @@ +Comment[it]=Minimizza tutte le finestre e mostra la scrivania +Name[it]=Mostra scrivania diff --git a/plugin-showdesktop/translations/showdesktop_it_IT.ts b/plugin-showdesktop/translations/showdesktop_it.ts similarity index 67% rename from plugin-showdesktop/translations/showdesktop_it_IT.ts rename to plugin-showdesktop/translations/showdesktop_it.ts index f879db9..964671c 100644 --- a/plugin-showdesktop/translations/showdesktop_it_IT.ts +++ b/plugin-showdesktop/translations/showdesktop_it.ts @@ -1,22 +1,22 @@ - + ShowDesktop Show desktop - + Mostra scrivania Show Desktop: Global shortcut '%1' cannot be registered - Mostra desktop: la scorciatoia globale '%1' non può essere registrata + Mostra scrivania: la scorciatoia globale '%1' non può essere registrata Show Desktop - Mostra desktop + Mostra scrivania diff --git a/plugin-showdesktop/translations/showdesktop_it_IT.desktop b/plugin-showdesktop/translations/showdesktop_it_IT.desktop deleted file mode 100644 index 6d85106..0000000 --- a/plugin-showdesktop/translations/showdesktop_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Show desktop -Comment=Minimize all windows and show the desktop - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Minimizza tutte le finestre e mostra il desktop -Name[it_IT]=Mostra desktop diff --git a/plugin-spacer/translations/spacer_it.desktop b/plugin-spacer/translations/spacer_it.desktop new file mode 100644 index 0000000..59e099a --- /dev/null +++ b/plugin-spacer/translations/spacer_it.desktop @@ -0,0 +1,2 @@ +Name[it]=Spaziatore +Comment[it]=Aggiunge uno spazio fra gli elementi diff --git a/plugin-spacer/translations/spacer_it.ts b/plugin-spacer/translations/spacer_it.ts new file mode 100644 index 0000000..f5a065c --- /dev/null +++ b/plugin-spacer/translations/spacer_it.ts @@ -0,0 +1,22 @@ + + + + + SpacerConfiguration + + + Spacer Settings + Impostazioni spaziatore + + + + Space width: + Larghezza: + + + + Space type: + Tipo: + + + diff --git a/plugin-statusnotifier/CMakeLists.txt b/plugin-statusnotifier/CMakeLists.txt index 42ea321..9a2b26d 100644 --- a/plugin-statusnotifier/CMakeLists.txt +++ b/plugin-statusnotifier/CMakeLists.txt @@ -10,6 +10,7 @@ set(HEADERS statusnotifieriteminterface.h statusnotifierwatcher.h statusnotifierwidget.h + sniasync.h ) set(SOURCES @@ -19,6 +20,7 @@ set(SOURCES statusnotifieriteminterface.cpp statusnotifierwatcher.cpp statusnotifierwidget.cpp + sniasync.cpp ) qt5_add_dbus_adaptor(SOURCES diff --git a/plugin-statusnotifier/sniasync.cpp b/plugin-statusnotifier/sniasync.cpp new file mode 100644 index 0000000..f888d13 --- /dev/null +++ b/plugin-statusnotifier/sniasync.cpp @@ -0,0 +1,48 @@ +/* BEGIN_COMMON_COPYRIGHT_HEADER + * (c)LGPL2+ + * + * LXQt - a lightweight, Qt based, desktop toolset + * http://lxqt.org + * + * Copyright: 2015 LXQt team + * Authors: + * Palo Kisa + * + * This program or library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * END_COMMON_COPYRIGHT_HEADER */ + +#include "sniasync.h" + +SniAsync::SniAsync(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent/* = 0*/) + : QObject(parent) + , mSni{service, path, connection} +{ + //forward StatusNotifierItem signals + connect(&mSni, &org::kde::StatusNotifierItem::NewAttentionIcon, this, &SniAsync::NewAttentionIcon); + connect(&mSni, &org::kde::StatusNotifierItem::NewIcon, this, &SniAsync::NewIcon); + connect(&mSni, &org::kde::StatusNotifierItem::NewOverlayIcon, this, &SniAsync::NewOverlayIcon); + connect(&mSni, &org::kde::StatusNotifierItem::NewStatus, this, &SniAsync::NewStatus); + connect(&mSni, &org::kde::StatusNotifierItem::NewTitle, this, &SniAsync::NewTitle); + connect(&mSni, &org::kde::StatusNotifierItem::NewToolTip, this, &SniAsync::NewToolTip); +} + +QDBusPendingReply SniAsync::asyncPropGet(QString const & property) +{ + QDBusMessage msg = QDBusMessage::createMethodCall(mSni.service(), mSni.path(), QStringLiteral("org.freedesktop.DBus.Properties"), QStringLiteral("Get")); + msg << mSni.interface() << property; + return mSni.connection().asyncCall(msg); +} diff --git a/plugin-statusnotifier/sniasync.h b/plugin-statusnotifier/sniasync.h new file mode 100644 index 0000000..13152c4 --- /dev/null +++ b/plugin-statusnotifier/sniasync.h @@ -0,0 +1,116 @@ +/* BEGIN_COMMON_COPYRIGHT_HEADER + * (c)LGPL2+ + * + * LXQt - a lightweight, Qt based, desktop toolset + * http://lxqt.org + * + * Copyright: 2015 LXQt team + * Authors: + * Palo Kisa + * + * This program or library is free software; you can redistribute it + * and/or modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301 USA + * + * END_COMMON_COPYRIGHT_HEADER */ + +#if !defined(SNIASYNC_H) +#define SNIASYNC_H + +#include +#include "statusnotifieriteminterface.h" + +template +struct remove_class_type { using type = void; }; // bluff +template +struct remove_class_type { using type = R(ArgTypes...); }; +template +struct remove_class_type { using type = R(ArgTypes...); }; + +template +class call_sig_helper +{ + template + static decltype(&L1::operator()) test(int); + template + static void test(...); //bluff +public: + using type = decltype(test(0)); +}; +template +struct call_signature : public remove_class_type::type> {}; +template +struct call_signature { using type = R (ArgTypes...); }; +template +struct call_signature { using type = R (ArgTypes...); }; +template +struct call_signature { using type = R (ArgTypes...); }; +template +struct call_signature { using type = R(ArgTypes...); }; + +template struct is_valid_signature : public std::false_type {}; +template +struct is_valid_signature : public std::true_type {}; + +class SniAsync : public QObject +{ + Q_OBJECT +public: + SniAsync(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0); + + template + inline void propertyGetAsync(QString const &name, F finished) + { + static_assert(is_valid_signature::type>::value, "need callable (lambda, *function, callable obj) (Arg) -> void"); + connect(new QDBusPendingCallWatcher{asyncPropGet(name), this}, + &QDBusPendingCallWatcher::finished, + [this, finished, name] (QDBusPendingCallWatcher * call) + { + QDBusPendingReply reply = *call; + if (reply.isError()) + qDebug() << "Error on DBus request:" << reply.error(); + finished(qdbus_cast::type>::argument_type>(reply.value())); + call->deleteLater(); + } + ); + } + + //exposed methods from org::kde::StatusNotifierItem + inline QString service() const { return mSni.service(); } + +public slots: + //Forwarded slots from org::kde::StatusNotifierItem + inline QDBusPendingReply<> Activate(int x, int y) { return mSni.Activate(x, y); } + inline QDBusPendingReply<> ContextMenu(int x, int y) { return mSni.ContextMenu(x, y); } + inline QDBusPendingReply<> Scroll(int delta, const QString &orientation) { return mSni.Scroll(delta, orientation); } + inline QDBusPendingReply<> SecondaryActivate(int x, int y) { return mSni.SecondaryActivate(x, y); } + +signals: + //Forwarded signals from org::kde::StatusNotifierItem + void NewAttentionIcon(); + void NewIcon(); + void NewOverlayIcon(); + void NewStatus(const QString &status); + void NewTitle(); + void NewToolTip(); + +private: + QDBusPendingReply asyncPropGet(QString const & property); + +private: + org::kde::StatusNotifierItem mSni; + +}; + +#endif diff --git a/plugin-statusnotifier/statusnotifierbutton.cpp b/plugin-statusnotifier/statusnotifierbutton.cpp index a318c99..ee73324 100644 --- a/plugin-statusnotifier/statusnotifierbutton.cpp +++ b/plugin-statusnotifier/statusnotifierbutton.cpp @@ -32,164 +32,189 @@ #include #include #include "../panel/ilxqtpanelplugin.h" +#include "sniasync.h" StatusNotifierButton::StatusNotifierButton(QString service, QString objectPath, ILXQtPanelPlugin* plugin, QWidget *parent) : QToolButton(parent), - mMenu(NULL), + mMenu(nullptr), mStatus(Passive), - mValid(true), mFallbackIcon(QIcon::fromTheme("application-x-executable")), mPlugin(plugin) { - interface = new org::kde::StatusNotifierItem(service, objectPath, QDBusConnection::sessionBus(), this); + interface = new SniAsync(service, objectPath, QDBusConnection::sessionBus(), this); - QString menuPath = interface->menu().path(); - if (!menuPath.isEmpty()) - { - mMenu = (new DBusMenuImporter(service, interface->menu().path(), this))->menu(); - dynamic_cast(*mMenu).setParent(this); - mMenu->setObjectName(QStringLiteral("StatusNotifierMenu")); - } + connect(interface, &SniAsync::NewIcon, this, &StatusNotifierButton::newIcon); + connect(interface, &SniAsync::NewOverlayIcon, this, &StatusNotifierButton::newOverlayIcon); + connect(interface, &SniAsync::NewAttentionIcon, this, &StatusNotifierButton::newAttentionIcon); + connect(interface, &SniAsync::NewToolTip, this, &StatusNotifierButton::newToolTip); + connect(interface, &SniAsync::NewStatus, this, &StatusNotifierButton::newStatus); + + interface->propertyGetAsync(QStringLiteral("Menu"), [this] (QDBusObjectPath path) { + if (!path.path().isEmpty()) + { + mMenu = (new DBusMenuImporter(interface->service(), path.path(), this))->menu(); + dynamic_cast(*mMenu).setParent(this); + mMenu->setObjectName(QStringLiteral("StatusNotifierMenu")); + } + }); - // HACK: sni-qt creates some invalid items (like one for konversarion 1.5) - if (interface->title().isEmpty() && interface->id().isEmpty()) - mValid = false; + interface->propertyGetAsync(QStringLiteral("Status"), [this] (QString status) { + newStatus(status); + }); - if (mValid) - { - newToolTip(); + interface->propertyGetAsync(QStringLiteral("IconThemePath"), [this] (QString value) { + mThemePath = value; + //do the logic of icons after we've got the theme path refetchIcon(Active); refetchIcon(Passive); refetchIcon(NeedsAttention); - newStatus(interface->status()); - resetIcon(); - - connect(interface, SIGNAL(NewIcon()), this, SLOT(newIcon())); - connect(interface, SIGNAL(NewOverlayIcon()), this, SLOT(newOverlayIcon())); - connect(interface, SIGNAL(NewAttentionIcon()), this, SLOT(newAttentionIcon())); - connect(interface, SIGNAL(NewToolTip()), this, SLOT(newToolTip())); - connect(interface, SIGNAL(NewStatus(QString)), this, SLOT(newStatus(QString))); - } + }); + + newToolTip(); } StatusNotifierButton::~StatusNotifierButton() { + delete interface; } void StatusNotifierButton::newIcon() { refetchIcon(Passive); - resetIcon(); } void StatusNotifierButton::newOverlayIcon() { refetchIcon(Active); - resetIcon(); } void StatusNotifierButton::newAttentionIcon() { refetchIcon(NeedsAttention); - resetIcon(); } void StatusNotifierButton::refetchIcon(Status status) { - QString iconName; - switch (status) + QString nameProperty, pixmapProperty; + if (status == Active) { - case Active: - iconName = interface->overlayIconName(); - break; - case NeedsAttention: - iconName = interface->attentionIconName(); - break; - case Passive: - iconName = interface->iconName(); - break; + nameProperty = QStringLiteral("OverlayIconName"); + pixmapProperty = QStringLiteral("OverlayIconPixmap"); } - - QIcon nextIcon; - if (!iconName.isEmpty()) + else if (status == NeedsAttention) { - if (QIcon::hasThemeIcon(iconName)) - nextIcon = QIcon::fromTheme(iconName); - else + nameProperty = QStringLiteral("AttentionIconName"); + pixmapProperty = QStringLiteral("AttentionIconPixmap"); + } + else // status == Passive + { + nameProperty = QStringLiteral("IconName"); + pixmapProperty = QStringLiteral("IconPixmap"); + } + + interface->propertyGetAsync(nameProperty, [this, status, pixmapProperty] (QString iconName) { + QIcon nextIcon; + if (!iconName.isEmpty()) { - QDir themeDir(interface->iconThemePath()); - if (themeDir.exists()) + if (QIcon::hasThemeIcon(iconName)) + nextIcon = QIcon::fromTheme(iconName); + else { - if (themeDir.exists(iconName + ".png")) - nextIcon.addFile(themeDir.filePath(iconName + ".png")); - - if (themeDir.cd("hicolor") || (themeDir.cd("icons") && themeDir.cd("hicolor"))) + QDir themeDir(mThemePath); + if (themeDir.exists()) { - QStringList sizes = themeDir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); - foreach (QString dir, sizes) + if (themeDir.exists(iconName + ".png")) + nextIcon.addFile(themeDir.filePath(iconName + ".png")); + + if (themeDir.cd("hicolor") || (themeDir.cd("icons") && themeDir.cd("hicolor"))) { - QStringList dirs = QDir(themeDir.filePath(dir)).entryList(QDir::AllDirs | QDir::NoDotAndDotDot); - foreach (QString innerDir, dirs) + QStringList sizes = themeDir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot); + foreach (QString dir, sizes) { - QString file = themeDir.absolutePath() + "/" + dir + "/" + innerDir + "/" + iconName + ".png"; - if (QFile::exists(file)) - nextIcon.addFile(file); + QStringList dirs = QDir(themeDir.filePath(dir)).entryList(QDir::AllDirs | QDir::NoDotAndDotDot); + foreach (QString innerDir, dirs) + { + QString file = themeDir.absolutePath() + "/" + dir + "/" + innerDir + "/" + iconName + ".png"; + if (QFile::exists(file)) + nextIcon.addFile(file); + } } } } } + + switch (status) + { + case Active: + mOverlayIcon = nextIcon; + break; + case NeedsAttention: + mAttentionIcon = nextIcon; + break; + case Passive: + mIcon = nextIcon; + break; + } + + resetIcon(); } - } - else - { - IconPixmapList iconPixmaps; - switch (status) + else { - case Active: - iconPixmaps = interface->overlayIconPixmap(); - break; - case NeedsAttention: - iconPixmaps = interface->attentionIconPixmap(); - break; - case Passive: - iconPixmaps = interface->iconPixmap(); - break; - } + interface->propertyGetAsync(pixmapProperty, [this, status, pixmapProperty] (IconPixmapList iconPixmaps) { + if (iconPixmaps.empty()) + return; + QIcon nextIcon; - if (!iconPixmaps.empty() && !iconPixmaps.first().bytes.isNull()) - { - IconPixmap iconPixmap = iconPixmaps.first(); - QImage image((uchar*) iconPixmap.bytes.data(), iconPixmap.width, iconPixmap.height, QImage::Format_ARGB32); - const uchar *end = image.constBits() + image.byteCount(); - uchar *dest = reinterpret_cast(iconPixmap.bytes.data()); - for (const uchar *src = image.constBits(); src < end; src += 4, dest += 4) - qToUnaligned(qToBigEndian(qFromUnaligned(src)), dest); - - QPixmap pixmap = QPixmap::fromImage(image); - nextIcon = QIcon(pixmap); - } - } + for (IconPixmap iconPixmap: iconPixmaps) + { + if (!iconPixmap.bytes.isNull()) + { + QImage image((uchar*) iconPixmap.bytes.data(), iconPixmap.width, + iconPixmap.height, QImage::Format_ARGB32); - switch (status) - { - case Active: - mOverlayIcon = nextIcon; - break; - case NeedsAttention: - mAttentionIcon = nextIcon; - break; - case Passive: - mIcon = nextIcon; - break; - } + const uchar *end = image.constBits() + image.byteCount(); + uchar *dest = reinterpret_cast(iconPixmap.bytes.data()); + for (const uchar *src = image.constBits(); src < end; src += 4, dest += 4) + qToUnaligned(qToBigEndian(qFromUnaligned(src)), dest); + + nextIcon.addPixmap(QPixmap::fromImage(image)); + } + } + + switch (status) + { + case Active: + mOverlayIcon = nextIcon; + break; + case NeedsAttention: + mAttentionIcon = nextIcon; + break; + case Passive: + mIcon = nextIcon; + break; + } + + resetIcon(); + }); + } + }); } void StatusNotifierButton::newToolTip() { - QString toolTipTitle = interface->toolTip().title; - setToolTip(toolTipTitle.isEmpty() ? interface->title() : toolTipTitle); + interface->propertyGetAsync(QStringLiteral("ToolTip"), [this] (ToolTip tooltip) { + QString toolTipTitle = tooltip.title; + if (!toolTipTitle.isEmpty()) + setToolTip(toolTipTitle); + else + interface->propertyGetAsync(QStringLiteral("Title"), [this] (QString title) { + // we should get here only in case the ToolTip.title was empty + if (!title.isEmpty()) + setToolTip(title); + }); + }); } void StatusNotifierButton::newStatus(QString status) @@ -222,7 +247,13 @@ void StatusNotifierButton::mouseReleaseEvent(QMouseEvent *event) else if (event->button() == Qt::MidButton) interface->SecondaryActivate(QCursor::pos().x(), QCursor::pos().y()); else if (Qt::RightButton == event->button()) - mMenu->popup(QCursor::pos()); + { + if (mMenu) + mMenu->popup(QCursor::pos()); + else + interface->ContextMenu(QCursor::pos().x(), QCursor::pos().y()); + } + QToolButton::mouseReleaseEvent(event); } diff --git a/plugin-statusnotifier/statusnotifierbutton.h b/plugin-statusnotifier/statusnotifierbutton.h index 8df67a6..4dbca30 100644 --- a/plugin-statusnotifier/statusnotifierbutton.h +++ b/plugin-statusnotifier/statusnotifierbutton.h @@ -37,8 +37,6 @@ #include #include -#include "statusnotifieriteminterface.h" - #if QT_VERSION < QT_VERSION_CHECK(5, 5, 0) template inline T qFromUnaligned(const uchar *src) { @@ -50,6 +48,7 @@ template inline T qFromUnaligned(const uchar *src) #endif class ILXQtPanelPlugin; +class SniAsync; class StatusNotifierButton : public QToolButton { @@ -59,8 +58,6 @@ public: StatusNotifierButton(QString service, QString objectPath, ILXQtPanelPlugin* plugin, QWidget *parent = 0); ~StatusNotifierButton(); - bool isValid() const { return mValid; } - enum Status { Passive, Active, NeedsAttention @@ -74,11 +71,11 @@ public slots: void newStatus(QString status); private: - org::kde::StatusNotifierItem *interface; + SniAsync *interface; QMenu *mMenu; Status mStatus; - bool mValid; + QString mThemePath; QIcon mIcon, mOverlayIcon, mAttentionIcon, mFallbackIcon; ILXQtPanelPlugin* mPlugin; diff --git a/plugin-statusnotifier/statusnotifierwidget.cpp b/plugin-statusnotifier/statusnotifierwidget.cpp index 1a85023..691f232 100644 --- a/plugin-statusnotifier/statusnotifierwidget.cpp +++ b/plugin-statusnotifier/statusnotifierwidget.cpp @@ -53,6 +53,11 @@ StatusNotifierWidget::StatusNotifierWidget(ILXQtPanelPlugin *plugin, QWidget *pa } +StatusNotifierWidget::~StatusNotifierWidget() +{ + delete mWatcher; +} + void StatusNotifierWidget::itemAdded(QString serviceAndPath) { int slash = serviceAndPath.indexOf('/'); @@ -60,15 +65,10 @@ void StatusNotifierWidget::itemAdded(QString serviceAndPath) QString path = serviceAndPath.mid(slash); StatusNotifierButton *button = new StatusNotifierButton(serv, path, mPlugin, this); - if (!button->isValid()) - delete button; - else - { - mServices.insert(serviceAndPath, button); - layout()->addWidget(button); - layout()->setAlignment(button, Qt::AlignCenter); - button->show(); - } + mServices.insert(serviceAndPath, button); + layout()->addWidget(button); + layout()->setAlignment(button, Qt::AlignCenter); + button->show(); } void StatusNotifierWidget::itemRemoved(const QString &serviceAndPath) diff --git a/plugin-statusnotifier/statusnotifierwidget.h b/plugin-statusnotifier/statusnotifierwidget.h index 1396f40..f98a833 100644 --- a/plugin-statusnotifier/statusnotifierwidget.h +++ b/plugin-statusnotifier/statusnotifierwidget.h @@ -42,6 +42,7 @@ class StatusNotifierWidget : public QWidget public: StatusNotifierWidget(ILXQtPanelPlugin *plugin, QWidget *parent = 0); + ~StatusNotifierWidget(); signals: diff --git a/plugin-statusnotifier/translations/statusnotifier_it.desktop b/plugin-statusnotifier/translations/statusnotifier_it.desktop new file mode 100644 index 0000000..bcdee8f --- /dev/null +++ b/plugin-statusnotifier/translations/statusnotifier_it.desktop @@ -0,0 +1,2 @@ +Name[it]=Notificatore +Comment[it]=Mostra lo status delle applicazioni diff --git a/plugin-sysstat/translations/sysstat_el.ts b/plugin-sysstat/translations/sysstat_el.ts index 0d1ad16..73f1627 100644 --- a/plugin-sysstat/translations/sysstat_el.ts +++ b/plugin-sysstat/translations/sysstat_el.ts @@ -2,7 +2,7 @@ - LxQtSysStatColours + LXQtSysStatColours System Statistics Colors @@ -112,7 +112,7 @@ - LxQtSysStatConfiguration + LXQtSysStatConfiguration Graph diff --git a/plugin-sysstat/translations/sysstat_it.desktop b/plugin-sysstat/translations/sysstat_it.desktop new file mode 100644 index 0000000..d878dab --- /dev/null +++ b/plugin-sysstat/translations/sysstat_it.desktop @@ -0,0 +1,2 @@ +Name[it]=Statistiche del sistema +Comment[it]=Mostra statistiche configurabili del sistema diff --git a/plugin-sysstat/translations/sysstat_it.ts b/plugin-sysstat/translations/sysstat_it.ts new file mode 100644 index 0000000..34717b7 --- /dev/null +++ b/plugin-sysstat/translations/sysstat_it.ts @@ -0,0 +1,237 @@ + + + + + LXQtSysStatColours + + + System Statistics Colors + Colori delle statistiche + + + + Graph + Grafico + + + + &Grid + &Griglia + + + + + + + + + + + + + + + + Change ... + Cambia ... + + + + T&itle + &Titolo + + + + CPU + + + + + &Nice + + + + + Ot&her + &Altro + + + + &Frequency + &Frequenza + + + + S&ystem + &Sistema + + + + &User + &Utente + + + + Memory + Memoria + + + + Cache&d + &Cache + + + + S&wap + &Swap + + + + &Applications + &Applicazioni + + + + &Buffers + + + + + Network + Rete + + + + &Received + &Ricevuti + + + + &Transmitted + &Trasmessi + + + + LXQtSysStatConfiguration + + + Graph + Grafico + + + + px + + + + + s + + + + + Data + + + + + System Statistics Settings + Impostazioni statistiche del sistema + + + + &Minimal size + &Grandezza minimale + + + + Update &interval + &Intervallo di aggiornamento + + + + &Title + &Titolo + + + + &Grid lines + &Linee griglia + + + + <html><head/><body><p>Minimal width if the panel is horizontal.</p><p>Minimal height is the panel is vertical.</p></body></html> + <html><head/><body><p>Larghezza minimale se il pannello è orizzontale.</p><p>Altezza minimale se il pannello è verticale.</p></body></html> + + + + Use &frequency + Usa &frequenza + + + + Ma&ximum + &Massimo + + + + Lo&garithmic scale + Scala &logaritmica + + + + CPU + + + + + Memory + Memoria + + + + Network + Rete + + + + &Source + &Sorgente + + + + T&ype + &Tipo + + + + Colours + Colori + + + + Use t&heme colours + Usa colori del &tema + + + + Use c&ustom colours + Colori &personalizzati + + + + Custom colour ... + Colore personalizzato ... + + + + XXX KBs + + + + + steps + intervalli + + + diff --git a/plugin-taskbar/translations/taskbar_it.desktop b/plugin-taskbar/translations/taskbar_it.desktop new file mode 100644 index 0000000..03f6a44 --- /dev/null +++ b/plugin-taskbar/translations/taskbar_it.desktop @@ -0,0 +1,2 @@ +Name[it]=Barra delle applicazioni +Comment[it]=Permette di spostarsi tra le applicazioni in esecuzione tramite pulsanti diff --git a/plugin-taskbar/translations/taskbar_it_IT.ts b/plugin-taskbar/translations/taskbar_it.ts similarity index 91% rename from plugin-taskbar/translations/taskbar_it_IT.ts rename to plugin-taskbar/translations/taskbar_it.ts index 117934d..4baa209 100644 --- a/plugin-taskbar/translations/taskbar_it_IT.ts +++ b/plugin-taskbar/translations/taskbar_it.ts @@ -1,6 +1,6 @@ - + LXQtTaskButton @@ -94,12 +94,12 @@ Group - + Gruppo Close group - + Chiudi gruppo @@ -120,42 +120,42 @@ General - + Generali Show windows from c&urrent desktop - + Mostra finestre del &desktop attuale Show windows from all des&ktops - + Mostra finestre di &tutti desktop Window &grouping - + &Ragruppa finestre della stessa applicazione Show popup on mouse hover - + Mostra popup al passaggio del mouse Appearance - + Aspetto Maximum button width - + Larghezza massima del pulsante px - + px Taskbar Contents @@ -198,7 +198,7 @@ Close on middle-click - Chiudi con un clic del tasto centrale + Chiudi con un click del tasto centrale diff --git a/plugin-taskbar/translations/taskbar_it_IT.desktop b/plugin-taskbar/translations/taskbar_it_IT.desktop deleted file mode 100644 index cf00fdf..0000000 --- a/plugin-taskbar/translations/taskbar_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Task manager -Comment=Switch between running applications - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Permette di accedere alle applicazioni in esecuzione -Name[it_IT]=Gestore dei processi diff --git a/plugin-tray/translations/tray_it.desktop b/plugin-tray/translations/tray_it.desktop new file mode 100644 index 0000000..db0a4a2 --- /dev/null +++ b/plugin-tray/translations/tray_it.desktop @@ -0,0 +1,2 @@ +Comment[it]=Accedi alle applicazioni minimizzate nel vassoio di sistema +Name[it]=Vassoio di sistema diff --git a/plugin-tray/translations/tray_it_IT.desktop b/plugin-tray/translations/tray_it_IT.desktop deleted file mode 100644 index 6a7bcb4..0000000 --- a/plugin-tray/translations/tray_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=System tray -Comment=Display applications minimized to the system tray. - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Accedi alle applicazioni nascoste minimizzate nel vassoio di sistema -Name[it_IT]=Vassoio di sistema diff --git a/plugin-tray/trayicon.cpp b/plugin-tray/trayicon.cpp index 157fc17..24f517b 100644 --- a/plugin-tray/trayicon.cpp +++ b/plugin-tray/trayicon.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include "../panel/lxqtpanel.h" #include "trayicon.h" @@ -311,8 +312,8 @@ void TrayIcon::draw(QPaintEvent* /*event*/) XClearArea(mDisplay, (Window)winId(), 0, 0, attr.width, attr.height, False); // for some unknown reason, XGetImage failed. try another less efficient method. - // QPixmap::grabWindow uses XCopyArea() internally. - image = QPixmap::grabWindow(mIconId).toImage(); + // QScreen::grabWindow uses XCopyArea() internally. + image = qApp->primaryScreen()->grabWindow(mIconId).toImage(); } // qDebug() << "Paint icon **************************************"; diff --git a/plugin-volume/translations/volume_it.desktop b/plugin-volume/translations/volume_it.desktop new file mode 100644 index 0000000..6ae7b70 --- /dev/null +++ b/plugin-volume/translations/volume_it.desktop @@ -0,0 +1,3 @@ +Name[it]=Controllo del volume +Comment[it]=Controlla il volume del sistema e avvia il mixer preferito + diff --git a/plugin-volume/translations/volume_it_IT.ts b/plugin-volume/translations/volume_it.ts similarity index 84% rename from plugin-volume/translations/volume_it_IT.ts rename to plugin-volume/translations/volume_it.ts index 1bc401d..56fef27 100644 --- a/plugin-volume/translations/volume_it_IT.ts +++ b/plugin-volume/translations/volume_it.ts @@ -1,6 +1,6 @@ - + LXQtVolume @@ -10,28 +10,28 @@ Increase sound volume - + Alza volume Decrease sound volume - + Abbassa volume Mute/unmute sound volume - + Muta/smuta audio Volume Control: The following shortcuts can not be registered: %1 - + Controllo volume: la scorciatoia globale '%1' non può essere registrata Volume: %1 - + Volume: %1 @@ -43,7 +43,7 @@ Volume Control Settings - + Impostazioni controllo volume @@ -63,7 +63,7 @@ OSS - + OSS @@ -73,12 +73,12 @@ Mute on middle click - Muto al clic centrale del mouse + Muta al click centrale del mouse Show on mouse click - Mostra al clic del mouse + Mostra al click del mouse @@ -101,12 +101,12 @@ Launch mixer - + Avvia mixer Mixer - + Mixer diff --git a/plugin-volume/translations/volume_it_IT.desktop b/plugin-volume/translations/volume_it_IT.desktop deleted file mode 100644 index dfc7161..0000000 --- a/plugin-volume/translations/volume_it_IT.desktop +++ /dev/null @@ -1,12 +0,0 @@ -[Desktop Entry] -Type=Service -ServiceTypes=LXQtPanel/Plugin -Name=Volume control -Comment=Control the system's volume and launch your preferred mixer. - -#TRANSLATIONS_DIR=../translations - - -# Translations -Comment[it_IT]=Controlla il volume del sistema e avvia il tuo mixer preferito. -Name[it_IT]=Controllo del volume diff --git a/plugin-worldclock/translations/worldclock_el.ts b/plugin-worldclock/translations/worldclock_el.ts index ff3ebb4..965bbc0 100644 --- a/plugin-worldclock/translations/worldclock_el.ts +++ b/plugin-worldclock/translations/worldclock_el.ts @@ -2,7 +2,7 @@ - LxQtWorldClock + LXQtWorldClock '<b>'HH:mm:ss'</b><br/><font size="-2">'ddd, d MMM yyyy'<br/>'TT'</font>' @@ -10,7 +10,7 @@ - LxQtWorldClockConfiguration + LXQtWorldClockConfiguration World Clock Settings @@ -239,7 +239,7 @@ - LxQtWorldClockConfigurationManualFormat + LXQtWorldClockConfigurationManualFormat World Clock Time Zones @@ -324,7 +324,7 @@ - LxQtWorldClockConfigurationTimeZones + LXQtWorldClockConfigurationTimeZones World Clock Time Zones diff --git a/plugin-worldclock/translations/worldclock_it.desktop b/plugin-worldclock/translations/worldclock_it.desktop new file mode 100644 index 0000000..21570f4 --- /dev/null +++ b/plugin-worldclock/translations/worldclock_it.desktop @@ -0,0 +1,3 @@ +#TRANSLATIONS +Name[it]=Orologio mondiale +Comment[it]=Mostra un orologio con un fuso orario diverso diff --git a/plugin-worldclock/translations/worldclock_it.ts b/plugin-worldclock/translations/worldclock_it.ts new file mode 100644 index 0000000..c9b5f28 --- /dev/null +++ b/plugin-worldclock/translations/worldclock_it.ts @@ -0,0 +1,328 @@ + + + + + LXQtWorldClock + + + '<b>'HH:mm:ss'</b><br/><font size="-2">'ddd, d MMM yyyy'<br/>'TT'</font>' + + + + + LXQtWorldClockConfiguration + + + World Clock Settings + Impostazioni orologio mondiale + + + + Display &format + &Aspetto + + + + &Time + &Ora + + + + F&ormat: + F&ormato: + + + + + + Short + Breve + + + + + + Long + Esteso + + + + + Custom + Personalizzato + + + + Sho&w seconds + &Mostra secondi + + + + Pad &hour with zero + Ora &senza zero iniziale + + + + T&ime zone + &Fuso orario + + + + &Position: + &Posizione: + + + + For&mat: + F&ormato: + + + + + Below + Sotto + + + + + Above + Sopra + + + + + Before + Prima + + + + + After + Dopo + + + + Offset from UTC + Differenza da UTC + + + + Abbreviation + Abbreviazione + + + + IANA id + + + + + + + Custom name + Nome personalizzato + + + + &Use 12-hour format + &Usa formato 12 ore + + + + Location identifier + Nome località + + + + &Date + &Data + + + + Po&sition: + &Posizione: + + + + Fo&rmat: + F&ormato: + + + + ISO 8601 + + + + + Show &year + Mostra l'&anno + + + + Show day of wee&k + Mostra &giorno della settimana + + + + Pad d&ay with zero + Giorno &senza zero iniziale + + + + &Long month and day of week names + Nome &esteso per mese e giorno della settimana + + + + Ad&vanced manual format + Formato avanzato &personalizzato + + + + &Customise ... + &Personalizza... + + + + Time &zones + Fu&si orari + + + + &Add ... + &Aggiungi... + + + + &Remove + &Rimuovi + + + + Set as &default + &Imponi come predefinito + + + + &Edit custom name ... + &Personalizza nome... + + + + Move &up + &Sù + + + + Move do&wn + &Giù + + + + &General + A&ltro + + + + Auto&rotate when the panel is vertical + &Ruota automaticamente se il panello è verticale + + + + '<b>'HH:mm:ss'</b><br/><font size="-2">'ddd, d MMM yyyy'<br/>'TT'</font>' + + + + + Input custom time zone name + Nome personalizzato + + + + LXQtWorldClockConfigurationManualFormat + + + World Clock Time Zones + Fusi orari orologio mondiale + + + + <h1>Custom Date/Time Format Syntax</h1> +<p>A date pattern is a string of characters, where specific strings of characters are replaced with date and time data from a calendar when formatting or used to generate data for a calendar when parsing.</p> +<p>The Date Field Symbol Table below contains the characters used in patterns to show the appropriate formats for a given locale, such as yyyy for the year. Characters may be used multiple times. For example, if y is used for the year, 'yy' might produce '99', whereas 'yyyy' produces '1999'. For most numerical fields, the number of characters specifies the field width. For example, if h is the hour, 'h' might produce '5', but 'hh' produces '05'. For some characters, the count specifies whether an abbreviated or full form should be used, but may have other choices, as given below.</p> +<p>Two single quotes represents a literal single quote, either inside or outside single quotes. Text within single quotes is not interpreted in any way (except for two adjacent single quotes). Otherwise all ASCII letter from a to z and A to Z are reserved as syntax characters, and require quoting if they are to represent literal characters. In addition, certain ASCII punctuation characters may become variable in the future (eg ":" being interpreted as the time separator and '/' as a date separator, and replaced by respective locale-sensitive characters in display).<br /></p> +<table border="1" width="100%" cellpadding="4" cellspacing="0"> +<tr><th width="20%">Code</th><th>Meaning</th></tr> +<tr><td>d</td><td>the day as number without a leading zero (1 to 31)</td></tr> +<tr><td>dd</td><td>the day as number with a leading zero (01 to 31)</td></tr> +<tr><td>ddd</td><td>the abbreviated localized day name (e.g. 'Mon' to 'Sun').</td></tr> +<tr><td>dddd</td><td>the long localized day name (e.g. 'Monday' to 'Sunday</td></tr> +<tr><td>M</td><td>the month as number without a leading zero (1-12)</td></tr> +<tr><td>MM</td><td>the month as number with a leading zero (01-12)</td></tr> +<tr><td>MMM</td><td>the abbreviated localized month name (e.g. 'Jan' to 'Dec').</td></tr> +<tr><td>MMMM</td><td>the long localized month name (e.g. 'January' to 'December').</td></tr> +<tr><td>yy</td><td>the year as two digit number (00-99)</td></tr> +<tr><td>yyyy</td><td>the year as four digit number</td></tr> +<tr><td>h</td><td>the hour without a leading zero (0 to 23 or 1 to 12 if AM/PM display)</td></tr> +<tr><td>hh</td><td>the hour with a leading zero (00 to 23 or 01 to 12 if AM/PM display)</td></tr> +<tr><td>H</td><td>the hour without a leading zero (0 to 23, even with AM/PM display)</td></tr> +<tr><td>HH</td><td>the hour with a leading zero (00 to 23, even with AM/PM display)</td></tr> +<tr><td>m</td><td>the minute without a leading zero (0 to 59)</td></tr> +<tr><td>mm</td><td>the minute with a leading zero (00 to 59)</td></tr> +<tr><td>s</td><td>the second without a leading zero (0 to 59)</td></tr> +<tr><td>ss</td><td>the second with a leading zero (00 to 59)</td></tr> +<tr><td>z</td><td>the milliseconds without leading zeroes (0 to 999)</td></tr> +<tr><td>zzz</td><td>the milliseconds with leading zeroes (000 to 999)</td></tr> +<tr><td>AP <i>or</i> A</td><td>use AM/PM display. <b>A/AP</b> will be replaced by either "AM" or "PM".<</td></tr> +<tr><td>ap <i>or</i> a</td><td>use am/pm display. <b>a/ap</b> will be replaced by either "am" or "pm".<</td></tr> +<tr><td>t</td><td>the timezone (for example "CEST")</td></tr> +<tr><td>T</td><td>the offset from UTC</td></tr> +<tr><td>TT</td><td>the timezone IANA id</td></tr> +<tr><td>TTT</td><td>the timezone abbreviation</td></tr> +<tr><td>TTTT</td><td>the timezone short display name</td></tr> +<tr><td>TTTTT</td><td>the timezone long display name</td></tr> +<tr><td>TTTTTT</td><td>the timezone custom name. You can change it the 'Time zones' tab of the configuration window</td></tr></table> +<p><br /><b>Note:</b> Any characters in the pattern that are not in the ranges of ['a'..'z'] and ['A'..'Z'] will be treated as quoted text. For instance, characters like ':', '.', ' ', '#' and '@' will appear in the resulting time text even they are not enclosed within single quotes.The single quote is used to 'escape' letters. Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.</p> + + + + + + LXQtWorldClockConfigurationTimeZones + + + World Clock Time Zones + Fusi orari orologio mondiale + + + + Time zone + Fuso orario + + + + Name + Nome + + + + Comment + Commento + + + + Country + Paese + + + + UTC + + + + + Other + Altro + + +